LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION



Documents pareils
TP : Gestion d une image au format PGM


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

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

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

COMPARAISONDESLANGAGESC, C++, JAVA ET

Algorithmique et Programmation, IMA

Les structures de données. Rajae El Ouazzani

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

I. Introduction aux fonctions : les fonctions standards

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

STAGE IREM 0- Premiers pas en Python

PROJET ALGORITHMIQUE ET PROGRAMMATION II

La mémoire. Un ordinateur. L'octet. Le bit

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

1 Lecture de fichiers

Programmation impérative

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

Chap III : Les tableaux

Utilisation d objets : String et ArrayList

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

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d Algorithmique et de Langage C v 3.0

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Organiser le disque dur Dossiers Fichiers

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

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

Les chaînes de caractères

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

Conventions d écriture et outils de mise au point

Les structures. Chapitre 3

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

TP 1. Prise en main du langage Python

Programme Compte bancaire (code)

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

Plan du cours. Historique du langage Nouveautés de Java 7

Présentation du langage et premières fonctions

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours 14 Les fichiers

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation en Java IUT GEII (MC-II1) 1

UML et les Bases de Données

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Le langage C. Séance n 4

TD3: tableaux avancées, première classe et chaînes

Cours de Système : Gestion de Fichiers

Solutions du chapitre 4

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

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

1.6- Génération de nombres aléatoires

Premiers pas sur l ordinateur Support d initiation

Introduction à MATLAB R

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction à l informatique en BCPST

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

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Affectation standard Affectation modifiée (exemple)

Informatique Générale

SYSTÈME DE GESTION DE FICHIERS

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

L informatique en BCPST

Programmation Classique en langage C

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

La gestion des dossiers sous Windows Vista, W7, W8.

Licence Sciences et Technologies Examen janvier 2010

Les fichiers. Chapitre 4

Algorithme. Table des matières

Cours de Systèmes d Exploitation

Recherche dans un tableau

Chapitre I Notions de base et outils de travail

FICHE PEDAGOGIQUE. Questions à poser. - Avant de démarrer l ordinateur,

Notions fondamentales du langage C# Version 1.0

Domaine D1 : Travailler dans un environnement numérique évolutif

as Architecture des Systèmes d Information

Organiser les informations ( approche technique )

Manuel du logiciel PrestaTest.

Le service FTP. M.BOUABID, Page 1 sur 5

Programmation système de commandes en C

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle CISII,

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Procédure de restauration F8. Série LoRdi 2012 à Dell V131 V3360 L3330

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Transcription:

Licence STS Université Claude Bernard Lyon I LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 7 : Structures et Fichiers

OBJECTIFS DE LA SÉANCE Deux notions abordées dans ce cours Celle de structure Celle de fichier Comprendre l intérêt des structure et apprendre comment les manipuler Savoir stocker le résultat d une exécution dans un fichier et la récupérer ultérieurement 2

PLAN Les structures Définition Intérêt Syntaxe Manipulation Les fichiers Stockage et arborescence L utilisation des fichiers en C 3

STRUCTURE: DÉFINITION ET VOCABULAIRE Agrégat d informations associées à une entité Typecomplexeconstruit à l aide de type simples ou d autres types complexes Chacune des informations contenue dans une structure s appelle un champ Une variable de type structure est aussi appelée un enregistrement Analogie avec les bases de données 4

DÉCLARATION En Algorithmique En C Structure Nom_Structure champ1 : type champ2 : type Fin structure Struct Nom_Structure { type champ1; type champ2; }; 5

EXEMPLE: EN ALGORITHMIQUE Structure IdentiteEtudiant prenom : tableau[64] de caractères nom : tableau[64] de caractères Fin structure Structure Etudiant identite : IdentiteEtudiant note : tableau[10] de réels numero : entier Fin Structure identite, note et numéro sont les champs de la structure Etudiant. Chacun des champs est soit de type simple numero soit de type complexe identite 6

EXEMPLE: ENC struct IdentiteEtudiant { char prenom[64]; char nom[64]; }; struct Etudiant { }; struct IdentiteEtudiant identite ; float note[10]; int numero; Mot clé : Struct En C on termine la définition de la structure par un ";" après l accolade Tous les champs se terminent par un ";" 7

UTILISATION DE CONSTANTES EN C Possibilité de définir des constantes et de fixer leurs valeurs const int longueurnom = 64 ; const int nombredenotes = 10 ; struct etudiant { char nom[longueurnom] ; float note[nombredenotes] ; } ; 8

DÉCLARATION D UNE VARIABLE DE TYPE STRUCTURE Nécessaire avant d utiliser la structure De même qu on écrit int i avant d utiliser i, on déclare une variable de type structure Nom_Structure avant de l utiliser En algorithmique : Etu : etudiant En C : struct etudiant toto ; 9

