Algorithmique I

3. Des algorithmes aux programmes

Solution des exercices

Exercice 1 – Jeu de la devinette 🔌

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 ayez trouvé.

Solution 1 – Jeu de la devinette 🔌

Exercice 2 – Plus petit nombre 🔌

Transcrire l’algorithme de l’exercice qui permet de déterminer le plus petit nombre d’une liste, en un programme Python.

Solution 2 – Plus petit nombre 🔌

Exercice 3 – Programmes de tri 🔌

Implémenter le tri à bulles et/ou le tri par insertion vus au cours.

Créer une liste qui contient les valeurs de 1 à n dans un ordre aléatoire, où n prend la valeur 10, par exemple. Vous pouvez utiliser la fonction shuffle() du module random.

Pour aller plus loin.

A l’aide du module time et de sa fonction time(), chronométrez le temps prend le tri d’une liste de 100, 500, 1000, 10000, 20000, 30000, 40000 puis 50000 nombres.

Noter les temps obtenus et affichez-les sous forme de courbe dans un tableur. Ce graphique permet de visualiser le temps d’exécution du tri en fonction de la taille de la liste. Que constatez‑vous ?

Sur la base de ces mesures, pouvez-vous estimer le temps que prendrait le tri de 100000 éléments ?

Lancer votre programme avec 100000 éléments et comparez le temps obtenu avec votre estimation.

Solution 3 – Programmes de tri 🔌

Exercice 4 – Bogosort 🔌

Coder l’algorithme du tri de Bogo en Python (voir chapitre 2 : Le saviez-vous ?).

Relancer l’algorithme plusieurs fois, en notant le nombre d’itération nécessaires pour qu’il termine.

A partir de quelle taille de liste cet algorithme est-il inutilisable ?

Solution 4 – Bogosort 🔌

Exercice 5 – Fibonacci 🔌

Ecrire un algorithme qui calcule la suite des nombres de Fibonacci.

Traduire l’algorithme en une fonction Python.

Comparer avec les solutions trouvées par vos camarades de classe.

Solution 5 – Fibonacci 🔌