Académique Documents
Professionnel Documents
Culture Documents
Turbo Pascal
Turbo Pascal
EXERCICES PASCAL
Solution :
Program rectangle ;
Var p, s, a, b : integer;
Begin
Readln(a); readln(b);
P:= (a + b)*2; s:= a * b;
Writeln(p); writeln(s);
End.
Exemple 3 : Ecrire un programme pascal qui permet de calculer la TVA et TTC d’un montant
HT ?
Solution :
Program compta ;
Uses crt ;
Var HT, TTC, TVA : real ;
Begin
Textcolor(yellow); textbackground(red);
clrscr;
Write(‘Donner un montant hors taxe :’) ;
Readln(HT) ;
TVA := HT * 0.2 ;
TTC := HT + TVA;
Writeln(‘La TVA est : ‘,TVA);
Writeln(‘La TTC est : ‘,TTC) ;
End.
If
Exercice 1 :
Exécuter le programme suivant et donner le résultat final de : a, b, c et d
Program test ;
Var a, b, c, d : real ;
Begin
A := 5; b := 10; c := a + b; d := a – b;
A := b/2 +d; b := a + b + c + d; c := b*2 + d; d := b/2 + c;
1
Techniques des Réseaux Informatiques
Exercice 2 :
Ecrire un programme pascal qui permet de faire la permutation entre deux nombres entiers ?
Program permutation ;
Var a, b, c : integer ;
Begin
Write(‘Tapez la valeur de a : ’) ; readln(a) ;
Write(‘Tapez la valeur de b : ’) ; readln(b) ;
C := a ; a := b ; b :=c ;
Writeln(‘La nouvelle valeur de a : ‘,a) ;
Writeln(‘La nouvelle valeur de b : ‘,b) ;
End.
Exercice 3 :
Soit un vendeur de lait qui expédie une quantité de bouteille (q) avec un prix unitaire (pu). Si
le total de la commande (tc) dépasse 500 Dh, le transport est gratuit, sinon l’acheteur doit
ajouter 10% de (tc) pour le transport.
• Ecrire un programme pascal équivalent qui permet de calculer la somme a payé
(sp)
• Compléter le programme en ajoutant la condition d’un minimum de 10 Dh pour
le transport
Solution 1 :
Program lait1 ;
Var pu, tc, q, sp : real ;
Begin
Write(‘Donner Le prix Unitaire : ‘) ; readln(pu) ;
Write(‘Donner La quantité : ‘) ; readln(q) ;
Tc := pu * q ;
If tc > 500 then sp := tc else sp := tc + tc*10/100;
Writeln(‘La somme a payé vaut : ‘,sp) ;
End.
Solution 2 :
Program lait2 ;
Var pu, tc, q, sp : real ;
Begin
Write(‘Donner Le prix Unitaire : ‘) ; readln(pu) ;
Write(‘Donner La quantité : ‘) ; readln(q) ;
Tc := pu * q ; t := tc*10/100;
If tc > 500 then sp := tc
Else
If t>10 then sp := tc + t
Else sp := tc + 10;
Writeln(‘La somme a payé vaut : ‘,sp) ;
End.
2
Techniques des Réseaux Informatiques
Exercice 4 :
Soit a, b et c trois paramètres d’un triangle :
• Si a = b = c alors triangle équilatéral
• Si a = b ou a = c ou b = c alors triangle isocèle
• Si a <> b <> c alors triangle normal
? Ecrire un programme pascal qui permet d’afficher si un triangle est équilatéral, isocèle ou
normal
Solution :
Program triangle ;
Var a, b, c : integer ;
Begin
Write(‘Tapez le paramètre a : ‘); readln(a) ;
Write(‘Tapez le paramètre b : ‘); readln(b) ;
Write(‘Tapez le paramètre c : ‘); readln(c) ;
If (a = b) and (a = c) then writeln(‘Triangle équilateral’)
else
If (a = b) or (a = c) or (b = c) then writeln(‘Triangle isicèle’);
If (a <> b) and (a<>c) then writeln(‘Triangle Normal’);
End.
Exercice 5:
A la fin d’année, pour chaque étudiant doit avoir deux notes : note écrite (ne) de coefficient 5
et note orale (no) de coefficient 3.
Ecrire un programme pascal qui permet de calculer la moyenne et d’afficher l’un des résultats
suivantes : « Admis » ou « Echoué »
Solution :
Program examen ;
Var no, ne, moy : real ;
Begin
Write(‘Tapez la note écrite :’) ; readln(ne) ;
Write(‘Tapez la note orale :’) ; readln(no) ;
Moy := (ne*5 + no*3)/8 ;
Writeln(‘La moyenne est :’,moy) ;
If moy >= 10 then writeln(‘Admis’) else writeln(‘Echoué’);
End.
Exercice 6:
Chaque personnel dans une entreprise doit avoir un montant brute (mb) de paiement dont on
peut enlevé ou ajouter certains droits :
Cotisation familiale sous forme d’un pourcentage appliqué sur le montant brute (mb)
La CNSS et différents impôts
Soit l’échelle suivant :
3
Techniques des Réseaux Informatiques
Solution :
Program employé ;
Var mb, sn : real ;
Begin
Write(‘Tapez le montant brute : ‘) ;
Readln(mb) ;
If (mb<3000) then sn := mb – 30 + mb*3/100 ;
If (mb>=3000) and (mb<=5000) then sn := mb – 50 + mb*4/100 ;
If (mb>5000) then sn := mb – 60 + mb*5/100 ;
Writeln(‘Le salaire net vaut : ‘,sn) ;
End.
Exercice 7:
Un vendeur de pièce électronique expédie une quantité (q) de pièce avec un prix unitaire (p)
suivant la condition :
Si le nombre de pièce acheter dépasse 100 alors il remis à l’acheteur 20% de total de la
commande (tc), sinon, si le nombre de pièce dépasse 50 il remis à l’acheteur 10% de (tc).
? Ecrire un programme qui permet de calculer le montant final de la facture (mff)
Solution :
Program piece ;
Var p, q, tc, mff : real ;
Begin
Write(‘tapez le prix unitaire de la pièce :’); readln(p) ;
Write(‘tapez la quantité des pièces :’); readln(q) ;
Tc := p*q ;
If q>100 then mff := tc – (20/100)*tc ;
If (q>50) and (q<=100) then mff := tc – tc*0.1 else mff := tc;
Writeln(‘Le montant final de la facture est :’,mff);
End.
Exercice 8:
Pour la gestion de ses ventes un vendeur de fournitures à donner le plafond suivant,
concernant les remises de montant total des achats (mta) :
0% 5% 10% 12%
mta
300 600 900
Solution :
Program vente ;
Var mta, r, pn : real ;
Begin
Write(‘tapez le montant total des achats :’); readln(mta) ;
If (mta<300) then r := 0 ;
If (mta>=300) and (mta<600) then r := mta*5/100 ;
4
Techniques des Réseaux Informatiques
Exercice 9:
Pour calculer la somme a payé d’une facture d’électricité l’agent de l’ONE doit relevé deux
numéros du conteur, de mois dernier (D) et de mois avant dernier (AD)
Si la quantité d’électricité consommée est inférieur ou égale a 100KW, chaque KW est majoré
de 140 centimes, en ajoutant un coût forfaitaire de 10DH
? Ecrire un programme qui permet de calculer la somme a payé (sp)
Solution :
Program one ;
Use crt ;
Var q, d, ad, sp : real ;
Begin
Textcolor(red) ; textbackground(12) ;
clrscr;
Write(‘tapez le relevé de conteur du mois dernier : ‘) ; readln(d) ;
Write(‘tapez le relevé de conteur du mois avant dernier : ‘) ; readln(ad) ;
Q :=d – ad ;
If q<= 100 then sp := q*0.8 + 10
Else sp := 100*0.8 + (q 100)*1.4 + 10;
Writeln(‘La somme a payé est :’,sp);
End.
Exercice 10:
Soit un employer qui travail des nombres des heures normales (n1) avec au taux horaire (t1),
et des heures supplémentaires (n2) avec un taux horaire (t2)
Déterminer le salaire brut (s) de cette employer. Comparer (s) au plafond p = 1600 DH de
sécurité sociale (c) :
Si s <= 1600 alors c = 6% * s
Si s> 1600 alors c = 100 DH
? Ecrire un programme pascal qui permet de calculer le net a payé (np)
Solution :
Program salaire ;
Uses crt ;
Var n1, n2, t1, t2, np, s, c : real ;
Begin
Textcolor(red) ; textbackground(12) ; clrscr;
Write(‘Donner le nombre des heures normales :’) ; readln(n1) ;
Write(‘Donner le taux horaire t1 :’) ; readln(t1) ;
Write(‘Donner le nombre des heures supplémentaires :’) ; readln(n2) ;
Write(‘Donner le taux horaire t2 :’) ; readln(t2) ;
If s <= 1600 then c := s*0.06 else c := 100;
Np := s –c;
Writeln(‘Le net a payé vaut :’,np) ;
End.
5
Techniques des Réseaux Informatiques
case
Exemple 1 : Ecrire un programme pascal qui affiche le nom de jour à partir numéro de jour
Solution :
Var n : integer ;
Begin
Write(‘Tapez un numéro du jour : ’) ; readln(n) ;
Case (n) of
1 : writeln(‘Lundi’) ;
2 : writeln(‘Mardi’) ;
3 : writeln(‘Mercredi’) ;
4 : writeln(‘Jeudi’) ;
5 : writeln(‘Vendredi’) ;
6 : writeln(‘Samedi’) ;
7 : writeln(‘Dimanche’) ;
end;
end.
Exemple 2 : Ecrire un programme pascal qui affiche le nom de mois à partir de numéro de
mois
Solution :
Var x : integer ;
Begin
Write(‘Tapez un numéro du mois : ’) ; readln(x) ;
Case (x) of
1 : writeln(‘Janvier’) ;
2 : writeln(‘Février’) ;
3 : writeln(‘Mars’) ;
4 : writeln(‘Avril’) ;
5 : writeln(‘Mai’) ;
6 : writeln(‘Juin’) ;
7 : writeln(‘Juillet’) ;
8 : writeln(‘Août’) ;
9 : writeln(‘Septembre’) ;
10 : writeln(‘Octobre’) ;
11 : writeln(‘Novembre’) ;
12 : writeln(‘Décembre’) ;
end;
end.
6
Techniques des Réseaux Informatiques
Exemple 1 : Ecrire un programme pascal qui permet d’afficher le mot « Bonjour » 5 fois
Solution :
Program bonjours ;
Var i : integer ;
Begin
I := 1 ;
While i <= 5 do
Begin
Writeln(‘Bonjour’) ;
End ;
End.
Exemple 2 : Ecrire un programme pascal qui permet de calculer la somme d’une suite
d’éléments entiers
Solution :
Program suite ;
Var i, n, s : integer ;
Begin
Write(‘Tapez un entier : ‘) ; readln(n) ;
I := 1 ; s := 0 ;
While i <= n do
Begin
S :=s + i ;
I := i+ 1 ;
End ;
Writeln(‘La somme est :’,s) ;
End.
b) 2ème Forme :
Pour i = A1 à An faire séquence
C'est-à-dire la séquence (s) est exécutée pour i=A1, i=A2, i=A3, …… i=An
En Turbo Pascal :
For i := A1 to An do s
Exemple : ? Réécrire l’exemple 1 et l’exemple 2 sous la 2ème forme
Solution (Exemple 1) :
Program bonjours ;
Var i : integer ;
Begin
For i:=1 to 5 do Writeln(‘Bonjour’) ;
End.
Solution (Exemple 2) :
Program suite ;
Var i, n, s : integer ;
7
Techniques des Réseaux Informatiques
Begin
Write(‘Tapez un entier : ‘) ; readln(n) ;
For i := 1 to n do S :=s + i ;
Writeln(‘La somme est :’,s) ;
End.
Série d’exercices N° :2
Exercice 1 :
Soit deux villages A et B avec A = 210 et B = 280, chaque année la population de A
augmente de 8%, celle de B augmente de 5%. Calculer le nombre d’année nécessaire pour que
A dépasse B.
Généraliser le problème avec n’importe quelle valeur de A et B.
Solution 1 :
Program population ;
Var a, b, n : integer ;
Begin
A := 210 ; B := 280 ; n := 0 ;
While A<B do
Begin
A := A + A*0.08 ;
B := B + B*0.05 ;
N := N + 1 ;
End ;
Writeln(‘Le nombre d’année nécessaire est :’,n) ;
End.
Exercice 2 :
Ecrire un programme pascal qui permet de déterminer le plus petit de 10 nombres entiers ?
Solution :
Var e, min, i : integer ;
Begin
Write(‘Element 1 :’) ; readln(e) ; min := e;
For i := 2 to 10 do
Begin
Write(’Element ’,i,’ :’); readln(e);
If e<min then min := e;
End;
Writeln(’Le minimum est : ’,min);
End.
Exercice 3 :
Ecrire un programme pascal qui permet de déterminer le minimum, le maximum et la
moyenne de 10 nombres entiers ?
Solution :
Var e, min, max, moy, s : real; i : integer ;
Begin
8
Techniques des Réseaux Informatiques
Exercice 4 :
Calculer et afficher la puissance d’un nombre entier ? An
An = (A*A*A*A*A*….*A) n fois
Solution :
Program puissance;
Var a, n, p, i : integer;
Begin
Write(‘Donner un entier: ‘); readln(a);
Write(‘Donner exposant : ‘) ; readln(n) ;
P := 1 ;
For i := 1 to n do p := p*a ;
Writeln(‘Le puissance est : ‘,p);
End.
Exercice 5 :
En utilisant l’instruction while ou repeat écrire un programme qui calcule la somme des
éléments entiers jusqu’à la saisie de la valeur 1.
Solution 1 :
Var e, s : integer ;
Begin
Writeln(‘Tapez des éléments déférents de 1’) ;
Write(‘Tapez un élémént : ‘) ; readln(e) ; s :=e ;
While e <> 0 do
Begin
Write(‘Tapez un élémént : ‘) ; readln(e) ;
S := s+e ;
End ;
Write(‘La somme des éléments saisie vaut : ‘,s) ;
End.
Exercice 6 :
Ecrire un programme qui permet d’afficher des étoiles sous forme carré puis sous forme
triangulaire
Solution 1 : (carré)
9
Techniques des Réseaux Informatiques
Program etoile ;
Var n, j, i : integer ;
Begin
Write(‘Tapez un entier :’); readln(n);
For i := 1 to n do
Begin
For j := 1 to n do
Write(‘* ’);
Writeln;
End;
End.
Solution 2 : (triangle)
Program etoile ;
Var n, j, i : integer ;
Begin
Write(‘Tapez un entier :’); readln(n);
For i := 1 to n do
Begin
For j := 1 to i do
Write(‘* ’);
Writeln;
End;
End.
Les types
Série d’exercices N° :3
Exercice 1 : Ecrire un programme pascal qui retire les blancs d’une phrase donnée.
Exp : Entrée (je suis un étudiant)
Sortie (jesuisunétudiant)
Solution :
Program blancs;
Var s:string; i,n : integer;
Begin
Readln(s) ; n := length(s) ;
For i:=1 to n do
If s[i] <> ‘ ‘ then write(s[i]);
End.
Exercice 2 : Le mot miroir d’un mot donnée est le mot obtenu en lisant le mot à partir de fin.
? Ecrire un programme pascal donnant le mot miroir d’un mot
exp : emhtirogla est le mot miroir de algorithme
Solution :
Program miroir ;
Var s : string ; n,i : integer ;
Begin
Readln(s); n := length(s);
For i := n downto 1 do write(s[i]); (for i := 1 to n do write(s[n-i+1]);)
10
Techniques des Réseaux Informatiques
End.
Exercice 3 : Ecrire un programme qui permet de dire si un mot donné est un mot palindrome.
C’est à dire identique a son miroir.
Exp : KAYAK, ESSE, …
Solution :
Program palindrome ;
Var s : string ; n, m, i : integer;
Begin
Readln(s); n := length(s); m := 0;
For i := 1 to n do
If s[i] = s[n-i+1] then m := m+1;
If m = n then write(‘Ce mot est palindrome’);
End.
Exercice 4 : Soit un employé est caractérisé par son nom, prénom, adresse et salaire.
? Ecrire un programme pascal qui permet de lire 5 employé.
Solution :
Program employer ;
Var nom, prenom, adr : string; n : integer; salaire : real;
Begin
For i := 1 to 5 do
Begin
Write(‘Nom : ’); readln(nom) ;
Write(‘Prénom : ’); readln(prenom) ;
Write(‘Adresse : ’); readln(adr) ;
Write(‘Salaire : ’); readln(salaire) ;
End ;
End.
Exercice 5 : Ecrire un programme pascal qui donne si un nombre existe dans un tableau ou
pas. (tableau de 10 réel).
Solution 1 :
Program recherche;
Var t : array[1..10] of real ; e : real ; n, i : integer;
Begin
N := 0;
For i := 1 to 10 do readln(t[i]);
Write(‘Donner un élément a rechercher : ’);
Readln(e);
For i := 1 to 10 do
If e = t[i] then n :=n+1;
If n = 0 then writeln(‘Cet élément existe pas’);
Else writeln(‘Cet élément existe’) ;
End.
Solution 2 :
11
Techniques des Réseaux Informatiques
Program recherche;
Var t : array[1..10] of real ; e : real ; i : integer; v : boolean;
Begin
V := false;
For i := 1 to 10 do readln(t[i]);
Write(‘Donner un élément a rechercher : ’);
Readln(e);
For i := 1 to 10 do
If e = t[i] then v := true;
If v = true then writeln(‘Cet élément existe’);
Else writeln(‘Cet élément existe pas’) ;
End.
Exercice 6 : Ecrire un programme pascal qui affiche le plus grand élément d’un tableau de 10
entiers.
Solution :
Program grand ;
Var t : array[1..10] of integer ;
I , max : integer;
Begin
For i := 1 to 10 do
Write(‘entrer l’’élément numéro ‘,i,’ :’) ;
readln(t[i]);
Max := t[1];
For i :=2 to 10 do
If t[i]> max then Max := t[i];
Writeln(max);
End.
Solution :
Program apparaition ;
Var a : array[1..10] of integer; e, i, n : integer;
Begin
For i := 1 to 10 do readln(a[i]);
Readln(e);
For i := 1 to 10 do
If e = a[i] then n := n + 1;
Writeln(‘Appariation de : ’, e , ‘ et ‘, n , ‘ fois’ );
End.
Solution :
Program rang ;
12
Techniques des Réseaux Informatiques
Exercice 9 : Soit T un tableau de 10 réels, inserer la valeur x à la Kième place (on obtiendra un
tableau de 11 éléments)
Solution 1 :
Program insertion ;
var t : array[1..11] of real ; x : real; i, k: integer;
Begin
For I := 1 to 10 do readln(t[i]);
Readln(x); readln(k);
T[11] := t[k]; t[k] := x;
For I := 1 to 11 do writeln(t[i]);
End.
Solution 2 :
Program insertion ;
var t : array[1..11] of real ; x : real; i, k: integer;
Begin
For I := 1 to 10 do readln(t[i]);
Readln(x); readln(k);
For i := 10 downto k do t[i+1] := t[i];
t[k] := x;
For I := 1 to 11 do writeln(t[i]);
End.
13
Techniques des Réseaux Informatiques
Begin
C := t[i];
T[i] := t[i+1];
T[i+1] := c;
J := j +1;
End;
Until j :=0;
For I := 1 to 10 do writeln(t[i]);
End.
14