1
Estruturas de RepetiçãoEstruturas de Repetição -- II
Programação I
ALG
2
Estruturas de repetição
Diferente do ser humano...
2
7
Comando ENQUANTO
O comando ENQUANTO indica que o comando seguinte será
executado, desde que o resultado da expressão l...
3
13
Solução em VisuAlg usando REPITA
var
num : inteiro
inicio
repita
escreval("Para sair, entre com um valor menor que 0"...
4
19
Comandos REPITA e ENQUANTO
Solução (cont.)
Como podemos contornar este problema?
Retirando a leitura da variável de d...
Upcoming SlideShare
Loading in …5
×

Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)

21,976 views

Published on

3 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
21,976
On SlideShare
0
From Embeds
0
Number of Embeds
381
Actions
Shares
0
Downloads
46
Comments
3
Likes
5
Embeds 0
No embeds

No notes for slide

Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)

  1. 1. 1 Estruturas de RepetiçãoEstruturas de Repetição -- II Programação I ALG 2 Estruturas de repetição Diferente do ser humano, o computador não se cansa de realizar operações repetitivas. Diante disto, podemos incluir nos algoritmos as estruturas de repetição. O que é uma repetição? Também chamada a laço ou loop; É uma instrução que permite a execução de um trecho de algoritmo várias vezes seguidas. Nesta aula veremos: Repetição com teste no início; Repetição com teste no final; Repetição com variável de controle. 3 Comandos REPITA e ENQUANTO Tanto o comando REPITA quanto o comando ENQUANTO permitem repetir um ou mais comandos no corpo de um algoritmo. A sintaxe dos comandos é: repita <comando1>; <comando2>; . . . <comandoN>; até <expr>; enquanto <expr> faça <comando>; 4 Comando REPITA O comando REPITA indica que todos os comandos entre a palavra repita e a palavra até encontram-se dentro de um laço e devem ser executados. Após a palavra até deve haver uma expressão lógica que: Se falsa, indica que o laço deve ser executado novamente; Se verdadeira, indica que o laço acabou e o algoritmo deve continuar sendo executado. Esta estrutura é chamada de repetição com teste no final A decisão entre repetir e parar o laço é feita ao final do comando. É garantido que o laço será executado aos menos uma vez. 5 Comando REPITA em VisuAlg Teste realizado após a execução do corpo do loop. O corpo do loop sempre executa ao menos uma vez. O código continuará sendo executado enquanto a instrução for FALSA. repita <seqüência-de-comandos> ate <expressão-lógica> 6 Exemplo comando repita algoritmo "Números de 1 a 10 (com repita)" var j: inteiro inicio j <- 1 repita escreva (j:3) j <- j + 1 ate j > 10 fimalgoritmo
  2. 2. 2 7 Comando ENQUANTO O comando ENQUANTO indica que o comando seguinte será executado, desde que o resultado da expressão lógica seja verdadeiro. Apesar do ENQUANTO permitir apenas a repetição de um único comando, nada que impede que seja utilizado um bloco de comandos. Ao encontrar o fim do comando (ou do bloco), o computador volta para a 1ª linha do laço e avalia novamente a expressão lógica: Se verdadeira, o computador fará uma nova execução do trecho; Se falsa, o computador pára a execução e continua no próximo comando após o trecho repetido. Esta estrutura é chamada de repetição com teste no início A decisão entre repetir e parar o laço é feita no início do comando. Se o teste for falso desde o início, o laço não será executado. 8 Comando Enquanto em VisuAlg Implementado com a instrução enquanto .. faca instrução que efetua o teste antes da execução do corpo do loop. O corpo do loop pode nunca ser executado. Esta estrutura repete uma seqüência de comandos enquanto uma determinada condição (especificada através de uma expressão lógica) for satisfeita. enquanto <expressão-lógica> faca <seqüência-de-comandos> fimenquanto 9 Exemplo comando enquanto .. faca algoritmo "Números de 1 a 10 (enquanto..faca)" var j: inteiro inicio j <- 1 enquanto j <= 10 faca escreva (j:3) j <- j + 1 fimenquanto fimalgoritmo 10 Comandos REPITA e ENQUANTO Exercício: Fazer um programa para ler diversos números informados pelo usuário usando o comando REPITA, e após cada leitura exibir se o número é par ou ímpar. Considere que ao fornecer um valor negativo o usuário deseja encerrar e entrada de dados. 11 Comandos REPITA e ENQUANTO Solução Quantos dados serão fornecidos? Quantas variáveis serão necessárias? Temos que identificar o trecho que será repetido e adicioná-lo dentro de um comando de repetição, declarando apenas as variáveis necessárias para uma repetição. 12 Comandos REPITA e ENQUANTO Solução usando repita(cont.) O algoritmo fica assim: Variáveis num : inteiro; Início repita escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; até num < 0; Fim
  3. 3. 3 13 Solução em VisuAlg usando REPITA var num : inteiro inicio repita escreval("Para sair, entre com um valor menor que 0") escreva ("Entre com o número: ") leia( num) se num % 2 = 0 entao escreval ("O número é par") senao escreval ("O número é ímpar") fimse ate num < 0 fimalgoritmo 14 Comandos REPITA e ENQUANTO Exercício: Refazer o programa anterior, só que desta vez usando ENQUANTO. 15 Comandos REPITA e ENQUANTO Solução usando enquanto (cont.) O algoritmo fica assim: Variáveis inteiro: num =0; Início enquanto num >= 0 faça [[ escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; ]]; Fim 16 Solução em VisuAlg usando ENQUANTO var num : inteiro inicio enquanto num >= 0 faca escreval("Para sair, entre com um valor menor que 0") escreva ("Entre com o número: ") leia( num) se num % 2 = 0 entao escreval ("O número é par") senao escreval ("O número é ímpar") fimse fimenquanto fimalgoritmo 17 Comandos REPITA e ENQUANTO Solução (cont.) Executando o teste de mesa para os valores 8, 11, 21, 8 e -1, teríamos as seguintes mensagens: 8 O número é par 11 O número é ímpar 21 O número é ímpar 8 O número é par -1 O número é ímpar Esta mensagem não deveria ser exibida 18 Comandos REPITA e ENQUANTO Solução (cont.) Como podemos contornar este problema? Adicionando mais uma condição ao comando SE se num >=0 e num %2 = 0 Solução pouco elegante, pois este teste é sempre verdadeiro, exceto no último caso Utilizando o comando ENQUANTO ao invés do comando REPITA
  4. 4. 4 19 Comandos REPITA e ENQUANTO Solução (cont.) Como podemos contornar este problema? Retirando a leitura da variável de dentro do laço: Será gerado um laço infinito, pois num será lida apenas uma vez, e se for >= 0, o laço nunca terminará. Iniciar a variável para um valor padrão que sempre executará na 1ª vez: Caímos no mesmo problema que no algoritmo utilizando o comando REPITA. Colocar uma leitura antes do laço, e uma segunda leitura como últimos comandos dentro do laço. 20 Comandos REPITA e ENQUANTO Solução (cont.) O algoritmo fica assim: Variáveis num : inteiro; Início escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; enquanto num >= 0 faça [[ se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; escrever “Entre com o número: “; ler num; ]]; Fim 21 Exercício: Implemente a solução anterior usando o VisuAlg. DÚVIDAS ?DÚVIDAS ? Programação I ALG

×