Le fichier source d'un programme écrit
en langage C est un simple fichier texte dont l'extension est par convention .c.
|
Note d'un visiteur (J.Grondin):
L'extension est en minuscules. Le .C (majuscule) est interprété par certains compilateurs comme l'extension du C++ (gcc).
Comme il existe de petites différences entre la compilation d'un programme en C et la compilation de
ce même programme en C++, cela peut parfois poser des problèmess.
|
Ce fichier source doit être un fichier texte non formaté, c'est-à-dire
un fichier texte dans sa plus simple expression, sans mise en forme particulière ou caractères
spéciaux (il contient uniquement les caractères ASCII de base).
Lorsque le programme est prêt à être "essayé", il s'agit
de le compiler (le traduire en langage machine).
De nombreux compilateurs C existent: sous les systèmes de type UNIX par exemple,
le compilateur C est fourni en standard, si bien que la programmation en langage C est aisée
sous ce type de système. La compilation sous UNIX se fait par la ligne de commande suivante:
cc fichier.c
Un programme écrit en langage C, comporte une fonction principale
appelée main() renfermant les instructions qui doivent être exécutées.
Celles-ci sont comprises entre des accolades qui suivent le nom de la fonction. Cela vous semble
tombé du ciel si vous n'avez jamais programmé en C, mais il faut admettre pour l'instant
la manière d'écrire un programme en C. La finalité de cette écriture vous
sera dévoilée au cours des chapitres suivants...
Un programme C de base ressemblera donc à ceci :
main()
{
printf("Ceci est votre premier programme");
}
Le programme présenté ci-dessus contient donc une fonction principale main()
(qui, rappelons-le, est essentielle car c'est par cette fonction que le programme s'exécute) contenant une instruction imprimant à l'écran
le message "Ceci est votre premier programme" grâce à la fonction printf().
|
Note d'un visiteur (Emmanuel D.) :
- Le type retourné par main() est int. La norme actuelle du C (C99) impose que le type soit explicite, il faut donc
écrire :
int main()
- Il est recommandé de définir une fonction sous sa forme prototypée. Dans ce cas, main() n'ayant pas de paramètres, on l'indique avec void.
int main(void)
- printf() est une fonction avec nombre variable de paramètres. Il est obligatoire de fournir un prototype à cette fonction. Il manque par exemple:
#include <stdio.h>
- printf() produit une émission de caractères en séquence vers stdout.
Certaines implémentations de stdout étant bufférisées, il est recommandé de terminer la chaine émise par un '\n', ce qui déclenche l'émission effective. Sinon, il est possible de la forcer avec fflush(stdout) :
printf ("Ceci est votre premier programme\n");
- Bien que la norme actuelle (C99) autorise main() à ne pas avoir de return explicite (dans ce cas on a un return 0 implicite), cette pratique est peu recommandée pour des questions de compatibilité avec la norme courante (C90) qui exige qu'une fonction retournant autre chose que void ait un return quelque chose explicite.
return 0;
Je propose:
#include <stdio.h>
int main (void)
{
printf ("Ceci est votre premier programme\n");
return 0;
}
|
La manière d'écrire les choses en langage C a son importance. Le langage C
est par exemple sensible à la casse (en anglais case sensitive), cela signifie
qu'un nom contenant des majuscules est différent du même nom écrit en minuscules.
Ainsi, les spécifications du langage C précisent que la fonction principale doit
être appelée main() et non Main() ou MAIN().
De la même façon, on remarquera que la fonction printf() est écrite
en minuscules.
D'autre part, l'instruction printf() se termine par un point-virgule. Ce détail
a son importance, car en langage C, toute instruction se termine par un point-virgule.
Lorsqu'un programme devient long et compliqué, il peut être intéressant
(il est même conseillé) d'ajouter des lignes de commentaires dans le programme,
c'est-à-dire des portions du fichier source qui ont pour but d'expliquer le fonctionnement
du programme sans que le compilateur ne les prenne en compte (car il génèrerait une erreur).
Pour ce faire, il faut utiliser des balises qui vont permettre de délimiter les explications
afin que le compilateur les ignore et passe directement à la suite du fichier.
Ces délimiteurs sont
/* et */.
Un commentaire sera donc noté de la façon suivante:
/*Voici un commentaire!*/
En plus des symboles /* et */, fonctionant un peu comme des parenthèses,
le symbole // permet de mettre en commentaire toute la ligne qui la suit (i.e. les
caractères à droite de ce symbole sur la même ligne.
Il convient toutefois d'utiliser préférablement la notation /* */ que //,
car c'est beaucoup plus joli et plus propre.
La notation // est généralement réservée pour mettre en commentaire
une ligne de code que l'on ne veut désactiver temporairement.
Il y a toutefois quelques règles à respecter:
|
- Les commentaires peuvent être placés n'importe où dans le fichier source
- Les commentaires ne peuvent contenir le délimiteur de fin de commentaire (*/)
- Les commentaires ne peuvent être imbriqués
- Les commentaires peuvent être écrits sur plusieurs lignes
- Les commentaires ne peuvent pas couper un mot du programme en deux
|
|