Zen Posted June 26, 2005 Report Share Posted June 26, 2005 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 More sharing options...
deathseeker25 Posted June 26, 2005 Report Share Posted June 26, 2005 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 More sharing options...
Zen Posted June 26, 2005 Author Report Share Posted June 26, 2005 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. Link to comment Share on other sites More sharing options...
SLider3 Posted June 26, 2005 Report Share Posted June 26, 2005 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! Link to comment Share on other sites More sharing options...
deathseeker25 Posted June 26, 2005 Report Share Posted June 26, 2005 Citação 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.... Link to comment Share on other sites More sharing options...
Zen Posted June 26, 2005 Author Report Share Posted June 26, 2005 e eh memso ai k tenho o problema, pq o loop n ta a acontecer... Link to comment Share on other sites More sharing options...
deathseeker25 Posted June 26, 2005 Report Share Posted June 26, 2005 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? ;) Link to comment Share on other sites More sharing options...
Zen Posted June 26, 2005 Author Report Share Posted June 26, 2005 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 More sharing options...
deathseeker25 Posted June 26, 2005 Report Share Posted June 26, 2005 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 More sharing options...
Zen Posted June 28, 2005 Author Report Share Posted June 28, 2005 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 More sharing options...
deathseeker25 Posted June 28, 2005 Report Share Posted June 28, 2005 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 😛😄 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