Programmation Structurée Langage C

Dimension: px
Commencer à balayer dès la page:

Download "Programmation Structurée Langage C"

Transcription

1 Département Génie Civil & Département Mécanique Énergétique Programmation Structurée Langage C Laurence.Bergougnoux@univ-amu.fr

2 UE : Mathématiques & Informatique En GC UE 52 ce sera le seul cours du cursus... En ME UE 53 + UE 63 Calcul scientifique et langage Fortran avec Jacques Massoni au semestre 6 Commun avec MT et GII Rémy Bulot Progr. struct. - C Introduction 2

3 L'équipe enseignante Laurence BERGOUGNOUX François GUILLARD Christian MARIANI Fabien PETITPAS Jérôme VICENTE Bureau 208 Bureau 242 Bureau 321 Bureau 319B Bureau 326 ou Avec la participation de Jean-Luc FIRPO Progr. struct. - C Introduction 3

4 Organisation de l'enseignement ME GC 14h cours 14h TD 20h TP 14h cours 20h TD 20h TP La semaine 51 Mini projet & oral + Contrôle continu + Examen ME Progr. struct. - C Projet & oral + Contrôle continu + Examen GC Introduction Maxime Alarcon & Yassine El Khatari 4

5 Organisation de l'enseignement Transparents de cours en fichier pdf sur : - le Bureau virtuel - 1er TP sur machine la semaine prochaine : Accès avec votre n étudiant et code INE Si vous n'êtes pas encore inscrit : - en ME prendre contact avec M. Daurelle (bur. 326) - en GC avec M. Court ou M. Thuilliez (bur. 237) Progr. struct. - C Introduction 5

6 En pratique : le 1er TD c'est GC 3.1, Mercredi 09/10, 15h30 GC 3.2, Mercredi 09/10, 13h30 ME ME ME ME 3.1, Lundi 07/10, 10h 3.2, Lundi 07/10, 13h30 3.3, Vendredi 11/10, 10h 3.4, Mardi 08/10, 13h30 Progr. struct. - C Introduction 6

7 Plan du cours Introduction Les bases du langage C Les pointeurs et les tableaux Les fonctions Les types utilisateurs La gestion de fichiers La programmation modulaire L'allocation dynamique de mémoire Les listes chaînées

8 Les objectifs de ces cours, TD, TP Apprendre à résoudre un problème grâce à un algorithme, Apprendre à programmer en C à des débutants de manière efficace, Initier à la programmation par gestion d'évènements, Pratiquer un environnement de développement largement utilisé dans l'industrie, Être une introduction au C++... Progr. struct. - C Introduction 8

9 Progr. struct. - C Introduction 9

10 Quelques généralités en programmation Qu'est-ce qu'un Algorithme? Langages de Programmation Qu'est-ce qu'un programme? La structure d'un programme L'exécution du programme Progr. struct. - C Quelques généralités 10

11 Qu'est-ce qu'un Algorithme? Un algorithme énonce une résolution sous la forme d une série d opérations à effectuer. données (entrées) ingrédients Progr. struct. - C Algorithme Recette de cuisine Quelques généralités résultat (sorties) plat 11

