Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Erro sintático não esperado


Posts recomendados

Estou resolvendo um exercício que pede para fazer um programa de fidelidade. Quando executo o programa aparece erro sintático não esperado. 

 

Program fidelidade ;
  uses
      CRT;
var

livro: integer;

Begin
writeln('Informe a quantidade de livros comprado.: ');
readln(livro);
case livro of
    0: begin
    writeln('Ele ganhará 0 pontos');
    readln;
    end;
    1: begin
    writeln('Ele ganhará 5  pontos');
    readln;
    end;
    2: begin
    writeln('Ele ganhará 15 pontos');
    end;
    3: begin
    writeln('Ele ganhará 30 pontos');
    end;
    4 ..100: begin
    writeln('Ele ganhará 60 pontos');
    end;
    
End.

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@joaoz1404 @joaoz1404    você pode ler nas mensagens do compilador para saber como resolver ,  pois ali ele informou que tem um erro na linha 30 e que o que está errado é um ponto  colocado nessa linha , então interprete o que ele disse , que significa  :  lá na linha 30 desse código tem um ponto , que não deveria estar ali ,  e você vai pensar assim    :

 ah , esse ponto não deveria estar ali , por que ele  ( o ponto ) está no lugar  
 de um ponto_e_vírgula que finaliza o case of , mas para finalizar o código 
 precisa dele ( o ponto)  , então o que precisa é colocar um end com um 
 ponto_e_vírgula  antes desse end com um ponto .
4 ..100: begin
    writeln('Ele ganhará 60 pontos');
    end;
  end;    
End.

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@joaoz1404, resumidamente, o case/of tem o seu próprio end;.

 

É interessante marcar esses end, exemplo:

case livro of

  end; //case livro
end.

 

Algo como:

{$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas
program fidelidade;
uses
  CRT;
var
  livro: integer;

begin
writeln('Informe a quantidade de livros comprado: ');
readln(livro);
case livro of
  0  :begin
      writeln('Ele ganhará 0 pontos');
      end;
  1  :begin
      writeln('Ele ganhará 5  pontos');
      end;
  2  :begin
      writeln('Ele ganhará 15 pontos');
      end;
  3  :begin
      writeln('Ele ganhará 30 pontos');
      end;
  4..
  100:begin
      writeln('Ele ganhará 60 pontos');
      end;
  end; //case livro
  ReadKey;
end.

 

adicionado 1 minuto depois

Se um caso do case tiver apenas uma instrução, nem precisa do begin/end. Exemplo:

 

{$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas
program fidelidade;
uses
  CRT;
var
  livro: integer;

begin
writeln('Informe a quantidade de livros comprado: ');
readln(livro);
case livro of
  0  :writeln('Ele ganhará 0 pontos');
  1  :writeln('Ele ganhará 5  pontos');
  2  :writeln('Ele ganhará 15 pontos');
  3  :writeln('Ele ganhará 30 pontos');
  4..
  100:writeln('Ele ganhará 60 pontos');
  end; //case livro
  ReadKey;
end.

 

  • Curtir 1
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...