-
Nicolas M. Thiéry authoredNicolas M. Thiéry authored
jupytext:
text_representation:
extension: .md
format_name: myst
format_version: 0.13
kernelspec:
display_name: C++17
language: C++17
name: xcpp17
rise:
auto_select: first
autolaunch: false
centered: false
controls: false
enable_chalkboard: true
height: 100%
margin: 0
maxScale: 1
minScale: 1
scroll: true
slideNumber: true
start_slideshow_at: selected
transition: none
width: 90%
+++ {"slideshow": {"slide_type": "slide"}}
Fichiers et flux
+++ {"slideshow": {"slide_type": "fragment"}}
Prélude
+++ {"slideshow": {"slide_type": "fragment"}, "tags": ["instructor-disabled"]}
Comment vous sentez-vous en ce début de cours?
Curieux | |
Grognon | |
Inquiet | |
Épuisé |
+++ {"slideshow": {"slide_type": "slide"}}
Annonces
+++ {"slideshow": {"slide_type": "fragment"}}
:::{admonition} Examen mi semestre
- Sujet et correction disponibles en ligne
- Correction en cours :::
+++ {"slideshow": {"slide_type": "fragment"}}
:::{admonition} Projet
:::
+++ {"slideshow": {"slide_type": "fragment"}}
:::{admonition} 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, même lieu
:::
% +++ {"slideshow": {"slide_type": "slide"}}
%
%
%
% #### Conférence spectacle : «Jonglerie Musicale et Combinatoire»
%
% - Jeudi 10 novembre, 11h00-12h10, 336-H5
% (créneau d'amphi Introduction à l'informatique)
% - Florent Hivert et Vincent Delavenère
%
% +++ {"slideshow": {"slide_type": "fragment"}}
%
%
%
% #### Concert de l'ensemble vocal Osmose
%
% - Dimanche 13 novembre, 16h-17h30, Orsay
% - Bach, Zelenka, ...
+++ {"slideshow": {"slide_type": "slide"}}
Résumé des épisodes précédents
+++ {"slideshow": {"slide_type": "fragment"}}
Manipulation de collections de données
Fil conducteur : Implantation d'un annuaire
+++ {"slideshow": {"slide_type": "fragment"}}
- 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 ) { ... }
+++ {"slideshow": {"slide_type": "fragment"}}
+++ {"slideshow": {"slide_type": "fragment"}}
+++ {"slideshow": {"slide_type": "slide"}}
Étude de cas : afficher un annuaire
+++ {"slideshow": {"slide_type": "fragment"}}
Revenons sur le programme que nous avions écrit pour afficher un annuaire :
---
slideshow:
slide_type: fragment
---
#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;
}
+++ {"slideshow": {"slide_type": "notes"}}
Imaginons maintenant 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.
+++ {"slideshow": {"slide_type": "slide"}}
Nous avons besoin :
- d'une séparation claire entre programme et données;
- d'un stockage persistant des données.
+++ {"slideshow": {"slide_type": "fragment"}}
C'est ce que les fichiers vont nous apporter.
On voudrait pour notre annuaire avoir :
+++ {"slideshow": {"slide_type": "fragment"}}
-
Un fichier
annuaire.txt
:Jean-Claude 0645235432 Albane 0734534534 Djamila +1150343234 Tibo 0634534534
-
Un programme
+++ {"slideshow": {"slide_type": "fragment"}}
Reste à définir la notion de fichier et à voir comment les manipuler en C++.
+++ {"slideshow": {"slide_type": "slide"}}
Au programme
- Cours : flux de données
- Cours : fichiers, lecture, écriture
- Cours : état d'un fichier
- Cours : lecture et écriture dans des chaînes de caractères
+++ {"slideshow": {"slide_type": "slide"}}
Résumé du cours
+++ {"slideshow": {"slide_type": "fragment"}}