Logo Hardware.com.br
vini_bill
vini_bill Super Participante Registrado
592 Mensagens 0 Curtidas

Aprendendo pascal: Mais duvidas

#1 Por vini_bill 30/08/2005 - 11:13
Oi pessoal. Beleza? Por favor observem este código
Obs: Ele começa na linha 16! Isso porque tem uma nota da GPL sobre ele.
program bhaskara;
var
{!--Definindo variáveis}
op:integer;
a,b,c,sum,prod,delta,x1,x2:real;
begin
{!--Opções das 3 operações}
writeln ('Escolha umas das operações:');
writeln ('');
writeln ('1.Bhaskara');
writeln ('2.Produto');
writeln ('3.Soma');
writeln ('4.Sair');
writeln ('');
write ('Digite o número da sua opção:');
readln (op);
repeat
case op of
{!--Se for Bhaskara}
1: writeln('Dê-me 3 números...');
write('a:');
readln (a);
write ('b:');
readln (b);
write ('c:');
readln (c);
delta:= (b*b)-(4*(a*c));
{!--Testando delta}
if (delta<0) then
begin
writeln('Delta não existe no universo real.Não posso efetuar o cálculo.')
else
writeln ('O resultado de delta é: ',delta);
{!--Começando Bhaskara Positivo}
writeln('Efetuando Bhaskara Positivo...');
x1:=((-1*b)+sqrt(delta))/2*a;
{!--Começando Bhaskara Negativo}
writeln('Efetuando Bhaskara Negativo...');
x2:=((-1*b)-sqrt(delta))/2*a;
{!--Dando resultado}
writeln ('X positivo é: ',x1);
writeln ('X Negativo é: ',x2);
writeln ('Fim do programa');
end;
{!--Se for Produto}
2: writeln('Dê-me dois números:');
write('a:');
readln (a);
write ('c:');
readln (c);
prod:=c/a;
writeln('O produto entre C e A é: ',prod);
{!--Se for soma}
3: writeln('Dê-me dois números:');
write('a:');
readln (a);
write ('b:');
readln (b);
sum:=(-1*b)/a;
writeln ('O produto entre -B e A é:',sum);
{!--Se num for nenhuma das opções}
else writeln ('Essa opção não existe!');
end;
until op=4;
end.


Até ai tudo bem. O código parece bem legivel e limpo pra mim... dai quando eu coloco o Free Pascal pra compilar vejam o que aparece:

Free Pascal Compiler version 2.0.0 [2005/08/17] for i386
Copyright (c) 1993-2005 by Florian Klaempfl
Target OS: Linux for i386
Compiling bhaskara.pp
bhaskara.pp(36,13) Error: Constant and CASE types do not match
bhaskara.pp(36,13) Error: Constant Expression expected
bhaskara.pp(36,13) Fatal: Syntax error, ":" expected but ";" found
bhaskara.pp(36,13) Error: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specifiy a source file to be compiled)
[vinicius@fedora Bhaskara]$


O que ele tá querendo dizer pra mim? Na linha 36 tem uma variavel e não uma constante, é a leitura da variavel 'a'. E por que o Free Pascal tá esperando dois pontos ao invés do ponto e vírgula?

Valeu.

... Vinicius Menezes ...
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal