Skip to content
Snippets Groups Projects
Commit 01c7f9e9 authored by paul.albuquer's avatar paul.albuquer
Browse files

corrected typos slides cours_8

parent 407e099d
No related branches found
No related tags found
No related merge requests found
...@@ -175,7 +175,7 @@ bool board[n][n]; ...@@ -175,7 +175,7 @@ bool board[n][n];
```C ```C
// Pour chaque ligne placer la reine sur toutes les colonnes // Pour chaque ligne placer la reine sur toutes les colonnes
// Et compter les solutions // et compter les solutions
void nbr_solutions(board, coloumn, counter); void nbr_solutions(board, coloumn, counter);
// Placer la reine à li, co et rendre inaccessible devant // Placer la reine à li, co et rendre inaccessible devant
void placer_devant(board_ini, board, li, co); void placer_devant(board_ini, board, li, co);
...@@ -190,7 +190,7 @@ void placer_devant(board_ini, board, li, co); ...@@ -190,7 +190,7 @@ void placer_devant(board_ini, board, li, co);
nbr_solutions(board, column, counter) nbr_solutions(board, column, counter)
// pour chaque ligne // pour chaque ligne
// si la case libre // si la case libre
// si clumn < n - 1 // si column < n - 1
// créer un nouveau board, poser une reine // créer un nouveau board, poser une reine
// et mettre à jour le tableau // et mettre à jour le tableau
// nbr_solutions(board, column, counter) // nbr_solutions(board, column, counter)
...@@ -209,7 +209,7 @@ placer_devant(old_board, board, ligne, colonne) ...@@ -209,7 +209,7 @@ placer_devant(old_board, board, ligne, colonne)
// board = copy(board); // board = copy(board);
// board est occupé à ligne/colonne // board est occupé à ligne/colonne
// toutes les cases des colonnes // toutes les cases des colonnes
// suivantes sont mises à jour // suivantes sont mises à jour
``` ```
# Le code du problème des 8 reines (4/N) # Le code du problème des 8 reines (4/N)
...@@ -228,8 +228,8 @@ void nb_sol(int n, bool board_ini[n][n], int co, int *ptr_cpt) { ...@@ -228,8 +228,8 @@ void nb_sol(int n, bool board_ini[n][n], int co, int *ptr_cpt) {
for (int li = 0; li < n; li++) { for (int li = 0; li < n; li++) {
if (board_ini[li][co]) { if (board_ini[li][co]) {
if (co < n - 1) { if (co < n - 1) {
bool board[n][n]; // alocation à chaque bool board[n][n]; // allocation
nouvelle tentative // à chaque nouvelle tentative
prises_devant(n, board_ini, board, li, co); prises_devant(n, board_ini, board, li, co);
nb_sol(n, board, co + 1, ptr_cpt); nb_sol(n, board, co + 1, ptr_cpt);
} else { } else {
...@@ -278,7 +278,7 @@ void prises_devant( ...@@ -278,7 +278,7 @@ void prises_devant(
* de type `LIFO` (*Last in first out*). * de type `LIFO` (*Last in first out*).
![Une pile où on ajoute A, puis B avant de les retirer. Souce: ![Une pile où on ajoute A, puis B avant de les retirer. Source:
[Wikipedia](https://upload.wikimedia.org/wikipedia/commons/e/e1/Stack_%28data_structure%29_LIFO.svg)](figs/Stack.svg){width=70%} [Wikipedia](https://upload.wikimedia.org/wikipedia/commons/e/e1/Stack_%28data_structure%29_LIFO.svg)](figs/Stack.svg){width=70%}
## Des exemples de la vraie vie ## Des exemples de la vraie vie
...@@ -296,13 +296,13 @@ void prises_devant( ...@@ -296,13 +296,13 @@ void prises_devant(
. . . . . .
1. Empiler (push), ajouter un élément sur la pile, 1. Empiler (push): ajouter un élément sur la pile.
2. Dépiler (pop), retirer l'élément du sommet de la pile et le retrouner, 2. Dépiler (pop): retirer l'élément du sommet de la pile et le retrouner.
3. Liste vide? (is_empty?) 3. Liste vide? (is_empty?).
. . . . . .
4. Jeter un oeil (peek), retourner l'élément du sommet de la pile (sans le dépiler), 4. Jeter un oeil (peek): retourner l'élément du sommet de la pile (sans le dépiler).
5. Nombre d'éléments (length). 5. Nombre d'éléments (length).
## Comment faire les 4,5 à partir de 1 à 3? ## Comment faire les 4,5 à partir de 1 à 3?
...@@ -310,7 +310,7 @@ void prises_devant( ...@@ -310,7 +310,7 @@ void prises_devant(
. . . . . .
4. Dépiler l'élément, le copier, puis l'empiler à nouveau. 4. Dépiler l'élément, le copier, puis l'empiler à nouveau.
5. Dépiler jusqu'à ce que la pile soit vide puis empiler à nouveau. 5. Dépiler jusqu'à ce que la pile soit vide, puis empiler à nouveau.
. . . . . .
...@@ -323,7 +323,7 @@ mémoire). ...@@ -323,7 +323,7 @@ mémoire).
## Implémentation ## Implémentation
* Jusqu'ici on a pas du tout parlé d'implémentation (d'où le nom de structure * Jusqu'ici on n'a pas du tout parlé d'implémentation (d'où le nom de structure
abstraite). abstraite).
* Pas de choix unique d'implémentation. * Pas de choix unique d'implémentation.
...@@ -331,7 +331,7 @@ mémoire). ...@@ -331,7 +331,7 @@ mémoire).
. . . . . .
Et oui vous avez deviner: un tableau! Et oui vous avez deviné: un tableau!
## La structure: de quoi avons-nous besoin (pile de taille fixe)? ## La structure: de quoi avons-nous besoin (pile de taille fixe)?
...@@ -412,13 +412,13 @@ int stack_peek(stack *s) { ...@@ -412,13 +412,13 @@ int stack_peek(stack *s) {
# Gestion d'erreur, level 0 # Gestion d'erreur, level 0
* Il y a plusieurs façon de traiter les erreur: * Il y a plusieurs façon de traiter les erreur:
* Rien faire (laisser la responsabilité à l'utilisateur). * Ne rien faire (laisser la responsabilité à l'utilisateur).
* Faire paniquer le programme (il plante plus ou moins violemment). * Faire paniquer le programme (il plante plus ou moins violemment).
* Utiliser des codes d'erreurs. * Utiliser des codes d'erreurs.
## La panique ## La panique
* En C on a les `assert()` pour faire paniquer un programme. * En C, on a les `assert()` pour faire paniquer un programme.
# Assertions (1/3) # Assertions (1/3)
...@@ -433,7 +433,7 @@ void assert(int expression); ...@@ -433,7 +433,7 @@ void assert(int expression);
- Macro permettant de tester une condition lors de l'exécution d'un programme: - Macro permettant de tester une condition lors de l'exécution d'un programme:
- Si `expression == 0`{.C} (condition fausse), `assert()`{.C} affiche un message d'erreur sur `stderr`{.C} et termine l'exécution du programme. - Si `expression == 0`{.C} (condition fausse), `assert()`{.C} affiche un message d'erreur sur `stderr`{.C} et termine l'exécution du programme.
- Sinon l'exécution se poursuit normalement. - Sinon l'exécution se poursuit normalement.
- Peuvent être désactivés avec `-DNDEBUG` (équivalent à `#define - Peuvent être désactivés à la compilation avec `-DNDEBUG` (équivalent à `#define
NDEBUG`) NDEBUG`)
## À quoi ça sert? ## À quoi ça sert?
...@@ -473,7 +473,7 @@ int stack_peek(stack *s) { ...@@ -473,7 +473,7 @@ int stack_peek(stack *s) {
- Vérification de la validité des pointeurs (typiquement `!= NULL`{.C}). - Vérification de la validité des pointeurs (typiquement `!= NULL`{.C}).
- Vérification du domaine des indices (dépassement de tableau). - Vérification du domaine des indices (dépassement de tableau).
## Bug vs erreur de *runtime* ## Bug vs. erreur de *runtime*
- Les assertions sont là pour détecter les bugs (erreurs d'implémentation). - Les assertions sont là pour détecter les bugs (erreurs d'implémentation).
- Les assertions ne sont pas là pour gérer les problèmes externes au programme (allocation mémoire qui échoue, mauvais paramètre d'entrée passé par l'utilisateur, ...). - Les assertions ne sont pas là pour gérer les problèmes externes au programme (allocation mémoire qui échoue, mauvais paramètre d'entrée passé par l'utilisateur, ...).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment