Vous êtes sur la page 1sur 4

Les structures conditionnelles

Exercice N° 1
a, b, c et d sont quatre variables numériques. Donnez les valeurs finales de a, b, c et d après exécution de
l’algorithme suivant, les valeurs initiales sont :

Initialisation Apres exécution si ((a>0) ou (b>c)) et ((d>a) ou (d<5)) alors


a b c d a b c d a0
Cas 1 5 3 4 6 d  b+c
Cas 2 1 3 4 3 sinon
Cas 3 -1 -2 -4 3 c  a‐b
Cas 4 -1 -2 4 3 si (c>0) alors
Cas 5 -1 3 4 6 d  ‐d
FinSi
b0
FinSi

Exercice N° 2
Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si le produit est négatif ou positif
(on inclut cette fois le traitement du cas où le produit peut être nul). Attention toutefois, on ne doit pas calculer le
produit !

Exercice N° 3
Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il l’informe de sa catégorie :
• "Poussin" de 6 à 7 ans
• "Pupille" de 8 à 9 ans
• "Minime" de 10 à 11 ans
• "Cadet" après 12 ans
Peut- on concevoir plusieurs algorithmes équivalents menant à ce résultat ?

Exercice N° 4
Ecrire un algorithme qui permet de lire 3 nombres entiers n1, n2 et n3 et qui permet d’affecter la valeur « vrai » à une
variable booléenne Ok si les deux nombres n1 et n2 sont plus grands que 15 et si n3 est positif.

Exercice N° 5
Ecrire un algorithme qui permet d’imprimer le résultat d’un étudiant à un module sachant que ce module est
sanctionné par une note d’oral de coefficient 1 et d’une note d’écrit de coefficient 2. La moyenne obtenue doit être
supérieure ou égale à 10 pour valider le module.
L’algorithme devra afficher « reçu » si le module est validé ou « refusé » sinon.
Exercice N° 6 : Trouver les 3 plus petits nombres parmi 4
Soient trois nombres distincts x, y et z classés par ordre croissant (donnés par l’utilisateur au clavier) et un nombre
quelconque n (également donné par l’utilisateur). Afficher les 3 plus petites valeurs de ces 4 variables.
Exercice N° 7 : Max et min
Soient deux nombres entiers x et y. Rangez dans x la plus petite valeur et dans y la plus grande. Affichez la plus
petite puis la plus grande.
Exercice N° 8 : Calcul d’un salaire
Ecrire un algorithme permettant de calculer le salaire d’un employé payé à l’heure à partir de son salaire horaire et
du nombre d’heures de travail. Les règles de calcul sont les suivantes : le taux horaire est majoré pour les heures
supplémentaires : 25% au‐delà de 160h et 50% au‐delà de 200h.
Exercice N° 9 : Résolution d’une équation du second degré ax²+bx+c
Écrire un algorithme qui demande à l’utilisateur la valeur de a,b et c et indique si elles existent les éventuelles
solutions.
Rappel : Calcul du discriminant Δ = b2 − 4ac
Si Δ < 0, pas de solution réelle
Si Δ = 0, une solution pour x1 = -b/2a
Si Δ > 0, deux solutions, x1 et x2

Page 1
Exercice N° 10 :
Ecrire un programme qui demande la température extérieure en degrés celsius et affiche "il gèle" si le nombre est
négatif et "alerte à la canicule" si le nombre est supérieur à 30.
Exercice N° 11 : Transcription littérale des nombres
Transcrire littéralement en français un entier entre 1 et 1000 (exemple 31 = trente et un ; 279 = deux cent soixante-
dix-neuf) puis l’afficher
Exercice N° 12 : L'horloge
La transcription littérale de l'heure en adoptant le parler usuel (cinq heures moins vingt ; midi et quart ; etc.) fournit
un bel exemple de programme se découpant en petites fonctions conduisant à des emboîtements de conditions qui
demandent une certaine attention.

Exercice N° 13 : Suite de Kaprekar


Si u0 est un nombre de 4 chiffres, on calcule u1 comme la différence entre le nombre obtenu en ordonnant les
chiffres de u0 dans l'ordre décroissant et celui obtenu avec l'ordre croissant. Recommencer jusqu'à obtenir 6174.
Exercice N° 14 :
Soit n1 un nombre de 4 chiffres, on détermine n2 comme étant le nombre obtenu en ordonnant les chiffres de n1
dans l'ordre décroissant.
Exercice N° 15 :
Ecrire un algorithme qui demande deux entiers et les affiche en ordre croissant. Même chose avec trois entiers.
Exercice N° 16 :
Ecrire un algorithme qui calcule et affiche le maximum et le minimum de deux nombres réels.
Exercice N° 17 :
Ecrire un algorithme qui teste si une année est bissextile.
Rappel : une année est dite bissextile si elle divisible par 4 et non divisible par 100 ou elle est divisible par 400
Exercice N° 18 :
Ecrire un algorithme qui pour une date donnée, sous la forme jour-mois-année, affiche la date du lendemain.
Exercice N° 19 :
Ecrire un algorithme qui compare deux dates.
Exercice N° 20 :
Ecrire un algorithme qui demande les coefficients a, b et c de l'équation ax2 + bx + c = 0 et affiche les solutions.
Exercice N° 21 :
Ecrire un programme qui, à partir du numéro d’un mois, permet d’afficher le nombre de jours qui lui correspond.
Exemple :
Si mois = 1 Alors le programme affiche : Le nombre de jours du mois 1 est de 31 jours
Si mois = 4 Alors le programme affiche : Le nombre de jours du mois 4 est de 30 jours
Si mois = 2 et Année = 2004 Alors le programme affiche : Le nombre de jours du mois 2 est de 29 jours
Si mois = 2 et Année = 2006 Alors le programme affiche : Le nombre de jours du mois 2 est de 28 jours
Exercice N° 22 :
Ecrire un programme qui, à partir de la saisie de deux réels et un opérateur affiche le résultat après exécution de
l’opération choisie.
Exemple :
Si les entiers sont 14 et 2 et l’opérateur est ˝+˝ alors le résultat affiché est 14.00 + 2.00 = 16.00
Pour les mêmes entiers et si l’opérateur est ˝/˝ alors le résultat affiché est 14.00 / 2.00 = 7.00
Exercice N° 23 :
Ecrire une fonction qui reçoit comme paramètre une chaîne contenant une expression représentant une somme
d'entiers positifs placée dans une chaîne de caractères et retourne la valeur de cette somme. L'expression est
uniquement constituée des caractères représentant les chiffres des nombres et de l'opérateur "+". Il n'y a pas
d'espace dans l'expression. On pourra supposer que l'expression est syntaxiquement correcte.
Exemple.
La valeur de l'expression
"12+345+6789" est 7146.
Exercice N° 24 :
Ecrire une fonction qui traduit une chaîne de caractères ne contenant que des lettres et des espaces en code Morse.
La fonction recevra comme paramètre un tableau de caractères de 26 lignes et 5 colonnes. Chaque ligne du tableau
contiendra une chaîne de caractères composée uniquement de caractères "." (points) ou "-" (tiret) (qui sont les deux
symboles du code Morse). La première chaîne du tableau contiendra la traduction en morse de la lettre "A", la
deuxième la traduction de "B", …
La traduction ne différenciera pas les minuscules des majuscules. Un espace sera traduit par un espace.
La fonction retournera la traduction sous la forme d'une chaîne de caractères.
Exemple.
Page 2
La traduction en Morse de la chaîne "Le code MORSE" est
".-... -.-.----... -----.-....."
Le tableau suivant donne la traduction des lettres en Morse.
A .- N -.
B -... O ---
C -.-. P .--.
D -.. Q --.-
E . R .-.
F ..-. S ...
G --. T -
H .... U ..-
I .. V ...-
J .--- W .--
K -.- X -..-
L .-.. Y -.--
M -- Z --..

