Jump to content
Tonecas

Erro sintático '2' não esperado!

Recommended Posts

Tonecas

Boas,

Gostava que me ajudassem a resolver este erro que está ocorrer no Pascal🙏

Eu estou a tentar criar uma calculadora em pascal só que quando eu executo o programa dá me o erro "Erro sintático '2' não esperado"

Eis o programa:

Program Calculadora; 
Var x,y,op: integer;
    resultado: real;
Begin
Writeln('== CALCULADORA ==');
Writeln('Introduza o primeiro número:');
Readln(x);
Writeln('Introduza o segundo número:');
Readln(y);
Writeln('Escolha uma das opções:');
Writeln('1 - Soma');
Writeln('2 - Diferença');
Writeln('3 - Produto');
Writeln('4 - Divisão');
Writeln('Introduza a operação:');
Readln(op);
Case op of
1: resultado:=x+y;
Writeln('A soma dos dois números é:',resultado)
2: resultado:=x-y;
Writeln(' A diferença entre os dois números é: ', resultado);
3: resultado:=x*y;
Writeln('O produto dos dois números é:', resultado);
4: resultado:=x/y;
Writeln('A divisão dos dois números é:', resultado);
Else
Writeln('Opção inválida!');
End;   
End.

PS: Se eu puser ";" no final da linha 19 ["Writeln('A soma dos dois números é:',resultado)"] o Pascal dá o seguinte erro: Erro sintático ";" não esperado!

Edited by nunopicado
Syntax Highlight

Share this post


Link to post
Share on other sites
thoga31

Boa tarde!

Cada caso deve estar dentro de um bloco begin-end se tiver mais de uma instrução.

O compilador, ao ler uma instrução para o caso 1, está à espera de um novo caso e não de uma segunda instrução, dando esse erro "estranho" do ponto e vírgula.

Cumprimentos

  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
Tonecas

Desde já agradeço a ajuda🙇‍♂️

Fiz o que disse e pus cada caso dentro de um bloco begin-end só que eu devo ter cometido um erro pelo meio porque diz "Else não esperado!"

O programa com as alterações ficou assim:

Program Calculadora;
Var x,y,op: integer;
resultado: real;
Begin
  Writeln('== CALCULADORA ==');
  Writeln('Introduza o primeiro número:');
  Readln(x);
  Writeln('Introduza o segundo número:');
  Readln(y);
  Writeln('Escolha uma das opções:');
  Writeln('1 - Soma');
  Writeln('2 - Diferença');
  Writeln('3 - Produto');
  Writeln('4 - Divisão');
  Writeln('Introduza a operação:');
  Readln(op);
  Case op of
    1: resultado:=x+y;
  end;
  Writeln('A soma dos dois números é:', resultado);
  Begin
    2: resultado:=x-y;
  end;
  Writeln(' A diferença entre os dois números é: ', resultado);
  Begin
    3:resultado:=x*y;
  end;
  Writeln('O produto dos dois números é:', resultado);
  Begin
    4: resultado:=x/y;
  end;
  Writeln('A divisão dos dois números é:', resultado)
  Else 
  Writeln('Opção inválida!');
Endcase;
End.

 

Edited by nunopicado
Syntax Highlight

Share this post


Link to post
Share on other sites
nunopicado

Como o @thoga31 estava a explicar, cada caso tem de estar dentro de um bloco begin...end.
No entanto, isso não significa que o valor do caso tenha de estar dentro do begin...end. Só as instruções.

Assim, a ideia seria:

Case op of
  1: begin
       resultado:=x+y;
       Writeln('A soma dos dois números é:',resultado)
     end;    
  2: begin
       resultado:=x-y;
       Writeln(' A diferença entre os dois números é: ', resultado);
     end;
  3: begin
       resultado:=x*y;
       Writeln('O produto dos dois números é:', resultado);
     end;
  4: begin
       resultado:=x/y;
       Writeln('A divisão dos dois números é:', resultado);
     end;
  Else
    Writeln('Opção inválida!');
End;   

 

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Tonecas

Oohhh faz sentido xD

Muito obrigado thoga31 e nunopicado graças a vocês os erros estão resolvidos😄

Cumprimentos. 

Share this post


Link to post
Share on other sites
thoga31

@Tonecas, só quero terminar sugerindo que estudes melhor a sintaxe das estruturas essenciais do Pascal.

Se quiseres material adicional, tens este Tutorial.

Cumprimentos.

  • Vote 2

Knowledge is free!

Share this post


Link to post
Share on other sites
BHAMF

Exatamente! As respostas aqui estão mais rápidas do que o esperado! Mas é isto mesmo que disseram! Vou por o meu código assim de qualquer jeito :D_ (se devia ao begin e end. O case só lê a primeira linha nos dois pontos sem o begin e end.)

Program Calculadora; 
Var 
 x, y,op: integer;
 resultado: real;
Begin
	Writeln('== CALCULADORA ==');
	Writeln('Introduza o primeiro número:');
	Readln(x);
	Writeln('Introduza o segundo número:');
	Readln(y);
	Writeln('Escolha uma das opções:');
	Writeln('1 - Soma');
	Writeln('2 - Diferença');
	Writeln('3 - Produto');
	Writeln('4 - Divisão');
	Writeln('Introduza a operação:');
	Readln(op);
	Case op of
	1: begin 
		resultado:=x+y;
		Writeln('A soma dos dois números é:',resultado:7:2);
		Readln;
	 end;
	2: begin 
		resultado:=x-y;
		Writeln(' A diferença entre os dois números é: ', resultado:7:2);
		Readln;
	 end;
	3: begin 
		resultado:=x*y;
		Writeln('O produto dos dois números é:', resultado:7:2);
		Readln;
	 end;
	4: begin 
		resultado:=x/y;
		Writeln('A divisão dos dois números é:', resultado:7:2);
		Readln;
	 end
	Else
	Writeln('Opção inválida!');
	End;   
End.

Lembre-se sempre de arrumar o código para melhor visualizações! Até mais.


Brenio Hallison A.M. Filho

 

Share this post


Link to post
Share on other sites
passarito

@BHAMF, a tua opção tem 2 falhas. Ao colocares o readln para o programa "parar" esqueceste-te da opção else. Por outro lado cometeste o erro crasso da falta de economia. Assim em vez de colocares aqueles readln's todos, poderias colocar apenas um imediatamente depois do case.

Case op of
	...
	else
	...
end;
readln;

 

Share this post


Link to post
Share on other sites
Tonecas
Em 04/11/2018 às 18:52, thoga31 disse:

@Tonecas, só quero terminar sugerindo que estudes melhor a sintaxe das estruturas essenciais do Pascal.

Se quiseres material adicional, tens este Tutorial.

Cumprimentos.

É o que estou e vou continuar a fazer.

Obrigado pelo tutorial consegui perceber mais sobre o pascal e corrigir uns erros que eu cometia.

PS: Esse tutorial que fizeste é 10/10 muito agradecido😉

\o

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.