C

essay B

LozZone — Introduction langage C Version du 8 septembre 2008 Sni* to View Dernière version sur http://lozzone. free. fr Vincent Lozano Sommaire 1 Introduction 2 Variables et types 3 Instructions 4 Structures de contrôle 11 5 Fonctions 14 ora et Ritchie notent dans la préface de la première édition du livre « Le langage C » (1978) que ce langage, ni de bas niveau, ni de très haut niveau, est un langage adapté à des projets très variés.

Ils citent en exemple le système Unix lui-même, le compilateur C, la plupart des utilitaires système et le programme qui a permis de mettre en œuvre leur livre. Le C a été normalisé en 1988 par l’Ansi. 1 L’apport majeur de cette norme a été de standardiser une bibliothèque de fonctions, et ainsi d’assurer la portabilité du langage sur de nombreux systèmes. Notons enfin que si aujourd’hui le C est considéré plutôt comme un langage de bas niveau par rapport à d’autres langages actuels, il est malgré tout encore très utillsé.

Il présente par ailleurs un atout majeur sur le plan de l’apprentissage car son aspect bas niveau permet (et impose) de comprendre et de maîtriser les mécanismes d’accès à la mémoire et de communication avec le système d’exploitation. . 3 C : un langage compilé Pour créer un exécutable à partir d’un programme écrit en C, il faudra passer nécessairement par les étapes suivantes : O édition du programme source à l’aide d’un éditeur de texte. Cette phase créera donc un fichier de type texte c’est-à-dire ne contenant que les codes Ascii 2 PAGF OF processeur donné. Warnings) Source Compilation Exécutable Erreurs La compilation peut générer des erreurs au cours des analyses effectuées lors de la deuxième phase, dans ce cas aucun exécutable ne sera créé. La particularité du langage C est que le compi ateur émet également es warnings ou avertissements. Ces avertissements n’empêchent pas la création de l’exécutable mais attirent l’attention du programmeur sur certaines parties du code source qui peuvent générer des erreurs à l’exécution.

II est donc toujours préférable de supprimer tous les avertissements en corrigeant le code source, à moins d’être sûr de ce que l’on fait. Le lecteur se reportera à la section 10 page 45 où il trouvera des informations précises sur la production d’un exécutable à partir d’un ou plusieurs sources écrits en C. 1. 4 Bonjour, monde.. Il est courant de découvrir un langage de programmation en étudiant de manière très sommaire le célèbre programme « hello, world » pour se faire un première idée de la syntaxe du langage : 1 .

American national standard institute- 2. American standard cod -on interchange. PAGF 3 OF par le compilateur. Les commentaires peuvent s’étendre sur plusieurs lignes et commencent par et finissent par On notera également que ces commentaires ne peuvent être imbriqués. Sans entrer dans les détails pour l’instant, 4 la ligne 2 indique que l’on va inclure des fonctions de la bibliothèque standard d’entrée/sortie standard input/output library). La partie du source int main est une fonction particulière du source, appelée fonction main ou programme principal.

Lorsqu’on exécutera le programme, on exécutera les instructions de la fonction main. Les lignes 5 et 8 définissent un bloc d’instructions qu’on peut rapprocher du begin et du end du Pascal. À la ligne 6 est appelée la fonction printf qui permet d’afficher ? l’écran la chaine de caractères « bonjour, monde… » ; on notera l’utilisation de la séquence pour ajouter un saut de ligne après l’affichage. La bibliothèque d’entrée sortie sera ?tudié au paragraphe g page 36.

Le mot clef return de la fonction main permet de faire renvoyer une valeur à la fonction, et donc dans ce cas précis au programme lui-même. Dans ce cas le système d’exploitation et plus précisément Vinterpréteur de commandes pourra utiliser ce code le cas échéant. On notera enfin que la ligne 6 constitue une instruction et que les instructions du langage C sont terminées par le caractère ‘f Le langage C est un langage faiblement typé, c’est-à-dire que le compilateur inversement.

