---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
    jupytext_version: 1.15.1
kernelspec:
  display_name: C++17
  language: C++17
  name: xcpp17
---

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "11bc746bb3f36668d563917b04467610", "grade": false, "grade_id": "cell-b78562ee2ff6d72c", "locked": true, "schema_version": 3, "solution": false}}

# TP : valeurs, types et variables

## Introduction à Jupyter et premiers calculs

Lors de ces premières semaines de cours, nous allons travailler dans
l'application web *Jupyter* qui permet d'exécuter du code `C++`
interactivement, un peu comme une super calculatrice. Plus tard, nous
verrons comment créer un programme `C++` indépendant en dehors de
*Jupyter*.

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "31783578f8bde28209b21d60b4afa8df", "grade": false, "grade_id": "cell-33660fa4ef5903e4", "locked": true, "schema_version": 3, "solution": false}}

**Exercice 1 : premiers calculs**

- Cliquez sur la cellule suivante puis exécutez la en appuyant sur les
  touches <kbd>Maj</kbd>+<kbd>Entrée</kbd> :

```{code-cell}
1 + 1
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "a641bd5ef111d5f779f4d06209dffffb", "grade": false, "grade_id": "cell-291a3535b726abef", "locked": true, "schema_version": 3, "solution": false}}

La première ligne donne le résultat du calcul. La deuxième ligne
indique que ce résultat est de type *entier* (`int`).

Techniquement parlant, le navigateur web a envoyé le contenu `1+1` de
la cellule à un *noyau* (kernel en anglais) qui l'a *compilé* et
*exécuté*, avant de renvoyer le résultat à afficher. Le noyau que nous
utilisons (`C++17`) permet de travailler en `C++`. Il existe des
noyaux pour beaucoup d'autres langages de programmation.

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "23ac875d5810411efd84b5b11ec27071", "grade": false, "grade_id": "cell-c7495bbedb1de8c7", "locked": true, "schema_version": 3, "solution": false}}

- Modifiez l'expression dans la cellule précédente et exécutez la de
  nouveau.

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "d687d8f5e69fce473a4c069310d311e9", "grade": false, "grade_id": "cell-12b1679926b1768d", "locked": true, "schema_version": 3, "solution": false}}

- Utilisez la cellule suivante pour calculer la surface d'un rectangle
  de largeur 25 et de longueur 37 :

```{code-cell}
---
deletable: false
nbgrader:
  cell_type: code
  checksum: 6c2954c10ebb31553b07a0019812862e
  grade: false
  grade_id: cell-b645bc465bd310ae
  locked: false
  schema_version: 3
  solution: true
ordo_failure: "R\xE9ponse incorrecte; essayes encore!"
ordo_solution:
  text/plain: '925

    type: int'
ordo_success: "Bonne r\xE9ponse!"
---
// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "d8e8920ea94e7d6c8db86d6b29e849fe", "grade": false, "grade_id": "cell-1b42d53da30ded82", "locked": true, "schema_version": 3, "solution": false, "task": false}}

**Exercice 2 : types**

Vous avez vu en cours qu'il existe plusieurs types de variables
(`int`, `double`, etc.). Il est très utile de connaître le type des
valeurs que l'on manipule. Exécutez les cellules suivantes et observez
les types obtenus :

```{code-cell}
3*4
```

