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

Présentations similaires


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

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

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

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

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 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 Structure d'un programme
En langage C <directives de précompilation> <définitions de types de donnes> <prototypes de fonctions> <définitions de variables globales> <définitions de fonctions> Structure d'une fonction <type> nomFonction(<paramètres>) { <définition de variables> <instructions> }

7 Structure d'un programme
En langage C Le partie principale du programme est une fonction nommée main. <type> main(<paramètres>) { <définition de variables > <instructions> }

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

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

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

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

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

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 Les types, variables et constantes
Size Costant <limits.h> Min Max Char 1 CHAR_MIN CHAR_MAX 255 signed char SCHAR_MIN SCHAR_MAX -127 127 Short 2 SHRT_MIN SHRT_MAX   32767 unigned short USHRT_MAX 65535 Int 4 INT_MIN INT_MAX Unsigned int UNIT_MAX

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 Les types, variables et constantes
Le type char char reponse = ‘A’; printf(“%c“, response); /* A */ printf(“%d“, response); /* 65 */ char reponse = 65; reponse = ; printf(“%c“, response); /* a */

17 Les types, variables et constantes
Le type char char reponse = ‘A’; printf(“%c“, response); /* A */ printf(“%d“, response); /* 65 */ char reponse = 65; reponse = ; printf(“%c“, response); /* a */ ASCII Code (

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

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 Les types, variables et constantes
La définition d’un 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 Les différents types d’opérateurs
Opérateur d’affectation Symbole « = » Opérateurs arithmétiques Symboles « + », « - », « * », « / », « % » + addition - soustraction * multiplication / division % reste de la division (modulo)

22 Les différents types d’opé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 Les différents types d’opérateurs
Opérateurs d’incré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 d’affectation élargis Pour simplifier certaines affectations i = i + 4; /* i += 4; */ temps = temps * k; /* temps *= k; */

24 Les différents types d’opérateurs
Les opérateurs conditionnels if (ok == true) /* Test d’égalité */ if (ok != false) /* Test d’iné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)) . . . /* s’il est faux que ok soit 1 */

25 Les différents types d’opé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; */ x = double(i) / 4; /* x = 2.5; */

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

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 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 (<un format de lecture>, <une liste d’adresses>) 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 L’exé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); if ((a >= b) && (a >= c)) if (b >= c) else plusGrand = c;

30 L’exé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 L’exé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++) La boucle « repeat » do { printf (“Voulez-vous recommencer ? ”); scanf (“%c”, &reponse); } while ((reponse == ‘o’) || (reponse == ‘O’));

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 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 Les fonctions Fonction retournant une valeur Fonction de type « void »
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 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 Les tableaux en C float vett[10]; index 1 2 3 4 5 6 7 8 9 vett

37 Les tableaux en C float vett[10]; index 1 2 3 4 5 6 7 8 9 vett
1 2 3 4 5 6 7 8 9 vett vett[4] = 5,4

38 Les tableaux en C 5,4 float vett[10]; index 1 2 3 4 5 6 7 8 9 vett
1 2 3 4 5 6 7 8 9 5,4 vett vett[4] = 5,4

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 Les tableaux en C float matr[5][3] 1 2 matr Index de colonne 1 2 3 4
1 2 matr Index de colonne 1 2 3 4 Index de ligne

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

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

43 Les tableaux Mode de transmission
Un tableau n’est 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; 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 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 Les chaînes de caractères
Sans type prédéfini en langage C #include <string.h> 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 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"

Présentations similaires


Annonces Google