12 Conception d'un Algorithme : Analyse hiérarchisée C'est faire une liste de tâches (ou d'actions) à réaliser de manière séquentielle. 1) 2) 3) 4) 5) 6) 8) Recette du gâteau à la crème de marrons : Préchauffer le four à 180 C Faire fondre le chocolat et le beurre Casser 3 œufs et les battre Ajouter la crème de marrons, et mélanger Incorporer le chocolat fondu à la préparation Beurrer un moule à gâteau et y verser la préparation Faire cuire 35 min à 180 C Progr. struct. - C Quelques généralités 12

13 Langages de programmation : Pourquoi faire? Pour écrire avec des mots et signes compréhensibles par une intelligence humaine plutôt que Afin d'organiser, de structurer, le déroulement d'un programme de manière claire et vérifiable. Progr. struct. - C Quelques généralités 13

14 Quelques Langages Par ordre chronologique : Assembleur 68000, 8086 Fortran, Cobol Basic, Pascal, Langage C Langages Objets : C++, Java, C#, Progr. struct. - C Quelques généralités 14

15 Programme exécutable Suite d instructions binaires que le µprocesseur doit effectuer : Spécifiques à un type de µprocesseur. Stockées sur une mémoire de masse (disque dur, DVD, clef usb). Chargées en mémoire centrale avant l exécution du programme. Progr. struct. - C Quelques généralités 15

16 Comment réaliser un programme? Éditer le code source : fichier texte qui obéit aux règles de syntaxe du langage. Le sauvegarder de temps en temps. Le compiler, le traduire en langage machine pour obtenir un fichier exécutable. Fichier Compilation Source Progr. struct. - C Fichier Objet Éditeur de liens Quelques généralités Fichier Exécutable 16

17 L'exécution du programme Au lancement du programme, le système d exploitation : Transfère le programme de la mémoire de masse en mémoire centrale, Réserve de la place pour les données du programme, Démarre l exécution du programme, Reprend la main quand le programme s achève. Progr. struct. - C Quelques généralités 17

18 1er programme en C Langage C : histoire et qualités LabWindows/CVI Le fichier source en C On se lance Progr. struct. - C 1er programme 18

19 Le langage C Crée par K. Thompson, D. Ritchie et B. Kernighan pour développer UNIX. C est un langage structuré et portable. C est le langage le plus utilisé par les professionnels du logiciel. C est la base du C++ qui permet la programmation orientée objet. Progr. struct. - C 1er programme 19

20 LabWindowsTM/CVI Environnement de Développement Intégré (IDE) sous Windows, avec 1 compilateur C-ANSI. Programmation événementielle et interface graphique. Logiciels de mesure et contrôle Progr. struct. - C 1er programme 20

21 Premier Programme en langage C sous LabWindows/CVI source_1.c Progr. struct. - C 1er programme 21

22 Le fichier Source en C source_1.c #include <stdio.h> // fichier en-tête ou header où se trouve la définition de printf() int main() //Fonction ou bloc principal { printf("bienvenue a POLYTECH Marseille \n"); return(0); } Progr. struct. - C 1er programme 22

23 Département Génie Civil & Département Mécanique Énergétique Les bases du langage C Les Les Les Les Prog. Struct. - C types de données variables opérateurs structures conditionnelles Les bases 23

24 Types, variables et constantes Qu'est-ce qu'une variable? c'est le nom d un emplacement mémoire on en crée presque autant qu on veut son contenu peut changer dans le temps. elle contient toujours quelque chose!!! Une variable sera toujours définie avant utilisation : elle doit être associée à un type de données. Prog. Struct. - C 1. Les types de données 24

25 Les types de données Qu'est-ce qu'un type? définit une convention de codage de l'information dans un emplacement de taille préfixée 1 nombre : entier ou réel 1 Variable en C 1 pointeur : adresse Prog. Struct. - C 1. Les types de données 25

26 Les nombres entiers Types prédéfinis Signification Taille (octet) Plage de valeurs char Caractère à 127 unsigned char Caractère non signé 1 0 à 255 short int Entier court à unsigned short int Entier court non signé 2 0 à int Entier unsigned int Entier non signé 4 0 à long int Entier long à unsigned long int Ent. long non signé 4 0 à Prog. Struct. - C 1. Les types de données à 26

27 Les nombres réels Types prédéfinis float double long double Prog. Struct. - C Signification Taille (octet) Réel simple précision 4 Réel double précision Flottant double long Plage de valeurs 3,4 x à 3,4 x , à 1, , à 3, Les types de données 27

28 Codage binaire des nombres entiers 1970 = = des nombres réels 197,75 = , = , = ,11 signe = 1, x 27 exposant = 7+127=134= exposant mantisse Prog. Struct. - C 1. Les types de données 28

29 Les pointeurs Type *pointeur Signification adresse Prog. Struct. - C Taille (octet) Plage de valeurs 2 (sur 16 bits) 0x0000 à 0xFFFF 4 (sur 32 bits) 0x à 0xFFFFFFFF 1. Les types de données 29

30 Leur nom : Les variables Contient 32 caractères max Commence par une lettre Ne peut être un des mots réservés du C auto default float register struct volatile break do for return switch while case double goto short typedef char else if signed union const enum int sizeof unsigned long static void continue extern Prog. Struct. - C 2. Les variables 30

31 Les variables : leurs noms identificateur Correct incorrect Raison Variable Nom de Variable comporte des espaces Nom_De_Variable 123Nom_De_Variable nom_de_variable toto@mailcity.com nom_de_variable_123 Nom-de-variable _707 goto MAJUSCULE Prog. Struct. - C commence par un chiffre caractère signe - interdit nom réservé minuscule 2. Les variables 31

32 La déclaration de variables type nom_de_la_variable ; exemple : #include <stdio.h> int main() { int a; //déclaration char var_car = 'f'; // + initialisation char *pointe_ici; // le pointeur a = 127; //affectation pointe_ici = &var_car; printf("la valeur de a = %i",a); //affichage printf("\n et celle de var_car %c", var_car); } Prog. Struct. - C 2. Les variables 32

33 Les constantes #include <stdio.h> //Directive du pré processeur #define PI int main() { float a; //Déclaration d'une constante const int douze=12; a = douze*pi; } Prog. Struct. - C 2. Les variables 33

34 Ce que vous allez faire le + souvent : Afficher à l'écran une variable int Nb_vies=3; printf("pour afficher à l\' écran\n"); printf("il vous reste %d vies",nb_vies); Saisir au clavier le contenu d'une variable int age; printf("entrez votre age :"); scanf("%d",&age); char %c int Prog. Struct. - C %d float %f double %lf 2. Les variables 34

35 Les opérateurs du C les opérateurs de calcul d'assignation d'incrémentation de comparaison logiques bit-à-bit de décalage de bit Les priorités Prog. Struct. - C 3. Les opérateurs 35

36 Les opérateurs de calcul Opérateur Exemple Si Si int x=10; float x=10.0; + d'addition x=x+3; de soustraction x=x-3; * de multiplication x=x*3; / de division x=x/3; % modulo x=x%3; 1 x=3; Met la valeur 3 dans la variable x = d'affectation reste de la division Met la valeur 3.00 dans la variable x = Prog. Struct. - C 3. Les opérateurs 36

37 Les opérateurs d'assignations x=x+2; peut aussi s'écrire x+=2; += additionne deux valeurs et stocke le résultat dans la variable (à gauche) x -= soustrait deux valeurs et stocke le résultat dans la variable *= multiplie deux valeurs et stocke le résultat dans la variable /= divise deux valeurs et stocke le résultat dans la variable x=a=b=3; Prog. Struct. - C x= (a= (b=3)); 3. Les opérateurs 37

38 Les opérateurs d'incrémentation ce sont les + utilisés ++ : incrémentation de 1 x=3; //post-incrémentation y=x++; y=x; x=x+1; //y=3, x=4 //pré incrémentation y=++x; x=x+1; y=x; //x=y=5 -- : décrémentation de 1 y=x--; y=x; x=x-1; //y=5, x=4 Prog. Struct. - C 3. Les opérateurs 38

39 Les opérateurs de comparaison utilisés lors de tests Opérateur Exemple Résultat si x vaut 7 == égalité x==3 Retourne 1 si x est égal à 3, sinon 0 < infériorité stricte x<3 Retourne 1 si x est inférieur à 3, sinon 0 <= infériorité x<=3 Retourne 1 si x est inférieur ou égal à 3, sinon 0 > supériorité stricte x>3 Retourne 1 si x est supérieur à 3, sinon 0 >= supériorité x>=3 Retourne 1 si x est supérieur ou égal à 3, sinon 0!= différence x!=3 Retourne 1 si x est différent de 3, sinon 0 Prog. Struct. - C 3. Les opérateurs 39

40 Les opérateurs bit-à-bit Opérateur & ^ ET OU OU exclusif Prog. Struct. - C Syntaxe 9 & 12 Résultat 1001 & ^ ^ Les opérateurs 40

41 Les opérateurs de décalage de bit Opérateur Syntaxe Résultat 6 << 1 << << 1 = Décalage à gauche 12 x2 6 >> 1 >> Décalage à droite avec conservation du signe >> 1 = /2 En signé : -6 <<1 = -12 Prog. Struct. - C -6 >>1 = Les opérateurs << 1 = >> 1 =

42 Les priorités +++ () -* + << < == & ^ &&?: = [] ++! ~ / % >> <= >= >!= += -= etc. --Prog. Struct. - C 3. Les opérateurs 42

43 4 types d'instructions Nulle ; Expression a=b+1; Prédéfinie condition ou boucle if () Bloc { } Prog. Struct. - C 4. Les structures conditionnelles 43

44 Les structures conditionnelles Les instructions de branchement conditionnel if(condition) if(condition) else switch(variable) case si (vrai) alors sinon... Les instructions de boucle while(condition) do while(condition); for(initialisation;condition;incrementation) Prog. Struct. - C 4. Les structures conditionnelles 44

45 L'instruction if syntaxe : if(condition) { instructions; } FAUX condition VRAI instructions Prog. Struct. - C 4. Les structures conditionnelles 45

46 L'instruction if(condition) else syntaxe : if(condition) { instructions; } else { instructions; } Prog. Struct. - C condition VRAI FAUX instructions instructions 4. Les structures conditionnelles 46

47 L'instruction if else Exemple : if (var1==0) //si var1 vaut 0 { //alors on affiche printf("la variable est nulle\n"); } else //sinon c'est faux { if (var1 > 0) { printf("elle est positive\n"); else { printf("elle est négative"); } Prog. Struct. - C 4. Les instructions conditionnelles } } 47

48 Attention aux forêts d'if() exemple : if (var1!=0) if (var1 > 0) printf("elle est positive\n"); else printf("elle est négative\n"); else se rapporte toujours au if le plus proche Prog. Struct. - C 4. Les instructions conditionnelles 48

49 L'opérateur conditionnel (condition)? instruction_vrai : instruct_faux exemple : x = 3; y = 2; max_xy = ((x>=y)? x : y); = 1 Prog. Struct. - C max_xy = x; 4. Les instructions conditionnelles 49

50 Pour faire plusieurs tests à la fois : les opérateurs conditionnels logiques Opérateur &&! OU logique ET logique NON logique Prog. Struct. - C Syntaxe ((cond1) (cond2)) ((cond1)&&(cond2)) a b a b a&&b!a (!condition) 3. Les opérateurs 50

51 L'instruction de choix multiples : switch Syntaxe : switch (expr) { case const1: instructions; break; case const2: instructions; break; default: instructions; break; } Prog. Struct. - C? ==const1 V instr. 4. Les instructions conditionnelles F F? ==const2 V instr.?!=const1,2 V instr. 51

52 exemple : switch char choix; printf("taper 1 ou 2"); scanf("%c",&choix); switch(choix) { case '1': printf("vous avez tape 1\n"); break; case '2': printf("vous avez tape 2\n"); break; default : printf("je vous ai dit 1 ou 2 pas %c\n",choix); break; } Prog. Struct. - C 4. Les instructions conditionnelles 52

53 Les instructions de boucle : pour répéter les mêmes instructions plusieurs fois Prog. Struct. - C 4. Les instructions conditionnelles 53

54 L'instruction while tant que (condition vraie) syntaxe : condition while(condition) { instructions; } Prog. Struct. - C FAUX VRAI instructions 4. Les instructions conditionnelles 54

55 L'instruction do while faire tant que (condition vraie) syntaxe : do { instructions instructions; }while(condition); Prog. Struct. - C VRAI condition 4. Les instructions conditionnelles FAUX 55

56 L'instruction for() initialisation du compteur de boucle syntaxe : for( init;condition;incrément) { instructions; condition } VRAI exemple : for(i=0;i<100;i++) { printf("%d\n",i); } Prog. Struct. - C FAUX instructions modification du compteur de boucle 4. Les instructions conditionnelles 56

57 Attention aux boucles sans fin ; exemple : F 1 for( ; ; ) { printf("sans fin\n"); } Prog. Struct. - C 4. Les instructions conditionnelles V Affichage "sans fin" ; 57

58 Les instructions de sortie : pourquoi sont-elles utiles? x=1 exemple : x=1; while(x<=10) { a=1/(x-7); printf("%f",a); x++; }? x <= 10 V a=1/(x-7) Que va-t-il se passer quand x=7? Prog. Struct. - C F affichage a 4. Les instructions conditionnelles x=x+1 58

59 Les instructions de sortie : continue x=1 exemple : x=1; while(x<=10) { if (x==7) { printf("division par 0"); x++; continue; } a=1/(x-7); printf("%f",a); x++; } Prog. Struct. - C? x <= 10 F V? x ==7 F V affiche /0 x=x+1 4. Les instructions conditionnelles a=1/(x-7) affichage de a x=x+1 59

60 Les instructions de sortie : break exemple : x=1; while(x<=10) { a = x-7; printf("%f", 1/a); x++; } Que va-t-il se passer quand x=7? Prog. Struct. - C 4. Les instructions conditionnelles x=1 F? x <=10 V a=x-7 affichage 1/a x=x+1 60

61 Les instructions de sortie : x=1 break exemple : x=1; while(x<=10) { a = x-7; if (a == 0) { printf("/ par 0"); break; } printf("%f", 1/a); x++; } Prog. Struct. - C? x <=10 F V a=x-7? a == 0 F V affiche /0 affichage 1/a x=x+1 4. Les instructions conditionnelles 61

62 Les instructions de sortie : return syntaxe : return(expression); exemple : int main() { return(0); } Prog. Struct. - C 4. Les instructions conditionnelles 62

63 Département Génie Civil & Département Mécanique Énergétique Exemples Résolution numérique d'une équation du second degré Programme mystère Affectation et récurrence

64 Résolution de ax2+bx+c=0 : Organisation du programme Initialisation : Acquisition au clavier des valeurs de a,b,c Algorithme de calcul Présentation des résultats sur l écran Prog. Struct. C 5. Ex : équation du 2nd degré 64

65 Soit a,b,c,d, x1 et x2 des réels Lire les coefficients a, b, c si1 a est égal 0 Alors1 Afficher "trop facile C pas du 2nd degré" sinon1 D b*b - 4 a*c si2 D est inférieur à 0 alors2 Afficher "pas de racines réelles" sinon2 si D est égal à 0 3 alors3 x1 -b/2a Afficher x1 sinon3 x1 (-b -sqrt(d))/2a x2 (-b+sqrt(d))/2a Afficher x1 et x2 Fin si3 Fin si2 Fin si1 Prog. Struct. C 5. Ex : équation du 2nd degré 65

66 Résolution de ax2+bx+c=0 : Organigramme Acquisition de a, b, c VRAI a= = 0 FAUX Calcul de D V Affichage C pas 2 degré D<0 F D==0 F V Pas de racines Racine double 2 Racines distinctes fin Prog. Struct. C 5. Ex : équation du 2nd degré 66

67 Le squelette #include <stdio.h> #include <math.h> Directives du pré processeur int main() { /*Déclaration de variables a,b,c,delta,x1,x2*/ /*Entrée des valeurs pour a, b, c*/ /*Test du contenu de a*/ //si a 0 /*Calcul de delta */ /*Test sur delta*/ //si delta <0 -> affichage pas de racines //si delta =0 -> affichage racine double //si delta >0 -> affichage 2 racines réelles } Prog. Struct. C 5. Ex : équation du 2nd degré 67

68 II Fonction main () int main() { /*Déclaration de variables */ float a,b,c; float delta; float x1,x2; /*Fin de la déclaration des variables*/ Prog. Struct. C 5. Ex : équation du 2nd degré 68

69 Fonction main () suite /*Entrée/saisie des valeurs contenues dans les variables a, b, c*/ printf("donnez la valeur de a:"); scanf ("%f",&a); printf("\ndonnez la valeur de b:"); scanf ("%f",&b); printf("\ndonnez la valeur de c:"); scanf ("%f",&c); /* Fin de l'initialisation*/ Prog. Struct. C 5. Ex : équation du 2nd degré 69

70 toujours dans la fonction main () /*Test du contenu de a*/ if (a == 0.0) { printf("\nce n'est pas une eq. du second degré"); } else { /*Ouverture du bloc d'instruction a!= de 0*/ /*Calcul de delta */ delta = b*b-4*a*c; /*Test sur delta*/ if (delta < 0) printf("\npas de racines"); else { /*ouverture du bloc d'instruction delta >=0*/ Prog. Struct. C 5. Ex : équation du 2nd degré 70

71 Fin du main () if (delta == 0) /*Test delta nul*/ { x1 = -b/(2*a); printf ("\nracine double :%f",x1); } else /*Bloc d'intruction delta positif*/ { x1=(-b-sqrt(delta))/a/2; x2=(-b+sqrt(delta))/a/2; printf("x1=%f x2=%f \n",x1,x2); }/*fin delta>0*/ }/*Fin delta <0*/ }/*Fin a!= 0*/ return 0; }/*Fin programme*/ secondeg.c Prog. Struct. C 5. Ex : équation du 2nd degré 71

72 Algorithme mystérieux Soit a, b, r réels ; lire(a) ; lire(b) ; r <- 0 ; tant-que (b 0) si (b est pair) b <- b/2 ; a <- 2*a ; sinon b <- b-1 ; r <- r+a ; fin si fin tant-que écrire(r) ; #include <stdio.h> int main() { float a, b,r; } Prog. Struct. C printf("\nentrez la valeur de a :"); scanf("%f",&a); printf("\nentrez la valeur de b :"); scanf("%f",&b); r=0.0; while (b!=0.0) { if(((int)b)%2 ==0) { b=b/2; a=2*a; } else { b=b-1; r=r+a; } } printf("\n r = %f",r); return(0); 5. Ex : équation du 2nd degré 72

73 Récurrence Mathématiquement une relation de récurrence, c'est : xi+1 = f(xi) avec x0 donné permet de déterminer toutes les valeurs des termes de la suite xk. La valeur d'un nouveau terme se déduit à partir de celle du précédent. Prog. Struct. C 5. Ex : équation du 2nd degré 73

74 Affectation x = expression(x); x x + 3; Le nouveau contenu de x (après l'exécution de l'instruction) est le résultat de l'évaluation de l'expression avec le contenu actuel de x. Prog. Struct. C 5. Ex : équation du 2nd degré 74

75 Exemple : Calculer Sn = ( 1) n i= 1 i+ 1 i Ce qui donne la relation de récurrence : Sk = Sk 1 + Avec S1 = 1 ( 1) k+ 1 k recurrence.c Prog. Struct. C 5. Ex : équation du 2nd degré 75

76 Département Génie Civil & Département Mécanique Énergétique Les pointeurs et les tableaux 1. Les pointeurs 2. Les tableaux Les chaînes de caractères Les tableaux à plusieurs indices Prog. struct. : C III-Les pointeurs et les tableaux 76

77 Les pointeurs : définition Un pointeur est une variable qui contient l'adresse d'une autre variable : d une donnée, d une fonction (fera l'objet du prochain cours). Prog. struct. : C III-Les pointeurs... 77

78 Les pointeurs sur donnée a) Déclaration d un pointeur sur donnée b) Mécanisme de l'adressage indirect c) Arithmétique des pointeurs Prog. struct. : C III-Les pointeurs... 78

