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

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

Traduction Algorithme en langage C

Présentations similaires


Présentation au sujet: "Traduction Algorithme en langage C"— Transcription de la présentation:

1 Traduction Algorithme en langage C
Iris - LT Saint Michel

2 Traduction Algorithme en langage C
Cette présentation ne peut pas être exhaustive Pour trouver des informations quelconques supplémentaires, il faut se reporter à l'aide en ligne complète de l'éditeur P. Trebosc - L.T. Saint Michel - Annecy

3 Traduction Algorithme en langage C
Caractéristique du langage C mis au point par D.Ritchie et B.W.Kernighan au début des années 70. l'ANSI (abréviation de American National Standards Institute) a décidé de normaliser ce langage pour donner ce que l'on appelle le C-ANSI. P. Trebosc - L.T. Saint Michel - Annecy

4 Traduction Algorithme en langage C
Caractéristique du langage C Langage comportant des instructions et des structures de haut niveau (contrairement à l'assembleur par exemple). Il génère un code très rapide grâce à un compilateur très performant. P. Trebosc - L.T. Saint Michel - Annecy

5 Traduction Algorithme en langage C
Caractéristique du langage C Langage très portable. Un programme écrit en C en respectant la norme ANSI est portable sans modifications sur n'importe quel système d'exploitation disposant d'un compilateur C : Windows, UNIX,etc. P. Trebosc - L.T. Saint Michel - Annecy

6 Traduction Algorithme en langage C
Caractéristique du langage C Langage « faiblement typé » : les types de données qu'il manipule sont très restreints, et proches de la représentation interne par le processeur : par exemple, le type 'Chaîne de caractères' n'existe pas en C. P. Trebosc - L.T. Saint Michel - Annecy

7 Traduction Algorithme en langage C
Commentaires : symboles // et /*.....*/ //Commentaire pour ligne /*Commentaire pour un bloc de lignes */ P. Trebosc - L.T. Saint Michel - Annecy

8 Traduction Algorithme en langage C
Symbole de compilation Le symbole ; est ajouté à la fin de chaque ligne de code Ce symbole précise au compilateur qu'il a une ligne de code complète qu'il peut compiler Si la ligne est trop longue on peut l'écrire sur deux lignes pour améliorer la lisibilité P. Trebosc - L.T. Saint Michel - Annecy

9 Traduction Algorithme en langage C
Déclarations des types variables et constantes Entier  int int age; Réel  float float surface;  double double surface; Caractère  char char monCar; Booléen : vrai ou faux  bool bool MonBooleen; (n'existe pas en C normalisé ANSI) P. Trebosc - L.T. Saint Michel - Annecy

10 Traduction Algorithme en langage C
Exemples de déclarations des types sous Builder entier sur 8 bits signed char entier sur 16 bits short entier sur 32 bits int entier non signé 8 bits unsigned char entier non signé 16 bits unsigned short entier non signé 32 bits unsigned int true/false bool Caractère non signé 8 bits char nombre en virgule flottante 64 bits double nombre en virgule flottante 80 bits long double nombre en virgule flottante 32 bits float P. Trebosc - L.T. Saint Michel - Annecy

11 Traduction Algorithme en langage C
Définition d'une constante #define UNECONSTANTE 2 Nom Valeur P. Trebosc - L.T. Saint Michel - Annecy

12 Traduction Algorithme en langage C
Inclusion d'une bibliothèque de fonctions #include <stdio.h> fonctions d'entrées-sorties standards #include <math.h> fonctions mathématiques usuelles Elles contiennent des instructions utilisées dans le programme Le nom du fichier entre les symboles <> pour indiquer que c'est une bibliothèque du compilateur. P. Trebosc - L.T. Saint Michel - Annecy

13 Traduction Algorithme en langage C
Elles doivent être chargées avant toute utilisation d'une de ses fonctions L'éditeur Builder fait un certain nombre de chargement par défaut, mais il le signale P. Trebosc - L.T. Saint Michel - Annecy

14 Traduction Algorithme en langage C
Vous pouvez de même inclure vos propres fichiers. La syntaxe est la suivante : #include "MonFichierDe Fonction.c" Attention si vous incluez ce fichier avec un gestionnaire de projet, vous ne devez pas ré-inclure le fichier dans le code  double déclaration P. Trebosc - L.T. Saint Michel - Annecy

15 Traduction Algorithme en langage C
Le programme débute par la ligne main() Configuration de main() Un main() peut accepter des arguments argv saisie au lancement du programme. Ces arguments peuvent ensuite être utilisés. Un main() peut retourner un paramètre. int main(int argc, char* argv[]) P. Trebosc - L.T. Saint Michel - Annecy

16 Traduction Algorithme en langage C
Le contenu (les instructions) de chaque fonction est encadré par des accolades main() { Bloc d'instructions ..... } P. Trebosc - L.T. Saint Michel - Annecy

17 Traduction Algorithme en langage C
Le contenu (les instructions) de chaque fonction est encadré par des accolades int main(int argc, char* argv[]) { Bloc d'instructions ..... return 0; } P. Trebosc - L.T. Saint Michel - Annecy

18 Traduction Algorithme en langage C
En C il n'y a pas de différence entre la notion de variable et de constante. Elles se déclarent dans le programme immédiatement après la ligne main() P. Trebosc - L.T. Saint Michel - Annecy

19 Traduction Algorithme en langage C
Instruction d'entrées-sorties Entrée : saisie formatée d'une variable au clavier (& : symbole d'adresse) scanf("%<type>", &<nomVariable>); Exemple : saisie d'un réel scanf("%f", &Rayon); Il peut être nécessaire de vider le flux d'entrée lorsque l'on veut être sûr de ne plus avoir de caractères qui puissent provoquer des effets de bord pour la suite de l'exécution du programme : fflush(stdin); P. Trebosc - L.T. Saint Michel - Annecy

20 Traduction Algorithme en langage C
Instruction d'entrées-sorties Sortie : affichage formatée d'une variable à l'écran printf("%<type>", <nomVariable>); Exemple : Ecriture d'un réel printf("%f", Rayon); P. Trebosc - L.T. Saint Michel - Annecy

21 Traduction Algorithme en langage C
Exemples de type : %d : entier %f : réel Retour à la ligne dans une écriture : \n Exemple pour l'écriture, on compose la ligne à afficher en intégrant la ou les variables et le retour à la ligne dans la chaîne de caractères printf("La surface du cercle de rayon : %d est : %f m²\n",rayon, surface); P. Trebosc - L.T. Saint Michel - Annecy

22 Traduction Algorithme en langage C
Transtypage : Dans certains cas, il faut changer temporairement (pour une opération par exemple) le type d'un donnée Exemple Calcul d'une moyenne, avec i un index int i, somme; float moyenne; moyenne = somme/i printf("moyenne = %f", moyenne); //affiche 1 si somme = 3 et i = 2 moyenne = somme/(float)i //transtypage en flottant de i printf("moyenne = %f", moyenne); //affiche 1,5 si somme = 3 et i = 2 moyenne = somme/2 moyenne = somme/2.0 P. Trebosc - L.T. Saint Michel - Annecy

23 Traduction Algorithme en langage C
Affectation d'une variable : symbole = float Diametre, Rayon; #define PI 3.14; Diametre = PI * Rayon; P. Trebosc - L.T. Saint Michel - Annecy

24 Traduction Algorithme en langage C
Structure de condition simple : if (condition) { Bloc d'instructions de traitement si la condition est vraie ... } P. Trebosc - L.T. Saint Michel - Annecy

25 Traduction Algorithme en langage C
Structure de condition simple : Pour une instruction il n'est pas nécessaire de mettre les accolades if (condition) instruction de traitement si la condition est vraie; P. Trebosc - L.T. Saint Michel - Annecy

26 Traduction Algorithme en langage C
Structure de condition complexe : if (condition) { Bloc d'instructions de traitement si la condition est vraie ... } else{ Bloc d'instructions de traitement si la condition est fausse P. Trebosc - L.T. Saint Michel - Annecy

27 Traduction Algorithme en langage C
Structure de condition complexe : if (condition) { Bloc d'instructions de traitement si la condition est vraie ... } elseif (condition){ Bloc d'instructions de traitement si la condition est fausse P. Trebosc - L.T. Saint Michel - Annecy

28 Traduction Algorithme en langage C
Structure de choix multiples : switch ( <variable commutateur> ) { case <expression constante> : <instruction>; [break;] //Optionnel . default : <instruction>; } variable commutateur peut être un entier en C sous builder P. Trebosc - L.T. Saint Michel - Annecy

29 Traduction Algorithme en langage C
Structure de boucle d'itération : Pour int i; for (i =1; i <= 10; i++) { Bloc d'instructions de traitement de la boucle ... } Si une seule instruction les accolades ne sont pas nécessaires P. Trebosc - L.T. Saint Michel - Annecy

30 Traduction Algorithme en langage C
Structure de boucle TantQue: while (condition) { Bloc d'instructions de traitement de la boucle ... } P. Trebosc - L.T. Saint Michel - Annecy

31 Traduction Algorithme en langage C
Structure de boucle répéter: do{ Bloc d'instructions de traitement de la boucle ... } while (condition); P. Trebosc - L.T. Saint Michel - Annecy

32 Traduction Algorithme en langage C
Attente de la saisie d'un caractère quelconque au clavier Instruction : getch() Très utile pour stopper le programme qui reprendra après avoir appuyé sur une touche quelconque du clavier Nécessite la bibliothèque conio.h P. Trebosc - L.T. Saint Michel - Annecy

33 Traduction Algorithme en langage C
Pour attendre la saisie d'un caractère au clavier Instruction : kbhit() Très utile pour tester la valeur du caractère saisi au clavier while (kbhit() == 0) Nécessite la bibliothèque conio.h P. Trebosc - L.T. Saint Michel - Annecy

34 Traduction Algorithme en langage C
Pour effacer l'écran Instruction : clrscr() Très utile au début de l'application pour avoir une fenêtre vierge P. Trebosc - L.T. Saint Michel - Annecy

35 Traduction Algorithme en langage C
Visibilité des variables Déclaration au dessus du code les variables peuvent être utilisées partout dans le code : à l'intérieur de main() et des fonctions : variable globale Dans le main() ou dans une fonction, elles peuvent être utilisées uniquement à l'intérieur du code : variable locale P. Trebosc - L.T. Saint Michel - Annecy

36 Traduction Algorithme en langage C
Fichier de déclaration des variables globales Si on a trop de variables globales, on peut les déclarer dans un fichier d'extension .h qui sera chargé en dehors du code des fonctions. #include "nomcode.h " entre " " c'est un fichier du répertoire du projet P. Trebosc - L.T. Saint Michel - Annecy

37 Traduction Algorithme en langage C
Déclaration des tableaux Tableau à une dimension Type <nomTableau>[Taille] Tableau à n dimensions Type <nomTableau>[Taille1][Taille2]...[Taillen ] P. Trebosc - L.T. Saint Michel - Annecy

38 Traduction Algorithme en langage C
Déclaration des tableaux Tableau à une dimension float Temperature[24]; Tableau à 2 dimensions float Matrice[2][2]; P. Trebosc - L.T. Saint Michel - Annecy

39 Traduction Algorithme en langage C
Affectation des variables d'un tableau float Matrice[2][2] = {1,2,3,4}; Donne le tableau :   P. Trebosc - L.T. Saint Michel - Annecy

40 Traduction Algorithme en langage C
Les pointeurs Rappel : un pointeur est une variable qui contient l'adresse d'une variable. Le langage C utilise beaucoup les pointeurs lorsque : On passe un tableau ou une chaîne de caractères On souhaite modifier plusieurs variables dans une fonction ou procédure P. Trebosc - L.T. Saint Michel - Annecy

41 Traduction Algorithme en langage C
Les pointeurs Déclaration d'un pointeur : type *<nom pointeur> Exemple int *a; *a = 10; printf("contenu *a : %d, adresse a : %p\n", *a,a); P. Trebosc - L.T. Saint Michel - Annecy

42 Traduction Algorithme en langage C
Les pointeurs Exemple int tab[10]; int *a; a = tab; La variable tab contient l'adresse en mémoire du tableau, c'est donc un pointeur vers le tableau a est donc égale à l'adresse du tableau. a=tab est équivalent à a = &tab[0] P. Trebosc - L.T. Saint Michel - Annecy

43 Traduction Algorithme en langage C
//Exemple sur les pointeurs //Exemple 1 : Utilisation des valeurs pointeurs int main(int argc, char* argv[]) { //Déclaration d'une variable int Valeur; //Déclaration d'un pointeur int *PointeurValeur; //Dans la variable pointeure on place l'adresse de la variable PointeurValeur = &Valeur ; Valeur = 566; printf("La valeur est : %d \n", Valeur); printf("Le pointeur de la valeur est : %d \n", &Valeur); printf("La valeur à l'adresse contenue dans le pointeur est : %d \n", *PointeurValeur); getch(); return 0; } P. Trebosc - L.T. Saint Michel - Annecy

44 Traduction Algorithme en langage C
//Procédure d'échange de deux variables EchangeValeur(int *ptrValeur1, int *ptrValeur2){ int ValeurTemp; ValeurTemp = *ptrValeur1; *ptrValeur1 = *ptrValeur2; *ptrValeur2 = ValeurTemp; } //exemple 2 : Usage des pointeurs comme paramètre de fonction int main(int argc, char* argv[]) { //Déclaration des variables int Valeur1, Valeur2; Valeur1 = 566; Valeur2 =577; printf("Valeur1 : %d Valeur2 : %d avant échange\n", Valeur1, Valeur2); EchangeValeur(&Valeur1,&Valeur2); printf("Valeur1 : %d Valeur2 : %d après échange\n", Valeur1, Valeur2); getch(); return 0; P. Trebosc - L.T. Saint Michel - Annecy

45 Traduction Algorithme en langage C
Exemple d'utilisation des pointeurs : Les fonctions de recherche dans les tableaux utilise les pointeurs (<stdlib.h>) La fonction lfind fait une recherche séquentielle d'une valeur donnée dans un tableau. Elle retourne un pointeur vers la valeur recherchée. void *lfind(const void *key, const void *base, size_t *num, size_t width, int (_USERENTRY *fcmp)(const void *, const void *)); key : pointeur vers la valeur recherchée num : pointeur vers le nombre d'élément que contient le tableau width : nombre d'octets nécessaires à chaque élément du tableau fcmp : pointeur vers une deuxième fonction qui compare deux éléments d'un tableau P. Trebosc - L.T. Saint Michel - Annecy

46 Traduction Algorithme en langage C
Les chaînes de caractères Une chaîne est une suite de caractères ASCII Lorsqu'une chaîne de caractères est codée en mémoire, elle se termine systématiquement par le caractère d'échappement '\0' qui marque la fin de la chaîne. Une chaîne de caractères contient donc un caractère de plus P. Trebosc - L.T. Saint Michel - Annecy

47 Traduction Algorithme en langage C
Les chaînes de caractères Lorsque vous définissez une constante de type chaîne, le compilateur C lui affecte automatiquement le caractère NULL. Lorsqu'un programme constitue une chaîne (à partir d'une saisie au clavier par exemple), le programme doit placer lui même le caractère NULL à la fin de la chaîne pour la matérialiser. P. Trebosc - L.T. Saint Michel - Annecy

48 Traduction Algorithme en langage C
Les chaînes de caractères Les fonctions présentées utilisent la bibliothèque string.h #include <string.h> P. Trebosc - L.T. Saint Michel - Annecy

49 Traduction Algorithme en langage C
Les chaînes de caractères Déclaration d'une chaîne de caractères char <NomChaîne>[taillechaîne+1] char maChaine[9]; Initialisation d'une chaîne de caractères : une chaîne est placée entre les symboles " " maChaine="maChaîne"; Initialisation d'une chaîne de caractères sans spécifier la taille : char maChaine[]="maChaîne"; P. Trebosc - L.T. Saint Michel - Annecy

50 Traduction Algorithme en langage C
Manipulation des chaînes avec les pointeurs Déclaration : //Pointe sur le premier élément de la chaîne char *X; Char *Y = "Bonjour" Affectation : X = "Bonjour" P. Trebosc - L.T. Saint Michel - Annecy

51 Traduction Algorithme en langage C
Manipulation des chaînes avec les pointeurs //Création d'un tableau qui pointe vers 7 //chaînes Char *jours[7]; //Pour accéder à ce tableau avec un pointeur char **ptr_jours; P. Trebosc - L.T. Saint Michel - Annecy

52 Traduction Algorithme en langage C
Opérations sur les chaînes de caractères Lecture d'une chaîne de caractères X : scanf("%s", &X); //si X n'est pas déclarée comme pointeur scanf("%s", X); //si X est déclarée comme pointeur Ecriture d'une chaîne de caractères X : printf("%s\n", X); On dispose aussi des fonctions gets(X) et puts(x) quelque soit le mode de déclaration P. Trebosc - L.T. Saint Michel - Annecy

53 Traduction Algorithme en langage C
Opération sur les chaînes de caractères Copie d'une chaîne de caractères X dans une chaîne de caractères Y : fonction strcpy strcpy(y,x); Longueur d'une chaîne X : fonction strlen() int longueur; char texte[ ] = "Bonjour"; longueur = strlen(texte) //Longueur = 7 La longueur correspond au nombre de caractères de la chaîne sans le dernier caractère \0 P. Trebosc - L.T. Saint Michel - Annecy

54 Traduction Algorithme en langage C
Opération sur les chaînes de caractères Concaténation de deux chaînes de caractères X et Y Char *chaine1 = "Bonjour"; Char *chaine2 = "le monde"; Char *X; X = strcat(chaine1, chaine2); puts(X); //Affiche "Bonjour le monde" P. Trebosc - L.T. Saint Michel - Annecy

55 Traduction Algorithme en langage C
Opération sur les chaînes de caractères Comparaison de deux chaînes de caractères X et Y : fonction strcmp(X,Y) char X[ ] = "123"; char Y[ ] = "234"; char Z[ ] = "123"; int resultat; resultat = strcmp(X,Y) //resultat = -1 resultat = strcmp(Y,X) //resultat = 1 resultat = strcmp(X,Z) //resultat = 0 P. Trebosc - L.T. Saint Michel - Annecy

56 Traduction Algorithme en langage C
Opération sur les chaînes de caractères Conversion minuscules – majuscules d'une chaîne X : fonction strupr(X) char X[ ] = "bonjour"; char *Y; Y = strupr(X) //Y égale BONJOUR P. Trebosc - L.T. Saint Michel - Annecy

57 P. Trebosc - L.T. Saint Michel - Annecy
//Exemple de fonction renvoyant un pointeur //Paramètre entrant : pointeur sur la chaîne en minuscule //Paramètre sortant : pointeur sur la chaîne en majuscule char *ConvMajuscule(char *LachaineMinuscule){ int LongueurChaine = strlen(LachaineMinuscule); int i; //Variable type chaîne pour ne pas changer la chaîne transmise char *AdresseDepartChaine; //les deux adresses de départ des chaînes sont égales, donc les deux chaînes seront équivalentes AdresseDepartChaine = LachaineMinuscule; for (i=0; i<LongueurChaine; i++) //AdresseDepartChaine[i]=toupper(LachaineMinuscule[i]); //équivalent à AdresseDepartChaine[i] = toupper(*LachaineMinuscule++); return (AdresseDepartChaine); } int main(int argc, char* argv[]) { char *chaineMinuscule = "bonjour le monde"; char * chaineMajuscule; printf("La chaîne d'origine en minuscule avant la transformation est : %s \n", chaineMinuscule); chaineMajuscule = ConvMajuscule(chaineMinuscule); printf("La chaîne d'origine la transformation est : %s \n", chaineMinuscule); printf("La chaîne convertie en majuscule est : %s \n", chaineMajuscule); getch(); return 0; P. Trebosc - L.T. Saint Michel - Annecy

58 Traduction Algorithme en langage C
Enumération ou type énuméré : enum //Définition d'un type enum booleen{faux,vrai}; enum booleen MonBool; MonBool = vrai; ou enum booleen{faux, vrai} MonBool; P. Trebosc - L.T. Saint Michel - Annecy

59 Traduction Algorithme en langage C
Définition d'une énumération (type énuméré ) : enum avec définition d'un type de variable //Définition d'un type typedef enum {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}jours; jours LesJoursSemaines; LesJoursSemaines = samedi; printf("les variables enumérés sont des entiers\n"); printf("Jour de la semaine : %d \n",LesJoursSemaines); P. Trebosc - L.T. Saint Michel - Annecy

60 Traduction Algorithme en langage C
Les structures de données //Définition d'une structure struct agenda{ char Nom[20]; char NumeroTel[15]; }; struct agenda UnAgenda; strcpy(UnAgenda.Nom ,"Charpentier"); strcpy(UnAgenda.NumeroTel," "); printf("Nom : %s Numero de telephone : %s \n",UnAgenda.Nom, UnAgenda.NumeroTel); P. Trebosc - L.T. Saint Michel - Annecy

61 Traduction Algorithme en langage C
Les structures de données //Pour modifier les membres d'une structure, le programme passe à la //fonction un pointeur vers la structure. //Dans la fonction, les commandes déréférencent les membres du pointeur //en utilisant l'opérateur d'indirection * //Pour modifier un membre de structure, le C commence dans les parenthèses, //obtenant ainsi la position de la structure. //Ensuite le C ajoute à cette adresse le décalage du membre donnée //Le c permet aussi d'utiliser le format équivalent suivant do{ scanf("%s", (*MonAgenda).Nom); }while(strlen(MonAgenda->Nom) > 20); P. Trebosc - L.T. Saint Michel - Annecy

62 Traduction Algorithme en langage C Les fichiers
Il existe deux grandes catégories de fichiers de données Fichiers textes Fichiers binaires P. Trebosc - L.T. Saint Michel - Annecy

63 Traduction Algorithme en langage C Les fichiers
Fichiers textes Il sont organisés en succession de ligne identiques : Enregistrements Chaque ligne contient les mêmes informations : les champs. Le fichier et de type séquentiel Un enregistrement peut contenir toutes sortes d'informations les unes à la suite des autres : entiers, réels, chaîne de caractères etc. P. Trebosc - L.T. Saint Michel - Annecy

64 Traduction Algorithme en langage C Les fichiers
Fichiers textes Exemple : carnet d'adresses qui contient dans chaque enregistrement le nom, le prénom, l'adresse etc. d'une personnes Un enregistrement "DUPOND";"Jean"; "13 rue Jean Jaures";"7500";"PARIS" P. Trebosc - L.T. Saint Michel - Annecy

65 Traduction Algorithme en langage C Les fichiers
Fichiers textes Entre chaque enregistrement sont stockés les deux caractères CR (code Ascii 13) et LF (code Ascii 10) Cela permet de signaler le passage à la ligne suivante Cela est géré automatiquement par le langage de programmation P. Trebosc - L.T. Saint Michel - Annecy

66 Traduction Algorithme en langage C Les fichiers
Fichiers textes Avant une écriture d'un enregistrement les données à stocker doivent être transformées (conversion et concaténation) en chaîne de caractères. Après un lecture la chaîne de caractères obtenue doit être traitée (découpage et conversion) pour obtenir les données réelles. P. Trebosc - L.T. Saint Michel - Annecy

67 Traduction Algorithme en langage C Les fichiers
Fichiers textes Les enregistrements peuvent être structurés de deux manières pour retrouver les données (les champs) à l'intérieur d'un enregistrement. Par un délimiteur Par des champs des tailles identiques : à largeur fixe P. Trebosc - L.T. Saint Michel - Annecy

68 Traduction Algorithme en langage C Les fichiers
Fichiers textes Exemple avec délimiteur Un point virgule DUPOND;Jean; 13 rue Jean Jaures;7500;PARIS Une tabulation DUPOND Jean 13 rue Jean Jaures PARIS P. Trebosc - L.T. Saint Michel - Annecy

69 Traduction Algorithme en langage C Les fichiers
Fichiers textes Exemple avec largeur fixe DUPOND Jean 13 rue Jean Jaures PARIS 20 octets On retrouve chaque champ en décomposant la chaîne de caractères P. Trebosc - L.T. Saint Michel - Annecy

70 Traduction Algorithme en langage C Les fichiers
Fichiers textes, Comparaison des deux méthodes Délimiteur Moins de place en mémoire lent à largeur fixe plus de place en mémoire rapide P. Trebosc - L.T. Saint Michel - Annecy

71 Traduction Algorithme en langage C Les fichiers
Les fichiers binaires Les octets, quels qu'ils soient, sont écrits les uns à la suite des autres. Exemple : fichiers sons, une image, un programme exécutable. P. Trebosc - L.T. Saint Michel - Annecy

72 Traduction Algorithme en langage C Les fichiers
Type d'accès pour les fichiers textes Séquentiel : on lit le fichier ligne par ligne. On accède à une donnée que si on a lu la données précédente (lent) Direct : on accède directement à l'enregistrement de son choix en précisant le numéro de l'enregistrement (rapide mais lourd). Indexé : mixe des deux accès ci-dessus (plus compliqué, pour gros fichiers) P. Trebosc - L.T. Saint Michel - Annecy

73 Traduction Algorithme en langage C Les fichiers
Bibliothèque nécessaire #include <conio.h> P. Trebosc - L.T. Saint Michel - Annecy

74 Traduction Algorithme en langage C Les fichiers
Instructions pour accès séquentiel Création d'un fichier texte : FILE *f; Ouverture en lecture : f = fopen("c:\\monfichier.txt","r"); Ouverture en écriture : f = fopen("c:\\monfichier.txt","w"); Ouverture en écriture ajout (append): f = fopen("c:\\monfichier.txt","a"); P. Trebosc - L.T. Saint Michel - Annecy

75 Traduction Algorithme en langage C Les fichiers
Instructions pour accès séquentiel accès formaté (plus puissant mais plus complexe) enregistrement de types autres qu'une chaîne de caractères Ecriture enregistrement x (entier) avec retour à la ligne : fprintf(fichier,"<format>",<information>); fprintf(f,"%d\n",x); Lecture : fscanf(fichier,"<format>",<&information>); fscanf(f,"%d\n",&x); P. Trebosc - L.T. Saint Michel - Annecy

76 Traduction Algorithme en langage C Les fichiers
Instructions pour accès séquentiel Lorsque le dernier enregistrement du fichier est atteint, une variable signale la fin du fichier : feof(f) = 1 P. Trebosc - L.T. Saint Michel - Annecy

77 Traduction Algorithme en langage C Les fichiers
Instruction pour accès séquentiel Fermeture d'un fichier : fclose(f); P. Trebosc - L.T. Saint Michel - Annecy

78 Traduction Algorithme en langage C Les fichiers
Instruction pour accès direct Positionnement sur un octet du flux int fseek(FILE *stream, long offset, int whence); paramètre whence SEEK_SET 0 File beginning SEEK_CUR 1 Current file pointer position SEEK_END 2 End-of-file P. Trebosc - L.T. Saint Michel - Annecy

79 Traduction Algorithme en langage C Les fichiers
Instruction pour accès séquentiel Lecture d'un enregistrement principe On positionne le pointeur de flux sur l'indice (l'octet) On lit l'enregistrement à partir de l'indice Option de lecture à partir du début du fichier fseek(fichier,position,0); Utilisé particulièrement pour les enregistrements à taille fixe P. Trebosc - L.T. Saint Michel - Annecy

80 Traduction Algorithme en langage C Les fichiers
Instructions pour accès direct Lecture d'un enregistrement principe On a un enregistrement de 20 caractères (octets) On veut lire le 5 ème enregistrement La valeur de position est : 4 x = 79 fseek(fichier,81,0); P. Trebosc - L.T. Saint Michel - Annecy


Télécharger ppt "Traduction Algorithme en langage C"

Présentations similaires


Annonces Google