Activités d’apprentissage
Sujet 1 :
Le jeu Numbermind est un jeu à deux qui consiste à deviner un numéro de
téléphone.
Le principe du jeu est le suivant :
• - Le premier joueur propose une combinaison de 8 chiffres représentant
le numéro à deviner.
• - Le deuxième joueur annonce une proposition de 8 chiffres, si cette
proposition correspond au numéro à deviner, ce joueur est gagnant sinon
on lui affiche sa proposition à laquelle on garde tous les chiffres bien
placés et on remplace le reste par des tirets tout en mentionnant les
chiffres corrects mais mal placés dans la proposition
• - On répète l'étape précédente jusqu'a trouver le numéro cherché ou
atteindre un nombre d'essais égale à 8.
Pour simuler ce jeu, on donne l'algorithme du programme principal suivant:
0) Début Numbermind
1) Répéter
Ecrire("Saisir le numéro de téléphone à deviner :")
Lire(num)
Jusqu'a (Fn Verif(num))
2) Efface_ecran()
3) Deviner(num)
4) Fin Numbermind
Travail demandé :
a. Traduire l'algorithme Numbermind en un programme Python et
ajouter les déclarations nécessaires.
b. Développer le module Verif qui permet de vérifier si le numéro de
téléphone proposé est composé uniquement par 8 chiffres.
c. Développer le module Deviner qui consiste à :
o - vérifier chaque numéro proposé par le deuxième joueur, en
gardant les chiffres bien placés et en remplaçant le reste par des
tirets tout en mentionnant ceux qui sont correctes mais mal
placés dans la proposition et le nombre d'essai qui lui reste.
o - arrêter le jeu une fois que le deuxième joueur propose un
numéro identique au numéro à deviner ou bien on atteint un
nombre d'essai égale à 8.
o - Afficher le message " Bravo, vous avez gagné" si le joueur 2
réussit à deviner le numéro et le message "Désolé, vous avez
perdu " s'il ne devine pas le numéro après 8 essais
Exemple :
Pour le numéro de téléphone à deviner 68456231 , le programme affiche :
vous avez 8 essais
Proposer un numéro de téléphone :56426179
5 qui est à la position 1 dans la proposition n'est pas à sa bonne position
6 qui est à la position 2 dans la proposition n'est pas à sa bonne position
2 qui est à la position 4 dans la proposition n'est pas à sa bonne position
1 qui est à la position 6 dans la proposition n'est pas à sa bonne position
il vous reste 7 essais
--4-6---
Proposer un numéro de téléphone :63456331
3 qui est à la position 2 dans la proposition n'est pas à sa bonne position
3 qui est à la position 6 dans la proposition n'est pas à sa bonne position
il vous reste 6 essais
6-456-31
Proposer un numéro de téléphone :68456231
Bravo vous avez gagné
Sujet 2 :
Afin de répondre aux besoins des écoles primaires d’une région de Maroc, le
ministère de l’Éducation charge une commission de visiter ces écoles, de
chercher leurs besoins en matériels (Tableaux à craie et tables) et de
déterminer le(s) école(s) ayant le besoin le plus élevé.
Pour automatiser les tâches de cette commission, on se propose d’écrire un
programme permettant:
• de remplir un premier tableau TE par les N codes des écoles primaires
avec 2≤N≤250. Le code d’une école est une chaîne de 6 chiffres.
• de remplir un deuxième tableau TB par les besoins matériels des
écoles en tableaux à craie et en tables sous le format suivant
: Nombre_de_tableaux#Nombre_de_tables sachant que chaque
besoin ne doit pas dépasser 999. Exemples : "852#999", "0#105",
"52#0"
• de calculer dans un troisième tableau TBU, le budget nécessaire pour
chaque école calculé comme suit : P1*Nombre_de_tableaux +
P2* Nombre_de_tables sachant que P1 et P2 sont respectivement
les prix d’un tableau à craie et d’une table et qui sont deux constantes
dont les valeurs en Dirhams sont 80 et 160.
• d’afficher toutes les écoles ayant le besoin budgétaire le plus élevé en
matériels.
Pour cela on propose l’algorithme du programme principal suivant :
0) Début Besoin
1) Répéter
Ecrire ("Donner le nombre d’écoles à visiter : ")
Lire(N)
Jusqu’a (N dans [2..250])
2) PROC Remplir(TE,TB,N)
3) PROC Generer(TB,TBU,N)
4) PROCAfficher (TE,TBU,N)
5) Fin Besoin
Exemple : Pour N=8 et les deux tableaux TE et TB suivants :
TE 310600 035100 199600 001800 421200 600700 059700 776600
1 2 3 4 5 6 7 8
TB 10#8 100#16 17#0 32#50 8#0 0#0 5#5 2#10
1 2 3 4 5 6 7 8
Le tableau TBU sera :
TBU 2080 10560 1360 10560 640 0 1200 1760
1 2 3 4 5 6 7 8
En effet, l’école dont le code est "310600" a besoin de 10 tableaux à craie
et de 8 tables ("10#8"). Le budget est calculé comme suit :
10*80+8*160=2080.
Le programme affiche :
Le besoin budgétaire le plus élevé est 10560 D et les écoles concernées sont
: 035100 - 001800
Travail demandé :
a. Traduire l'algorithme Besoin en un programme Python et ajouter les
déclarations nécessaires.
b. Développer le module Remplir qui permet de remplir deux
tableaux TE et TB en respectant les contraintes décrites
précédemment.
c. Développer le module Generer qui permet de générer un troisième
tableau TBU le budget nécessaire pour chaque école.
d. Développer le module Afficher qui permet d’afficher le budget le plus
élevé et le(s) école(s) concernée(s) par ce budget.