79 Déclaration d un pointeur sur donnée La déclaration : Type_donnee *Ident_ptr; Exemple : int *padi; padi est codé sur 4 octets (adressage 32 bits) et contiendra l'adresse d'un entier Prog. struct. : C III-Les pointeurs... 79

80 Mémoire, adresse et pointeur Prog. struct. : C III-Les pointeurs... 80

81 L adressage indirect int i,*padi; i=10; padi = Prog. struct. : C contenant 10 Adresse de i i &i; *padi = 12; contenu contenu padi contenant Adresse de i Adresse de padi III-Les pointeurs... 81

82 L adressage indirect *padi padi = &i; = 12; Prog. struct. : C contenant 12 Adresse de i i int i,*padi; i=10; contenu padi contenu contenant Adresse de i Adresse de padi III-Les pointeurs... 82

83 & et * int i; int *padi; & pour accéder à l'adresse d'une donnée ex : &i le numéro de la case mémoire correspondant à la variable i padi = &i; * pour accéder au contenu d'une adresse ex : *padi permet d'accéder au contenu de l'adresse padi contenu de l'adresse de i i Prog. struct. : C III-Les pointeurs... 83

84 Arithmétique des pointeurs sur données Additions et soustractions d'entiers sur les adresses contenues dans les pointeurs Elles les déplacent de la quantité, qui a été additionnée ou soustraite, multipliée par la taille en octet du type de l'objet pointé. Prog. struct. : C III-Les pointeurs... 84

85 Exemple : contenant contenu int i = 80; double xx=3.1415; double *pad; pad = &xx; ? pad = pad+i; /*pad +i*sizeof(double) c.a.d *8 octets*/ Prog. struct. : C III-Les pointeurs nom i xx pad i xx pad i xx pad 85

86 Les Tableaux 1. Les tableaux mono-dimensionnels 2. Les chaînes de caractères 3. Les tableaux de tableaux Prog. struct. : C III-... Les tableaux 86

87 Qu'est-ce qu'un tableau? C'est une suite de variables de même type, rangées dans un espace contigu de la mémoire. Prog. struct. : C III-... Les tableaux 87

