You are on page 1of 12

UniversitdeBatna

Institutd'HygineetScuritIndustrielle
Informatique(algorithmique&programmation)
2eAnne

Un programme est une suite d'instructions donne la machine (n'importe quelle


machineavecprocesseurpasforcmentunordinateur)pourrsoudredesproblmes
oueffectuerdescalculs.

Dans un programme pascal, on trouve deux types d'instructions savoir: les


instructionssimplesetlesinstructionscomposes.

1/Instructionssimples:lecture(read),affectation(:=)etl'criture(write).
Avec ces instructions la machine est capable de lire des donnes ( partir du
clavier,souris),stockerdesdonnesetafficherdesrsultats.

2/Instructionscomposes:
Instructionsconditionnelles
Instructionrptitives(itratives)

Instructionsconditionnelles:ifthenelse,case
Ces instructions donnent la machine la capacit de choisir le traitement
effectuer(lesinstructionsexcuter).

Instructionsitratives:for,while,repeat
Dans ce qui suit, nous allons aborder les boucles appeles aussi instructions
rptitivesouinstructionsitratives.Commeleurnoml'indique,cesinstructions
permettentlamachinederpteruntraitementuncertainnombredefois.

BouclesForetWhile

Par exemple, si je veux afficher 'Bonjour' l'cran dix fois comment je dois
procder?

Ilfautquejetapedixfoisl'instruction:write('bonjour')
Write('bonjour');
Write('bonjour');
Write('bonjour');

Write('bonjour');
Cequin'estpasvidentsijeveuxrpterquelquechoseunnombreimportantde
fois,disons:100foisouplus.Lasolution?C'estl'utilisationdesboucles.

Lesbouclespermettentd'viterl'crituredetoutescesinstructions:

fori:=1to10do
write('bonjour');
Cequiveutdire:pouriallantde110faire,afficherbonjour

Syntaxedelabouclefor:
forvariable:=valeur_initialetovaleur_finaledo
<Instructions>

1
Lavaleurinitialepeutprendren'importequellevaleur,pasforcment1.

Exemple
fori:=5to10do
write('bonjour');
Cequiaffiche'bonjour'5fois

Commentdefoisleprogrammesuivantaffichede'bonjour'?

fori:=5to5do
write('bonjour');

Ill'afficheuneseulefois,justepouri=5

Remarque: Il faut que la valeur_initiale soit infrieure ou gale la


valeur_finale

fori:=10to5do
write('bonjour');
Ceprogrammen'afficherienparceque10>5

Pourcrireuneboucleforallantde101parexemple,ondoitutiliserlemot
cl'downto'

fori:=10downto1do
writeln(i);

Avant d'entamer le premier exercice de la srie, essayons d'afficher les n


premiersentiers.
1234n

readln(n);
Fori:=1tondo
write(?);

readln(n);
Fori:=1tondo
write(i);

Maintenantcommentcalculerlasommedecesnpremiersentiers.

Exercices

1. Ecrireunprogrammequicalculelasommedesnpremiersentiers.
S=1+2+3++n

Solution
programsum;
var
i,n,s:integer;
begin
readln(n);
s:=0;

2
fori:=1tondo
s:=s+i;
write('s=',s);
readln
end.

BoucleWhile

while(condition)do
<instructions>

Tantquelaconditionestvraie,rptelesinstructions.

Exemple

i:=1;
while(i<5)do
begin
writeln(i);
i:=i+1;
end;

Laboucleprcdenteaffiche:
1
2
3
4

Parcequecesvaleurssontinfrieures5

Calculdelasommedesnpremiersentiersenutilisantlabouclewhile.

programsum;
var
i,n,s:integer;
begin
read(n);
s:=0;
i:=1;
while(i<=n)do
begin
s:=s+i;
i:=i+1;
end;
write('s=',s);
end.

Remarque
Danslabouclefor,l'incrmentation(dcrmentation)se
faitautomatiquement.Alorsquedanslabouclewhile,ilfautl'ajouter.

Fori:=3to5do
writeln(i);

3
i:=3;
while(i<=5)do
begin
writeln(i);
i:=i+1;
end;
Onpeutdirequelabouclewhilesecomposedetroispartiesessentielles;
Initialisation(i:=3;)
condition:(i<=5)
incrmetation(dcrmentation):i:=i+1;

Exercice:
Caculerlasommesuivante:
S=13+23+33++n3