```{code-cell}
3*4.0
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "f91a40fc1958f4b6f1e0681d8df77441", "grade": false, "grade_id": "cell-7c72028bf998c9e5", "locked": true, "schema_version": 3, "solution": false}}

Les lignes suivantes vous présentent des exemples de
calculs. Exécutez-les en observant bien la valeur du résultat et son
type.

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 593fcfb7063e8d55389842ed36c10a03
  grade: false
  grade_id: cell-678ae0462813d831
  locked: true
  schema_version: 3
  solution: false
  task: false
---
3*(1+3) + (1+4)*(2+4)
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 9f3cc6c0e458e40336da192b6f55aa16
  grade: false
  grade_id: cell-8c8f01689a82794b
  locked: true
  schema_version: 3
  solution: false
  task: false
---
42 / 2
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: babcd64046ca10ca7696da6a16825c30
  grade: false
  grade_id: cell-9678ffe15c270b81
  locked: true
  schema_version: 3
  solution: false
  task: false
---
42 / 5
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: a1b61504a42f653f72eeb746b99dd23f
  grade: false
  grade_id: cell-15172444994cbdff
  locked: true
  schema_version: 3
  solution: false
  task: false
---
42. / 5
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 7f94e7cc2a78f5f84d00835ab6e3c7fc
  grade: false
  grade_id: cell-7009aedea5b1e925
  locked: true
  schema_version: 3
  solution: false
  task: false
---
42 % 5
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 73faf81ec97e7a196d35eb58d0016ed1
  grade: false
  grade_id: cell-7c66e2817d57b95c
  locked: true
  schema_version: 3
  solution: false
  task: false
---
1 + 1.
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: eb7d7730da271c2d1e497aa89c9ad470
  grade: false
  grade_id: cell-33bc66dde9266641
  locked: true
  schema_version: 3
  solution: false
  task: false
---
42 == 6*7
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 88c54f98c8270c287d5ff9cf434e1f2a
  grade: false
  grade_id: cell-3163364eab44d8d7
  locked: true
  schema_version: 3
  solution: false
  task: false
---
41 == 2*21
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b03fd9ec2be270091121833ce867f1cc", "grade": false, "grade_id": "cell-cf97d7e3ffc985a0", "locked": true, "schema_version": 3, "solution": false}}

Remarque: dans les deux cellules précédentes, nous avons utilisé un
**double égal** `==` qui sert à **tester** l'égalité entre deux
valeurs. Nous reverrons bientôt la signification du **simple égal**
`=`.

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: dbabeaac7e3f9d86ef9a32e951cd5df1
  grade: false
  grade_id: cell-d4b738450011dd37
  locked: true
  schema_version: 3
  solution: false
  task: false
---
1 < 2
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 0a8e6b094ad756a7c0ffa364fcc7ee15
  grade: false
  grade_id: cell-3e5e3a25f145a973
  locked: true
  schema_version: 3
  solution: false
  task: false
---
2 > 3
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: cb08d8a9c4574e2b2adad48f3464fad8
  grade: false
  grade_id: cell-606159825dc54bf9
  locked: true
  schema_version: 3
  solution: false
  task: false
---
1 < 2 and 2 > 3
```

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 697a998ec2daa1290313a8fc7797575d
  grade: false
  grade_id: cell-783a55b0abd2377f
  locked: true
  schema_version: 3
  solution: false
  task: false
---
1 < 2 or 2 > 3
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "af204e753d48317334d009d9df551827", "grade": false, "grade_id": "cell-05caf97c8306b9b4", "locked": true, "schema_version": 3, "solution": false, "task": false}}

Note: pour éviter de fausses manœuvres, nous configurons de nombreuses
cellules, telles celles ci-dessus, pour qu'elles soient non
modifiables. Pour faire vos propres expérimentations ou pour prendre
des notes personnelles, vous pouvez à tout moment insérer de nouvelles
cellules. Insérez maintenant une cellule ci-dessous en utilisant le
bouton `+` sous les onglets. Dans la barre d'outil de cette feuille,
sélectionnez `Markdown` à la place de `Code` pour en faire une cellule
de texte.

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "f111bfd79786faaa5d38dc0f13967c66", "grade": false, "grade_id": "cell-884721498ad284a1", "locked": true, "schema_version": 3, "solution": false}}

**Exercice 3 :**

Pour chacune des expressions suivantes, déterminez **de tête** le type
et la valeur du résultat, et donnez votre réponse à l'endroit indiqué
sous la forme `type`, `valeur`; puis vérifiez en exécutant les
cellules.

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "2c2010fc398715fd883ec87dbcf20298", "grade": true, "grade_id": "cell-a8d152d15809265f", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, ou double ?
 * Valeur : 7, 9, 11, ou 21 ?

% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: a72897335f295c7d452b11e914f2fc49
  grade: false
  grade_id: cell-0f3ff9e9e4c33f41
  locked: true
  schema_version: 3
  solution: false
---
3 * 2 + 5
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "dfe5e7372570d9dea7fd0e5805abc6c1", "grade": true, "grade_id": "cell-b866905e681f44cb", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, ou double ?
 * Valeur : 12 ou 12.5 ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 962d88d6809f73496c72662e2f1a341d
  grade: false
  grade_id: cell-127febc577edfc08
  locked: true
  schema_version: 3
  solution: false