88 Les Tableaux : déclaration et définition Type_donnee Ident_Tab [NbElem]; int, double, char NbElem le nbre d éléments du tableau constante littérale ou symbolique (#define) Ident_Tab le nom du tableau le pointeur sur le tableau contient l'adresse du 1er élément du tableau Prog. struct. : C III-... Les tableaux 88

89 Exemples double Toto [100]; //Toto est un tableau de 100 doubles int MyTab [5] = {1,4,8,7,6}; //MyTab est un tableau de 5 entiers initialisé à : //MyTab [0]= 1,, MyTab [4]= 6 #define NBELEM 512 float SonTab [NBELEM]; //SonTab est un tableau de NBELEM float Prog. struct. : C III-... Les tableaux 89

90 Tableaux à un seul indice et Pointeur int Tab[N]; Tab[0] Tab[1] Tab[2] Tab+i Tab[N-1] &Tab[i] tableau pointeur *(Tab+i) Tab [i] printf("%d",*tab); ou printf("%d",tab[0]); scanf("%d",tab+2); ou scanf("%d",&tab[2]); Prog. struct. : C III-... Les tableaux 90

91 Exemple : Saisir et afficher les éléments d'un tableau Mon premier tableau Prog. struct. : C III-... Les tableaux 91

92 Exemple de Tableau 1D : Les chaînes de caractères (string) Déclaration et initialisation : char chaine[10]; char source[]="ma premier chaine de char"; char lettre[]={'t','a','r','a','t','a','t','a',0}; Format : printf("\nle contenu de source est %s",source); scanf("%s",chaine); ou gets(chaine); Pas besoin de & car le contenu de chaine est une adresse Prog. struct. : C III-... Les tableaux 92

93 Chaînes de caractères char *pfin; char cbonjour [] = "Bonjour"; printf("%s\n", cbonjour); pfin = cbonjour + 3; printf("%s\n", pfin); pfin = cbonjour+strlen(cbonjour); do { printf ("%c",*--pfin); }while (pfin!= cbonjour); Prog. struct. : C III-... Les tableaux 93

94 Pour comprendre 'B' cbonjour 'o' 'n' 'j' pfin 'o' 'r' Ø cbonjour+3 printf("%s\n", cbonjour); pfin = cbonjour + 3; printf("%s\n", pfin); Prog. struct. : C 'u' III-... Les tableaux Bonjour jour 94

95 Pour comprendre 'B' 'o' 'n' 'j' 'o' 'u' 'r' Ø pfin cbonjour strlen(cbonjour) renvoie 7 Adresse pointée par pfin Prog. struct. : C Adresse pointée par cbonjour+7 III-... Les tableaux 95

96 Chaîne de Caractères Exemple!OG Prog. struct. : C III-... Les tableaux 96

97 Tableau de Tableaux Déclaration : Type_donne Indent_Tab_Tab[Nlign][Ncol]; Nlign et Ncol sont des constantes entières littérales ou symbolique. Exemple : float mat[3][3]; int trice[3][3]={{1,1,1}, {1,1,1}, {1,1,1}}; printf("%d %d %d", trice[0][0],trice[1][1],trice[2][2]); scanf("%f",&mat[0][0]); ou scanf("%f",mat[0]); Prog. Struct. - C III -... Les tableaux 97

98 Tableau à deux indices Ligne0 Ligne1... NCol NCol NCol NLign x NCol Prog. Struct. - C III -... Les tableaux 98

99 Tableau à 2 indices et Pointeurs Tab[i] &Tab[i][0] Tab[i] est un pointeur constant sur un tableau de ncol éléments Tab est un pointeur constant sur un tableau d adresses de tableaux de ncol éléments Tab[i][j] *(*(Tab+i)+j) int **pptab; //pptab => pointeur de pointeur int tableau[4][4]; // contiendra l'adresse d'une pptab = tableau; // adresse d'entier Prog. Struct. - C III -... Les tableaux 99

100 Département Génie Civil & Département Mécanique Énergétique Les fonctions Prog. Struct. - C Introduction Mise en œuvre Passage par valeur et par adresse Pour aller plus loin IV - Les Fonctions 100

101 Jusqu'à maintenant, vos programmes ressemblent à ça... #include <stdio.h> #define N 10 int main() { int i; float TAB[N]; Directives au pré-processeur La fonction principale Il ne peut y en avoir qu'une!! printf("entrez les valeurs du tableau : "); for(i=0 ; i<n; i++) { scanf("%f",&tab[i]); } } printf("les valeurs du tableau sont :\n "); for(i=0 ; i<n; i++) { printf("%f",tab[i]); } return 0; Prog. Struct. - C IV - Les Fonctions 101

102 Introduction Une fonction vue par un débutant C'est un morceau de programme qui sert à faire quelque chose de précis. Entrée Fonction = brique Sortie Le but : simplifier le code source, pour ne pas avoir à réécrire le même code plusieurs fois. Prog. Struct. - C IV - Les Fonctions 102

103 Introduction Une fonction vue du processeur C'est un code exécutable terminé par une instruction de retour situé à une certaine adresse en mémoire. À l'appel de la fonction, le processeur exécute le code à partir de l'adresse de la fonction et l'instruction retour le fait revenir à l'instruction suivant l'appel. Des données peuvent être transmises à la fonction en paramètres. Lors du retour, une valeur peut être récupérée/renvoyée. Prog. Struct. - C IV - Les Fonctions 103

104 Instruction i ; Appel MaFonction() ; Adresse Instruction i+2 ; MaFonction Ligne n 1 de MaFonction() La suite de MaFonction() Instruction return(); Prog. Struct. - C IV - Les Fonctions 104

105 Exemple avec la fonction sqrt() : Instruction i ; Adresse X = sqrt(4) ; Instruction i+2 ; 4 sqrt(argument) if (argument>0) Le calcul de sqrt(4) return(2) Prog. Struct. - C IV - Les Fonctions Retour de 2 105

106 Une fonction vue du programmeur c.a.d. vous Les fonctions facilitent l'organisation et la mise au point du programme puisqu'il est divisé en fonctions qui réalisent chacune une partie de la tâche. Un programme est un ensemble de fonctions, qui s'exécute à partir de la fonction main () Un programmeur professionnel bibliothèques de fonctions pour développement de son application. Prog. Struct. - C IV - Les Fonctions utilise des accélérer le 106

107 Instruction i; MaFonction(10,x+y,z); z Instruction_suiv; Passage de x+y paramètres 10 MaFonction { Instructions De MaFonction return; } Prog. Struct. - C IV - Les Fonctions 107

108 Fonction : Mise en œuvre #include <stdio.h> /* 2) Le prototypage */ int main() { /* 3) L'appel */ } /* 1) La définition */ Prog. Struct. - C IV - Les Fonctions 108

109 1) La Définition Localisation : #include <stdio.h> int main() { } //Définition des fonctions Exemples de fonctions : Arguments ou paramètres void AfficheTableau(float *ptab, int nlignes) { int i; for (i=0; i<nlignes ; i++) { printf("%f", *(ptab+i) ); } } double CalcDisc(double Arga,double Argb,double Argc) { return Argb*Argb-4*Arga*Argc; } Prog. Struct. - C IV - Les Fonctions 109

110 2) Le Prototypage Type_Ret Ident_fonc (,Type Argument, ); Exemples de prototypages : void AfficheTableau(float *ptab, int nlignes); double CalcDiscri (double Arga,double Argb,double Argc); Où ça se trouve dans le programme? #include <stdio.h> // c'est ICI pour le prototypage des fonctions!!! int main() { } Prog. Struct. - C IV - Les Fonctions 110

111 3) L'appel de la fonction Paramètres de la fonction { double ValDisc; ValDisc = CalcDisc (a,b,c); } Où fait-on appel à la fonction? Dans n'importe quelle définition de fonction, par ex. dans la fonction main(), y compris dans sa propre définition Récursivité Prog. Struct. - C IV - Les Fonctions 111

112 Ma première fonction \fonctions\exemple1.prj Prog. Struct. - C IV - Les Fonctions 112

113 2 types de fonctions 1) Celles qui ne retournent rien (void). Elles sont également appelées procédures. void nom_fonction(déclarations_d'arguments) EXEMPLE : /* Procédure affichant le produit de deux entiers */ /* Paramètres d'entrée : deux entiers, Type retour : rien */ void affiche_produit (int iexp1, int iexp2) { int iproduit; } iproduit = iexp1 * iexp2; printf ("Le produit de %d et %d est égal à %d", iexp1, iexp2, iproduit); Prog. Struct. - C IV - Les Fonctions 113

114 2 types de fonctions 2) Celles qui retournent quelque chose (elles renvoient une valeur). Pour cela, il faut utiliser l'instruction return : return expression; EXEMPLE : /* Une fonction calculant le produit de deux entiers */ /* Paramètres d'entrée : deux entiers, Type retour : entier */ int calcule_produit (int iexp1, int iexp2) { int iproduit; } iproduit = iexp1 * iexp2; return iproduit; Prog. Struct. - C IV - Les Fonctions 114

115 2 types d'arguments : 1) ceux passés par valeur On indique au compilateur que fonction1 est une fonction qui ne retourne rien et qui admet pour paramètre un double //Prototypage void fonction1(double z); //Définition void fonction1(double z) { z = z * 2.0; printf("z = %lf\n",z); } Lors de l'appel de la fonction, le contenu de la zone repérée par z sera x 2 Prog. Struct. - C On donne le code de la fonction. Le compilateur réserve 8 octets de la pile désignés par z. Pour le moment, le contenu de cette zone est indéterminé. IV - Les Fonctions 115

116 Exécution : Appel de la fonction /*A l'intérieur de la fonction appelante par exemple le main()*/ Zone de 8 octets réservée pour x 20.0 Zone de 8 octets réservée pour z 20.0 double x = 20.0;... fonction1 (x); pile Prog. Struct. - C IV - Les Fonctions 116

