Estruturas de Repetio Para repetir um conjunto de procedimentos at que determinado objetivo seja atingido, que quando a repetio se encerra. Todas as estruturas de repetio tem em comum o fato de haver uma condio de controle (expresso lgica) que testada em cada ciclo para determinar se a repetio prossegue ou no.
Ex: calcule a mdia aritmtica das notas de 30 alunos; calcule a mdia aritmtica de vrios valores digitados at que o nmero 0 seja digitado; calcular a expresso Sn = 1 1 + 2 2 + 3 3 + ... + n n . Estruturas de Repetio Existem 3 estruturas de repetio e a diferena bsica entre elas o momento no qual a condio de controle ser executada: para-faa tem embutida um mecanismo de controle para determinar quando a repetio dever ser terminada; enquanto-faa primeiro testa a condio para depois realizar o bloco de comando; repita-at primeiro executa o bloco para depois realizar o teste. Estruturas de Repetio Para casos onde se deseja executar os comandos um nmero fixo de vezes, onde este nmero j conhecido, existe a estrutura para-faa:
para <varivel> de <valor-inicial> ate <valor-limite> faca <seqncia-de-comandos> fimpara
A <seqncia-de-comandos> ser executada cada vez que a varivel receber um valor, comeando com o <valor-inicial> e indo at o <valor-limite>, sendo incrementada de um em um. Estruturas de Condio Ex1: criar um algoritmo que escreva os nmeros de 1 a 10 em oredem crescente.
algoritmo "exemplo1" var j: inteiro inicio para j de 1 ate 10 faca escreva (j:3) fimpara fimalgoritmo
Estruturas de Condio Ex2: criar um algoritmo que leia 5 nomes e escreva-os na ordem em que foram lidos.
algoritmo "exemplo2" var nome : caracter I : inteiro inicio para I de 1 ate 5 faca escreval (Entre com o nome: ) leia(nome) escreval (I, - ,nome) fimpara fimalgoritmo Estruturas de Condio Execuo: Nmero Nome Impresso 1 Jos 1 - Jos 2 Antnio 2 - Antnio 3 Joo 3 - Joo 4 Maria 4 - Maria 5 Jlia 5 - Jlia Estruturas de Repetio Para casos onde se deseja que o incremento seja feito de valores diferentes de 1 deve-se utilizar a opo passo no comando:
para <varivel> de <valor-inicial> ate <valor-limite> passo <incremento> faca <seqncia-de-comandos> fimpara
O incremento o valor ser acrescentado varivel contadora em cada repetio. Pode-se definir um valor negativo tambm. Estruturas de Condio Ex3: criar um algoritmo que escreva os nmeros de 1 a 10 em oredem decrescente.
algoritmo "exemplo3" var j: inteiro inicio para j de 10 ate 1 passo -1 faca escreva (j:3) fimpara fimalgoritmo
Estruturas de Repetio Quando no se sabe de antemo quantas repeties sero realizadas pode-se utilizar outra estrutura de repetio:
enquanto <condio-controle> faca <seqncia-de-comandos> fimenquanto
Antes de entrar na repetio, a <condio- controle> avaliada, caso seja verdadeira, a <sequencia-de-comandos> ser executada. Ao final avalia-se a <condio-controle> novamente. Caso seja falso, o algoritmo sai da estrutura de repetio. Estruturas de Condio Ex4: criar um algoritmo que escreva os nmeros de 1 a 10 em oredem crescente.
Estruturas de Condio Como essa estrutura testa sua condio de parada antes de executar sua seqncia de comandos, esta seqncia poder ser executada zero ou mais vezes.
Ex5: criar um algoritmo que multiplique todos os valores lidos at que o nmero 0 (zero) seja digitado.
Estruturas de Condio algoritmo exemplo5 var MULT, NUM: real inicio MULT <- 1 escreva (Entre com um nmero (0 - sai): ) leia (NUM) enquanto NUM <> 0 faa MULT <- MULT*NUM escreva (Entre com um nmero (0 - sai): ) leia (NUM) fim-enquanto escreva (O produto dos valores lidos : , MULT) fimalgoritmo
Estruturas de Repetio Existe outra forma de realizar repeties sem saber de antemo quantas sero realizadas:
repita <seqncia-de-comandos> ate <condio-controle>
Como essa estrutura testa sua condio de parada depois de executar sua seqncia de comandos, esta seqncia poder ser executada uma ou mais vezes. Estruturas de Condio Ex6: criar um algoritmo que escreva os nmeros de 1 a 10 em oredem crescente.
Estruturas de Condio Ex7: criar um algoritmo que multiplique todos os valores lidos at que o nmero 0 (zero) seja digitado.
algoritmo exemplo7 var MULT, NUM: real inicio MULT <- 1 repita escreva (Entre com um nmero (0 - sai): ) leia (NUM) se NUM <> 0 entao MULT <- MULT*NUM fimse ate NUM <> 0 escreva (O produto dos valores lidos : , MULT) fimalgoritmo