Skip to content

Commit

Permalink
Merge branch 'dev' into documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
elliotvaucher committed Dec 13, 2022
2 parents f1c74df + 0167b38 commit c89892c
Show file tree
Hide file tree
Showing 34 changed files with 1,634 additions and 1,545 deletions.
10 changes: 5 additions & 5 deletions src/appr/algo1/algo-progs.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ Mais est-ce que derrière chaque programme se cache un algorithme ?

## Exercices

````{admonition} Exercice 3.1.1. Jeu de la devinette 🔌
````{exercise} Jeu de la devinette 🔌
:class: note
Ecrire le programme suivant : le programme pense à un nombre au hasard. Lorsque vous lui proposez un nombre, il vous dit si « c'est plus » ou si « c'est moins » jusqu'à ce que vous trouvez le bon nombre. Conseil : utiliser le module Python *random*.
Expand All @@ -168,15 +168,15 @@ Y a-t-il une stratégie gagnante ?
````

````{admonition} Exercice 3.1.2. Plus petit nombre 🔌
````{exercise} Plus petit nombre 🔌
:class: note
Transcrire l’algorithme de l’exercice qui permet de déterminer le plus petit nombre d’une liste, en un programme Python.
````


````{admonition} Exercice 3.1.3. Programmes de tri 🔌
````{exercise} Programmes de tri 🔌
:class: note
Implémenter le tri à bulles et/ou le tri par insertion vus au cours.
Expand Down Expand Up @@ -215,7 +215,7 @@ Lancer votre programme avec 100000 éléments et comparez le temps obtenu avec v
````
-->

````{admonition} Exercice 3.1.4. Tri de Bogo🔌
````{exercise} Tri de Bogo🔌
:class: note
Coder l’algorithme du tri de Bogo en Python (voir chapitre 2 : Le saviez-vous ?).
Expand All @@ -227,7 +227,7 @@ A partir de quelle taille de liste cet algorithme est-il inutilisable ?
````


````{admonition} Exercice 3.1.5. Fibonacci 🔌
````{exercise} Fibonacci 🔌
:class: note
Ecrire un algorithme qui calcule la suite des nombres de Fibonacci.
Expand Down
3 changes: 2 additions & 1 deletion src/appr/algo1/algorithmes.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@


# Les algorithmes

La première question que l'on va se poser est la suivante : qu'est-ce qu'un {glo}`algo|algorithme` ? Est-ce la même chose qu'un programme informatique, ou s'agit-il d'autre chose ?
Expand Down Expand Up @@ -114,7 +115,7 @@ Lisez bien l'algorithme présenté ci-dessus. Quel problème cet algorithme perm
````

