La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

FLSI602 Génie Informatique et Réseaux Alberto Bosio

Présentations similaires


Présentation au sujet: "FLSI602 Génie Informatique et Réseaux Alberto Bosio"— Transcription de la présentation:

1 FLSI602 Génie Informatique et Réseaux Alberto Bosio

2 2 Agenda langage de programmation C UNIX/Linux Réseau

3 3 Bibliographie B.W. Kernighan, D.M. Ritchie, Le langage C (2ème édition), Dunod, 2000 Internet …

4 4 Historique Histoire du C est très liée à l'histoire du système UNIX. En 1969, la 1ère version du système UNIX voit le jour programmée en assembleur. Ken Thompson créa un nouveau langage de programmation, nommé B. En 1971, création du successeur de B, nommé C, créé par Dennis Ritchie.

5 5 Historique En 1983, un standard pour le langage C est créé : la norme ANSI (American National Standards Institute). La plupart des compilateurs (Borland, Microsoft, GNU CC...) utilisent ce standard. un programme écrit en ANSI C est compilable presque partout.

6 6 Structure d'un programme En langage C Structure d'une fonction nomFonction( ) { }

7 7 Structure d'un programme En langage C Le partie principale du programme est une fonction nommée main. main( ) { }

8 8 Un premier exemple Calcul du volume dune sphère /* Directive de précompilation */ #include /* Fonction principale */ void main(void) { const float PI = ; /* Définition dune constante */ float rayon; /* Définition dune variable */ float volume; /* Définition dune variable */ volume = 4*PI*rayon*rayon*rayon / 3; }

9 9 Un premier exemple Calcul du volume dune sphère /* Directive de précompilation */ #include /* Fonction principale */ void main(void) { const float PI = ; /* Définition dune constante */ float rayon; /* Définition dune variable */ float volume; /* Définition dune variable */ volume = 4*PI*rayon*rayon*rayon / 3; } Commentaire

10 10 Un premier exemple Calcul du volume dune sphère /* Directive de précompilation */ #include /* Fonction principale */ void main(void) { const float PI = ; /* Définition dune constante */ float rayon; /* Définition dune variable */ float volume; /* Définition dune variable */ volume = 4*PI*rayon*rayon*rayon / 3; } constant

11 11 Un premier exemple Calcul du volume dune sphère /* Directive de précompilation */ #include /* Fonction principale */ void main(void) { const float PI = ; /* Définition dune constante */ float rayon; /* Définition dune variable */ float volume; /* Définition dune variable */ volume = 4*PI*rayon*rayon*rayon / 3; } variable

12 12 Un premier exemple Calcul du volume dune sphère /* Directive de précompilation */ #include /* Fonction principale */ void main(void) { const float PI = ; /* Définition dune constante */ float rayon; /* Définition dune variable */ float volume; /* Définition dune variable */ volume = 4*PI*rayon*rayon*rayon / 3; } instructions

13 13 Les types, variables et constantes Les commentaires /* Sur plusieurs lignes : en C, C++ ou Java */ Les types de données Entiers : short, int, long int, unsigned short,... Réels : float, double, long double Caractères : char, unsigned char

14 14 Les types, variables et constantes TypeSizeCostant MinMax Char1CHAR_MIN CHAR_MAX 0255 signed char1SCHAR_MIN SCHAR_MAX Short2SHRT_MIN SHRT_MAX unigned short2USHRT_MAX Int4INT_MIN INT_MAX Unsigned int4UNIT_MAX

15 15 Les types, variables et constantes Déclarations et initialisation de variables int jour, mois, annee = 2000; double puissance = 10.4; char reponse = A; int test = 10;

16 16 Les types, variables et constantes Le type char char reponse = A; printf(%c, response); /* A */ printf(%d, response); /* 65 */ char reponse = 65; printf(%c, response); /* A */ reponse = ; printf(%c, response); /* a */

