43
ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO ESTRUTURAS DE REPETIÇÃO Programação Básica Prof. Alexandre Bendlin Aula 06

15080590 aula6-estrutura-de-repeticao

Embed Size (px)

DESCRIPTION

Estrutura de Dados

Citation preview

Page 1: 15080590 aula6-estrutura-de-repeticao

ESTRUTURAS DE CONTROLE

ESTRUTURAS DE REPETIÇÃOESTRUTURAS DE REPETIÇÃO

Programação BásicaProf. Alexandre Bendlin

Aula 06

Page 2: 15080590 aula6-estrutura-de-repeticao

2

Estruturas de Controle● ESTRUTURA SEQUENCIAL● ESTRUTURAS CONDICIONAIS

– Estrutura Condicional Simples– Estrutura Condicional Composta– Seleção entre duas ou mais Seqüências de

Comandos● ESTRUTURA DE REPETIÇÃO

– Repetição com Teste no Início– Repetição com Teste no Final– Repetição Contada

Page 3: 15080590 aula6-estrutura-de-repeticao

3

Estruturas de Controle● ESTRUTURA SEQUENCIAL● ESTRUTURAS CONDICIONAIS

– Estrutura Condicional Simples– Estrutura Condicional Composta– Seleção entre duas ou mais Seqüências de

Comandos● ESTRUTURA DE REPETIÇÃO

– Repetição com Teste no Início– Repetição com Teste no Final– Repetição Contada

Page 4: 15080590 aula6-estrutura-de-repeticao

4

Estruturas de Controle● ESTRUTURA SEQUENCIAL● ESTRUTURAS CONDICIONAIS

– Estrutura Condicional Simples– Estrutura Condicional Composta– Seleção entre duas ou mais Seqüências de

Comandos● ESTRUTURA DE REPETIÇÃO

– Repetição com Teste no Início– Repetição com Teste no Final– Repetição Contada

● Permite que uma seqüência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita.

Page 5: 15080590 aula6-estrutura-de-repeticao

5

Repetição com Repetição com TesteTeste nono InícioInício

Page 6: 15080590 aula6-estrutura-de-repeticao

6

enquanto (<condição>) faça comando

fim enquanto

?sim

não

Fluxograma Linguagem Algoritmica

Repetição com Repetição com TesteTeste nono InícioInício formas de representação no algorítmo

Page 7: 15080590 aula6-estrutura-de-repeticao

7

Repetição com Repetição com TesteTeste nono InícioInício PASCALPASCAL

while (<expressão lógica>) do comando;

Page 8: 15080590 aula6-estrutura-de-repeticao

8

Repetição com Repetição com TesteTeste nono InícioInício ExemploExemplo

Desenvolver algorítmo para o problema:Ler a variável SEXO. Enquanto o valor fornecido não for correto (M,m,F,f) exibir mensagem de erro e solicitar novamente a leitura.Quando o valor fornecido estiver correto, ler a variável ANO.Escrever ANO e SEXO

Page 9: 15080590 aula6-estrutura-de-repeticao

9

Repetição com Repetição com TesteTeste nono InícioInício ExemploExemplo

programa TESTE1declaraçõesinicio ler SEXO enquanto SEXO # (f, F, m, M) faça início escrever “ERRO” ler (SEXO) fim fim enquanto ler ANO escrever (ANO,SEXO)fim

Page 10: 15080590 aula6-estrutura-de-repeticao

10

Repetição com Repetição com TesteTeste nono InícioInício ExemploExemplo

programa TESTE1declaraçõesinicio ler SEXO enquanto SEXO # (f, F, m, M) faça início escrever “ERRO” ler (SEXO) fim fim enquanto ler ANO escrever (ANO,SEXO)fim

Esta variável de controledeve ter um valor conhecidoNeste caso ela foi lida antes

A variável de controle deve ter seu valor modificado

dentro do “laço”.Neste caso a variável

foi lida novamente

laço

Page 11: 15080590 aula6-estrutura-de-repeticao

11

Exemploprogram TESTE1;var intAno: integer; chrSexo: char;begin write('SEXO: '); readln(chrSexo); while ((chrSexo <> 'F') and (chrSexo <> 'M') and (chrSexo <> 'f') and (chrSexo <> 'm')) do begin writeln('ERRO!!!'); write('Sexo: '); readln(chrSexo); end; writeln; write('Ano: '); readln(intAno); writeln; writeln('':14,'SAIDA'); writeln('Ano: ', intAno:4, '':12, 'Sexo: ', chrSexo); readln;end.

Page 12: 15080590 aula6-estrutura-de-repeticao

