diff --git a/slides/cours_5.md b/slides/cours_5.md index 42e99d46cefdd0a6110adfed9c8060ed1f07aec4..0a270644e4399de45249fe307398aa29e9a29f3d 100644 --- a/slides/cours_5.md +++ b/slides/cours_5.md @@ -50,6 +50,8 @@ date: "2022-11-02" ## Réusiner votre couverture de la reine avec des `enum` +A faire à la maison comme exercice! + # Représentation des nombres (1/2) * Le nombre `247`. @@ -124,7 +126,7 @@ $$ ```C num = 247 - while (2^N < num) { + tant que (2^N < num) { N += 1 } ``` @@ -134,7 +136,7 @@ $$ 2. Boucle ```C - while (N >= 0) { + tant que (N >= 0) { bit = num / 2^N num = num % 2^N N += 1 @@ -194,7 +196,7 @@ $$ . . . $$ -4294967295 +2^{32}-1=4'294'967'295 $$ @@ -202,7 +204,7 @@ $$ Que donne la multiplication de `1101` avec `0110`? -* L'addition est la même que dans le système décimal +* La mutliplication est la même que dans le système décimal ``` 1101 13 @@ -335,7 +337,7 @@ Pas de nombres négatifs encore... 11111110 => 00000001 + 00000001 = 00000010 = 2. ``` -# Le complément à 2 (1/2) +# Le complément à 2 (2/2) ## Quels sont les entiers représentables en 8 bits? @@ -543,8 +545,8 @@ $$ . . . * 24 bits ($23 + 1$) sont utiles pour la mantisse, soit $2^{24}-1$: - * La mantisse fait $\sim2^{24}\sim 10^7$, ou encore - * Ou encore $\sim \log_{10}(2^{24})\sim 7$, + * La mantisse fait $\sim2^{24}\sim 10^7$, + * Ou encore $\sim \log_{10}(2^{24})\sim 7$. * Environ **sept** chiffres significatifs. # Nombres à virgule flottante double précision (64bits) @@ -670,8 +672,11 @@ Soit une erreur de près de 1/5e! . . . -## Le même phénomène se produit (à plus petite échelle) avec les `float` ou -`double`. +## Le même phénomène se produit (à plus petite échelle) avec les `float` ou `double`. + +# And now for something completely different + +\Huge La récursivité # Exemple de récursivité (1/2) @@ -781,6 +786,10 @@ int factorial(int n) { . . . +Rappelez-vous vous l'avez fait en style **impératif** plus tôt. + +. . . + ```C double epsilon_machine(double eps) { if (1.0 + eps != 1.0) { @@ -793,6 +802,8 @@ double epsilon_machine(double eps) { # La récursivité (4/4) +\footnotesize + ## Exercice: que fait ce code récursif? ```C @@ -810,10 +821,14 @@ recurse(13); . . . ```C -binaire(13): n = 13, n % 2 = 1, n / 2 = 6, - binaire(6): n = 6, n % 2 = 0, n / 2 = 3, - binaire(3): n = 3, n % 2 = 1, n / 2 = 1, - binaire(1): n = 1, n % 2 = 1, n / 2 = 0. +recurse(13): n = 13, n % 2 = 1, n / 2 = 6, + recurse(6): n = 6, n % 2 = 0, n / 2 = 3, + recurse(3): n = 3, n % 2 = 1, n / 2 = 1, + recurse(1): n = 1, n % 2 = 1, n / 2 = 0. // affiche: 1 1 0 1 ``` + +. . . + +Affiche la représentation binaire d'un nombre!