Algorithmique et langage C

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Les fonctions A quoi ça sert ?
Introduction au Langage C,C++
Stockage de données.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Gestion de FICHIERS.
C.
Suite à de nombreuses remarques concernant le projet de structures de données 'Gestion d'un Aéroport' , voici un polycopié de cours concernant la gestion.
FLSI602 Génie Informatique et Réseaux
Cours de C GTR 2003/ COURS DE PROGRAMMATION EN LANGAGE C ALBERT Arnauld.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
FICHIERS.
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Fichiers et entrées / sorties Sauvegarde des programmes dans des fichiers. Compilation. Lecture et écriture de données dans des fichiers. Formatage des.
Lecture et écriture de données
IFT Structures de données
SEANCE 10 Python Entrée et sortie de fichiers Lycée Louis Vincent Lundi 20 janvier
Operations de Base en C++ sur les Fichiers
IFT 6800 Atelier en Technologies d’information
Les Fichiers.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Manipulation des fichiers dans le langage VB
1 Le fichier séquentiel Suite finie déléments dun même type Exemples : – fichier des livres dune bibliothèque – enregistrements sur un magnétophone – ensemble.
LANGAGE C LP A2I IUT St DIE
Plan cours La notion de pointeur et d’adresse mémoire.
Les fichiers texte en C++
L’essentiel du langage C
Animateur : Med HAIJOUBI
Jean-Michel ILIE - novembre SIL - module M12 Programmation Internet en PHP SIL module M12 Jean-Michel Ilié IUT Paris 5 - département informatique.
Les pointeurs L'opérateur &.
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
1 FICHIERS. 2 Les Fichiers  Les "entrées-sorties conversationnelles" échangent des informations entre le programme et l'utilisateur.  Le terme de fichier.
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
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.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Les fichiers 1ère partie
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Introduction au langage C Les entrées-sorties
Mettre en formeExaminerManipuler Les fonctions printf() et sprintf Le traitement de chaîne de caractère La fonction printf() formate le contenu d'une chaîne.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Les bases de l’algorithmique
Les entrées-sorties élémentaires
8PRO107 Éléments de programmation Les adresses et les pointeurs.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
Tour rapide d’un premier programme SPARC v9
Philippe Gandy - 1 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Langage de Programmation Orientée Objet : C++
Introduction à l’utilitaire
Chapitre 9 Les caractères.
Plan Des éléments de programmation en C Des éléments de programmation en C++ Des éléments de programmation en Java.
Client/Server Socket. Client/Serveur.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
1 Rappel et compléments de la programmation en langage C.
Informatique 2A Langage C 4ème séance
A quoi sert la programmation? - indispensable pour plusieurs métiers. - passion. But du cours: - suite du cours Prog. Imp. I - fichiers, pointeurs, modularité.
Transcription de la présentation:

Algorithmique et langage C

Les entrées / sorties Les bases

Entrée / Sortie… même combat! previously in algorithmic Entrée / Sortie… même combat! Une entrée / sortie est un flot (fichier par exemple). Un flot est composé : d’une suite d’octet (le contenu du fichier). d’une tête de lecture. de booléen renseignant sur le dépassement fichier. NB:Les entrée / sorties standard (stdin, stdout et stderr) sont des flots définit du début à la fin du processus. en C on défini un flot (stream en anglais) mon_fichier comme suit FILE * mon_fichier; Ces flots sont soit accéder en lecture en écriture en écriture / lecture

fonction d’ouverture d’un fichier FILE * fopen ( const char * filename, const char * mode ); ou filename est le nom du fichier. Avec mode : r  read Ouvrir un fichier existant pour lecture sur erreur retourne NULL w  write Écraser le fichier existant et créer un nouveau fichier vide pour écriture sur erreur retourne NULL a  append Ouvrir un fichier existant pour écriture, s’il n’existe pas créer un nouveau fichier vide et adresser la tête de lecture à la fin du fichier sur erreur retourne NULL

fonction d’ouverture d’un fichier Sous mode : b  mode binaire (sinon mode ASCII) Applicable uniquement sur les modes et sous modes déclaré à gauche de lui +  ouvrir dans le mode lecture/écriture manquant Le fichier est ouvert en lecture/écriture Donc, si je veux ouvrir un fichier appeler C:\titi\test.txt en mode lecture binaire et écriture ASCII et le mettre dans mon flot mon_fichier précédement déclaré, je fais mon_fichier=fopen("c:\\titi\\test.txt","rb+"); Si j’avais voulu la sortie en binaire aussi, j’aurais fait r+b

fonction de fermeture et fin du flot int fclose ( FILE * stream ); Retourne zéro si tout c’est bien passé, EOF sinon Donc dans notre cas du flot mon_fichier, on fera : fclose( mon_fichier ); int feof ( FILE * stream ); Retourne zéro si la fin de fichier n’est pas atteinte, sinon renvoi différent de zéro.

Au total pour bien utiliser un flot //déclaration du flot FILE * mon_fichier; //ouverture du flot mon_fichier=fopen("c:\\titi\\test.txt","rb+"); //traitement du flot (lecture, écriture, voir la suite) … //fermeture du flot fclose(mon_fichier);

fonction simple de lecture d’un flot Lecture d’un caractère char fgetc(FILE *stream); Retourne le caractère lu si tout c’est bien passé, EOF sinon Lecture d’une ligne (ou num caractères) char * fgets(char * str, int num, FILE * stream); Met dans le contenu pointé par str : les num premiers caractères du flot s’il ne rencontre pas de fin de ligne ou de fin de fichier (EOF = end of file), auquel cas il s’arrête et retourne le pointeur str. Lecture de x octets size_t fread(void *destination, size_t size, size_t number, FILE *stream); lit les size*number octets de stream et les met dans destination.

fonction simple d’écriture d’un flot écriture d’un caractère char fputc(char c, FILE *stream); Retourne le caractère lu si tout c’est bien passé, EOF sinon écriture d’une chaine de caractère int fputs(const char * str, FILE * stream); Écrit les caractères à partir de l’adresse str jusqu’au prochain caractère ‘\0’ soit le caractère nul. Retourne une valeur non négative si succès, EOF sinon. Écriture de x octets Size_t fwrite(const void *source, size_t size, size_t number, FILE *stream); Écrit les size*number octets de source dans stream.

Les chaines de caractères Une chaine de caractère est soit un pointeur, soit un tableau, exemple : char * modifiable_string = "non modifiable value"; char lenght_fixe_string[ ] = "modifiable value"; char * const non_modifiable_string = "non modifiable value"; En fait en c, il positionne en fin de la chaîne un caractère signifiant la fin de la chaine, le caractère nul (à ne pas confondre avec le NULL des pointeurs) que l’on représente dans une chaîne par \0 (zéro) caractère de fin de chaîne Mais il existe aussi \" guillemet \\ barre oblique inverse (antislash) \a signal sonore (bip) \n retour à la ligne \t tabulation

fonction de lecture/écriture formatée int fprintf ( FILE * stream, const char * format, ... ); Lecture formatée int fscanf ( FILE * stream, const char * format, ... ); Le format est inclus ou extrait du flot stream, c’est un chaîne de caractère. les … représente la liste possible des variables à formater dans la chaine format. Il sont spécifié dans le format par le symbole % associé à des spécifieurs.

Les formats (%spécifieur) spécifieur sortie Exemple c un caractère c d or i entier décimal signé 392 e notation Scientifique (mantise/exposant) 3.9265e+2 E notation Scientifique (mantise/Exposant) 3.9265E+2 f Décimal à virgule flottante 392.65 g utiliser le plus petit de %e ou %f 392.65 G utiliser le plus petit de %E ou %f 392.65 o octal signé 610 s chaine de caractère sample u entier décimal non signé 7235 x entier hexadécimal non signé (minuscule) 7fa X entier hexadécimal non signé (majuscule) 7FA p adresse de pointeur B800:0000 % un % suivi d’un % écrira % dans le flot. %

Les formats de sortie, la précision la précision se rajoute entre le % et le spécifieur, il s’écrit de 2 différentes formes a ou a.b Ou a représente le nombre de caractère minimum affiché. Il peut être précédé d’un espace / d’un 0 (zéro) qui comblerons les espaces. Il peut être précédé (pour un numérique) d’un plus/espace et/ou d’un moins. Le b représente pour les réels : le nombre de chiffres après la virgule. pour les chaînes de caractère : le nombre de caractères affiché de la chaîne source.

Les formats de sortie en clair fprintf(mon_fichier,"j’ecris dans mon fichier\n"); float my_float = 12.56; fprintf(stdout,"my_float a pour valeur : %015f\n", my_float); fprintf(stdout,"my_float a pour valeur : % 15.2f\n", my_float); fprintf(stdout,"my_float a pour valeur : %+15.2f\n", my_float); char * my_string = "hello world!!! \0damned i will be not print"; fprintf(stdout,"%s\n", my_string); fprintf(stdout,"%c\n", my_string[19]); fprintf(stdout,"%15.3sas\n", &my_string[16]); Donne j’ecris dans mon fichier my_float a pour valeur : 00000012.560000 my_float a pour valeur : 12.56 my_float a pour valeur : +12.56 hello world!!! n damas

Les formats d’entrée en clair Soit mon_fichier2 ouvert en lecture contenant jean martin 40 abbou simbel 30 sidonie delos 20 char p_1[50],p_2[50], p_3[50]; while (1) { fscanf(mon_fichier2,"%s %s %s",p_1,p_2,p_3); if (feof(mon_fichier2)) break; fprintf(stdout,"prénom : %s\tnom : %s\tage : %s\n", p_1, p_2, p_3);} Produira dans stdout : prenom : jean nom : martin age : 40 prenom : abbou nom : simbel age : 30 prenom : sidonie nom : delos age : 20

Le positionnement dans le flot v1 long ftell(FILE * stream); qui retourne dans un long la position de la tête de lecture du fichier int fseek(FILE * stream, long offset, int origin); qui renvoi à l'offset demandé la tête de lecture du fichier en prenant comme origin : SEEK_SET = le début du fichier SEEK_CUR = la position courante (préférer alors ouvrir le fichier en mode binaire) SEEK_END = la fin du fichier (idem mode binaire)

Le positionnement dans le flot v2 int fgetpos(FILE * f, fpos_t * p_pos); met dans p_pos la position de la tête de lecture dans le fichier int fsetpos(FILE * f, const fpos_t * p_pos); met la tête de lecture à la p_pos position dans le fichier Et bien sûr la remise à zéro int rewind(FILE * stream); qui met la tête de lecture en début de fichier.