Jump to content

Duvida no procedimento


TJFBarreto
 Share

Recommended Posts

Bem, estou a laborar um trabalho para um "mini" projecto e neste código, dá-me um erro na linha do "Else" gostaria de saber porquê e como resolver o problema

 Procedure CartaoDeCredito;
  Begin
   clrscr;
   textcolor(green);writeln('Escreva o NIB para quem deseja transferir: ');readln(NIB);clrscr;
   textcolor(green);write('Qual o mountante que deseja transferir: ');readln(Valor2);
   textcolor(green);write('Deseja tranferir ');textcolor(yellow);write(Valor2);textcolor(green);write(' para o NIB ');textcolor(yellow);write(NIB:0);textcolor(green);write(' ? | Sim/Nao|');
   readln(Escolha2);
   If (Escolha2='Sim') or (Escolha2='sim') then
   Begin
   Carregar:=0;

  			repeat
      			clrscr;
 			textcolor(11);writeln('A transferência está a ser processada ',carregar,'%');     			
	 		Carregar:=Carregar + random(10);
			delay(400)
   			until Carregar>100;
   			
    delay(1000);
  clrscr;textcolor(green);writeln('Transferência concluida de ',Valor2,' euros, ficou com ',MostraDinheiro2(Dinheiro,Valor2),' euros na sua conta. ')
  else 
  textcolor(red);writeln('A OPERAÇÂO FOI CANCELADA');
  End;
  End;

EDIT: GeSHi adicionado. thoga31

Link to comment
Share on other sites

O problema é que te falta um end antes do Else...

No Then tens um bloco começado por Begin, mas depois não o fechas antes de chamares o Else, o que te cria o erro.

Já agora, também te falta um begin a seguir ao Else, para poderes executar aquelas duas instruções.

Se me permites a sugestão, trabalha no sentido de indentares correctamente o código que fazes.

Como tens, torna-se muito complicado para ti (e para qualquer pessoa) entender qual o bloco a que cada instrução pertence.

Outra coisa que raramente é boa ideia é teres mais do que uma instrução na mesma linha.

Sugestão de Indentação:

Procedure CartaoDeCredito;
Begin
     // Lê NIB
     clrscr;
     textcolor(green);
     writeln('Escreva o NIB para quem deseja transferir: ');
     readln(NIB);

     // Lê montante
     clrscr;
     textcolor(green);
     write('Qual o montante que deseja transferir: ');
     readln(Valor2);

     // Deseja transferir?
     textcolor(green);
     write('Deseja tranferir ');
     textcolor(yellow);
     write(Valor2);
     textcolor(green);
     write(' para o NIB ');
     textcolor(yellow);
     write(NIB:0);
     textcolor(green);
     write(' ? | Sim/Nao|');
     readln(Escolha2);

     // Testa resposta
     If (Escolha2='Sim') or (Escolha2='sim')
        then Begin
                  Carregar:=0;

                  repeat
                        clrscr;
                        textcolor(11);
                        writeln('A transferência está a ser processada ',carregar,'%');

                        Carregar:=Carregar + random(10);
                        delay(400)
                  until Carregar>100;

                  delay(1000);
                  clrscr;
                  textcolor(green);
                  writeln('Transferência concluida de ',Valor2,' euros, ficou com ',MostraDinheiro2(Dinheiro,Valor2),' euros na sua conta. ');
             end  // Com esta indentação é fácil perceber que te faltava este end
        else begin  // e este begin
                  textcolor(red);
                  writeln('A OPERAÇÂO FOI CANCELADA');
             End;
End;

Já agora, para o teste que fazes (resposta Sim ou sim), se tentares responder SIM já vai falhar. Ou sIm, ou siM...

Para evitar isto, substituis a linha do IF onde fazes o teste por:

     If (UpCase(Escolha2)='SIM')  // Ele transforma os caracteres da resposta em maiúsculas, e depois compara com a resposta SIM. 

"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

Muito obrigado  😁 nem sabes o que ajudas-te.. ;D é sempre bom aprender por pessoas que sabem do que estar a inventar e tentar mete-las a funcionar. mais um vez.. Muito Obrigado!  😁

Mas olha que a auto-aprendizagem também é extremamente positiva 😉

Knowledge is free!

Link to comment
Share on other sites

Mas olha que a auto-aprendizagem também é extremamente positiva 😁

Concordo... 😁

"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
 Share

×
×
  • 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.