Apprendre le C,C++...

Apprendre le C,C++... - C++ - Programmation

Marsh Posté le 18-08-2002 à 23:18:50    

Voilà, je rentre en 1er année ingénieur, et vais apprendre le C,C++!! Super. Je ni connais rien! Voudrais savoir si c'est si dur ke ça à apprendre?
Et y a t-il des bouquins permettant d'apprendre, où d'aider, à la comprhension?
Merci

Reply

Marsh Posté le 18-08-2002 à 23:18:50   

Reply

Marsh Posté le 18-08-2002 à 23:24:56    

Le C, c'est tout simple.
Le C++ par contre c'est le langage le plus compliqué courramment utilisé.
 
Dans les 2 cas y a les bouquins écrits par les créateurs des 2 langages, le Kernighan et Ritchie pour le C et le Stroustrup pour le C++.
Rien qu'au niveau nombre de pages, tu comprends que c'est pas la même chose :D

Reply

Marsh Posté le 18-08-2002 à 23:25:12    

pour le C : "le C ansi" de kernighan et ritchie (aka le petit livre jaune) ed. Dunod
pour le C++ : "le langage C++" de bjarne stroustrup ed. Campuspress
 
edit : grillaid ca m'apprendra a discuter sur icq en meme temps  :fou:  
 
pour la peine je laisse les références exactes ...


Message édité par HappyHarry le 18-08-2002 à 23:26:09
Reply

Marsh Posté le 18-08-2002 à 23:33:38    

HappyHarry a écrit a écrit :

 
pour le C++ : "le langage C++" de bjarne stroustrup ed. Campuspress
 




euh.... c'est un peu hard quand même... je pense qu'on lui apprend le c++ en couche c (en gros on fait du c avec des cout paske c plus facile)
 
bart-abat, c coi ton école ?
 

Reply

Marsh Posté le 18-08-2002 à 23:34:24    

farib a écrit a écrit :

 
euh.... c'est un peu hard quand même... je pense qu'on lui apprend le c++ en couche c (en gros on fait du c avec des cout paske c plus facile)
 
bart-abat, c coi ton école ?
 
 




 
oué ben la c pas la peine ... suis loin d'etre un spécialiste C++ mais ca c une connerie ...

Reply

Marsh Posté le 18-08-2002 à 23:41:04    

Plus didactique que le Stroustrup, il y a le Lippman & Lajoie, "l'essentiel du c++".

Reply

Marsh Posté le 18-08-2002 à 23:46:12    

farib a écrit a écrit :

 
euh.... c'est un peu hard quand même... je pense qu'on lui apprend le c++ en couche c (en gros on fait du c avec des cout paske c plus facile)
 
bart-abat, c coi ton école ?
 
 




 
Merci de m'avoir rep!! :wahoo:  
Pour mon école, c'est pas polytech, centrale, rein de tout ca.
Moi c'est école bcp plus modeste. PAs connus je crois.
Elle est dans le PAs-de-Calais: L'EIPC (généralistes dans le domaine de la productique, l'industrie)
Voilà

Reply

Marsh Posté le 19-08-2002 à 00:48:03    

Salut,  
c'est une bonne idée de commencer a programmer avant que t'aies les cours, comme ca tu sera a l'aise. C'est ce que j'ai fait, ainsi qu'un copain et ca lui a beaucoup servi car il peinait un peu en math et physique, ca a rattrapé tout ca.
En plus, si ca t'interesse, c'est pas trop dur. Commence par le C, et choisi un bouquin qui va loin, même si il ne commence pas par les trucs de débutants.  
 
Je m'explique : sur le net tu trouveras des tonnes de tutoriels pour commencer le C et tu en trouvera beaucoup moins pour aller plus loin. Alors garde tes sous et imprime à l'école (hihi:)).
 
Une fois que tu maitrise le C, lance toi plutot dans le java pour commencer les langages objets, c'est beaucoup plus pédagogique et en plus c'est ce que tu fera surement dans ton école si vous programmez un peu.
 
Apres, une fois que tu maitrise bien les concepts, tu pourras commencer le c++. Et encore, peut etre que le java te suffira.
 
En tout cas bonne chance.

Reply

Marsh Posté le 19-08-2002 à 17:51:48    

Salut,
 
Ayant fait un DUT Info je ne peux que te conseiller de commencer par apprendre les bases de la prog en C, puis de passer aux pointeurs et à la POO , donc C++ ,et de faire du Java pourquoi pas parallèlement au C++ (c'est + sympathique le Java :-) )
 
Et euh c'est pas si dur que ça - enfin le C -, après le C++ faut s'accrocher un peu c'est une logique à assimiler (pointeurs, POO: classes, héritages...que de mauvais souvenirs... :-\ ).
 
Voilà
@+


Message édité par *Gilles* le 19-08-2002 à 17:53:57
Reply

Marsh Posté le 19-08-2002 à 17:58:45    

Verdoux a écrit a écrit :

Le C, c'est tout simple.
Le C++ par contre c'est le langage le plus compliqué courramment utilisé.




 
le C++ par rapport au C n'est pas si compliqué. Ce qu'on peut trouver compliqué dans le C++, c'est justement ce qu'il a de commun au C (pointeurs, gestion des allocations, désallocations de mémoire, ...).
Moi je dirais que le C est assez complexe. Parce qu'il est performant (on contrôle à peu près tout ce qu'il se passe ds la machine !). Le C++, c'est juste le passage à l'objet.
Moi je connaissais déja le C et la POO. J'ai u aucun problème à apprendre le C++ (j'ai mis 2 ou 3 mois à me démerder tt seul).

Reply

Marsh Posté le 19-08-2002 à 17:58:45   

Reply

Marsh Posté le 19-08-2002 à 22:11:40    

Non ce qu'il y a de compliqué en c++ c'est tout ca qu'il y a en plus du C: l'héritage, la résolution des appels, les templates, les casts.

Reply

Marsh Posté le 20-08-2002 à 08:59:11    

Verdoux a écrit a écrit :

Non ce qu'il y a de compliqué en c++ c'est tout ca qu'il y a en plus du C: l'héritage, la résolution des appels, les templates, les casts.




 
l'héritage, c pas spécifique au C++, c'est de la POO. C la base de tous les langages objets. Résolution des appels, je vois pas de quoi tu parles...
Les templates j'trouve ça tout bête.
Les casts, ça existe en C.
Mais a mon avis, toi t'as galèré pour apprendre l'approche objet. ça c autre chose.

Reply

Marsh Posté le 20-08-2002 à 14:08:00    

El_Gringo a écrit a écrit :

 
 
l'héritage, c pas spécifique au C++, c'est de la POO. C la base de tous les langages objets. Résolution des appels, je vois pas de quoi tu parles...
Les templates j'trouve ça tout bête.
Les casts, ça existe en C.
Mais a mon avis, toi t'as galèré pour apprendre l'approche objet. ça c autre chose.



Il doit parler de polymorphisme qd il parle de résolution des appels.. enfin Verdoux, dit moi si j'me trompe ;)

Reply

Marsh Posté le 20-08-2002 à 16:04:27    

Le langage C++, un poche a moins de 10?!! Je le trouve assez simple et bien foutu. Mais bon, C qu'un avis parmi d'autre.
 
http://www.campuspress.fr/espace/l [...] =726&dep=0
 
Je pense que la meilleur facon d'apprendre, C d'apprendre en cours puis bosser personellement.

Reply

Marsh Posté le 20-08-2002 à 22:21:02    

tiens El gringo, il donne quoi ce programme ?:

Code :
  1. #include <iostream>
  2. class A {
  3. public:
  4.         template<typename T> class B {
  5.                 public:
  6.                         T _b;
  7.                         B(const T& i):_b(i){}
  8.                         operator T() { return _b;}
  9.         };
  10. protected:
  11.         template<typename U> void f(U) {std::cout<<"A::g\n";}
  12.         virtual void f(int i) const {std::cout<<"A::f\n";}
  13.         virtual void f(char c) {std::cout<<"A::f\n";}
  14. };
  15. template<typename T> class C : public A {
  16. public:
  17.         typedef typename A::B<T> D;
  18.         void g(const C::D& i = C::D(0)) {f(T(0)); A::f(T(0));}
  19.         void f(long){}
  20. };
  21. int main() {
  22. C<int> cint;
  23. C<double> cdouble;
  24. C<char> cchar;
  25. cint.g();
  26. cdouble.g();
  27. cchar.g();
  28. return 0;
  29. }


Message édité par verdoux le 20-08-2002 à 22:29:40
Reply

Marsh Posté le 21-08-2002 à 00:11:31    

el_gringo>je voudrais pas jouer au leche ... mais verdoux est loin d'être un débutant en C++ et en poo, je pense qu'il devait déja savoir ce que tu dis ... m'enfin c'est ce que je dit :}

Reply

Marsh Posté le 21-08-2002 à 01:25:23    

HappyHarry a écrit a écrit :

pour le C++ : "le langage C++" de bjarne stroustrup ed. Campuspress


C'est un livre de référence exhaustif.
C'est destiné au perfectionnement, et un peu indigeste pour les débutants.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 21-08-2002 à 02:36:55    

Verdoux a écrit a écrit :

Plus didactique que le Stroustrup, il y a le Lippman & Lajoie, "l'essentiel du c++".




