Accounting">
Nothing Special   »   [go: up one dir, main page]

Aula 14 - Estruturas de Repetição - para Enquanto e Repita

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 36

Universidade Federal Rural do Semi-Árido

CURSO: Bacharelado em Ciência e Tecnologia

Informática Aplicada
Aula 14 – Estruturas de Repetição

Professora: Danielle Casillo


Aula anterior

 Estruturas Condicionais Encadeada


 Estruturas de Decisão de Múltipla Escolha
 Exercícios
Aula de hoje

 Estruturas de repetição
 para ... faca
 enquanto ... faca
 repita ... ate
Visualg
Introdução

 Nas aulas anteriores, conhecemos as estruturas de decisão


simples, compostas, encadeadas e as decisões de múltipla
escolha.

 Vimos que tais decisões são utilizadas quando há a


necessidade de se estabelecer desvios na execução dos
comandos e quando o algoritmo tem que decidir que
caminho seguir. Vimos também que essa decisão é tomada
de acordo com uma condição específica.
Introdução

 A partir de agora, conheceremos outro grupo de estrutura de


controle: as estruturas de repetição.

 Perceberemos que em alguns momentos haverá a necessidade


de repetir um determinado trecho do algoritmo por um
número específico de vezes.

 O objetivo das estruturas de repetição é executar uma


instrução (ou conjunto de instruções) repetidas vezes,
enquanto (ou até que) uma dada condição seja satisfeita.
Estruturas de Repetição

 Estratégia:
 Acompanhar a execução das repetições contando cada vez que o bloco
é executado.

 Cada execução do bloco de instruções é chamada iteração.

 Para que tenhamos informação de quantas iterações já foram realizadas,


necessitaremos de uma variável que fará o papel de contador.

 Essa variável conterá o número de iterações já realizadas, sendo


atualizada a cada nova iteração.
Estruturas de Repetição

 Nas estruturas de repetição, condições também são


testadas. Mas o que, de fato, caracteriza essa estrutura é
que um conjunto de ações é executado de forma repetida
enquanto a condição permanece válida ou não.

 Por exemplo, se alguém lhe solicita que faça um algoritmo


que escreva cinco vezes a frase: "Bem-vindo à UFERSA", de
que forma você faria?
Estruturas de Repetição
 Levando em consideração o que aprendemos até o momento, o
algoritmo correto seria:
algoritmo "repete frase"
var
inicio
escreval ("Bem Vindo à UFERSA")
escreval ("Bem Vindo à UFERSA")
escreval ("Bem Vindo à UFERSA")
escreval ("Bem Vindo à UFERSA")
escreval ("Bem Vindo à UFERSA")
fimalgoritmo

 Parece simples, não? Mas e se mudássemos o número de


repetições? Se, ao invés de cinco vezes, tivéssemos que
escrever essa mesma frase cem vezes? Ou mil vezes? Seria um
tanto exaustivo para você ficar digitando tantas vezes o mesmo
comando.
Estruturas de Repetição
 A solução para esse impasse é a utilização das estruturas de
repetição.
algoritmo "Repete frase"
var
contador : inteiro
inicio
para contador de 1 ate 5 passo 1 faca
escreval ("Bem Vindo à UFERSA")
fimpara
fimalgoritmo

 criamos uma variável de controle (contador) que é quem


determina quantas vezes o comando escreval será executado. A
repetição só pára quando a condição não for mais atendida, ou
seja, quando o contador for maior que 5.
Exemplos de Repetição

 Uma pessoa apertando o parafuso, gira a chave de fenda até que o


parafuso esteja apertado o suficiente. A cada volta, é verificado
se já está bem firme.

 A chamada feita pelo professor continua enquanto ele não


terminar a lista.

 O aluno de castigo precisa escrever 100 vezes: “ Não faço mais


bagunça”. Ou seja, executa a mesma instrução 100 vezes.
Estrutura de
Repetição

para ... faca


Comando para ... faca

 O comando para ... faca também permite a descrição,


dentro de um algoritmo, de uma estrutura de repetição. Sua
forma geral é:
para variável de controle de valor inicial ate valor final passo incremento faca
lista de comandos
fimpara
ou
para variável de controle de valor inicial ate valor final faca
Lista de comandos
fimpara
Comando para ... faca
 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.
Comando para ... faca

 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.
algoritmo "Nome_Idade"
Exemplo de var
nome1, nome2, nome3, nome4, nome5: caractere

