Vous êtes sur la page 1sur 7

Algorithmique 1A-CI

TD n°1 : Structures de contrôle


Exercice 1 :
Ecrire un algorithme qui permet de calculer le coût d’un appel téléphonique, sachant
que la 1ère minute est indivisible et facturée à 2 dhs, chaque 20 secondes est facturée à
1 dhs pendant les 5 minutes suivantes, puis à 0,50 dhs pendant le reste de la
communication.
ALGORITHME appel_tel
VAR dureeTotal, nb20sec, reste : entier //dureeTotal exprimée en secondes
VAR cout : réel
DEBUT
SI dureeTotal = 0 ALORS
cout  0
SINONSI dureeTotal <= 60 ALORS
cout  2
SINONSI dureeTotal <= 360 ALORS
nb20sec  (dureeTotal – 60) DIV 20
reste  (dureeTotal – 60) MOD 20
SI reste <>0 ALORS
nb20sec  nb20sec + 1
FINSI
cout  2 + nb20sec
SINON
nb20sec  (dureeTotal – 360) DIV 20
reste  (dureeTotal – 360) MOD 20
SI reste <>0 ALORS
nb20sec  nb20sec + 1
FINSI
cout  17 + nb20sec *0,5
FINSI
Afficher("Le coût total de votre communication est :", cout)
FIN

1
Algorithmique 1A-CI

Modifier l’algorithme pour demander à l’utilisateur combien de minutes il veut utiliser


et lui afficher sa facture.
ALGORITHME appel_tel
VAR dureeTotal, nb20sec, reste : entier //dureeTotal exprimée en secondes
VAR cout, dureeMinutes : réel
DEBUT
Afficher("Saisir la durée de votre appel en minutes")
Lire(dureeMinutes)
dureeTotal  dureeMinutes*60
SI dureeTotal = 0 ALORS
cout  0
SINONSI dureeTotal <= 60 ALORS
cout  2
SINONSI dureeTotal <= 360 ALORS
nb20sec  (dureeTotal – 60) DIV 20
reste  (dureeTotal – 60) MOD 20
SI reste <>0 ALORS
nb20sec  nb20sec + 1
FINSI
cout  2 + nb20sec
SINON
nb20sec  (dureeTotal – 360) DIV 20
reste  (dureeTotal – 360) MOD 20
SI reste <>0 ALORS
nb20sec  nb20sec + 1
FINSI
cout  17 + nb20sec *0,5
FINSI
Afficher("Le coût total de votre communication est :", cout)
FIN

2
Algorithmique 1A-CI

Exercice 2 :
Ecrire un algorithme qui demande à l’utilisateur de saisir un nombre de secondes et qui
les convertit en jours, minutes et secondes.
ALGORITHME conversion_secondes
VAR nbSecondes, secondes, jours, minutes : entier
DEBUT
Afficher("Saisir un nombre de secondes ")
Lire(nbSecondes)

jours  nbSecondes DIV 86400


reste  nbSecondes MOD 86400
heures  reste DIV 3600
reste  reste MOD 3600
minutes  reste DIV 60
secondes  reste MOD 60

Afficher(nbSecondes, " s =", jours, "j ", heures, "h ", minutes, "m ", secondes, "s.")
FIN

3
Algorithmique 1A-CI

Exercice 3 :
Ecrire un algorithme qui demande à l’utilisateur de saisir une date puis qui affiche
celle de 5 jours plus tard.
ALGORITHME date_plus_5jours
VAR dateSaisie, date5j : chaîne
VAR jour, mois, annee : entier
DEBUT
Afficher("Saisir une date au format JJ/MM/AAAA")
//on peut aussi demander la saisie du jour, mois et année séparément
Lire(dateSaisie)
jour  extraire(jour, dateSaisie)
mois  extraire(mois, dateSaisie)
annee  extraire(annee, dateSaisie)

SI (mois = 4 OU mois = 6 ou mois = 9 ou mois = 11) ET jour <= 25 ALORS


jour  jour + 5
SINONSI (mois = 4 OU mois = 6 ou mois = 9 ou mois = 11) ET jour > 25 ALORS
jour  jour + 5 – 30
mois  mois + 1
SINONSI mois = 2 ET jour < 24 ALORS
jour  jour + 5
SINONSI mois = 2 ET jour = 24 ET annee MOD 4 = 0 ALORS
jour  jour + 5
SINONSI mois = 2 ET jour > 24 ET annee MOD 4 = 0 ALORS
jour  jour + 5 – 29
mois  mois + 1
SINONSI mois = 2 ET jour > 24 ET annee MOD 4 <> 0 ALORS
jour  jour + 5 – 28
mois  mois + 1
SINONSI mois = 12 ET jour < 27 ALORS
jour  jour + 5
SINONSI mois = 12 ET jour >= 27 ALORS
jour  jour + 5 – 31
mois  mois + 1
annee  annee + 1
SINONSI jour <= 26 ALORS
jour  jour + 5
SINON
jour  jour + 5 – 31
mois  mois + 1

4
Algorithmique 1A-CI

FINSI
date5j  jour & "/" & mois & "/" & annee
Afficher("La date dans 5 jours est : ", date5j)
FIN

5
Algorithmique 1A-CI

Exercice 4 :
Ecrire un algorithme qui demande à l’utilisateur de saisir deux nombres entiers, a et b,
puis qui résout l’équation de 1er degré ax + b = 0
ALGORITHME équation_premier_degré
VAR x : chaîne
VAR a, b : entier
DEBUT
Afficher("Saisir deux nombres entiers")
Lire(a, b)

SI a = 0 ET b = 0 ALORS
Afficher("L’équation admet une infinité de solutions")
SINONSI a = 0 ALORS
Afficher("L’équation n’a pas de solution")
SINONSI b = 0 ALORS
x0
Afficher("La solution est x = ", x)
SINON
b
x −
a
Afficher("La solution est x = ", x)
FINSI
FIN

6
Algorithmique 1A-CI

Exercice 5 :
Ecrire un algorithme qui demande à l’utilisateur de saisir trois nombres entiers,
a, b et c, puis qui résout l’équation de second degré ax2 + bx + c = 0
ALGORITHME équation_second_degré
VAR x1, x2 : réel
VAR a, b, c, discriminant : entier
DEBUT
Afficher("Saisir trois nombres entiers")
Lire(a, b, c)

SI a <> 0 ALORS
discriminant  b^2 – 4*a*c
SI discriminant = 0 ALORS
b
x1  −
2∗a
Afficher("La solution est x = ", x1)
SINONSI discriminant < 0 ALORS
Afficher("L’équation n’a pas de solution")
SINON
−b− discriminant
x1 
2∗a
−b+ discriminant
x2 
2∗a
Afficher("Les solutions sont x1 = ", x1, " et x2 = ", x2)
FINSI
SINONSI b = 0 ET c = 0 ALORS
Afficher("L’équation admet une infinité de solutions")
SINONSI b = 0 ALORS
Afficher("L’équation n’a pas de solution")
SINON //Il reste un dernier cas possible : c = 0
x1  0
Afficher("La solution est x = ", x1)
FINSI
FIN

Vous aimerez peut-être aussi