Exercice N° 25 :
Ecrire un algorithme et un programme Pascal qui permet de lire l’année, et le nombre d’un mois puis affiche le
nombre de jours correspondant à ce mois.
Exercice N° 26 :
Ecrire un algorithme et un programme Pascal qui permet de lire 3 réels a, b et c puis les afficher dans l’ordre
croissant.
Exercice N° 27 :
Ecrire un algorithme et un programme Pascal qui permet de lire un entier composé de deux chiffres et puis d’afficher
sa traduction en langage écrit,
Exemple : 21 : Vingt-et-un.
Exercice N° 28 : Date du lendemain
On souhaite écrire un programme calculant la date du lendemain d’un jour donné.
Question 1 : Écrire une fonction calcul_lendemain(jour,mois,annee) réalisant ce calcul. Elle utilisera des fonctions qui
seront explicitées plus tard : teste_dernier_jour(jour,mois,annee) et teste_dernier_mois(mois). Vous devez expliquer
ce que doivent faire ces fonctions sans écrire le détail de leur algorithme, et en particulier l’utilisation des
paramètres.
Question 2 : Écrire l’algorithme de la fonction teste_dernier_mois(mois).
Question 3 : Écrire l’algorithme de la fonction teste_dernier_jour(jour,mois,annee).
Question 4 : Écrire ces algorithmes en langage C. La fonction principale main devra calculer la date du lendemain du
31 décembre 2006, du 28 février 1900, du 28 février 2000, du 28 février 2003 et du 30 juin 2005.
Exercice N° 29 :
Ajouter des parenthèses explicitant l’ordre d’évaluation des expressions suivantes:
a+b*c
*p++
a = b == c
g(1,2,3) + 4
a=b=c=0
Exercice N° 30 :
On se propose d’écrire un programme permettant de calculer la durée de vol d'un avion connaissant son heure de
départ et son heure d’arrivée (heure, minute, seconde) en supposant que le départ et l'arrivée ont eu lieu le même
jour.
Exercice N° 31 :
On se propose d’écrire un programme qui permet de saisir 3 chaines de caractères et d’afficher la chaine qui a le
plus grand nombre de caractères.
Exercice N° 32 : Bac Tunisien, Pratique, 2001
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 triangle (isocèle, équilatéral ou quelconque).
Exemple :
Entrée : A(0,0), B(2,2), C(1,5)
Sortie : ABC est isocèle
Exercice N° 33 :
On vous donne trois nombres entiers non nuls. Ecrire un programme qui détermine si l'un d'eux est égal à la somme
des deux autres. La fonction renvoie ce nombre s'il existe, 0 sinon.
Exemple :
Entrée1 : x=18, y=42, z=24
Page 3
Sortie1 : 42
Entrée2 : a=11, b=37, c=18
Sortie2 : 0
Exercice N° 34 :
Construire une calculette simple avec les opérations (+,-,*,/)
Exercice N° 35 :
Écrire un algorithme et un programme intitulé JOURS, qui affiche le nombre de jours d'un mois donné.
On convient que le mois est saisi sous forme d'un entier ente 1 et 12
Remarque : pour le moi de Février (2) le programme demandera l'année.
Exemple
• Entrée : 4
• Sortie : 30
Il s'agit de déterminer le nombre de jours d'un mois donné. Le problème se pose pour le mois de février qui est de 29
jours pour les années bissextiles. Une année est bissextile si elle est divisible par 4 quand elle est non multiple de
100 sinon c'est son quotient par 100 qui doit être multiple de 4. Exemple : 1900 est une année non bissextile par
contre 2000 l'est.
Résultat = Écrire("Le nombre de jours du mois saisi est ", nbj)
nbj = [Lire("N° mois : ", m), nbj = 31 ] si (m dans {4,6,9,11}) alors
[nbj = 30]
sinon
[Lire("Année : ",an), nbj=28]
si (an MOD 400 = 0) or ((an MOD 4 =0) and (an MOD 100)<>0) alors
[nbj = 29]
FinSi
Fin nbr_jours_mois
Exercice N° 36 : Bases d’ADN
Écrire un programme qui lit le nom de l’une des bases constituantes l'ADN puis affiche sa base complémentaire.
Votre programme doit aussi afficher un message d'erreur dans le cas où la base n'existe pas.
Exemple :
Entrée1 : B="A"
Sortie1 : La base correspondante est T
Entrée2 : B="C"
Sortie2 : La base correspondante est G
Entrée3 : B="D"
Sortie3 : Erreur
program ADNBase;
uses wincrt;
var base:char;
begin
writeln('Donner la base de l''ADN');
readln(base);
base:=UpCase(base);
Case base of
'A':writeln('T');
'T':writeln('A');
'C':writeln('G');
'G':writeln('C');
else writeln('Entrée non valide');
end;
end.
Exercice N° 37 :

Page 4