Repetição
idade1, idade2, idade3, idade4, idade5: inteiro
inicio
escreval ("Digite o nome do 1º aluno: ")
leia (nome1)
escreval ("Digite a idade do 1º aluno: ")
 Construa um algoritmo leia (idade1)
escreval ("Digite o nome do 2º aluno: ")
para ler o nome e a idade leia (nome2)
de um grupo de alunos de escreval ("Digite a idade do 2º aluno: ")
leia (idade2)
5 pessoas. escreval ("Digite o nome do 3º aluno: ")
leia (nome3)
escreval ("Digite a idade do 3º aluno: ")
leia (idade3)
escreval ("Digite o nome do 4º aluno: ")
leia (nome4)
escreval ("Digite a idade do 4º aluno: ")
leia (idade4)
escreval ("Digite o nome do 5º aluno: ")
leia (nome5)
escreval ("Digite a idade do 5º aluno: ")
leia (idade5)
fimalgoritmo
Exemplo: Comando para ... faca

 Construa um algoritmo para ler o nome e a idade de um


grupo de alunos de 5 pessoas.
algoritmo "Nome_Idade"
var
nome: caractere
quant_alunos, conta, idade: inteiro
inicio
escreva ("Informe a quantidade de alunos: ")
leia (quant_alunos)
para conta de 1 ate quant_alunos faca
escreval ("Digite o nome do ", conta, "º aluno: ")
leia (nome)
escreval ("Digite a idade do ", conta, "º aluno: ")
leia (idade)
escreval ("Nome: ", nome, " Idade: ", idade)
fimpara
fimalgoritmo
Exercícios

1. Faça um algoritmo que lê e escreve os números ímpares de


1 a 1000.
algoritmo "números_ímpares"
var
i: inteiro
inicio
para i de 1 ate 1000 passo 2 faca
escreval (i)
fimpara
fimalgoritmo
Estrutura de
Repetição

enquanto ... faca


Comando enquanto ... faca

 Na estrutura enquanto ... faca, a expressão lógica é


avaliada e, se ela for verdadeira, a lista de comandos é
executada. Isso se repete até que a condição seja falsa. Veja
a sua forma geral:

enquanto (expressão lógica ou relacional) faca


lista de comandos
fimenquanto
Comando enquanto ... faca

 As instruções do bloco serão efetuadas enquanto a expressão


lógica resultar VERDADEIRO.

 Portanto, a condição de parada do laço é a expressão lógica


resultar FALSO.
Comando enquanto ... faca

 No início da aula, fizemos um exemplo em que escrevia a frase


“Bem-vindo à UFERSA” 5 vezes, utilizando a estrutura com
variável de controle e os comandos PARA...FACA. Vamos ver esse
mesmo algoritmo de uma forma diferente:

algoritmo "Repete frase" algoritmo "Repete frase"


var var
contador : inteiro contador : inteiro
inicio inicio
para contador de 1 ate 5 passo 1 faca enquanto contador < 5 faca
escreval ("Bem Vindo à UFERSA") escreval ("Bem Vindo à UFERSA")
fimpara contador <- contador + 1
fimalgoritmo fimenquanto
fimalgoritmo
Comando enquanto ... faca

 No exercício anterior, fizemos um algoritmo que lê e escreve os


números ímpares de 1 a 1000 utilizando a estrutura com variável
de controle e os comandos PARA...FACA. Vamos ver esse mesmo
algoritmo escrito com a estrutura de repetição ENQUANTO ...
FACA:
algoritmo "números_ímpares" algoritmo "números_ímpares"
var var
i: inteiro i: inteiro
inicio inicio
para i de 1 ate 1000 passo 2 faca i <- 1
escreval (i) enquanto i < 1000 faca
fimpara escreval (i)
fimalgoritmo i <- i + 2
fimenquanto
fimalgoritmo
Exercícios

1. Faça um algoritmo que escreve na tela os números no intervalo


que o usuário informar. (Use a estrutura enquanto)