117 Lors de l exécution Zone de 8 octets réservée pour x Hors de portée de fonction void fonction1 (double z) { z = z*2.0; } Zone de 8 octets réservée pour z pile Prog. Struct. - C IV - Les Fonctions 117

118 Après l exécution d'une fonction où les paramètres sont passés par valeur Zone de 8 octets réservée pour x de nouveau accessible 20.0 La zone mémoire réservée pour z n est plus accessible, et le contenu de x n a pas été modifié! Prog. Struct. - C IV - Les Fonctions 118

119 2 types d'arguments : 2) ceux passés par adresse On indique au compilateur que : - fonction2 ne retourne rien, - et admet pour paramètre un pointeur sur double //Prototypage void fonction2(double *pz); //Définition void fonction2 (double *pz) { *pz = (*pz)*2.0; } 4 octets désignés par pz sont réservés dans la pile. Ce qui est pointé par pz sera x 2 lors de l'appel de la fonction. Prog. Struct. - C IV - Les Fonctions 119

120 Exécution : Appel de la fonction Zone de 8 octets réservée par x 20.0 //A l'intérieur de la fonction appelante double x = 20.0;... 4 octets réservés par pz fonction2 (&x); &x pile Prog. Struct. - C IV - Les Fonctions 120

121 Au sein de la fonction x inaccessible dans fonction2, mais atteint grâce à l'adressage indirect void fonction2 (double *pz) { *pz =(*pz)*2.0; } 4 octets réservés pour pz &x pile Prog. Struct. - C IV - Les Fonctions 121

122 Après l exécution 8 octets réservés pour x de nouveau accessible 40.0 La zone mémoire réservée pour pz n est plus accessible et le contenu de x a été modifié par adressage indirect! Prog. Struct. - C IV - Les Fonctions pile 122

123 Ma deuxième fonction val_et_adr.prj Exemple Prog. Struct. - C IV - Les Fonctions 123

124 Rappels sur les fonctions 3 étapes pour la mise en œuvre : le prototypage, la définition, et l'appel. Les arguments/paramètres : constante, variable, expression, fonction Si pas void alors return à la fin de la définition Le passage des arguments peut se faire par valeur, ou par adresse lorsqu'on souhaite modifier la variable passée en argument. Prog. Struct. - C IV - Les Fonctions 124

125 Squelette d'un programme Zone des directives de préprocesseur #include Que se cache-t-il dans stdio.h? #define Déclaration des variables de portée fichier Prototypage des fonctions Définition de la fonction main() int main() { } Définition de vos fonctions Prog. Struct. - C IV - Les Fonctions 125

126 ! A RETENIR!!! Pour modifier le contenu d'une variable déclarée dans la fonction appelante par la fonction appelée, il est nécessaire de passer en paramètre l'adresse de cette variable. Donc, dans le prototypage et la définition de la fonction, l'argument doit être un pointeur. Prog. Struct. - C IV - Les Fonctions 126

127 Pour aller plus loin La récursivité La portée des variables : locales ou globales Les tableaux comme arguments Les pointeurs sur fonctions Prog. Struct. - C IV - Les Fonctions 127

128 1) La Récursivité : La fonction s'appelle elle-même! Exemple : double Factorielle (int n); double Factorielle (int n) { if (n <= 0) return 1; } //Prototype Condition d'arrêt return n*factorielle (n-1); Appel récursif factorielle.prj Prog. Struct. - C IV - Les Fonctions 128

129 2) La portée des variables Les variables locales sont temporaires. Elles sont déclarées au sein de fonctions. Les variables globales sont permanentes. Elles sont déclarées en en-tête du programme. varlife.prj Attention à ne pas toutes les appeler n, i ou j!!! Prog. Struct. - C IV - Les Fonctions 129

130 3) Tableaux passés en paramètres à une fonction Tableaux à une dimension (un indice) Type_ret Ident(Type_Tab *ptab, int nsize, ); OU Type_ret Ident(Type_Tab Tab[], int nsize, ); ex : void affichetableau(float *ptab, int Nb); Prog. Struct. - C IV - Les Fonctions 130

131 3) Tableaux passés en paramètres à une fonction Tableaux à deux dimensions (2 indices) Type_ret Ident(Type_Tab Tab[][NCOL], int nlign, ); OU Type_ret Ident(Type_Tab (*ptab)[ncol], int nlign, ); ex : void affiche2d(float *ptab[10], int Nblig); Prog. Struct. - C IV - Les Fonctions 131

132 4) Les Pointeurs sur fonction Déclaration Affectation Utilisation Prog. Struct. - C IV - Les Fonctions 132

133 Déclaration d'un pointeur sur fonction Type_Val_Ret(*Ident_ptr_Fonc)(Signature_fonc); Liste ordonnée des types des arguments de la fonction sans les identificateurs des arguments Signature_fonc Exemple double (*pfonc)(double); Prog. Struct. - C pfonc est un pointeur sur une fonction retournant un double et admettant un double en argument. IV - Les Fonctions 133

134 Initialisation, Affectation d'un pointeur sur fonction double (*pfonc)(double); Nécessite #include <math.h> double (*ptabfonc [3])(double)={sin,cos,tan}; pfonc = MaFonc; Le prototype de MaFonc doit être connu par le compilateur. Prog. Struct. - C IV - Les Fonctions 134

135 Pointeurs sur fonction pointfonct.prj Prog. Struct. - C IV - Les Fonctions 135

136 Département Génie Civil & Département Mécanique Énergétique Les types utilisateurs 1. Les structures 2. Les unions 3. Les énumérations Prog. struct. C

137 Les types utilisateurs servent à créer ses propres types de variables Pour manipuler : - des nombres complexes, - des cordonnées (x,y,z) de points, - des images,... - un ensemble de variables qui peuvent être de type Prog. struct. C V- Les structures 137

138 De la fiche à la structure Pour gérer une clientèle, une bibliothèque, un stock de pièces détachées, etc on a besoin d'informations sur chacun des éléments de l'ensemble. Ces informations sont consignées dans des fiches qui sont remplies grâce à un formulaire unique. C'est le formulaire qui structure les informations contenues dans les fiches. Prog. struct. C V- Les structures 138

139 La fiche d'un élève Polytech Nom : PIGNON Prénom : François Adresse : 12 place du marché Marseille Département Polytech : MT Année : 3 Spécialité :aucune Login : PIGNMT12 Password : juste12 Francois.Pignon@polytech.univ-mrs.fr Prog. struct. C V- Les structures 139

140 Traduction Informatique Formulaire Type de donnée Structure struct modèle Fiche Variable de type struct objet Fichier Tableau ou liste de Ensemble variables de type d'objets struct Prog. struct. C V- Les structures 140

141 Déclaration du nouveau type de donnée Syntaxe : struct nom_struct { type_1 ident_champ1; type_2 ident_champ2,ident_champ3; type_n ident_champm; }nom_var1,...,nom_varp; Prog. struct. C V- Les structures 141

142 Déclaration du nouveau type de donnée Localisation : Après les include #include <stdio.h> struct nom_struct { type_1 ident_champ1; type_2 ident_champ2,ident_champ3; }; //Les prototypes des fonctions int main() { } Prog. struct. C V- Les structures 142

143 Exemple 1 : Définition du type POLYTECH struct { char char char int int int char char char }; POLYTECH Nom[80]; Prenom[80]; Adresse[200]; Depart; Annee; Spec; Login[10]; Passw[8]; [30]; Prog. struct. C 9 champs avec des identificateurs pas contigus mais à la suite V- Les structures 143

144 Déclaration d'une donnée Syntaxe : struct nom_struct nom_var; Exemple : struct POLYTECH UnEleve; //variable struct POLYTECH TabElev[250]; //tableau struct POLYTECH *pelev; //pointeur Prog. struct. C V- Les structures 144

145 Accès aux champs de la donnée Syntaxe : nom_struct.nom_var ex : UnEleve.Annee = 1; Si pointeur sur type nom_struct : nom_ptr_struc->nom_var (*nom_ptr_struc).nom_var exemple : TabElev->Annee = 1; Prog. struct. C V- Les structures 145

146 Ex 1 : accès aux champs de POLYTECH int main() { struct POLYTECH TabElev[250]; struct POLYTECH UnEleve; printf("\nnom de l'élève :"); scanf ("%s",uneleve.nom); TabElev[10] = UnEleve; (TabElev+10)->Annee = 1; } Prog. struct. C V- Les structures 146

147 Exemple 1 :Utilisation suite Arguments et paramètres d'une fonction, sans la structure : void NewElev(char *pnom,char *pprenom,char *padr,int *pdepart,int *pannee,int *pspec,char *lplogin,char *ppass,char *p ); En utilisant la structure : void NewElev(struct POLYTECH *pnouveau); structures/polytech.prj Prog. struct. C V- Les structures 147

148 Définition de type composé Structure nommée struct tcomplex { double Re; double Im; }; ce nouveau type suit le modèle struct tcomplex typedef struct tcomplex Complex; définition d'un nouveau type Prog. struct. C V- Les structures Le nom de ce nouveau type est Complex 148