programsum;
var
i,n,s:integer;
begin
readln(n);
s:=0;
fori:=1tondo
s:=s+i*i*i;
write('s=',s);
readln
end.

2. Ecrireunprogrammequicalculexy
x,y:desentiers.

xy=x*x**x

yfois

programpower;
var
i,x,y,p:integer;
begin
write('Pleaseenterthebase:');readln(x);
write('Pleaseentertheexponent:');readln(y);

p:=1;
fori:=1toydo
p:=p*x;
write('p=',p);
readln
end.

3. Ecrireunprogrammequicalculelafactoriellen!dunentiern.
Rappel

n !=
{ 1 Si n=0
n( n1 ) ! Sinon

4
n!=1*2*3**n

Exemple
n!=1*2*.*n
0!=1
1!=1
2!=1*2

programfactorial;
var
i,n,fact:integer;
begin
write('Pleaseentern:');readln(n);

fact:=1;
fori:=1tondo
fact:=fact*i;
write(n,'!=',fact);
readln
end.

Quesepassetilsioncommencepartirde2aulieude1.

programfactorial;
var
i,n,fact:integer;
begin
write('Pleaseentern:');readln(n);

fact:=1;
fori:=2tondo
fact:=fact*i;
write(n,'!=',fact);
readln
end.

TP2Tableaux

Unprogrammepascalsecomposededeuxparties,lapartiedclarationoontrouve
lesdonnes(contantesetvariables)etlapartieinstructions.

Qu'estcequ'unevariable?

Une variable est un espace mmoire qui permet de stocker une seule valeur. Par
consquence, pour stocker plusieurs valeurs on a besoin de plusieurs variables.
Par exemple, pour stocker les noms de tous les tudiants j'ai besoin de n
variables, o n reprsente le nombre d'tudiants. Ce qui veut dire pour 700
tudiants,ilfaut700variables.Trop,n'estcepas!

Afind'vitercettemaniredetravail,onutilisedestableaux.

C'estquoiuntableau?

5
Untableauestunevariablequipermetdestockerplusieursvaleursdemmetype.

Dclarationd'untableauenpascal

Var
t:array[1..5]ofinteger;

pourmodifierunevaleur,ilfautmentionnerlenumrodelacaseentrecrochet

t[1]:=1
t[2]:=3

Pourrempliruntableaude5cases,ilfauttaper:

readln(t[1]);
readln(t[2]);
readln(t[3]);
readln(t[4]);
readln(t[5]);

Commeonavudanslapartieprcdente(Tp1),onpeutvitercettecritureen
utilisantlesbouclescommesuit:

fori:=1to5do
readln(t[i]);

C'estdirelescasesallantde15

Pourafficheruntableau,ilfaututiliseruneboucle,bienvidemmentparcequ'on
aplusieursvaleurs:

fori:=1to5do
write(t[i]);

Exercice1
Lasommedeslmentsd'untableau.

programsomme;
var
i,j,s:integer;
t:array[1..5]ofinteger;
begin
(*lecturedetableau*)
fori:=1to5do
readln(t[i]);

(*calculdelasomme*)
s:=0;
fori:=1to5do

6
s:=s+t[i];

(*affichagedelasomme*)
write('s=',s);
readln
end.
REMARQUE
Notretableaucontient5cases,sionveutmodifiersataillede510cases,il
fautparcourirtoutleprogrammeestchangerlavaleur5par10.

Pourvitercettetchefastidieuse,onutilisedesconstantescommesuit:

programsomme;
const
N=5;
var
i,j,s:integer;
t:array[1..N]ofinteger;
begin
fori:=1toNdo
readln(t[i]);

s:=0;
fori:=1toNdo
s:=s+t[i];
write('s=',s);
readln
end.
Decettemanirepourchangerlatailledutableau,jechangeleprogrammeune
seuleposition:
constN=10;
aulieude
constN=5;

Exercice2

DterminationduMax

Avantd'crireunprogrammequidtermineleMaxparmileslmentsd'untableau,
crivonsunprogrammequidterminelemaxentretroisvariablesentires:a,b,
c:integer

if(a>b)then
if(a>c)then
max:=a
else
max:=c
else
if(b>c)then
max:=b
else
max:=c;

7
Ilexisteunedeuximemthodebeaucoupplussimple,quipermetdedterminerla
maxentretroisvariables.Onsupposequelapremirevariable(A)estmax,puis
oncomparelemaxaveclesdeuxautresvariables(BetC),commesuit:

max:=a;
if(max<b)then
max:=b;
if(max<c)then
max:=c;

Supposonsmaintenantqu'onauntableaucontenant3cases,leprogrammedevient:

max:=t[1];
if(max<t[2])then
max:=t[2];
if(max<t[3])then
max:=t[3];

sionajouteunequatrimecasenotretableau,ilfautqu'onajouteuneautre
instructiondecomparaisoncommesuit:

max:=t[1];
if(max<t[2])then
max:=t[2];
if(max<t[3])then
max:=t[3];
if(max<t[4])then
max:=t[4];

Onremarquebienquel'instructionsuivanteserpte:
if(max<t[*])then
max:=t[*];

Donc,onpeutl'criresouscetteforme(enutilisantunebouclefor):

max:=t[1];
fori:=2tondo
if(max<t[i])then
max:=t[i];

Leprogrammecomplet:

8
programmaximum;
const
N=5;
var
i,j,max:integer;
t:array[1..N]ofinteger;
begin
(*lecturedutableau*)
fori:=1toNdo
readln(t[i]);

(*dterminationduMax*)
max:=t[1];
fori:=2tondo
if(max<t[i])then
max:=t[i];

(*affichageduMax*)
write('max=',max);
readln
end.

Exercice3

Leproduitdedeuxtableaux:

programproduit;
const
N=5;
var
i,j,max:integer;
t1,t2,t3:array[1..N]ofinteger;
begin
(*lecturedutableauT1*)
fori:=1toNdo
readln(t1[i]);

(*lecturedutableauT2*)
fori:=1toNdo
readln(t2[i]);

(*calculdutableauT3*)
fori:=1toNdo
t3[i]:=t1[i]+t2[i];

(*affichagedutableauT3*)
fori:=1toNdo

9
write(t3[i],'');
readln
end.

TP3Matrices

programmatrix;
const
l=3;
c=3;
var
(*DCLARATIONDELAMATRICE*)
m:array[1..l,1..c]ofinteger;

i,j:integer;
begin
(*lecturedelamatrice*)
fori:=1toL
forj:=1tocdo
readln(m[i,j]);

(*affichagedelamatrice*)
fori:=1toldo
begin
forj:=1tocdo
write(m[i,j]:4);
writeln
end;
readln
end.

Exercice1

Lasommedeslmentsd'unematrice.

programmatrix;
const
l=3;
c=3;
var
m:array[1..l,1..c]ofinteger;
i,j,s:integer;
begin

(*lecturedelamatrice*)
fori:=1toL
forj:=1tocdo
readln(m[i,j]);

(*affichagedelamatrice*)
fori:=1toldo

10
begin
forj:=1tocdo
write(m[i,j]:4);
writeln
end;

(*calculdelasomme*)
s:=0;
fori:=1toL
forj:=1tocdo
s:=s+m[i,j]);
write('Sommedeslments=',s);
readln
end.

