IFSUL - Técnico em Informática para Internet - Lógica e Algoritmos - Prof.Alfredo
Estruturas de Repetição
Algumas vezes, sentimos necessidade de escrevermos repetidamente o mesmo comando. Em alguns casos, a
quantidade de vezes que temos de escrever é indeterminada ou depende de uma condição.
Existem algumas formas de definir as estruturas de repetições. Algumas lembram até esta ou aquela linguagem. Em
nosso curso iremos no ater a três estruturas, as quais podemos representar tranqüilamente em qualquer ambiente de
Programação.
As estruturas são: Repita, Enquanto e Para. Cada uma delas possui uma característica que lhe é peculiar. É
normal ouvir a pergunta: “quando iremos utilizar esta ou aquela estrutura”? a resposta é simples pois depende da
habilidade de cada um. Existem momentos que podemos resolver a mesma questão com todas as três formas, mas
existem momentos que não é possível. Por isso o segredo encontra-se no exercitar.
Comando REPITA
Aqui você entra na estrutura e pode testar para ver se uma determinada condição foi satisfeita antes ou após a
execução de comandos. Quando a condição de encerramento for verdadeira, será encerrado o processamento do
comando Repita e será dado prosseguimento exatamente no primeiro comando imediatamente após o FimRepita.
Repita
< comandos >
Ate < condição >
Comando ENQUANTO
O comando ENQUANTO prende um trecho do Algoritmo a um laço (looping), ou seja, podemos determinar que um
certo conjunto de comandos seja executado repetidamente enquanto uma condição seja verdadeira.
Enquanto <condição> Faca
< comandos >
FimEnquanto
E X E M P L O S

Com a estrutura REPITA
Algoritmo "DemonstraRepeticao"
VAR
i: INTEIRO
inicio
i<- 1
repita
escreva (i)
i<- i + 1
ate i > 10
fimalgoritmo

Com a estrutura ENQUANTO
Algoritmo "DemonstraRepeticao"
Var
i: INTEIRO
inicio
i<- 1
enquanto i<=10 faca
escreva (i)
i<- i + 1
fimenquanto
fimalgoritmo

Com a estrutura PARA
Algoritmo "DemonstraRepeticao"
Var
i: INTEIRO
inicio
i<- 1
para i de 1 ate 10 faca
escreva (i)
fimpara
fimalgoritmo
Maior Valor
Existirão momentos em que você sentirá necessidade de identificar o maior elemento dentro de um conjunto de dados
processados. Só existe uma forma de sabermos qual o maior valor: comparando as grandezas do conjunto. Para
descobrirmos qual será o maior elemento, inicializaremos uma variável, que armazenará o maior valor do conjunto,
com um valor bem pequeno para a situação, e, cada dado existente no conjunto iremos comparar com esta dita
variável. Caso o valor encontrado seja superior, este será colocado como conteúdo da variável maior, já que este novo
dado representa a maior grandeza neste momento do processamento.
Encontrando o maior valor dentro de um conjunto:
Obs.: para entender melhor esse exemplo, é bom estar familiarizado com a estrutura de repetição comentada mais
adiante.
Algoritmo “semnome”
Var
MAIOR_ID: inteiro
Idade: inteiro
Cont: inteiro
Inicio
MAIOR_ID <- 0
Para cont de 1 ate 10 Faca
LEIA(Idade)
Se
Idade > MAIOR_ID
entao
MAIOR_ID <- Idade
FIMSE
Fimpara
Escreva ("A maior idade é " , MAIOR_ID)
Fimalgoritmo
Menor Valor
De igual forma iremos trabalhar para encontrar o elemento que possui o menor valor. Para tanto, iremos inicializar uma
variável, que armazenará o menor valor do conjunto, com um valor bem alto adequado para a situação, e, cada dado
existente no conjunto iremos comparar com esta dita variável. Caso o valor encontrado seja inferior, este será colocado
como conteúdo da variável menor, já que este novo dado representa a menor grandeza neste momento do
processamento.
Encontrando o menor valor dentro de um conjunto:
Algoritmo “semnome”
Var
MENOR_ID: inteiro
Idade: inteiro
Cont: inteiro
Inicio
MENOR_ID <- 999
Para cont de 1 ate 10 Faca
LEIA(Idade)
Se
Idade < MENOR_ID entao
MENOR_ID <- Idade
FIMSE
Fimpara
Escreva ("A menor idade é ", MENOR_ID)
Fimalgoritmo
Exercícios de Aprendizagem
1)
Elabore um algoritmo capaz de exibir todos os números inteiros, desde o 1 até o 10.
Algoritmo "inteiros"
VAR NUMERO: NUMERICO
INICIO
NUMERO <- 1
ENQUANTO NUMERO <= 10 FACA
ESCREVA (NUMERO)
NUMERO <- NUMERO + 1
FIMENQUANTO
FimAlgoritmo
Comentário:
Note que, utilizamos uma variável numérica chamada NUMERO que recebeu, inicialmente, o valor 1, e daí em diante foi
ciclicamente incrementada de 1 (NUMERO<-NUMERO+1) até que a condição imposta pelo ENQUANTO tornasse falsa.
Elabore um algoritmo capaz de receber um número e, em seguida, listar todos os números de 1 até
ele.
Algoritmo "LIMITES"
VAR
NUMERO: NUMERICO
LIMITE: NUMERICO
INICIO
LEIA (LIMITE)
NUMERO<-1
ENQUANTO NUMERO <= LIMITE FACA
ESCREVA (NUMERO)
NUMERO <- NUMERO + 1
FIMENQUANTO
FimAlgoritmo
Comentário:
Este Algoritmo é similar ao anterior. A única sde isticação implementada foi a flexibilização do limite. Isto tornou o algoritmo
mais genérico, servindo para listar a seqüência de qualquer número, e não apenas a do 10. Para alcançar esta sde isticação, foi
necessário o uso da variável LIMITE que de fato limitou o laço do REPITA ao seu conteúdo, conteúdo este que fora recebido logo
no início da execução do Algoritmo, com o comando LEIA LIMITE.
1)
Sofisticando ainda mais o Algoritmo da 3ª questão, vamos fazer com que, além de listar todos os
números de 1 até um determinado número digitado via teclado, ele mostre a soma de todos esses números no final da
listagem.
Algoritmo "LIMITES"
2)
após a execução de comandos. Quando a condição de encerramento for verdadeira, será encerrado o processamento
do comando Repita e será dado prosseguimento exatamente no primeiro comando imediatamente após o FimRepita.
Repita
< comandos >
Ate < condição >
Comando ENQUANTO
O comando ENQUANTO prende um trecho do Algoritmo a um laço (looping), ou seja, podemos determinar que um
certo conjunto de comandos seja executado repetidamente enquanto uma condição seja verdadeira.
Enquanto <condição> Faca
< comandos >
FimEnquanto
Comando PARA
O comando PARA prende um trecho do Algoritmo a um laço (looping), sendo que sua gerência é em cima de uma
contagem. Enquanto ela não for satisfeita, ou seja, o valor final não for ultrapassado, será executado os comandos
subordinados a esta estrutura.
Para <variável de controle> de <valor inicial> ate <Valor_final> [passo
<incremento>] Faca
< comandos >
FimPara

Na estrutura para..faca, a variável de controle é inicializada com <valor inicial> e no início de cada iteração, seu valor é
comparado com <valor final>. Se o valor da variável for menor ou igual a <valor final>, a lista de comandos é
executada e após ser executado o último comando da lista, a variável de controle é incrementada. Isto repete-se até
que o valor da variável de controle seja maior que <valor final>, quando então é executado o comando imediatamente
após a palavra fimpara. A instrução passo é necessária se o incremento for diferente de 1.
Vamos utilizar um exemplo para esclarecer cada uma dessas instruções dentro de suas respectivas estruturas de
repetições. Digamos que temos de fazer o computador escrever do numero 1 ate 10. Usaremos os comandos
aprendidos até agora.
Com a estrutura REPITA
Algoritmo "DemonstraRepeticao"
VAR
i: INTEIRO
inicio
i<- 1
repita
escreva (i)
i<- i + 1
ate i > 10
fimalgoritmo

Com a estrutura ENQUANTO
Algoritmo "DemonstraRepeticao"
Var
i: INTEIRO
inicio
i<- 1
enquanto i<=10 faca
escreva (i)
i<- i + 1
fimenquanto
fimalgoritmo

Com a estrutura PARA
Algoritmo "DemonstraRepeticao"
Var
i: INTEIRO
inicio
i<- 1
para i de 1 ate 10 faca
escreva (i)
fimpara
fimalgoritmo
Download

estruturas de repetição