149 Exemple 2 : Représentation des nombres complexes Complex zi = {0,1.0}; Complex *pz; Complex ztabval [10]; Déclarations des variables zi, pz et ztabval de type Complex pz = &zi; pz->re = sqrt(2)/2; pz->im = pz->re; ztabval[0].re = 11.5; Utilisation de ces variables (ztabval+5)->im = sqrt(2); Prog. struct. C V- Les structures 149

150 Union Ensemble de variables de type différents pouvant alternativement occuper la même zone mémoire. Syntaxe de déclaration : la même que pour une structure... union jour { char lettre; int numero; }; Le stockage en mémoire : tous les champs de l'union commencent à la même adresse. La taille de l'union est donc celle du plus grand champ. On peut donc atteindre une même zone mémoire de plusieurs façons. Prog. struct. C V-... Les unions 150

151 Énumération Permet de définir un type par la liste des valeurs qu'il peut prendre. Syntaxe : enum modele { constante_1,constante_2,,constante_n }; Exemple : enum tbool{faux,vrai}; typedef enum tbool BOOLEEN;... enum jours_ouv{lundi,mardi,mercredi,jeudi,vendredi}; Prog. struct. C V-... les énumérations 151

152 Exemple enum tdepart{gc,gii,me,mt}; typedef enum tdepart DEPART; POLYTECH *pelev; /*Mettre une adresse valide dans pelev*/ pelev->depart = MT; Prog. struct. C V- Les structures 152

153 Département Génie Civil & Département Mécanique Énergétique La gestion de fichiers Les Flots Ouverture / Fermeture d'un fichier Lecture / Écriture dans un fichier Formats

154 1 Fichier sur 1 Disque Chemin d'accès "path" : C:\Repertoire\SousRep1\...\SousRepN\Nom.ext Structure arborescente de répertoire, sous répertoires, Unité logique Nom du Fichier et son extension Le mode d'accès Les éventuels attributs de protection. Prog. struct. C VI- La gestion de fichiers 154

155 Gestion de Fichiers pour le programmeur Transférer une ou des informations d'une source vers une destination. Donc gérer un flot d'informations. Prog. struct. C VI- La gestion de fichiers 155

156 Flot d informations Source : Destination : Mémoire de masse Mémoire de masse Clavier Port Série Mémoire Flot Flot//stream stream octets Console Port Série Mémoire Carte SD Carte SD Prog. struct. C VI- La gestion de fichiers 156

157 La direction du Flot Dans la gestion d'un flot, au moins l'une des destinations est la mémoire de l'ordinateur. Pour écrire dans le fichier des informations stockées dans la mémoire, il faut accèder au fichier en écriture. Le flot est en sortie. Pour lire les informations du fichier et les stocker dans la mémoire, on accède au fichier en lecture. Le flot est en entrée. Prog. struct. C VI- La gestion de fichiers 157

158 <stdio.h> standard input output C'est là qu'est définie la structure FILE! Prog. struct. C VI- La gestion de fichiers 158

159 Ouverture/Fermeture de flots en C (ANSI) Pour toutes les fonctions de gestion des flots, il faut un pointeur sur la structure FILE définie dans stdio.h. Le flot est ouvert en appelant fopen() qui affecte une valeur à cette variable pointeur. Le flot est fermé par fclose(). Prog. struct. C VI- La gestion de fichiers 159

160 Les Modes d'ouverture Les flots/fichiers peuvent être ouverts en mode : Lecture "r" la destination existe "r+" possibilité d'écriture Ecriture "w" la destination est créée ou ouverte "w+" possibilité de lecture Ajout "a" écriture à la fin du fichier "a+" possibilité de lecture Si la lecture ou l'écriture doivent être faits en binaire, il faut ajouter "b" au mode (ex : "rb"). Prog. struct. C VI- La gestion de fichiers 160

161 Les Fonctions générales Création, ouverture d'un fichier FILE *fopen(const char *nom,const char *mode) Fermeture d'un fichier FILE *fclose(file *stream) Création d'un fichier temporaire FILE *tmpfile(void) Test de fin d'un fichier int feof(file *stream) Prog. struct. C VI- La gestion de fichiers 161

162 Exemple #include <stdio.h> int main() { //pointeurs sur fichier FILE *pfascii,*pfbin; pfascii = fopen("totoascii.txt","w"); pfbin = fopen("totobin.moi","wb"); fclose(pfascii); fclose(pfbin); } Prog. struct. C texte_bin.prj VI- La gestion de fichiers 162

163 Les Flots prédéfinis 3 pointeurs sur structure FILE sont gérés par le système d'exploitation : stdin gère les informations envoyées par le clavier (entrée). stdout gère les informations dirigées vers l'écran (sortie). stderr dirige les informations générées par les erreurs vers un périphérique de sortie. Prog. struct. C VI- La gestion de fichiers 163

164 Exemple #include <stdio.h> int main() { fprintf(stdout,"1ere alternative à printf()\n"); fputs("\n En voila une autre",stdout); } ecran.prj Prog. struct. C VI- La gestion de fichiers 164

165 Écriture dans un fichier Ecriture au format texte : int fprintf(file *pfile,const char *format, ) /* écrit la chaîne formatée dans le fichier, retourne le nbre de caractères écrits, ou un nombre <0 si erreur */ int fputc(int caractere,file *pfile) /* écrit le caractère dans le fichier, le caractère écrit est retourné, EOF sinon */ int fputs(const char *s,file *pfile) /* la chaîne s dans le fichier, et retourne une valeur positive ou nulle, EOF s'il y a eu une erreur */ Ecriture au format binaire : size_t fwrite(const void *source,size_t taille, size_t nombre,file *pfile) /* écrit nombre objets, chacun ayant la taille indiquée, les uns à la suite des autres à l'adresse indiquée par source. Renvoie le nombre d'objets écrits, qui peut être inférieur au nombre demandé (en cas d'erreur) */ Prog. struct. C VI- La gestion de fichiers 165

166 Lecture dans un fichier Lecture au format texte : int fscanf(file *pfile,const char *format, ) /* Lit la chaîne formatée dans le fichier et retourne le nombre de caractères luts, ou un nombre <0 si erreur */ int fgetc(file *pfile) /* Renvoie le caractère suivant sur le flot indiqué, ou EOF si la fin du fichier est atteinte ou si une erreur survient. C'est une vraie fonction */ int fgets(char *s,int n,file *pfile) /* Lit des caractères dans le fichier et les place dans l'espace pointé par s. S'arrête lorsqu'elle a lu n-1 caractères ou lorsqu'elle a rencontré un caractère '\n' */ Lecture au format binaire : size_t fread(void *dest, size_t taille, size_t nombre, FILE *pfile) /* Lit sur le flot indiqué le nombre objets, chacun ayant la taille indiquée, et les copie les uns à la suite des autres dans l'espace pointé par destination */ Prog. struct. C VI- La gestion de fichiers 166

