Niveau:2
Introduction:
Dans cet article, nous verrons comment est structuré le programme en langage C. Je cherche juste à vous donner quelques bases pour comprendre les programmes en C.
Prérequis:
Avoir un raspberry pi avec Raspbian installé ou une machine virtuelle avec Raspbian avec un IDE pour la programmation.
Savoir compiler et exécuter un programme en C.
Voir article : https://caron.ws/informatique/programmation-en-c-outils-de-programmation/
Les mots réservés:
Un certain nombre de mots sont réservés pour le langage lui-même et ne peuvent pas être utilisés comme identificateur,variable, constante.
Pour la version C89, nous avons 32 mots réservés, également appelés mots-clés lesquelles ils ont été prédéfinis:
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
C99 a réservé cinq autres mots:
_Bool _Complex _Imaginary inline restrict
C11 a réservé sept autres mots: [22]
_Alignas _Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local
Structure du programme:
Voici le code que nous allons détailler:
/* * arg.c * * Christophe Caron * www.caron.ws * 2019 * Licence MIT * * * */ #include <stdio.h> int main(int argc, char **argv) { //Commentaire int i; printf( "Nombre d'arguments: %d\n", argc ); printf( "Argument 0 (Nom du programme): %s\n", argv[0] ); if ( argc == 1 ) { printf( "Aucun argument passé\n" ); } else { printf( "Liste des arguments:\n" ); for ( i = 1; i < argc; ++i ) { printf( " %d. %s\n", i, argv[i] ); } } return 0; }
Fichier source: arg.c
Explications du programme:
/*=> Permet de faire des commentaires multilingue et se termine par */
Les commentaires permettent de donner des indications pertinentes sur le code pour mieux le comprendre.
#include <stdio.h> => Cette instruction ( Directive de préprocesseur) permet d’ajouter une bibliothèque à notre programme. Cela veut dire que nous insérons des fonctions supplémentaires dans notre programme. Nous pouvons avec cette bibliothèque utiliser la fonction printf pour imprimer les valeurs de caractère, chaîne, float, entier, octal et hexadécimal sur l’écran de sortie.
int main(int argc, char **argv){ }=>La fonction main() d’un programme C est la première fonction exécutée lors du lancement du programme. Le langage C spécifie un modèle pour la fonction main() avec paramètres et un type de réponse qui, justement, permet au programme de récupérer ses paramètres. Le code de la fonction est entre les deux accolades.
Le modèle complet de la fonction main() d’un programme C est sous la forme int main(int argc, char *argv[]) ou int main(int argc, char **argv).
- int main est la déclaration de la valeur de retour de la fonction qui est un entier. Ce code de retour permet au
programme de faire savoir au système si une erreur a été détectée. - int argc est le nombre de paramètres effectivement passé au programme. Ce nombre
est toujours > 1 car le premier paramètre est toujours le nom de l’exécutable. - char * argv [] est un tableau de chaîne de caractères contenant les paramètres
effectivement passés au programme.
Le premier élément de ce tableau (argv[0]) contient toujours le nom du programme (ou plus
précisément le chemin utilisé pour accéder au fichier exécutable). C’est bien utile car on ne sait
pas, dans le code C, comment le fichier exécutable s’appelle : ce fichier exécutable a pu être
renommé par exemple après avoir été compilé.
// commentaire => Les de slash (//) permettent de faire un commentaire sur une ligne.
int i;=> Déclaration d’une variable de type entier. C’est à dire que nous réservons une case mémoire pour stocker une valeur qui changera dans notre programme. La fin de l’instruction est notée avec un point virgule.
printf=> Permet d’afficher des informations sur notre écran. Voici l’explication de la ligne :printf( « Nombre d’argument: %d\n », argc ); Le texte à afficher est entre les guillemets, et le symbole %d permet d’afficher une variable de type entier qui sera la premier variable après la virgule (argc).
Sur la ligne suivante on utilise %s => qui est un string (char*), cela veut dire c’est une chaîne de caractère dans un tableau (argv[0]).
if ( argc == 1 ) {=> Vérification de la valeur argc=1, si cela est vrai on continue le programme après l’accolade { et jusqu’à l’autre accolade }. Si c’est faux on continue le programme après le Else de la première accolade { et jusqu’à l’autre accolade }.
for ( i = 1; i < argc; ++i ) { }=> Voici la boucle For va réaliser le code entre les accolades de la valeur i=1 à la valeur inférieur stricte de argc avec une incrémentation de 1 pour i.
printf( » %d. %s\n », i, argv[i] );=> Grâce à notre boucle on va afficher les valeurs des arguments que nous avons passé à notre programme. De l’argument 1 à X.
return 0; => Envoie au système la fin d’exécution du programme et que le programme s’est bien exécuté.
Exécution de notre programme:
Après avoir compiler votre programme vous pouvez le tester en l’exécutant avec des paramètres différents.
Par exemple: ./arg a b c