ACCÈS À UN CHAMP Pour remplir une variable de type structure, il faut procéder champ par champ (pas de remplissage global) car les types des champs sont différents Exemple en C: struct etudiant e; cin>> e.numero; cout << e.note[i]; déclaration de e, variable de type etudiant lit le numero de l étudiant e affiche la ieme note de l étudiant e cin>>e.identite.nom; avec un champ de type structure 10

UTILISATION DES STRUCTURES Une fonction peut retourner une structure Une structure peut faire l objet d une affectation (avec une variable de même type!) Etudiant e1,e2; e2=e1; Les tableaux de structures sont possibles struct etudiant classe[20] ; struct etudiant y ; y = creeretudiant() ; /*tableau de 20 etudiants*/ classe[0] = y ; 11

UTILISATION Exemple de création d une fiche étudiant : struct etudiant creeretudiant(void) { struct etudiant e ; int i ; cout << endl << "entrer le nom :" << endl ; cin >> e.identite.nom ; cout << endl << "entrer le prénom :" << endl ; cin >> e.identite.prenom ; cout << endl << "entrer le numero de l etudiant :" << endl ; cin >> e.numero ; for (i=0; i < nombredenotes; i++) { cout << endl << "entrer la " << i << "ème note :" << endl; cin >> e.note[i] ; } return e ; } 12

TRANSFORMATION Il est possible de transformer la fonction précédente en procédure L entête devient alors : void creeretudiant(struct etudiant & e) Un structure peut être passée en donnée résultat Une structure peut être retournée par une fonction 13

RÉSOLUTION D UN POLYNÔME Informations à connaître ou à évaluer Les coefficients du polynôme : a, b, c donnés par l utilisateur Le discriminant delta calculé en fonction de a, b, et c Le nombre de racine (en fonction de delta 0 1 ou 2 racines) Les racines réelles dans la mesure où elles existent Soit on utilise 7 variables différentes Soit on met toutes ces informations dans une structure 14

LA STRUCTURE"POLYNÔME" En algo En C Structure polynome a,b,c : réels delta : réel nb_racines : entiers rac1,rac2 : réels Fin Structure Struct polynome { float a,b,c; float delta; int nb_racines; double rac1,rac2; }; 15

LES FONCTIONS ASSOCIÉES Plusieurs fonctions à écrire Saisie des coefficients Calcul de delta Calcul du résultat Affichage du résultat 1 paramètre unique à passer : une variable de type "polynome" Certains champs seront remplis / calculés / affichés Structure passée en donnée / résultat ou retournée en résultat 16

LA FONCTION DE SAISIE On demande à l utilisateur de donner les 3 coefficients a, b et c struct polynome saisie_coefficients(void) { struct polynome p; cout << "donnez a, b et c"; cin>>p.a>>p.b>>p.c; return p; } On retourne la structure car elle est vide au départ 17

LA FONCTION DE CALCUL DE DELTA On calcule delta en fonction de a, b et c void calcul_delta(struct polynome & p) { p.delta = (p.b*p.b)- 4*p.a*p.c; } p est passé en donnée/resultat car on va utiliser 3 champs pour en remplir un. 18

LA FONCTION DE CALCUL DES RACINES On calcule les racines en fonction de delta, a, b et c void calcul_racines(struct polynome & p) { if (p.delta == 0) { p.rac1=-p.b / (2*p.a); p.rac2 =-p.b / (2*p.a); p.nb_racines=1; } else if (p.delta > 0) { p.rac1=(-p.b + sqrt(p.delta))/ (2*p.a); p.rac2 =(-p.b sqrt(p.delta))/ (2*p.a); p.nb_racines=2; } else p.nb_racines=0 } 19

LES FICHIERS Les informations lues ou calculées par un programme C disparaissent à fin de son exécution (lorsqu on ferme la fenêtre) Il est souvent utile et nécessaire de conserver des informations pour un usage ultérieur : exemple : remplissage d un tableau assez fastidieux Les fichiers sont là pour çà! 20

LES FICHIERS: OÙ SONT ILS? Les fichiers sont conservés sur divers supports : 1 seule écriture : Mémoire morte (read-only memory) : ensuite que des lectures possibles (CD-ROM, DVD-ROM) Ecriture difficile, lecture facile : CD-RW, EPROM,... Lecture/Ecriture : disques durs, disquettes, clés USB,... Sur la machine ou sur le réseau (Locaux ou Distants) 21

COMMENT SONT-ILS RANGÉS? Cela dépend du système d'exploitation Sous windows : Le lecteur identifié par une lettre suivie de : A: C: W: Les dossiers : Qui contiennent d'autres dossiers ou des fichiers Qui servent à organiser le rangement selon une hierarchie = l arborescence Dossier spécial qui contient tous les autres = la racine du lecteur 22