17 17 Les types, variables et constantes Le type char char reponse = A; printf(%c, response); /* A */ printf(%d, response); /* 65 */ char reponse = 65; printf(%c, response); /* A */ reponse = ; printf(%c, response); /* a */ ASCII Code (http://www.asciitable.com/)

18 18 Les types, variables et constantes Définition dune constante Directive de précompilation en langage C #define SIZE 100 Mot clef réservé « const » en langage C const int SIZE = 100;

19 19 Les types, variables et constantes Les constantes littérales Une constante de type caractère est entourée de simple-quotes A, b, \n (retour à la ligne), \t (tabulation) Une constante de type chaîne est entourée de double-quotes il est trop tard\n, Janvier\tFevrier\tMars Les énumérations Une énumération permet de définir un nouveau type enum Saison { Printemps = P, Ete = E, Automne = A, Hiver = H }; Saison S = Printemps;

20 20 Les types, variables et constantes La définition dun nouveau type Le mot clef réservé « typedef » typedef int typeEntier;... typeEntier i; //int i; i = 5; typedef float typeTableau[10];... typeTableau notes; // float notes[10]; notes[4] = 10.5;

21 21 Les différents types dopérateurs Opérateur daffectation Symbole « = » Opérateurs arithmétiques Symboles « + », « - », « * », « / », « % » + addition - soustraction * multiplication / division % reste de la division (modulo)

22 22 Les différents types dopérateurs Opérateurs bit à bit Symboles « & », « ^ », « | », « > » 26 & 150 = ( & ) = = 18 /* ET */ 26 ^ 150 = ( ^ ) = = 140 /* OU exclusif */ 26 | 150 = ( | ) = = 158 /* OU */ 13 << 3 = ( << 3) = = 104 /* Décalage */ 150 >> 2 = ( >> 2) = = 37 /* Décalage */

23 23 Les différents types dopérateurs Opérateurs dincrémentation Pour simplifier certaines expressions ++i; ou i++; /* i = i + 1; */ --i; ou i--; /* i = i - 1; */ i = ++j; /* j = j + 1; i = j; pré-incrémentation */ i = j++; /* i = j; j = j + 1; post-incrémentation */ Opérateurs daffectation élargis Pour simplifier certaines affectations i = i + 4; /* i += 4; */ temps = temps * k; /* temps *= k; */

24 24 Les différents types dopérateurs Les opérateurs conditionnels if (ok == true)... /* Test dégalité */ if (ok != false)... /* Test dinégalité */ if (i < 4)... if (i <= 4)... if (i >= 4)... Les opérateurs logiques if ((ok == 1) && (i < 4))... /* si ok est 1 ET i est inférieur à 4 */ if ((ok == 1) || (i < 4))... /* si ok est 1 OU i est inférieur à 4 */ if (!(ok == 1))... /* sil est faux que ok soit 1 */

25 25 Les différents types dopérateurs Les opérateurs de « cast » Pour convertir explicitement le type de certaines données double x = 14.5; int i; i = int(x); ou i = (int) x; /* i=14;*/ i = 10; x = i / 4; /* x = 2; */ i = 10; x = double(i) / 4; /* x = 2.5; */

26 26 Les entrées / sorties en C Comment afficher des informations ? La fonction « printf » Définition dans la bibliothèque « stdio.h » Syntaxe : printf(, ) int qt = 4; float pr = 10.5; printf(quantite = %d et prix = %f, qt, pr); /* quantite = 4 et prix = 10.5 */ Un format daffichage est une chaîne comportant Des caractères à afficher tels quels Des codes de format : « %d », « %f »

27 27 Les entrées / sorties en C Comment afficher des informations ? Les différents codes de format int i = 6; printf(entier = %d, i); float x = 2.3; printf(réel = %f, x); char c = A; printf(cara = %c, c); char *m = oui; printf(mes = %s, m);

28 28 Les entrées / sorties en C Comment lire des données au clavier ? La fonction « scanf » Définition dans la bibliothèque « stdio.h » Syntaxe : scanf (, ) int i; float x; scanf(%d %f, &i, &x); pour lire au clavier un entier et un réel placés respectivement dans les variables « i » et « x »

29 29 Lexécution conditionnelle /* Exemple de branchement conditionnel */ if (a > b) { plusGrand = a; plusPetit = b; } else { plusGrand = b; plusPetit = a; } printf (%d est plus grand que %d, plusGrand, plusPetit); /* Exemple de branchement conditionnel */ if ((a >= b) && (a >= c)) plusGrand = a; else { if (b >= c) plusGrand = b; else plusGrand = c; }

30 30 Lexécution conditionnelle /* Exemple de « switch » en C */ int mois, nbjours, annee; switch(mois) { /* Mois de 30 jours */ case 4 : case 6 : case 9 : case 11 : nbjours = 30; break; /* Mois de 31 jours */ case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : nbjours = 31; break; /* Mois de février */ case 2 :{ if (estBissextile(annee)) nbjours = 29; else nbjours = 28; break; } default : printf (Mois non valide); } /* Fin du switch */

31 31 Lexécution itérative Trois types de boucles La boucle « while » compteur = 1; while (compteur <= 5) { printf (boucle : %d \n,compteur); compteur++; } La boucle « for » for(compteur = 1; compteur <= 5; compteur++) printf (boucle : %d \n,compteur); La boucle « repeat » do { printf (Voulez-vous recommencer ? ); scanf (%c, &reponse); } while ((reponse == o) || (reponse == O));

32 32 Modes de transmission des arguments La transmission par valeur void echanger(int a, int b) { int tmp = a; a = b; b = tmp; printf (%d - %d\n,a, b); } void main() { int i = 4, j = 8; echanger(i, j); /* a sera une copie de i, et b une copie de j */ printf (%d - %d\n,i, j); }

33 33 Modes de transmission des arguments La transmission par référence (adresse) void classer(int a, int b, int* min, int* sup) { if (b > a) { *min=a; *sup=b; } else { *min=b; *sup=a; } void main() { int i = 4, j = 8, m, s; classer(i, j, &m, &s); printf (%d - %d\n,m, s); }

34 34 Les fonctions Fonction retournant une valeur int min(int a, int b) { int t; if (a < b) t = a; else t = b; return (t); } Fonction de type « void » void calculer_min() { int a, b; printf (Donnez deux entiers : ); scanf ( %d %d, &a,&b); printf (Le min entre %d et %d est %d, a, b, min(a,b)); }

35 35 Les tableaux en C Tableaux unidimensionnels typedef double Vecteur[10]; double x[10]; Vecteur y; for(int i = 0; i < 10; i++) x[i] = y[i] = 0.0;

36 36 Les tableaux en C index float vett[10]; vett

37 37 Les tableaux en C index float vett[10]; vett vett[4] = 5,4

38 38 Les tableaux en C 5,4 index float vett[10]; vett vett[4] = 5,4

39 39 Les tableaux en C Tableaux multidimensionnels typedef double Matrice[10][5]; double A[10][5]; Matrice B; for(int i = 0; i < 10; i++) for(j = 0; j < 5; j++) B[i][j] = A[i][j];

40 40 Les tableaux en C float matr[5][3] matrIndex de colonne Index de ligne

41 41 Les tableaux en C float matr[5][3] matrIndex de colonne Index de ligne matr[1] [2] = 4,5

42 42 Les tableaux en C / C float matr[5][3] matrIndex de colonne Index de ligne matr[1] [2] = 4,5 4,5

43 43 Les tableaux Mode de transmission Un tableau nest jamais transmis par valeur Un tableau est toujours transmis par adresse void initialise(double* t, int n) { int i; for(i = 0; i < n; i++) t[i] = i; } double somme(double* t, int n) { double s; int i; for(i = 0, s = 0.0; i< n; i++) s = s + t[i]; return (s); } void main() { double x[2], y[3]; initialise(x, 2); initialise(y, 3); Printf ( %f, %f\n,somme(x, 2), somme(y, 3)); }

44 44 Les tableaux Mode de transmission Différents modes de déclaration des fonctions void initialise(double* t, int n); void initialise(double t[], int n); Toutes ces déclarations sont équivalentes

45 45 Les chaînes de caractères Sans type prédéfini en langage C #include char prenom[64] = Pierre; char nom[64] = { J, o, y, c, e, \0 }; strcpy(prenom, James); /* Erreur : prenom = James; */ strcat(nom, ); strcat(nom, prenom); scanf (%s, nom); printf (%s, nom);

46 46 Les chaînes de caractères Sans type prédéfini en langage C if (nom[0] == A) … if (strcmp(nom, prenom) < 0) /* Erreur : if (nom < prenom)*/ if (strcmp(nom, prenom) == 0) /* Erreur : if (nom == prenom)*/ printf (Longueur = %d, strlen(nom));


Télécharger ppt "FLSI602 Génie Informatique et Réseaux Alberto Bosio"

Présentations similaires


Annonces Google