12

Exemplo

SEXO: GERRO!!!SEXO: BERRO!!!SEXO: f

ANO: 2002

SAIDAANO = 2002 SEXO: f

Page 13: 15080590 aula6-estrutura-de-repeticao

13

Exemplo

SEXO: GERRO!!!SEXO: BERRO!!!SEXO: f

ANO: 2002

SAIDAANO = 2002 SEXO: f

Seria melhor se a mensagem de errofosse apagada e o

cursor voltasse a pulsar o mesmo lugar

Page 14: 15080590 aula6-estrutura-de-repeticao

14

program TESTE1;uses CRT;var intAno: integer; chrSexo: char;begin clrscr; write('Sexo: '); readln(chrSexo); while ((chrSexo<>'F') and (chrSexo<>'M') and (chrSexo<>'f') and (chrSexo<>'m')) do begin gotoxy(1,2); write('Sexo invalido! Pressione <enter> para continuar.'); readln; gotoxy(7,1); write('':10); gotoxy(1,2); write('':49); gotoxy(7,1); readln(chrSexo); end; write('Ano: '); readln(intAno); writeln; writeln('':14, 'SAIDA'); writeln('Ano: ', intAno:4, '':12, 'Sexo: ', chrSexo); readln;end.

Page 15: 15080590 aula6-estrutura-de-repeticao

15

program TESTE1;uses CRT;var intAno: integer; chrSexo: char;begin clrscr; write('Sexo: '); readln(chrSexo); while ((chrSexo<>'F') and (chrSexo<>'M') and (chrSexo<>'f') and (chrSexo<>'m')) do begin gotoxy(1,2); write('Sexo invalido! Pressione <enter> para continuar.'); readln; gotoxy(7,1); write('':10); gotoxy(1,2); write('':49); gotoxy(7,1); readln(chrSexo); end; write('Ano: '); readln(intAno); writeln; writeln('':14, 'SAIDA'); writeln('Ano: ', intAno:4, '':12, 'Sexo: ', chrSexo); readln;end.

Este comando desvia o cursor para

a coluna e linha indicada

Page 16: 15080590 aula6-estrutura-de-repeticao

16

Comando gotoxy

● Este comando desvia o cursor para a coluna e linha indicada

● Deve ser colocado uses CRT● Não funciona para saída em impressora

gotoxy(coluna, linha);

Page 17: 15080590 aula6-estrutura-de-repeticao

17

Desenvolver algorítmo para o problema:● Ler um conjunto de valores correspondentes aos

pontos que alunos obtiveram em um teste. ● Quando o valor fornecido for um número negativo,

isto é um sinal que não existem mais pontos para serem lidos.

● Contar quantos alunos fizeram o teste.● Escrever o total de alunos

Repetição com Repetição com TesteTeste nono InícioInício Contador/AcumuladorContador/Acumulador Exemplo Exemplo

Page 18: 15080590 aula6-estrutura-de-repeticao

18

Repetição com Repetição com TesteTeste nono InícioInício Contador/AcumuladorContador/Acumulador Exemplo Exemplo

programa TESTE2declaraçõesinicio N←0 ler PONTOS enquanto (PONTOS > 0) faça início N←N+1 ler PONTOS fim fim enquanto escrever (N)fim

Page 19: 15080590 aula6-estrutura-de-repeticao

19

Repetição com Repetição com TesteTeste nono InícioInício Contador/AcumuladorContador/Acumulador Exemplo Exemplo

programa TESTE2declaraçõesinicio N←0 ler PONTOS enquanto PONTOS > 0 faça início N←N+1 ler PONTOS fim fim enquanto escrever (N)fim

NNcontador/acumulador

NN deve ser zerado e então incrementado em 1 dentro do comando de repetição

Page 20: 15080590 aula6-estrutura-de-repeticao

20

program TESTE2;var intPontos {nota do teste}, intN {total de alunos}: integer;begin intN := 0; writeln('FORNECA OS PONTOS OBTIDOS'); readln(intPontos); while (intPontos > 0) do begin intN := intN + 1; readln(intPontos); end; writeln('TOTAL DE ALUNOS: ', intN:2); readln;end.

ExemploExemplo

Page 21: 15080590 aula6-estrutura-de-repeticao

21

Desenvolver algorítmo para o problema:● Ler um conjunto de valores correspondentes aos

pontos que alunos obtiveram em um teste. ● Quando o valor fornecido for um número negativo,

isto é um sinal que não existem mais pontos para serem lidos.

● Contar e escrever quantos alunos fizeram o teste.● Contar e escrever quantos alunos tiveram nota

baixa (PONTOS < 50)● Contar e escrever quantos alunos tiveram nota alta

(100≤PONTOS ≤ 150)

Repetição com Repetição com TesteTeste nono InícioInício Contador/AcumuladorContador/Acumulador Exemplo Exemplo

Page 22: 15080590 aula6-estrutura-de-repeticao

22

Desenvolver algorítmo para o problema:● Ler um conjunto de valores correspondentes aos

pontos que alunos obtiveram em um teste. ● Quando o valor fornecido for um número negativo,

isto é um sinal que não existem mais pontos para serem lidos.

● Contar e escrever quantos alunos fizeram o teste.● Contar e escrever quantos alunos tiveram nota

baixa (PONTOS < 50)● Contar e escrever quantos alunos tiveram nota alta

(100≤PONTOS ≤ 150)

Repetição com Repetição com TesteTeste nono InícioInício Contador/AcumuladorContador/Acumulador Exemplo Exemplo

São necessários 3 contadores

Page 23: 15080590 aula6-estrutura-de-repeticao

23

programa TESTE2declaraçõesinicio N← 0 ALTAS ← 0 BAIXAS ← 0 ler PONTOS enquanto (PONTOS ≥ 0) faça início se (PONTOS ≥ 100) então ALTAS ← ALTAS + 1 senão se (PONTOS < 50) então BAIXAS ← BAIXAS +1 N←N+1 ler PONTOS fim fim enquanto escrever (N,BAIXAS, ALTAS)fim

ALG

OR

ÍTM

OA

LGO

RÍT

MO

Page 24: 15080590 aula6-estrutura-de-repeticao

24

programa TESTE2declaraçõesinicio N← 0 ALTAS ← 0 BAIXAS ← 0 ler PONTOS enquanto (PONTOS ≥ 0) faça início se (PONTOS ≥ 100) então ALTAS ← ALTAS + 1 senão se (PONTOS < 50) então BAIXAS ← BAIXAS +1 N←N+1 ler PONTOS fim fim enquanto escrever (N,BAIXAS, ALTAS)fim

ALG

OR

ÍTM

OA

LGO

RÍT

MO

3 contadores

Page 25: 15080590 aula6-estrutura-de-repeticao

25

program TESTE2;var intN, intAltas, intBaixas, intPontos: integer;begin intN := 0; intAltas := 0; intBaixas := 0; writeln('FORNECA OS PONTOS OBTIDOS'); readln(intPontos); while (intPontos >= 0) do begin if (intPontos >= 100) then intAltas := intAltas + 1 else if (intPontos < 50) then intBaixas := intBaixas + 1; intN := intN + 1; readln(intPontos); end; writeln('Numero de Notas: ', intN:2); writeln('Numero de Notas Altas: ', intAltas:2); writeln('Numero de Notas Baixas: ', intBaixas:2); readln;end.

PASC

AL

PASC

AL

Page 26: 15080590 aula6-estrutura-de-repeticao

26

Repetição com Repetição com TesteTeste nono FinalFinal

Page 27: 15080590 aula6-estrutura-de-repeticao

27

repita comando 1 comando 2

comando naté <condição>

?sim

não

Fluxograma Linguagem Algoritmica

Repetição com Repetição com TesteTeste nono Final Final formas de representação no algorítmo

...

C1

C2

Cn

Page 28: 15080590 aula6-estrutura-de-repeticao

28

Repetição com Repetição com TesteTeste nono FinalFinal PASCALPASCAL

repeat <seqüência de comandos>until (<expressão lógica>);

Page 29: 15080590 aula6-estrutura-de-repeticao

29

Repetição com Repetição com TesteTeste nono FinalFinal ExemploExemplo

Desenvolver algorítmo para o problema:

Calcular e exibir o valor da série.

5099...

47

35

23

11 +++++=S

Page 30: 15080590 aula6-estrutura-de-repeticao

30

programa TESTE4declaraçõesinicio S ← 0 N ← 1 D ← 1 repita S ← S + N ← N+2 D ← D+1 até que (D > 50) escrever (S)fim

ALG

OR

ÍTM

OA

LGO

RÍT

MO

DN

Inicializa a somatória

Inicializa o numerador

Inicializa o denominador

Calcula os termos da série

Calcula o próximo numerador

Calcula o próximo denominador

Page 31: 15080590 aula6-estrutura-de-repeticao

31

program TESTE4;var intN, intD: integer; ralS: real;begin ralS := 0; intN := 1; intD := 1; repeat ralS := ralS + (intN / intD); intN := intN + 2; intD := intD + 1; until (intD > 50); writeln('Soma da Serie: ', ralS:5:2); readln;end.

