Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi erro - '$' não especificado


Posts recomendados

Olá galera, estou fazendo um curso e me foi passado um problema ao qual pesquisei muito, porém na hora da execução está dando o seguinte erro:

=>erro sintático na linha 216

=>'$' não especificado!

segue o código para que vocês possam me ajudar. desde já agradeço.

program Calculadora;
//uses Crt;
// {Função: Calcular}
// {Autor: MaxMediros}
// {Data: 18/10/2017}
function sqr( x,y :real ) : real;
var

decidir,decidir2: string;
x, y, valor1, valor2, a, b, c, delta: real;
final: string;
begin
  
  Final := 'Sim';
  
  while (final = 'sim') do
  begin
    writeln ('|Digite 1 Para ADIÇÃO           |');
    writeln ('|Digite 2 Para SUBTRAÇÃO        |');
    writeln ('|Digite 3 Para DIVISÃO          |');
    writeln ('|Digite 4 Para MULTIPLICAÇÃO    |');
    writeln ('|Digite 5 Para BHASKARA         |');
    writeln ('|Digite 6 Para PORCENTAGEM      |');
    writeln ('|Digite 7 Para POTÊNCIA         |');
    writeln ('|Digite 8 Para ÁREAS            |');
    writeln ('|Digite 9 Para RAÍZ             |');
    writeln ('|Digite 10 Para Sair            |');
    readln (decidir);
  end;
  
  ClrScr;
  
  
  if (decidir = '10') then
  begin
    writeln ('Finalizando Programa...');
  end;
  
  if (decidir = '2')  then
  begin
    writeln ('Digite o valor de X:');
    readln (x);
    writeln ('Digite o valor de y:');
    readln (y);
    valor1 := (X - Y);
    writeln ('O resultado é:', valor1);
  end;
  
  if (decidir = '1') then
  begin
    writeln ('Digite o valor de X:');
    readln (x);
    writeln ('Digite o valor de y:');
    readln (y);
    valor1 := (X + Y);
    writeln ('O resultado é:', valor1);
  end;
  if (decidir = '4')  then
  begin
    writeln ('Digite o valor de X:');
    readln (x);
    writeln ('Digite o valor de y:');
    readln (y);
    valor1 := (X * Y);
    writeln ('O resultado é:', valor1);
  end;
  
  if (decidir = '3')  then
  begin
    writeln ('Digite o valor de X:');
    readln (x);
    writeln ('Digite o valor de y:');
    readln (y);
    valor1 := (X / Y);
    writeln ('O resultado é:', valor1);
  end;
  
  if (decidir = '7') then
  begin
    writeln ('Digite o valor de X:');
    readln (x);
    writeln ('Digite o valor do Expoente:');
    readln (y);
    valor1 := ( sqr((y),(Y)));
    writeln ('O resultado é: ', valor1);
  end;
  
  
  if (decidir = '6') then
  begin
    writeln ('Digite a Porcentagem de X:');
    readln (x);
    writeln ('Digite o Valor de X:');
    readln (y);
    Valor1 := (x / 100);
    Valor2 := (Valor1 * y);
    writeln ('O resultado é:', valor2);
  end;
  
  if (decidir = '9') then
  begin
    writeln ('Digite a Raiz:');
    readln (y);
    valor1 := (RaizQ (y));
    writeln ('O resultado é:', valor1);
  end;
  
  if (decidir = '5') then
  begin
    writeln ('Digite o valor de A: ');
    readln (a);
    writeln ('Digite o valor de B: ');
    readln (b);
    writeln ('Digite o valor de C: ');
    readln (c);
    delta :=(bsqr(readln (c),2))-(4*a*c);
    valor1 := ((-b) + (RaizQ(delta)))/(2*a);
    valor2 := ((-b) - (RaizQ(delta)))/(2*a);
    writeln ('Delta:', delta);
    writeln ('x1:', valor1);
    writeln ('X2:', valor2);
  end;
  
  if (Decidir = '8') then
  begin
    writeln ('Qual dessas áreas desejas:');
    writeln (' a) Paralelepípedo;');
    writeln ('  Triângulo;');
    writeln (' c) Quadrado;');
    writeln (' d) Circunferência;');
    writeln (' e) Cubo;');
    writeln (' f) Cone;');
    writeln (' g) Voltar ao menu inicial');
    readln (decidir2);
  end;
  
  if (decidir2 = 'a') then
  begin
    writeln ('Digite o valor de A:');
    readln (a);
    writeln ('Digite o valor de B:');
    readln (b);
    writeln ('Digite o valor de C:');
    readln (c); // {at = 2 (ab + bc + ac)};
    valor1 := (a*b) + (b*c) +  (a*c);
    valor2 := (2 * valor1);
    writeln ('A área total é:', valor2);
  end;
  
  if (decidir2 = 'b') then
  begin
    writeln ('Digite o valor da Base:');
    readln (a);
    writeln ('Digite o valor da Altura:');
    readln (b);
    valor1 := (a*b / 2);           // {V = B * H /2};
    writeln ('A área total é:', valor1);
  end;
  
  if (decidir2 = 'c') then
  begin
    writeln ('Digite o valor do Lado: ');
    readln (a);
    valor1 := (a*a);                    // { Lado²};
    writeln ('Área total:', valor1);
  end;
  
  if (decidir2 = 'd') then
  begin
    writeln ('Digite o valor do Raio:');
    readln (a);
    alor1 := (a*a) * 3.14;         // { At = Pi * Raio²}
    writeln ('Área total:', valor1);
  end;
  
  
  if (decidir2 = 'e') then
  begin
    writeln ('Digite o valor do Lado:');
    readln (a);
    valor1 := (a*a) * 6 ;         // {6*Lado²};
    writeln ('A área total é:', valor1);
  end;
  
  if (decidir2 = 'f') then
  begin
    
    writeln ('Digite o valor do Raio:');
    readln (a);
    writeln ('Digite o valor da Geratriz:');
    readln (b);
    valor1 :=  ((3.14 * a) * (b + a));          // {Pi * r (g+ r)};
    writeln ('A área total é:', valor1);
  end;
  
  
  if ((decidir <> '1') and (decidir <> '2') and (decidir <> '9')
  and (decidir <> '3') and (decidir <> '4')    and(decidir <> '5')
  and (decidir <> '6') and (decidir <> '7') and (decidir <> '8')) then
  begin
    writeln ('Operação inexistente');
  end;
  
  writeln ('Queres continuar?');
  readln (Final);
  
  {Fimenquanto}
  
  writeln ('Finalizando...');
