15080590 aula6-estrutura-de-repeticao
Post on 09-Jul-2015
22 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related