Module 4 : Structures conditionnelles

Situations

Barrière automatique

Barrière automatique
Barrière automatique

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
Algorigramme barrière automatique

On demande d'écrire un programme pour simuler cette situation :

  1. Quelles sont les entrées du programme ?
  2. Combien y-a-t'il de résultats possibles pour le programme ?
  3. Utiliser une structure conditionnelle à forme réduite pour implémenter le programme.

Jeu Pile/Face

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 :

  1. Quelles sont les entrées du programme ?
  2. Combien y-a-t'il de résultats possibles pour le programme ?
  3. Comment l'ordinateur peut-il choisir une valeur aléatoire ?
  4. Peut-on utiliser une structure conditionnelle à forme réduite pour implémenter ce programme ? Pourquoi ?
  5. Utiliser une structure conditionnelle à forme alternative pour implémenter le programme.

Subway Surf

Bonus Prix possibles
Boîte bonus Exemple de prix
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 :

  1. Quelles sont les entrées du programme ?
  2. Combien y-a-t'il de résultats possibles pour le programme ?
  3. Comment l'ordinateur peut-il choisir une valeur aléatoire ?
  4. Peut-on utiliser une structure conditionnelle à forme alternative pour implémenter ce programme ? Quel est son inconvénient ?
  5. 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
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
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
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)

Renforcement

QCM

Les QCMs sont accessibles dans ces pages :

L'aide fermier

Yamen travaille comme aide fermier dans la ferme de M Tarek. Aujourd'hui, il a trois tâches à faire :

  • Nettoyer l'étable
  • Remplir l'abreuvoir des vaches s'il est vide
  • Traire les vaches
Abreuvoir
Abreuvoir

Ecrire un programme pour simuler cette situation, l'utilisateur entre l'état de l'abreuvoir

  • V : s'il est vide
  • R : s'il est remplit
Etat de l'abreuvoir (V : vide / R : Rempli) ? V
Tâches à réaliser :
 - Nettoyer l'étable
 - Remplir l'abreuvoir
 - Traire les vaches
Etat de l'abreuvoir (V : vide / R : Rempli) ? R
Tâches à réaliser :
 - Nettoyer l'étable
 - Traire les vaches
 

Personne majeure ou mineure

Personne majeure ou mineure
Personne majeure ou mineure

Une personne est considérée majeure, devant la loi, si son âge a dépassé 18 ans, sinon cette personne est dite mineure.

Écrire un programme qui affiche si une personne est majeure ou mineure selon son âge.

Votre âge ? 25
Vous êtes majeur
Votre âge ? 13
Vous êtes mineur

Signe d'un nombre

Signe d'un nombre
Signe d'un nombre

Écrire un programme qui affiche si un nombre x donné est :

  • positif, x > 0
  • négatif, x < 0
  • null, x = 0
Donner un nombre ? 27
27 est positif
Donner un nombre ? -6
-6 est négatif

Intersection entre deux cercles

Soient deux cercles du plan C1 et C2 de rayons respectifs r1 et r2, les centres des deux cercles sont à une distance d donnée.

Ces deux cercles :

  • se coupent en deux points, si r1 + r2 > d
  • sont tangentes, si r1 + r2 = d
  • ne se coupent pas, si r1 + r2 < d
Intersection de deux cercles
Intersection de deux cercles

On demande d'écrire un programme qui saisit les données mentionnés puis affiche si les deux cercles se coupent.

Rayon de C1 ? 6
Rayon de C2 ? 3
Distance entre les centres ? 9
Les deux cercles sont tangentes
DRayon de C1 ? 10
Rayon de C2 ? 10
Distance entre les centres ? 10
Les cercles se coupent en deux points

Jeu de dés

Jeu de trois dés
Jeu de trois dés

Les combinaisons gagnantes dans un jeu de trois dés sont les suivantes :

  • Trois nombres identiques, on gagne 300pts
  • Deux nombres identiques ou la somme des trois dés est égale à six, on gagne 200pts
  • Un six, on gagne 50 pts
  • Dans les autres cas, on gagne la somme des trois dés

On demande d'écrire un programme qui :

  • Simule le lancement de trois dés
  • Affiche la valeur de chaque dés, ainsi que la somme des trois dés
  • Calcule et affiche le nombre de points gagnés
Dé1 : 6 - Dé2 : 3 - Dé3 : 4
Somme : 13
Vous gagnez 50 pts
Dé1 : 4 - Dé2 : 1 - Dé3 : 2
Somme : 7
Vous gagnez 7 pts

Convertisseur de devise

Conversion de devise
Conversion de devise

Le 26 Septembre 2021, vers 9h du matin, le taux de change est comme suit : 1€ = 1.17$ = 3.28 D.

Écrire un programme qui :

  • Saisit le montant à convertir mac.
  • Saisit la devise initiale, di représentée par l'un des trois symboles :
    • $ : Pour le Dollar américain
    • € : Pour l'Euro
    • D : Pour le Dinar Tunisien
  • Saisit la devise requises, dr représentée par l'un des symboles cités.
  • Calcule la valeur de mac de la devise di dans la devise dr
  • Affiche le change
Montant ? 100
Devise initiale ($/€/D) ? D
Devise requise ($/€/D) ? $
100 D = 35.67 $
VMontant ? 100
Devise initiale ($/€/D) ? €
Devise requise ($/€/D) ? $
100 € = 117.0 $

Vendeur de poissons

Vendeur de poissons
Vendeur de poissons

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
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
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
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
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