end.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @maxmedeiros, seja bem vindo ao Fórum do Clube do Hardware.

 

2 horas atrás, maxmedeiros disse:

[...]na hora da execução está dando o seguinte erro:

=>erro sintático na linha 216

=>'$' não especificado!

 

O erro é na hora de compilar ou na hora de executar?  São etapas diferentes.

Qual compilador está utilizando?

 

Aqui, no Free Pascal Compiler (3.0.2), está dando erro:

D:\Simon\_My Portables\Notepad++\Compiladores\FPC\3.0.2\bin\i386-win32\ppc386.exe "D:\Simon\_My Portables\Notepad++\_FCdH.PAS"
Process started >>>
_FCdH.PAS(10,1) Error: Duplicate identifier "x"
_FCdH.PAS(10,4) Error: Duplicate identifier "y"
_FCdH.PAS(31,3) Error: Identifier not found "ClrScr"
_FCdH.PAS(104,16) Error: Identifier not found "RaizQ"
_FCdH.PAS(116,14) Error: Identifier not found "bsqr"
_FCdH.PAS(117,24) Error: Identifier not found "RaizQ"
_FCdH.PAS(118,24) Error: Identifier not found "RaizQ"
_FCdH.PAS(172,5) Error: Identifier not found "alor1"
_FCdH.PAS(210,4) Fatal: Syntax error, ";" expected but "." found
Fatal: Compilation aborted
<<< Process finished. (Exit code 1)
================ READY ================

 

Então, seu código tem muitas funcionalidades implementadas ao mesmo tempo, daí fica mais difícil para corrigir. Não tem necessidade de fazer tudo de vez. Sugiro que faça o programa por partes, e ir avançando a medida que cada etapa fica pronta.

 

 

A orientação seria fazer um programa novo, com apenas esses itens:

  writeln ('|Digite 1 Para ADIÇÃO           |');
  writeln ('|Digite 2 Para SUBTRAÇÃO        |');
  writeln ('|Digite 3 Para DIVISÃO          |');
  writeln ('|Digite 4 Para MULTIPLICAÇÃO    |');
  writeln ('|Digite 10 Para Sair            |');

 

Daí posta o código aqui para analisarmos e onde está com dúvidas...

 

Só após, tente dar continuidade.

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...