Você está na página 1de 13

06/05/2015

Aula 8 Repeties Parte 1


Prof. Dr. Engo. Carlos A. Sics A. do Nascimento
caugusto.sicsu@uva.br
Curso de Engenharia

Tema
Estrutura de Repetio
Objetivos
O aluno dever ser capaz de:
Compreender a estrutura de repetio e suas
caractersticas;
Discernir quando uma estrutura de repetio deve
ser utilizada;
Criar algoritmos que se utilizem dessas estruturas.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

06/05/2015

Estrutura do Contedo
Contedos:
Desenvolver:
Definio da estrutura de repetio e suas caractersticas;
Utilizao dos operadores relacionais e dos operadores
lgicos nas condies para ocorrncia das repeties;
Utilizao da estrutura de repetio;
Apresentar o conceito do Teste de Mesa;
Desenvolvimento de algoritmos com uso de estruturas de
Repetio.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

Conceitos:
1. Estrutura de Repetio
Como o prprio nome apresenta, a estrutura de repetio permite
que o algoritmo repita determinada seqncia de comandos
(escopo), de acordo com um determinado critrio condicional.
Por exemplo, possvel criar um algoritmo com 100 comandos de
leitura de dados de entrada (comando leia) ou criar um algoritmo
que tenha somente um comando de entrada de dados e que este
seja repetido 100 vezes, dependendo da situao.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

06/05/2015

importante observar que, normalmente, isso no afeta o resultado


final do processamento, mas afeta a criao do algoritmo, pois
diminui sensivelmente o tamanho do algoritmo final, diminuindo
a sua complexidade.
O uso da estrutura de repetio precisa que seja identificado o
critrio de repetio, ou seja, em que condio o algoritmo deve
continuar repetindo os comandos e em que condio ele deve
parar de repetir.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

2. Operadores Relacionais e Operadores Lgicos


As condies utilizadas na estrutura de repetio utilizam os mesmos
operadores, relacionais e lgicos, utilizados nas estruturas de
deciso, tais como:
Operadores relacionais: =, <>, >, < , >=, <=
Operadores lgicos: NAO, E, XOU, OU

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

06/05/2015

3. Estrutura de Repetio: Comando Enquanto/Faa


Existem alguns comandos que permitem a criao de uma estrutura
de repetio. O comando enquanto ser apresentado em
primeiro lugar porque ele permite a criao de estruturas de
repetio para qualquer situao que possa ser encontrada.
Podemos dizer que ele um comando de soluo geral para a
repetio.
O comando enquanto realiza o teste lgico da condio no incio da
repetio.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

Esse comando funciona da seguinte forma: enquanto uma


determinada condio for verdadeira, ele executa os comandos
que devem ser repetidos e retorna para o teste da condio para
determinar se deve repetir novamente. Caso a condio seja falsa,
ele interrompe a repetio e continua o fluxo de comandos
normalmente.
...
Enquanto (condicao) faca
Instrues a serem repetidas
FimEnquanto
...

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

06/05/2015

importante observar que no existe uma opo sobre qual


sequncia de comandos deve ser realizada, mas sim, quando
determinados comandos devem ser repetidos. No o conceito
de seguir um caminho ou outro dentro do algoritmo (desvio).
Isso diferencia a estrutura de repetio da estrutura de deciso.
Exemplo prtico:
CONT 0
enquanto (CONT < 100) faca
escreva (Digite um nmero inteiro:)
leia (NUM)
SOMA SOMA + NUM
CONT CONT + 1
fimenquanto
MEDIA SOMA / CONT
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

Existem alguns detalhes importantes a serem observados neste