Il vous avertira lorsqu’il rencontrera des affectations de ointeurs à des entiers, ou de pointeurs de types différents. 2. 1 Types prédéfinis Les types reconnus par le langage C sont les suivants : Les entiers : signés ou non signés : 4. D’autres informations à ce sujet au paragraphe 10 page 45 types taille short 2 octets unsigned short 4 octets unsigned int long unsigned long portée [-32768, 32767] [0, 65535] [-2147483648, 2147483647] [0, 4294967295] [2147483648, 2147483647] sur les machines 32 bits d’aujourd’hui il n’y a pas de différence entre le type long et le type int. Les flottants : permettent de mani uler des nombres à virgule lottante avant une PAGF s OF page 14). On pourra noter que le langage C : propose deux types structurés que nous présenterons au paragraphe 6 : le tableau et l’enregistrement ; ne propose pas de type booléen (vrai/faux) la fonction sizeof renvoie la taille en octets occupée par un type. Ainsi, sur une système 32 bits, sizeof(int) renverra la valeur 4. 2. 2 Variables Les variables permettent de réserver un espace mémoire et d’affecter un symbole à cette zone.

Lequel symbole représente le nom ou son identificateur. Jautre part, une variable est toujours d’un type particulier, prédéfini dans le angage C ou défini par le programmeur. 5. La taille de type int n’est pas fixée par la norme du langage C. Elle peut être de 2 ou 4 octets en fonction de l’architecture. Même si aujourd’hui ce sera toujours 4 octets en pratique, on ne présumera pas de la taille du type int. 4 2. 2. Déclaration Pour déclarer une variable on procédera comme suit type nom de la variable ; par exemple • int entier ; 2 double x, y, z ; 3 char carl OF exemples qu’il est possible de manipuler des constantes de type entier ou de type flottant constante entière : peuvent être de la forme : 12 ou -go ou 23 correspondant à 238 en base 8 (soit 19 en base IO) ; 0x40 correspondant à 4016 en base 16 (soit 64 en base 10) ; constante caractère : peuvent être de la forme : le code Ascii du caractère ; Z’, ‘a’ : le caractère lui-même entre apostrophe. onstante flottante : peuvent être exprimées sous la forme -1 . 4 Ou 2. 345 Ou . 434 23. 4e-10 ou 1. 234e45 ou 2. 2. 4 Typage Le C est un langage faiblement typé ; c’est-à-dire que le compilateur n’émet pas d’erreur et très peu d’avertissement lorsqu’on affecte à une variable d’un type donné une valeur d’un autre type. Ainsi, par exemple : nt i =80000; char c ; double d = 4. 6 ; printf(  » le _ caractère _ • , c) ; i=d printf(  » l’ entier l) Donnera : le caractère : -128 l’entier La première affectation, d’un entier à un caractère, affecte le premier octet du codage de 800000 (100111000 100000002 au caractère, on retrouve donc la valeur -128. PAGF 7 OF pendant lequel la zone mémoire associée est effectivement allouée. Cette durée ne peut dépasser la durée d’exécution du programme. Variables globales Toutes les variables déclarées en dehors du bloc de la procédure main et de tout autre bloc, sont des variables globales . ur durée de vie est le temps d’exécution du programme ; leur portée est l’intégralité du source après la déclaration ; int Globale =20; int main ( ) Globale =10; Ici la variable Globale peut être utilisée dans tout le source après sa déclaration ? la [gne 1 Variables locales Les variables déclarées localement à un bloc (par exemple le bloc de la fonction main) sont des variables locales : leur durée de vie est le temps d’exécution du bloc ; leur portée est le bloc lui-même et les blocs inclus. int locale ; if ( Globale =10) int Ilocale Ici, la variable locale n’est visible que dans la procédure main, la ariable Ilocale n’est visible que dans le bl E OF Ce programme donne à l’écran la valeur de est : 20 d vaut 0. 176471 ou encore (0. 18) i=0020 et d=O. 76 On notera donc que le caractère % permet de spécifier le contenu d’une variable (variable qui doit apparaître dans la liste des arguments qui suivent), et que : %d permet d’afficher un entier ; %04d permet d’afficher un entier sur 4 caractères en comblant avec des O sur la gauche si nécessaire ; %f permet d’afficher un nombre à virgule flottante ; %1. 3f un nombre à virgule flottante avec 1 chiffre avant la irgule et 3 après ; La bibliothèque d’entrée/sortie du C dispose de bien d’autres fonctionnalités dont nous vous faisons grâce ici.. . 4 Allocation mémoire Il est possible d’obtenir l’adresse des zones mémoires des variables que l’on déclare, en utilisant l’opérateur & : 6. Voir 4 page 11 sur les structures de contrôle. 7 double char carl , car2 , de _ carl Jhp
 » , &carl ) ; prlntf ( printf ( printf (  » adresse « adresse printf ( « adresse  » adresse de r t : , &entier ) ; de _ n t t : i’ adresse _ de ,&y); de _ z Nt: , &z); g OF Oxbffff73c Oxbffff73b Oxbffff73a 73C 740 744