Traduction Algorithme en langage C

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Rappels C.
LANGAGE C LP A2I IUT St DIE
ALGORITHMIQUE ET PROGRAMMATION C
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Les types composés Les enregistrements.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure.
SQL partie 5 1 LMD create – update – primary key secondary key.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
A quoi sert la programmation? - indispensable pour plusieurs métiers. - passion. But du cours: - suite du cours Prog. Imp. I - fichiers, pointeurs, modularité.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 27/09/2016 Algorithmique & Langage.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Tableaux en C Mardi 2/05.
Le Langage JavaScript pour le web
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Synthèse TP 2 Codeblock 1 Les objectifs de ce tp sont :
Ajouter le code dans une page html
Module de gestion des tournées de livraison
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Cours de programmation en langage C (Norme ANSI)
Langage C Structure d'un programme Types Lire Ecrire Tester
Représentation des nombres réels
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Pas de variable globale
Algorithmiques Abdelbasset KABOU
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Allocation dynamique de mémoire
Pointeurs et langage C.
Programmation en C++ IO en C++/SL
Algorithmique et programmation de modèles numériques
Javadoc et débogueur Semaine 03 Version A17.
AO (Architecture des ordinateurs)
Principes de programmation (suite)
Séances de soutien Projet informatique 2A
Accès aux fichiers en C.
Semaine 11 Les pointeurs (suite)
Les fonctions.
Les fonctions.
SIF-1053 Architecture de ordinateurs
Arguments de la ligne de commande
Les chaînes de caractères et le langage C
Algorithmique & Langage C
6. Les types utilisateurs et les structures de données
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Cours N°9: Algorithmiques Les Tableaux 1
Programmation en C++ C++ de base
Calcul Scientifique Initiation à SCILB
Eléments de base du langage C
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Principes de programmation (suite)
QCM Pointeurs 2 / Q1 On considère la déclaration suivante : char *ptc ; ptc peut contenir : 1) des valeurs de variables de type caractère 2) des adresses.
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
Analyse et programmation langage ADA
Python Nicolas THIBAULT
Eléments de base du langage C
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

Traduction Algorithme en langage C Iris - LT Saint Michel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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,"04 50 67 67 89"); printf("Nom : %s Numero de telephone : %s \n",UnAgenda.Nom, UnAgenda.NumeroTel); P. Trebosc - L.T. Saint Michel - Annecy

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

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

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

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

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

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

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

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 75000 PARIS P. Trebosc - L.T. Saint Michel - Annecy

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

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

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

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

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

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

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

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

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

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

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

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 20 +1 = 79 fseek(fichier,81,0); P. Trebosc - L.T. Saint Michel - Annecy