23
Introdução à Lógica Estruturas de Repetição Regis Pires Magalhães [email protected] Última atualização em 14/05/2008

Logica Algoritmo 05 Repeticao

Embed Size (px)

Citation preview

Page 1: Logica Algoritmo 05 Repeticao

Introdução à Lógica

Estruturas de Repetição

Regis Pires Magalhã[email protected]

Última atualização em 14/05/2008

Page 2: Logica Algoritmo 05 Repeticao

Estruturas de Repetição• São muito comuns as situações em que se deseja

repetir um determinado trecho de um programa um certo número de vezes.

• As estruturas de repetição são muitas vezes chamadas de Laços ou também de Loops.

• Classificação:– Laços Contados

• Conhecimento previo de quantas vezes o comando no interior da construção será executado;

– Laços Condicionais• Não se conhece de antemão o número de vezes que o

conjunto de comandos no interior do laço será repetido.• Amarrado a uma condição sujeita à modificação pelas

instruções do interior do laço.

Page 3: Logica Algoritmo 05 Repeticao

Laços condicionais• O conjunto de comandos em seu interior é executado

até que uma determinada condição seja satisfeita.

• Laços condicionais mais comuns nas linguagens de programação modernas:

– Enquanto - laço condicional com teste no início

– Repita - laço condicional com teste no final

• A variável que é testada dever sempre estar associada a um comando que a atualize no interior do laço.

– Caso isso não ocorra, o programa ficará repetindo indefinidamente este laço, gerando um “laço infinito”.

Page 4: Logica Algoritmo 05 Repeticao

Laços Condicionais com Teste no Início (enquanto ... faca)

• Caracteriza-se por uma estrutura que efetua um teste lógico no início de um laço, verificando se é permitido ou não executar o conjunto de comandos no interior do laço.

enquanto <condição> faca<comando_composto>

fimenquanto

Page 5: Logica Algoritmo 05 Repeticao

Fluxograma

Page 6: Logica Algoritmo 05 Repeticao

Diagrama de Chapin

Page 7: Logica Algoritmo 05 Repeticao

Laços condicionais (enquanto ... faca)

algoritmo "numeros"varnum_inicial, num_final, i : inteiroinicioescreva("Digite o número inicial: ")leia(num_inicial)escreva("Digite o número final: ")leia(num_final)i <- num_inicialenquanto (i <= num_final) faca escreval(i) i <- i + 1fimenquantoescreva("fim")fimalgoritmo

Page 8: Logica Algoritmo 05 Repeticao

Exemplo

algoritmo "exemplo_enquanto"var soma, num : inteiroinicionum <- 1soma <- numenquanto soma < 1000 faca

escreval(num, " - ", soma)num <- num + 1soma <- soma + num

fimenquantofimalgoritmo

Page 9: Logica Algoritmo 05 Repeticao

Exemplo

Page 10: Logica Algoritmo 05 Repeticao

Laços Condicionais com Teste no Final ( repita ... ate )

• Efetua um teste lógico no final de um laço, verificando se é permitido ou não executar novamente o conjunto de comandos no interior do mesmo.

• Na construção Repita o comando é executado uma ou mais vezes (pelo menos uma vez). Além disso, a variável pode ser inicializada ou lida dentro do laço.

• Na construção Enquanto o comando é executado zero ou mais vezes.

repita<comando_composto>

ate <condição>

Page 11: Logica Algoritmo 05 Repeticao

Laços condicionais (repita ... ate)

algoritmo "numeros"varnum_inicial, num_final, i : inteiroinicioescreva("Digite o número inicial: ")leia(num_inicial)escreva("Digite o número final: ")leia(num_final)i <- num_inicialrepita escreval(i) i <- i + 1ate (i > num_final)escreva("fim")fimalgoritmo

Page 12: Logica Algoritmo 05 Repeticao

Fluxograma

Page 13: Logica Algoritmo 05 Repeticao

Diagrama de Chapin

Page 14: Logica Algoritmo 05 Repeticao

Exemplo

algoritmo "exemplo_repita"var num : inteiroiniciorepita

leia(num)escreval(num, " - ", num * num)

ate num % 2 = 0fimalgoritmo

Page 15: Logica Algoritmo 05 Repeticao

Fluxograma

Page 16: Logica Algoritmo 05 Repeticao

Laços contados• São úteis quando se conhece previamente o número exato

de vezes que se deseja executar um determinado conjunto de comandos.

• Estrutura dotada de mecanismos para contar o número de vezes que o corpo do laço é executado.

para <variável> de <início> ate <final> faca<comando_composto>

fimpara

Page 17: Logica Algoritmo 05 Repeticao

Laços contados (para ... de ... ate ... faca)

algoritmo "numeros"var num_inicial, num_final, i : inteiroinicio escreva("Digite o número inicial: ") leia(num_inicial) escreva("Digite o número final: ") leia(num_final) para i de num_inicial ate num_final faca escreval(i) fimpara escreva("fim")fimalgoritmo

Page 18: Logica Algoritmo 05 Repeticao

Laços contados• Existe uma condição especial em que a contagem

pode ser de forma decrescente, onde o valor da variável é decrementado.

para <variável> de <início> ate <final> passo –1 faca<comando_composto>

fimpara

Page 19: Logica Algoritmo 05 Repeticao

Fluxograma

Page 20: Logica Algoritmo 05 Repeticao

Diagrama de Chapin

Page 21: Logica Algoritmo 05 Repeticao

Exemploalgoritmo "tabuada"var i, tab, num : inteiroinicioescreva("Tabuada: ")leia(tab)escreva("Até que número: ")leia(num)para i de 1 ate num faca

escreva(i, " x ", tab, " = ", i * tab)fimpara

fimalgoritmo

Page 22: Logica Algoritmo 05 Repeticao

Fluxograma

Page 23: Logica Algoritmo 05 Repeticao

Estruturas de Controle Encadeadas ou aninhadas

• Um aninhamento ou encadeamento é o fato de se ter qualquer um dos tipos de construção apresentados anteriormente dentro do conjunto de comandos (comando composto) de uma outra construção.

• Em qualquer tipo de aninhamento é necessário que a construção interna esteja completamente embutida na construção externa.

Aninhamento inválidoAninhamento válido