From ffc6b3567cdef32903a1eb765c5d477dd125e526 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicolas=20M=2E=20Thi=C3=A9ry?= <nthiery@users.sf.net>
Date: Sun, 29 Sep 2024 23:57:31 +0200
Subject: [PATCH] =?UTF-8?q?Pr=C3=A9paration?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gradebook.db        | Bin 241664 -> 245760 bytes
 02-exponentielle3.md |  11 +-
 cours.md             | 237 +++++++++++++++++++++++--------------------
 3 files changed, 130 insertions(+), 118 deletions(-)

diff --git a/.gradebook.db b/.gradebook.db
index 097d68bead6681704d8fd315adbb67ee6ec909c6..ae41f14af364e0ac4c1c4ac96d262606b4a632b4 100644
GIT binary patch
delta 2979
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

delta 2721
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
VCc2Zl0sl_+@Rv!5!?$C<^?$+}{_Ow&

diff --git a/02-exponentielle3.md b/02-exponentielle3.md
index bd1abeb..7ac148e 100644
--- a/02-exponentielle3.md
+++ b/02-exponentielle3.md
@@ -130,7 +130,7 @@ nbgrader:
 (a == b)
 ```
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "a03b3b94828a1e69046a2b0ffb1bd3c2", "grade": false, "grade_id": "cell-5017bdc388a2f6c4", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b176aaa4d92d7a9b9db2491886070c43", "grade": false, "grade_id": "cell-5017bdc388a2f6c4", "locked": true, "schema_version": 3, "solution": false}}
 
 ### Précision absolue
 
@@ -139,18 +139,17 @@ nbgrader:
 Chaque fois que l'on veut comparer deux nombres flottants, il faut
 spécifier avec quelle **précision** on veut les comparer.
 
-Le plus simple est de fixer un seuil de ***précision
-absolue*** $\eta$, c'est-à-dire la différence de valeur en dessous de
-laquelle on considère que deux nombres sont égaux :
+Pour cela, on fixe un seuil de ***précision absolue*** $\eta>0$ et on
+considère que deux nombres $x$ et $y$ sont égaux à $\eta$ près si :
 
-$$x \simeq y \texttt{si} |x - y| < \eta .$$
+$$ |x - y| < \eta .$$
 
 :::
 
 :::{admonition} Exercice 2
 
 Implantez les deux fonctions suivantes dont on vous donne la documentation :
-- `abs` mais qui prend cette fois en paramètre un `double` et retourne
+- `abs` qui prend cette fois en paramètre un `double` et retourne
    un `double`
 - `egal` qui prend en paramètres les nombres $x$, $y$ et $\varepsilon$.
 
diff --git a/cours.md b/cours.md
index f1e4da3..db961e6 100644
--- a/cours.md
+++ b/cours.md
@@ -183,8 +183,8 @@ uniquement avec ces instructions
 
 ##### Tarte tatin
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 -   Ingrédients : 5 belles pommes, ingrédients pour pâte brisée et caramel
 -   *Préparer une pâte brisée*
 -   *Préparer un caramel* et le verser au fond du plat à tarte
@@ -192,11 +192,13 @@ uniquement avec ces instructions
 -   Faire revenir les pommes dans une poêle avec du beurre
 -   Disposer les pommes dans le plat, et étaler la pâte au dessus
 -   Faire cuire 45 minutes et retourner dans une assiette
-:::
-:::{grid-item-card}
-<img src="media/tarte-tatin.jpg" height=20ex alt="une tarte tatin" />
+::::
+::::{grid-item-card}
+:::{image} media/tarte-tatin.jpg
+:alt: une tarte tatin
 :::
 ::::
+:::::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -227,10 +229,8 @@ uniquement avec ces instructions
 
 #### Une impression de déjà vu? (1)
 
-<!-- TODO IMG -->
-
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 
 ```c++
 while ( regarde() == Vide ) {
@@ -258,20 +258,21 @@ while ( regarde() == Vide ) {
 }
 ouvre();
 ```
-:::
-:::{grid-item-card}
-<img src="media/laby2c.png" style="float: right;" alt="laby niveau 2c" height="30ex"/>
+::::
+::::{grid-item-card}
+:::{image} media/laby2c.png
+:alt: "laby niveau 2c"
+:height: 30ex
 :::
 ::::
+:::::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
 #### Une impression de déjà vu? (2)
 
-<!-- TODO IMG -->
-
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 ```c++
 void avance_tant_que_tu_peux() {
     while ( regarde() == Vide ) {
@@ -291,11 +292,14 @@ droite();
 avance_tant_que_tu_peux();
 ouvre();
 ```
-:::
-:::{grid-item-card}
-<img src="media/laby2c.png" alt="laby niveau 2c" height="20ex"/>
+::::
+::::{grid-item-card}
+:::{image} media/laby2c.png
+:alt: "laby niveau 2c"
+:height: 30ex
 :::
 ::::
+:::::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -475,13 +479,11 @@ slideshow:
 factorielle(5) / factorielle(3) / factorielle(2)
 ```
 
-<!-- -->
-
 +++ {"slideshow": {"slide_type": "slide"}}
 
 ### Syntaxe d'une fonction
 
-**Syntaxe :**
+:::{admonition} Syntaxe
 
 ``` c++
 type nom(type1 parametre1, type2 parametre2, ...) {
@@ -490,11 +492,12 @@ type nom(type1 parametre1, type2 parametre2, ...) {
     return expression;
 }
 ```
--   `parametre1, parametre2, ...` : les **paramètres formels**
+-   `parametre1, parametre2, ...` : les ***paramètres formels***
 -   Le type des paramètres formels est fixé
--   Les variables sont appelées **variables locales**
--   À la fin, la fonction **renvoie** la valeur de `expression`  
+-   Les variables sont appelées ***variables locales***
+-   À la fin, la fonction ***renvoie*** la valeur de `expression`  
     Celle-ci doit être du type annoncé
+:::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -518,7 +521,7 @@ float max(float a, float b) {
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
--   `max` n'est utilisée que si elle est *appelée*
+-   `max` n'est utilisée que si elle est ***appelée***
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
@@ -534,7 +537,7 @@ max(1.5, 3.0)
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-1.   les **paramètres** `a` et `b` sont initialisés avec les valeurs `1.5` et `3.0`
+1.   les paramètres `a` et `b` sont initialisés avec les valeurs `1.5` et `3.0`
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
@@ -546,7 +549,7 @@ max(1.5, 3.0)
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-4.  le `return` spécifie la **valeur de retour** de la fonction :  
+4.  le `return` spécifie la ***valeur de retour*** de la fonction :  
     la valeur de l'expression `max(1.5, 3.0)`
 
 +++ {"slideshow": {"slide_type": "slide"}}
@@ -557,7 +560,7 @@ max(1.5, 3.0)
 
 ### Documentation d'une fonction (syntaxe javadoc)
 
-**Exemple :**
+:::{admonition} Exemple
 
 ``` c++
 /** Fonction qui calcule la factorielle
@@ -566,21 +569,24 @@ max(1.5, 3.0)
  **/
 int factorielle(int n) ...
 ```
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-**Une bonne documentation :**
-
+:::{admonition} Une bonne documentation :
+:class: hint
 -   Est concise et précise
 -   Donne les *préconditions* sur les paramètres
 -   Décrit le résultat (ce que fait la fonction)
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-**Astuce pour être efficace :**
-
+:::{admonition} Astuce pour être efficace
+:class: hint
 -   *Toujours commencer par écrire la documentation*  
     De toute façon il faut réfléchir à ce que la fonction va faire!
+:::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -619,42 +625,47 @@ CHECK( factorielle(3) == 6  );
 CHECK( factorielle(4) == 24 );
 ```
 
-+++ {"slideshow": {"slide_type": "fragment"}}
-
-<!-- **Note :** jusqu'en 2020-2021, ainsi que les trois premières séances de
-2021-2022, ce cours utilisait le nom `ASSERT` au lieu de `CHECK`. Le
-changement a eu lieu pour assurer la compatibilité avec
-l'infrastructure `doctest`. Pour simplifier la transition, dans
-l'environnement Jupyter de ce cours, on peut utiliser les deux
-indifféremment. -->
-
 +++ {"slideshow": {"slide_type": "slide"}}
 
 #### Tests d'une fonction
 
-**Astuces pour être efficace :**
+:::{admonition} Astuces pour être efficace
+:class: hint
 
 -   *Commencer par écrire les tests d'une fonction*  
     De toute façon il faut réfléchir à ce qu'elle va faire!
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition}
+:class: hint
 -   Tester les cas particuliers
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition}
+:class: hint
 -   Tant que l'on est pas sûr que la fonction est correcte :
     -   Faire des essais supplémentaires
     -   Capitaliser ces essais sous forme de tests
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition}
+:class: hint
 -   Si l'on trouve un bogue :
     -   Ajouter un test caractérisant le bogue
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition}
+:class: hint
 -   Les *effets de bord* sont durs à tester!
+:::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -748,106 +759,97 @@ factorielle(1+2)
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-#### Syntaxe
+:::{admonition} Syntaxe
 
 ``` c++
 nom(expression1, expression2, ...)
 ```
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-#### Sémantique
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
+:::{admonition} Sémantique
 1.  Evaluation des expressions  
-    Leurs valeurs sont les **paramètres réels**
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
-2.  Allocation de mémoire sur la **pile** pour :
+    Leurs valeurs sont les ***paramètres réels***
+2.  Allocation de mémoire sur la ***pile*** pour :
     -   Les variables locales
     -   Les paramètres formels
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
 3.  Affectation des paramètres réels aux paramètres formels  
     (par copie; les types doivent correspondre!)
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
 4.  Exécution des instructions
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
 5.  Lorsque `return expression` est rencontré, évaluation de
     l'expression qui donne la **valeur de retour de la fonction**
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
 6.  Désallocation des variables et paramètres sur la pile
-
-+++ {"slideshow": {"slide_type": "fragment"}}
-
 7.  La valeur de l'expression `nom(...)` est donnée par la valeur de
     retour
+:::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
 #### Évolution de la pile sur l'exemple
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 1. État initial
-:::
-:::{grid-item-card}
-<img src="media/pile-etat-initial.png" alt="1 case unique contenant '...'" height="20ex"/>
-:::
 ::::
+::::{grid-item-card}
+:::{image} media/pile-etat-initial.png
+:alt: 1 case unique contenant '...'"
+:height: 20ex
+::::
+:::::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 1. Allocation de la mémoire sur la pile 
-:::
-:::{grid-item-card}
-<img src="media/pile-allocation.png" alt="3 cases ajoutées contenant 'int n : ? (paramètre formel)' puis 'int resultat : ? (variable locale)' puis 'int k : ? (variable locale)'. Les 3 cases sont entourées d'une accolade avec marqué 'f'" height="20ex"/>
+::::
+::::{grid-item-card}
+:::{image} media/pile-allocation.png
+:alt: "3 cases ajoutées contenant 'int n : ? (paramètre formel)' puis 'int resultat : ? (variable locale)' puis 'int k : ? (variable locale)'. Les 3 cases sont entourées d'une accolade avec marqué 'f'"
+:height: 20ex
 :::
 ::::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 3 : Affectation du paramètre réel au paramètre formel
-:::
-:::{grid-item-card}
-<img src="media/pile-affectation.png" alt="le point d'interrogation après le n est remplacé par 3" height="20ex"/>
-:::
 ::::
+::::{grid-item-card}
+:::{image} media/pile-affectation.png
+:alt: "le point d'interrogation après le n est remplacé par 3"
+:height: 20ex
+::::
+:::::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 4 : Exécution des instructions
-:::
-:::{grid-item-card}
-<img src="media/pile-exécution.png" alt="Le point d'intrrogation après résultat est remplacé par '6' et celui après k par '4'" height="20ex"/>
-:::
 ::::
+::::{grid-item-card}
+:::{image} media/pile-exécution.png
+:alt: "Le point d'intrrogation après résultat est remplacé par '6' et celui après k par '4'"
+:height: 20ex
+::::
+:::::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-::::{grid}
-:::{grid-item-card}
+:::::{grid}
+::::{grid-item-card}
 5,6,7 : Désallocation de la mémoire sur la pile et valeur de retour
-:::
-:::{grid-item-card}
-<img src="media/pile-retour.png" alt="les 3 cases de la pile sont supprimées. On revient à l'état de départ. La valeur 6 est écrite juste au dessus de la pile avec indiqué 'valeur de retour'" height="20ex"/>
-:::
 ::::
+::::{grid-item-card}
+:::{image} media/pile-retour.png
+:alt: "les 3 cases de la pile sont supprimées. On revient à l'état de départ. La valeur 6 est écrite juste au dessus de la pile avec indiqué 'valeur de retour'"
+:height: 20ex
+::::
+:::::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -908,21 +910,29 @@ b
 -   On peut les modifier.
 -   Mais ...
 
-#### Rappel
++++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition} Rappel
+:class: hint
 Lors d'un appel de fonction ou de procédure, la valeur du paramètre réel
 est **copiée** dans le paramètre formel.
+:::
 
-#### Conséquence
++++ {"slideshow": {"slide_type": "fragment"}}
 
+:::{admonition} Conséquence
 -   Une modification du paramètre formel n'affecte pas le paramètre
     réel
 -   Si la variable est volumineuse (tableaux, chaîne de caractères,
     etc.), cette copie peut être coûteuse
 
-On dit que les paramètres sont passés **par valeur**.
+:::
+
++++ {"slideshow": {"slide_type": "fragment"}}
+
+On dit que les paramètres sont passés ***par valeur***.
 
-Au second semestre, vous verrez le passage de paramètres **par référence**.
+Au second semestre, vous verrez le passage de paramètres ***par référence***.
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -933,18 +943,17 @@ Au second semestre, vous verrez le passage de paramètres **par référence**.
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
-### Fonctions particulières : procédures
+### Fonctions particulières : ***procédures***
 
 Besoin de sous-programmes qui *agissent* au lieu de *calculer* :
 -   On veut produire un effet (affichage, musique, *etc*)
 -   On veut modifier l'état interne d'une structure de donnée
 
-On parle d'**effet de bord**
+On parle d'***effet de bord***
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
-**Exemple :**
-
+:::{admonition} Exemple
 ``` c++
 void avance_tant_que_tu_peux() {
     while ( regarde() == Vide ) {
@@ -952,6 +961,7 @@ void avance_tant_que_tu_peux() {
     }
 }
 ```
+:::
 
 +++ {"slideshow": {"slide_type": "fragment"}}
 
@@ -967,6 +977,7 @@ void avance_tant_que_tu_peux() {
 
 ### Fonctions particulières : fonctions récursives ♣
 
+:::{admonition} Exemple
 ``` c++
 int factorielle(int n) {
     if ( n == 0 ) {
@@ -976,23 +987,29 @@ int factorielle(int n) {
     }
 }
 ```
+:::
 
-+++
++++ {"slideshow": {"slide_type": "fragment"}}
 
-Une ***fonction*** récursive est une fonction qui s'appelle
+:::{admonition} Définition
+Une ***fonction récursive*** est une fonction qui s'appelle
 elle-même.
+:::
 
 Cela peut paraître étrange de définir un objet à partir de lui-même,
 mais c'est comme pour les suites définies par récurrence en
 mathématiques: il faut et il suffit de s'assurer d'avoir un cas de
 base et une étape de récurrence bien posée.
 
-**Exercice :**
++++ {"slideshow": {"slide_type": "fragment"}}
+
+:::{admonition} Exercice
 
 - Exécuter pas à pas :
     - `factorielle(0)`
     - `factorielle(3)`
     - `factorielle(-1)`
+:::
 
 +++ {"slideshow": {"slide_type": "slide"}}
 
@@ -1023,7 +1040,3 @@ base et une étape de récurrence bien posée.
 -   *Tests* : ce que fait la fonction (exemples)
 -   *Code* : comment elle le fait
 
-```{code-cell}
-
-```
-
-- 
GitLab