INTRODUÇÃO A
LINGUAGEM PASCAL
Profº.: Tácito Henrique
tacito.graca@gmail.com
CEMA – Centro Educacional Miguel Alves
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
ESTRUTURAS DE REPETIÇÃO
for;
while;
Repeat until;
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Aula 04 estruturas de repetição

  • 1.
    INTRODUÇÃO A LINGUAGEM PASCAL Profº.:Tácito Henrique tacito.graca@gmail.com CEMA – Centro Educacional Miguel Alves Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 2.
    ESTRUTURAS DE REPETIÇÃO for; while; Repeatuntil; Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 3.
    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
  • 4.
    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
  • 5.
    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
  • 6.
    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
  • 7.
    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
  • 8.
    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
  • 9.
    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
  • 10.
    O comando for ExercíciosResolvidos 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
  • 11.
    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
  • 12.
    O comando while ExercíciosResolvidos 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
  • 13.
    Comando while • Onú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
  • 14.
    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
  • 15.
    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
  • 16.
    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
  • 17.
    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
  • 18.
    Exercícios Resolvidos Exercício 1 {Programaque 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
  • 19.
    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
  • 20.
    Exercícios Resolvidos Exercício 2 programMediaPreco 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
  • 21.
    Exercícios Resolvidos Exercício 3 programtabuada; 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
  • 22.
    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