Jump to content

Pascalzim


burns

Recommended Posts

Eu criei um código mas ele esta com um erro no End. alguem me ajude a conseguir corrigir o programa?

Program livroslojas ;
var opcao:integer;
var menu:real;
var livro:integer;

Begin
repeat
clrscr;
writeln(' ---Menu--- ');
writeln ('Escolhe o Genero de Leitura :');
writeln  ('1- Aventura');
writeln ('2- Acao');
writeln ('3- Romance');
writeln ('4- Terror');
writeln ('5- Suspance');
writeln ('6- Fantasia');
writeln ('7- Manga');
readln(opcao);

case (opcao) of  
1:   begin
            writeln ('Voce escolheu o Genero de Aventura');
            writeln ('Recomendo o Livro O Artifice de Richard Sennett');
            readln(livro);
         end;


2:  begin
            writeln ('Voce escolheu o Genero de Acao');
            writeln ('Recomendo o Livro O Hobitt Jonh Ronald Tolkien ');
            readln (livro);
        end;

3:     begin
            writeln ('Voce Escolheu o Genero de Romance');
            writeln ('Recomendo o Livro A Culpa e das estrelas de Jonh Green');
            readln (livro);
        end;

4:     begin
            writeln ('Voce Escolheu o Genero de Terror');
            writeln ('Recomendo o Livro O Corvo de Edgar Allan Poe ');
            readln (livro);
        end;
        
5:     begin
            writeln ('Voce Escolheu o Genero de Suspance');
            writeln ('Recomendo o Livro YOU de Caroline Kepnes');
            readln (livro);
        end;
        
6:     begin
            writeln ('Voce Escolheu o Genero de Fantasia');
            writeln ('Recomendo o Livro Harry Potter de J.K Rolling');
            readln (livro);
        end;                        
        
7:     begin
            writeln ('Voce Escolheu o Genero de Mang�');
            writeln ('Recomendo o Livro One Piece de Eiichiro Oda');
            readln (livro);
        end;
    
else begin
    if(opcao=8)
    then begin
         writeln ('Voce Escolhe Sair , Adeus :)');


         end
        

else begin
          writeln (' Opcao Inv�lida');


          end;
if(opcao=8);
  
End.

 

Edited by thoga31
GeSHi
Link to comment
Share on other sites

O compilador diz-me o seguinte:

prog.pas(8,1) Error: Identifier not found "clrscr"
prog.pas(78,12) Fatal: Syntax error, "THEN" expected but ";" found

Não sei se o PascalZim inclui nativamente a função clrscr, mas se tiveres o primeiro erro que mostrei, deverás importar o módulo crt.

Quanto ao segundo erro, repara que tens a seguinte linha de código no final:

if(opcao=8);

Isto não é válido sintaticamente. Se a opção for 8, então... o quê? O compilador espera que indiques o que fazer com um then e o respetivo bloco de código subsequente.

Cumprimentos.

Knowledge is free!

Link to comment
Share on other sites

Em 08/12/2022 às 06:01, thoga31 disse:

O compilador diz-me o seguinte:

prog.pas(8,1) Error: Identifier not found "clrscr"
prog.pas(78,12) Fatal: Syntax error, "THEN" expected but ";" found

Não sei se o PascalZim inclui nativamente a função clrscr, mas se tiveres o primeiro erro que mostrei, deverás importar o módulo crt.

Quanto ao segundo erro, repara que tens a seguinte linha de código no final:

if(opcao=8);

Isto não é válido sintaticamente. Se a opção for 8, então... o quê? O compilador espera que indiques o que fazer com um then e o respetivo bloco de código subsequente.

Cumprimentos.

Eu agradeço imenso a tua ajuda , eu não estava mesmo a detetar esses erros  , Obrigado 

Cumprimentos

Link to comment
Share on other sites

Permite-me só dizer-te o motivo de ser difícil encontrar o erro, mostrando como seria mais fácil:

 

Program livroslojas;

var 
  opcao : integer;
  menu  : real;
  livro : integer;

Begin
  repeat
    clrscr;
    writeln(' ---Menu--- ');
    writeln ('Escolhe o Genero de Leitura :');
    writeln  ('1- Aventura');
    writeln ('2- Acao');
    writeln ('3- Romance');
    writeln ('4- Terror');
    writeln ('5- Suspance');
    writeln ('6- Fantasia');
    writeln ('7- Manga');
    readln(opcao);
 
    case (opcao) of  
      1: begin
           writeln ('Voce escolheu o Genero de Aventura');
           writeln ('Recomendo o Livro O Artifice de Richard Sennett');
           readln(livro);
         end;
      2: begin
           writeln ('Voce escolheu o Genero de Acao');
           writeln ('Recomendo o Livro O Hobitt Jonh Ronald Tolkien ');
           readln (livro);
         end;
      3: begin
           writeln ('Voce Escolheu o Genero de Romance');
           writeln ('Recomendo o Livro A Culpa e das estrelas de Jonh Green');
           readln (livro);
         end;
      4: begin
           writeln ('Voce Escolheu o Genero de Terror');
           writeln ('Recomendo o Livro O Corvo de Edgar Allan Poe ');
           readln (livro);
         end;
      5: begin
           writeln ('Voce Escolheu o Genero de Suspance');
           writeln ('Recomendo o Livro YOU de Caroline Kepnes');
           readln (livro);
         end;
      6: begin
           writeln ('Voce Escolheu o Genero de Fantasia');
           writeln ('Recomendo o Livro Harry Potter de J.K Rolling');
           readln (livro);
         end;                        
      7: begin
           writeln ('Voce Escolheu o Genero de Mang�');
           writeln ('Recomendo o Livro One Piece de Eiichiro Oda');
           readln (livro);
         end;
      else begin
        if (opcao=8)
          then begin
            writeln ('Voce Escolhe Sair , Adeus :)');
          end
          else begin
            writeln (' Opcao Inv�lida');
          end;
        if (opcao=8);
End.

 

Ao indentar corretamente o código, torna-se fácil notar inconsistências.

Por exemplo:

  • Aquele "if (opcao=8);" repete o if anterior.
  • Aquele "if (opcao=8);" não tem o THEN que era suposto ter. o ELSE é opcional, mas o THEN tem de existir.
  • A linha "else begin", antes dos IF da opção 8, não tem qualquer linha com um END no mesmo nível, ou seja, falta o seu END.
  • A linha do CASE precisa de um END ao seu nível, e também não o tem.
  • A linha REPEAT precisa de um UNTIL ao seu nível, e também não o tem.

 

Indentar o código não é "embelezamento", e como tal, menos importante.
É tão importante indentar corretamente o código como saberes qual o comando para escrever no ecrã. A indentação é fundamental em qual código. Repara, este programa tem "meia dúzia" de linhas e se estivesse bem indentado já seria mais fácil encontrar os erros. Agora imagina um programa com, por exemplo, 9 milhões de linhas. Sem indentação, o suicídio começaria a parecer uma opção bem viável.

Há inclusivamente linguagens de programação, nomeadamente Python, em que se não indentares não consegues sequer correr o programa, mesmo para forçar o seu uso.

Edited by nunopicado
  • 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.

Link to comment
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.