Programmation Structurée Langage C
|
|
- Didier Lheureux
- il y a 8 ans
- Total affichages :
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 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étailINITIATION 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étailProgrammation 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étailLicence 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étailDans 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étailUE 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étailProgrammation 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étailIntroduction 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étailCours 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étailDE 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étailLe 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étailProgrammation 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étailInfo0101 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étailAlgorithmique 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étailBases 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étailChapitre 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étailInitiation. à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étailINITIATION 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étail1/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étailUE 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étailCours 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étailI. 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étailCentre 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étailBrefs 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étailINTRODUCTION 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étailSUPPORT 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étailCours 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étailLe 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étailLangage 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étailIntroduction à 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étailAlgorithmes 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étailUEO11 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étailInitiation à 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étailTravaux 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étailLes 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étailLes 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étailGé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étailSYSTÈ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étailIN 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étailLes 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étailClaude 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étailRappels 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étailProgrammation 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étailConventions 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étailSYSTÈ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étailChap 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étailTP 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étailProgrammation 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étailLes 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étailSeance 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étailAlgorithmique & 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étailJava 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étailLe 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étailStructure 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étailIntroduction 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étailLES 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étailAlgorithmique, 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étailProgrammation 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étailNotes 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étailCours 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étailProgrammation 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étailProgrammation 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étailLangage É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étailProgrammer 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étailProgrammation 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étailL 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étailCours 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étailLe 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étailLe 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étailINF111. 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étailLe 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étailPour 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étailCours 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étailCours 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étailSTAGE 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étailAnis 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étailCOMPARAISONDESLANGAGESC, 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étailIntroduction à 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étailCours 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étailPlan 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étailCompression 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étailChapitre 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étailCours 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étailMé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étailAnne 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étailBTS 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étailNotions 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étailMISE 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étailProgrammation 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étailV- 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étailGestion 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étailTravaux 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étailALGORITHMIQUE 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étailINF 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étailCours 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étailIntroduction à 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étailProgrammation 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étailI00 É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étailCours 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étailTp 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