comando:
Os comandos que esto no lado S (Sim) do comando enquanto,
so aqueles que sero repetidos. No exemplo acima, um
comando leia e dois comandos de atribuio de valores.
A condio para repetio a seguinte: enquanto a varivel CONT
apresentar valor menor do que 100, os comandos devem ser
repetidos.
Na prtica acontece o seguinte: realizado o teste lgico para
determinar se a condio verdadeira. Se a condio for
verdadeira ele executa os comandos que esto no lado S e volta
para o teste lgico da condio. Caso continue verdadeiro, repete
e testa novamente, caso a condio se apresente como falsa, ele
interrompe a repetio (vai para o lado N)(No) e continua a
sequncia normal de comandos aps o fimenquanto.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

10

06/05/2015

Por permitir que o fluxo de execuo dos comandos volte para um


ponto anterior do programa, algumas pessoas denominam esse
comando de lao de repetio (ou loop de repetio).
Essa maneira de utilizar a estrutura de repetio depende do
conhecimento por parte de quem vai criar o algoritmo e da
quantidade de vezes que os comandos sero repetidos.
Existem outros formas de utilizar uma estrutura de repetio.
Estas sero vistas posteriormente.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

11

Ao utilizarmos as estruturas de repetio, temos algumas variveis que


se tornam especiais por serem usadas em funes especficas dentro do
programa:
Variveis contadoras, estas variveis so usadas para efetuar contagens, como
por exemplo um contador de notas para saber quantas notas foram digitadas
Variveis acumuladoras estas variveis so usadas para acumular (somar ou
totalizar) valores digitados, como exemplo podemos acumular (somar ou
totalizar) um conjunto de notas.

As variveis definidas anteriormente so muito teis, para nossos


programas, se pensarmos de acordo com os exemplos anteriores,
podemos saber qual foi a mdia das notas de uma turma, ao digitarmos
um conjunto de notas em um programa com repetio e ao usarmos
um contador de notas e um acumulador (somador) de notas, podemos
calcular a mdia da turma. Este conceito pode ser usado em muitas
outras situaes, tais como temperaturas, idades, alturas, vetores, etc.
Variveis contadoras e acumuladoras devem sempre ser inicializadas
com um valor, isso ocorre para que valores anteriormente armazenados
na memria no influenciem o resultado final.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

12

06/05/2015

Como exemplo, observe o algoritmo abaixo que deve ler 10 nmeros, som-los e
apresentar o resultado da soma e a mdia.
Algoritmo
algoritmo "Repetio"
var
CONT : inteiro
NUM, SOMA, MEDIA : real
inicio
CONT <- 1
SOMA <- 0
MEDIA <- 0
enquanto (CONT <= 10) faca
escreva("Digite um nmero [", CONT, "]:")
leia (NUM)
SOMA <- SOMA + NUM
CONT <- CONT + 1
fimenquanto
MEDIA <- SOMA / (CONT-1)
escreval ("A soma total :", SOMA)
escreval ("A mdia :", MEDIA)
fimalgoritmo
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

13

Existem alguns detalhes importantes a serem observados nesse


algoritmo:
A varivel CONT funcionar como um contador (varivel
contadora) de vezes que foi realizada a repetio (ou seja, a
quantidade de nmeros que foram digitados). Por esse motivo,
necessrio repetir o comando CONT CONT + 1, para que, a
cada vez que for realizada uma repetio seja acrescentado 1 ao
valor da varivel contadora.
No incio do algoritmo atribudo o valor 1 (um) para a varivel
CONT porque a contagem deve comear de um valor inicial. Por
esse motivo, o teste lgico realizado no comando enquanto
CONT <= 10.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

14

06/05/2015

O comando SOMA SOMA + NUM permite somar o valor que foi


lido pelo comando leia (varivel NUM) ao valor atual da varivel
SOMA e acumular esse valor na prpria varivel. Essa varivel
utilizada como um acumulador de valores SOMA (varivel
acumuladora).
A varivel SOMA recebe no incio do algoritmo, como atribuio, o
valor zero, porque ao iniciar o programa, como nenhum dado foi
digitado, a soma dos valores at ento vale zero.
Ao terminar a repetio (condio falsa), ser calculada a mdia e
sero exibidas a SOMA e a MEDIA.
Observe que somente os comandos que esto no lado S do
comando enquanto sero repetidos. Os outros comandos aps o
fimenquanto, sero executados somente uma vez.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

