PTSI 2016/2017 INFO Lycée La Martinière Monplaisir - Lyon
1
TP 3. Découverte de l’Algorithmique
Bonnes pratiques en programmation :
Le signe # est utilisé devant un commentaire. Pour chaque exercice, vous devrez en entête inscrire le titre de
l’exercice.
Les tests effectués dans le shell seront copiés et collés dans le script de votre programme. Le signe de commentaire
# en début de ligne peut être mis en sélectionnant les lignes à commenter et en choisissant « comment out region »
dans l’onglet format (pour décommenter, vous pouvez utiliser « uncomment region »).
Avant toute chose, créer un répertoire « TP3 » dans votre répertoire « Informatique » sur votre espace
personnel. Sur le site delphine.sembely.free.fr/tp.html, télécharger les fichiers nombre_mystere.py
et tri_colis.py que vous copiez dans votre répertoire « TP3 ».
1 LE NOMBRE MYSTERE
Ouvrir le programme nombre_mystere.py. L’exécuter et le tester rapidement.
Quelle est la méthode est la plus adaptée pour réussir à trouver le nombre rapidement ?
Analyse de l’algorithme existant
Donner le rôle de la ligne « import random as r ».
Lister les variables utilisées, donner leur type et la nature des informations qu’elles
contiennent.
Décrire la structure du programme sous forme d’un schéma.
Amélioration de l’algorithme
Améliorer le programme de sorte que le jeu s’arrête dès que le nombre mystère a été trouvé, et
qu’il affiche un message à l’utilisateur lorsque celui-ci a perdu.
2 ALGORITHME DE TRAITEMENT DE COLIS
Dans un centre de tri des colis La Poste, une partie de la
chaine trie les colis à destination du Rhône de ceux à
destination de l’Ain. Un capteur optique lit le code à barres
collé sur le colis. La donnée est traitée et le colis dirigé vers
le tapis roulant adéquat. Chaque colis est pesé afin que les
chariots ne dépassent pas une charge de 100kg. Cette
procédure permet aussi de réaliser des statistiques sur la
quantité de colis traités en fonction de la destination.
Analyse de l’algorithme existant
Question 1 : Ouvrir le programme tri_colis.py. L’exécuter et le tester rapidement.
Question 2 : Indiquer le type et le rôle des variables suivantes : Liste_colis, Liste_masse, n, i, prov,
masse.
Modification de l’algorithme
Question 3 : Compléter le programme de manière à afficher en continu la masse totale traitée ainsi
que le nombre de colis en provenance de l’Ain et du Rhône. Le programme doit aussi afficher en fin de
traitement les statistiques de tri : proportion (en %) de colis à destination du Rhône et masse totale
traitée.
Question 4 : Lorsque qu’un chariot dépasse 100kg, l’opérateur doit en être informé avec un message
« chariot de colis destination Rhône (ou Ain) plein ». On suppose que le chariot est alors changé
automatiquement et ceci de manière instantannée. Le tri continue normalement. Modifier le
programme afin de répondre à cette nouvelle contrainte. Afficher au fur et à mesure les masses des
deux types de chariot afin de contrôler votre travail.
Informatique pour
Tous
2
Facultatif)
On souhaite que l’opérateur puisse interrompre le tri à tout moment en appuyant sur la touche « q ».
par :
t.sleep(0.5) #attente
Reponse = input(« Taper « Q » pour Quitter, entrée pour
poursuivre le tri…) #attente reponse
Il faudra alors presser la touche « Entrée » du clavier pour passer au colis suivant.
Question 5 : Modifier le programme pour permettre l’interruption par l’opérateur.
3 ALGORITHMES ELEMENTAIRES
Cette partie sera traitée dans un nouveau fichier que vous pouvez nommer TP3.py.
Données :
Les deux lignes de code suivantes permettent d’affecter aux variables n et m des valeurs entrées au
clavier :
n = input(« Quelle est la valeur de n ? Entrez un entier positif »)
m = input(« Quelle est la valeur de m ? Entrez un entier positif strictement supérieur à n »)
Question 1 : Tester ces deux lignes de programme, quel est le type de n et de m ?
Question 2 : Écrire un programme Python permettant à l’utilisateur de choisir deux entiers n et m
tels que n < m et affichant séparément parmi tous les entiers contenus dans l’intervalle [n, m] :
ceux qui sont impairs ;
puis ceux sont multiples de 5 ;
(Facultatif) puis ceux qui contiennent le chiffre 2.
Question 3 : Déterminer le plus petit entier n tel que n! dépasse strictement 1010.
4 ALGORITHME GLOUTON RENDU DE MONNAIE
On s’intéresse à un système de caisses automatiques utilisées par
exemple dans des boulangeries. Le client glisse directement les
billets ou les pièces dans la machine qui se charge de rendre
automatiquement la monnaie.
Objectif : Afin de satisfaire les clients, on cherche à déterminer un
algorithme qui va permettre de rendre le moins de monnaie
possible.
La machine dispose de billets de 20€, 10€ et 5€ ainsi que des pièces de 2€, 1€, 0.5€, 0.2€, 0.1€,
0.05€, 0.02€ et 0.01€. On suppose que la machine dispose d’un nombre suffisant de billets et de
pièces.
On se propose donc de concevoir un algorithme qui demande à l’utilisateur la somme totale à payer
ainsi que le montant donné par l’acheteur. L’algorithme doit alors afficher quels sont les billets et les
pièces à rendre par le vendeur.
Question 1 : Pour un montant d’achat donné et pour une somme donnée par le client, proposer un
algorithme en pseudo code permettant de rendre le minimum de monnaie au client. Cet algorithme
devra détailler la somme à rendre (nombre de pièces et nombre de billets).
Question 2 : Implémenter cet algorithme dans Python.
Question 3 : Vérifier sur plusieurs cas que l’algorithme fonctionne, en particulier sur les cas
suivants :
Montant d’achat : 75€ ; somme donnée : 100€
Montant d’achat : 75,25€; somme donnée : 100€
Question 4 : Quel type de variable est-il préférable d’utiliser pour décompter l’argent ?
1 / 2 100%