• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Zen

duvida d primcipiante

11 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e eh memso ai k tenho o problema, pq o loop n ta a acontecer...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora