Meilleur moyen d'apprendre le langage C ?

Meilleur moyen d'apprendre le langage C ? - C - Programmation

Marsh Posté le 15-10-2006 à 10:26:48    

Bonjour à tous.
Je ne possède aucune base en programmation, et j'aimerai apprendre le langage C/C++. Donc si j'ai bien compris, je dois commencer par le langage C pour débuter.
Quel est le meilleur moyen d'apprendre ce langage ?
En passant par des tutoriels sur internet ( par ex : http://www.developpez.com/c/cours/ ), ou en achetant un livre ( http://www.developpez.com/c/livres/ ) ?
Dans ce cas là, quel livre me conseillez-vous pour un débutant comme moi ? Je précise que l'anglais ou le français m'importe peu, tant que le livre est bien fait et bien expliqué sur le langage, mais je préfère quand  même qu'il soit en français.  :p  
Merci d'avance

Message cité 2 fois
Message édité par Pascal_974 le 15-10-2006 à 10:43:47
Reply

Marsh Posté le 15-10-2006 à 10:26:48   

Reply

Marsh Posté le 15-10-2006 à 10:40:57    

Citation :

j'aimerai apprendre le langage C/C++.


 
C et C++ sont deux langages différents, même s'ils ont beaucoup en commun.
Si tu veux faire du C++, apprend-le directement. Un bouquin te donnera les bases communes avec le C et enchainera sur le C++. Sinon tu peux apprendre le C (avec printf, malloc et compagnie) puis "upgrader" vers le C++.
 

Code :
  1. int main(void)
  2. {
  3.    puts("Hello world" );
  4. }


 

Code :
  1. int main()
  2. {
  3.    cout << "Hello world\n" ;
  4. }


 
Juste pour rappeler que même sur un hello world, le C et les C++ sont très différents. Même si le premier compile aussi en C++

Reply

Marsh Posté le 15-10-2006 à 10:47:14    

Désolé mais les mots comme " printf, malloc, hello world " ne me disent pas grand chose.  :lol:  
Mais pour quelqu'un qui débute, il vaut mieux qu'il apprenne le C ou le C++, qu'est-ce qui est le plus utile ? Qu'est-ce qui s'utilise le plus aujourd'hui et qui s'utilisera dans le futur ?

Reply

Marsh Posté le 15-10-2006 à 11:09:48    

jesus_christ a écrit :

Code :
  1. int main(void)
  2. {
  3.    puts("Hello world" );
  4. }


 

Code :
  1. int main()
  2. {
  3.    cout << "Hello world\n" ;
  4. }


 
Juste pour rappeler que même sur un hello world, le C et les C++ sont très différents. Même si le premier compile aussi en C++


Ni l'un ni l'autre ne compilent en C++.  


Project   : C++
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\cpp\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.cpp
main.cpp: In function `int main()':
main.cpp:3: error: `puts' undeclared (first use this function)
main.cpp:3: error: (Each undeclared identifier is reported only once for each function it appears in.)
Process terminated with status 1 (0 minutes, 1 seconds)
2 errors, 0 warnings


et

Project   : C++
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\cpp\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.cpp
main.cpp: In function `int main()':
main.cpp:3: error: `cout' undeclared (first use this function)
main.cpp:3: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:4:2: warning: no newline at end of file
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 1 warnings


Le premier compile en C,  

Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `main':
main.c:3: warning: implicit declaration of function `puts'
main.c:4: warning: control reaches end of non-void function
Linking console executable: C:\dev\forums\forums.exe
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 2 warnings

mais le comportement est indéfini.
 
Ces codes sont corrects respectivement en C et en C++ :

Code :
  1. /* main.c */
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.    puts("Hello world" );
  6.    return 0;
  7. }


 

Code :
  1. /* main.cpp */
  2. #include <cstdio>
  3. int main()
  4. {
  5.    std::puts("Hello world" );
  6.    return 0;
  7. }


C et C++ sont réellement 2 langages différents.


Message édité par Emmanuel Delahaye le 15-10-2006 à 11:12:04

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-10-2006 à 11:15:06    

Heu merci, mais toutes ces lignes de code ne m'aide pas beaucoup.

Citation :

Mais pour quelqu'un qui débute, il vaut mieux qu'il apprenne le C ou le C++, qu'est-ce qui est le plus utile ? Qu'est-ce qui s'utilise le plus aujourd'hui et qui s'utilisera dans le futur ?


Dois-je commencer par le C , ou dois-je apprendre directement le C++ ?

Reply

Marsh Posté le 15-10-2006 à 11:25:35    

Pascal_974 a écrit :

Je ne possède aucune base en programmation, et j'aimerai apprendre le langage C/C++.


Déjà, il y a plusieurs problèmes.
 
La programmation, c'est bien plus que de connaitre un langage. Un langage est outil de mise en oeuvre, mais si on a rien à mettre en oeuvre, on ne va pas aller très loin. Il faut aussi apprendre à spécifier un projet, à l'analyser, à le traduire en algorithme...
 
Il est bien pour ça de disposer d'un outil qui permette de mettre en place rapidement et simplement les principes de l'algorithmie. Par exemple, même l'ignoble BASIC de base (10 GOTO 10) peut servir à ça, si il est correctement utilisé (et puis, il existe des BASIC 'structurés' avec des fonctions comme le Pascal ou le C)
 
Si tu n'as pas de notion de programmation, ni le C ni le C++ (langages différents, je le rappelle, il n'y a pas de C/C++) ne sont des langages d'initiation. Il y a trop de subtilité et de laxisme dans le C et de concepts complexes dans le C++ pour tout assimiler d'un coup.
 
Je conseille de commencer avec un langage de plus haut niveau comme le PHP (Orienté Web, OK) ou Python ou Ruby. Le Pascal (Turbo Pascal, Free Pascal, voire Delphi) est bien aussi, car dans sa version standard, il est à peu près aussi simple et puissant que le C standard, sans les pièges du C. de plus, il introduit une rigueur que n'a pas le C.


Message édité par Emmanuel Delahaye le 15-10-2006 à 11:28:02

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-10-2006 à 11:26:54    

Pascal_974 a écrit :

Heu merci, mais toutes ces lignes de code ne m'aide pas beaucoup.


Comme indiqué, ce n'est pas à toi que je répondais...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-10-2006 à 13:56:07    

En général, "à l'école" on commence par le C puis on passe à la prog objet en Java ou en C++ après

Reply

Marsh Posté le 15-10-2006 à 14:00:35    

Avant d'apprendre C ou C++, tu peux aussi commencer par un cours d'algo, ici : http://algo.developpez.com/cours/
 
Ou alors un véritable cours d'initiation à la programmation, ici : http://rmdiscala.developpez.com/cours/

Reply

Marsh Posté le 15-10-2006 à 15:25:39    

Paul JR a écrit :

Avant d'apprendre C ou C++, tu peux aussi commencer par un cours d'algo, ici : http://algo.developpez.com/cours/
 
Ou alors un véritable cours d'initiation à la programmation, ici : http://rmdiscala.developpez.com/cours/


 
 
Règle d'or : developpez.com : A fuir comme la peste (maintes fois répété sur les newsgroups)
(ramassis de conneries, écrits par des gamins de 15 ans, etc...)

Reply

Marsh Posté le 15-10-2006 à 15:25:39   

Reply

Marsh Posté le 15-10-2006 à 16:00:47    

marctes a écrit :

Règle d'or : developpez.com : A fuir comme la peste (maintes fois répété sur les newsgroups)
(ramassis de conneries, écrits par des gamins de 15 ans, etc...)


Soit. Peux tu donner un exemple ou ne fais-tu que répeter bêtement ce que tu lis ?


Message édité par Emmanuel Delahaye le 15-10-2006 à 16:11:01

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-10-2006 à 16:07:59    

les newsgroups, antre de l'objectivité  :lol:  
 
On trouve de tout, comme sur dev.com ... il y a des TRES bonne FAQs & Tutos pour ceux qui debutent, et même les autres.

Reply

Marsh Posté le 15-10-2006 à 17:42:36    

Pascal_974 a écrit :

Je ne possède aucune base en programmation, et j'aimerai apprendre le langage C ...


 
je te conseil de commencer par ca: http://www.pise.info/algo/introduction.htm
 
 
 
 
 
 :hello:

Reply

Marsh Posté le 15-10-2006 à 17:45:21    

marctes a écrit :

Règle d'or : developpez.com : A fuir comme la peste (maintes fois répété sur les newsgroups)
(ramassis de conneries, écrits par des gamins de 15 ans, etc...)


C'est des conneries, www.developpez.com est devenu une référence et ce depuis des années, il y à juste sur la rubrique C et C++ ou effectivement il y à des manques, comme par exemple un bon cours pur C++, mais dans d'autres rubrique tout est nickel.
 
Ce type est sans doute un ancien banni du forum de developpez.com ou un webmaster d'un site concurrent qui essaye bêtement de calmonier le site, mais il aura beau calmonier et écrire toutes les conneries qu'il veux ca ne changera rien, car toute personnes qui va faire un tour sur www.developpez.com peu se rendre compte de lui même que c'est des conneries.
 
Quand à l'accusation comme quoi ca serais écrit pas des gamins c'est l'accusation la plus comique, developpez.com est fait par une équipe de rédaction de 200 bénévoles dont une majorité de professionels connus, certifiés, auteurs de livres etc...
 
Il y à de nombreux certifiés Oracle, environ 10 MVP (donc tous les professionels) : http://dotnet.developpez.com/equipe/ , des java champions, des auteurs de livres très connus (Frédéric Brouard, Olivier Dahan, etc...)
 
Donc la vérité c'est exactement le contraire de ce que ce pauvre type à écris
 
Le cours que j'ai cité par exemple : http://rmdiscala.developpez.com/cours/ n'à pas été écrit par un gamin de 15 ans comme le prétends ce pauvre type, mais par RM di Scala, un professeurs d'Université qui à plus de 40 ans, et ce cours à recu plusieurs prix, et il est référencé directement par l'éducation nationale.
 
Il y aura toujours des pauvres types qui vont essayer de calmonier developpez.com parce que comme ce sont des pauvres types ils se sont fait bannir du forum tout simplement... Mais ca n'est pas un pauvre type (probablement simplement un cas psychiatrique) qui va empècher les 900 000 lecteurs de developpez.com de poster des remerciements pour toutes les ressources et services proposés gratuitement depuis des années, c'est ici : http://club.developpez.com/temoignages/


Message édité par Paul JR le 15-10-2006 à 18:01:58
Reply

Marsh Posté le 17-10-2006 à 12:22:38    

Emmanuel Delahaye  : oui merci je sais qu'il manque les header c'était volontaire, c'était pas un code destiné à être compilé tel-quel. Et le return 0 dans le main c'est optionnel. Avec les header mon code compile. Sans prétendre être un dieu du C, je sais qd même écrire un hello world :sarcastic:

Reply

Marsh Posté le 17-10-2006 à 12:28:42    

jesus_christ a écrit :

Emmanuel Delahaye  : oui merci je sais


Et le questionneur, tu crois qu'il sait ? On est censés poster du code opérationnel...

Citation :

qu'il manque les header c'était volontaire, c'était pas un code destiné à être compilé tel-quel.


C'est pas écrit dessus...

Citation :

Et le return 0 dans le main c'est optionnel.


En C99 uniquement.

Message cité 1 fois
Message édité par Emmanuel Delahaye le 17-10-2006 à 13:10:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-10-2006 à 13:43:20    

Emmanuel Delahaye a écrit :

Citation :

Et le return 0 dans le main c'est optionnel.


En C99 uniquement.


En C++ aussi (puisqu'un exemple de main C++ a été donné).

Reply

Sujets relatifs:

Leave a Replay

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