15

4. Teste de Mesa (ou teste chins)


Nem sempre ser possvel ter em mo ferramentas computacionais
para testar os algoritmos. Nessa situao, necessrio testar o
programa utilizando apenas papel e caneta, ou seja, simular o
funcionamento do programa no papel.
Essa simulao recebe o nome de Teste de Mesa ou de Teste Chins.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

16

06/05/2015

Observe o que deve ser feito para que o Teste de Mesa seja realizado
(vamos utilizar o algoritmo acima como exemplo):
Em primeiro lugar, crie uma tabela onde cada linha tenha o nome
de uma das variveis do algoritmo. Todas as variveis devem ser
colocadas na tabela. No exemplo: CONT, NUM, SOMA e MEDIA.
Observe que se a quantidade de vezes que se deseja repetir alta
voc pode reduzir para uma quantidade menor, alm de ser
possvel de ser testada em um tempo razovel. No exemplo, o
algoritmo pretende repetir as operaes 10 vezes, o que no to
grande, mas se fossem 100, 1000 ou mais vezes, poderamos
diminuir a quantidade para um valor menor, tal como, 4 ou 5
vezes, apenas para efeito de teste.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

17

Toda entrada de dados (comando leia) indica que um valor ser


inserido pelo usurio, ou seja, no possvel determinar qual ser
esse valor, ento, cada vez que um comando leia for encontrado
necessrio determinar um valor qualquer para a varivel de
entrada (chutar o valor). No exemplo, como adotamos repetir
10 vezes, sero lidos 10 nmeros, que podem ser 5, 6, 2, 1, 8, 9, 3,
7, 10 e 4.
Seguir o fluxograma comando por comando, do incio at o fim,
fazendo o que os comandos determinem o que deve ser feito e
seguindo sempre a ordem de fluxo de comandos. S parar o teste
quando encontrar o comando fimalgoritmo.
Cada vez que ocorrer um comando de entrada de dados ou de
atribuio de valor, deve-se alterar na tabela o valor da varivel
utilizada pelo comando. Lembre que esses comandos substituem
o valor anteriormente armazenado na varivel.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

18

06/05/2015

Quando ocorrerem comandos que tenham condies a serem


testadas, testar a condio e descobrir por qual fluxo seguir (lado
S ou lado N). Comandos de apresentao de dados (comando
escreva) apresentam o contedo da varivel correspondente
naquele momento.
Chegando ao final do algoritmo, conferir se foram apresentados
os resultados corretos (esperados).
Com isso possvel garantir se o algoritmo funciona corretamente
ou no.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

19

Aproveitando o exemplo prtico apresentado, vamos realizar o teste de mesa:


Algoritmo
CONT
1
algoritmo "Repetio"
var
NUM
0
CONT : inteiro
SOMA
0
NUM, SOMA, MEDIA : real
MEDIA
0
inicio
CONT <- 1
SOMA <- 0
MEDIA <- 0
enquanto (CONT <= 10) faca
escreva("Digite um nmero [", CONT, "]:")
leia (NUM)
SOMA <- SOMA + NUM
CONT <- CONT + 1
fimenquanto
MEDIA <- SOMA / (CONT - 1)
escreval ("A soma total :", SOMA)
escreval ("A mdia :", MEDIA)
fimalgoritmo
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

20

10

06/05/2015

5. Repetio controlada pelo valor digitado pelo Usurio.


Em algumas situaes, quem cria o algoritmo no sabe a quantidade de vezes que os comandos
devem ser repetidos, mas ela pode solicitar que o usurio determine a quantidade de vezes, por
intermdio de um comando leia.
algoritmo "Repetio"
var
CONT, QTD : inteiro
NUM, SOMA, MEDIA : real
inicio
CONT <- 0
SOMA <- 0
escreva("Digite a quantidade de vezes a serem repetidas:")
leia (QTD)
enquanto (CONT < QTD) faca
CONT
0
escreva("Digite o valor:")
NUM
0
leia (NUM)
SOMA <- SOMA + NUM
SOMA
0
CONT <- CONT + 1
MEDIA
0
fimenquanto
MEDIA <- SOMA / (CONT)
QTD
escreval ("Soma:",SOMA)
escreval ("Mdia:",MEDIA)
Fimalgoritmo
Obs: Os comandos sero repetidos QTD vezes.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

21

6. Repetio controlada por FLAG, Sentinela ou Critrio de Encerramento.


Em outras situaes, no sabemos com exatido a quantidade de vezes que sero repetidas as
instrues e utilizamos um FLAG ou Sentinela ou Critrio de Encerramento.
FLAG - O uso do FLAG permite identificar atravs de uma varivel, se continuaremos ou no.
Exemplo:
CONTINUA S
enquanto (CONTINUA = S) faca
...
escreva(Deseja continuar [S/N]?)
leia(CONTINUA)
fimenquanto

Sentinela - O uso da varivel Sentinela, identifica um determinado valor a ser indicado para o
trmino da repetio.
Exemplo:
escreva(Digite o nmero:?)
leia(NUM)
enquanto (NUM <> 0) faca
...
escreva(Digite o nmero:?)
leia(NUM)
fimenquanto
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

22

11

06/05/2015

Critrio de Encerramento Uma varivel controla se os valores esto dentro de um critrio prestabelecido.
Exemplo 1 (temperaturas maiores do que -40 C E menores do que 100 C) :
escreva(Digite a temperatura:)
leia(TEMP)
enquanto (TEMP > -40 E TEMP < 100) faca
...
escreva(Digite a temperatura:)
leia(TEMP)
fimenquanto
Exemplo 2(nmero positivos) :
escreva(Digite o nmero:)
leia(NUM)
enquanto (NUM >= 0) faca
...
escreva(Digite o nmero:)
leia(NUM)
fimenquanto

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

23

Exemplo prtico: Um algoritmo para receber uma quantidade de nmeros inteiros positivos diferentes
de zero e exibir a mdia e a soma dos nmeros digitados:
algoritmo "Repetio"
CONT
0
var
CONT : inteiro
NUM
0
NUM, SOMA, MEDIA : real
SOMA
0
inicio
CONT <- 0
MEDIA
0
SOMA <- 0
escreva("Digite um nmero positivo diferente de zero:")
leia (NUM)
enquanto (NUM > 0) faca
SOMA <- SOMA + NUM
CONT <- CONT + 1
escreva("Digite um nmero positivo diferente de zero:")
leia (NUM)
fimenquanto
MEDIA <- SOMA / (CONT)
escreval ("Soma:",SOMA)
escreval ("Mdia:",MEDIA)
Fimalgoritmo
//Obs: Os comandos sero repetidos at que seja digitado 0 ou nmero negativo.

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

24

12

06/05/2015

Exerccios
1. Faa um algoritmo que solicite uma sequncia de 20 nmeros e
apresente a soma e a mdia dos nmeros digitados;
2. Faa um algoritmo que solicite um conjunto de nmeros at que
seja digitado 9999 e apresente a soma e a mdia dos nmeros
vlidos;
3. Faa um algoritmo que solicite um conjunto de temperaturas
entre -10C e 45C e apresente a soma e a mdia das
temperaturas vlidas, o programa deve encerrar quando for
digitada alguma temperatura invlida;
4. Faa um algoritmo que solicite um conjunto de temperaturas e
apresente a soma e a mdia das temperaturas, o programa deve
perguntar ao usurio se o mesmo deseja continuar ou no a cada
temperatura digitada.
06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

25

FIM da Aula 8

06/05/2015

Prof. Dr. Eng Carlos A. Sics A. do Nascimento

26

13

Você também pode gostar