algoritmo "Repeticao_enquanto"
var
a, b: inteiro
inicio
escreva ("Digite o intervalo de números que deseja
apresentar: ")
leia (a, b)
enquanto (a <= b) faca
escreval (a)
a <- a + 1
fimenquanto
fimalgoritmo
Estrutura de
Repetição

REPITA ... ATE


Comando repita ... ate

 A estrutura repita ... ate também é uma estrutura de repetição,


semelhante ao enquanto ... faca. A diferença básica entre as duas
estruturas é a posição onde é testada a expressão.

 Na estrutura enquanto, a expressão é avaliada no início e se o


resultado for FALSO no primeiro teste, a lista de comandos não é
executada nenhuma vez.

 Na estrutura repita, a condição é avaliada após a execução dos


comandos, o que garante que os comandos serão executados pelo
menos uma vez.
Comando repita ... ate

 Sua forma geral é:


repita
lista de comandos
ate expressão lógica ou relacional
Comando repita ... ate

 Exemplo em que escreve a frase “Bem-vindo à UFERSA” 5


vezes, utilizando a estrutura de repetição enquanto ... faça
e a estrutura repita ... ate
algoritmo "Repete frase" algoritmo "Repete frase"
var var
contador : inteiro contador : inteiro
inicio inicio
enquanto contador < 5 faca contador <- 1
escreval ("Bem Vindo à UFERSA") repita
contador <- contador + 1 escreval ("Bem Vindo à UFERSA")
fimenquanto contador <- contador + 1
fimalgoritmo ate contador > 5
fimalgoritmo
Comando repita ... ate

 O algoritmo que lê e escreve os números ímpares de 1 a 1000


utilizando a estrutura de repetição enquanto ... faca x repita
... ate:
algoritmo "números_ímpares" algoritmo "números_ímpares"
var var
i: inteiro i: inteiro
inicio inicio
i <- 1 i <- 1
enquanto i < 1000 faca repita
escreval (i) escreval (i)
i <- i + 2 i <- i + 2
fimenquanto ate i > 1000
fimalgoritmo fimalgoritmo
Comando repita ... ate

 No exemplo anterior, a variável i controla o número de


repetições do laço. Normalmente, a variável de controle do
laço recebe um valor inicial, é incrementada (ou
decrementada) de um valor constante no laço e tem seu
valor testado no final do laço.

 Ao chegar a um determinado valor, o laço é interrompido. A


inicialização da variável contadora deve acontecer fora do
laço, antes do seu início.
Comando repita ... ate

 Existem diversas maneiras de implementar o mesmo laço,


mas todo laço com variável de controle deve conter:

a) inicialização da variável de controle;

b) incremento (aumento do valor da variável de controle) ou


decremento (diminuição do valor da variável de controle) da
variável de controle; e

c) teste de valor da variável de controle.


Comando repita ... ate

 Um cuidado fundamental que o construtor do algoritmo deve


ter é o de certificar-se que a condição para que sejam
mantidas as iterações torne-se, em algum momento, falsa,
para que o algoritmo não entre em um laço infinito.
algoritmo "laçoInfinito"
var
contador: inteiro
inicio
repita
contador <- 1
escreva (contador)
contador <- contador + 1
ate contador = 10
fimalgoritmo
Exercícios

1. Faça um algoritmo que escreve na tela os números pares de


10 a 2. Responda usando a estrutura de repetição, REPITA
algoritmo "DecrementoNumerosPares"
var
i: inteiro
inicio
i <- 10
repita
escreva (i)
i <- i - 2
ate (i = 0)
fimalgoritmo
Exercícios

2. Faça um algoritmo que lê diversos números positivos


enquanto esses números forem maior que zero e escreve,
para cada um, sua raiz quadrada. Responda usando as
estruturas de repetição, ENQUANTO
algoritmo “raiz_enquanto"
var
i: real
inicio
enquanto i >= 0 faca
escreva ("Digite o valor de i: ")
leia (i)
escreval (raizq (i))
fimenquanto
fimalgoritmo
Exercícios

3. Faça um algoritmo que lê 5 números e escreve todos os que


forem positivos.
algoritmo "números_positivos"
var
i, numero: inteiro
inicio
para i de 1 ate 5 passo 1 faca
escreva ("Digite um numero ")
leia (numero)
se numero > 0 entao
escreval (numero)
fimse
fimpara
fimalgoritmo
Exercícios

4. Faça um algoritmo que lê um número N e escreve todos os números de


1 a N. (responda com as estruturas PARA, ENQUANTO e REPITA)

algoritmo “PARA” algoritmo "ENQUANTO" algoritmo "REPITA"


var var var
i, N: inteiro i, N: inteiro i, N: inteiro
inicio inicio inicio
escreva ("Digite um número: ") escreva ("Digite um número: ") escreva ("Digite um número: ")
leia (N) leia (N) leia (N)
para i de 1 ate N faca i <- 1 i <- 1
escreval (i) enquanto i <= N faca repita
fimpara escreval (i) escreval (i)
fimalgoritmo i <- i + 1 i <- i + 1
fimenquanto ate (i > N)
fimalgoritmo fimalgoritmo

Você também pode gostar