A maior rede de estudos do Brasil

Grátis
146 pág.
Programando com PASCAL - Jaime Evaristo

Pré-visualização | Página 18 de 50

a ≠ 0. Assim, um programa para encontrar as raízes reais (deixaremos o caso completo da determinação das 
raízes reais e complexas como exercício proposto) poderia ser o seguinte:
program EquacaoGrau2;
var a, b, c, x1, x2, Delta : real;
begin
writeln('Digite os coeficientes');
readln(a, b, c);
if a <> 0
then
begin
Delta := Sqr(b) - 4*a*c;
if Delta >= 0
then
begin
x1 := (-b + SqrT(Delta))/(2*a);
x2 := (-b - SqrT(Delta))/(2*a);
writeln('Raízes da equação: ', x1, ' e ', x2);
end
else
 writeln(' A equação dada não tem raízes reais')
 end
 else
writeln('A equação não e do segundo grau');
end.
8. Imaginemos agora uma escola que adote no seu processo de avaliação a realização de quatro 
avaliações bimestrais e que o regime de aprovação dos alunos seja o seguinte:
i) Se a média das avaliações bimestrais for superior ou igual a 7,0, o aluno está aprovado, com média 
final igual à média das avaliações bimestrais.
ii) Se a média das avaliações bimestrais for inferior a 5,0, o aluno está reprovado, com média final 
igual à média das avaliações bimestrais.
iii) Não ocorrendo nenhum dos casos anteriores, o aluno se submete a uma prova final e a sua média 
final será a média ponderada desta prova final (com peso 4) e a média das avaliações bimestrais (com peso 
6). Neste caso, o aluno estará aprovado se a sua média final for superior ou igual a 5,5.
O programa abaixo, recebendo as notas das avaliações bimestrais e, se for o caso, a nota da prova final, 
fornece a média final do aluno e a sua condição em relação à aprovação.
{Programa para verificar aprovação de um aluno}
program Avaliacao;
var Av1, Av2, Av3, Av4, MedBimestral, ProvaFinal, MedFinal : real;
begin
writeln('Digite as notas das avaliações bimestrais');
readln(Av1, Av2, Av3, Av4);
MedBimestral := (Av1 + Av2 + Av3 + Av4)/4;
MedFinal := MedBimestral;
if (MedBimestral < 7) and (MedBimestral >= 5)
then
begin
writeln('Digite a nota da prova final');
readln(ProvaFinal);
MedFinal := (MedBimestral * 6 + ProvaFinal * 4)/10;
end;
if MedFinal >= 5.5
then
writeln('Aluno aprovado com media final igual a ', MedFinal)
else
writeln('Aluno reprovado com media final igual a ', MedFinal);
end.
9. Para um exemplo de um programa que utiliza vários comandos if then else aninhados, suponhamos 
que uma empresa decidiu dar um aumento escalonado a seus funcionários de acordo com a seguinte regra: 
13% para os salários inferiores ou iguais a R$ 200,00; 11% para os salários situados entre R$ 200,0 e R$ 
400,00 (inclusive); 9 % para os salários entre R$ 400,00 e R$ 800,00 (inclusive) e 7% para os demais 
salários. Um programa que receba o salário atual de um funcionário e forneça o valor do seu novo salário 
poderia ser o seguinte. 
{Programa para atualizar salários}
program AtualizaSalarios;
var SalAtual, SalNovo, Aumento : real;
begin
writeln('Digite o valor do salário atual');
readln(SalAtual);
if SalAtual <= 200
then
Aumento := 1.13
else
if (SalAtual > 200) and (SalAtual <= 400)
then
Aumento := 1.11
else
if (SalAtual > 400) and (SalAtual <= 800)
then
Aumento := 1.09
else
Aumento := 1.07;
SalNovo := SalAtual * Aumento;
writeln('O salário de ', SalAtual:0:2,' será reajustado para ', SalNovo:0:2);
end.
10. Um outro exemplo que utiliza comandos de seleção aninhados e em que a escolha da expressão 
lógica que controlará o comando if then else é importante é um programa que determine o número de dias de 
um mês (um programa como este seria parte integrante de um programa que manipulasse datas). Como os 
meses de trinta dias são quatro e os de trinta e um dias são sete, usamos os primeiros para o controle do 
comando de seleção.
{Programa que determina o número de dias de um mês dado}
program NumeroDeDias;
var Mes, a, NumDias : integer;
begin
writeln('Digite o mês');
readln(Mes);
if (Mes = 4) or (Mes = 6) or (Mes = 9) or (Mes = 11)
then
NumDias := 30
else
if Mes = 2
then
begin
writeln('Digite o ano');
readln(a);
if (a mod 4 <> 0) or ((a mod 100 = 0) and (a mod 400 <> 0))
then
NumDias := 28
else
NumDias := 29;
end
else
NumDias := 31;
writeln('Numero de dias do mes dado: ', NumDias);
end.
3.6 Sobre o ponto-e-vírgula e a endentação
O leitor deve ter observado que os programas em Pascal contêm muitos ponto-e-vírgulas: no final da 
identificação do programa, no final da declaração de variáveis e em finais de comandos. O ponto-e-vírgula, 
na verdade, é obrigatoriamente utilizado para delimitar áreas de programas e separar comandos. Assim, ele é 
obrigatório entre dois comandos e facultativo entre um comando e o delimitador end. Para facilitar a 
automatização, mesmo os ponto-e-vírgulas facultativos estão sendo colocados. 
É necessário alertar que, como a opção else é parte integrante do comando if then else, antes de um else 
não existe ponto-e-vírgula. Quando, após um comando, o compilador encontra um ponto-e-vírgula, ele 
"entende" que o comando acabou e "procura" um outro comando ou um delimitador end. Encontrando uma 
opção else, ele acusa erro de compilação, pois else não é um comando. 
Mesmo considerando que os compiladores da Linguagem Pascal não consideram espaços em branco nem 
mudanças de linha, estamos procurando (salvo raras exceções por questões de diagramação) escrever cada 
instrução em uma linha e a seqüência vinculada à estrutura de decisão com uma tabulação diferente (uma 
"maior" tabulação) da tabulação em que estão postos o then e o else. Esta forma de se editar um programa, 
chamada indentação, deve ser praticada por todo programador, pois ela facilita sobremaneira a legibilidade 
dos programas. Se o programa que determina as raízes reais de uma equação do segundo grau fosse digitado 
da forma seguinte,
program EquacaoGrau2; var a, b, c, x1, x2, Delta 
: real; begin
writeln('Digite os coeficientes'); readln(a, b, c);
if a <> 0 then
begin Delta := Sqr(b) - 4*a*c;
if Delta >= 0 then
begin
x1 := (-b + SqrT(Delta))/(2*a); x2 := (-b - SqrT(Delta))/(2*a); writeln('As raízes da equação dada são ', x1, 
' e ', x2);
 end
 else writeln(' A equação dada não tem raízes reais') end else
