aula 04 estruturas de repetição

22
INTRODUÇÃO A LINGUAGEM PASCAL Profº.: Tácito Henrique [email protected] CEMA Centro Educacional Miguel Alves Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Upload: tacito-graca

Post on 08-Jul-2015

720 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Aula 04   estruturas de repetição

INTRODUÇÃO A

LINGUAGEM PASCAL Profº.: Tácito Henrique

[email protected]

CEMA – Centro Educacional Miguel Alves

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 2: Aula 04   estruturas de repetição

ESTRUTURAS DE REPETIÇÃO for;

while;

Repeat until;

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 3: Aula 04   estruturas de repetição

O que é uma estrutura de repetição?

• Exemplo “Fahrenheit” //Programa (muito ruim) que gera uma tabela de conversão de temperaturas em graus Fahrenheit para

graus Celsius

program TabelaDeConversaoDeTemperatura

var fahrenheit : integer;

begin

writeln(Tabela de conversão graus Fahrenheit/graus Celsius');

writeln('-------------------------------------------------');

writeln(' Fahrenheit | Celsius');

writeln('-------------------------------------------------');

Fahrenheit = 10;

writeln(' ',Fahrenheit, ' | ', 5.0*(Fahrenheit - 32)/9);

Fahrenheit = 11;

writeln(' ',Fahrenheit, ' | ', 5.0*(Fahrenheit - 32)/9);

. . .

{Mais "uma porção" de comandos!!!}

Fahrenheit = 80;

writeln(' ',Fahrenheit, ' | ', 5.0*(fahrenheit - 32)/9);

end.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 4: Aula 04   estruturas de repetição

O que é uma estrutura de repetição?

• Existem momentos na programação onde numa

determinada parte do programa precisa ser executada

diversas vezes.

• Toda vez que precisamos repetir determinado número de

vezes uma determinada sequência de comandos,

usamos um laço de repetição.

• Ele corresponde a repetição do mesmo trecho um

número X de vezes sem ter de escrever o mesmo trecho

X vezes

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 5: Aula 04   estruturas de repetição

O que é uma estrutura de repetição?

• A linguagem Pascal possui os comandos:

• for;

• while do

• repeat until

• São chamados estruturas de repetição ou laços, cujas

execuções redundam em repetições da execução de uma

determinada sequência de comandos.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 6: Aula 04   estruturas de repetição

O comando for

• O comando for é uma estrutura de repetição que repete a

execução de uma dada sequência de comandos um

número de vezes que pode ser determinado pelo próprio

programa

• Sintaxe

for Variável := Expressão1 to Expressão2 do

seqüência de comandos

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 7: Aula 04   estruturas de repetição

O comando for

• A semântica deste comando é muito simples:

• Quando executado, o valor da Expressao1 é armazenado na

variável de controle e o conteúdo desta (Vc) é comparado com o

valor da Expressao2 (VFinal); se Vc <=VFinal, a sequência de

comandos é executada.

• Em seguida o conteúdo da variável de controle é automaticamente

incrementado de uma unidade (+1) e nova comparação é feita com

VFinal. Isto tudo se repete até que o conteúdo da variável de

controle seja maior que o valor da Expressao2.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 8: Aula 04   estruturas de repetição

O comando for

• Problema • O programa deverá exibir na tela uma sequência de números reais

começando do número 1 até o número 10.

• O programa não deve ter interação com o usuário.

{Programa que exibe de 1 a 10}

program De1a10;

var i : integer;

begin

for i := 1 to 10 do

write(i, ‘ ’);

end.

exibe na tela

1 2 3 4 5 6 7 8 9 10

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 9: Aula 04   estruturas de repetição

O comando for

• Se, por alguma razão, se pretende que a variável de controle seja decrementada e, portanto, que o Valor final seja menor que o Valor inicial, deve-se substituir a reposição to pela "preposição" downto.

• Assim:

var i : integer;

begin

for i := 5 downto 1 do

write(i, ' ');

end.

exibe na tela:

5 4 3 2 1

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 10: Aula 04   estruturas de repetição

O comando for Exercícios Resolvidos 1

{Programa para gerar uma tabela de conversão de temperaturas em graus Fahrenheit para graus Celsius}

program TabelaDeConversaoFarenheitCelsius;

uses Crt;

var Farenheit : integer;

Celsius: real;

begin

ClrScr;

writeln('Tabela de conversao graus Farenheit/graus Celsius');

writeln('-------------------------------------------------');

writeln(' Farenheit | Celsius');

writeln('-------------------------------------------------');

for Farenheit := 20 to 80 do

begin

Celsius := 5.0*(Farenheit - 32)/9;

writeln(' ', Farenheit,' ', Celsius:0:2);

end;

end.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 11: Aula 04   estruturas de repetição

O comando while • Quando devemos utilizar o comando for?

• O comando for deve ser utilizado quando o número de repetições de execução de uma sequência de comandos é conhecido a priori.

• Quando isto não acontece, deve-se usar o comando while, que possui a seguinte sintaxe:

while Expressão lógica do

sequência de comandos

Semântica:

• Durante a execução, a Expressão lógica é avaliada. • Se for verdadeira, a sequência de comandos é executada e o processamento retorna ao próprio

comando while.

• Se for falsa, a sequência não é executada e o processamento se transfere para o comando seguinte.

• Cuidado com os loops infinitos, toda estrutura deve possuir uma condição de parada válida e possível de ser atingida.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 12: Aula 04   estruturas de repetição

O comando while Exercícios Resolvidos 2

• Crie um programa que calcule as notas médias de 5 alunos. Deve pegar duas notas e exibir o resultado por aluno.

program mediaclasse;

var

nota1, nota2, media : real; //declaração das variáveis do algoritmo

contador : integer; //declaração do contador

Begin

contador := 1; //atribuição de valor ao contador

repeat//início da estrutura de repetição

writeln ('Digite as notas do aluno ',contador,':');

writeln ('Primeira nota:');

read (nota1);

writeln ('Segunda nota:');

read (nota2);

media := (nota1 + nota2)/2;

writeln ('O aluno ',contador,' teve média igual a: ',media);

contador := contador + 1;

until contador > 5;

end.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 13: Aula 04   estruturas de repetição

Comando while

• O número de execuções da sequência de comandos

associada a um comando while pode ser zero.

• Há situações em que é importante se garantir a execução

de uma sequência de comandos pelo menos uma vez.

• Uma delas é a verificação da consistência dos dados

de entrada.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 14: Aula 04   estruturas de repetição

Comando while

• Benefícios • Garantia dos resultados

• Habilita o programa recusar dados incompatíveis com a entrada do programa

Exemplo

Caso seu programa necessite receber um mês do ano, sabemos que o valor deve estar entre 1 e 12. Uma solução seria:

var Mes : integer;

begin

writeln('Digite o mes: ');

readln(Mes);

while (Mes < 1) or (Mes > 12)

begin

writeln(Chr(7), 'Digitacao errada! Digite de novo');

writeln('Digite o mes: ');

readln(Mes);

end;

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 15: Aula 04   estruturas de repetição

Comando repeat until

• O comando repeat until define uma estrutura de repetição que garante que uma sequência de comandos

• seja executada pelo menos uma vez. Sua sintaxe é

repeat

sequência de comandos;

until Expressão lógica;

• Semântica:

• A sequência de comandos é executada e a Expressão é avaliada;

• se o valor da Expressão for false, a sequência de comandos é novamente executada e tudo se repete;

• do contrário, o comando que segue a estrutura é executado.

• Isto significa que a execução da sequência de comandos será repetida até que a Expressão lógica seja verdadeira.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 16: Aula 04   estruturas de repetição

Comando repeat until

• Pode-se também utilizar o comando repeat until para execuções sucessivas de um programa. Neste caso, é comum se fazer uma pergunta do tipo Deseja continuar (S/N)?

var Resp : char;

. . .

repeat

{sequência de comandos do programa propriamente dito}

writeln('Deseja continuar (S/N)?');

readln(Resp);

until UpCase(Resp) = 'N';

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 17: Aula 04   estruturas de repetição

Exercícios Resolvidos Exercício 1

• Consideremos um programa para determinar a soma dos

n primeiros números pares positivos, n informado pelo

usuário.

• Naturalmente, o sistema pode gerar os números pares

que se pretende somar, através do comando Par := 2 e

da repetição do comando Par = Par + 2.

• Para que o sistema gere o próximo par, o anterior já

deverá ter sido somado. Isto pode ser feito através do

comando Soma = 0 e da repetição do comando Soma =

Soma + Par. Temos então o seguinte programa.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 18: Aula 04   estruturas de repetição

Exercícios Resolvidos Exercício 1

{Programa que soma os n primeiros números pares, n dado}

program SomaPares;

var Soma, Par, n, i : integer;

begin

write('Digite o valor de n: ');

readln(n);

Par := 2;

Soma := 0;

for i := 1 to n do

begin

Soma := Soma + Par;

Par := Par + 2;

end;

writeln('Soma dos ', n, ' primeiros números pares: ', Soma);

end.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 19: Aula 04   estruturas de repetição

Exercícios Resolvidos Exercício 2

• Faça um algoritmo que receba o preço de custo e o preço

de venda de 10 produtos.

• Mostre como resultado se houve lucro, prejuízo ou

empate para cada produto.

• Informe media de preço de custo e do preço de venda.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 20: Aula 04   estruturas de repetição

Exercícios Resolvidos Exercício 2

program MediaPreco

var

x, i: integer;

precoVenda, precoCusto: real;

mediaCusto, mediaVenda: real;

begin

// Seção de Comandos

for i := 1 to 10 do

begin

write('Digite o preço de custo: ');

read(precoCusto);

write('Digite o preço de venda: ');

read(precoVenda);

mediaCusto := mediaCusto + precoCusto;

mediaVenda := mediaVenda + precoVenda;

if precoVenda < precoCusto then

writeln('Houve prejuízo na venda')

else

if precoVenda = precoCusto then

writeln('Houve empate na venda');

if precoVenda > precoCusto

then

writeln('Houve lucro na venda');

end;

writeln('A média de preço de custo foi: ',mediaCusto/10);

writeln('A média de preço de venda foi: ',mediaVenda/10);

end.

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 21: Aula 04   estruturas de repetição

Exercícios Resolvidos Exercício 3

program tabuada;

var

num:real;

cont:integer;

begin

repeat

clrscr;

write('Digite um número para ver sua tabuada de multiplicação ');

read(num);

cont:=1;

while cont<=10 do //temos aqui uma repetição dentro de outra

begin

writeln(num:4:0,' x ',cont,' = ',(num*cont):6:0);

cont:=cont+1; //a cada repetição o cont aumenta +1

end;

readkey; {parada para ver o resultado até ser teclado algo}

until num=0; {condição para parar a repetição principal}

clrscr;

write('Foi digitado o número 0! programa encerrado!');

readkey;

end

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Page 22: Aula 04   estruturas de repetição

Exercícios de Fixação

• Exercício 01

• Escrever um algoritmo que gere a tabela de conversão de temperaturas:

• De Celsius para Fahrenheit

• De Celsius para Kelvin

• De Kelvin para Fahrenheit

• O programa deverá permitir que o usuário possa escolher qual tabela será gerada e caso não

deseje gerar nenhuma sair.

• Exercício 02

• Escreva um algoritmo que receba vários números digitados pelo usuário, até que o usuário digite 0.

Ao digitar 0, o algoritmo termina.

• Exercício 03

• Escreva um algoritmo que solicite ao usuário que digite o seu login e a sua senha.

• Caso o login e a senha estejam errados, pedir para digitar novamente.

• Caso estejam corretos, escrever: “Login efetuado com sucesso.” O login deve ser o seu nome e a senha deve

ser a palavra “digital”.

• Exercício 04

• Escreva um algoritmo que mostre ao usuário os sabores de sorvete de uma sorveteria o programa

deverá sempre exibir o menu até que uma das opções seja selecionada.

• (1) – Creme com Passas / (2) – Chocolate / (3) – Morango / (4) – Abacaxi / (5) - Coco

Profº.: Tácito Henrique ::: Introdução a linguagem Pascal