Fichiers et flux#

Prélude#

Comment vous sentez-vous en ce début de cours?#

Curieux

Grognon

Inquiet

Épuisé

Annonces#

Examen mi semestre

Projet

Bureau d'Intervention Pédagogique

  • de l'aide individuelle en libre service

  • tous les jours, 12h30-14h30, salle 160 du 333

  • En informatique : lundi et jeudi 15h45-17h45, salle libre service 215

Visite d'un journaliste

  • Quand: lundi 24 novembre, 10h30-12h30 (pendant et après l'amphi MI)

  • Quoi: observation, quelques photos, microtrottoir

  • Pourquoi: préparation d'une émission sur grandlabo.com sur IA et pédagogique

  • Dans la pratique: si vous ne souhaitez pas apparaître sur les photos, asseyez vous côté fenêtre

Résumé des épisodes précédents#

Manipulation de collections de données

Fil conducteur : Implantation d'un annuaire

  • Tableaux : valeurs composites homogènes: vector<...>

  • Sémantique, modèle mémoire avec pile et tas

  • Généralisations: collections

  • La boucle «pour tout» : for ( auto valeur: collection ) { ... }

  • Les tableaux à deux dimensions: vector<vector<...>>

Pourquoi aller plus loin?

Pour passer à l'échelle!

Étude de cas : afficher un annuaire#

Revenons sur le programme que nous avions écrit pour afficher un annuaire :

#include<vector>
#include<iostream>
using namespace std;

vector<string> noms = {
    "Jeanne", 
    "Franck", 
    "Marie", 
    "Joël"
};
vector<string> telephones = {
    "04 23 23 54 56", 
    "03 23 42 34 26", 
    "06 52 95 56 06",
    "07 23 63 92 38"
};

for ( int i = 0; i < noms.size(); i++ ) {
    cout << noms[i] << " " << telephones[i] << endl;
}

Imaginons que le carnet de contacts sur nos téléphones adopte la même approche. Les données étant une partie intégrante du programme, nous devrions chacun avoir un programme différent, alors que seules les données changent d'une personne à l'autre.

De plus, toute modification dans l'annuaire est volatile : toute modification qui a pu avoir lieu pendant l'exécution du programme (par exemple l'ajout d'un contact) est perdue au moment où celui-ci s'arrête.

Besoins

  • d'une séparation claire entre programme et données;

  • d'un stockage persistant des données.

C'est ce que les fichiers vont nous apporter:

Objectif

  1. Données: un fichier annuaire.txt

    Jean-Claude 0645235432
    Albane      0734534534
    Djamila     +1150343234
    Tibo        0634534534
    
  2. Un programme

Reste à définir la notion de fichier et à voir comment les manipuler en C++.

Au programme#

Résumé du cours#

Les fichiers

Comment lire et écrire dans des fichiers en C++

Les flux

Un concept uniforme pour lire et écrire :

  • Entrée et sortie standard et sortie d'erreur d’un programme : cin, cout, cerr

  • Fichiers : ifstream, ofstream

  • Chaînes de caractères : istringstream, ostringstream

  • Connexions avec d'autres programmes

Rappel des annonces

  • Examen mi semestre : sujet et solution sur la page web

  • Projet: première TP dédié la semaine prochaine; avancez d'ici là!

  • Bureau d'Intervention Pédagogique: maths, physique ET informatique

  • Visite journaliste: amphi 10, lundi 24 novembre, MI