writeln('A equação não e do segundo grau'); end.
ele seria executado da mesma forma, porém sua legibilidade seria muito prejudicada. Portanto, caro leitor, 
indente seus programas.
3.7 O comando case
Muitos programas são desenvolvidos de modo que eles possam realizar, de forma independente, várias 
tarefas. Por exemplo, um programa que gerencie um caixa eletrônico de um banco deve oferecer ao usuário 
algumas opções em relação à ação que ele pretende realizar na sua conta: a emissão do saldo atual, a emissão 
de um extrato, a realização de um saque ou a realização de um depósito. É comum que um programa que 
permita a realização de várias tarefas inicie apresentando ao usuário um menu de opções com a indicação das 
diversas tarefas que o programa pode executar e a permissão de que o usuário escolha a tarefa pretendida. 
Por exemplo, no caso do gerenciamento de um caixa eletrônico, poderíamos ter um programa que 
apresentasse, no início da sua execução, através de comandos de saída com mensagens, uma tela do tipo: 
1. Extrato
2. Saldo
3. Saque
4. Depósito
Digite sua opção>
Como são várias as opções disponíveis (cada uma delas com uma seqüência específica de comandos) e 
só uma das opções será a escolhida, é útil uma estrutura que decida entre várias seqüências de comandos qual 
vai ser executada. O comando case tem este objetivo e deve ser escrito com a sintaxe
case Expressao of
Lista de valores 1 : seqüência de comandos 1;
. . .
Lista de valores n : seqüência de comandos n;
else seqüência de comandos x
 end; 
onde Expressão é uma expressão cujo