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