Vous êtes sur la page 1sur 45

ESTRUTURAS

DE REPETIO
Introduo Programao
Prof. Andr Cypriano M. Costa
amonteiro@catolica-es.edu.br
acostaprofessor@gmail.com

INTRODUO

Quem aqui nunca repetiu um procedimento na sua vida?


Procedimento de despertar (quase) todas manhs.
Procedimento para comear a dirigir um veculo.
Procedimento de chegada no trabalho.

Se observarmos o nosso cotidiano, perceberemos que


repetimos muitos procedimentos dia aps dia.
por isso que a vida de muita gente se torna uma rotina!

Em muito algoritmos que vamos construir podemos


detectar certos passos que se repetem!
2

INTRODUO

Assim como as nossas rotinas possuem incio, meio e fim,


os passos a serem repetidos pelos algoritmos tambm
precisam ter incio, meio e fim!
Caso contrrio, nosso algoritmo desrespeita a propriedade

conhecida como finitude

Para isso so usadas estruturas de repetio, que


tambm so conhecidas como:
Laos de repetio
Loops ou looping

ESTRUTURAS DE REPETIO

Uma estrutura de repetio permite repetir a execuo de


um grupo de instrues (bloco) at que uma determinadas
condies deixem de ser satisfeitas.

As estruturas de repetio so:


Enquanto-faa
Repita-at
Para-faa

As estruturas de repetio so escritos com o auxlio do


condicional.
4

ESTRUTURAS DE REPETIO

Exemplo 1:
Construa um algoritmo que calcule a mdia aritmtica das 04

notas bimestrais de um aluno (usurio), e exiba a mdia do


aluno e a informao de que ele est aprovado, caso a mdia
seja maior ou igual a 7.
E se ao invs de termos um nico alunos, tivermos 50?

ENQUANTO-FAA

uma estrutura que permite repetir diversas vezes um


mesmo conjunto de instrues (bloco), porm, sempre
verificando antes de cada execuo, se permitido
executar este bloco.

A estrutura enquanto-faa, permite que um bloco ou uma


nica instruo seja repetida enquanto uma determinada
<condio> for verdadeira.

Quando a <condio> for falsa, o conjunto de instrues


deixar de ser executado.
6

ENQUANTO-FAA

Para representar esta a repetio vamos usar a expresso


enquanto (<condio>) faca
<comando1>
<comando2>
...
fimenquanto

Comando N

cond
io

Comando 1

Comando 2

...
7

ENQUANTO-FAA

Exemplo 1:
Construa um algoritmo que calcule a mdia aritmtica das 04

notas bimestrais de 50 alunos, e exiba a mdia do aluno e a


informao de que ele est aprovado, caso a mdia seja
maior ou igual a 7.

Quantas vezes vamos repetir o procedimento?


Como vamos contabilizar isso?
Atravs de um contador!
Este contador ser representado por uma varivel com um

dado inicial que incrementado a cada repetio.

ENQUANTO-FAA

Exemplo 1:
Construa um algoritmo que calcule a mdia aritmtica das 04

notas bimestrais de 50 alunos, e exiba a mdia do aluno e a


informao de que ele est aprovado, caso a mdia seja
maior ou igual a 7.

CON : inteiro
// declarando o contador
CON 0
// inicializando o contador
CON CON + 1 // incrementando o contador

Incrementar significa somar 1.


9

ENQUANTO-FAA
var
n1, n2, n3, n4, M : real
con : inteiro
incio
con 0
enquanto(con < 50) faca
leia(n1, n2, n3, n4)
M (n1 + n2 + n3 + n4) / 4
escreval(m)
se (M >= 7) entao
escreval(Aluno aprovado)
fimse
con con + 1
fimenquanto
fimalgoritmo
10

Incio

ENQUANTO-FAA
V

con 0
con
< 50

n1, n2, n3, n4


M (n1+n2+n3+n4)/4

Fim

M
V

M
>=7

Aluno
aprovado

con con + 1
11

ENQUANTO-FAA

Exemplo 2:
Alm da mdia dos alunos, nosso algoritmo tambm deve

calcular e informar a mdia da turma.

Como vamos calcular a mdia da turma?


MT = (M1 + M2 + M3 + M4 + M5 + ... + M50) / 50

possvel fazer assim?


Sim!

vivel fazer assim?


No!
12

ENQUANTO-FAA

Podemos utilizar neste caso, as vantagens da estrutura de


repetio, fazendo um lao que a cada execuo acumule
em uma varivel, conhecida conceitualmente como
acumulador, a soma das mdias de cada aluno.
Depois s dividir o resultado pela quantidade de mdias,
que no caso 50.
acm : real
// declarando um acumulador
X : inteiro
// declarando uma varivel qualquer
acm 0
// inicializando o acumulador
acm acm + X // acumula em acm o valor anterior mais
// o valor de X
13

ENQUANTO-FAA

Exemplo 2:
Construa um algoritmo que leia a mdia de 50 alunos, calcule

