146 pág.

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