167 Positionnement dans un fichier Déplacement : int fseek(file *pfile,long deplacement,int orig) avec orig = SEEK_SET le début du fichier, SEEK_CUR la position courante, SEEK_END la fin du fichier Re-positionnement au début du fichier : void rewind(file *pfile) ConnaîtreA la position dans le fichier : u tilis *flot, fpos_t *ptr) void fgetpos(file e r av ec p réca: Fixer la position dans le fichier utiofpos_t *ptr) void fsetpos(file *flot, const n!! /*Place dans ptr la position courante dans le fichier indiqué en vue de son utilisation par fsetpos*/ Prog. struct. C VI- La gestion de fichiers 167

168 Renommer ou Supprimer un fichier Renommer int rename(const char *anciennom, const char *nouveaunom); Supprimer int remove(const char *FichieraSuppr); Prog. struct. C VI- La gestion de fichiers 168

169 Formats d'écriture %[flags][width][.precision][{h L l}]type flags (-,+,0,,#) : mise en forme du texte width : Longueur minimum du texte.precision : Nombre de chiffres après la virgule (.) type : 1) Flottants e,e,f,g,g 2) Entiers généralisés c,d,i,o,u,x,x 3) Chaînes de caractères s [{h L l}] en option h pour court, l ou L pour long Prog. struct. C VI- La gestion de fichiers 169

170 Formats de lecture %[*] [width] [{h l }]type Même signification de width et de type. * signifie que la lecture suivante sera faite, mais non transférée en mémoire. Prog. struct. C VI- La gestion de fichiers 170

171 Flots textes formatés En écriture : int printf (const char *format, ) int fprintf (FILE *pfile,const char *format, ) int sprintf (char *pdesti,const char *format, ) En lecture : int scanf (const char *format, ) int fscanf (FILE *pfile,const char *format, ) int sscanf (const char *psource, const char *format, ) Prog. struct. C VI- La gestion de fichiers 171

172 Exemple 1 : texte formaté -> fichier binaire... int main() { FILE *srce; /* fichier de texte */ FILE *dest; /* fichier binaire */... if ((srce = fopen(nomfich, "r")) == NULL) exit(erreur_ouverture);... for (;;) //tant qu'il y a des choses à lire { if ((nb=fscanf(srce, "%s %s\n", art.nom, art.prenom))!= 2) break;... }... } Prog. struct. C fichier.prj VI- La gestion de fichiers 172

173 Exemple 2 : les formats #include <stdio.h> int main() { const double pi=4*atan(1); printf("%lf\n",pi); printf("%1.3lf",pi); } formats.prj Prog. struct. C VI- La gestion de fichiers 173

174 Département Génie Civil & Département Mécanique Énergétique Programmation modulaire (multi-fichiers) Généralités Mise en œuvre Macros Variables de portée fichier

175 Généralités Un logiciel doit être conçu comme la réunion de plusieurs modules, Chaque module regroupe des fonctions de même nature (Graphisme, Algorithmes principaux, interface utilisateur, ), Un seul des modules contient la fonction main (). Prog. Struct. C IX - Prog. Modulaire 175

176 Les avantages En séparant les fonctionnalités du projet en unités le moins possible interdépendantes, on simplifie la mise au point du logiciel qui se fait module par module. La compilation est beaucoup plus rapide, car seuls les modules modifiés sont compilés. Certains modules (s ils sont bien conçus) peuvent être ré-utilisés dans d autres projets. Prog. Struct. C IX - Prog. Modulaire 176

177 La mise en œuvre Programme monofichier En-tête Programme modulaire Fichiers.h Module Fonction main Fichier.c Sans fonction main() Définition de vos fonctions Prog. Struct. C Fichiers.c IX - Prog. Modulaire 177

178 Conséquences : Le fichier *.prj s'agrandit Prog. Struct. C IX - Prog. Modulaire 178

179 Le contenu de l'en-tête Directives de pré-processeur : #xxxx Ex : #include <stdio.h> ou #define PI Déclaration des types utilisateurs : struct Ex : struct POLYTECH Définition des variables de portée fichier (globales) Ex : static int panelhandle; Déclaration des variables définies de manière externe Ex : extern Déclaration des prototypes des fonctions Ex : void ma_fonction(void); Mon_Fichier.h Prog. Struct. C IX - Prog. Modulaire 179

180 La directive #include Syntaxe : #include <stdio.h> #include "[nomchemin\ \]nomfichier.h" Action : Inclure Avant la compilation, le pré-processeur met en lieu et place de la directive le fichier.h Prog. Struct. C IX - Prog. Modulaire 180

181 La directive #include /* C'est le contenu du fichier.h qui est recopié en en-tête du fichier.c */ #include "fichier.h" int main() { } /*fichier.c */ Prog. Struct. C IX - Prog. Modulaire 181

182 La directive #define Syntaxe : #define BUFSIZE 512 #define PI Action : Rechercher/Remplacer Partout où la chaîne de caractères BUFSIZE est rencontrée, elle est remplacée par 512 La compilation se fera sur le code transformé! Prog. Struct. C IX - Prog. Modulaire 182

183 #define pour la taille des tableaux #define NMAX int main() { float vect[nmax]; Le programme est développé avec 10 pour remplacer NMAX. Après le programmeur pourra mettre for(i=0 ; i<nmax; i++) {... } } Prog. Struct. C IX - Prog. Modulaire 183

184 Comment faire une Macro? Au sein d'un #define Exemple : #define MAX(a,b) (((a)>(b))?(a):(b)) MAX(expr1,expr2) sera utilisée comme (((expr1)>(expr2))?(expr1):(expr2)) Les parenthèses servent à fixer les priorités. Prog. Struct. C IX - Prog. Modulaire 184

185 Comment faire une Macro? Autre Exemple : #define MAJEUR(age) if (age>=18)\ printf("vous etes majeur"); int main() { MAJEUR(22); } Lors de l'exécution il s'affichera : Vous etes majeur Prog. Struct. C IX - Prog. Modulaire 185

186 Avantages des macros Remplacer des fonctions courtes. Le temps d exécution du programme puisqu il n y a pas d appel de fonction. Mais le code exécutable est plus long. Les compilateurs modernes utilisent les macros pour générer automatiquement du code répétitif à la place du programmeur. Prog. Struct. C IX - Prog. Modulaire 186

187 Définition de constantes #define CONSTANTE Il est alors possible d'utiliser #ifdef et #endif #define WINDOWS #ifdef WINDOWS //code source pour Windows #endif #ifdef LINUX //code source pour Linux #endif Prog. Struct. C IX - Prog. Modulaire 187

188 Les variables globales en programmation modulaire Une variable globale a la portée et la durée de vie du programme. Prog. Struct. C IX - Prog. Modulaire 188

189 Les variables globales en programmation modulaire Pour être reconnue par le compilateur dans d'autres modules du programme, elle doit : - y être déclarée mais sans réservation de mémoire, - et précédée de extern dans un fichier.h à inclure dans les fichiers.c, où cette variable est utilisée. Prog. Struct. C IX - Prog. Modulaire 189

190 Les variables globales (suite) Si, on veut restreindre la portée de cette variable au seul module où elle a été définie, on fait précéder sa définition de static. Dans d autres modules, une autre variable de portée fichier de même identificateur pourra être définie sans conflit de déclaration. Prog. Struct. C IX - Prog. Modulaire 190

191 Exemple modulaire.prj Prog. Struct. C IX - Prog. Modulaire 191

192 Département Département Génie Génie Civil Civil & & Département Département Mécanique Mécanique Énergétique Énergétique Allocation Dynamique de Mémoire 1. Généralités 2. Les fonctions malloc() & Cie

193 Quand l'utiliser? Si le nombre d objets à stocker dans le tableau n est connu qu à l exécution, il faut avoir recours à l allocation dynamique. Pour les tableaux à plusieurs indices même si les dimensions sont connues à priori. Pour stoker des données volumineuses. Prog. struct. C X - Alloc. dyn. mem. 193

194 Déclaration de variables = Demande d'allocation mémoire int mavariable = 12; 1) le programme demande à Windows la permission d'utiliser un peu de mémoire, 2) Windows répond en indiquant où votre programme peut stocker mavariable il lui alloue une adresse 3) lorsque la fonction est terminée, mavariable est automatiquement supprimée de la mémoire. Votre programme dit à Windows "Je n'ai plus besoin de cet espace mémoire" Prog. struct. C X - Alloc. dyn. mem. 194

195 Connaître la taille des variables grâce à sizeof() sizeof(char) 1 sizeof(short int) 2 sizeof(int) 4 sizeof(double) 8 sizeof(int *) 4 Prog. struct. C X - Alloc. dyn. mem. 195

196 Configuration de la mémoire pendant l exécution Tas Programme Variables statiques Le tas (heap) est la mémoire inutilisée lors de l exécution du programme. Pile OS (windows par ex.) C'est là que va se faire l'allocation dynamique de mémoire. Prog. struct. C X - Alloc. dyn. mem. 196

197 La Mise en œuvre Il faut : Une variable de type pointeur sur la donnée à stocker Utiliser la fonction malloc() ou une similaire pour affecter une adresse à cette variable. Libérer la mémoire lorsque l'on en n'a plus besoin avec la fonction free(). Prog. struct. C X - Alloc. dyn. mem. 197

198 La fonction malloc() Prototype dans <stdlib.h> ou <malloc.h> : void * malloc (size_t nsize); Appel : typedef struct POLYTECH_EL ELP; ELP *ptabelev; int nnbel; ptabelev = (ELP*)malloc(nNbEl* sizeof(elp)); On type l'adresse Prog. struct. C Taille d'une variable de type ELP X - Alloc. dyn. mem. 198

199 La fonction malloc() Erreur mémoire insuffisante : Quand la demande ne peut pas être satisfaite, la fonction malloc()retourne le pointeur NULL. D où le test d erreur : if (ptabelev == NULL) { Gestion Erreur } Prog. struct. C X - Alloc. dyn. mem. 199

200 Allocation pour un tableau à 2 dimensions Exemple : double **MAT;... MAT = malloc(nl * sizeof(double *)); if (MAT == NULL) return 0; for (i = 0; i < nl; i++) { MAT[i] = malloc(nc * sizeof(double)); } Prog. struct. C X - Alloc. dyn. mem. 200

201 La fonction calloc() Prototype : void *calloc(size_t nelem,size_t Taille_Elem); Appel : ptabelev =(struct POLYTECH_EL*)calloc (nnbel, sizeof(struct POLYTECH_EL)); Mise à 0 des octets réservés. Si mémoire insuffisante réagit comme malloc() Prog. struct. C X - Alloc. dyn. mem. 201

202 La fonction realloc() Prototype : void *realloc (void *ptralloc,size_t New_Size); Si la taille de la mémoire précédemment allouée doit être réduite. Le contenu du pointeur et de la mémoire sont préservés. Prog. struct. C X - Alloc. dyn. mem. 202

