La barrière automatique est installée dans les villes sur les intersections entre la voie ferrée et la route.
En temps normal, la barrière est toujours levée et les voitures circulent.
Lors de l'arrivée d'un train, la barrière descend et une sirène se fait entendre pour alerter les
automobilistes du danger et les insiter à s'arrêter.
La situation est schématisée comme suit :
Algorigramme barrière automatique
On demande d'écrire un programme pour simuler cette situation :
Quelles sont les entrées du programme ?
Combien y-a-t'il de résultats possibles pour le programme ?
Utiliser une structure conditionnelle à forme réduite pour implémenter le programme.
Jeu Pile/Face
Jeu Pile/Face
Pour choisir le possesseur du ballon au début d'un match de football on procède au jeu Pile/Face.
Ce jeu est joué contre l'ordinateur de la façon suivante :
L'utilisateur fait son choix (0 : Pile et 1 : Face) ch1
L'ordinateur fait le tirage au sort, choix d'un nombre au hasard 0 ou 1 ch2
On affiche le gagnant :
Si ch1 est égal à ch2 l'Utilisateur gagne,
Si ch1 est différent de ch2 l'Utilisateur perd.
On demande d'écrire un programme pour simuler cette situation :
Quelles sont les entrées du programme ?
Combien y-a-t'il de résultats possibles pour le programme ?
Comment l'ordinateur peut-il choisir une valeur aléatoire ?
Peut-on utiliser une structure conditionnelle à forme réduite pour implémenter ce programme ? Pourquoi ?
Utiliser une structure conditionnelle à forme alternative pour implémenter le programme.
Subway Surf
Bonus Subway Surf
Dans le jeu Subway Surf on peut gagner des boîtes mystères gratuites. Lorsqu'on clique sur le bouton
gratuit, l'ordinateur choisit une valeur aléatoire de 0 à 7 qui correspond à l'un des bonus suivants :
Si choix est égal à 0 on gagne 3 Insignes
Si choix est égal à 1 on gagne 800 pièces
Si choix est égal à 2 on gagne 3 Hoverboards
Si choix est égal à 3 on gagne 2000 pièces
Si choix est égal à 4 on gagne une clé
Si choix est égal à 5 on gagne un avantage de départ
Si choix est égal à 6 on gagne un booster de score
Si choix est égal à 7 on gagne 2 clés
On demande d'écrire un programme pour simuler cette situation :
Quelles sont les entrées du programme ?
Combien y-a-t'il de résultats possibles pour le programme ?
Comment l'ordinateur peut-il choisir une valeur aléatoire ?
Peut-on utiliser une structure conditionnelle à forme alternative pour implémenter ce programme ? Quel est
son inconvénient ?
Utiliser une structure conditionnelle à forme généralisée pour implémenter le programme.
Résumé
Structure conditionnelle à forme réduite
Une structure conditionnelle simple à forme réduite admet un seul traitement qui sera exécuté
uniquement si la condition est vraie.
Forme simple réduite
if condition:
traitements
Si condition Alors
traitements
Fin Si
Exemple
# Valeur absolue d'un nombre x
absx = x
if x < 0:
absx = -x
print("abs(", x, ")=", absx)
// Valeur absolue d'un nombre x
absx ← x
Si x < 0 Alors
absx ← -x
Fin Si
Ecrire("abs(", x, ")=", absx)
Structure conditionnelle à forme alternative
Une structure conditionnelle à forme alternative admet deux traitements différents :
Le premier traitement est exécuté uniquement si la condition est vraie,
Le second traitement est exécuté uniquement si la condition est fausse.
Forme simple alternative
if condition:
traitement1
else:
traitement2
Si condition Alors
traitement1
Sinon
traitement2
Fin Si
Exemple
# Maximum de deux nombres
if a > b:
max = a
else:
max = b
print("max=", max)
// Maximum de deux nombres
Si a > b Alors
max = a
Sinon
max = b
Fin Si
Ecrire("max=", max)
Structure conditionnelle à forme généralisée
Une structure conditionnelle simple à forme généralisée admet trois traitements différents
ou plus qui seront exécutés en fonction de plusieurs conditions.
Forme simple généralisée
if condition:
traitement1
elif condition2:
traitement2
else:
traitement3
Si condition1 Alors
traitement1
Sinon Si condition2 Alors
traitement2
Sinon
traitement3
Fin Si
Exemple
# Comparaison entre deux nombres
if a > b:
eq = ">"
elif a < b:
eq = "<"
else:
eq = "="
print(a, eq, b)
// Comparaison entre deux nombres
Si a > b Alors
eq ← ">"
Sinon Si a < b Alors
eq ← "<"
Sinon
eq ← "="
Fin Si
Ecrire(a, eq, b)
Générateur de nombres aléatoires
Comme tous les autres langages, Python offre des fonctions pour générer des nombres aléatoires.
La fonction randint(a, b) retourne un nombre aléatoire dans l'intervalle [a, b].
from random import randint
variable = randint(a, b)
// Aucun module ne doit être importé
variable ← aléa(a, b)
Exemple
from random import randint
# Simuler un lancement de dé
de = randint(1, 6)
// Aucune importation
// Simuler un lancement de dé
de ← aléa(1, 6)
Un vendeur de poissons veut calculer le prix de vente de ses marchandises en fonction du prix d'achat.
Prix vente = Prix achat × (1 + gain / 100)
Sachant que :
gain = 20%, si 0 ≤ Prix achat < 15
gain = 25%, si 15 ≤ Prix achat < 30
gain = 35%, si 30 ≤ Prix achat
Ecrire l'algorithme d'un programme qui :
Saisit le nom du produit, variable np
Saisit le prix d'achat, variable pa
Calcule le gain en fonction du prix d'achat, variable g
Calcule le prix de vente en utilisant la formule ci-dessus, variable pv
Affiche le prix de vente
Calcul du prix de vente
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-
Quel est le nom du produit ? Sardines
Quel est le prix d'achat (DT) ? 5
Gain : 20 %
Prix de vente : 6.0 DT
Calcul du prix de vente
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-
Quel est le nom du produit ? Trilia
Quel est le prix d'achat (DT) ? 20
Gain : 25 %
Prix de vente : 25.0 DT
Vendeur ambulant
Vendeur ambulant
Un vendeur ambulant vend trois catégories d'articles dans un marché de la région.
Les prix respectifs de ces articles sont :
Catégorie A : 1DT/pièce
Catégorie B : 3DT/pièce
Catégorie C : 5DT/pièce
En fin de journée, ce vendeur veut savoir si ses ventes, de la journée, sont satisfaisantes ou non.
Le chiffre d'affaire des ventes ca est calculé de la façon suivante :
ca = na + nb × 3 + nc × 5
na, nb et nc étant le nombre d'articles
vendus
de chacune des catégories.
Le chiffre d'affaire est :
Satisfaisant, si ca ≥ 100
Bon, si 50 > ca ≥ 150
Mauvais, si ca < 100
Ecrire l'algorithme d'un programme qui :
Saisit le nombre d'articles de chaque catégorie na, nb, et nc.
Calcule le chiffre d'affaire ca en utilisant la formule ci-dessus.
Affiche le chiffre d'affaire de la journée.
Affiche s'il est satisfaisant, bon, ou mauvais.
Vendeur ambulant
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-
Indiquer le nombre d'articles de chaque catégorie :
Catégorie A ? 20
Catégorie B ? 12
Catégorie C ? 13
Le chiffre d'affaires de la journée : 121 DT
Le chiffre d'affaire est Satisfaisant
Vendeur ambulant
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-
Indiquer le nombre d'articles de chaque catégorie :
Catégorie A ? 35
Catégorie B ? 20
Catégorie C ? 20
Le chiffre d'affaires de la journée : 195 DT
Le chiffre d'affaire est Bon
Garde enfant
Garde enfant
Pour les parents qui sortent le soir, une garde offre pour eux ses services pour les prix suivants :
10DT par heure entre 18h et 20h
15DT par heure entre 20h et 23h
20DT par heure entre 23h et 03h
Prix de la garde enfant
On veut écrire un programme qui saisit l'heure d'arrivée d'un enfant dans la garde, puis l'heure de l'arrivée
de ses parents pour le récupérer afin d'afficher le montant à payer.
Heure d'arrivée ? 18
Heure de départ ? 23
Le montant à payer 65 DT
Heure d'arrivée ? 21
Heure de départ ? 0
Le montant à payer 50 DT
Date du lendemain
On veut écrire un programme qui saisit une date sous forme jj/mm/aaaa, calcule et affiche la date du
lendemain.
Date du lendemain
On rappelle le nombre de jours des mois :
Janvier
Février
Mars
Avril
Mai
Juin
Juillet
Août
Septembre
Octobre
Novembre
Décembre
31
28
31
30
31
30
31
31
30
31
30
31
Entrer une date (jj/mm/aaaa) ? 31/12/2021
Lendemain = 1 / 1 / 2022
Entrer une date (jj/mm/aaaa) ? 28/02/2021
Lendemain = 1 / 3 / 2021