Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Bal

Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO Les bases de la programmation en C I. Historique du C II. La compilation III. Les composants élémentaires du C IV. Les types de base V. Les variables VI. Les opérateurs VII. Exercices 1 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO Les bases de la programmation en C I. Historique du langage C 1 Définition et historique Le langage C a été inventé en 1972 par Dennis Ritchie dans les laboratoires de AT&T aux Etats- Unis. La première version normalisée du langage C, nommée C ANSI ou C89 est sortie en 1989 par l’Institut Américain de Normalisation. En 1990 ISO a son tour sort une version normalisée duu C nommée C90/ C ISO. Un programme C est un ensemble de fichiers (modules) avec une extension .c. Dans chaque fichier on a : • Les directives du pré-processeur • La déclaration des variables externes • La déclaration des fonctions secondaires • La fonction principale Exemple de programme C #include <stdio.h> int main() { printf(‘’Bonjour tout le monde\n’’) ; return 0 ; } 2 Structure générale d’un programme C [directives du pré-processeur] [déclaration de variables externes] [fonctions secondaires] main() { [déclaration de variables internes] instructions } Fonctions secondaires type nomfonction(arguments) { 2 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO [déclaration de variables internes] instructions } Exemple de fonction secondaire int produit(int x, int y) { int resultat; resultat = x*y; return resultat; } Exemple de programme C avec une fonction #include <stdio.h> int produit (int x, int y); main() { int a, b, resultat; printf(‘’Saisir 2 entiers’’); scanf(%d %d’’, &a,&b); resultat = produit(a, b); printf (‘’Le resultat final est ‘’, resultat); } int produit(int x, int y) { int resultat; resultat = x*y; return resultat; } Exercice : Créer les fonctions somme, soustraction et division dans le programme ci-dessus et appeler ses fonctions succivement dans la fonction main(). II. La compilation La compilation consiste à transformer un programme (fichier texte écrit dans notre langage de programmation) vers la langue de la machine (suite de 0 et 1) ; c’est la création d’un programme exécutable à l’aide d’un comilateur. 3 Instrictions écrites en langagede program- mation Int main (void) { Return 0 ; } Intructions en langage Machine 00011001101010100101010 10101011111000011010101 10101010101001010101010 10101001010101010100101 00000111110001010010100 01010101010101001010101 11111000011101010100101 COMPILATION Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO Nous travaillons avec l’IDE CodeBlocks donc n’allons pas entrer dans les détails de la compilation. Pour compiler un programme dans CodeBlocks cliquez sur Build puis Build ou utilsier la combinaison de touche CTL + F9 ou cliquez directement sur l’icone roue dentée Pour exécuter un programme cliquez sur Build puis sur Run ou utilsier la combinaison de touche CTL + F10 ou cliquez directement sur le triangle vert. III. Les composants élémentaires du C 1 Identificateur Un identificateur sert à nommer les entités du programme (nom de variable, nom de constante, nom de fonction, nom de type prédéfini…) Le nom de l’identificateur doit être unique dans sa portée et respecter les règles de nommage suivants : ●Il n’y a pas d’espace dans le nom ●Le nom ne comporte que les caractères alphanumériques (a-z, A-Z, 0-9) et le souligné(underscore _) ●Le nom n’admet pas de caractère accentué ●Le nom commence par un caractère alphabétique (a-z, A-Z) ou le souligné (underscore _) 4 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO ●Un mot clé du langage ne peut être utilisé comme identificateur Les mots clés du langage C auto break case char const continue default do double else enum extern float for goto if inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while _Alignas _Alignof _Atomic _Bool _Complex _Generic _Imaginary _Noreturn _Static_assert _Thread_local Exemples : int i, n, nombre, total; char nom[30], prenom[50], pays[50]; int somme (int a, int b); 2 Les commentaires Un commentaire sert à documenter un programme. Il est très important de commenter les programmes pour faciliter la maintenance. Il existe deux formes de commentaires en C : • Commentaire sur plusieurs lignes /* Commentaire sur plisueurs lignes*/ • Commentaire sur une ligne // Commentaire sur une ligne Exemple : /* Le but de ce programe est de saisir deux nombres entiers ensuite calculer leur produit et afficher le résultat à l’écran*/ #include <stdio.h> #include <stdlib.h> /*declaration des variables a, b, resultat pour prendre respectivement le premier entier, le deuxième entier et le resultat*/ int a, b, resultat; //prototype de la fonction qui calcule le produit de 2 entiers int produit(int x, int y); //La fonction principale du programme int main() { //La saisie des 2 entiers 5 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO printf("Saisir deux entiers\n"); scanf("%d %d", &a, &b); //Appel de la fonction produit resultat = produit(a, b); //Affichage du résultat à l’écran printf( "Le produit de %d et %d = %d \n", a, b, resultat); return 0; } /* La fonction qui calcule le produit de 2 entiers passés en paramètres * int x le premier paramètre de type entier * int y le deuxième paramètre de type entier */ int produit(int x, int y) { //La variable resultat qui va stocker le resultat du calcul int resultat; resultat = x*y; return resultat; } IV. Les types de base Le type, permet de définir les intervalles de valeurs des variables (objets) manipulés par le programme (taille mémoire et représentation binaire en machine). Le type définit aussi les opérations autorisées sur ces variables. Le type de base est le type prédéfini par le compilateur (langage). En C il y a types prédéfinis suivants : • Le caractère ●char : ce type permet de stocker les caractères. Il représente un entier sur 1 octet (8 bits). Sa valeur varie entre -128 et +127 s’il est signé. Il peut être signé ou non. ●<ctype.h> dans ce fichier sont déclarées les fonctions de traitement des caractères ➔tolower (int c) convertit le caractère c en minuscule ➔toupper (int c) convertit le caractère c en majuscule ➔isalpha (int c) 0/1 lettre de a-z ; A-Z ➔isalnum (int c) 0/1 si caractère c est alphanumérique (a-z ; A-Z ; 0-9) ➔isdigit (int c) 0/1 si caractère c est un chiffre (0-9) ➔isxdigit (int c) 0/1 si caractère c est un chiffre héxadécimal (0-9) ➔islower (int c) 0/1 si le caractère c est en minuscule ➔isupper (int c) 0/1 si le caractère c est en majuscule 6 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO ➔isspace (int c) 0/1 si le caractère c est un espace, une tabulation, un retour chariot, un saut de ligne, un saut de page ➔isprint (int c) 0/1 si le caractère c est imprimable Exercice : Ecrire un programme qui demande à l’utilisateur de saisir un caractère et dire si le caractère saisi est une lettre de l’alphabet ou non. Solution : #include <stdio.h> #include <stdlib.h> #include <ctype.h> char c; int main() { printf("Saisir un caractère\n"); scanf("%c", &c); if (isalpha(c)) printf("Vous avez saisi un caractère alphabétique\n"); else printf("Vous avez saisi un caractère non alphabétique\n"); return 0; } • Les entiers ●int : ce type permet de stocker les entiers, il est codé sur 2 octets (16 bits). Le type int peut être préfixé par un qualificatif qui définit les entiers avec des tailles différentes. ➔short int codé sur 2 octets (16 bits) ➔long int codé sur 4 octets (32 bits) On peut aussi préciser si l’entier est signé ou non (signed ou unsigned). Si un entier est signé (signed), il peut stocker les nombres positifs et les nombres négatifs. Par contre si un entier n’est pas signé (unsigned) il ne prend en compte que les nombres positifs. Exercice 2 : Ecrire un programme qui demande à l’utilisateur de saisir deux entiers et calcule leur somme puis affiche le résultat à l’écran. Solution : #include <stdio.h> #include <stdlib.h> int a, b, somme; int main() { printf("Saisir deux entiers\n"); scanf("%d %d", &a, &b); somme = a + b; 7 Le langage C SupInfo Dakar (Sénégal) Année académique 2021-2022 mai 2022 M. Balla Moussa DIALLO printf( "La somme de %d et %d = %d \n", a, b, somme); return 0; } • Les réels Rappel : ➔La fraction +20/3 peut être représenté par le nombre réel +6,666666 ➔La fraction -290/8 peut être représenté par le nombre réel -36,25 ➔La fraction +8000/17 peut être représenté par le nombre réel +470,5882352941176 ➔La fraction -2/999 peut être représenté par le nombre réel -0,002002002002002 Un nombre réel peut-être décomposé comme suit : • Le signe (±) • La partie entière (6-36-470-0) • La partie décimale (mantisse) (666666-25-5882352941176-002002002002002) Si la division n’est pas exacte, plus la mantisse est élevée plus le nombre est précis. Par exemple 6,666666666666 est plus précis que 6,6666 si bien que c’est uploads/Industriel/ screenshot-2022-05-15-at-23-30-51.pdf

  • 31
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager