Algorithmique &
Python — Structures de
Controle
Conditionnelles & Iteratives — Cours & Niveau : 4eme Annee | Prof :
Exercices Corriges FENNI-S | 2024-2025
1. Structures Conditionnelles
Les structures conditionnelles permettent d'executer un
traitement selon une condition. En Python, l'indentation . Python
est obligatoire (4 espaces). Il existe trois formes : simple . :
(if), complete (if/else) et generalisee (if/elif/else). (if) (if/else) (if/elif/else).
1.1 Structure simple |
Algorithmique Python
Si Condition if Condition: Le bloc n'est execute que si la condition est vraie.
Alors Traitement Traitement ■■■■■■ ■■■■■■■ ■■■ ■■■ ■■■ ■■■■■ ■■■■■
FinSi
1.2 Structure complete |
# Algorithmique : # Python :
Si age >= 18 if age >= 18:
Alors Ecrire("Majeur") print("Majeur")
Sinon Ecrire("Mineur") else:
FinSi print("Mineur")
1.3 Structure generalisee (elif) |
# Algorithmique : # Python :
Si note >= 15 if note >= 15:
Alors Ecrire("Tres Bien") print("Tres Bien")
Sinon Si note >= 12 elif note >= 12:
Alors Ecrire("Bien") print("Bien")
Sinon Si note >= 10 elif note >= 10:
Alors Ecrire("Passable") print("Passable")
Sinon Ecrire("Echec") else:
FinSi print("Echec")
1.4 Structure a choix multiples (match/case) — Python >= 3.10
# Algorithmique : # Python (v3.10+) :
Selon jour match jour:
1 : Ecrire("Lundi") case 1: print("Lundi")
2 : Ecrire("Mardi") case 2: print("Mardi")
6,7 : Ecrire("WE") case 6|7: print("Week-end")
Sinon Ecrire("?") case _: print("Autre")
FinSelon
2. Structures Iteratives (Boucles)
Une boucle repete un traitement plusieurs fois. Il existe .
trois types : :
1. POUR : nombre de repetitions connu a l'avance. 1. POUR: .
2. TANT QUE : repetition conditionnelle (peut ne pas 2. TANT QUE: ( ).
s'executer). 3. REPETER...JUSQU'A:
3. REPETER...JUSQU'A : s'execute au moins une fois. .
2.1 Boucle POUR | POUR
Algorithmique : Python :
Pour i de Debut a Fin [Pas=p] Faire for i in range(Debut, Fin+1 [, pas]):
Traitement Traitement
FinPour
range(5) → 0,1,2,3,4
Nombre de repetitions = |Fin - Debut| + 1 range(1,9,2) → 1,3,5,7
Le pas peut etre positif ou negatif. range(5,0,-1) → 5,4,3,2,1
Exemples POUR |
# Afficher les cubes de 1 a 5
for i in range(1, 6):
print(f"{i}^3 = {i**3}")
# Calculer la somme 1+2+...+N
N = int(input("N = "))
som = 0
for i in range(1, N+1):
som += i
print("Somme =", som)
2.2 Boucle TANT QUE | TANT QUE
# Algo : # Python :
som <- 0 som = 0
Tant que som < 100 Faire while som < 100:
Lire(x) x = int(input("x ? "))
som <- som + x som = som + x
FinTantQue # Arrete quand som >= 100
2.3 Boucle REPETER...JUSQU'A |
# Algo : # Python (simulation) :
Repeter valide = False
Lire(x) while not valide:
Jusqu'a x > 0 x = int(input("x ? "))
valide = x > 0
# Le traitement se fait AU MOINS UNE FOIS ( )
2.4 Comparaison des trois boucles |
Critere POUR TANT QUE REPETER
Nb repetitions connu? Oui / ■■■ Non / ■■ Non / ■■
Execution minimale 0 fois (si debut > fin) 0 fois 1 fois ■■■ ■■■■■
Quand utiliser Parcours de tableau Saisie valide Menu
Compte exact Recherche Saisie robuste
Exercices Corriges
Question : Ecrire un programme Python qui affiche la table de multiplication de N (saisi par l'utilisateur).
Reponse Corrigee :
N = int(input("Entrer N : "))
for i in range(1, 11):
print(f"{N} x {i} = {N*i}")
Explication : La boucle POUR est ideale ici car le nombre de repetitions est fixe (10 fois, de 1 a 10).
Question : Saisir un entier N positif (faire une saisie valide), puis compter le nombre de chiffres de N.
Reponse Corrigee :
# Saisie valide
valide = False
while not valide:
N = int(input("N > 0 : "))
valide = N > 0
# Compter les chiffres
compteur = 0
n_temp = N
while n_temp > 0:
compteur += 1
n_temp = n_temp // 10
print("Nombre de chiffres :", compteur)
Explication : La saisie valide utilise REPETER (while not valide). Le comptage utilise TANT QUE car on ne sait pas combien
de chiffres N contient. N_temp // 10 supprime le dernier chiffre.
Question : Calculer la somme S = 1 - 1/2 + 1/3 - 1/4 + ... + (-1)^(n+1) * 1/n pour n saisi.
Reponse Corrigee :
n = int(input("n = "))
S = 0
signe = 1
for i in range(1, n+1):
S += signe * (1/i)
signe = -signe
print(f"S = {round(S, 6)}")
Explication : Le signe alterne a chaque iteration grace a signe = -signe. Commencer avec signe=1 (terme positif).
Question : Afficher tous les diviseurs d'un entier N et leur nombre.
Reponse Corrigee :
N = int(input("N = "))
nb_div = 0
print(f"Diviseurs de {N} :")
for i in range(1, N+1):
if N % i == 0:
print(i, end=" ")
nb_div += 1
print(f"\nNombre de diviseurs : {nb_div}")
Explication : On parcourt tous les entiers de 1 a N et on verifie si i divise N (reste = 0). Si nb_div == 2, alors N est premier.