Devoir `a la maison d`Informatique

Transcription

Devoir `a la maison d`Informatique
Devoir à la maison d’Informatique
Florent Bouchez
[email protected]
à rendre avant le 13 juin 2005
Résumé
Les deux parties de ce DM sont indépendantes, mais obligatoires
toutes les deux. Seules les questions notées « supplémentaires » sont
subsidiaires.
Vous devez rendre ce devoir sur une feuille normale, ce qui vous
empêche de le taper sur ordinateur pour vérifier son comportement.
Ce n’est pas du sadisme, c’est juste dans un souci en partie égalitaire
puisque tout le monde n’a pas accès à une machine possédant Turbo
Pascal 71 mais surtout puisqu’aux concours vous n’aurez pas non plus
d’ordinateur à disposition. Voici une liste de recommandations ou rappels :
– indentez correctement votre code (dans les boucles, les conditions, . . .) ;
– utilisez des commentaires dans votre code { comme ça } pour
expliquer ce que vous faites ;
– n’oubliez pas de begin ... end s’il y a plusieurs instructions
dans une boucle (mieux vaut en mettre trop que pas assez) ;
– ne pas confondre = (test d’égalité) et := (affectation) ;
– ne recopiez pas bêtement des corrigés de TDs si vous ne les
comprenez pas, ça se voit . . .2 ;
1
Remarque : celui-ci est en téléchargement libre sur le site http ://turbopascal.developpez.com
2
Mais bien sûr vous pouvez vous en inspirer, pour ceux qui ne les ont pas, photocopiez
ceux de vos camarades ou si vous avez internet http://perso.ens-lyon.fr/florent.
bouchez/enseignement/TD-pascal
1
1
Probabilités
Dans cette partie, le but est de calculer des probabilités d’évènements, et
de simuler des évènements aléatoires.
Question 1 Écrivez une fonction lance de qui simule le lancé d’un dé
à six faces : cette fonction devra renvoyer une valeur entre 1 et 6. Que fautil ajouter dans le programme principal pour que les valeurs renvoyées par la
fonction ne soient pas toujours les mêmes à chaque exécution du programme ?
On s’intéresse à l’évènement « obtenir un 6 ». On note p sa probabilité
et q = 1 − p la probabilité d’obtenir un autre chiffre.
Question 2
1. Combien vaut p ? (on utilisera toujours par la suite la variable p plutôt
que la valeur)
2. Quelle est la probabilité d’obtenir 6 au k ème lancé ?
3. Quelle est la probabilité d’obtenir le premier 6 au k ème lancé ?
4. Quelle est la probabilité d’obtenir le nème 6 au k ème lancé ?
5. Quelle est la probabilité d’obtenir n 6 au cours de k lancés ?
Question 3 Faites une procédure qui lance un dé jusqu’à obtenir 6, puis
écrit le nombre de lancés effectués ainsi que la probabilité que cet évènement
arrive.
Question 4 Faites une procédure qui lance un dé jusqu’à obtenir le nème
6 (n donné en argument). De même, elle doit écrire le numéro du dernier
lancé et sa probabilité.
Question 5 Faites une procédure qui lance k fois le dé et compte le
nombre de 6 obtenus, Elle écrit alors ce nombre et sa probabilité.
On s’intéresse maintenant à des tirages de boules roses et violettes.
Question 6 Faites une fonction tirage rose (n, m : integer) :
boolean ; qui simule le tirage d’une boule parmi n boules roses et m boules
2
violettes. La fonction doit renvoyer True si la boule tirée est rose, False sinon.
Question 7 Faites une procédure qui simule le tirage de k boules (sans
remise) parmi n roses et m violettes. Elle doit écrire le nombre de boules
roses tirées.
Question 8 Quelle est la probabilité de tirer exactement p boules roses
lors de k tirages parmi n boules roses et m boules violettes ?
Question 9 Écrivez donc une fonction fact qui calcule la factorielle,
ainsi qu’une fonction binome pour calculer les coefficients binomiaux.
Servez vous en pour modifier votre procédure de tirage pour qu’elle indique
la probabilité de l’évènement obtenu.
Question supplémentaire 10 Ecrivez une procédure qui utilise une
fonction lance autre de (que vous supposez fournie) et qui certifie à 99%
que :
– soit le dé simulé par la fonction est bien équilibré (tous les chiffres sont
équiprobables)
– soit le dé est pipé (donner alors les probabilités d’obtenir chacun des
chiffres)
2
Les tours de Hanoı̈
Le principe des tours de Hanoı̈ est le suivant : des moines tibétains disposent de trois tours en diamant ; sur la première sont empilés 64 disques
d’or pur classés par ordre de taille (le plus grand en bas). Le but est de
déplacer toute la pile de disques de la première tour vers la troisième. Quand
les moines auront réussi, ce sera la fin du monde. Vous croyez que c’est facile
et que la fin du monde est pour bientôt. En fait non. Car il existe deux règles :
– on ne peut déplacer qu’un disque à la fois3 ;
– on ne peut placer un disque que sur un disque de diamètre plus grand.
3
normal, c’est vachement lourd l’or pur
3
Par exemple, si on n’avait que deux disques :
Fig. 1 – Solution aux Tours de Hanoı̈ à deux disques
Question 11 Transformez-vous en moine tibétain, allez chercher le
Dalaı̈-Lama, et au passage trouvez la solution pour 3 disques.
Question 12 En utilisant la formule magique « faire comme avec 3
disques », expliquez comment résoudre le problème à 4 disques.
Question 13 Déduire de la question précédente comment résoudre le
problème à n disques quand on connait la solution à n − 1 disques.
Maintenant, vous allez écrire le programme Pascal qui résoud le problème
à n disques. Par exemple pour n = 2, le programme devra afficher :
1 => 2
1 => 3
2 => 3
Avec la notation x => y signifie « déplacer le disque au sommet de la tour
x vers la tour y.
4
Question 14 Écrire une procédure Pascal Hanoi(disques, depart,
pivot, fin : integer) qui affiche comment déplacer disques disques placés
sur la tour depart vers la tour fin en utilisant pivot comme intermédiaire.
Remarque : la procédure devra s’appeler elle même avec disques-1 comme
argument.
Question 15 On note dn le nombre de déplacements de disques nécessaires
pour résoudre le problème à n disques.
Combien vaut d1 ?
Combien vaut dn en fonction de dn−1 ?
En déduire dn en fonction n.
Question supplémentaire 16 Prennez n = 64, supposez que vous êtes
un super moine capable de changer un disque de place par seconde et calculer
dans combien de temps en minutes, heures, mois, jours, années . . .(trouver
la bonne échelle de temps) aura lieu la fin du monde.
Question supplémentaire 17 Ayez le vertige, sentez vous tout petit
devant l’immensité de l’univers, puis arrêtez d’être un moine tibétain et redevenez vous-même.
5