Travail Dirigé 2
Program Calculatrice;
Var
a,b,r : Real;
op : char;
Begin
Write('Entrez 2 nombres et un operateur entre
eux: ');
Readln(a,op,op,b);
If op = '+' Then
r := a+b
Else If op = '-' Then
r := a-b
Else If op = '*' Then
r := a*b
Else If op = '/' Then
If b <>0 Then
r := a/b
Else r := 1E38
Else r := -1E38;
Writeln(a:8:3,op,b:8:3,'=',r:8:3);
End.
Exercices:Dessinez
l’arbre programmatique du programme suivant:
Program Ex1;
var a,b,c,d,min,t : real;
Begin
Write(‘Enterz 4 nombres reels:’); Readln(a,b,c,d);
min := a;
if min > b Then min := b
Else if min > c Then Min := c;
t:= min; min :=d; d:= t;
Writeln(‘Les valeur finales sont:
‘,a:8:3,b:8:3,c:8:3,d:8:3);
End.
|
Program
somme1;
Var
n,s :
Integer;
Begin
Writeln('Entrez
des nombres entiers:');
Readln(n);
s:=0;
While n<>-100 Do
Begin
s := s+n;
Readln(n);
End;
Writeln('La somme
est: ',s);
End.
Exercices : 1. Modifier le programme pour lire jusqu'au
fin de fichier. 2. Modifiez le programme pour calculer la somme des nombres
positifs lus. 3. Modifier pour calculer la moyenne des nombres positifs.
avec exactitude e
(On doit terminer quand le membre calculé devient
inférieur ou égale à e)
|
Exercice: Traduisez l'arbre en Pascal.
|
Traduction de la boucle "pour"
For
i := M To N Do s := s+i;
Exercices:
1. Ecrivez le programme en Pascal.
2. Changez la boucle "pour" avec le
répétitive "tant que".
Il y a
quelque variants. Seulement le variant avec le répétitive
"jusqu'au" est traduit. Les autres sont laissés aux
étudiants pour exercice.
|
Program
pgcd;
var
a,b,t,da,db:
Integer;
Begin
Write('Entrez 2
nombres entiers':);
Readln(a,b);
da:=a; db:=b;
Repeat
t := da mod
db;
da := db;
db := t;
Until t=0;
Writeln('Le pgcd
de ',a,' et ',b,' est ', da);
End.
|
|
Variant
2 :
Variant
3:
Program
Max; |
Exercice_1: Faire un programme qui
calcule la maximum et le nombre d'occurrences de ce maximum dans une liste non
vide terminée par 0.
Exercice_2: Faire un programme qui
calcule la différence entre le maximum et le minimum pour une liste non
vide.
a)
L’équation quadratique avec deux très différentes racines
program eq_carre;
const
TROP_GRANDE =
1000000000.0;
var a,b,c,x1,x2,d :
real;
begin
a:=1; b:=
-TROP_GRANDE; c:=1;
d :=
sqrt(b*b-4*a*c);
x1:= (-b+d)/2/a;
x2:= (-b-d)/2/a;
writeln('Les
racines calculees par la formule ordinaire: x1=',x1:6:2,
'
x2=',x2:12:10);
x2 := c/x1;
writeln('Les
racines calculees par la formule de Viete: x1=',x1:6:2,
'
x2=',x
end.
b) Additionner sens cesse. Quand l’erreur va devenir 25% du pas ?
program While_err;
const
debut=100;
pas = 0.01;
var
compte, tous_les
: integer;
nombre:real;
begin
nombre := debut;
compte := 0;
write('afficher
les resultats intermediaires ',
'tous
les ? (333 par exemple) ?');
readln(tous_les);
while
(abs(nombre-(debut+(compte*pas)))<pas/4) do
begin
nombre:=
nombre + pas;
compte :=
compte+1;
if
compte mod tous_les = 0 then
writeln('valeur obtenue ',
nombre:12:6,
',au lieu de ',debut+(compte*pas):8:4,
'
en ',compte,' calculs');
end;
writeln('erreur
de 25% en ',compte,' calculs');
end.