Vous êtes sur la page 1sur 14

Techniques des Rseaux Informatiques

EXERCICES PASCAL Exemple 2 : Ecrire un programme pascal qui permet de calculer le primtre et la surface dun rectangle ? Spcification des sorties : Spcification des entres : Spcification des traitements : 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 dun montant HT ? Spcification des sorties : Spcification des entres : Spcification des traitements : 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 : Excuter le programme suivant et donner le rsultat 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 WWW.TRI.ON.MA

p, s a, b p = (a + b)*2 ,

s = a*b

TVA, TTC HT TVA = HT * 20%

TTC = HT + TVA

Techniques des Rseaux Informatiques

Writeln(a = ,a); Writeln(c = ,c); End.

Writeln(b = ,b); Writeln(d = ,d);

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 expdie une quantit de bouteille (q) avec un prix unitaire (pu). Si le total de la commande (tc) dpasse 500 Dh, le transport est gratuit, sinon lacheteur doit ajouter 10% de (tc) pour le transport. Ecrire un programme pascal quivalent qui permet de calculer la somme a pay (sp) Complter le programme en ajoutant la condition dun minimum de 10 Dh pour le transport Solution 1 : Program lait1 ; Var pu, tc, q, sp : real ; Begin Write(Donner Le prix Unitaire : ) ; Write(Donner La quantit : ) ; Tc := pu * q ; If tc > 500 then sp := tc else Writeln(La somme a pay vaut : ,sp) ; End. Solution 2 : Program lait2 ; Var pu, tc, q, sp : real ; Begin Write(Donner Le prix Unitaire : ) ; Write(Donner La quantit : ) ; 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.

readln(pu) ; readln(q) ; sp := tc + tc*10/100;

readln(pu) ; readln(q) ;

2 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

Exercice 4 : Soit a, b et c trois paramtres dun triangle : Si a = b = c alors triangle quilatral Si a = b ou a = c ou b = c alors triangle isocle Si a <> b <> c alors triangle normal ? Ecrire un programme pascal qui permet dafficher si un triangle est quilatral, isocle ou normal Solution : Program triangle ; Var a, b, c : integer ; Begin Write(Tapez le paramtre a : ); readln(a) ; Write(Tapez le paramtre b : ); readln(b) ; Write(Tapez le paramtre 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 isicle); If (a <> b) and (a<>c) then writeln(Triangle Normal); End. Exercice 5: A la fin danne, 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 dafficher lun des rsultats 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 End.

writeln(Echou);

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 dun pourcentage appliqu sur le montant brute (mb) La CNSS et diffrents impts Soit lchelle suivant : +3% -30 DH +4% -50 DH +5% -60 DH

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

3 WWW.TRI.ON.MA

Techniques des Rseaux 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 pice lectronique expdie une quantit (q) de pice avec un prix unitaire (p) suivant la condition : Si le nombre de pice acheter dpasse 100 alors il remis lacheteur 20% de total de la commande (tc), sinon, si le nombre de pice dpasse 50 il remis lacheteur 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 pice :); readln(p) ; Write(tapez la quantit des pices :); 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 Writeln(Le montant final de la facture est :,mff); End.

else

mff := tc;

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% 300 5% 600 10% 900 12% mta

? 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 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

If (mta>=600) and (mta<900) Pn := mta r ; Writeln(Le prix net est :,pn); End.

then

r := mta*0.1 else r := mta*0.12 ;

Exercice 9: Pour calculer la somme a pay dune facture dlectricit lagent de lONE doit relev deux numros du conteur, de mois dernier (D) et de mois avant dernier (AD) Si la quantit dlectricit consomme est infrieur ou gale a 100KW, chaque KW est major de 140 centimes, en ajoutant un cot 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 supplmentaires (n2) avec un taux horaire (t2) Dterminer le salaire brut (s) de cette employer. Comparer (s) au plafond p = 1600 DH de scurit 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 supplmentaires :) ; 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 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

case Exemple 1 : Ecrire un programme pascal qui affiche le nom de jour partir numro de jour Solution : Var n : integer ; Begin Write(Tapez un numro du jour : ) ; 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.

readln(n) ;

Exemple 2 : Ecrire un programme pascal qui affiche le nom de mois partir de numro de mois Solution : Var x : integer ; Begin Write(Tapez un numro du mois : ) ; Case (x) of 1 : writeln(Janvier) ; 2 : writeln(Fvrier) ; 3 : writeln(Mars) ; 4 : writeln(Avril) ; 5 : writeln(Mai) ; 6 : writeln(Juin) ; 7 : writeln(Juillet) ; 8 : writeln(Aot) ; 9 : writeln(Septembre) ; 10 : writeln(Octobre) ; 11 : writeln(Novembre) ; 12 : writeln(Dcembre) ; end; end.