e informe a mdia da turma.

Quais so as entradas?
50 mdias (M)

Quais so a(s) sada(s)?


Mdia aritmtica da turma (MT)

14

ENQUANTO-FAA
var
M, MT, acm : real
con : inteiro
incio
con 0
acm 0
enquanto(con < 50) faca
leia(M)
acm acm + M
con con + 1
fimenquanto
MT acm / 50
escreval(A mdia da turma , MT)
fimalgoritmo
15

ENQUANTO-FAA
Incio
con 0
acm 0
V

con
< 50

MT acm / 50

acm acm + M

MT

con con + 1

Fim
16

ENQUANTO-FAA

Os algoritmos que fizemos at agora, sabe de antemo a


quantidade de alunos da turma da qual se deseja calcular
a mdia.
Isso permitiu construir um loop com uma quantidade pr-

determinada de execues.

Mas, e se no soubssemos quantos eram os alunos?


O que faramos para controlar o lao de repetio?
Precisaramos de um lao que fosse executado por uma

quantidade de indeterminada de vezes.

17

ENQUANTO-FAA

Assim, temos que encontrar outro critrio de parada, que


possibilite que o lao seja finalizado em algum momento.

Isso pode ser feito de 02 formas:


Pedindo para o usurio informar no incio do algoritmo a

quantidade de alunos, valores, nmeros, etc., ele vai


usar/tem.
Utilizar um valor pr-definido como finalizador.

18

ENQUANTO-FAA

Exemplo 3:
Construa um algoritmo que calcule a mdia de N nmeros

digitados pelo usurio, e escreva no final a mdia. O valor de


N tambm deve ser fornecido pelo usurio

Quais so as entradas?
N, e N nmeros

Quais so a(s) sada(s)?


Mdia aritmtica dos N nmeros (M)

19

ENQUANTO-FAA
var
M : real
N, x, acm, con : inteiro
incio
con 0
acm 0
leia(N)
enquanto(con < N) faca
leia(x)
acm acm + x
con con + 1
fimenquanto
M acm / N
escreval(A mdia dos nmeros , M)
fimalgoritmo
20

Incio

ENQUANTO-FAA

con 0
acm 0
N
V

con
<N

M acm / N

acm acm + x

con con + 1

Fim
21

ENQUANTO-FAA

Exemplo 4:
Construa um algoritmo que calcule e exiba a mdia de um

conjunto de nmeros digitados pelo usurio. Os nmeros


pararo de ser informados quando o usurio digitar o nmero
0 (zero).

Quais so as entradas?
Vrios nmeros

Quais so a(s) sada(s)?


Mdia aritmtica dos vrios nmeros (M)

22

ENQUANTO-FAA
var
M : real
x, acm, con : inteiro
incio
con 0
acm 0
x1
enquanto(x <> 0) faca
leia(x)
acm acm + x
con con + 1
fimenquanto
M acm / con
escreval(A mdia dos nmeros , M)
fimalgoritmo
23

ENQUANTO-FAA

Incio
con 0
acm 0
x1

x<>0

M acm / con

acm acm + x

con con + 1

Fim
24

EXERCCIO DESAFIO

Faa um algoritmo que seja capaz de obter o quociente


inteiro da diviso de dois nmeros fornecidos pelo usurio,
sem utilizar as operaes de diviso (/, div ou \).

Faa um algoritmo que seja capaz de obter o resultado de


uma exponenciao para qualquer base (B) e expoente
(e) inteiro fornecidos pelo usurio, sem utilizar a operao
de exponenciao (^).
Be

25

REPITA-ATE

uma estrutura que permite repetir diversas vezes um


mesmo conjunto de instrues (bloco), porm, sempre
verificando depois de cada execuo, se permitido
repetir a execuo deste bloco.

A estrutura repita-ate, permite que um bloco ou uma nica


instruo seja repetida enquanto uma determinada
<condio> for verdadeira.

Quando a <condio> for falsa, o conjunto de instrues


deixar de ser executado.
26

REPITA-ATE

Para representar esta a repetio vamos usar a expresso


repita
<comando1>
<comando2>
...
ate (<condio>)
comando N

Comando 1

Comando 2

...
V

cond
io

Comando N
27

REPITA-ATE

Qual so as principais diferenas entre os comandos


enquanto-faca e repita-ate?
enquanto(<condio>) faca repita
comando 1
comando 1
comando 2
comando 2
...
...
fimenquanto
ate(<condio>)
O comando repita-ate executa o bloco de comando pelo
menos uma vez, independente se a condio verdadeira
ou falsa.
A condio do comando repita-ate como se fosse uma
negao da condio do comando enquanto-faca.
28

REPITA-ATE
var
M, MT, acm : real
Exemplo 5:
con : inteiro
Construa um algoritmo que
incio
leia a mdia de 50 alunos,
con 0
calcule e informe a mdia
acm 0
da turma.
repita
leia(M)
acm acm + M
con con + 1
ate(con >= 50)
MT acm / 50
escreval(A mdia da turma , MT)
fimalgoritmo
29

