Sunteți pe pagina 1din 12

CAPITOLUL 3 control

Implementarea structurilor de

IMPLEMENTAREA STRUCTURILOR DE CONTROL


3. . Implementarea structurii sec!en"iale 3.#. Implementarea structurii de deci$ie

3.3. Implementarea structurilor repetiti!e 3.%. &acilit'"i de (ntrerupere a unei sec!en"e

Algoritmul proiectat pentru rezolvarea unei anumite probleme trebuie implementat ntr-un limbaj de programare; prelucrarea datelor e realizeaz! cu ajutorul instruciunilor" In truc#iunea de crie un proce de prelucrare pe care un calculator l poate e$ecuta" O in truc#iune e te o con truc#ie valid! %care re pect! inta$a limbajului& urmat! de ) " Ordinea n care e e$ecut! in truc#iunile unui program de'ine(te a(a-numita structur de control a programului" Limbajele moderne unt alc!tuite pe principiile programrii structurate" Con'orm lui C" )o*m (i +" ,acobiniorice algoritm poate 'i realizat prin combinarea a trei tructuri 'undamentale. tructura ecven#ial!; tructura alternativ! %de decizie- de elec#ie&; tructura repetitiv! %ciclic!&"

3. . IMPLEMENTAREA STRUCTURII SEC*EN+IALE


/tructura ecven#ial! e te o n(iruire de ecven#e de prelucrare %in truc#iuni&- pla ate una dup! alta- n ordinea n care e dore(te e$ecu#ia ace tora" 2eprezentarea tructurii ecven#iale cu ajutorul schemei logice % 'igura 3"1"&.
/1 /3

2eprezentarea tructurii ecven#iale cu ajutorul pseudocodului.


instr1; instr2; . . . . .

/n

4igura 3"1" /c*ema logic! pentru tructura ecven#ial! Implementarea tructurii ecven#iale e realizeaz! cu ajutorul in truc#iunilor. In truc#iunea vid /inta$a. ; In truc#iunea vid! nu are nici un e'ect" /e utilizeaz! n con truc#ii n care e cere prezen#a unei in truc#iunidar nu e e$ecut! nimic %de obicei- n in truc#iunile repetitive&" Exemple:
int . . int ; for { a; . . . . j; (;;)

01

CAPITOLUL 3 control . . . . }

Implementarea structurilor de

In truc#iunea expresie /inta$a. au.

expresie; apel_funcie;

