Académique Documents
Professionnel Documents
Culture Documents
Srie2
:Testes/Boucles
Sommaire
Troisime Srie.....................................................................................................................................2
Exercice 1 : Types de valeurs...........................................................................................................2
Exercice 2 : Nombres.......................................................................................................................2
Exercice 3 : Expressions..................................................................................................................2
Exercice 4 : Identificateurs valides / non valides............................................................................3
Exercice 5 : Dclaration de variables (Affectation / Lecture).........................................................4
Exercice 6 : Excution / Droulement d'un algorithme...................................................................7
Exercice 7 : Le signe d'un nombre...................................................................................................8
Exercice 8 : Comparaison entre deux nombres.............................................................................10
Exercice 9 : Rsolution de l'quation ax2+bx+c=0.......................................................................11
Exercice 10 : Droulement d'un algorithme..................................................................................13
Exercice 11 : valuation des expressions arithmtiques et logiques.............................................17
Exercice 12 : Calculer une somme d'une manire itratives.........................................................18
Exercice 13 : Calculs itratives - sommes, produits......................................................................25
Exercice 14 : Calcul de somme en fonction de n et x....................................................................27
Exercice 15 : Calcul de salaire pour N individus...........................................................................29
Exercices Supplmentaires :...............................................................................................................32
Exercice 16 : Solution d'une quation de deuxime degr............................................................32
Exercice 17 : Sommes itratives....................................................................................................33
L'objectif de cette deuxime srie est de comprendre les notions de: expressions et leurs
valuations, droulement d'algorithme, teste alternatif simple et double ainsi que la notion de
boucles.
Vousallezaborderlespointssuivants:
Dterminerletyped'unevaleur(entier,rel,caractre,chaneouboolen)
crirecorrectementlesvaleursetlesexpressionsdanslelangagePASCAL
Droulementd'unalgorithme
Organigramme
Utilisationdutestealternatifdoubleetsimple
UtilisationdesbouclesPour,TantqueetRpter(for,whileetrepeat).
Calculdesommesetproduitsitratives
LMD/S.T.
Srie2
:Testes/Boucles
Troisime Srie
Exercice 1 : Types de valeurs
Donnerletypedesconstantes suivantes: 2010;124.5;667.0E8;'A';'erreur:divisionspar
zro';TRUE;FALSE
Rponse:
Valeur
Type(Algorithme)
EnPascal
2010
Entier
Integer
124.5
Rel(avecunevirgulefixe)
Real
667.0E8
Rel(avecunevirguleflottante) Real
'A'
Caractre
Char
'erreur:divisionparzro'
Chane
String
TRUE
Boolen
Boolean
FALSE
Boolen
Boolean
EnalgorithmiqueetenlangagePASCAL,ily5typesdebase.
Exercice 2 : Nombres
Exprimerlesnombressuivantsdansunlangage(PASCAL):8,5096,21090,391016
Rponse:
Nombres
EnPASCAL
8,50
8.50
96,2109
96.2E+9
0,391016
0.39E16
Exercice 3 : Expressions
Pourlesexpressionsmathmatiques(arithmtiques/logiques),latranscriptionmanuellen'estpas
toujours valables pour le langage PASCAL. Le tableau suivant montres comment crire
correctementquelquesoprations/fonctionsmathmatiques
Expressionnormale
a
ExpressionenPascal
a/b(divisionrel:rsultataveclavirgule)
adivb(divisionentire:rsultatentier)
LMD/S.T.
Srie2
:Testes/Boucles
a2
sqr(a)
sqrt(a)
a
|a|
abs(a)
exp(x)
Ln(x)
ln(x)
exp(n*ln(x))
Exprimerlesexpressionssuivantesdansunlangage(PASCAL):
( x y )2k
b+ b 24 ac
x
2 x e
2a
ab
Rponse:
Expression
b+ b 24 ac
2a
2x e
EnPascal
(b+sqrt(sqr(b)4*a*c))/(2*a)
2*x*exp(x)
x
2k
( x y )
ab
exp(2*k*ln(xy))/(a*b)
Ilfautfaireattentionlorsd'crituredesexpressionsmathmatiques(arithmtiquesoulogiques).
Valide/NonValide
1A
Nonvalide:ilcommenceparunchiffre
R?
Nonvalide:ilcontientlepointd'interrogation
K2
Valide
T280
Valide
12R
Nonvalide(commelepremier)
Hauteur
Valide
LMD/S.T.
Srie2
:Testes/Boucles
PrixHT
Nonvalide:ilcontienttir6(signedemoins)
Prix_HT
Valide
Codeprod
Nonvalide:ilcontientunblanc
Ilfautrevoirladfinitiondel'identificateurencours
Lesidentificateurssontutilisspourdonnerunnomunprogramme,constanteouvariables
Danscettepremiresolution,oncritlesvaleursdanslecodesources(dansleprogramme
LMD/S.T.
Srie2
:Testes/Boucles
luimme).Etlesvaleurssontconnusavantd'excuterleprogramme.
Lapartiegauched'uneaffectationesttoujoursunevariables
Vouspouvezajouterdeschanedecaractres(message)lafonctionwritepourmontrerles
nomsdesvariablesetleursvaleursrespectives:write('a=',a,'b=',b,.etc.
Organigramme:
L'organigrammeestunefaondemontrerunalgorithme(ouunprogramme)sousformed'actions
schmatisesetleursenchanement(flches)
Dbut
Les diffrentes figures d'organigramme
a 135
Figure
b -125
Smantique/Sense
Reprsente le dbut et la Fin de
l'organigramme
c 150.0
Entres/Sorties:Lecturedesdonnes
etcrituredesrsultats.
d 127543.50
e 96.E9
Calculs,Traitements
f 0.39E-16
Tests et dcision: on crit le test
l'intrieurdulosange
g 'A'
H 'Informatique 1'
i true
Connecteur
j false
Fin.
LMD/S.T.
Srie2
:Testes/Boucles
Deuximesolution:Parlecture
L'algorithme:
Algorithme val_absolue_carre
Variables
a, b: entier
c, d, e, f: rel
g: caractre
h: chane
i, j: boolen
Dbut
lire(a); lire(b); lire(c); lire(d);
lire(e); lire(f); lire(g);
lire(h); i true; j false;
crire(a, b, c, d, f, g, h, i, j)
Fin
LeprogrammePASCAL:
1 Program val_absolue_carre;
2 Uses wincrt;
3 var
a, b: integer; c, d, e, f: real; g:char;
4
i, j: boolean;
5
6 Begin
read(a); read(b); read(c); read(d); read(e);
7
read(f);
readln(g); readln(h); i:=true;
8
j:=false;
9
write (a, b, c, d, e, f, g, h, i, j);
10
11 End.
Organigramme:
Dbut
lire(a)
lire(b)
lire(c)
lire(d)
lire(e)
lire(f)
lire(g)
lire(h)
i true
j false
Fin.
h:string;
LMD/S.T.
Srie2
:Testes/Boucles
A5;B3;CB+A;A2;BB+4;CB2
b)
X5;Y2*X;XX+1;Ysqr(XY);Zsqr(X+Y);X(X+3*Y)+2
Rponse:
Excutermanuellementunesquencesd'instructions(algorithmes/programme)nouspermetde
voir l'volution des variables (changement de valeurs pour les variables) et a nous permet de
comprendrel'algorithmeetdeprouverqu'ildonneunbonrsultat.
Pour drouler un algorithme / programme on utilise un tableau dans le quel les colonnes
reprsententlesvariablesetleslignesreprsententlesinstructions.
a)Pourlapremiresquence,nousavons3variables:A,BetC.etselonlesaffectationson
dduitqu'ilssontdetypeentier.
Variables
A5
B3
CB+A
A2
BB+4
Instructions
CB2
2
Lesvaleursfinalessont:A=2B=7C=5
b)Pourladeuximesquence,nousavons3variables:X,YetZ.etselonlesaffectationson
dduitqu'ilssontdetypeentier.
Variables
X5
Y2*X
10
XX+1
10
Ysqr(XY)
196
Zsqr(X+Y)
196
40000
196
40000
Instructions
X(X+3*Y)+2
582
Lesvaleursfinalessont:X=582Y=196Z=40000
LMD/S.T.
Srie2
:Testes/Boucles
L'algorithme:
Algorithme exo6_a
Variables
a, b, c: entier
Dbut
A5; B3; CB+A; A2; BB+4; CB-2;
crire(A, B, C)
Fin
LeprogrammePASCAL:
1 Program exo6_a;
2 Uses wincrt;
3 var
a, b, c: integer;
4
5 Begin
A:=5; B:=3; C:=B+A; A:=2; B:=B+4; C:=B-2;
6
Write ('A = ', A, '
B = ', B, '
C = ', C);
7
8 End.
N.B.:aseralammechosepourladeuximesquence.
LMD/S.T.
Srie2
:Testes/Boucles
L'algorithme:
Algorithme val_absolue_carre
Variables
x: rel
Dbut
lire(x)
Si x > 0 alors
crire('x est positif')
Sinon
Si x < 0 alors
crire ('x est ngatif')
Sinon
crire ('x est nul')
FinSi
FinSi
Fin
LeprogrammePASCAL:
1 Program val_absolue_carre;
2 Uses wincrt;
3 var
4
X: real;
5 Begin
6
Read(X);
7
if x>0 then
8
Write('X est positif')
9
else
10
if x < 0 then
11
Write('X est ngatif')
12
else
13
Write('X est nul');
14 End.
Organigramme:
Dbut
Lire (x)
Oui
Non
X>0
X<0
Oui
crire('x est ngatif')
Fin.
LMD/S.T.
Srie2
:Testes/Boucles
sia>b
'aestpluspetitqueb'
sia<b
'aestgalb'
sia=b
Rponse:
Cettealgorithmepeuttreschmatiscommesuit:
a
b
Traitement
10
LMD/S.T.
Srie2
:Testes/Boucles
LeprogrammePASCAL:
1 Program val_absolue_carre;
2 Uses wincrt;
3 var
4
a, b: real;
5 Begin
6
Read(a, b);
7
if a>b then
8
Write('a est plus grand que b')
9
else
10
if x < 0 then
11
Write('a est plus petit que b')
12
else
13
Write('a est gal b');
14 End.
Organigramme:
Dbut
Lire (a, b)
Oui
Non
a>b
Oui
a<b
Fin.
Traitement
On a Trois cas :
- si delta < 0 : Pas de solution dans IR
- si delta = 0 : Solution double x1=x2
- si delta > 0 : Deux solutions diffrentes
11
LMD/S.T.
Srie2
:Testes/Boucles
Lapremiretapedansl'algorithmeestd'introduirelesvaleursdea,betc.Ensuite,oncalcule
delta.Enutilisantlestestsalternatifsdoubles(sisinon),l'algorithmedcidequoiafficher
commersultat.
L'algorithme:
Algorithme val_absolue_carre
Variables
a, b, c, delta, x1, x2: rel
Dbut
lire(a, b, c)
Delta b*b - 4*a*c
Si delta < 0 alors
crire('Pas de solutions relles')
Sinon
Si delta = 0 alors
x1 -b/(2*a)
crire ('Solution double x1=x2=', x1)
Sinon
x1 (-b-sqrt(delta))/(2*a)
x2 (-b+sqrt(delta))/(2*a)
crire ('deux solutions. x1=', x1, '
FinSi
FinSi
Fin
x2=', x2)
LeprogrammePASCAL:
1 Program val_absolue_carre;
2 Uses wincrt;
3 var
a, b, c, delta, x1, x2: real;
4
5 Begin
Read(a, b, c); delta:=sqr(b)-4*a*c;
6
if delta<0 then
7
Write('Pas de solutions relles')
8
else
9
if delta = 0 then
10
begin
11
x1:= -b/(2*a);
12
Write('Solution double x1 = x2 = ', x1:6:2);
13
End
14
Else
16
Begin
17
X1:=(-b - sqrt(delta))/(2*a);
18
X2:=(-b + sqrt(delta))/(2*a);
19
Write('Deux solutions. x1=',x1:6:2,'x2=', x2:6:2);
20
End;
21
22 End.
12
LMD/S.T.
Srie2
:Testes/Boucles
Organigramme:
Dbut
Lire (a, b, c)
delta b*b-4*a*c
Oui
Non
delta < 0
delta = 0
x1 (-b-sqrt(delta))/(2*a)
x2 (-b+sqrt(delta))/(2*a)
crire(x1, x2)
Fin.
13
Oui
x1 -b/(2*a)
crire(x1)
LMD/S.T.
Srie2
:Testes/Boucles
Faireledroulementdecetalgorithmeetdduirelesvaleursfinaledesvariablesa,b,cet
ddanschacundescassuivantes:
1)a=1;b=2;c=1
2)a=2;b=1;c=13)a=1;b=1;c=24)a=2;b=1;c=3
crireleprogrammePascalcorrespondantetl'excuter.
Rponse
a
b
Traitement
Nous avons dans l'algorithme 3 variables d'entre et 4 variables de sortie. Pour drouler
l'algorithme,ondoitconnatrelavaleurdechaquevariabled'entre.
Droulement
1)a=1;b=2;c=1
Variables
Instructions
Lire(a,b,c)
d0
Sia>bfalse
=>Sinon
Sia>cfalse
bb+c
16
dsqr(a+b+d)
1
3
Lesvaleursfinalessont:a=1,b=3,c=1etd=16
14
LMD/S.T.
Srie2
:Testes/Boucles
2)a=2;b=1;c=1
Variables
Lire(a,b,c)
d0
Sia>btrue
sia<sifalse
=>sinon
sib=ctrue
cc+3
dab+c=21+4=5
dsqr(a+b+d)=82
2
1
Lesvaleursfinalessont:a=2,b=1,c=4etd=64
64
Instructions
3)a=1;b=1;c=2
Variables
Lire(a,b,c)
d0
Sia>bfalse
=>sinon
sia>ctrue
a2*b
bb+c
dsqr(a+b+d)=12
2
1
Lesvaleursfinalessont:a=2,b=1,c=2etd=1
Instructions
4)a=2;b=1;c=3Lesvaleursfinalessont:a=2,b=1,c=2etd=1
Variables
abc
ca+b
25
Instructions
Lire(a,b,c)
d0
Sia>btrue
sia<ctrue
bb+c
dsqr(a+b+d)=12
15
LMD/S.T.
Srie2
:Testes/Boucles
LeprogrammePASCALcorrespondant:
1 Program Exo8;
2 Uses wincrt;
3 var
a, b, c, d: real;
4
5 Begin
Read(a, b, c);
6
d:=0;
7
if a>b then
8
if a<c then
9
begin
10
b:=b+c;
11
a:=b-c;
12
c:=a+b;
13
end
14
else
16
begin
17
if b=c then
18
c:=c+3;
19
d:=a-b+c;
20
end
21
else
22
begin
23
if a>c then
24
a:=2*b;
25
b:=b+c;
26
end
17
D:=sqr(a+b+d);
28
Write('a=' , a, ' b=' , b, '
29
30 End.
Pas de point-virgule
avant else
c=' , c, '
d=', d);
Remarques:
Ilfautjamaismettredepointvirgulepourl'instructionquiprcdeelse.
Si le bloc de if contient plusieurs instructions (plus d'une instruction) on dlimite,
obligatoirement,cesinstructionsparbeginetend
Si le bloc de else contient plusieurs instructions (plus d'une instruction) on dlimite,
obligatoirement,cesinstructionsparbeginetend
Sileblocdeifouelsecontientuneseuleinstruction,onpeutenleverbeginetend
DanslelangagePASCAL,ilnyapaslemotclendIfouendElse
16
LMD/S.T.
Srie2
:Testes/Boucles
<>(diffrent)
Danslecasoudeuxoprateursontlammeprioritoncalcultoutd'abordceluigauche(de
gauchedroite).
Expression1:a+b/c+((d/3+4)/3+a)/b
Expression2:(a>b)ornot(c>=d)and(b<c)
Aveca=1;b=2;c=4;d=6.
Rponse
Expression1
a+b/c+((d/3+4)/3+a)/b
(5)0.5
(1)2
(7)
(2)
1.5
6
(3)
2
(4)
3
(6)
1.5
(8)
3
Dansl'expression1,ilyahuitoprateurs,doncontrouvera8tapesdecalcul.
L'ordredesoprationsseradfinidonccommesuit:
a+b/c+((d/3+4)/3+a)/b
(7)(5)(8)(1)(2)(3)(4)(6)
17
LMD/S.T.
Srie2
:Testes/Boucles
Expression2
(a>b)ornot(c>=d)and(b<c)
False
(2)Flase
(3)TRUE
(4)TRUE
(5)
TRUE
(6)
TRUE
(1)
Dansl'expression1,ilya6oprateurs,doncontrouvera6tapesdecalcul.
L'ordredesoprationsseradfinidonccommesuit:
(a>b)ornot(c>=d)and(b<c)
(1)(6)(4)(2)(5)(3)
S= (2i +1)2
i=0
Letermerptitive(gnrale)est: (2i+1)2
ic'estunindicequivariedelavaleurinitiale0jusqu'lavaleurfinalem.
18
LMD/S.T.
Srie2
:Testes/Boucles
chaqueitrationdelaboucle Pour onajoute S letermerptitive: (2i+1)2 comme
suit:SS+sqr(2*i+1)cequiestengrasestletermeitrative(rptitiveougnrale)
Bienvidemment,pourcalculerlavaleurdeSonaurabesoindelavaleurdem.mc'estvaleur
introduirel'algorithme(unevariabled'entre=> lire(m)).Parcontre S estlersultatcalculer
(unevariabledesortie=>crire(s))
a)LasolutionenutilisantlabouclePour
Algorithme Exo12_Pour
Variables
m, s, i:entier
Dbut
lire(m);
S 0;
Pour i0 m faire
S S + sqr(2*i+1)
FinPour
crire(S)
Fin
b)LasolutionenutilisantlaboucleTantQue
Algorithme Exo12_TantQue
Variables
m, s, i:entier
Dbut
lire(m);
S 0;
i 0;
Tant-que i<= m faire
S S + sqr(2*i+1)
i i + 1
FinTant-Que
crire(S)
Fin
c)LasolutionenutilisantlaboucleRpter
Algorithme Exo12_Repeter
Variables
m, s, i:entier
Dbut
lire(m);
S 0;
i 0;
Rpter
S S + sqr(2*i+1)
i i + 1
Jusqu' i>m
crire(S)
Fin
Remarques:
LabouclePourfonctionneavecuncompteur(indice)quireprsenteunevariableentire(le
compteurdoittreobligatoirementunevariableentire)
19
LMD/S.T.
Srie2
:Testes/Boucles
DanslabouclePouronspcifielavaleurinitialeetlavaleurfinale(deuxvaleursentires)
ducompteur
Pour(nombred'itrations=0)
SilavaleurfinaleestsuprieurlavaleurinitialedonconexcutelabouclePouravecun
nombred'itrations=<valeurFinale><valeurInitiale>+1.Dansl'exempleprcdent,laboucle
Pourseraexcutepour(m+1)itrations(Sim=4aseraalors5itrations).
LesdeuxbouclesTantqueetRpterfonctionnentavecdesconditions(expressionslogiques
quidonnentsoitTruesoitFalse).
D'unemaniregnrale,traduireunebouclePouruneboucleTantquesefaitcommesuit:
Pour <cpt><vi> <vf> faire
<cpt> <vi>
Tanque-Que <cpt> <= <vf> faire
<instruction(s)>
<cpt> <cpt> + 1
FinTant-que
<instruction(s)>
FinPour
Telque:
<cpt>
:c'estunevariableentire(lecompteurdelabouclePour)
<vi>
:c'estunevaleurentire(lavaleurinitialedelabouclePour)
<vf>
:c'estunevaleurentire(lavaleurfinaledelabouclePour).
Donc, pour transformer la boucle Pour une boucle Tantque il faut ajouter deux
instructions:linitialisationducompteurlavaleurinitialeetl'incrmentationducompteur(de1)
lafindechaqueitration.Bienvidemment,leboucle Tantque contientlaconditioncompteur
infrieurougalelavaleurfinale.
ToutebouclePourpeuttreremplaceparuneboucleTantque.Cependant,onpeuttrouver
desbouclesTantquequ'onnepeutpas(oubiendifficile)remplacerparunebouclePour.
TouteboucleTantquepeuttreremplaceparuneboucleRpteretviceversa.
LaboucleTantqueetRptersontquivalentes.
vraieonentrel'itrationsinononquittelaboucle.
LaconditiondelaboucleRpterestvaluelafindel'itration:silaconditionestvraie
onquittelabouclesinononraliseuneautreitration(ritre:reboucle).
Rpterlaconditionreprsenteletestdesortie.
20
LMD/S.T.
Srie2
:Testes/Boucles
PourremplacerlaboucleTantqueparlaboucleRpter,ilsuffitdenierlaconditiondela
boucleTantqueetbiensrderespecterlasyntaxedesdeuxbouclescommesuit:
Tant-que <Condition_1> faire
Rpter
<instruction(s)>
Jusqu' <Condition_2>
<instruction(s)>
FinTant-que
Telque:<Condition_2>etlangationde<Condition_2>,autrementdit:
<Condition_2>=Not(<Condition_1>)
2Ledroulementpourm=4
a)LabouclePour
Variables
Lie(m)
S0
Pouri=0
SS+sqr(2*i+1)=0+sqr(2*0+1)=
12
12=1
Pouri=1
SS+sqr(2*i+1)=12+sqr(2*1+1)=
1+32=10
12+32=10
Pouri=2
10
SS+sqr(2*i+1)=10+sqr(2*2+1)=
10+52=35
12+32+52=35
Pouri=3
35
SS+sqr(2*i+1)=35+sqr(2*3+1)=
35+72=35+49=84
12+32+52+72=84
Pouri=4(ladernireitrationi=m)
84
SS+sqr(2*i+1)=84+sqr(2*4+1)=
84+92=84+81=165
12+32+52+72+92=165
crire(s)
165
Instructions
Lavaleurfinaledel'algorithmeestS=165
Remarque: Les deux couleurs gris clair / fonc sont utilis pour montrer et sparer les
itrationsdelabouclePour.
21
LMD/S.T.
Srie2
:Testes/Boucles
b)LaboucleTantQue
Variables
Lie(m)
S0
i0
Tantquei<=m:04=>True=>entrerlaboucle
SS+sqr(2*i+1)=0+sqr(2*0+1)=12
12=1
ii+1
Tantquei<=m:14=>True=>entrerlaboucle
SS+sqr(2*i+1)=1+sqr(2*1+1)=1+32=10
12+32=10
ii+1
10
Tantquei<=m:24=>True=>entrerlaboucle
10
SS+sqr(2*i+1)=10+sqr(2*2+1)=10+5 =35
1 +3 +52=35
ii+1
35
Tantquei<=m:34=>True=>entrerlaboucle
35
SS+sqr(2*i+1)=35+sqr(2*3+1)=35+7 =84
1 +3 +52+72=84
ii+1
84
Tantquei<=m:44=>True=>entrerlaboucle
84
SS+sqr(2*i+1)=84+sqr(2*4+1)=84+92=165
ii+1
165
Tantquei<=m:54=>False=>quitterlaboucle
165
crire(S)
165
Instructions
Lavaleurfinaledel'algorithmeestS=165
Remarque:CommedanslecasdelabouclePour,laboucleTantquepossde5itrations.Par
contre,letestei<=mestralis6fois(lederniertestn'aboutitpas=>donnefalsepourquitterla
boucle).
22
LMD/S.T.
Srie2
:Testes/Boucles
c)LaboucleRpter
Variables
Lie(m)
S0
i0
Rpter
SS+sqr(2*i+1)=0+sqr(2*0+1)=12
12=1
ii+1
Jusqu'i>m:1>4=>False=>refairelaboucle
SS+sqr(2*i+1)=1+sqr(2*1+1)=1+32=10
12+32=10
ii+1
10
Jusqu'i>m:2>4=>False=>refairelaboucle
10
SS+sqr(2*i+1)=10+sqr(2*2+1)=10+5 =35
1 +3 +52=35
ii+1
35
Jusqu'i>m:3>4=>False=>refairelaboucle
35
SS+sqr(2*i+1)=35+sqr(2*3+1)=35+7 =84
1 +3 +52+72=84
ii+1
84
Jusqu'i>m:4>4=>False=>refairelaboucle
84
SS+sqr(2*i+1)=84+sqr(2*4+1)=84+92=165
ii+1
165
Jusqu'i>m:5>4=>True=>quitterlaboucle
165
crire(S)
165
Instructions
Lavaleurfinaledel'algorithmeestS=165
3TraductiondesalgorithmesenprogrammePASCAL
a)LabouclePour
1
2
3
4
5
6
7
8
9
10
11
Program exo12_Pour;
Uses wincrt;
var
m, i, s: integer;
Begin
Write('Donner la valeur de m: '); Read(m);
S := 0;
For i:=0 to m do
S := S + sqr(2*i+1);
Write('La somme S = ', S);
End.
23
LMD/S.T.
Srie2
:Testes/Boucles
b)LaboucleTantQue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Program exo12_Tantque;
Uses wincrt;
var
m, i, s: integer;
Begin
Write('Donner la valeur de m: ');
Read(m);
S := 0;
i:=0;
while i<=m do
begin
S := S + sqr(2*i+1);
i:=i+1;
end;
Write('La somme S = ', S);
End.
c)LaboucleRpter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Program exo12_Repeter;
Uses wincrt;
var
m, i, s: integer;
Begin
Write('Donner la valeur de m: ');
Read(m);
S := 0;
i:=0;
Repeat
S := S + sqr(2*i+1);
i:=i+1;
Until i>m;
Write('La somme S = ', S);
End.
Remarques:
lexistenced'uneseuleinstructionl'intrieurdelaboucle Pour.Rienn'empchedelesmettre
commesuit:
For i:=0 to m do
Begin
S := S + sqr(2*i+1);
End;
Begin..end;semettentaprslastructuredecontrle(soitif,else,for,while).
S'ilyaplusd'uneinstruction(nombredinstructions>=2),danscecaslebeginend;
24
LMD/S.T.
Srie2
:Testes/Boucles
sontobligatoires.
boucleRepeatestdlimitparlesdeuxmotscl:RepeatetUntil
Ilfautjamaismettredepointvirguleaprsdo(PourlaboucleWhileagnreuneboucle
infinie)
1 2 3
n
+ + + ...+
2 3 4
n+ 1
1 1 1
c)Calculerlavaleurdedesachantque =1 + +...( Faire 100itrations )
4
3 5 7
Rponse
a)OnsupposequeP=N!
Donc: P=1234...N
N
gnralest:i.onauraalorslabouclePourquipossdeuncompteuriaveclavaleurinitiale1etla
valeurfinaleN.OnmultipliePparlefacteurgnral(facteurrptitif)iCommesuit:
Pour i 1 N Faire
P P * i;
FinPour;
Ilrestes'assurerquelavaleurdePsoitinitialementneutre(ilfautinitialiserP1.(P1)).
Algorithme Exo13_a_factoriel
Variables
N, P, i : entier
Dbut
lire(N);
P 1;
Pour i1 N faire
P P * i
FinPour
crire(P)
Fin
1
2
3
4
5
6
7
8
9
10
11
12
Program exo13_a_factoriel;
Uses wincrt;
var
N, i, P: integer;
Begin
Write('Donner la valeur de N: ');
Read(N);
P:=1;
for i:=1 to N do
P := P * i;
Write('N! = ', P);
End.
25
LMD/S.T.
Srie2
:Testes/Boucles
1 2 3
n
b)Onsupposeque S= + + +...+
2 3 4
n+1
n
Laformeabragie: S=
i =1
letermegnralest:
i
i
(Lasommetermes
telqueiallantde1jusqu'n)=>
i+1
i +1
i
.OnauraalorslabouclePourquipossdeuncompteuriaveclavaleur
i+1
initiale1etlavaleurfinalen.OnajouteSparletermegnral(termerptitif)
i
Comme
i+1
suit:
Pour i 1 n Faire
S S * i/(i+1);
FinPour;
Ilrestes'assurerquelavaleurdeSsoitinitialementneutre(ilfautinitialiserS0.(S0)).
Algorithme Exo13_b_somme
Variables
n, i : entier
S: rel
Dbut
lire(N);
S 0;
Pour i1 n faire
S S + i/(i+1)
FinPour
crire(S)
Fin
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
Program exo13_b_somme;
Uses wincrt;
var
n, i : integer;
S: real;
Begin
Write('Donner la valeur de N: ');
Read(N);
S:=0;
for i:=1 to n do
begin
S := S + i/(i+1);
end;
Write('La somme = ', S:6:3);
End.
1 1 1
c)Onmet S= =1 + + ...(Faire100 itrations)
4
3 5 7
99
(1)
Doncauraletermegnralesuivant: S=
k =0 2k +1
Ainsionaurauneboucle Pour avecuncompteur k allantde0jusqu'99(100itrations=99
0+1)Ilrestecalculer(1)k.Ilsuffitdemettreunevariablesigne=(1)k.Cettevariablebascule
entrelesdeuxvaleur1et1.Pourfairea,ilsuffitdemultipliersignepar1.commesuit:
signesigne.Etdecettefaon,sisigne=1doncildevient1.Etsisigne=1ildevient1.
L'objectifdel'algorithmeetdecalculerlavaleurapproximatifde=4*S.
26
LMD/S.T.
Srie2
:Testes/Boucles
Algorithme Exo13_c_PI
Variables
k,signe : entier
S, P: rel
Dbut
S 0; signe 1
Pour k0 99 faire
SS+signe/(2*k+1)
Signe - signe
FinPour
P 4*S;
crire(P)
Fin
Program exo13_c_PI;
Uses wincrt;
var
k, signe : integer;
S, P: real;
Begin
S:=0;
Signe:=1;
for k:=0 to 99 do
begin
S := S + signe/(2*i+1);
Signe:= - signe;
end;
P:=4*S;
Write('P = ', P:6:3);
End.
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
crireunalgorithmepourcalculerlasommesuivante:
x3 x 5 x 7
S=x + + + + ....+((n+1)itrations) aveclavaleurdenetdexdonnes.
3 5 7
2)
Droulerl'algorithmejusqu'n=4(enfonctiondex)
3)
Traduirel'algorithmeenprogramme.
Rponse
1)
AlgorithmepourlecalculdeS
Pourcettealgorithme,onveutcalculerlavaleurdeS.Pourcela,ilfautintroduirelavaleurdexet
den.DoncnousavonsunevariabledesortieSetdeuxvariabled'entrenetx.
n
Traitement
S
Ainsi,audbutdel'algorithmeonauralire(n,x)etlafindel'algorithmeonauracrire(S).
LaquestionquiseposeestquelestletraitementraliserpouravoirlavaleurdeS.
n
x3 x 5 x 7
x2i +1
La somme sera de i=0
+ + +....+((n+1)itrations )=
3 5 7
i=0 2i+ 1
27
LMD/S.T.
Srie2
:Testes/Boucles
jusqu'n.(n+1itrations)
Pourlecalculerdepuissancex2i+1,onmitP=x2i+1.InitialementP=x.ensuitex3,aprsx5
DoncilsuffitdefairePP*sqr(x)
Algorithme Exo_14
Variables
i, n : entier
S, x, P: rel
Dbut
Lire (n, x)
S 0
P x
Pour i0 n faire
S S+ P / (2*i+1)
P P * sqr(x)
FinPour
crire(S)
Fin
2)
Droulementdel'algorithmepourn=4etxquelconque.
Variables
Lie(n,x)
S0
Px
Pouri=0
''
''
''
''
SS+P/(2i+1)
''
''
''
''
PP*sqr(x)
''
''
''
Pouri=1
''
''
''
''
SS+P/(2i+1)
''
''
''
''
x+x3/3
PP*sqr(x)
''
''
''
x5
''
Pouri=2
''
''
''
''
SS+P/(2i+1)
''
''
''
''
x+x3/3+x5/5
PP*sqr(x)
''
''
''
x7
''
Pouri=3
''
''
''
''
SS+P/(2i+1)
''
''
''
''
x+x3/3+x5/5+x7/7
PP*sqr(x)
''
''
''
x9
''
Pouri=4(dernireitrationi=n)
''
''
''
''
SS+P/(2i+1)
''
''
''
''
x+x3/3+x5/5+x7/7+x9/9
Instructions
28
LMD/S.T.
Srie2
:Testes/Boucles
PP*sqr(x)
''
''
''
x11
''
crire(S)
''
''
''
''
x+x3/3+x5/5+x7/7+x9/9
DonclavaleurfinaleS=x+x3/3+x5/5+x7/7+x9/9(lersultatestenfonctiondexpuisqu'on
n'apasdonnerunevaleurpourx).
3)
Traductiondel'algorithmeenprogramme
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
Program exo_14;
Uses wincrt;
var
n, i : integer;
x, s, p: real;
Begin
Read(n, x);
S:=0;
P:=x;
for i:=0 to n do
begin
S := S + P/(2*i+1);
P := P * sqr(x);
end;
Write('S = ', S:6:3);
End.
R=
1)
VB
VB
VB
VB
VB
VB
5%
3%
10 %
10 %
15 %
20 %
si SF = 0 (clibataire)
si SF = 1 (divorc) et NF = 0
si SF = 1 (divorc) et NF > 0
si SF = 2 (mari) et NF = 0
si SF = 2 (mari) et 1 NF 3
si SF = 2 (mari) et NF > 3
valeurdeVpourNindividus(Ndonne).SachantqueV,VBetRsontdesrels,N,SF,NFsontdes
entiersnaturels.(AttentiondanslecasoSF=0,l'algorithmenedoitpaslireNF).Faireleslectures
ettraitementsdansunebouclede1N.
29
LMD/S.T.
Srie2
:Testes/Boucles
2)
Traduirel'algorithmeenprogramme.
Rponse
1)
Algorithme
Algorithme Exo_15
Variables
i, N : entier
SF, NF: entier
VB, R, V: rel
Dbut
Lire (N)
Pour i 1 N faire
Lire (VB, SF);
si (SF = 1) OR (SF = 2) alors
Lire (NF)
FinSi
Si SF = 0 alros
R VB * 0.05
Sinon
Si SF = 1 alors
Si NF = 0 alros
R VB * 0.03
Sinon
R VB * 0.10
FinSi
Sinon
Si SF = 2 alors
Si NF = 0 alors
R VB * 0.10
Sinon
Si (NF >= 1) AND (NF <= 3) alors
R VB * 0.15
Sinon
R VB * 0.20
FinSi
FinSi
FinSi
FinSi
FinSi
V VB + R
crire(V)
FinPour
Fin
Danscetalgorithme,onafficheraNvaleurspourV(salairesdesindividus).
30
LMD/S.T.
Srie2
:Testes/Boucles
2)
Traductiondel'algorithmeenprogramme
1 Program exo_15;
2 Uses wincrt;
3 var
4
N, i
: integer;
5
SF, NF
: integer;
6
VB, R, V : real;
7 Begin
8
Write ('Donner le nombre d'individus: ');
9
Read(N);
10
11
for i:=1 to N do
12
beign
14
Write ('Introduire le salaire de base: ');
15
Read (VB);
16
Write ('Indiquer la situation familiale: ');
17
Read(SF);
18
if (SF = 1) OR (SF = 2) then {Divorc ou Mari}
19
begin
20
Write('Introduire le nombre d'enfants: ');
21
Read (NF);
22
end;
23
24
if SF = 0 then
25
R:= VB * 0.05
26
else
27
if SF = 1 then
28
if NF = 0 then
29
R:= VB * 0.3
30
else
31
R:= VB * 0.10
32
Else
33
if SF = 2 then
34
if NF = 0 then
35
R:= VB * 0.10
36
else
37
if (NF >= 1) AND (NF <=3 ) then
38
R:= VB * 0.15
39
else
40
R:= VB * 0.20
41
V:=VB + R;
42
Writeln('Le salaire de l''individu ', i, 'est:', V:6:2);
43
end;
44 End.
31
LMD/S.T.
Srie2
:Testes/Boucles
Exercices Supplmentaires :
Exercice 16 : Solution d'une quation de deuxime degr
crireunalgorithme(etprogramme)pourrsoudreunequationdusecondordreax2+bx+c=0
dansC(lesnombrescomplexes).Danslecasolediscriminantestngatif,oncalculelapartie
relleXetlapartieimaginaireYenconsidrantlaracinedudiscriminantenvaleurabsolue.Les
solutionssontalorsX,YetX,ZavecZ=Y.(Solutionconjugue).
Solution
L'algorithmepossdetroisvariablesd'entrea,betcetdeuxvariablesdesortieX1etX2.(deux
solutionsrellesdiffrentes(delta>0),solutiondouble(delta=0)etdeuxsolutionscomplexesZ1
=X1+iX2etZ2=X1iX2
Traitement
X1
X2
Algorithme Exo_16
Variables
a, b, c : rel
delta, X1, X2: rel
Dbut
Lire (a, b, c)
Tant-que a = 0 faire
lire(a);
finTant-que
delta sqr(b) 4*a*b;
si delta = 0 alors
X1 = -b/(2*a)
crire('Solution double X1 = X2 =', X1);
sinon
si (delta > 0) alors
X1 = (-b-sqr(delta))/(2*a);
X2 = (-b+sqr(delta))/(2*a);
crire('Deux solutions relles X1=', X1, '
Sinon
X1 = -b/(2*a);
X2 = sqr(-delta)/(2*a)
crire('Deux solutions Complexes: ');
crire('Z1 = ',X1, ' + ', X2, ' i');
crire('Z2 = ',X1, ' - ', X2, ' i');
FinSi
FinSi
Fin
32
X2=', X2);
LMD/S.T.
Srie2
:Testes/Boucles
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Program exo_16;
Uses wincrt;
var
a, b, c : real;
Delta
: real;
X1, X2 : real;
Begin
Write ('Donner la valeur de a, b et c: ');
Read(a, b, c);
While a = 0 do {s'assurer que la valeur de a <> 0}
begin
Write('Veuillez donner une valeur non nulle pour a: ');
Read(a);
end;
Delta := sqr(b) 4*a*c;
if delta = 0 then
begin
X1:= -b/(2*a);
Write ('Une solution doubleX1=X2= ', X1:6:2);
end
else
if delta > 0 then
begin
X1 := (-b-sqr(delta)) / (2*a);
X2 := (-b+sqr(delta)) / (2*a);
Write ('Deux solutions relles:');
Write ('X1=', X1:6:2, 'X2=', X2:6:2);
end
Else {delta est ngatif: deux solutions complexes}
begin
X1 := -b / (2*a);
X2 := sqr(-delta) / (2*a);
Write ('Deux solutions complexes:');
Write ('Z1=', X1:6:2, ' + ', X2:6:2, 'i');
Write ('Z2=', X1:6:2, ' - ', X2:6:2, 'i');
end;
End.
x2 x4 x6 x 8
x 2n
+ + ...
2 4 6 8
2n
33
LMD/S.T.
Srie2
:Testes/Boucles
(b) S2=x +
x3 x 5
x2n +1
+ + ... +
3! 5!
(2n+1)!
Rponse
(a)IlfautcrirelasommeS1sousformeabrge.Nousavons:
n
S1=
x2 x 4 x6 x8
x 2n
x 2i
Telquesigneprend,respectivement,lesdeux
+ + ... = signe
2 4 6 8
2n i=1
2i
valeur1et1d'unemanirealternative.Donc,letermegnral(rptitif)est:x2i/(2i)
Onraliseunchangementdevariable,onmettant P=x2i.Initialement,lorsquequei=1, P=x2
aprspassex4,x6,jusqu'x2n.Pourralisera,ilsuffitdemultipliePparx2.
Donc,L'algorithmepossdedeuxvariabled'entrenetx.etunevariabledesortieS1.
Algorithme Exo17_a
Variables
n,i,signe:entier
x,P,S1: rel
Dbut
Lire (n, x)
S1 0;
Signe 1
P sqr(x);
Pour i1 n faire
S1S1 + signe*P/(2*i)
Signe - signe
P P * sqr(x)
FinPour
crire(S1)
Fin
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
18
19
Program exo17_a;
Uses wincrt;
var
n, i, signe : integer;
x, P, S1: real;
Begin
Read(n, x);
S1:=0;
signe:=1;
P:=sqr(x);
for i:=1 to n do
begin
S1 := S1 + signe * P/(2*i);
Signe := - signe;
P := P * sqr(x);
end;
Write('S1 = ', S1:6:3);
End.
(b)IlfautcrirelasommeS2sousformeabrge.Nousavons:
n
S2=x +
x3 x 5
x2n +1
x 2i +1
+ + ... +
=
3! 5!
(2n+1)! i=0 (2i+1)!
Donc,letermegnral(rptitif)est:
x 2i+1
(2i+1)!
Onralisedeuxchangementsdevariables,onmettant P=x2i+1.Initialement,lorsquequei=0,
P=x.Onmetaussif=(2i+1)!.Initialementf=1.
34
LMD/S.T.
Srie2
:Testes/Boucles
LafaoncommentpasserPdelavaleurinitialex x3,x5,jusqu'x2i+1estdelemultiplie
chaqueitrationparx2commesuitPP*sqr(x).
Lamanirecommentpasserfdelavaleurinitiale 1 3! puis 5! jusqu' (2n+1)! estdele
multipliechaqueitrationpar(2*(i+1))*(2(i+1)+1)commesuit:ff*((2*(i+1))*(2*(i+1)+1)).
Pouri=0==>ff*2*3=1*2*3=3!
Pouri=1==>ff*4*5=3!*4*5=5!
Pouri=2==>ff*4*5=3!*4*5=7!
.
Donc,L'algorithmepossdedeuxvariabled'entrenetx.etunevariabledesortieS2.
Algorithme Exo17_b
Variables
n,i,f:entier
x,P,S2: rel
Dbut
Lire (n, x)
S2 0;
f 1
P x;
Pour i1 n faire
S2S2 + P/f
PP * sqr(x)
ff*(2*(i+1))*(2*(i+1)+1)
FinPour
crire(S2)
Fin
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
18
19
20
Program exo17_b;
Uses wincrt;
var
n, i : integer;
f:longint; {Un entier plus grand}
x, P, S2: real;
Begin
Read(n, x);
S2:=0;
f:=1;
P:=x;
for i:=0 to n do
begin
S2 := S2 + P/f;
P:= P * sqr(x);
f:=f*(2(i+1))* (2*(i+1)+1);
end;
Write('S2 = ', S2:6:3);
End.
Droulementpourn=5etxquelconque
(a)PourlasommeS1
Variables
signe
S1
Lie(n,x)
S10
Psqr(x)
signe=1
''
''
x2
Pouri=1
''
''
''
''
''
SS+signe*P/(2i)
''
''
''
''
''
x /2
Instructions
35
LMD/S.T.
Srie2
:Testes/Boucles
signesigne
PP*sqr(x)
''
''
''
''
x4
x2/2
Pouri=2
''
''
''
''
x2/2
SS+signe*P/(2i)
''
''
''
''
''
x2/2x4/4
''
signesigne
PP*sqr(x)
''
''
''
''
x6
Pouri=3
''
''
''
''
''
SS+signe*P/(2i)
''
''
''
''
''
x /2x /4+x6/6
signesigne
PP*sqr(x)
''
''
''
''
x8
''
Pouri=4
''
''
''
''
''
SS+signe*P/(2i)
''
''
''
''
''
x2/2x4/4+x6/6x8/8
signesigne
PP*sqr(x)
''
''
''
''
x10
''
Pouri=5(dernireitrationi=n)
''
''
''
''
''
SS+signe*P/(2i)
''
''
''
''
''
x2/2x4/4+x6/6x8/8+x10/10
signesigne
''
''
''
''
PP*sqr(x)
''
''
''
''
x12
''
crire(S)
''
''
''
''
''
x2/2x4/4+x6/6x8/8+x10/10
36