Jump to content

Dúvida de principiante


Zen
 Share

Recommended Posts

ola a todos.

gostava que me respondessem a uma pergunta, que para vcs é estupida, acerca de loops; o problema é que o programa nao está a fazer o loop, simplesmente sai do programa... aki esta o código

program clc;
uses crt;
var v1,v2:integer; op,leter:char; q:boolean;



begin
repeat;

Writeln ('                     Calculadora versao 1.3    BY GUILHERME');
read; delay (1000);

Writeln ('digite o primeiro numero');
read (v1);
     Writeln ('');
     readln;
Writeln ('digite a operação desejada');
read (op);
       Writeln ('');
       readln;

if (op <> '+') and (op<>'-') and (op<>'/') and (op<>'*') then
begin
Writeln ('Operação ainda nao disponivel. Adeus!');
readln;
exit;
end
else
begin
gotoxy (30,30);
end;

Writeln ('digite o segundo numero');
readln (v2);

       case op of
       '+' : begin
           Writeln ('--->',v1+v2);
           read;
           end;
       '-' : begin
           Writeln ('--->',v1-v2);
           read;
           end;
       '*' : begin
           Writeln ('--->',v1*v2);
           read;
           end;
       '/' : begin
           Writeln ('--->',v1/v2);
           read;
           end;
       end;

read;
until (keypressed = q);
read(leter);

clrscr;
end.

agradecia que me ajudassem

obrigado.

Link to comment
Share on other sites

Boas,

Antes de mais bem-vindo ao forum Zen.Na realidade não existe nenhum loop no teu programa (os loops existem apenas quando existem instruções while e/ou for, penso eu).

Segunda coisa: da próxima vez que transcreveres um código de um programa teu, utiliza o template que nós disponibilizamos aqui no forum que faz o highlight das diversas situações durante um código, através da aplicação do bbcode com as funções [syntax=linguagem do código]código[/syntax].

Ora então tentando ajudar-te no problema:

program clc;

uses crt;

var v1,v2:integer; op,leter:char; q:boolean;

begin

repeat;

Writeln (' Calculadora versao 1.3 BY GUILHERME');

read; delay (1000);

Writeln ('digite o primeiro numero');

read (v1);

Writeln ('');

readln;

Writeln ('digite a opera‡ao desejada');

read (op);

Writeln ('');

readln;

if (op <> '+') and (op<>'-') and (op<>'/') and (op<>'*') then

begin

Writeln ('Opera‡ao ainda nao disponivel. Adeus!');

readln;

exit;

end;[aqui tinhas-te esquecido do ";" que talvez tenha feito com que saíse do programa]

else

begin

gotoxy (17,0);[linha 17 que é onde pergunta qual a operação a realizar]

end;

Writeln ('digite o segundo numero');

readln (v2);

case op of

'+' : begin

Writeln ('--->',v1+v2);

read;

end;

'-' : begin

Writeln ('--->',v1-v2);

read;

end;

'*' : begin

Writeln ('--->',v1*v2);

read;

end;

'/' : begin

Writeln ('--->',v1/v2);

read;

end;

end;

read;

until (keypressed = q);

read(leter);

clrscr;

end.

Bem, tenta assim e diz o que te acontece...

Cumps

Link to comment
Share on other sites

bem, segundo o k tenho lido em varios tutoriais, o REPEAT apenas indica o inocio do loop, k dps se encerra no UNTIL, e se essa condiçao (do e no until) for verdadeira entao o programa encerra, se nao, (dai o until ) faz novamente o repeat. istu eh o k tenho lido em tutoriais, mas posso tar enganado, embora duvide ;)

Link to comment
Share on other sites

Ok penso que está correcto...

Esive aqui a rever os meus tutoriais e tambem dei com isto:

REPEAT

Instrução;

UNTIL

expressão_boleana

Ou seja, a expressão de instruções é executada repetidamente até que a expressão booleana se torne verdadeira.

Sequencia de operações executadas pelo ciclo REPEAT:

1. executa a sequencia de instruções

2. testa a condição; se for FALSE volta ao passo 1;

3. segue para as instruções seguintes do programa.

Acho que assim já estamos todos de acordo...

Vou fazer uns testes com o teu código e já digo alguma coisa...

Cumps

Link to comment
Share on other sites

ora boas,

bem, ja resolvi o problema, graças ah ajuda de um colega... tava dificil hein!

bem, ca vai o codigo com o loop a funcar, embora ainda seja "um rascunho", e nao ainda como eu quero, a sintax do loop ta la:

program clc;

uses crt;

var v1,v2:integer; op,leter,c,k,key:char; q:boolean; readkey:char;

begin

clrscr;

repeat;

textcolor(green);

Writeln (' Calculadora versao 1.4 BY GUILHERME');

Writeln;

textcolor(brown);

Writeln ('pressione Q para sair do programa');

read(key);

if key = 'q' then exit;

Writeln ('digite o primeiro numero');

read (v1);

Writeln ('');

read;

Writeln ('digite a opera‡ao desejada');

read (op);

Writeln ('');

readln;

if (op <> '+') xor (op<>'-') xor (op<>'/') xor (op<>'*') then

begin

Writeln ('Opera‡ao nao disponivel.');

readln;

exit;

end;

Writeln ('digite o segundo numero');

readln (v2);

case op of

'+' : begin

Writeln ('--->',v1+v2);

read;

end;

'-' : begin

Writeln ('--->',v1-v2);

read;

end;

'*' : begin

Writeln ('--->',v1*v2);

read;

end;

'/' : begin

Writeln ('--->',v1/v2);

read;

end;

end;

read;

until key = 'q';

end.

so uma koisa, inda nao percebi essa opçao do highlight, bbcode ou k eh... sorry 4 the noobish....

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.