Exemple:
int b, a=9; double c; b=a+9; cout<<a; c=sqrt(a); clrcsr();55apelul 'unc#iei prede'inite care (terge ecranul; prototipul n *eaderul conio.h

In truc#iunea compu ! %in truc#iunea ,loc& /inta$a. {


declaratii; instr1; instr2; . . . .

} 6ntr-un bloc e pot declara (i variabile care pot 'i acce ate doar n corpul blocului" In truc#iunea bloc e te utilizat! n locurile n care e te nece ar! prezen#a unei ingure in truc#iuni- n ! proce ul de calcul e te mai comple$- deci trebuie de cri n mai multe ecven#e"

3.#. IMPLEMENTAREA STRUCTURII DE DECI-IE .ALTERNATI*E/ DE SELEC+IE0


2eprezentarea prin c*em! logic! (i prin p eudocod a tructurilor de decizie (i repetitive unt de cri e n capitolul 1" /e vor prezenta n continure doar in truc#iunile care le implementeaz!" In truc#iunea if. /inta$a. if (expresie ) instruciune1; [ else instruciune2; ]

2amura else e te op#ional!. La nt7lnirea in truc#iunii if- e evalueaz! expresie %care reprezint! o condi#ie& din paranteze" 8ac! valoarea e$pre iei e te 1 %condi#ia e te ndeplinit!& e e$ecut! instruciune1; dac! valoarea e$pre iei e te %condi#ia nu e te ndeplinit!&- e e$ecut! instruciune2" 8eci- la un moment dat- e e$ecut! doar una dintre cele dou! in truc#iuni. fie in truc#iune1- fie in truc#iune3" 8up! e$ecu#ia in truc#iunii if e trece la e$ecu#ia in truc#iunii care urmeaz! ace teia" Observaii:
1" 3" !nstruc"iune1 (i instruc"iune2 pot 'i in truc#iuni compu e %blocuri&- au c*iar alte in truc#iuni if

%i'-uri imbricate&" 8eoarece in truc#iunea i' te teaz! valoarea numeric! a e$pre iei %condi#iei&- e te po ibil! pre curtarea. if (e#$resie)- n loc de if (e#$resie %= ). 3" 8eoarece ramura else a in truc#iunii i' e te op#ional!- n cazul n care acea ta e te omi ! din ecven#ele i'-el e imbricate- e produce o ambiguitate" 8e obicei- ramura else e a ociaz! ultimei in truc#iuni if" Exemplu:
if (n& ) if (a&b) '=a; else '=b; 03

CAPITOLUL 3 control

Implementarea structurilor de

0" Pentru claritatea programelor ur ! e recomand! alinierea in truc#iunilor prin utilizarea tabulatorului orizontal" 9" 8e eori- apare con truc#ia. Aceea(i con truc#ie poate 'i cri ! (i if (e#$resie1) a t'el.
instruc"iune1; else if (e#$resie2) instruc"iune2; else if (e#$resie() instruc"iune(; . . . . . . . . . else instruc"iune)n; if (e#$resie1) instruc"iune1; else if (e#$resie2) instruc"iune2; else if (e#$resie() instruc"iune(; . . . . .. . . . . . else instruc"iune)n;

:$pre iile unt evaluate n ordine; dac! una dintre e$pre ii are valoarea 1- e e$ecut! in truc#iunea core punz!toare (i e termin! ntreaga nl!n#uire" Ultima parte a lui el e 'urnizeaz! cazul c7nd nici una dintre e$pre iile 1-3-" " "- n-1 nu are valoarea 1" ;" 6n cazul n care in truc#iunile din cadrul if*else unt imple- e poate 'olo i operatorul condi#ional" Exerciii: 1" /! e citea c! de la ta tatur! un num!r real" 8aca ace ta e a'l! n intervalul <-1===- 1===>- ! e a'i eze 1- dac! nu- ! e a'i eze -1"
+include <iostrea,.h& -oid ,ain() { double nr; cout<<./ste$t nu,ar0.; cin&&nr; int afis = (nr&= *1 11 nr <= 1 2 1 0 *1); cout<<afis; 34 int afis; if (nr &= *1 11 nr <= 1 ) afis = 1; else afis= *1; cout<<afis; 43 }

3" /! e calculeze valoarea 'unc#iei '%$&- (tiind c! $ e te un num!r real introdu de la ta tatur!. - ;$ ? 3= dac! $ <- - -@ > '%$& A $ ? 3= dac! $ %-@- => dac! $B= x

+include <iostrea,.h& /au. +include <,ath.h& -oid ,ain() { double #,f;cout<<.#=.;cin&&#; if (# <= *5) f= *#4 6 72 ; else if ( #<= ) f= #7( ; else f=s8rt(#); cout<<.f=.<<f<<9:n9; }

+include <iostrea,.h& +include <,ath.h& -oid ,ain() { double #,f;cout<<.#=.;cin&&#; if (# <= 5) f= *#4 6 72 ; if (#&=*5 11 #<= ) f= #7( ; if (#& ) f=s8rt(#); cout<<.f=.<<f<<9:n9; }

Uneori- con truc#ia i'-el e e te utilizat! pentru a compara valoarea unei variabile cu di'erite valori con tanteca n programul urm!tor. 3" /e cite(te un caracter reprezent7nd un operator aritmetic binar implu" 6n 'unc#ie de caracterul citit- e a'i(eaz! numele opera#iei pe care ace ta o poate realiza"
03

CAPITOLUL 3 Implementarea structurilor de control +include <iostrea,.h& -oid ,ain() { char o$er; cout<<.!ntrodu o$erator arit,etic, si,$lu, binar0.; cin&&o$er; if (o$er == 979) cout<<.;$eratorul de adunare%:n.; else if (o$er==9*9 ) cout<<.;$eratorul de scadere%:n.; else if (o$er==949 ) cout<<.;$eratorul de in,ultire%:n.; else if (o$er==939 ) cout<<.;$eratorul de i,$artire%:n.; else if (o$er==9<9 ) cout<<.;$eratorul rest%:n.; else cout<<.;$erator ile=al%%%:n.; }

In truc#iunea switch 6n unele cazuri e te nece ar! o decizie multipl! pecial!" In truc#iunea switch permite ace t lucru"

2eprezentare prin c*ema logic! %'igura 3"3&.

2eprezentare prin p eudocod.

te tDe$pre ie

in truc#iune1 breaC in truc#iune3 breaC

?ac@ e#$resie=e#$r)const)1 instruc"iune1; [ieAire;] /ltfel dac@ e#$resie=e#$r)const)2 instruc"iune2; [ieAire;] /ltfel dac@ e#$resie=e#$r)const)n*1 instruc"iune)n*1; [ieAire;] /ltfel instruc"iune)n;

in truc#iuneDn

4igura 3"3" 8ecizia multipl! /e te teaz! dac! valoarea pentru e#$resie e te una dintre con tantele peci'icate %e#$r)const)1, e#$r)const)2, etc"& (i e e$ecut! in truc#iunea de pe ramura core punz!toare" 6n c*ema logic! test)e#$resie e te una din condi#iile. e#$resie=e#$r)const)1, e#$resie=e#$r)const)2- etc" /inta$a. switch (e#$resie ) { case e#$resie)const)1 : instructiune)1 ; [brea>;] case e#$resie)const)2 : instructiune)2 ; [brea>;] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . case e#$resie)const)n*1: instructiune)n*1; [brea>;] [ default: instructiune)n ; ] }

00

CAPITOLUL 3 control

Implementarea structurilor de

: te evaluat! e#$resie %e$pre ie aritmetic!&- iar valoarea ei e te comparat! cu valoarea e$pre iilor con tante 1- 3- etc" %e$pre ii con tanteAe$pre ii care nu con#in variabile&" 6n itua#ia n care valoarea e#$resie e te egal! cu valoarea e#$r)const)> - e e$ecut! in truc#iunea core punz!toare acelei ramuri %instruc"iune)> &" 8ac! e nt7lne(te in truc#iunea break - parcurgerea e te ntrerupt!- deci e va trece la e$ecu#ia primei in truc#iuni de dup! Eitc*" 8ac! nu e te nt7lnit! in truc#iunea break, parcurgerea continu!" )reaC-ul cauzeaz! deci- ie(irea imediat! din Eitc*" 6n cazul n care valoarea e$pre iei nu e te g! it! printre valorile e$pre iilor con tante- e e$ecut! cazul marcat cu etic*eta default %c7nd ace ta e$i t!&" :$pre iile e#$resie, e#$resie)const)1, e#$resie)const)2, etc"- trebuie ! 'ie ntregi" 6n e$emplul urm!tor- ele unt de tip char- dar o dat! de tip char e te convertit! automat n tipul int" Exerciiu: /! re criem programul pentru problema 3- utiliz7nd in truc#iunea Eitc*"
+include <iostrea,.h& -oid ,ain() { char o$er; cout<<.!ntrodu o$erator arit,etic, si,$lu, binar0.; cin&&o$er; sBitch (o$er) { case (979)0 cout<<.;$eratorul de adunare%:n.; brea>; case (9*9)0 cout<<.;$eratorul de scadere%:n.; brea>; case (949)0 cout<<. ;$eratorul de in,ultire%:n.; brea>; case (939)0 cout<<.;$eratorul de i,$artire%:n.; brea>; case (9<9)0 cout<<.;$eratorul rest%:n.; brea>; default0 cout<<.;$erator ile=al%:n.; } }

3.3. IMPLEMENTAREA STRUCTURILOR REPETITI*E .CICLICE0


:$i t! dou! categorii de in truc#iuni ciclice. cu te t ini#ial (i cu te t 'inal"

3.3. . Implementarea structurilor ciclice cu test ini"ial


/tructura ciclic! cu te t ini#ial e te implementat! prin in truc#iunile while (i for" In truc#iunea while /inta$a. while (expresie ) instructiune ; La nt7lnirea ace tei in truc#iuni- e evalueaz! e#$resie" 8ac! acea ta are valoarea 1 - au di'erit! de = %condi#ie ndeplinit!&- e e$ecut! instruc"iune" /e revine apoi n punctul n care e evalueaz! din nou valoarea e$pre iei" 8ac! ea e te tot 1- e repet! instruc"iune- ("a"m"d" A t'el- in truc#iunea %corpul

09

CAPITOLUL 3 control

Implementarea structurilor de

ciclului& se repet att timp c7t e#$resie are valoarea 1" 6n momentul n care e#$resie ia valoarea %condi#ie nendeplinit!&- e ie e din ciclu (i e trece la urm!toarea in truc#iune de dup! while" Observaii: 1" 6n cazul n care la prima evaluare a e$pre iei- acea ta are valoarea zero- corpul in truc#iunii E*ile nu va 'i e$ecutat niciodat!" 3" !nstruc"iune din corpul ciclului E*ile poate 'i compu ! %un bloc&- au o alt! in truc#iune ciclic!" 3" : te de dorit ca in truc#iunea din corpul ciclului Bhile ! modi'ice valoarea e$pre iei" 8ac! nu e realizeaz! ace t lucru- corpul in truc#iunii E*ile e repet! de un num!r in'init de ori" Exemplu:
int a=5; Bhile (a==5) cout<<.Cuna 'iua%:n.;

55 ciclu in'init;

e repet! la in'init a'i(area me ajului

In truc#iunea for 6n majoritatea limbajelor de programare de nivel nalt- in truc#iunea for implementeaz! tructura ciclic! cu num!r cuno cut de pa(i %vezi reprezentarea prin c*ema logic! (i p eudocod din capitolul 1&" 6n limbajul C in truc#iunea for poate 'i utilizat! ntr-un mod mult mai 'le$ibil" 2eprezentare prin c*ema logic! %'igura 3"3"&. evaluare e2presie %particular ini#ializare contor& e2presie# 1 instruc"iune evaluare e2presie3 %particular incrementare contor& 4igura 3"3" /tructura ciclic! cu te t ini#ial /inta$a. for (expresie1 ; expresie2 ; expresie3 ) instructiune; Fu e te obligatorie prezen#a e$pre iilor- ci doar a in truc#iunilor vide" Exemplu: for ( ; e#$resie2; ) au. for ( ; ; )
instructiune; instructiune;

2eprezentare n p eudocod.
e-aluare e#$resie1 DEF F!GH e#$resie2 IJHJFK LMDJHNF instruc"iune e-aluare e#$resie( OPEIQ!F

3.3.#. Implementarea structurilor ciclice cu test 1inal


In truc#iunea do-while /inta$a. do instructiune; while( expresie );

/e e$ecut! instruc"iune " /e evalueaz! apoi e#$resie " 8ac! acea ta are valoarea 1- e e$ecut! instruc"iune " /e te teaz! din nou valoarea e$pre iei" /e repet! instruc"iune ct timp valoarea

0;

CAPITOLUL 3 control

Implementarea structurilor de

e$pre iei e te 1 %condi#ia e te ndeplinit!&" 6n cazul in truc#iunii do-E*ile- corpul ciclului e e$ecut! cel pu#in o dat!" Exerciii: 1" /e cite(te c7te un caracter- p7n! la nt7lnirea caracterului G" Pentru 'iecare caracter citit- ! e a'i(eze un me aj care ! indice dac! -a citit o liter! mare- o liter! mic!- o ci'r! au un alt caracter" /! e a'i(eze c7te litere mari au 'o t introdu e- c7te litere mici- c7te ci're (i c7te alte caractere" /e prezint! trei modalit!#i de implementare %cu in truc#iunea Bhile - cu in truc#iunea for (i cu in truc#iunea do*Bhile &"
+include <iostrea,.h& +include <conio.h& -oid ,ain() { char c; clrscr(); int l,ic= , l,are= , lcif= ; int altcar= ; cout<<R/Ate$t car.0R; cin&&c; Bhile (c%=STS){ if (c&=S/S 11 c<=SUS) { cout<<RVit. ,are%:nR; l,are++; } else if (c&=SaS 11 c<=S'S) { cout<<RVit. ,ic@%:nR; l,ica++; } else if (c&=S S 11 c<=S9S) { cout<<RDifr@%:nR; lcif++; } else { cout<<R/lt car.%:nR; altcar++; } cout<<R/Ate$t car.0R;cin&&c; } cout<<R/"i introdus :nR; cout<<l,are<<R litere ,ari, R; cout<<l,ic<<R litere ,ici:nR; cout<<lcif<<R cifre Ai :nR; +include <iostrea,.h& +include <conio.h& -oid ,ain() { char c;clrscr(); intl,ic= ,l,are= ,lcif= ;int altcar= ; cout<<R/Ate$t caract.0R; cin&&c; for( ; c!='@'; ){

Ob erva#ii legate de implementare Hariabila c %tip c*ar& memoreaz! caracterul introdu la un moment dat- de la ta tatur!" Hariabilele ntregi lmic- lmare- lci' (i altcar unt utilizate pe po t de contor pentru litere mari- mici- ci're- re pectiv alte caractere" Ac#iunea care e repet! c7t timp caracterul citit e te di'erit de con tanta caracter IGI con t! din mai multe ac#iuni imple. citirea unui caracter %cu a'i(area n prealabil a me ajului JA(tept car".J; te tarea caracterului citit %operatorii rela#ionali pot 'i aplica#i datelor de tip c*ar&" Ca urmare- ac#iunea din corpul in tructiunii E*ile a 'o t implementat! printr-o in truc#iune bloc" Tot in truc#iuni bloc au 'o t utilizate pe 'iecare ramur! a in truc#iunii i' %a'i(are me aj re'eritor la caracter (i incrementare contor&"

Pentru implementarea aceluia(i algoritm e poate utiliza in truc#iunea 'or" 6n cadrul ace teia- e$pre ie1 (i e$pre ie3 lip e c- n ! prezen#a in truc#iunilor vide e te obligatorie"

55 corp identic
} cout<<R/"i introdus :nR; cout<<l,are<<R litere ,ari, R; cout<<l,ic<<R litere ,ici:nR; cout<<lcif<<R cifre Ai :nR; cout<<altcar<<R alte carctere:nR; =etch(); }

O alt! variant! de implementare poate 'i urm!toarea- n care (i ini#ializarea variabilelor contor e realizeaz! n cadrul e$pre iei e#$resie1 "
int l,ic, l,are, lcif, altcar; for(lmare=0, lmic=0, lcif=0, altcar=0; c!='@'; ){

55 corp identic
}

0@

CAPITOLUL 3 control

Implementarea structurilor de

Hariant! de implementare care utilizeaz! in truc#iunea do*Bhile .


int l,ic= , l,are= , lcif= ; int altcar= ; cout<<R/Ate$t caract.0R;cin&&c; do {

55corp do-E*ile
} Bhile (c%=STS); cout<<R/"i introdus :nR;

55" " "


3"

/! e calculeze uma (i produ ul primelor n numere naturale- n 'iind introdu de la ta tatur!" /e vor e$empli'ica modalit!#ile de implementare cu ajutorul in truc#iunilor do*Bhile- Bhile- (i for" %/e ob erv! c!. / A

k - P A
k= 1

k &"
k= 1

Pentru a ilu tra multiplele po ibilit!#i o'erite de in truc#iunea for- prezent!m variantele 55 varianta1
int O= , H=1, >; for (>=1; ><=n; >77){ O7=>; H4=>; } cout<<RH=R<<H<<R:tO=R; cout<<O<<S:nS;

cout<<Rn=R; int n; cin&&n; int O= , H=1, >=1; Bhile (> <= n){ O7=>; H4=>; >77; } cout<<RH=R<<H<<R:tO=R<<O<<S:nS;

cout<<Rn=R; int n; cin&&n; int O= , H=1, >=1; do{ O7=>; H4=>; >77; } Bhile (> <= n); cout<<RH=R<<H<<R:tO=R<<O<<S:nS;

55 varianta3
int O= , H=1; for (int >=1; ><=n; >77){ O7=>; H4=>; } cout<<RH=R<<H<<R:tO=R; cout<<O<<S:nS;

55 varianta3
for (int O= , H=1, >=1; ><=n; >77){ O7=>; H4=>; } cout<<RH=R<<H<<R:tO=R<<cout<<O<<S:nS;

55 varianta0
for (int O= , H=1, >=1; ><=n; O7=>, H4=>, >77) ; cout<<RH=R<<H<<R:tO=R<<cout<<O<<S:nS;

3" /! e citea c! un (ir de numere reale- p7n! la nt7lnirea num!rului K==" /! e a'i(eze ma$imul numerelor citite"
+include <iostrea,.h& /e pre upune c! primul element din (irul de -oid ,ain() numere are valoarea ma$im!" /e memoreaz! {double n; valoarea a n variabila ma$" /e parcurge apoi cout<<R!ntrodu nr0R; cin&&n; (irul- compar7ndu- e valoarea 'iec!rui element double ,a#=n; cu valoarea variabilei ma$" 6n cazul n care e Bhile (n%=9 ) g! e(te un element cu o valoare mai mare dec7t { if (n&=,a#) a variabilei ma$- e re#ine noua valoare ,a#=n; %ma$An&" cout<<R!ntrodu nr0R; cin&&n; } cout<<RGa# Air este0R<<,a#<<S:nS; 0" /! } e a'i(eze literele mari ale al'abetului (i codurile a'erente ace tora n ordine cre c!toare- iar literele

mici (i codurile a'erente n ordine de cre c!toare" A'i(area e va 'ace cu pauz! dup! 'iecare ecran"
0L

CAPITOLUL 3 control

Implementarea structurilor de

+include <iostrea,.h& +include <conio.h& +define ?!G)H/W 22 55dimen iunea paginii %numarul de randuri de pe o pagina& -oid ,ain() {clrscr(); cout<<RV!FJIJVJ G/I!0:nR;int nr)lin= ; 55 nrDlin e te contorul de linii de pe un ecran for (char VitGare=S/S; VitGare<=SUS; VitGare77){ if (nr)lin==?!G)H/W){ cout<<R/$asa o tasta....R; =etch(); clrscr(); nr)lin= ;} cout<<RVitera R<<VitGare<<R cu codul /OD!! R<<(int)LitMare<<S:nS;

55 conver ia e$plicita %int&LitMare permite a'i area codului A/CII al caracterului


nr)lin77; } cout<<RV!FJIJVJ G!D!0:nR; for (char VitGica=S'S; VitGica&=SaS; VitGica**){ if (nr)lin==?!G)H/W){ cout<<R/$asa o tasta....R; =etch(); clrscr(); nr)lin= ;} cout<<RVitera R<<VitGica<<R cu codul /OD!! R<<(int)LitMica<<S:nS; nr)lin77; } }

9" /! e crie un program care realizeaz! conver ia num!rului F ntreg- din baza 1= ntr-o alt! baz! de numera#ie- bN1= %F (i b citite de la ta tatur!&" Conver ia unui num!r ntreg din baza 1= n baza b e realizeaz! prin mp!r#iri ucce ive la b (i memorarea re turilor- n ordine inver !" 8e e$emplu. 90@.LA;L rest 3; ;L.LAL rest %; L.LA1 rest 3; 1.LA= rest 90@ 1= A 1=03 L
+include <iostrea,.h& -oid ,ain() { int nrcif= ,M,b,rest,M-,$=1; lon= Mnou= ; cout<<R:n!ntroduceti ba'a<1 , b=R;cin&&b; cout<<R!ntroduceti nu,arul in ba'a 1 , nr=R;cin&&M; M-=M; Bhile(M%= ) { rest=M<b; M3=b; cout<<Rnr=R<<M<<S:nS; cout<<Rrest=R<<rest<<S:nS; nrcif77; Mnou7=rest4$; $4=1 ; cout<<RMr. nou=R<<Mnou<<S:nS; } cout<<RMu,arul de cifre este R<<nrcif<<S:nS; cout<<RMr. in ba'a 1 R<<M-; cout<<R con-ertit in ba'a R<<b<<R este R<<Mnou<<S:nS; }

;" /! e calculeze eria urm!toare cu o eroare mai mic! dec7t :P/ %:P/ introdu de la ta tatur!&. 1? xk - $ <=-1>- $ citit de la ta tatur!" Hom aduna la um! nc! un termen c7t timp di'eren#a dintre k= 1 k uma calculat! la pa ul curent (i cea calculat! la pa ul anterior e te mai mare au egal! cu :P/"
+include <iostrea,.h& +include <conio.h& +include <,ath.h& -oid ,ain() { double F,O,O1;lon= >;>=1;F=1;O=F;double #; cout<<R#=R; cin&&#;

55 TA termenul general de la pa ul curent; /A uma la pa ul curent; /1A uma la pa ul anterior


do { O1=O;>=>71;F=$oB(#,>)3>; 55'unc#ia poE%$- C&- a'lat! n Nmat*"*B calculeaz! $ k O=O7F; 55 coutNNCNNJ JNNTNNJ JNN/NNIOnI;getc*%&; } Bhile ((O*O1)&=JHO); 0K

CAPITOLUL 3 control cout<<RMr ter,eni=R<<><<R

Implementarea structurilor de F=R<<F<<R O=R<<O<<S:nS; }

3.%. &ACILIT4+I DE 5NTRERUPERE A UNEI SEC*EN+E


Pentru o mai mare 'le$ibilitate %tratarea e$cep#iilor care pot apare n proce ul de prelucrare&- n limbajul C e utilizeaz! in truc#iunile break (i continue " Ambele in truc#iuni unt utilizate n in truc#iunile ciclice" 6n plu - in truc#iunea breaC poate 'i 'olo it! n in truc#iunea sBitch " In truc#iunea break A(a cum e ob erv! din 'igura 3"0"- utilizat! n cadrul in truc#iunilor ciclice- in truc#iunea break J'or#eaz!J ie(irea din ace tea" 4!r! a e mai te ta valoarea e$pre iei %condi#ia& care determin! repetarea corpului in truc#iunii ciclice- e continu! e$ecu#ia cu in tructiunea care urmeaz! in tructiunii ciclice" A t'el- e ntrerupe repetarea corpului in truc#iunii ciclice- indi'erent de valoarea condi#iei de te t" Utilizarea n cadrul in truc#iunii Eitc*. 6n itua#ia n care -a ajun la o valoare a unei e$pre iei con tante egal! cu cea a e$pre iei aritmetice- e e$ecut! in truc#iunea core punz!toare acelei ramuri" 8ac! e nt7lne(te in truc#iunea brea> - parcurgerea e te ntrerupt! %nu e mai compar! valoarea e$pre iei aritmetice cu urm!toarele con tante&- deci e va trece la e$ecu#ia primei in truc#iuni de dup! Eitc*" 8ac! nu e te nt7lnit break, parcurgerea continu!" In truc#iunea breaCl cauzeaz! deci- ie(irea imediat! din sBitch "

In truc#iunea continue 6nt7lnirea in truc#iunii continue %'igura 3"0"& determin! ignorarea in truc#iunilor care o urmeaz! n corpul in truc#iunii ciclice (i reluarea e$ecu#iei cu te tarea valorii e$pre iei care determin! repetarea au nu a corpului ciclului"

Exemplu: /! revenim la programul realizat pentru problema 1- care 'olo e(te in truc#iunea doBhile. 8ac! primul caracter citit e te c*iar caracterul G- e realizeaz! te tarea ace tuia; ca urmare- e a'i(eaz! me ajul R/lt car.%R (i e incrementeaz! valoarea contorului altcar " 8ac! nu e dore(te ca ace t caracter ! 'ie te tat (i num!rat- n corpul in truc#iunii do E*ile putem 'ace un te t uplimentar"
int l,ic= ,l,are= ,lcif= ,altcar= ;cout<<R/Ate$t caract.0R;cin&&c; do { if (c == '@') break; 55ie(ire din do E*ile

55corp do-E*ile
} Bhile (c%=STS); cout<<R/"i introdus :nR; 33. . . do{ Bhile (e#$resie1){ instructiune1; instructiune2; if (e#$resie2) rea!; else continue; instructiune(; instructiune1; instructiune2; if (e#$resie2) rea!; else continue; instructiune(; } Bhile (e#$resie1);

}
for (e#$r1; e#$r2; e#$r()){ instructiune1; instructiune2; if (e#$resie2) rea!; else continue; instructiune(;

} 4igura 3"0" Modul de utilizare a in truc#iunilor brea> (i continue


9=

5NTRE64RI 7I E8ERCI+II

CAPITOLUL 3 control

Implementarea structurilor de

C9estiuni teoretice 1" Care unt in truc#iunile care implementeaz! n limbajul C tructura condi#ional!P 3" Care unt in truc#iunile care implementeaz! n limbajul C tructura ecven#ial!P 3" Care unt in truc#iunile care implementeaz! n limbajul C tructura repetitiv! cu te t ini#ialP C9estiuni practice 1" 3" 3" 0" /! e implementeze programele cu e$emplele prezentate" /! e crie programele pentru e$erci#iile rezolvate care au 'o t prezentate" /! e implementeze algoritmii proiecta#i pentru problemele 1-@ din capitolul 1" /! e calculeze aria unui triung*i- cuno c7ndu- e m!rimea laturilor ale" Fumerele care reprezint! m!rimile laturilor vor 'i introdu e de utilizator" /e va te ta mai nt7i dac! cele 3 numere reprezent7nd m!rimea laturilor pot 'orma un triung*i % a NA b?c- b NA c?d- c NA a?b&" 9" /! e re crie urm!toarea ecven#!- 'olo ind o ingur! in truc#iune i'"
if (n< ) if (n&=9 ) if (#%= ) int b= n3#;

0" Care unt in truc#iunile care implementeaz! n limbajul C tructura repetitiv! cu te t 'inalP 9" Ce deo ebiri unt ntre in truc#iunea E*ile (i in truc#iunea do-E*ileP ;" Pornind de la inta$a in truc#iunii 'or- tabili#i ec*ivalen#a ntre acea ta (i in truc#iunile E*ile (i do-E*ile"

;" /! e citea c! un numar natural n" /! e crie un program care a'i(eaz! dac! num!rul n citit reprezint! au nu- un an bi ect %anii bi ec#i unt multipli de 0- e$cept7nd multiplii de 1==- dar incluz7nd multiplii de 0==&" @" /! e g! ea c! toate numerele de dou! ci're care ati 'ac rela#ia.
xy =% x + y & 3

L" /! e citea c! un (ir de numere reale- p7n! la nt7lnirea numarului L== (i ! e a'i(eze valoarea minim! introdu !- uma (i produ ul elementelor (irului" K" /crie#i un program care ! veri'ice inegalitatea 15%n?1& N ln<%n?1&5n> N 15n- unde n e te un num!r natural pozitiv- introdu de la ta tatur!" 1=" 4ie 'unc#ia 3 e x - $ <=- 1& /! e calculeze '%$&- $ citit de la ta tatur!" '%$&A in$?co $ - $ <1- 3& =-Kln%$?3& - $ <3- 1==> 11" /! e crie un program care calculeaz! (i a'i(eaz! ma$imul a 3 numere reale %a- b (i c& citite de la ta tatur!" 13" /! e crie un program care calculeaz! (i a'i(eaz! minimul a 3 numere reale %a- b (i c& citite de la ta tatur!" 13" /! e citea c! 3 caractere care reprezint! 3 litere mari" /! e a'i(eze caracterele citite n ordine al'abetic!" 10" /! e citea c! 3 caractere care reprezint! 3 litere mici" /! e a'i(eze caracterele citite n ordine al'abetic!" 19" /! e crie un program care cite(te o ci'r!" 6n 'unc#ie de valoarea ei- ! e 'ac! urm!torul calcul. dac! ci'ra e te 3- 9 au @ ! e a'i(eze p!tratul valorii numerice a ci'rei; dac! ci'ra e te 3- 0 au ; ! e a'i(eze cubul valorii numerice a ci'rei; dac! ci'ra e te = au 1 ! e a'i(eze me ajul JHalori miciJ; alt'el"- ! e a'i(eze me ajul JCaz ignoratQJ" 1;" 4ie (irul lui 4ibonacci- de'init a t'el. '%=&A=- '%1&A1- '%n&A'%n-1&?'%n-3& n cazul n care nB1" /! e crie un program care implementeaz! algoritmul de calcul al (irului 4ibonacci" 1@" /! e calculeze valoarea polinomului Ceb(ev de ordin n ntr-un punct $ dat- cuno c7nd rela#ia. T = %$&A1- T 1 %$&A$ (i T k + 1 %$& - 3$T k %$& ? T k 1 %$& A = 1L" /! e citea c! c7te 3 numere ntregi- p7n! la nt7lnirea perec*ii %=- =&" Pentru 'iecare perec*e de numere! e calculeze (i ! e a'i(eze cel mai mare divizor comun" 1K" /e cite c c7te 3 numere reale- p7n! la nt7lnirea numerelor K- K- K" Pentru 'iecare triplet de numere citit- ! e a'i(eze ma$imul"
91

CAPITOLUL 3 control

Implementarea structurilor de

3=" /e cite(te c7te un caracter p7n! la nt7lnirea caracterului G" /! e a'i(eze num!rul literelor mari- numarul literelor mici (i num!rul ci'relor citite; care e te cea mai mare %le$icogra'ic& liter! mare- liter! mic! (i ci'r! introdu !" 31" /e cite c c7te 3 numere ntregi- p7n! la nt7lnirea perec*ii de numere K- K" Pentru 'iecare perec*e de numere citite- ! e a'i(eze cel mai mare divizor comun al ace tora" 33" /! e calculeze uma eriei 1 ? $ 3 53 - $ 9 59 ? $ @ 5@ - R cu o eroare mai mic! dec7t ep ilon %ep ilon citit de la ta tatur!&" /! e a'i(eze (i num!rul de termeni ai umei" 33" /! e citea c! un num!r ntreg 'ormat din 0 ci're %abcd&" /! e calculeze (i ! e a'i(eze valoarea e$pre iei reale. 0Sa ? b53= -c ? 15d" 30" /! e crie un program care a'i(eaz! literele mari ale al'abetului n ordine cre c!toare- iar literele mici - n ordine de cre c!toare" 39" /! e crie un program care genereaz! toate numerele per'ecte p7n! la o limit! dat!- LIM" Un num!r per'ect e te egal cu uma divizorilor lui- inclu iv 1 %e$emplu. ;A1?3?3&" 3;" /! e calculeze valoarea umei urmatoare- cu o eroare :P/ mai mic! de ="===1. /A1?%$?1&5 3Q ? %$?3&5 3Q ? %$?3&5 3Q ? """ - unde =NA$NA1- $ citit de la ta tatur!" 3@" /! e genereze toate numerele naturale de 3 ci're pentru care ci'ra utelor e te egal! cu uma ci'relor zecilor (i unit!#ilor" 3L" /! e citea c! c7te un num!r ntreg- p7n! la nt7lnirea num!rului K=" Pentru 'iecare numar ! e a'i(eze un me aj care indic! dac! num!rul e te pozitiv au negativ" /! e a'i(eze cel mai mic num!r din (ir" 3K" /! e genereze toate numerele naturale de 3 ci're pentru care ci'ra zecilor e te egal! cu di'eren#a ci'relor utelor (i unit!#ilor" 3=" /! e calculeze uma. %1 ? 3Q& 5 %3 ? 3Q& - %3?3Q& 5 %3?0Q& ? %3?0Q& 5 %0?9Q& - """""

93

S-ar putea să vă placă și