Le seul bon bouquin pour apprendre le C++ pour un neophite (hors des bouquins de Stroustrup), c'est le Koenig & Moo, Accelerated C++.http://www.acceleratedcpp.com/images/smallcover.jpg
A+,


Message édité par gilou le 21-08-2002 à 02:37:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 21-08-2002 à 08:52:10    

Verdoux a écrit a écrit :

tiens El gringo, il donne quoi ce programme ?:

Code :
  1. #include <iostream>
  2. class A {
  3. public:
  4.         template<typename T> class B {
  5.                 public:
  6.                         T _b;
  7.                         B(const T& i):_b(i){}
  8.                         operator T() { return _b;}
  9.         };
  10. protected:
  11.         template<typename U> void f(U) {std::cout<<"A::g\n";}
  12.         virtual void f(int i) const {std::cout<<"A::f\n";}
  13.         virtual void f(char c) {std::cout<<"A::f\n";}
  14. };
  15. template<typename T> class C : public A {
  16. public:
  17.         typedef typename A::B<T> D;
  18.         void g(const C::D& i = C::D(0)) {f(T(0)); A::f(T(0));}
  19.         void f(long){}
  20. };
  21. int main() {
  22. C<int> cint;
  23. C<double> cdouble;
  24. C<char> cchar;
  25. cint.g();
  26. cdouble.g();
  27. cchar.g();
  28. return 0;
  29. }






 
Il est surtout pas clair et mal indenté !
 
...bon, ok, je fais dans la mauvaise foie là ! :D
J'dis pas que le C++ est tout simple, mais les histoires de pointeurs, allocations mémoire, quand t'as jammais fait, c aussi carrément déstabilisant !

Reply

Marsh Posté le 21-08-2002 à 08:55:23    

