07 - estruturas de repeticao

45
Introdução à Programação Prof. André Cypriano M. Costa [email protected] [email protected] ESTRUTURAS DE REPETIÇÃO

Upload: renatobreaking

Post on 04-Oct-2015

41 views

Category:

Documents


0 download

DESCRIPTION

linguagem em c

TRANSCRIPT

Introduo

Introduo Programao

Prof. Andr Cypriano M. [email protected]@gmail.comEstruturas de repetiointroduoQuem aqui nunca repetiu um procedimento na sua vida?Procedimento de despertar (quase) todas manhs.Procedimento para comear a dirigir um veculo.Procedimento de chegada no trabalho.

Se observarmos o nosso cotidiano, perceberemos que repetimos muitos procedimentos dia aps dia. por isso que a vida de muita gente se torna uma rotina!

Em muito algoritmos que vamos construir podemos detectar certos passos que se repetem!2introduoAssim como as nossas rotinas possuem incio, meio e fim, os passos a serem repetidos pelos algoritmos tambm precisam ter incio, meio e fim!Caso contrrio, nosso algoritmo desrespeita a propriedade conhecida como

Para isso so usadas estruturas de repetio, que tambm so conhecidas como:Laos de repetioLoops ou looping3finitude3Estruturas de repetioUma estrutura de repetio permite repetir a execuo de um grupo de instrues (bloco) at que uma determinadas condies deixem de ser satisfeitas.

As estruturas de repetio so:Enquanto-faaRepita-atPara-faa

As estruturas de repetio so escritos com o auxlio do condicional.44Estruturas de repetioExemplo 1:Construa um algoritmo que calcule a mdia aritmtica das 04 notas bimestrais de um aluno (usurio), e exiba a mdia do aluno e a informao de que ele est aprovado, caso a mdia seja maior ou igual a 7.

E se ao invs de termos um nico alunos, tivermos 50?55Enquanto-faa uma estrutura que permite repetir diversas vezes um mesmo conjunto de instrues (bloco), porm, sempre verificando antes de cada execuo, se permitido executar este bloco.

A estrutura enquanto-faa, permite que um bloco ou uma nica instruo seja repetida enquanto uma determinada for verdadeira.

Quando a for falsa, o conjunto de instrues deixar de ser executado.66Enquanto-faaPara representar esta a repetio vamos usar a expresso

enquanto () faca ...fimenquanto7condioVFComando 1Comando 2...Comando N7Enquanto-faaExemplo 1:Construa um algoritmo que calcule a mdia aritmtica das 04 notas bimestrais de 50 alunos, e exiba a mdia do aluno e a informao de que ele est aprovado, caso a mdia seja maior ou igual a 7.

Quantas vezes vamos repetir o procedimento?Como vamos contabilizar isso?Atravs de um contador!Este contador ser representado por uma varivel com um dado inicial que incrementado a cada repetio.88Enquanto-faaExemplo 1:Construa um algoritmo que calcule a mdia aritmtica das 04 notas bimestrais de 50 alunos, e exiba a mdia do aluno e a informao de que ele est aprovado, caso a mdia seja maior ou igual a 7.

CON : inteiro// declarando o contadorCON 0// inicializando o contadorCON CON + 1// incrementando o contador

Incrementar significa somar 1.99Enquanto-faavarn1, n2, n3, n4, M : realcon : inteiroinciocon 0enquanto(con < 50) faca leia(n1, n2, n3, n4) M (n1 + n2 + n3 + n4) / 4 escreval(m) se (M >= 7) entao escreval(Aluno aprovado) fimse con con + 1fimenquantofimalgoritmo1010Enquanto-faa11IncioMM (n1+n2+n3+n4)/4n1, n2, n3, n4FimM >=7VFAluno aprovadocon < 50con 0Vcon con + 1F11Enquanto-faaExemplo 2:Alm da mdia dos alunos, nosso algoritmo tambm deve calcular e informar a mdia da turma.

Como vamos calcular a mdia da turma?MT = (M1 + M2 + M3 + M4 + M5 + ... + M50) / 50

possvel fazer assim?Sim! vivel fazer assim?No!1212Enquanto-faaPodemos utilizar neste caso, as vantagens da estrutura de repetio, fazendo um lao que a cada execuo acumule em uma varivel, conhecida conceitualmente como acumulador, a soma das mdias de cada aluno.Depois s dividir o resultado pela quantidade de mdias, que no caso 50.

acm : real// declarando um acumulador X : inteiro// declarando uma varivel qualquer acm 0// inicializando o acumulador acm acm + X// acumula em acm o valor anterior mais // o valor de X1313Enquanto-faaExemplo 2:Construa um algoritmo que leia a mdia de 50 alunos, calcule e informe a mdia da turma.

Quais so as entradas?50 mdias (M)Quais so a(s) sada(s)?Mdia aritmtica da turma (MT)

1414Enquanto-faavar M, MT, acm : real con : inteiroincio con 0 acm 0 enquanto(con < 50) faca leia(M) acm acm + M con con + 1 fimenquanto MT acm / 50 escreval(A mdia da turma , MT)fimalgoritmo1515Enquanto-faa16IncioMTacm acm + MMFimcon < 50con 0Vcon con + 1Facm 0MT acm / 5016Enquanto-faaOs algoritmos que fizemos at agora, sabe de antemo a quantidade de alunos da turma da qual se deseja calcular a mdia.Isso permitiu construir um loop com uma quantidade pr-determinada de execues.

Mas, e se no soubssemos quantos eram os alunos?O que faramos para controlar o lao de repetio?Precisaramos de um lao que fosse executado por uma quantidade de indeterminada de vezes.1717Enquanto-faaAssim, temos que encontrar outro critrio de parada, que possibilite que o lao seja finalizado em algum momento.

