15080590 aula6-estrutura-de-repeticao

Post on 09-Jul-2015

22 views 0 download

description

Estrutura de Dados

Transcript of 15080590 aula6-estrutura-de-repeticao

ESTRUTURAS DE CONTROLE

ESTRUTURAS DE REPETIÇÃOESTRUTURAS DE REPETIÇÃO

Programação BásicaProf. Alexandre Bendlin

Aula 06

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

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

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.

5

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

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

7

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

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

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

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

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

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.

12

Exemplo

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

ANO: 2002

SAIDAANO = 2002 SEXO: f

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

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.

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

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);

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

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

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

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

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

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

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

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

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

26

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

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

28

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

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

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

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

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

32

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

priori o número de repetições

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

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

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.

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.

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

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

39

Repetição Repetição ContadaContada ExemploExemplo

Desenvolver algorítmo para o problema:

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

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

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

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

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