---
25 / 2
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "6c2e63ea6633366117382f5c3f127e60", "grade": true, "grade_id": "cell-899fabbcd7ecd371", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, ou double ?
 * Valeur : 6, 7, 6.0000, ou 7.0000?

 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: dfc73c6565beb9718da57a04d56a539a
  grade: false
  grade_id: cell-286c54ae7e34701d
  locked: true
  schema_version: 3
  solution: false
---
3.5*2
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "71eee2fa3fea6fb3788badde6e41dfc0", "grade": true, "grade_id": "cell-fe0c64ef514d2b0f", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type: int, bool, ou double ?
 * Valeur : 5, 4, ou 4.66667 ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 20a02b357e2b564128c22de02d6bafff
  grade: false
  grade_id: cell-b52c330c011b1b89
  locked: true
  schema_version: 3
  solution: false
  task: false
---
14. / 3
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "26ca09cd9707728cdd34ca521aed3382", "grade": true, "grade_id": "cell-b1b2d0d4b7baa06e", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, ou double ?
 * Valeur : 3,7,21, true, ou false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 5d1d2f1a6a8c2051575b59fe5305d7ab
  grade: false
  grade_id: cell-67ced375854c7fb3
  locked: true
  schema_version: 3
  solution: false
  task: false
---
3*7 == 21
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "ff1acd99636db830d19c4999334bfe63", "grade": true, "grade_id": "cell-59ff90739ae5b7b2", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, double ?
 * Valeur : 21, 25, true, false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 1ed41b3835b89e6fcbc70955741fe280
  grade: false
  grade_id: cell-959d3023456a140e
  locked: true
  schema_version: 3
  solution: false
  task: false
---
(3*7 == 21) and (4.2 > 5.3 or 4*4 == 8*2)
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "334e68aa2b0ee056926c9e5d3f54bf12", "grade": true, "grade_id": "cell-2bf659cbac5d597a", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

 ---
 * Type : int, bool, double ?
 * Valeur : 1, 0, true, false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: abfc8ff20663be8e6949ec8c6c06ce55
  grade: false
  grade_id: cell-f47f3ad36d564ee3
  locked: true
  schema_version: 3
  solution: false
  task: false
---
true and false
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "4ca4d1bcbd35f830508935fdcf0b1e2a", "grade": true, "grade_id": "cell-e5856c338c095691", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

---
 * Type : int, bool, double ?
 * Valeur : 1, 0, true, false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: 84b49eb8f761d684f8e79173e910b814
  grade: false
  grade_id: cell-e0555c4a9b71b38e
  locked: true
  schema_version: 3
  solution: false
  task: false
---
true or false
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "ced8c634c6cc49e5a69c156df6e90a91", "grade": true, "grade_id": "cell-89f6e927581416a9", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

---
 * Type : int, bool, double ?
 * Valeur : 1, 0, true, false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: ab4121e4a092cce93227b3fe2b6c7ca1
  grade: false
  grade_id: cell-b578732ac62c6681
  locked: true
  schema_version: 3
  solution: false
  task: false
---
(false and false) or true
```

+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "d0147601a4bf7a09551fff8080059637", "grade": true, "grade_id": "cell-447af0863372964d", "locked": false, "points": 2, "schema_version": 3, "solution": true}}

---
 * Type : int, bool, double ?
 * Valeur : 1, 0, true, false ?
 
 % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE

```{code-cell}
---
deletable: false
editable: false
nbgrader:
  cell_type: code
  checksum: cb2b8d971ecd3f9ac908ced0e3a2f28b
  grade: false
  grade_id: cell-64d5df8a0de7fed9
  locked: true
  schema_version: 3
  solution: false
  task: false
---
false and (false or true)
```

+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b13d62422ced658b42da7508a80bcb1a", "grade": false, "grade_id": "cell-6e834cd22ecc144b", "locked": true, "schema_version": 3, "solution": false}}

Bravo, vous avez terminé cette première feuille où vous avez exploré
les expressions, valeurs, types en C++. Dans la feuille suivante, vous
aborderez les variables.

Vous pouvez maintenant fermer cette feuille; utilisez pour cela le
raccourci clavier <kbd>Ctrl</kbd>+<kbd>Maj</kbd>+<kbd>Q</kbd>.