PRO

GR

AM

APR

OG

RA

MA

Page 32: 15080590 aula6-estrutura-de-repeticao

32

Repetição Repetição ContadaContadaeste comando deve ser usado quando se sabe a

priori o número de repetições

Page 33: 15080590 aula6-estrutura-de-repeticao

33

Para C de I até F faça comando

fim para sim

não

Fluxograma Linguagem Algoritmica

Repetição Repetição ContadaContada formas de representação no algorítmo

Comando

C de I até F

Page 34: 15080590 aula6-estrutura-de-repeticao

34

Repetição Repetição ContadaContada

C - variável de controleI - valor inicial da variávelF - valor final da variável

● OBSERVAÇÕES (teóricamente)

– C, I e F não devem ser modificadas– a variável C fica indefinida ao terminar as

repetições

Page 35: 15080590 aula6-estrutura-de-repeticao

35

Repetição Contada Repetição Contada PASCALPASCAL

for <var.controle>:=<val.inicial> to <val.final> do <comando>;

for <var.controle>:=<val.final> downto <val.inicial> do <comando>;

A variável de controle assume o valor inicial e automaticamente é incrementada em 1, a cada repetição, até o valor final.

A variável de controle assume o valor final e automaticamente é incrementada em -1, a cada repetição, até o valor inicial.

Page 36: 15080590 aula6-estrutura-de-repeticao

36

Repetição Repetição ContadaContada ExemploExemplo

Desenvolver algorítmo para o problema:

Dado um conjunto de N números, calcular a média aritimética dos mesmos.

Page 37: 15080590 aula6-estrutura-de-repeticao

37

programa TESTE6declaraçõesinicio ler N S ← 0 para I de 1 até N faça ler X S ← S + X fim para escrever (S/N)fim

ALG

OR

ÍTM

OA

LGO

RÍT

MO

quantidade de notas

nota

Page 38: 15080590 aula6-estrutura-de-repeticao

38

program TESTE6;uses crt;var intN, intI: integer; ralS, ralX: real;begin clrscr; write('Forneca o numero de notas: '); readln(intN); writeln; ralS := 0; for intI := 1 to intN do begin write('Forneca a ', intI:1, 'a. nota: '); readln(ralX); ralS := ralS + ralX; end; writeln('Media: ', (ralS/intN):5:2); readlnend.

PRO

GR

AM

APR

OG

RA

MA

Page 39: 15080590 aula6-estrutura-de-repeticao

39

Repetição Repetição ContadaContada ExemploExemplo

Desenvolver algorítmo para o problema:

Ler um número inteiro ≥ 0 e calcular seu fatorial.

Page 40: 15080590 aula6-estrutura-de-repeticao

40

programa TESTE7declaraçõesinicio ler N FAT← 1 para I de 1 até N faça FAT ← FAT * I fim para escrever (FAT)fim

ALG

OR

ÍTM

OA

LGO

RÍT

MO

Inicializa o acumulador

Page 41: 15080590 aula6-estrutura-de-repeticao

41

program TESTE7;uses crt;var intN, intI: integer; ralFat: real;begin clrscr; write('Forneca um numero inteiro maior ou igual a zero:'); readln(intN); writeln; ralFat := 1; for intI := 1 to intN do begin ralFat := ralFat * intI; end; writeln('Fatorial: ', ralFat:5:2); readln;end.

PRO

GR

AM

APR

OG

RA

MA

Page 42: 15080590 aula6-estrutura-de-repeticao

42

Exercícios● Faça um algoritmo para mostrar se uma pessoa está com

seu peso na faixa normal, sobrepeso ou obesa. Com base no peso e altura de um indivíduo, consegue-se obter o índice de massa corporal (IMC). Ele é calculado dividindo-se o peso do paciente em kilogramas (Kg) pela sua altura em metros elevada ao quadrado (quadrado de sua altura). IMC=P/A2. O valor assim obtido estabelece o diagnóstico da obesidade da seguinte forma: IMC < 18: Muito magro; IMC entre 18 a 24,9: Peso saudável; entre 25 a 29,9: Sobrepeso; acima de 30: Obesidade.

● Inclua um loop para permitir que o cálculo seja feito para diversas pessoas. Use repeat until como condição de parada

Page 43: 15080590 aula6-estrutura-de-repeticao

43

Exercícios● Faça um algoritmo para mostrar a tabuada de um

número n (use for para iterar pelos 10 números).

● Inclua um loop para permitir que o cálculo seja feito para diversas tabuadas. Use repeat until como condição de parada