COMMENT SONT-ILS NOMMÉS? Le nom est le chemin d'accès : c'est le nom correspondant au chemin absolu (depuis la racine) W:\LIF1\Cours\cm1.pdf W:\LIF1\TP\TP1\hello.cpp Le nom court est la dernière partie du chemin cm1.pdf Utilisable si on est déjà dans le répertoire (dossier courant ou de travail) = chemin relatif 23

COMMENT LES MANIPULER? Par les outilsfournispar le système Copie/déplacement Effacement / destruction Ouverture Etc.. Par les applications disponibles Voirle coursde PCII Par programme codeblocks: c'est la suite... 24

2 TYPES DE STOCKAGES Les fichiers binaires: Humainement illisibles Son, musique Format spécifique à l'application Les fichiers textes : Lisible par des éditeurs de texte Les données sont sous formes de codes de caractères (ASCII, UTF,...) Ce sont eux que nous présenterons 25

LES FICHIERS ENC Désignés par une variable typée Selon l'usage fait par le programme : Lecture : ifstream Ecriture : ofstream Lecture / Ecriture : fstream Deux variables prédéfinies : cin est du type ifstream cout est du type ofstream 26

MANIPULATION D'UN FICHIER Avant de pouvoir lire ou écrire, il faut ouvrir le fichier au préalable Les variables de type ifstream et ofstream sont empruntés au C++, ce qui explique le formalisme particulier Toujours les passer en tant que donnée/résultat (&) dans les fonctions ou procédures qui les utilisent 27

OUVERTURE D'UN FICHIER EN LECTURE Il faut lui donner un nom (passé en paramètre éventuellement) On l ouvre en ifstream Et vérifier que tout s'est bien passé renvoyer un code d erreur bool ouverturefichierlecture( ifstream& fichier, char nom[1024] ) { fichier.open(nom) ; return fichier.good() ; } 28

OUVERTURE D'UN FICHIER EN ÉCRITURE Toujours passer son nom en paramtre Ici on le déclare en ofstream puisqu on veut écrire dedans on vérifie que tout s'est bien passé bool ouverturefichierecriture( ofstream& fichier, char nom[1024] ) { fichier.open(nom) ; return fichier.good() ; } 29

FERMETURE DE FICHIER Identique qu il ait été ouvert en lecture ou en écriture Fichier ouvert en lecture void fermeturefichierlecture( ifstream& fichier ) { fichier.close() ; } Fichier ouvert en écriture void fermeturefichierecriture( ofstream& fichier ) { fichier.close() ; } 30

DES OPÉRATIONS SPÉCIALES open( char nomdufichier[1024]) : Ouvre le fichier dont le nom est donnée en paramètre Si le fichier est de type ofstream et qu'il n'existe pas, le fichier est crée (autrement, c'est une erreur) Préalable à toutes autres opérations Initialise la variable associée close(void) Ferme le fichier, assure que toutes les données sont écrites 31

OPÉRATIONS SPÉCIALES >> pour lire : Convertit la chaine de caractères lue en se basant sur le type de la variable lue (si possible) << pour écrire : Convertit la valeur donnée en chaine de caractères (si possible) Conversions possibles pour tous les types de bases et les chaines de caractères 32

UN PETIT EXEMPLE Ecriture de la structure étudiant, en séparant chaque champ par un espace void ecrireetudiant(ofstream& fichier, struct etudiant &e) { int i ; fichier << e.nom << ' ' ; for (i = 0 ; i < nombredenotes; i++ ) { fichier << e.note[i] << ' ' ; } fichier << endl ; } 33

EXEMPLE Relire la ligne dans une structure, en supposant que les champs sont séparés par un espace (éliminé lors de la lecture) bool lireetudiant( ifstream& fichier, struct etudiant &e ) { int i ; fichier >> e.nom ; if (fichier.eof()) { return false ; } for (i = 0 ; i < nombredenotes; i++ ) { fichier >> e.note[i] ; } return true ; } 34

À QUOI RESSEMBLE LE FICHIER Ce que l'on voit en ouvrant par un éditeur de texte Pierre 1 2 3 4 5 6 7 8 9 10 Paul 11 12 13 14 15 16 17 18 19 20 Jacques 15 16 17 18 15 16 17 18 15 16 35

LES EXEMPLES COMPLETS Un programme de saisie : exemplefichier0.cpp Un programme pour lire le fichier, remplir le tableau de structure et exploiter les données : exemplefichier1.cpp 36

Stuctures : CONCLUSION Permettent de ranger dans une même variable toutes les informations relatives à un objet : exemple étudiant Moins de variables, informations mieux organisées Possibilité de faire des tableaux de structures Fichiers Permettent de stocker le résultat d une exécution et de pouvoir la réutiliser Deux types de fichiers en C : ouvert en lecture ou en écriture 37