REPITA-ATE
Incio
con 0
acm 0
M

acm acm + M

MT acm / 50

con con + 1

MT

con
50

V
Fim
30

REPITA-ATE

Exemplo 6:
Imagine uma brincadeira entre 02 colegas, na qual um pensa

em um nmero e o outro deve fazer chutes at acertar o


nmero imaginado. Como dica, a cada tentativa, dito se o
chute foi alto ou baixo. Elabore um algoritmo dentro deste
contexto leia o nmero imaginado e os chutes, ao final
mostre quantas tentativas foram necessrias para descobrir o
nmero

Quais so as entradas?
Nmero imaginado e chutes

Quais so a(s) sada(s)?


Nmero de tentativas
31

REPITA-ATE
var
num, chute, tent : inteiro
incio
tent 0
leia(num)
repita
leia(chute)
tent tent + 1
se(chute > num) entao
escreval(Chutou alto)
senao
se(chute < num) entao
escreval(Chutou baixo)
fimse
fimse
ate(num = chute)
escreval(O nmero de tentativas foi , tent)
fimalgoritmo
32

REPITA-ATE
V

Incio
tent 0

Chutou
alto

num

chute
> num

chute
< num

Chutou
baixo

chute
tent tent + 1
F

num =
chute

V
tent
Fim
33

PARA-FAA

uma estrutura que permite repetir diversas vezes um


mesmo conjunto de instrues (bloco), porm, um nmero
predeterminado de vezes..

A estrutura para-faca, permite que um bloco ou uma nica


instruo seja repetida um nmero fixo de vezes.
Ou seja, existe um valor inicial e um valor final.

34

PARA-FAA

Para representar esta a repetio vamos usar a expresso


para V de vi ate vf passo p faca
<comando1>
F
<comando2>
...
Comando N
fimpara
comando N

vi <=
vf

Comando 1

Comando 2

...
35

PARA-FAA
para V de vi ate vf passo p faca

Onde:
V : a varivel de controle
vi : o valor inicial da varivel V
vf : o valor final da varivel V, isto o valor at o qual ela

vai chegar.
p : o valor do (de)incremento dado varivel V

36

PARA-FAA
var
M, MT, acm : real
Exemplo 7:
con : inteiro
Construa um algoritmo que
incio
leia a mdia de 50 alunos,
acm 0
calcule e informe a mdia
para con de 1 ate 50 passo 1 faca
da turma.
leia(M)
acm acm + M
fimpara
MT acm / 50
escreval(A mdia da turma , MT)
fimalgoritmo

37

PARA-FAA
Incio
acm 0
con 1
V

con
50

MT acm / 50

acm acm + M

MT

con con + 1

Fim
38

PARA-FAA

Exemplo 8:
Construa um algoritmo que exiba todos os nmeros mltiplos

de 3 entre 1 e 100.

Quais so as entradas?
---

Quais so a(s) sada(s)?


3 6 9 12 ... 99

39

PARA-FAA
var
n : inteiro
incio
para n de 1 ate 100 passo 1 faca
se(n mod 3 = 0) entao
escreval(n)
fimse
fimpara
fimalgoritmo

Incio
n1
V
V

n mod
3=0

n <=
100
F

Fim

n
con con + 1
40

PARA-FAA

Exemplo 9:
Elabore um algoritmo que simule uma contagem regressiva

de X minutos. Por exemplo, se X for igual a 10, seu algoritmo


deve mostrar 10:00, 9:59, 9:58, ... 9:00, 8:59, 8:59, at 0:00.

Quais so as entradas?
Um valor X correspondente aos minutos

Quais so a(s) sada(s)?


A contagem regressiva destes X minutos

41

PARA-FAA
var
X, min, seg : inteiro
inicio
leia(X)
escreval(X, :00)
para min de X-1 ate 0 passo -1 faca
para seg de 59 ate 0 passo -1 faca
escreval(min, :, seg)
fimpara
fimpara
fimalgoritmo
42

Incio

PARA-FAA

X
X:00
min X 1
V
seg 59
V

seg
>=0

min
>=0

F
Fim

min:seg
seg seg 1
min min 1
43

EXERCCIO DESAFIO

Elabore um algoritmo que, utilizando as 03 estruturas de


repetio, exiba a tabuada do nmero 5.
1x5=5
2 x 5 = 10
...
10 x 5 = 50

Modifique o algoritmo para que, dado um intervalo de


nmeros [A, B], fornecidos pelo usurio, exiba a tabuada
do todos os nmeros entre A e B.

44

BIBLIOGRAFIA

SOUZA, M. A. F.; GOMES, M. M.; SOARES, M. V. et al.


Algoritmos e lgica de programao. So Paulo: Pioneira
Thomson Learning, 2005.

FORBELLONE, A.L.V.; EBERSPCHER, H.F. Lgica de


Programao. So Paulo: Pearson, 2011.

45

Vous aimerez peut-être aussi