burns Posted December 7, 2022 at 03:02 PM Report Share #628636 Posted December 7, 2022 at 03:02 PM (edited) 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 December 8, 2022 at 04:36 AM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted December 8, 2022 at 06:01 AM Report Share #628651 Posted December 8, 2022 at 06:01 AM 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 More sharing options...
burns Posted December 8, 2022 at 01:54 PM Author Report Share #628660 Posted December 8, 2022 at 01:54 PM 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 More sharing options...
nunopicado Posted December 9, 2022 at 12:14 AM Report Share #628674 Posted December 9, 2022 at 12:14 AM (edited) 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 December 9, 2022 at 12:15 AM by nunopicado 1 Report "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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now