Flux. Gestion des Exceptions. SmartPointer. Entrées-sortiessorties Fichiers. F. Cloppet POO Avancée M1 C++ 271



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

TP : Gestion d une image au format PGM

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmer en JAVA. par Tama

Programmation système I Les entrées/sorties

SYSTÈME DE GESTION DE FICHIERS

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

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

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Programmation en C/C++

as Architecture des Systèmes d Information

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Conventions d écriture et outils de mise au point

Cours de C/C++ par la pratique. Hugues Talbot

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

Initiation. àl algorithmique et à la programmation. en C

Cours 1: Java et les objets

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

C++ : PROGRAMMATION-OBJET

Programmation Objet Java Correction

Logiciel de base. Première année ENSIMAG

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

FORMATS DE FICHIERS. Quels sont les différents types d informations numériques dans un document multimédia?

Algorithmique et Programmation, IMA

Le langage C++ (partie I)

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours Programmation Système

Initiation à JAVA et à la programmation objet.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Structure d un programme

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Claude Delannoy. 3 e édition C++

Architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs

Flux de données Lecture/Ecriture Fichiers

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

La technologie Java Card TM

Architecture matérielle des systèmes informatiques

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

TD : Codage des images

Codage d information. Codage d information : -Définition-

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

Rappels d architecture

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

LE LANGAGE C++ ENAC 1997 A. DANCEL

Recherche dans un tableau

Programmation en Java IUT GEII (MC-II1) 1

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


Instructions relatives à l installation et à la suppression des pilotes d imprimante PostScript et PCL sous Windows, version 8

Une introduction à Java

Représentation d un entier en base b

Chapitre 10. Les interfaces Comparable et Comparator 1

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

UE C avancé cours 1: introduction et révisions

GPA770 Microélectronique appliquée Exercices série A

Représentation des Nombres

Java c est quoi? Java pourquoi?

Transmission d informations sur le réseau électrique

IV- Comment fonctionne un ordinateur?

Algorithme. Table des matières

Cours A7 : Temps Réel

Architecture des ordinateurs

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

PROGRAMMATION PAR OBJETS

Algorithmique, Structures de données et langage C

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

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

Systèmes d exploitation

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Informatique Générale

Génie Logiciel avec Ada. 4 février 2013

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

Optimisations des SGBDR. Étude de cas : MySQL

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

La programmation orientée objet et le langage C++

Transcription:

Notions Complémentaires Flux Entrées-sortiessorties Fichiers Gestion des Exceptions SmartPointer F. Cloppet POO Avancée M1 C++ 271

Généralités Flux = séquence d octets (byte) Flux s écoulent des périphériques vers la mémoire pour les processus d entrées Clavier, souris, disque dur de la mémoire vers les périphériques p pour la sortie Écran, disque dur, imprimante Terminologie en anglais input / output stream Fichier d en-tête en C++ pour les entrées sorties <iostream> F. Cloppet POO Avancée M1 C++ 272

Entrée standard au clavier cin Quand on inclue <iostream>, un objet cin de type istream est automatiquement déclaré istream cin; Sortie standard à l écran cout Quand on inclue <iostream>, un objet cout de type ostream est automatiquement déclaré ostream cout; Le flux suit la direction des chevrons >> ou << F. Cloppet POO Avancée M1 C++ 273

Entrées-Sorties Standard F. Cloppet POO Avancée M1 C++ 274

Formatage Utilisation du fichier d en-tête iomanip Les formatages sont gardés en mémoire jusqu à ce qu'une autre option change le formatage F. Cloppet POO Avancée M1 C++ 275

Formatage On peut préciser Le nombre de caractères réservés pour l écriture setw(int nb) : la sortie sera faite sur nb caractères setfill(char c) : remplit les blancs avec le caractère c passé en paramètre Le nombre de chiffres significatifs pour des réels setprecision(int nb) : nb chiffres significatifs setprecision + fixed : nombre de décimales Le type de notation scientific : notation scientifique F. Cloppet POO Avancée M1 C++ 276

Formatage F. Cloppet POO Avancée M1 C++ 277

Surcharge opérateur << F. Cloppet POO Avancée M1 C++ 278

Surcharge opérateur << (suite) F. Cloppet POO Avancée M1 C++ 279

Surcharge opérateur << Autre solution (sans accesseurs) F. Cloppet POO Avancée M1 C++ 280

Surcharge opérateur << (suite) Autre solution (sans accesseurs) F. Cloppet POO Avancée M1 C++ 281

Surcharge opérateur >> F. Cloppet POO Avancée M1 C++ 282

Surcharge opérateur >> (suite) F. Cloppet POO Avancée M1 C++ 283

Fichiers Généralités Créer un fichier Ouvrir le fichier en écriture Écrire les données dans le fichier Fermer le fichier Lire des données écrites dans un fichier Ouvrir le fichier en lecture Lire les données à partir du fichier Fermer le fichier F. Cloppet POO Avancée M1 C++ 284

Fichiers Généralités Deux types de fichiers Fichiers textes Lisibles par un éditeur de texte Fichiers binaires Copie bit à bit du contenu de la mémoire Non lisibles par un éditeur de texte Bibliothèque standard C++ fstream F. Cloppet POO Avancée M1 C++ 285

Bibliothèque fstream Classe ofstream #include<fstream> Fichier ouvert en écriture créé par appel du constructeur de la classe Méthode is_open() renvoie true si le fichier a bien été ouvert Écriture dans le fichier avec l opérateur << Méthode close() : ferme le fichier ouvert Classe ifstream Fichier ouvert en lecture créé par appel du constructeur de la classe Méthode is_open() renvoie true si le fichier a bien été ouvert Lecture à partir du fichier avec l opérateur >> Méthode close() : ferme le fichier ouvert F. Cloppet POO Avancée M1 C++ 286

Fichiers Fichier texte Constructeur de la classe ofstream ou ifstream avec un seul paramètre Le nom du fichier Utilisent les mêmes fonctions de formatage que cin et cout F. Cloppet POO Avancée M1 C++ 287

Fichiers Fichier texte F. Cloppet POO Avancée M1 C++ 288

Fichiers Fichier texte utilisent les mêmes fonctions de formatage que cin et cout F. Cloppet POO Avancée M1 C++ 289

Fichiers texte Écrire à la suite d un fichier existant Ajout d un dun deuxième paramètre dans le constructeur : std::ios::app F. Cloppet POO Avancée M1 C++ 290

Fichiers texte Lire à partir d un fichier F. Cloppet POO Avancée M1 C++ 291

Fichiers texte Lecture ligne par ligne F. Cloppet POO Avancée M1 C++ 292

Fichiers binaires données sont lues/écrites séquence d'octets par séquence d'octets On peut lire/écrire que les types de base (int, float,...) Opérations plus rapides qu avec un fichier texte Permet de lire des formats de fichiers binaires (TIF, PNG ) Ajout du paramètre a ios::out out ios::binary (resp ios::in ios::binary) dans le constructeur pour écriture (resp. lecture) la méthode write((char *)buffer, int nb) pour écrire nb octets dans le fichier méthode read((char *)buffer, int nb) pour lire nb octets du fichier F. Cloppet POO Avancée M1 C++ 293

Fichiers binaires F. Cloppet POO Avancée M1 C++ 294

Fichiers binaires F. Cloppet POO Avancée M1 C++ 295

Notions Complémentaires Les exceptions Définition Une exception est un signal qui indique que quelque chose d exceptionnel (comme une erreur) s est sest produit. Elle interrompt le flot d exécution normal du programme C est un objet instancié lors d un incident => une exception est levée Mécanisme simple et lisible Regroupement du code réservé au traitement des erreurs pas de «mélange» avec l algorithme Isoler les instructions susceptibles de provoquer des exceptions Prévoir un traitement d erreur sur ces instructions Possibilité de récupérer une erreur à plusieurs niveaux d une application (traitement ou propagation dans la pile des appels de méthodes) F. Cloppet POO Avancée M1 C++ 296

Les exceptions une fonction rencontre une erreur elle lance une exception la fonction courante est terminée immédiatement les fonctions appelantes sont aussi terminées jusqu'a trouver un morceau de code qui sache gérer l'exception si aucun bloc de code ne traite l'exception, le programme se termine F. Cloppet POO Avancée M1 C++ 297

Les exceptions Illustration de la propagation F. Cloppet POO Avancée M1 C++ 298

Les exceptions Les erreurs classiques à traiter avec des exceptions sont dépassement d'indices dans les tableaux dépassement de capacité le résultat d'un calcul est plus grand que le maximum représentable par la variable division i i par zéro allocation mémoire impossibleibl manque de mémoire F. Cloppet POO Avancée M1 C++ 299

Les exceptions Il existe des types d erreur prédéfinies bad_alloc : problème d'allocation thrown by new on allocation failure bad_cast : problème de dynamic_cast ios_base::failure problème d'iostream bad_typeid problème de pointeur Vocabulaire Capturer ou attraper (catch) une exception permet de traiter les erreurs Lancer ou déclencher (throw) une exception consiste à signaler les erreurs mais à reporter son traitement F. Cloppet POO Avancée M1 C++ 300

Les exceptions F. Cloppet POO Avancée M1 C++ 301

Les exceptions On peut définir ses propres p classes exception Classe dérive de la classe exception de la librairie STL F. Cloppet POO Avancée M1 C++ 302

Les exceptions F. Cloppet POO Avancée M1 C++ 303

Les exceptions On peut définir ses propres classes «exception»- illustration (suite) F. Cloppet POO Avancée M1 C++ 304

Notions complémentaires Smart Pointeur = Pointeur intelligent Le pb des pointeurs Pour un new => un delete sinon fuite mémoire Comment gérer les delete dans un code complexe? F. Cloppet POO Avancée M1 C++ 305

Notions complémentaires Smart Pointeur = Pointeur intelligent dans la STL depuis le C++0x norme de 2011 Pas compatible avec les "anciens" compilateurs classe qui encapsule la notion de pointeur Offre une sémantique de plus haut niveau Possède un mécanisme qui gère la durée de vie des objets pointés Plusieurs types shared_ptr weak_ptr unique_ptr F. Cloppet POO Avancée M1 C++ 306

Smart Pointeur Shared_ptr Principe stockage du pointeur comptage des références grâce à un compteur interne +1 : création, affectation, copie -1 : destruction delete de la donnée lorsque le compteur = 0 F. Cloppet POO Avancée M1 C++ 307

Smart Pointeur Shared_ptr F. Cloppet POO Avancée M1 C++ 308

Smart Pointeur shared_ptr F. Cloppet POO Avancée M1 C++ 309