Exercice:

Latraced'unematrice(lasommedeslmentsdiagonaux).

programmatrix;
const
l=3;
c=3;
var
m:array[1..l,1..c]ofinteger;
i,j,trace:integer;
begin

(*lecturedelamatrice*)
fori:=1toL
forj:=1tocdo
readln(m[i,j]);

(*affichagedelamatrice*)
fori:=1toldo
begin
forj:=1tocdo
write(m[i,j]:4);
writeln
end;

(*calculdelatrace*)
trace:=0;
fori:=1toL
forj:=1tocdo
if(i=j)then
trace:=trace+m[i,j]);
write('Trace=',trace);
readln
end.

11
Exercice:

Lasommededeuxmatrices:

programmatrix;
const
l=3;
c=3;
var
a,b,c:array[1..l,1..c]ofinteger;
i,j:integer;
begin

(*lecturedelamatriceA*)
fori:=1toL
forj:=1tocdo
readln(A[i,j]);

(*lecturedelamatriceB*)
fori:=1toL
forj:=1tocdo
readln(B[i,j]);

(*calculdelamatriceC*)
fori:=1toL
forj:=1tocdo
C[i,j]:=A[i,j]+B[i,j];

(*affichagedelamatriceC*)
fori:=1toldo
begin
forj:=1tocdo
write(C[i,j]:4);
writeln
end;
readln
end.

12

You might also like