Académique Documents
Professionnel Documents
Culture Documents
Travaux Dirigés - TD 2 - Structures Conditionnelle - 231103 - 150033
Travaux Dirigés - TD 2 - Structures Conditionnelle - 231103 - 150033
TD d’informatique : MPSI/PCSI - Pr : Youssef Ouassit 4. L'une au moins des trois est paire.
5. Deux d'entre-elles au moins ont la même parité.
Algorithmique et Programmation 6. Exactement deux sur les trois sont paires.
« Structures conditionnelles » Indication : Utiliser la fonction mod qui permet d’avoir le reste de la
Exercice 1 : division de deux entiers.
Soient x, y, z, t des entiers. Donner les expressions booléennes
correspondant aux situations suivantes : Correction :
1. Les valeurs de x et de y sont toutes les deux supérieures à 3 1. x % 2 == 0
2. Les variables x, y et z sont identiques 2. x % 2 == 1
3. Les valeurs de x, y et z sont identiques mais différentes de celle de t 3. (x % 2) == (y % 2)
4. Les valeurs de x sont strictement comprises entre y et t. 4. (x % 2 = 0) or (y % 2 = 0) ou (z % 2 = 0)
5. Parmi les valeurs de x, y et z deux valeurs au moins sont identiques Une autre solution :
6. Parmi les valeurs de x, y et z deux valeurs et seulement deux sont x*y*z % 2 =0
identiques 5. ( x-y % 2=0 ) or ( x-z % 2=0 ) or ( y-z % 2=0 )
7. Parmi les valeurs de x, y et z deux valeurs au plus sont identiques 6. (x-y-z) % 2 = 1
Indication : Utiliser les parenthèses si l’expression logique comporte
des Ou et des Et. Exercice 3 :
Ecrire un programme qui donne la valeur absolue d’un entier entré par
Correction : l’utilisateur.
1. x>=3 and y>=3
2. x=y and y=z Correction Version 1:
3. x=y and y=z and z != t
4. x>y and x<t A = int(input(("Donner un entier : "))
5. x==y or y==z or x==z if a >= 0 :
6. (x==y and x !=z) or (x==z and x !=y) or ( y==z and y !=x) V= a
7. Not (x==y==z) else:
V = -a
Exercice 2 : print("|", a, "|=", V)
On considère trois variables entières x, y, z. Donner des expressions
booléennes pour déterminer si : Correction Version 2:
1. x est pair.
2. x est impair. A = int(input(("Donner un entier : "))
3. x et y ont la même parité. V=A
1
2
if a < 0 : Exercice 6 :
V = -a Ecrire un programme qui fait la résolution des équations du premier
print("|", a, "|=", V) degré de la forme :
aX+b = 0
Exercice 4 :
Ecrire un programme qui détermine si un entier entré par l’utilisateur Correction Version 1 :
est pair ou non. a = float(input("Donner a : "))
b = float(input("Donner b : "))
Correction :
A = int(input("Donner un nombre : ")) if a!=0 :
print("x=", -b/a)
if A%2 == 0 : else :
print(A, "est pair") if b!=0 :
else: print("Pas de solutions")
print(A, "est impair") else :
print("Infinité e solutions")
Exercice 5 :
Ecrire un programme qui lit deux valeurs entières quelconques (A et Correction Version 2 :
B) au clavier et qui affiche le signe de la somme de A et B sans faire a = float(input("Donner a : "))
l’opération de l’addition. b = float(input("Donner b : "))
Exemple : A = -8, B = 3 le signe de la somme est négatif.
if a!=0 :
Correction : print("x=", -b/a)
A = int(input("Donner A : ")) elif b!=0 :
B = int(input("Donner B : ")) print("Pas de solutions")
else :
if A > -B : print("Infinité e solutions")
print("La somme A+B est positive")
else : Exercice 7 :
print("La somme A+B est négative") Ecrire un programme qui fait la résolution des équations du second
degré de la forme :
aX² +bX + c = 0 on suppose que a ≠ 0 .
2
3
Correction : else :
from math import sqrt m = s*0.1
print("Le montant à payer est : ", m)
a = float(input("Donner a : "))
b = float(input("Donner b : ")) Exercice 9 :
c = float(input("Donner c : ")) Ecrire un Programme qui permet de saisir les coordonnées des trois
sommets A, B et C d’un triangle puis détermine et affiche la nature du
D = b**2 - 4*a*c triangle (Isocèle, équilatéral ou quelconque).
if D > 0 : Correction :
print("L’équation a deux solutions : ") from math import sqrt
print( "X1=", (-b + sqrt(D))/ 2*a )
print( "X2=", (-b - sqrt(D))/ 2*a ) print("Donner les coordonnées de A(x,y) : ")
elif D==0 : xa = int(input("x="))
print("L’équation a une solution : ") ya = int(input("y="))
print( "X=", -b / 2*a ) print("Donner les coordonnées de B(x,y) : ")
else: xb = int(input("x="))
print("Pas de solution dans IR") yb = int(input("y="))
print("Donner les coordonnées de C(x,y): ")
Exercice 8 : xc = int(input("x="))
Ecrire un programme qui lit le salaire d’un employé et calcule le yc = int(input("y="))
montant à payer au service des impôts. Sachant que le taux d’impôt
est : AB = sqrt((xb-xa)**2 + (yb-ya)**2)
0% si le salaire <2000 Dh AC = sqrt((xc-xa)**2 + (yc-ya)**2)
5% si le salaire appartient à [2000,4000[ BC = sqrt((xc-xb)**2 + (yc-yb)**2)
10% si le salaire > = 4000
if AB==AC==BC :
Correction : print("Le triangle est équilatéral")
s = float(input("Donner le salaire : ")) elif AB==AC or AB==BC or AC==BC :
if s<2000: print("Le triangle est isocèle")
m=0 else :
elif s<4000: print("Le triangle est en autre nature")
m=s*0.05
3
4
Correction : Correction :
print("Donner une année : ") j = int(input("Donner le jour :"))
a = int(input()) m = int(input("Donner le mois :"))
if (a % 4 == 0 and a % 100 != 0) or (a % 400==0) : a = int(input("Donner l’année :"))
print("L’année est bissextile")
else : bis = (a%4==0 and a%100 !=0 ) or a%400==0
print("L’année n’est pas bissextile")
if m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or
Exercice 11 : m==12:
Programmer une petite calculatrice qui demande à l’utilisateur une jmax = 31
opération à effectuer sous forme de caractère (par exemple '*', '+', '-', elif m==4 or m==6 or m==9 or m==11 :
'/'), demande ensuite 2 nombres et effectue le calcul demandé et jmax = 30
affiche le résultat. elif bis :
jmax = 29
Correction : else :
a = int(input("Donner le premier opérand : ")) jmax = 28
b = int(input("Donner le deuxième opérand : "))
op = input("Donner l’opération : ") jL , mL, aL = j, m, a
if op == "+" :
r=a+b jL = jL+1
elif op == "-" : if jL>jmax :
r=a-b jL = 1
elif op == "x" : mL = mL+1
r=a*b if mL >12 :
elif op == "/" : mL = mL+1
r=a/b aL = aL+1
print("Le lendemain de : ", j , "/" , m , "/" , a, " est : ", jL , "/" , mL ,
print(a , op , b, "=", r ) "/" , aL )
4
5
Exercice 13 : Si une personne est entrée dans l’entreprise depuis moins d’un an, elle
Etablir un programme qui lit en entrée un simple prix hors taxe et a droit à deux jours de congés par mois de présence, sinon à 28 jours
calcul le prix total correspondant avec un taux TVA de 18,6%. Il au moins.
établit ensuite une remise dont le taux dépend de la valeur du prix total Si c’est un cadre et s’il est âgé d’au moins 35 ans et si son ancienneté
obtenu à savoir : est supérieure à 3 ans, il lui est accordé 2 jours supplémentaires.
0% pour un montant strictement inférieur à 1000 DH S’il est âgé d’au moins 45 ans et si son ancienneté est supérieure à 5
1% pour un montant entre 1000 DH et 2000 DH ans, il lui est accordé 4 jours supplémentaires, en plus des 2 accordés
3% pour un montant entre ] 2000, 5000 ] pour plus de 35 ans.
5% pour un montant strictement supérieur 5000 DH
L’programme affichera ensuite le prix après remise. Écrire un programme qui calcule le nombre de jours de congés à partir
de l’âge, l’ancienneté et l’appartenance au collège cadre d’un
Correction : employé.
Exercice 14 : Correction :
Dans une entreprise, le calcul des jours de congés payés s’effectue de
la manière suivante : j = int(input("Donner le jour :"))
m = int(input("Donner le mois :"))
5
6
6
7
Exemples : Exercice 23 :
Montant des 10% du Partie payée par Reste à payer par
réparations montant l’assuré l’assurance Un organisme de location de voitures propose à ses clients 2 tarifs :
1300 130 1300 0 tarif essence :
1800 180 1500 300 location : 400 MAD / jour
20000 2000 2000 18000 kilométrage : 15 cts / km
50000 5000 4500 45500 tarif diesel :
Le programme (ou programme) attend le montant total des réparations location : 500 MAD / jour
(un float), puis affiche la franchise payée par l'assuré et le kilométrage : 10 cts / km
remboursement effectué par l'assurance au format suivant: On entrera dans cet ordre la distance à parcourir et la durée de la
location. Ce sont deux entiers.
Montant des réparations : 1800 Puis le programme produira un état de sortie détaillé indiquant le
Franchise assurée : 1500 meilleur choix, au format suivant :
Remboursement assureur : 300
7
8
QCM : a=2
b=5
Question 1 : if a > 8 :
b = 10
a7 elif a > 6 :
b 12 b=3
if a > 5 :
b b-4
if b >= 10 : Que vaut la valeur finale de la variable b ?
b = b+1 A) 3 B) 5 C) 10
a=2
Question 2 : b=0
if a<0 :
a=3 b1
b=6 elif a>0 and a<5 :
if a > 5 or b != 3 : b=2
b=4 else :
else : b=3
b=2
Que vaut la valeur finale de la variable b ? Que vaut la valeur finale de la variable b ?
A) 2 A) 0 B) 2
B) 4 C) 1 D) 3
C) 6
Question 5 :
Question 3 :
8
9
a = 10
if a < 5 :
a = 20
elif a < 100 :
a = 500
elif a < 1000 :
a=1
else :
a=0