203 La fonction free() Prototype : void free (void * pmemalloue); Appel : free(ptabelev); Action : Libère la zone mémoire allouée par une des fonctions de la famille malloc(). Doit s utiliser dès que l on n a plus besoin de cette mémoire. Prog. struct. C X - Alloc. dyn. mem. 203

204 La fonction free() Si la fonction free() a pour paramètre la valeur NULL, elle s exécute sans erreur et sans rien faire. si l'adresse passée à free() ne résulte pas d un appel! à une fonction de la famille malloc(), le résultat est catastrophique!!! Prog. struct. C X - Alloc. dyn. mem. 204

205 Exemple allocat.prj Prog. struct. C X - Alloc. dyn. mem. 205

206 Les listes chaînées - Ça sert à organiser ses données en mémoire. - C'est beaucoup plus flexible qu'un tableau!!! - mise en œuvre avec des structures... Prog. struct. C X - Alloc. dyn. mem. 206

207 Listes chaînées vs Tableaux Une fois créé, on ne peut plus le modifier! 1 Tableau Prog. struct. C X - Alloc. dyn. mem. 207

208 Listes chaînées vs Tableaux 1 Liste Prog. struct. C Une fois créée, on peut la modifier! X - Alloc. dyn. mem. 208

209 Construction d'une liste chaînée Exemple : une liste de nombres ou d'étudiants Comment créer un? typedef struct Element Element; struct Element { int nombre; Element *suivant_sur_la_liste; }; Prog. struct. C X - Alloc. dyn. mem. 209

210 Pour contrôler l'ensemble de la liste, il faut : typedef struct Liste Liste; struct Liste { Element *premier_sur_la_liste; }; Puis il faut écrire les fonctions gérant la liste : - pour l'initialiser, - pour ajouter un élément, - pour supprimer un élément, - pour afficher le contenu de la liste, - pour supprimer la liste entière.. Prog. struct. C X - Alloc. dyn. mem. 210

211 Exemple de fonction pour l'initialisation : Liste *initialisation(void) { Liste *liste=malloc(sizeof(*liste)); Element *element=malloc(sizeof(*element)); } if (liste==null element==null) { exit(exit_failure); } element->nombre=0; element->suivant_sur_la_liste=null; liste->premier_sur_la_liste=element; Prog. struct. C X - Alloc. dyn. mem. 211

212 Pour en savoir plus A la bibliothèque en salle 112 : H. Garreta, C: Langage, bibliothèque, applications, InterEditions (1992) B. Kernighan et D. Ritchie, Le Langage C, Masson (Dernière Edition) - Pour se perfectionner. B. Gottfried, Programmation en C, Série Schaum, Pour les exercices. H. Schildt, Référence Complète C++, First Interactive (2002). Progr. struct. - C Bibliographie 212

213 Pour en savoir plus Cours de C sur le Web : Henri Garreta IDE en open source Dev-C++ À télécharger à partir de Progr. struct. - C Sources 213

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers. I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Programmation en langage C

Programmation en langage C Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

INITIATION A LA PROGRAMMATION

INITIATION A LA PROGRAMMATION 2004-2005 Université Paris Dauphine IUP Génie Mathématique et Informatique INITIATION A LA PROGRAMMATION PROCEDURALE, A L'ALGORITHMIQUE ET AUX STRUCTURES DE DONNEES PAR LE LANGAGE C Maude Manouvrier La

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

SUPPORT DE COURS. Langage C

SUPPORT DE COURS. Langage C Dpt Informatique 2010-2011 SUPPORT DE COURS Langage C Semestre 1 par : «CaDePe» Marie-Françoise Canut Marianne de Michiel André Péninou Table des Matières 1 Généralités...8 1.1 Introduction aux langages

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel) Algorithmes et Programmes Introduction à l informatiquel! Vie d'un programme! Algorithme! Programmation : le langage! Exécution et test des programmes Chapitre : Algorithmes et Programmes 2 Cycle de vie

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Rappels Entrées -Sorties

Rappels Entrées -Sorties Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE C.Crochepeyre MPS_SGF 2000-20001 Diapason 1 Les couches logiciels réponse SGF requête matériel matériel Requêtes E/S Système E/S Pilote E/S Interruptions Contrôleur

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Programmation Classique en langage C

Programmation Classique en langage C DI GALLO Frédéric Programmation Classique en langage C Cours du Cycle d Approfondissement CNAM ANGOULEME 2000-2001 DI GALLO Frédéric Page 1 01/04/01 PROGRAMMATION CLASSIQUE : LANGAGE C DI GALLO Frédéric

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence Licence Algorithmique & Langage C Paternité - Pas d'utilisation Commerciale Partage des Conditions Initiales à l'identique 2.0 France Vous êtes libres : * de reproduire, distribuer et communiquer cette

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Introduction au Langage de Programmation C

Introduction au Langage de Programmation C Faculté Polytechnique de Mons Service d'informatique Introduction au Langage de Programmation C Mohammed Benjelloun 1 ère Candidature Année académique 2003-2004 Avant-propos Ces notes permettent de se

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Programmation en langage C Eléments de syntaxe

Programmation en langage C Eléments de syntaxe Programmation en langage C Eléments de syntaxe Université Paul Sabatier IUP Systèmes Intelligents L2 Module Informatique de base 2 Initiation à la programmation en langage C Isabelle Ferrané SOMMAIRE I-

Plus en détail

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation

Plus en détail

Cours d Informatique

Cours d Informatique Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1

Plus en détail

Programmation C. J.-F. Lalande. 15 novembre 2012

Programmation C. J.-F. Lalande. 15 novembre 2012 Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à

Plus en détail

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval École Nationale Supérieure de Techniques Avancées Programmation en C Pierre-Alain Fouque et David Pointcheval E-mail : Pierre-Alain.Fouque@ens.fr Web : http://www.di.ens.fr/~fouque/ Table des matières

Plus en détail

Langage Éric Guérin 5 octobre 2010

Langage Éric Guérin 5 octobre 2010 Langage Éric Guérin 5 octobre 2010 Langage C TABLE DES MATIÈRES Table des matières 1 Introduction 7 1.1 Historique........................................... 7 1.2 Architecture matérielle....................................

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Le langage C. Introduction, guide de reference

Le langage C. Introduction, guide de reference Le langage C Introduction, guide de reference Ce document est une présentation du langage de programmation C, de sa syntaxe et de ses spécificités. Il est destiné essentiellement à servir de mémo-guide

Plus en détail

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012 Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012 2011/2012 Pr. Ben Mamoun 1 Plan du cours (1) 1. Introduction 2. Types, opérateurs

Plus en détail

INF111. Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1/inf111/ Massih-Reza Amini

INF111. Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1/inf111/ Massih-Reza Amini Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1// Massih-Reza Amini Université Joseph Fourier Laboratoire d Informatique de Grenoble 2/52 Introduction Structures de contrôle

Plus en détail

Le système de gestion des fichiers, les entrées/sorties.

Le système de gestion des fichiers, les entrées/sorties. Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia Ministère de l Enseignement Supérieur, de la Recherche Scientifique et de la Technologie Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Djerba SUPPORT DE COURS

Plus en détail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, C++, JAVA ET REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~18 + 1 cours de 3 heures)

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~18 + 1 cours de 3 heures) Méthodes de programmation systèmes UE n NSY103 Notes de cours Code de l UE : NSY103 Titre de la formation : Méthodes de programmation systèmes Ouvert : Ouvert Type de diplôme : Unité de valeur CNAM. Nombre

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS BTS IRIS Cours et Travaux Pratiques Programmation C A. Lebret, TSIRIS, Lycée Diderot, 1995/06 en conformité avec le référentiel du BTS IRIS Activité Codage et Réalisation Tâches T3.3, T3.4 et T3.5 Temps

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Programmation en C - Sommaire

Programmation en C - Sommaire Programmation en C - Sommaire PROGRAMMATION EN C - SOMMAIRE... 1 CHAPITRE 0 : INTRODUCTION :... 5 I) NOTATIONS ET SYMBOLES :... 5 II) C, LA NAISSANCE D'UN LANGAGE DE PROGRAMMATION PORTABLE... :... 6 1)

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Gestion de la mémoire

Gestion de la mémoire 433 43 3 Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Introduction à l informatique en BCPST

Introduction à l informatique en BCPST Introduction à l informatique en BCPST Alexandre Benoit BCPST L informatique en BCPST «L enseignement de l informatique en classes préparatoires de la filière BCPST a pour objectif d introduire puis de

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

Cours de programmation avancée. Le langage C. Université du Luxembourg 2005 2006

Cours de programmation avancée. Le langage C. Université du Luxembourg 2005 2006 Université du Luxembourg 2005 2006 Cours de programmation avancée. Le langage C Sébastien Varrette Version : 0.4 Nicolas Bernard 2 Table des matières

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail