Télécharger l'article
Télécharger l'article
Le langage est un des plus vieux langages de programmation puisqu'il date des années 1970. Cela ne l'empêche nullement d'être encore aujourd'hui largement utilisé. Le C est aussi une belle voie d'accès à d'autres langages plus complexes et tout ce que vous apprendrez à son sujet vous servira pour presque tous les autres langages. Dans cet article, nous vous présentons les éléments essentiels du C et cela commence dès maintenant ( Nota bene : la syntaxe du C est en anglais).
Étapes
-
Téléchargez et installez votre compilateur. Le langage C a besoin d'être compilé pour pouvoir être interprété par votre ordinateur. Les compilateurs sont en général gratuits et disponibles pour tous les types de systèmes d'exploitation.
- Sous Windows, prenez Microsoft Visual Studio Express ou MinGW.
- Sous Mac, XCode est un des meilleurs compilateurs de C.
- Sous Linux, gcc est un des meilleurs compilateurs.
-
Comprenez bien les éléments principaux du C. Le C est l'un des plus vieux langages de programmation, et cette longévité, il la doit à sa puissance. À l'origine, il a été conçu pour les plateformes Unix, mais aujourd'hui, il est disponible sur les autres plateformes. C++ est la version moderne de C.
- Le langage C se compose pour la plus grande part de fonctions (initiées par des instructions) à l'intérieur desquelles on utilise des variables, des structures conditionnelles, des boucles… qui permettent de stocker et de manipuler des données.
-
Examinez de près cet exemple de code en C. On a mis ici un petit exemple de code pour que vous puissiez voir comment les éléments s'agencent les uns par rapport aux autres et comment se fait l'interprétation.
# include <stdio.h> int main () { printf ( « Hello , World ! \ n » ) ; getchar () ; return 0 ; }
- La commande « #include » est ce qu'on appelle un préprocesseur, un programme qui s'exécute juste avant la compilation. Il permet de charger les fonctions que vous avez créées. Dans l'exemple ci-dessus, « stdio.h » va vous permettre par la suite de charger les fonctions « printf() » et « getchar() ».
- La commande « int main() » indique à l'ordinateur qu'il y a dans le programme une fonction qui s'appelle « main », laquelle renverra comme réponse un entier quand tout sera fini. Tout programme en C a une fonction « main ».
- Les accolades « {} » contiennent tous les éléments de la fonction « main ».
- La fonction « printf() », quant à elle, permet d'afficher à l'écran le message prédéfini. Les guillemets sont là pour indiquer à l'ordinateur qu'il faut bien afficher tout ce qui est à l'intérieur. Quant à l'instruction « \n », elle sert à insérer un saut de ligne à la fin de l'affichage.
- Le signe « ; « marque la fin de l'instruction. C'est ainsi qu'on termine toutes les instructions en C.
- La commande « getchar() » suspend l'exécution du programme. C'est une fonction très utile, car le plus souvent, les compilateurs exécutent le programme, puis le ferment. Avec « getchar », le programme s'arrête jusqu'à ce que, par exemple, on enfonce une touche.
- L'instruction « return 0 » marque la fin de la fonction « main », laquelle est une fonction de type « int ». Si un « 0 » apparait, c'est que le programme s'est exécuté parfaitement, sinon, c'est qu'il y a eu une erreur.
-
Essayez de compiler le programme. Tapez vos lignes de code dans votre éditeur, puis enregistrez-le dans un fichier avec une extension en « *.c ». Compilez ensuite ce fichier avec votre compilateur, en général en cliquant sur un bouton de type « Exécuter » (« Build » ou « Run » si votre compilateur est anglo-saxon).
-
Il faut toujours compléter certaines lignes de code par des commentaires. Ce sont des passages, rédigés ou non, qu'on met à la fin de certaines lignes, mais qui ne sont pas interprétés. Ils servent à décrire par exemple que vous commencez un sous-programme, que vous avez un doute sur le codage, bref tout ce qui peut être utile à la correction ou à la compréhension de votre programme. Ces commentaires vous seront très utiles pour vous y retrouver si vous rédigez un programme conséquent. Ils aideront aussi ceux à qui vous le soumettrez en cas de problème que vous n'arrivez pas à résoudre.
- Pour signaler un commentaire, on met la balise « /* » au bout de la ligne de code, puis on met le commentaire et on ferme la balise avec « */ »
- Il ne faut pas tout commenter. Ne marquez que les blocs fondamentaux ! Ainsi, on peut signaler le début d'une routine et 50 lignes plus loin, on indique en commentaire que la routine est terminée.
- Les commentaires sont aussi utilisés pour « neutraliser » des passages dont on sait qu'ils fonctionnent. Quand on met au point un programme très long, on peut ainsi raccourcir le temps d'exécution en neutralisant les passages qui fonctionnent. Quand votre programme est terminé, il suffit de retirer les balises de commentaires et vous retrouvez l'intégralité de votre code.
Publicité
-
Comprenez bien l'utilité des variables. Elles permettent de stocker des données qui proviennent soit du programme lui-même soit de l'utilisateur du programme. Avant de les utiliser, il faut toujours les définir et définir de quel type elles sont (nombres, mots…).
- Les principaux types de variables sont définis par des éléments comme « int » (entier), « char » (caractère) et « float » (nombre avec virgule). Chaque élément permet de stocker des données de nature différente.
-
Sachez déclarer vos variables. En effet, en début de programme, il faut « déclarer » toutes les variables que vous allez utiliser par la suite. Pour ce faire, il faut attribuer un type et un nom à cette variable ainsi qu'une valeur de départ. Voici comment on déclare correctement des variables (ici, a, b, c et d) :
float x ; char name ; int a , b , c , d ;
- Vous pouvez mettre sur la même ligne, des variables différentes, mais qui sont du même type. On les sépare simplement par une virgule.
- Comme souvent en C (et dans d'autres langages), il faut terminer une ligne de code par un point-virgule. Ici, c'est une ligne de déclaration de variable. C'est une bonne habitude à prendre.
-
Sachez à quel endroit déclarer les variables. Cela se fait au début de chaque bloc de code, c'est-à-dire au début de la partie entre accolades ( {} ). Si vous déclarez vos variables trop loin dans le bloc, votre code ne marchera pas, faute de variables déclarées.
-
Les variables servent aussi à stocker des valeurs qui sont entrées par l'utilisateur à tel ou tel moment de l'exécution du programme. Pour être plus clair, voici ci-dessous un petit programme qui met en jeu cette fonctionnalité. On va utiliser une fonction qui s'appelle « scanf ». Arrivé à ce niveau, le programme attend qu'une valeur numérique soit entrée avant de la stocker sous l'appellation « x » :
# include <stdio.h> int main () { int x ; printf ( « Entrez un nombre : « ) ; scanf ( « % d » , & x ) ; printf ( « Vous avez entré % d » , x ) ; getchar () ; return 0 ; }
- La mention « « %d » » indique que la fonction « scanf » attend comme entrée, un entier.
- L'esperluette « & » avant la variable « x » est un opérateur unaire qui renvoie l'adresse mémoire d'une variable. Elle permet à la fonction « scanf » de trouver la variable et de la changer. Cette fonction ne travaille qu'avec les adresses mémoires.
- La dernière instruction « printf » permet d'afficher à la fois la phrase prédéfinie de la réponse et la valeur qui a été entrée par l'utilisateur.
-
Manipulez les variables à votre aise. Vous pouvez par exemple utiliser des opérateurs mathématiques entre vos variables. Attention ! Si le signe « = » est bien l'opérateur mathématique que l'on connait, il n'en est pas de même du signe « == » qui, lui, est un opérateur logique destiné à comparer les deux valeurs de chaque côté. Ainsi il est capable de comparer deux mots, ce que n'est pas capable de faire le seul signe « = ».
x = 3 * 4 ; /*affecte à « x » le produit 3*4, soit 12*/ x = x + 3 ; /*ajoute 3 à la valeur initiale de « x », lequel prend la valeur de cette somme*/ x == 15 ; /*pour vérifier que « x » est bien égal à 15*/ x < 10 ; /*pour vérifier que « x » est bien strictement inférieur à 10*/
Publicité
-
Comprenez bien les fondamentaux des structures conditionnelles. Elles sous-tendent en grande partie les programmes. Elles fonctionnent sur des réponses du type TRUE / FALSE (VRAI / FAUX) et, selon la réponse, elles exécutent telle ou telle instruction. La plus courante de ces structures est celle qui débute par « if ».
- Les réponses TRUE et FALSE en programmation, en C par exemple, n'apparaissent jamais. Elles correspondent à des chiffres (respectivement 1 et 0) qui eux non plus n'apparaissent pas. Côté binaire, quand vous effectuez des comparaisons, si la réponse renvoyée est TRUE , alors l'ordinateur reçoit une réponse binaire « 1 » ; si la réponse est FALSE, c'est un « 0 » qui est retourné. Si vous comprenez cela, vous saurez utiliser à plein cette structure.
-
Apprenez les opérateurs conditionnels de base. Les structures conditionnelles utilisent des opérateurs mathématiques qui comparent les données entre elles. Ci-dessous, vous trouverez les opérateurs les plus fréquemment utilisés :
> /*plus grand que*/ < /*plus petit que*/ >= /*plus grand ou égal à*/ <= /*plus petit ou égal à*/ == /*égal à*/ != /*différent de*/
10 > 5 renvoie « TRUE » ( « VRAI » ) 6 < 15 renvoie « TRUE » ( « VRAI » ) 8 >= 8 renvoie « TRUE » ( « VRAI » ) 4 <= 8 renvoie « TRUE » ( « VRAI » ) 3 == 3 renvoie « TRUE » ( « VRAI » ) 4 != 5 renvoie « TRUE » ( « VRAI » )
-
Rédigez une structure conditionnelle avec IF. Cette structure est utilisée pour exécuter une série d'instructions (ou une seule !) quand la condition posée par IF est remplie. Plus tard, vous pourrez combiner ce type de structure avec d'autres pour obtenir un programme plus complexe, mais pour l'instant, contentons-nous d'un codage simple.
# include <stdio.h> int main () { if ( 3 < 5 ) printf ( « 3 est plus petit que 5 » ) ; getchar () ; }
-
Utilisez la structure ELSE/ELSE IF si vous voulez affiner vos conditions. En effet, il peut arriver que vous ayez à faire un tri en fonction d'une valeur qui aurait été entrée par l'utilisateur et c'est là que ce type de structure intervient. L'instruction ELSE n'intervient que si l'instruction IF de départ n'est pas satisfaite (réponse FALSE). On peut mettre plusieurs ELSE IF à l'intérieur d'une structure IF. Ci-dessous, un exemple dans lequel l'utilisateur a entré son âge et vous voulez faire une petite réponse adaptée à l'âge de la personne. Vous ne connaissez pas à l'avance l'âge qui sera entré, d'où l'intérêt de ELSE IF :
# include <stdio.h> int main () { int age ; printf ( « Veuillez entrer votre â ge : » ) ; scanf ( « % d » , $ age ) ; if ( age <= 12 ) { printf ( « Vous ê tes un enfant ! \ n » ) ; } else if ( age < 20 ) { printf ( « Super ! vous ê tes un adolescent ! \ n » ) ; } else if ( age < 40 ) { printf ( « Vous ê tes encore jeune ! \ n » ) ; } else { printf ( « En avançant en â ge , on devient sage . \ n » ) ; } return 0 ; }
- Avec ce petit programme, vous devez entrer votre âge. Cette donnée va passer à travers les différentes propositions en IF. Si votre âge correspond à la première condition (< 12 ans), le programme affichera l'instruction « printf » qui y est attachée. Si ce n'est pas le cas (âge > 12 ans), votre programme passera en revue toutes les autres conditions (ELSE IF) jusqu'à trouver la bonne correspondance. S'il en trouve une, il affichera la phrase que vous avez prévue. Si aucune ne convient, alors on arrive à la condition ELSE de la fin, laquelle affichera la phrase fatidique (« En avançant en âge, on devient sage ! »)
Publicité
-
Comprenez bien comment fonctionnent les boucles. Elles sont très fréquentes dans les programmes. Ce sont de plus ou moins grands blocs d'instructions qui se répèteront tant que la ou les conditions ne seront pas remplies. Ces boucles présentent l'avantage de ne pas avoir à écrire ce bloc d'instructions x fois dans le programme. Imaginez qu'un bloc doive tourner 20 fois ! Avec la boucle, on écrit qu'une fois les instructions et non pas 20 !
- Il existe trois types de boucles : celles avec FOR, celles avec WHILE et celles avec DO...WHILE.
-
Utilisez la boucle avec FOR. C'est la boucle la plus couramment utilisée. La boucle s'exécute tant que la condition présentée dans l'instruction FOR n'est pas réalisée. Pour cela, il faut définir en fait trois conditions : la variable de départ, la condition à remplir (en général, la valeur à atteindre) et l'incrémentation. Si vous n'avez pas besoin de toutes ces conditions, il faudra laisser un blanc suivi d'un point-virgule, sans quoi la boucle risque bien de tourner ad vitam aeternam [3] X Source de recherche .
# include <stdio.h> int main () { int y ; for ( y = 0 ; y < 15 ; y ++ ; ){ printf ( « % d \ n » , y ) ; } getchar () ; }
- Dans le programme ci-dessus, la valeur de « y » a été fixée à 0 et la boucle tournera tant que « y » n'aura pas atteint la valeur de 15 (à 14, elle s'exécutera encore une fois). À chaque passage, vous verrez s'afficher la valeur de « y », puis l'ordinateur augmentera la valeur « y » d'une unité. Quand « y » égalera 15, la boucle s'arrêtera.
-
Utilisez la boucle avec WHILE. Ce genre de boucle est plus simple à mettre en œuvre que les boucles initiées par FOR. Elle ne pose qu'une seule condition qui suit FOR) et tant que cette dernière est valide, la boucle se répète. La variable n'a pas besoin d'être initialisée ni mise à jour, ce qui n'est pas le cas à l'intérieur de ladite boucle.
# include <stdio.h> int main () { int y ; while ( y <= 15 ){ printf ( « % d \ n » , y ) ; y ++ ; } getchar () ; }
- La commande « y++ » ajoute 1 à « y » chaque fois que la boucle est exécutée. Si « y », à un moment donné, a pour valeur 16 (dans le code, la boucle tourne tant que « y » n'a pas une valeur supérieure ou égale à 15), la boucle s'interrompt.
-
Sachez utiliser la boucle DO.. .WHILE . Cette boucle est un peu moins utilisée en général que la simple boucle WHILE. Cependant, si vous voulez que la boucle s'exécute au moins une fois, il faut utiliser ce type de boucle. Avec les boucles FOR et WHILE, si la condition n'est pas réunie, vos boucles ne seront pas activées. Cela n'arrive pas avec une boucle DO…WHILE. La seule chose qui change en fait par rapport à while, c'est la position de la condition. Au lieu d'être au début de la boucle, la condition est à la fin. Cette boucle s'exécutera toujours au moins une fois.
# include <stdio.h> int main () { int y ; y = 5 ; do { printf ( « La boucle est en cours d ' exécution ! \ n » ) ; } while ( y != 5 ) ; getchar () ; }
- Cette boucle affichera toujours le même message même si la réponse renvoyée est FALSE. La variable « y » s'est vue attribuer la valeur 5. Or la boucle WHILE ne se déclenchera que quand la valeur de « y » sera différente de 5. Comme « y » a été fixée à 5, elle ne changera pas de valeur et le programme affichera indéfiniment le message. Au passage, cette boucle ne sert à rien, mais c'est pour vous montrer comment fonctionne une boucle.
- La sous-boucle WHILE doit se terminer par un point-virgule. Ce sera la seule fois où une boucle se clora ainsi.
Publicité
-
Comprenez bien à quoi servent les fonctions. Ce sont de plus ou moins grands blocs d'instructions qui sont « encapsulés » dans des accolades simples. Une fois définies, vous pouvez les appeler dans votre programme à volonté. L'avantage est que vous n'avez pas besoin de récrire chaque fois cette fonction. Votre code source est plus léger, plus simple à lire. On peut pratiquement tout faire avec une fonction. C'est vous qui les définissez en fonction de vos besoins. À l'intérieur, on trouve tout ce qu'on vient de voir et bien d'autres opérateurs et instructions. Ce sont en quelque sorte de miniprogrammes.
- Dans le code de l'étape 3 ci-dessus, la ligne contenant « main() » marque le début de la fonction. Cette dernière s'achève avec l'accolade qui se trouve juste avant « getchar() ».Cette dernière instruction « getchar() » est aussi une fonction.
- Les fonctions sont essentielles pour avoir un code facile à lire et à exécuter. Faites-en un bon usage.
-
Commencez par déclarer vos fonctions. En effet, elles doivent être définies avant même d'être utilisées. La syntaxe pour les fonctions est la suivante : « Type de la fonction_Nom de la fonction_( argument1, argument2, etc.) » ; « Par exemple, voici comment on code pour additionner deux nombres : »
int add ( int x , int y ) ;
- Ce petit bout de programme sert à signaler qu'une fonction, qui sera définie ultérieurement, va additionner les deux entiers « x » et « y ». Le résultat sera retourné sous la forme d'un entier.
-
Intégrez la fonction dans le programme. On a précédemment fait une déclaration de fonction (un utilisateur va entrer deux nombres, lesquels seront « stockés » par la fonction). Ensuite, vous voulez les additionner, donc, il vous faut une autre fonction (« main ») qui va utiliser le contenu de « add » pour donner une réponse rédigée.
# include <stdio.h> int add ( int x , int y ) ; int main () { int x ; int y ; printf ( « Entrez les deux nombres que vous voulez additionner : » ) ; scanf ( « % d » , & x ) ; scanf ( « % d » , & y ) ; printf ( « La somme de vos deux nombres est % d \ n » add ( x , y ) ) ; getchar () ; } int add ( int x , int y ) { return x + y ; }
- Vous avez remarqué que la déclaration se fait toujours en début de programme. C'est pour que le compilateur puisse l'intégrer et l'exécuter quand elle sera appelée. Une déclaration n'est intéressante qu'à condition que la fonction soit définie plus tard. Cette fonction « add() » peut être définie dans son entier avant ou après la fonction « main() ». Dans les deux cas, le résultat sera le même.
- La fonction opérante (addition) se trouve à la fin du programme. La fonction « main() » commence par enregistrer les données tapées par l'utilisateur, puis les envoie à la fonction « add() » pour que l'addition puisse être faite. Cela fait, le résultat est renvoyé à la fonction « main() » pour permettre l'affichage du résultat.
- Comme vous avez bien défini la fonction « add() », vous pouvez l'utiliser partout dans votre programme.
Publicité
-
Récupérez des livres sur la programmation en C. Cet article n'est qu'une initiation au C, mais il y a bien d'autres choses à savoir sur ce langage très évolué. Vous rencontrerez forcément des difficultés quand vous vous lancerez dans la programmation complexe. Autant avoir un bon livre de référence sous la main ! Voire plusieurs !
-
Rejoignez certaines communautés de programmeurs en C. Il en existe des centaines à travers le monde, que ce soit en ligne ou près de chez vous. Essayez de trouver un groupe de votre niveau ou qui travaille dans le même domaine que le vôtre. Vous apprendrez beaucoup.
- Si c'est possible, participez à des « hackathons ». Ce sont des manifestations, de plus en plus fréquentes aujourd'hui, qui réunissent le temps d'un weekend, parfois une semaine, des programmeurs à qui on soumet des problèmes. Il faut les résoudre dans un laps de temps contraint. Autant vous dire qu'il faut le plus souvent faire preuve de créativité ! C'est le lieu idéal pour se confronter aux autres et apprendre d'eux.
-
Suivez quelques cours. Vous n'êtes pas obligé de passer un doctorat en programmation informatique. Il existe des cours spécialisés dans tel ou tel aspect de la programmation en C. Rien ne vaut l'intermédiaire de quelqu'un qui s'y connait dans le domaine. Ces cours sont assurés, selon les pays, dans des lycées, des centres culturels, dans des universités (dans ce dernier cas, il suffit souvent de vous inscrire en auditeur libre, vous ne serez pas obligé de passer les examens).
-
Songez également à apprendre le C++. Si vous maitrisez déjà le C, vous n'allez avoir aucun mal à aborder le C++. Il s'agit là de la version moderne du C, laquelle présente une plus grande flexibilité que le C. En effet, ce langage est davantage orienté-objet. Or, dans le cadre de la création d'un jeu par exemple, c'est bien plus pratique. C'est un objet qui est manipulé et non plus les données qui le composent. Le C++ est extrêmement puissant.Publicité
Conseils
- Quand on code, il faut toujours mettre des commentaires aux points-clés de la programmation. Cela vous servira à vous y retrouver à n'importe quel moment et cela servira aux autres au cas où vous auriez un problème. En effet, ceux qui se proposent de vous aider auront, grâce à ces commentaires, une vision rapide de la structure de votre programme. En effet, si on sait parfaitement à quoi correspondent ces 40 lignes de code que vous venez de taper aujourd'hui, il n'est pas certain, si vous ne mettez pas de commentaires, que vous vous en souveniez 2 ou 3 mois plus tard.
- Si lors de la compilation, on vous signale une erreur de syntaxe dans votre programme, ne paniquez pas ! Allez sur un moteur de recherche (Google, par exemple) et tapez exactement le message d'erreur qu'on vous signale. Il y a de très grandes chances que vous trouviez la solution à votre problème.
- Votre code source doit être sauvegardé sous une extension de type*.c, ainsi votre compilateur saura que c'est un fichier codé en C.
Publicité
Références
Publicité