Você está na página 1de 24

Introduo a Programao

Estruturas de repetio
Prof. Luis Otavio Alvares

Parte deste material adaptado de lminas das Profas. Patrcia Jaques, Mnica P e !eise "accol 1

Lgica de programao

ESTRUTURAS DE REPETIO
Se uma ao se repete em um algoritmo em !e" #e es$re!%&la !'rias !e"es em $ertos $asos po#emos resumir a(ota(#o uma !e" s) e soli$ita(#o *ue ela se repita usa(#o uma #as estruturas de repetio+ Po#emos e,e$utar uma ao -ou um $o(.u(to #e a/es0 um (1mero definido ou indefinido #e !e"es ou enquanto um esta#o perma(e$er ou at que um esta#o se.a ati(gi#o+ As pri($ipais estruturas #e repetio so2
PARA+++AT3+++REPETIR E45UA4TO+++REPETIR REPETIR+++E45UA4TO

7lu,ograma #e uma estrutura #e repetio2


I489IO 9O4T < 1

Lgica de programao

9O4T < 9O4T ? 1 Sim

4este po(to #o algoritmo po#emos i($luir *ual*uer $o(.u(to #e i(stru/es *ue *uisermos repetir 1= !e"es+

9O4T ;< 1=> No 7I:


6

Estruturas de repetio E(*ua(to+++Repetir


E(*ua(to -$o(#io0 repetir ;i(stru/esA

Lgica de programao

condio V

instruo

Repetir+++E(*ua(to
instruo

Repetir ;i(stru/esA e(*ua(to -$o(#io0


condio F

Para+++atB+++repetir
;i(stru/esA

Para ;!aria!elA < ;i(i$ioA atB ;CimA repetir

Lgica de programao

AtB agora para !'rios !alores i(Corma#os pelo usu'rio lEamos $a#a !alor #e Corma separa#a Por e,emplo (o algoritmo para o $'l$ulo #a mB#ia #e *uatro (1meros lEamos @ !alores em @ !ari'!eis #iCere(tes+ :as tamFBm po#erEamos2
ler um !alor para 1 !ari'!el e repetir isso @ !e"es a#i$io(a(#o $a#a !alor li#o ao total em uma outra !ari'!el a $a#a repetio+ Ap)s as @ repeti/es a soma #os @ (1meros estaria a$umula#a (a outra !ari'!el Fasta(#o uma i(struo para #i!i#i&la por @ e assim oFter a mB#ia+

E#emplo Para
$er %& n'meros fornecidos pelo usu(rio e calcular e e#i)ir a mdia.

Pseu#o$)#igo2 1+ I(E$io 2+ Soma < =


!alor i(i$ial

;;; o a$umula#or pre$isa ter um

6+ Para $o(t <1 atB D= repetir 6+1 ler (um 6+2 soma < soma ? (um @+ :e#ia < soma H $o(t D+ :ostrar me#ia G+ 7im
G

Lgica de programao

PARA+++AT3+++REPETIR
7ormato2
Para ;!ari'!elA * ;!alor i(i$ialA at ;!alor Ci(alA repetir ;a/esA Sig(iCi$a#o2 A ;!ari'!elA B i(i$iali"a#a $om ;!alor i(i$ialA+ Ap)s $a#a e,e$uo #as ;a/esA B soma#o 1 J ;!ari'!elA e repete&se as ;a/esA $o(ti(ua(#o assim atB *ue a ;!ari'!elA ati(.a o ;!alor Ci(alA+ Esta estrutura #e repetio $ria um contador automtico *ue ()s (o pre$isamos ma(#ar i($reme(tar+ Ao usar esta estrutura .' est' suFe(te(#i#o *ue a ;!ari'!elA i(i$ia $om ;!alor i(i$ialA e B i($reme(ta#a a $a#a $i$lo -po#e(#o&se i($lusi!e apro!eitar seu !alor #e(tro #o $i$lo0 e *ue as ;a/esA sero repeti#as atB *ue a ;!ari'!elA te(Ka o ;!alor Ci(alA+
I

Lgica de programao

E,emplo #a estrutura PARA+++AT3+++REPETIR2 M:ostrar os *ua#ra#os #os i(teiros #e 6 a 11+N


Pseu#o$)#igo2
Para 9O4T * 6 at 11 repetir :ostrar -9O4T O9O4T0 Isto ser repetido 9 vezes.

Usamos esta estrutura *ua(#o saFemos *ua(tas !e"es temos #e repetir $ertas a/es mesmo *ue o (1mero #e !e"es s) se.a $o(Ke$i#o durante a execuo+ Por e,emplo2 MPergu(tar ao usu'rio #e *ua(tos !alores ele L *uer $al$ular a mB#ia+ Per os (1meros e $al$ular

E se eu quisesse calcular a mdia de + n'meros,

Lgica de programao

Para esse proFlema $o(struEmos um algoritmo *ue ser' ge(Bri$o ou se.a *ue po#er' ser usa#o para $al$ular a mB#ia #e *ua(tos (1meros se *uiserR Pseu#o$)#igo2 1& I(E$io 2& :ostrar MDe *ua(tos !alores !o$% *uer $al$ular a mB#ia>N 6& Per 5UA4T -a*ui se #es$oFre *ua(tas repeti/es0 @& SO:A < = D& Para 9O4T < 1 atB 5UA4T repetir D+1& Per 4 -a*ui B li#o $a#a (1mero um em $a#a $i$lo0 D+2& SO:A < SO:A ? 4 -a*ui os !alores li#os so a$umula#os0 G& :EDIA < SO:A H 5UA4T -isto est' Cora #o loop0 Q I& :ostrar :EDIA

E#erccio
7aa um algoritmo para $al$ular e es$re!er o !alor #e S2

1 3 5 7 99 S = + + + + ... + 1 2 3 4 50

1=

E#emplo de soluo
1+ 2+ 6+ 6+1 @+ D+ I(E$io S<= Para I<1 ateS D= repetir S<S?-IO2&10HI :ostrar S 7im

11

E#erccio
7aa um algoritmo para $al$ular os 2= primeiros termos #a sBrie #e 7iFo(a$$i2 = 1 1 2 6 D L 16 T+

com F0=0 e F1=1

12

E#emplo de soluo
1+ 2+ 6+ @+ D+ G+ G+1 G+2 G+6 G+@ I+ I(E$io :ostrar = :ostrar 1 (U2<= (U1<1 Para I<6 atB 2= repetir (<(U1 ? (U2 mostrar ( (U2<(U1 (U1<( 7im
16

E#erccio
7aa um algoritmo para $al$ular a soma #os (1meros primos me(ores *ue 1==
7aa um teste #e mesa para testar a sua soluo

1@

E#emplo de soluo
1+ I(E$io 2+ Para I<1 atB QQ repetir 2+1 eprimo<1 2+2 para V<2 atB I&1 repetir 2+2+1 se IW.<= e(to eprimo<= 2+6 se eprimo<1 e(to mostrar I 6+ 7im

1D

Estruturas de repetio em -

1G

Estrutura #e repetio2 $oma(#o for


9oma(#o for
for (var=valor inicial; condio; incremento/decremento) comando;

Exemplo:
for (cont=3; cont<=11; cont++) printf (%d !cont); for (var=valor inicial; condio; incremento/decremento) { comando1; comando2; comando3; }
1I

9oma(#o for
for (var=valor inicial; condio; inc/dec) comando1; "#o es$%ecer dos parnteses & comando1 ser e'ec%t(do enquanto a condio for verdadeira & incremento ou decremento ) e'ec%t(do automaticamente aps a execuo do comando1

1L

E#erccio
Escre.er um algoritmo que l/ % .alores, e conta quantos destes .alores so negati.os, escre.endo esta informao. Xi($lu#e ;st#io+KA Xi($lu#e ;st#liF+KA mai(-0Y i(t (umero $o(t (eg<=Z Cor -$o(t<=Z $o(t;DZ $o(t??0 Y pri(tC -[\(Digite um (umero i(teiro2 [0Z s$a(C -[W#[ ](umero0Z iC -(umero;=0 (eg<(eg?1Z ^ pri(tC -[\(O (umero #e !alores (egati!os eS W#\([ (eg0Z s_stem-[pause[0Z ^
1Q

-uidado000
Se o !alor #a !ari'!el #e $o(trole #o $oma(#o for Cor altera#o e#plicitamente #e(tro #o Flo$o #e repetio T E,emplo2 saE#a2 #include <stdio. ! 1
#include <stdli". ! main(){ int #; for (#=1; #<=1$; #%%){ &rintf ('(d)n*+#); if (#==,) #=-; } s.stem(*&ause*); }

2 3 / , 0 1$ 1ress an. 2e. to continue . . .


2=

$em)re1se000
5ual o !alor #a !ari'!el #e $o(trole #o for ap)s a e,e$uo #o $oma(#o for> O !alor *ue Coi testa#o e (o passou (a $o(#io+ E,emplo2 saE#a2
#include <stdio. ! #include <stdli". ! main(){ int cont; for (cont=1; cont<=1$; cont=%%){ &rintf (*(d)n*+ cont); } &rintf(*valor a&os o 3456 (d)n*+cont); s.stem(*&ause*); } 1 2 3 / , 7 8 0 1$ valor a&os o 3456 11 1ress an. 2e. to continue... 21

"2 use quando estritamente necess(rio3


E para Corar o tBrmi(o #a repetio> Use um )rea4+ E,emplo 2
#include <stdio. ! #include <stdli". ! main(){ int #; for (#=1; #<=1$; #=#%1){ &rintf (*(d)n*+#); if (#==,) "rea2; } &rintf('a&os o 3456 (d)n*+#); s.stem(*&ause*); }

saE#a2
1 2 3 / , a&os o 3456 , 1ress an. 2e. to continue...

*ten+#o p(r( o v(,or de s(-d( d( v(rive, de contro,e


22

-uidado00
7aa sempre um teste #e mesa $om os !alores i(i$ial e Ci(al #o loop #o $oma(#o Cor pois a maioria #os erros so (a primeira ou (a 1ltima e,e$uo #o lao+ Erros $omu(s2
E,e$utar o lao -repetio0 uma !e" a mais ou a me(os *ue o #ese.a#o AtriFuir o !alor i(i$ial #e alguma !ari'!el #e(tro #o lao *ua(#o #e!eria ser Cora 4o atriFuir o !alor i(i$ial #e uma !ari'!el -pri($ipalme(te em for s a(i(Ka#os0
26

E#erccios
7aa um programa para $al$ular e 1 3 5 7 99 S = + + + + ... + es$re!er o !alor #e S2 50 1 2 3 4 7aa um programa para $al$ular os 2= primeiros termos #a sBrie #e 7iFo(a$$i 7aa um programa para $al$ular os (1meros primos me(ores *ue 1==

2@

Você também pode gostar