readln(x) ;

1. Les instructions de rptitions : La rptition reprsente lide dexcuter une mme squence plusieurs fois, en distingue 3 formes de rptition : a) 1re Forme : Tant que (condition) faire squence C'est--dire tant que la condition est vrifi en excute la squence En Turbo Pascal :
6 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

While (condition)

do squence

Exemple 1 : Ecrire un programme pascal qui permet dafficher 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 dune suite dlments 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) 2me Forme : Pour i = A1 An faire squence C'est--dire la squence (s) est excute pour i=A1, i=A2, i=A3, i=An En Turbo Pascal : For i := A1 to An do s Exemple : ? Rcrire lexemple 1 et lexemple 2 sous la 2me forme Solution (Exemple 1) : Program bonjours ; Var i : integer ; Begin For i:=1 to 5 do Writeln(Bonjour) ; End. Solution (Exemple 2) : Program Var

suite ; i, n, s : integer ;
7 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

Begin Write(Tapez un entier : ) ; readln(n) ; For i := 1 to n do S :=s + i ; Writeln(La somme est :,s) ; End. Repeat squence until (condition)

Srie dexercices N :2 Exercice 1 : Soit deux villages A et B avec A = 210 et B = 280, chaque anne la population de A augmente de 8%, celle de B augmente de 5%. Calculer le nombre danne ncessaire pour que A dpasse B. Gnraliser le problme avec nimporte 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 danne ncessaire est :,n) ; End. Exercice 2 : Ecrire un programme pascal qui permet de dterminer 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 dterminer le minimum, le maximum et la moyenne de 10 nombres entiers ? Solution : Var Begin e, min, max, moy, s : real; i : integer ;

8 WWW.TRI.ON.MA

Techniques des Rseaux 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 dun 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 linstruction while ou repeat crire un programme qui calcule la somme des lments entiers jusqu la saisie de la valeur 1. Solution 1 : Var e, s : integer ; Begin Writeln(Tapez des lments dfrents de 1) ; Write(Tapez un lmnt : ) ; readln(e) ; While e <> 0 do Begin Write(Tapez un lmnt : ) ; S := s+e ; End ; Write(La somme des lments saisie vaut : ,s) ; End.

s :=e ;

readln(e) ;

Exercice 6 : Ecrire un programme qui permet dafficher des toiles sous forme carr puis sous forme triangulaire Solution 1 : (carr)
9 WWW.TRI.ON.MA

Techniques des Rseaux 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 Srie dexercices N :3 Exercice 1 : Ecrire un programme pascal qui retire les blancs dune phrase donne. Exp : Entre (je suis un tudiant) Sortie (jesuisuntudiant) 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 dun mot donne est le mot obtenu en lisant le mot partir de fin. ? Ecrire un programme pascal donnant le mot miroir dun 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

WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

End. Exercice 3 : Ecrire un programme qui permet de dire si un mot donn est un mot palindrome. Cest 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 caractris par son nom, prnom, 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(Prnom : ); 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 rel). 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 lment a rechercher : ); Readln(e); For i := 1 to 10 do If e = t[i] then n :=n+1; If n = 0 then writeln(Cet lment existe pas); Else writeln(Cet lment existe) ; End. Solution 2 :
11 WWW.TRI.ON.MA

Techniques des Rseaux 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 lment a rechercher : ); Readln(e); For i := 1 to 10 do If e = t[i] then v := true; If v = true then writeln(Cet lment existe); Else writeln(Cet lment existe pas) ; End. Exercice 6 : Ecrire un programme pascal qui affiche le plus grand lment dun 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 llment numro ,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 apparat 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 WWW.TRI.ON.MA

Techniques des Rseaux Informatiques

Var Begin

t : array[1..10] of integer ;

max, i, r: integer;

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 rels, inserer la valeur x la Kime place (on obtiendra un tableau de 11 lments) Solution 1 : Program var Begin For I := 1 to Readln(x); T[11] := t[k]; For I := 1 to End.

insertion ; t : array[1..11] of real ; 10 do readln(t[i]); readln(k); t[k] := x; 11 do writeln(t[i]);

x : real; i, k: integer;

Solution 2 : Program insertion ; var t : array[1..11] of real ; 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.

x : real; i, k: integer;

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 WWW.TRI.ON.MA

Techniques des Rseaux 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 WWW.TRI.ON.MA

Vous aimerez peut-être aussi