Vous êtes sur la page 1sur 10

1

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

Exercice 10 : Exercice 12:


Écrire un programme qui détermine si une année est bissextile ou non. Écrire un Programme qui saisit une date donnée sous la forme :
Les années bissextiles sont multiples de 4, mais pas de 100, sauf pour nombre jour, mois, année. Il affiche ensuite son lendemain.
les millénaires (multiple de 400) qui le sont. Exemple : Si la date entrée est : 28 / 2 / 2005 le résultat sera 1/3/2005

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

tva = 18.6 Exercice 15 :


prixHT = float(input("Donner le prix HT: ")) Etablir un programme qui permet de calculer la différence entre deux
prixTTC = prixHT*(1+tva/100) horaires (heures, minutes, secondes) entrés par l’utilisateur.

if prixTTC < 1000 : Exemple : 12 : 25 : 15 – 11 : 45 : 35 = 00 : 39 : 40


remise = 0
elif prixTTC < 2000 : Exercice 16 :
remise = 0.01
elif prixTTC < 5000 : Ecrire un programme qui lit le numéro de jour, le numéro du mois, et
remise = 0.03 l’année d’une date, et qui détermine si cette date est correcte ou non.
else : Exemple :
remise = 0.05 Jour = 1, Mois = 03, Année= 1999 : La date est correcte.
Jour = 41, Mois = 05, Année= 2005 : La date est incorrecte.
total = prixTTC - prixTTC*remise Jour = 29, Mois = 02, Année= 2000 : La date est correcte.
print("Total à payer : ", total) Jour = 29, Mois = 02, Année= 2010 : La date est incorrecte.

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

a = int(input("Donner l’année :"))


Exercice 18 :
bis = a%400==0 or (a%4==0 and a%100!=0 ) Ecrire un programme qui lit un entier n (compris entre 0 et 9999) et
calcule la somme des chiffres composants cet entier.
if m==4 or m==6 or m==9 or m==11 : Exemple :
jmax = 30 Si n=1260 le résultat sera : 9
elif m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or Si n=2316 le résultat sera : 12
m==12 :
jmax = 31 Correction :
elif bis : print("Donner un nombre entre 0 et 9999 : ")
jmax = 29 n=int(input( ))
else : if n <0 ou n>9999 :
jmax = 28 print("Valeur incorrecte")
else :
if m<1 or m>12 or j>jmax or a<0 : a = n mod 10
print("Date incorrecte") n = n div 10
else : b = n mod 10
print("Date correcte") n = n div 10
c = n mod 10
Exercice 17 : n = n div 10
Ecrire l’programme permettant de calculer l’heure d’arrivée d’un train, d=n
connaissant son heure de départ ainsi que le temps de trajet nécessaire. s = a+b+c+d
L’heure de départ est modélisée sous la forme d’un triplet d’entiers print("Somme des chiffres : ", s)
(hd, md, sd) avec
– hd : heure de départ (0 ≤ hd ≤ 23) Exercice 22 :
– md : minutes de départ (0 ≤ md ≤ 59) Une franchise en assurance est la somme qui reste à votre charge lors
– sd : secondes de départ (0 ≤ sd ≤ 59) d’un sinistre. Une compagnie d'assurances pratique la méthode de la
franchise variable :
De la même manière le temps de trajet et l’heure d’arrivée sont La franchise est égale à 10 % du montant total des réparations avec un
respectivement modélisés sous la forme de triplets d’entiers (ht , mt , minimum de 1500 MAD et sans pouvoir dépasser 4500 MAD.
st) et (ha, ma, sa)

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

Correction : Pour 10 jours et 1540 km :


avec un véhicule à essence : 4231.0
print("Donner le montant des réparations : ") avec un véhicule diesel : 5154.0
m = int(input()) Véhicule à essence conseillé
fa = m * 0.1
if fa <1500 : Correction :
fa = 1500
jours = int(input("Donner le nombre de jours :"))
if fa>4500 : km = int(input("Donner le nombre de km :"))
fa = 4500 montD = jours*400 + km*0.15
montE = jours*500 + km*0.1
print("Montant des réparations : ", m) if montD > montE :
print("Franchise assuré : ", fa) print("Véhicule à diesel conseillé")
ra = m-fa elif montE > montD :
if ra < 0 : print("Véhicule à essence conseillé")
ra = 0 else :
print("Remboursement assureur : ", m-fa) print("Véhicule diesel et essence au même prix")

7
8

QCM : a=2
b=5
Question 1 : if a > 8 :
b = 10
a7 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

Que vaut la valeur finale de la variable b ?


A) 8 B) 12 C) 9 D) 13 Question 4 :

a=2
Question 2 : b=0
if a<0 :
a=3 b1
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

Que vaut la valeur finale de la variable a ?


A) 0 B) 1
C) 10 D) 20
E) 500

Vous aimerez peut-être aussi