Isso pode ser feito de 02 formas:Pedindo para o usurio informar no incio do algoritmo a quantidade de alunos, valores, nmeros, etc., ele vai usar/tem.Utilizar um valor pr-definido como finalizador. 1818Enquanto-faaExemplo 3:Construa um algoritmo que calcule a mdia de N nmeros digitados pelo usurio, e escreva no final a mdia. O valor de N tambm deve ser fornecido pelo usurio

Quais so as entradas?N, e N nmerosQuais so a(s) sada(s)?Mdia aritmtica dos N nmeros (M)

1919Enquanto-faavar M : real N, x, acm, con : inteiroincio con 0 acm 0 leia(N) enquanto(con < N) faca leia(x) acm acm + x con con + 1 fimenquanto M acm / N escreval(A mdia dos nmeros , M)fimalgoritmo2020Enquanto-faa21IncioMacm acm + xxFimcon < Ncon 0Vcon con + 1Facm 0M acm / NN21Enquanto-faaExemplo 4:Construa um algoritmo que calcule e exiba a mdia de um conjunto de nmeros digitados pelo usurio. Os nmeros pararo de ser informados quando o usurio digitar o nmero 0 (zero).

Quais so as entradas?Vrios nmerosQuais so a(s) sada(s)?Mdia aritmtica dos vrios nmeros (M)

2222Enquanto-faavar M : real x, acm, con : inteiroincio con 0 acm 0 x 1 enquanto(x 0) faca leia(x) acm acm + x con con + 1 fimenquanto M acm / con escreval(A mdia dos nmeros , M)fimalgoritmo2323Enquanto-faa24IncioMacm acm + xxFimx0con 0Vcon con + 1Facm 0M acm / conx 124Exerccio desafioFaa um algoritmo que seja capaz de obter o quociente inteiro da diviso de dois nmeros fornecidos pelo usurio, sem utilizar as operaes de diviso (/, div ou \).

Faa um algoritmo que seja capaz de obter o resultado de uma exponenciao para qualquer base (B) e expoente (e) inteiro fornecidos pelo usurio, sem utilizar a operao de exponenciao (^).Be2525Repita-ate uma estrutura que permite repetir diversas vezes um mesmo conjunto de instrues (bloco), porm, sempre verificando depois de cada execuo, se permitido repetir a execuo deste bloco.

A estrutura repita-ate, permite que um bloco ou uma nica instruo seja repetida enquanto uma determinada for verdadeira.

Quando a for falsa, o conjunto de instrues deixar de ser executado.2626Repita-atePara representar esta a repetio vamos usar a expresso

repita ...ate ()comando N 27condioVFComando 1Comando 2...Comando N27Repita-ateQual so as principais diferenas entre os comandos enquanto-faca e repita-ate?enquanto() facarepitacomando 1comando 1comando 2comando 2......fimenquantoate()O comando repita-ate executa o bloco de comando pelo menos uma vez, independente se a condio verdadeira ou falsa.A condio do comando repita-ate como se fosse uma negao da condio do comando enquanto-faca.

2828Repita-atevar M, MT, acm : real con : inteiroincio con 0 acm 0 repita leia(M) acm acm + M con con + 1 ate(con >= 50) MT acm / 50 escreval(A mdia da turma , MT)fimalgoritmo29Exemplo 5:Construa um algoritmo que leia a mdia de 50 alunos, calcule e informe a mdia da turma.29Repita-ate30IncioMTacm acm + MMFimcon 50con 0Vcon con + 1Facm 0MT acm / 5030Repita-ateExemplo 6:Imagine uma brincadeira entre 02 colegas, na qual um pensa em um nmero e o outro deve fazer chutes at acertar o nmero imaginado. Como dica, a cada tentativa, dito se o chute foi alto ou baixo. Elabore um algoritmo dentro deste contexto leia o nmero imaginado e os chutes, ao final mostre quantas tentativas foram necessrias para descobrir o nmero

Quais so as entradas?Nmero imaginado e chutesQuais so a(s) sada(s)?Nmero de tentativas

3131Repita-atevar num, chute, tent : inteiroincio tent 0 leia(num) repita leia(chute) tent tent + 1 se(chute > num) entao escreval(Chutou alto) senao se(chute < num) entao escreval(Chutou baixo) fimse fimse ate(num = chute) escreval(O nmero de tentativas foi , tent)fimalgoritmo

3232Repita-ate33InciotentnumFimnum = chutetent 0Vtent tent + 1Fchutechute < numchute > numChutou altoChutou baixoFVFV33Para-faa uma estrutura que permite repetir diversas vezes um mesmo conjunto de instrues (bloco), porm, um nmero predeterminado de vezes..

A estrutura para-faca, permite que um bloco ou uma nica instruo seja repetida um nmero fixo de vezes.Ou seja, existe um valor inicial e um valor final.3434Para-faaPara representar esta a repetio vamos usar a expresso

para V de vi ate vf passo p faca ...fimparacomando N 35vi =0VFXseg 59min:segmin min 143Exerccio desafioElabore um algoritmo que, utilizando as 03 estruturas de repetio, exiba a tabuada do nmero 5.1 x 5 = 52 x 5 = 10...10 x 5 = 50

Modifique o algoritmo para que, dado um intervalo de nmeros [A, B], fornecidos pelo usurio, exiba a tabuada do todos os nmeros entre A e B.4444bibliografiaSOUZA, M. A. F.; GOMES, M. M.; SOARES, M. V. et al. Algoritmos e lgica de programao. So Paulo: Pioneira Thomson Learning, 2005.

FORBELLONE, A.L.V.; EBERSPCHER, H.F. Lgica de Programao. So Paulo: Pearson, 2011.

45