On choisit un nombre entier positif. S’il est pair, on le divise par deux. S’il est impair, on le multiplie par 3 puis on ajoute 1 au résultat. Dans les deux cas, on applique à nouveau le procédé au dernier nombre trouvé.
Exemple avec 6. On note la suite des nombres au tableau.
Chaque élève choisit un nombre entre 7 et 15 inclus, puis applique le procédé en écrivant les nombres trouvés au fur et à mesure. Vérification pour quelques uns.
Chaque élève doit expliquer le principe :
Soit $u_0$ un entier non nul. Pour tout $n$ de $\mathbb N$, $$ \begin{aligned} u_{n+1} &= u_n / 2 &si\ n\ pair \\\\ u_{n+1} &= 3 u_n + 1 &sinon \\\\ \end{aligned} $$
Demander n
Tant que n ne vaut pas 1
| Afficher n
| Si n est pair, alors
| | n <- n/2
| Sinon
| | n <- 3*n + 1
| Fin du Si
Voir le fichier squelette, qui permet de spécifier le nombre de départ.
On remarque que le pseudo-code et le code Python ne sont pas une traduction exacte du diagramme.
Voir l’article sur Wikipedia.
Pour chaque objectif ci-dessous, créer un algorithme.
Voir cet article Wikipedia pour le vocabulaire.
Pour chacun des algorithmes créé, vous dessinerez un organigramme et écrirez le pseudo-code.
Vous pouvez vous inspirer des éléments de réponse un peu plus haut sur cette page. Il vous suffira d’incorporer un compteur.
i <- 0 # initialisation
i <- i+1 # incrémentation
Afficher i # affichage
à vous de réfléchir où mettre ces intructions : tôt ou tard ?
ni trop tôt ni trop tard ?
Une fois que le professeur a validé l’organigramme et le pseudo-code, vous pouvez tester votre algorithme en le programmant en Python. Vous pouvez télécharger l’algorithme sans compteur programmé en Python pour vous en servir comme base. Pensez à « sauver sous » (File/Save as) un nouveau nom pour chaque fichier avant de faire des modifications.
Parmi les nombres compris entre 1 et 100,
Laissez aller votre imagination et inventez-vous vous-même un problème !