Skip to content
Snippets Groups Projects
cours-flux.md 3.38 KiB
Newer Older
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
---
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": "note"}}

Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
Les semaines précédentes, nous avons vu comment afficher; c'est-à-dire
écrire à l'écran au moyen de `cout`. Nous avons occasionnellement vu
comment lire depuis le clavier avec `cin`. Nous allons maintenant
formaliser cela et introduire la notion de flux qui nous servira
ensuite pour lire et écrire dans des fichiers.
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed

+++ {"slideshow": {"slide_type": "slide"}}

# Notion de flux de données

+++ {"slideshow": {"slide_type": "fragment"}}

::::{admonition} Définition

Un ***flux sortant*** est un dispositif où l’on peut écrire
des données, successivement *l’une après l’autre*.

:::{admonition} Syntaxe
```
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
flux << expression;
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
```
:::

:::{admonition} Sémantique
Écrit la valeur de l'expression dans le flux. La valeur est convertie
en texte en fonction de son type.
:::

% +++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Remarque
:class: hint
On peut enchaîner l'écriture successive de plusieurs expressions :
```
flux << expression1 << expression2 << expression3;
```
:::
::::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Exemples de flux sortants
-   `cout` : ***sortie standard*** du programme  
    Typiquement : écran  
    ♣ Avec tampon
-   `cerr` : ***sortie d’erreur*** du programme  
    ♣ Sans tampon
:::

```{code-cell}
---
slideshow:
  slide_type: fragment
---
#include <iostream>
using namespace std;

cout << "Noël " << 42 << endl;
```

+++ {"slideshow": {"slide_type": "slide"}}

::::{admonition} Définition
Un ***flux entrant*** est un dispositif où l’on peut lire des
données, successivement *l’une après l’autre*.

:::{admonition} Syntaxe
```
flux >> variable;
```
:::

:::{admonition} Sémantique
Lit une valeur depuis le flux et l'affecte à la variable. Le type de
la variable est utilisé pour déterminer comment lire la variable.
:::

% +++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Remarque
:class: hint
On peut enchaîner la lecture successive de plusieurs variables :
```
flux >> variable1 >> variable2 >> variable3;
```
:::
::::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Exemple de flux entrant
-   `cin` : ***entrée standard*** du programme  
    Typiquement : clavier
:::

```{code-cell}
---
slideshow:
  slide_type: fragment
---
string nom;
cout << "Comment t'appelles-tu?" << endl;
cin >> nom;
nom
```

+++ {"slideshow": {"slide_type": "slide"}}

:::{admonition} Astuce mnémotechnique
:class: hint
Le sens des chevrons met en valeur dans quel sens se déplacent les
informations :
- `flux << expression` : de l'expression vers le flux;
- `flux >> variable` : du flux vers la variable.
:::

+++ {"slideshow": {"slide_type": "slide"}}

:::{admonition} Astuce mnémotechnique
:class: hint
En anglais, «flux» se dit «*stream*», «entrée» «*input*» et «sortie»
«*output*».

D'où le nom de la bibliothèque `iostream` qui définit le flux
(*stream*) entrant (*i*) `cin` et les flux sortants (*o*) `cout` et
`cerr`.
:::