Vous êtes sur la page 1sur 14

Techniques des Réseaux Informatiques

EXERCICES PASCAL

Exemple 2 : Ecrire un programme pascal qui permet de calculer le périmètre et la surface


d’un rectangle ?

ƒ Spécification des sorties : p, s


ƒ Spécification des entrées : a, b
ƒ Spécification des traitements : p = (a + b)*2 , s = a*b

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 ?

ƒ Spécification des sorties : TVA, TTC


ƒ Spécification des entrées : HT
ƒ Spécification des traitements : TVA = HT * 20% , TTC = HT + TVA

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

Writeln(‘a = ‘,a); Writeln(‘b = ‘,b);


Writeln(‘c = ‘,c); Writeln(‘d = ‘,d);
End.

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% -30 DH +4% -50 DH +5% -60 DH

? Ecrire un programme qui permet de calculer le salaire net (sn)

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

? Calculer le prix net (pn) ainsi que la remise (r)

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

If (mta>=600) and (mta<900) then r := mta*0.1 else r := mta*0.12 ;


Pn := mta – r ;
Writeln(‘Le prix net est :’,pn);
End.

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.

1. Les instructions de répétitions : La répétition représente l’idée d’exécuter une même


séquence plusieurs fois, en distingue 3 formes de répétition :
a) 1ère Forme :
Tant que (condition) faire séquence
C'est-à-dire tant que la condition est vérifié en exécute la séquence
En Turbo Pascal :

6
Techniques des Réseaux Informatiques

While (condition) do séquence

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.

Repeat séquence until (condition)

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

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;
If e>max then max := e;
S := s + e ;
End;
Moy := s/10 ;
Writeln(’Le minimum est : ’,min);
Writeln(’Le maximum est : ’,max);
Writeln(’La moyenne est : ’,moy);
End.

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.

Exercice 7 : Soit un tableau de 10 nombres entiers, et soit E un entier. Calculer le nombre de


fois que E apparaît dans le tableau.
? Ecrire un programme équivalent

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.

Exercice 8 : Soit T un tableau de 10 entiers, chercher sa valeur maximale et le rang de celle-ci


dans le tableau.

Solution :
Program rang ;

12
Techniques des Réseaux Informatiques

Var t : array[1..10] of integer ; max, i, r: integer;


Begin
For i:= 1 to 10 do
Begin
Write(‘Element ‘, i,’ : ‘);
Readln(t[i]);
End;
Max := t[1]; r :=1;
For i := 1 to 10 do
Begin
If maw < t[i] then max := t[i];
R := I;
End;
Writeln(‘ La valeur maximale est : ‘,max) ;
Writeln(‘Le rang est : ‘,r) ;
End.

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.

Exercice 10 : Trier un tableau de 10 entiers de plus petit au plus grand.


Program triage ;
Var t : array[1..10] of integer ; i, j, c : integer;
Begin
For I := 1 to 10 do readln(t[i]);
Repeat
J := 0;
For I :=1 to 9 do
If t[i] > t[i+1] then

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