Evidement, en C++, on peut faire des trucs complètement tordus (comme le petit bout de prog que tu m'as filé), Ms on peut aussi faire des trucs très claires.

Reply

Marsh Posté le 21-08-2002 à 09:01:23    

using namespace std c pas pour les iench :D

Reply

Marsh Posté le 21-08-2002 à 09:02:29    

Verdoux a écrit a écrit :

tiens El gringo, il donne quoi ce programme ?:

Code :
  1. #include <iostream>
  2. class A {
  3. public:
  4.         template<typename T> class B {
  5.                 public:
  6.                         T _b;
  7.                         B(const T& i):_b(i){}
  8.                         operator T() { return _b;}
  9.         };
  10. protected:
  11.         template<typename U> void f(U) {std::cout<<"A::g\n";}
  12.         virtual void f(int i) const {std::cout<<"A::f\n";}
  13.         virtual void f(char c) {std::cout<<"A::f\n";}
  14. };
  15. template<typename T> class C : public A {
  16. public:
  17.         typedef typename A::B<T> D;
  18.         void g(const C::D& i = C::D(0)) {f(T(0)); A::f(T(0));}
  19.         void f(long){}
  20. };
  21. int main() {
  22. C<int> cint;
  23. C<double> cdouble;
  24. C<char> cchar;
  25. cint.g();
  26. cdouble.g();
  27. cchar.g();
  28. return 0;
  29. }






 
Il affiche:
 
A::g
A::g
A::f
 
Ca n'a rien de compliqué, j'ai déjà fait pire.


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 09:03:16    

El_Gringo a écrit a écrit :

 
 
Il est surtout pas clair et mal indenté !
 
...bon, ok, je fais dans la mauvaise foie là ! :D




 
Non c pas de la mauvaise fois c vraiment mal indenté :D


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 09:08:23    

letoII a écrit a écrit :

 
 
Il affiche:
 
A::g
A::g
A::f
 
Ca n'a rien de compliqué, j'ai déjà fait pire.




Mais pourquoi affiche-t-il cela ?


Message édité par verdoux le 21-08-2002 à 09:08:49
Reply

Marsh Posté le 21-08-2002 à 09:33:57    

farib a écrit a écrit :

using namespace std c pas pour les iench :D




 
...ça obscurcit le listing de pas utiliser le "using namespace std", c l'but recherché !


Message édité par El_gringo le 21-08-2002 à 09:35:09
Reply

Marsh Posté le 21-08-2002 à 09:36:14    

verdoux a écrit a écrit :

 
Mais pourquoi affiche-t-il cela ?




 
cint.g(); => appel de C::f
             appel de A::f<int>(int), car cette méthode n'est pas const contrairement à A::f(int) const
             affichage de A::g
 
cdouble.g(); => appel de C::f
                appel de A::f<double>(double) (pas d'autre méthode accéptant de double)
                affichage de A::g
 
 
cchar.g(); => appel de C::f
              appel de A::f(char), la méthode exite déjà pas besoin d'instancier le template.
              affichage de A::f
 
En tout cas c comme ça que je le comprend.


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 10:26:22    

Verdoux a écrit a écrit :

tiens El gringo, il donne quoi ce programme ?:

Code :
  1. #include <iostream>
  2. class A {
  3. public:
  4.         template<typename T> class B {
  5.                 public:
  6.                         T _b;
  7.                         B(const T& i):_b(i){}
  8.                         operator T() { return _b;}
  9.         };
  10. protected:
  11.         template<typename U> void f(U) {std::cout<<"A::g\n";}
  12.         virtual void f(int i) const {std::cout<<"A::f\n";}
  13.         virtual void f(char c) {std::cout<<"A::f\n";}
  14. };
  15. template<typename T> class C : public A {
  16. public:
  17.         typedef typename A::B<T> D;
  18.         void g(const C::D& i = C::D(0)) {f(T(0)); A::f(T(0));}
  19.         void f(long){}
  20. };
  21. int main() {
  22. C<int> cint;
  23. C<double> cdouble;
  24. C<char> cchar;
  25. cint.g();
  26. cdouble.g();
  27. cchar.g();
  28. return 0;
  29. }






 
c'est un concours d'obfuscated c++??
 
LeGreg

Reply

Marsh Posté le 21-08-2002 à 20:13:55    

legreg a écrit a écrit :

 
 
c'est un concours d'obfuscated c++??
 
LeGreg




C'est pas de l'obfuscated ! (même si il est vrai qu'il y a pas mal de trucs qui servent à rien :D)
T'as jamais jeté un oeil dans les fichiers de la STL ?
 
En tout cas quand on fait des entretiens d'embauche de prestas en c++, 90% n'arrivent pas à nous dire ce que sort ce genre de prog.
Il va de soi qu'on ne tient pas à ce qu'ils codent comme ça mais qu'au moins ils arrivent à s'y retrouver.

Reply

Marsh Posté le 21-08-2002 à 22:39:23    

Code :
  1. T'as jamais jeté un oeil dans les fichiers de la STL ?


sisi, je fais ca de temps en temps, j'ai meme fait des trucs style container STL pour le plaisir. (bon je sais je suis un peu maso)
 

Citation :

En tout cas quand on fait des entretiens d'embauche de prestas en c++, 90% n'arrivent pas à nous dire ce que sort ce genre de prog.


 
je me disais bien que ca me rappelait les tests bidon qu'on nous fait passer a l'embauche :D.
Y'a aussi plein de trucs du genre : "quelle est l'erreur dans ce programme" (il manque un point virgule), ou "A herite de D, B herite de C qui herite de A et de D, quel est l'ordre d'appel des constructeurs", ou encore "qu'affiche ce programme?" (avec des ruses sur l'heritage, la priorité des operateurs ou l'overload de fonctions).
 
Ce qui me fait rire c'est quand a l'entretien tu as le choix entre le questionnaire en C++ et celui en java, que tu prends le questionnaire C++ en sachant tres bien que tu vas faire du java dans ton futur poste..
 
M'enfin..
 

Code :
  1. Il va de soi qu'on ne tient pas à ce qu'ils codent comme ça mais qu'au moins ils arrivent à s'y retrouver.


 
Le probleme c'est que tu prends n'importe quel programme, tu remplaces les noms de classes par des lettres majuscules(A, B, C, D), les noms de variables par des lettres minuscules (i,j,k,l), tu vires l'indentation et les commentaires, et bien bravo, tu as un programme incomprehensible au commun des mortels..
 
LeGreg

Reply

Marsh Posté le 21-08-2002 à 23:20:09    

legreg a écrit a écrit :

 
Ce qui me fait rire c'est quand a l'entretien tu as le choix entre le questionnaire en C++ et celui en java, que tu prends le questionnaire C++ en sachant tres bien que tu vas faire du java dans ton futur poste..




Nan nous on le fait lors de l'entretien, avec le commercial du gars à côté qui essaie de nous expliquer que, si il faut, sa boîte paiera un stage de 5 jours de c++ à son candidat pour qu'il s'améliore :D
Après on lui explique que c'est pas la peine qu'il nous fasse perdre notre temps avec ses candidats avec "5 ans d'expérience en c++" et que s'il merde la prochaine fois, sa SSII, on la raye des listes d'achat.

Reply

Marsh Posté le 22-08-2002 à 10:02:21    

Verdoux>
On apprend un langage de programmation pour faire des programmes, pas pour programmer. Personnellement, G jamais utilisé les templates parce que j'en ai jamais eu besoin. tu vois la programmation comme une sorte de jeu d'echec puissance 10, comme dans le topic "trouvez l'erreur". Avec tous ces beaux programmes sans commentaires et aussi mal identés, tu fait quoi? un hello world de 500 lignes? Putaing, toi, tu as le sens de la fete!! Un vrai cow-boy de la prog!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed