Jump to content
Sign in to follow this  
Zen

duvida d primcipiante

Recommended Posts

Zen

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.

Share this post


Link to post
Share on other sites
deathseeker25

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

Share this post


Link to post
Share on other sites
Zen

ja xprimentaei e continua a nao fazer o repeat, na tua correcçao, dizes para por ';' antes do else, mas tal nao pode ser, dá erro, e no gotoxy tb nao faz repeat, ou loop ao como lhe chamas.

Share this post


Link to post
Share on other sites
SLider3
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).

A instrução repeat ... until tb é um ciclo!

Share this post


Link to post
Share on other sites
deathseeker25
Citação
Citação
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).

A instrução repeat ... until tb é um ciclo!

LOL....nem tinha reparado na existencia do repeat mesmo....se repeat faz com que certas instruções se repitam conforme as condições é lógico que tambem seja um ciclo...

Foi mesmo falta de atenção....

Share this post


Link to post
Share on other sites
deathseeker25

Ok então uma pergunta agora minha: para fazer o repeat não é necessário colocar as condições do repeat?

Do tipo, repeat while "condições" e depois para parar o ciclo colocar a instrução break?

Ou já estarei a misturar com o C? ;)

Share this post


Link to post
Share on other sites
Zen

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 ;)

Share this post


Link to post
Share on other sites
deathseeker25

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

Share this post


Link to post
Share on other sites
Zen

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

Share this post


Link to post
Share on other sites
deathseeker25

Ok ok...o highlight torna mais fácil a leitura do código pelas pessoas que o estão a ver....

Vou então editar o teu tópico...

Usa-se assim:

[syntax=nome da linguagem]codigo[/syntax]

Da próxima já sabes :P:D

Share this post


Link to post
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
Sign in to follow this  

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