Olá caros amigos, como foi a semana? Como de costume, espero que muito bem! Encerramos a parte do CASE, tudo entendido? Senão, mesmo processo, comente, volte algumas aulas, se ainda assim a dúvida permanecer, estamos por perto para ajudar.
Vamos à correção do exercício? Esse é bem legal, pois já começa a simular o mundo real de forma mais consistente. Vou tomar como exemplo o exercício feito pelo Rogério.
1 – Um plano de saúde solicita um sistema que obedeça a tabela de valores abaixo:
Idade | Valor (R$) |
0 a 4 anos | R$ 430,27 |
5 a 8 anos | R$ 325,18 |
9 a 16 anos | R$ 270,29 |
16 a 35 anos | R$ 189,90 |
35 a 60 anos | R$ 209,80 |
Acima de 60 anos | R$ 419,88 |
O operador digitará a idade do paciente e o sistema devolverá o valor a ser pago ao plano de saúde.
Resposta:
Program Pzim ;
var idade:integer;
Begin
writeln(‘Aula7:’);
writeln;
writeln(‘ Feito por Rogério Almeida’);
writeln;
writeln(‘ Sistema Plano de saúde’);
writeln;
writeln(‘ Digite a idade do paciente:’);
write(‘Anos:’);
read(idade);
case idade of
0..4:writeln(‘O valor do seu plano é: R$ 430,27’);
5..8:writeln(‘O valor do seu plano é: R$ 325,18’);
9..16:writeln(‘O valor do seu plano é: R$ 270,29’);
17..35:writeln(‘O valor do seu plano é: R$ 189,90’);
36..60:writeln(‘O valor do seu plano é: R$ 209,80’);
else
write (‘O valor do seu plano é: R$ 419,88’);
end;
End.
Gostaria que você atentasse que apesar de rodar a contento, este algoritmo tem um erro. Mas este é muito difícil de encontrar, pois depende do usuário. É uma boa prática de programação prever os erros dos usuários, para que o sistema se torne cada vez mais confiável. Imagine a seguinte situação, o usuário erra a digitação e coloca a idade do paciente 929, o sistema deve perceber que, apesar de ser um inteiro a variável está errada e avisar ao operador que o digitado possivelmente está errado. Então, o sistema ficaria da seguinte forma:
Program Pzim ;
var idade:integer;
Begin
writeln(‘Aula7:’);
writeln;
writeln(‘ Feito por Rogério Almeida’);
writeln;
writeln(‘ Sistema Plano de saúde’);
writeln;
writeln(‘ Digite a idade do paciente:’);
write(‘Anos:’);
read(idade);
case idade of
0..4:writeln(‘O valor do seu plano é: R$ 430,27’);
5..8:writeln(‘O valor do seu plano é: R$ 325,18’);
9..16:writeln(‘O valor do seu plano é: R$ 270,29’);
17..35:writeln(‘O valor do seu plano é: R$ 189,90’);
36..60:writeln(‘O valor do seu plano é: R$ 209,80’);
61..120:write (‘O valor do seu plano é: R$ 419,88’);
else
write (‘A idade digitada está correta?’);
end;
End.
Viram? Assim você garante que o sistema rode de forma eficiente. É muito legal, porque o programador precisa filosofar para entender o que o usuário não quis dizer.
Vamos à matéria nova? Só lembro-me das minhas professoras do ensino fundamental dizendo isso! Boas lembranças.
Hoje trabalharemos com os operadores, bem, alguns podem até contestar o porquê de trabalharmos somente nesta aula com operadores, mas o fato é que já trabalhamos com eles, o que faremos é apenas fixar o conteúdo, e funciona como aula introdutória para estruturas de repetição, nesta vamos usar bastante os operadores.
Vamos aos bem simples, soma (+), subtração (-), multiplicação (*) e divisão (/),maior que (>), menor que (<), maior ou igual a (>=), menor ou igual a (<=),diferente(<>), atribuição (:=) e igualdade (=); sobre todos esse já conversamos e usamos bastante. Agora irei lhe apresentar o “mod”, é um dos que eu gosto muito, pois ele pega o resto de uma divisão de inteiros. Exemplo 7 mod 2, se dividirmos 7 por 2 o resultado será 3 com resto 1, certo? Assim sendo, 7 mod 2 = 1, pois o resto da divisão de 7 por 2 é igual a 1, fácil!
Vamos ao exemplo, sempre aprendemos mais com exemplos. O algoritmo a seguir testa uma variável, se é par ou ímpar.
Program Pzim ;
var a:integer;
Begin
read(a);
if(a mod 2 = 0) then // Neste momento o teste de variável é feito, se a divisão por 2 tiver resto zero, significa que esta variável é par
write(‘É par’)
else // Se o resto for diferente de 0, significa que a variável é ímpar
write(‘É ímpar’);
End.
Tente imaginar como fazer este algoritmo sem o uso do “mod”, seria bastante complicado. Melhor, imagine não, se a ferramenta existe é para ser usada.
Outra função interessante é o DIV, esta pega somente a parte inteira da divisão, usando o mesmo exemplo acima, observe: 7 div 2 = 3, sendo este 3 um número inteiro, é como se o DIV arredondasse o resultado da divisão para baixo.
Vamos a um exemplo completo, para fica mais claro:
Program Pzim ;
var num, resultado, resto:integer;
resultado_real:real;
Begin
read(num);
resultado := num div 2; // Testa a variável e pega SOMENTE a parte inteira do resultado
resto := num mod 2; // O resto da divisão é atribuído a variável “resto”
resultado_real := num / 2; // Aqui é o resultado total, o número quebrado
writeln(‘O resultado inteiro desta divisão é ‘, resultado, ‘ com resto ‘, resto);
writeln(‘O resultado real desta divisão é ‘, resultado_real);
End.
RAPIDINHAS:
1 – É opcional o uso de “;” antecedendo o “else” do case;
2 – O mod é usado para testar se um número A é divisível por B;
3 – Os operadores citados tem a mesma função na matemática;
4 – Mod, Div e atribuição (:=) não existem matematicamente;
5 – Se colocar no lugar do usuário é uma ótima prática de programação;
6 – Considerar que, se o usuário pode errar, ele o fará da pior forma possível é uma prática de programação gedai;
7 – Não se pode atribuir o resultado de uma divisão a uma variável inteira, mesmo que o resultado seja um inteiro. 6 / 2 = 3.0 e não 3, o sistema faz essa conversão.
Bem, essa aula foi simples, mas é apenas um refresco para o que virá depois,
ESTRUTURAS DE REPETIÇÃO! Lembre-se: com dedicação tudo funciona!
Exercícios:
1 – Crie um algoritmo que receba uma variável do usuário e teste se esta é divisível por 3. Se não, exiba o resto dessa divisão.
2 – Um revendedor de chocolates pratica os seguintes preços, se o cliente comprar até 20 caixas, cada caixa custará R$ 10, se acima de 20 caixas, custará R$ 9,50.
Desenvolva um sistema que leia o número de caixas compradas, calcule e escreva o valor total da compra.
JUSTIFICATIVA:
1 – Fixação de conteúdo e prática;
2 – Esse script é muito útil para o desenvolvimento de sistemas que exija o uso de promoções, se feito corretamente, é o mesmo usado nas grandes promoções, obviamente com um número maior de variáveis, mas segue o mesmo princípio.
Bem, chegamos ao final desta introdução, na próxima aula entraremos com tudo ESTRUTURAS DE REPETIÇÃO, ótima sorte a todos! Não entendeu, comenta! Abraços e ótima semana a todos!