Cours de C
Chapitre 1 : Premiers contacts
1) Introduction
Le C a été créé dans les années 1972-73 par Kernighan et Ritchie dans le but d'écrire le noyau du premier Unix. Il est maintenant inconcevable d'acquérir un système Unix sans avoir un compilateur C livré avec. Linux ne déroge pas à la règle, puisqu'il est livré avec gcc : le GNU C Compilator.
Le C est un langage d'assez bas niveau. Il reste près de la machine, sans quand même atteindre les lourdeurs de l'assembleur. Ce langage possède donc des avantages et des inconvénients des langages de haut niveau et de bas niveau. Il est rapide, mais reste très portable, ce qui n'est évidemment pas le cas de l'assembleur. Le C a été normalisé par ANSI, ce qui garantit, dans la très grande majorité des cas une quasi parfaite portabilité.
2) Programme minimum :
void main(void)
{
}
3) Comment compiler ???
Avec un éditeur de texte, ecrivez ce programme ô combien inutile dans un fichier nommé mini.c (par exemple).
Ensuite tapez la ligne de commande suivante :
gcc mini.c -o mini
Vous devez disposer d'un nouveau fichier : mini.
Tapez maintenant la ligne de commande mini et rien ne se passe : c'est normal car ce programme ne fait rien. Il nous permet tout de même certaines remarques :
- La fonction main : Un programme C contient toujours une fonction main(). C'est une obligation, faute de quoi le linker refuse de créer l'exécutable.
- void : En C il n'existe que des fonctions, pas de procédures. La nuance tient à peu mais reste importante. La différence entre procédure et fonction est qu'une fonction renvoie une valeur, pas la procédure. C'est un peu comme en Mathématiques : un fonction (f) a des valeurs en entrée (x) et renvoie une valeur après calcul (y=f(x)). En C c'est pareil, on renvoie une valeur.
Quand on écrit void main(void) cela signifie que la fonction main renvoie une valeur de type void. Manque de bol, c'est justement le type des valeurs inexistantes. Idem pour le void entre () qui veut également dire qu'il n'y a pas de paramètres.
- { } : Une fonction est écrite entre les deux accolades.
4) Voyons maintenant un exemple plus explicite :
Tapez le fichier suivant :
/* Premier programme en C
Affichage et modification d'une variable */
#include <stdio.h>
void main()
{
int i ;
i=4;
printf("Bonjour \n") ;
printf("i=%d\n",i);
i=i+1;
printf("Maintenant i=%d\n",i);
printf("Merci, bonsoir\n");
}
Compilation : Comme tout à l'heure : gcc maxi.c -o maxi (en supposant que votre fichier s'appelle maxi.c)
Remarques :
- #include : Cette instruction est destinée au pré-compilateur. Il va tout simplement insérer les déclarations des fonctions STanDard IO, comprenez In/Out ou encore Entrées/Sorties.
- Il n'y a plus le void entre (): On peut s'en passer. Quand on a aucun paramètres, on peut se passer de préciser void entre(). Par contre il reste obligatoire quand on ne veut pas retourner de valeurs.
- int i; : On vient de déclarer que l'on désire utiliser un entier nommé i. De plus on s'aperçois qu'une instruction C fini par un ;.
- printf("Bonjour\n"); : Cette instruction est l'instruction d'affichage d'un message à l'écran. Le message se trouve entre deux " ". Le \n indique de passer à la ligne à la fin du message.
- printf("i=%d\n",i); : Là, ca se complique un tout petit peu. On va afficher "i=" à l'écran. Le %d est là pour demander un paramètre de type entier. Ce paramètre arrive après le dernier guillemet : c'est i.
- i=i+1; J'espère qu'il n'y a pas trop de problème sur cette instruction : c'est juste une incrmentation de i.
La suite ne devrait pas poser de problèmes.
Voilà, vous savez maintenant faire une "Hello World" application.
Nous verrons les structures de contrôle (if, for, while) dans le prochain article.
D'ici là, vous pouvez toujours m'écrire à : minfo25@crisv2.univ-pau.fr
Ce document n'a été écrit qu'à titre indicatif. Je ne peux en aucun cas garantir les informations qu'il contient. Ecrivez-moi pour me signaler mes erreurs !!!