`````{solution}
`````{solution} Algorithme mystère
````{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
:animate: fade-in-slide-down
Expand Down
21 changes: 18 additions & 3 deletions src/appr/algo1/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,26 @@
(algo1)=
# Algorithmique I

Nous avons tous entendu parler des algorithmes. Normal, c’est le mot à la mode et que tout le monde utilise sans vraiment le comprendre. Ils sont partout, ils font toutes sortes de choses, ils nous manipulent. Pourquoi en parle-t-on de la même manière que des extraterrestres ? Dans ce cours, nous allons tenter de revenir sur terre, parce que les algorithmes ce n’est pas si compliqué que ça. On apprendra à les définir, à les faire fonctionner et surtout à reconnaître la différence entre un « bon » et un « mauvais » algorithme.
## Quoi ?

Nous avons tous entendu parler des algorithmes dans les médias. Normal, c’est le mot à la mode et que tout le monde utilise sans vraiment le comprendre. Ils sont partout, ils font toutes sortes de choses, même nous manipuler. Pourquoi en parle-t-on de la même manière que des extraterrestres ? Dans ce cours, nous allons tenter de revenir sur terre, parce que les algorithmes ce n’est pas si compliqué que ça. On apprendra à les définir, à les faire marcher et surtout à reconnaître la différence entre un programme et un algorithme, ainsi qu'entre un « bon » et un « mauvais » algorithme.

## Objectifs
<!--
Il y a de fortes chances que vous ayez déjà entendu parler {glo}`algo|d'algorithmes` dans les médias. Il y a aussi de fortes chances que ce mot évoque pour vous des notions bien différentes de celles de votre voisin. L'objectif de ce chapitre est de vous éclairer sur la notion d'algorithme et la distinction avec la notion de programme informatique.
-->

## Pourquoi ?

Les algorithmes existent depuis des millénaires. On doit le nom d'algorithme à Al-Khwârizmî, mathématicien perse né en l'an 780 dont les ouvrages ont contribué à la popularisation des chiffres arabes en Europe, ainsi que la classification de plusieurs algorithmes connus à ce moment. D'ailleurs l'algorithme le plus connu, l'algorithme d'Euclide, date environ de l'an 300 av J.-C. et permet de calculer le plus grand diviseur commun de deux nombres. Si Euclide a bien laissé des traces écrites de cet algorithme, il est vraisemblable qu'il ait puisé cette connaissance auprès de disciples de Pythagore lui-même.

Les algorithmes sont devenus très populaires aujourd'hui grâce à la machine qui a permis de les automatiser. Que ce soit dans votre smartphone, sur un ordinateur ou dans un système embarqué, ils permettent de résoudre une quantité de problèmes, facilement et avec une rapidité impressionnante.

## Comment ?

Dans un premier temps nous allons nous intéresser à la notion même d'algorithme : qu'est-ce qui caractérise un algorithme et comment le faire exécuter par une machine ? Nous allons voir que pour un problème donné il existe de nombreuses solutions, mais que toutes ces solutions ne sont pas de *bonnes* solutions, selon le contexte dans lequel on tente de résoudre le problème. Da


## Objectifs d'apprentissage

À la fin de ce chapitre, vous saurez ce qu'est un algorithme et vous serez capable de transcrire des algorithmes en programmes. Vous saurez résoudre des problèmes, en décomposant leur solution en étapes à suivre. Vous verrez également que pour un même problème, on peut avoir plusieurs solutions avec des propriétés, avantages et désavantages différents.

Expand Down Expand Up @@ -97,7 +113,6 @@ Edsger Dijkstra 🇳🇱
:maxdepth: 2
:hidden:
:numbered: 2
intro
algorithmes
tri
algo-progs
Expand Down
133 changes: 0 additions & 133 deletions src/appr/algo1/intro.md

This file was deleted.

32 changes: 16 additions & 16 deletions src/appr/algo1/tri.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ align : left



````{admonition} Exercice 0 : problème du tri
````{exercise} Problème du tri
:class: note
Trier les rectangles de la ligne du haut de la <a href="#fig-trier">Figure ci-dessus</a> en fonction de leur taille, pour arriver à la disposition de la ligne du bas. Noter toutes les étapes intermédiaires de vos actions et la disposition des rectangles avant d’arriver à la solution finale. Conseil : remplacer les rectangles par un nombre qui représente leur taille.
Expand All @@ -59,7 +59,7 @@ Quels types d'opérations avez-vous effectuées ?
````

````{admonition} Solution 0 : problème du tri
````{solution} Problème du tri
:class: hint
```{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -93,7 +93,7 @@ L’{glo}`algo|algorithme` du **<span style="color:rgb(89, 51, 209)">tri par sé
L’{glo}`algo|algorithme` du **<span style="color:rgb(89, 51, 209)">tri à bulles</span>** compare les éléments voisins, deux par deux. Il commence par comparer les deux premiers éléments de la liste et les met dans le bon ordre (le plus petit des deux éléments précède le plus grand des deux). Il compare ensuite les deux éléments suivants (le nouveau deuxième et le troisième élément de la liste) et les met dans le bon ordre. Il continue de la sorte jusqu’à la fin de la liste. Après ce premier parcours de la liste, le plus grand élément se retrouve en dernière position de la liste. L'algorithme parcourt à nouveau la liste, en comparant et en déplaçant les éléments voisins deux par deux (en excluant également le dernier élément qui est déjà bien trié). Après le deuxième parcours de la liste, le deuxième plus grand élément se retrouve en avant-dernière position de la liste. L'algorithme parcourt la liste de la sorte, autant de fois qu’elle possède d’éléments, en excluant les éléments bien triés en fin de la liste.


````{admonition} Exercice 2.1. Algorithme de tri
````{exercise} Algorithme de tri
:class: note
Il est fortement recommandé de résoudre cet exercice avant d’avancer dans le chapitre.
Expand All @@ -106,7 +106,7 @@ Noter l’ordre des éléments à chaque fois qu’il change. Vous aurez besoin
````

````{admonition} Solution 2.1. Algorithme de tri
````{solution} Algorithme de tri
:class: hint
```{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -158,13 +158,13 @@ align: left



````{admonition} Exercice 2.2. Votre algorithme de tri
````{exercise} Votre algorithme de tri
:class: note
Rappelez-vous quelle méthode vous avez utilisée pour résoudre l’exercice 0. De quel algorithme de tri se rapproche-t-elle le plus ?
````

````{admonition} Solution 2.2. Votre algorithme de tri
````{solution} Votre algorithme de tri
:class: hint
```{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand All @@ -174,7 +174,7 @@ Cela dépend de votre solution de l’exercice 0. Vous avez probablement utilis
```
````

````{admonition} Exercice 2.3. Opérations
````{exercise} Opérations
:class: note
Pour chaque algorithme de tri, compter le nombre de ***<span style="color:rgb(13, 204, 166)">comparaisons</span>*** de la taille de deux rectangles, ainsi que le nombre de ***<span style="color:rgb(13, 204, 166)">déplacements</span>*** (le nombre de fois que deux rectangles échangent leur place).
Expand All @@ -185,7 +185,7 @@ Imaginons que ce qui prend le plus de temps est un ***déplacement***. Dans ce c
````

````{admonition} Solution 2.3. Opérations
````{solution} Opérations
:class: hint
```{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -247,14 +247,14 @@ Dans cette configuration précise, quel algorithme est le plus rapide (présent



````{admonition} Exercice 2.6.1. L'algorithme de votre journée
````{admonition} {exercise} L'algorithme de votre journée
:class: note
Réfléchir à votre journée : y a-t-il des actions qui se retrouvent chaque jour ouvrable ? Arrivez-vous à esquisser un algorithme que vous suivez sans que vous en ayez conscience ?
````

````{admonition} Exercice 2.6.2. Trois algorithmes de tri
````{admonition} {exercise} Trois algorithmes de tri
:class: note
Expand All @@ -263,7 +263,7 @@ Trier la liste [2, 5, 3, 4, 7, 1, 6] en utilisant les trois algorithmes de tri v
````

<!--
`````{admonition} Solution 4. L'algorithme de votre journée
`````{admonition} {exercise} L'algorithme de votre journée
:class: hint
````{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -301,7 +301,7 @@ Se coucher


<!--
`````{admonition} Solution 5. Trois algorithmes de tri
`````{admonition} Solution 2.6. Trois algorithmes de tri
:class: hint
````{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -363,7 +363,7 @@ Voici le détail de toutes les étapes intermédiaires des trois algorithmes de



````{admonition} Exercice 2.6.3. Vérificateur de tri
````{admonition} {exercise} Vérificateur de tri
:class: note
Ecrire un algorithme qui vérifie si une liste est triée.
Expand All @@ -378,7 +378,7 @@ Comparer vos algorithmes. Sont-ils différents ?

<!--
`````{admonition} Exercice 6 : vérificateur de tri
`````{admonition} {exercise} vérificateur de tri
:class: hint
````{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down Expand Up @@ -407,7 +407,7 @@ L'algorithme prend une liste (triée ou non triée) en entrée et retourne `Vrai
-->


````{admonition} Exercice 2.6.4. Mondrian
````{admonition} {exercise} Mondrian
:class: note
Analyser les œuvres cubistes de Piet Mondrian. Trouver un algorithme qui permet de créer une œuvre qui pourrait être attribuée à Mondrian.
Expand All @@ -416,7 +416,7 @@ Analyser les œuvres cubistes de Piet Mondrian. Trouver un algorithme qui permet

<!--
`````{admonition} Exercice 7 : Mondrian
`````{admonition} Exercice 2.8. Mondrian
:class: hint
````{dropdown} <span style="color:grey">Cliquer ici pour voir la réponse</span>
Expand Down
Loading

0 comments on commit c89892c

Please sign in to comment.