|
![]() |
||
calculadora em pascal: preciso de ajuda!
|
||
. Nós temos 754.122 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Super Participante
|
olá!
preciso fazer uma calculadora em pascal. mas tenho algumas duvidas... eu pensei em usar procedures, mas nao deu muito certo. Ele checa certo todas as procedures, porem exibe o resultado de todas as operaçoes. então, pensei em fazer usando uma função que verificasse o char digito. Por exemplo, quando for * realizar uma multiplicaçao. Mas nao tenho ideia de como passar isso pra pascal. alguma ajuda? |
|
|
|
|
|
#2 (permalink) |
|
Membro Senior
|
Tenta fazer isso:
if(operacao='+') then calculo := num1 + num2 else if(operecao='-') then calculo := num1 + num2 . . . Mas dá para fazer o numero(var calculo) ir acumulando. Dai fica uma calculadora de verdade. Mas a logica é quase essa. |
|
|
|
|
|
#3 (permalink) |
|
Super Participante
|
jricardoss, valeu!
por enquanto, deixa ela assim. um passo de cada vez! =) abraços |
|
|
|
|
|
#4 (permalink) |
|
Super Participante
|
gostaria agora que ela ficasse aberta até que eu entrasse com um determinado comando...
por exemplo... writeln ('se deseja sair, tecle s'); caso a pessoa nao tecle s, o programa continua funcionando... o meu codigo esta assim: Código:
|
|
|
|
|
|
#5 (permalink) | |
|
Membro Senior
Registrado em: Nov 2004
Localização: Sampa
Mensagens: 347
Reputação: 15
![]() |
Citação:
use um while declare uma variável de checagem e de um while nela Código:
while ( KeyPressed <> s ) do //Seu programa aki. ps: n testei nenhum dos 2 mas tenho quase certeza q ao menos o primeiro está certo,heheh |
|
|
|
|
|
|
#6 (permalink) |
|
Membro Senior
|
Olhá uma modificada.
Código:
O cont ali só serve para saber se o numero é o primeiro digitado para não dar opção sem necessidade. |
|
|
|
|
|
#7 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Isso mesmo... agora veja como vai ficar seu código se, em vez de fazer esse catatau de "ifs", usar a construção "case variavel of"...
tipo: Código:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#8 (permalink) |
|
Membro Senior
|
E que eu não gosto do CASE do Pascal. Se fosse C ou PHP ...
![]() |
|
|
|
|
|
#9 (permalink) |
|
General de Pijama
|
Uma sugestão seguindo outra linha: uma implementação em RPN é mais simples e permite ao usuário mais flexibilidade.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#10 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ah, antes que eu esqueça, Trakinas e jricardoss, a "armadilha" também está no código de vocês, e praticamente no mesmo lugar.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#11 (permalink) |
|
Veterano
|
Program Calculator;
Uses CRT; label inicio,soma,sub,divi,muti,result; var num1,num2,resultado:real; contador:integer; operador:char; Begin clrscr; inicio: num1:=0; num2:=0; clrscr; Writeln('Digite um numero: '); Readln(num1); Write('OPERADOR '); read(operador); if (operador = '+') then begin readln(num2); resultado:=num1 + num2; end; if (operador = '-') then begin readln(num2); resultado:=num1 - num2; end; if (operador = '*') then begin readln(num2); resultado:=num1 * num2; end; if (operador = '/') then begin readln(num2); resultado:= num1 / num2; end; write('OPERADOR'); read(operador); if (operador = '+') then begin goto soma; end; if (operador = '-') then begin goto sub; end; if (operador = '*') then begin goto muti; end; if (operador = '/') then begin goto divi; end; if (operador = '=') then begin goto result; end; soma: begin Writeln (''); readln(num2); resultado:=resultado + num2; write('OPERADOR'); read(operador); if (operador = '+') then begin goto soma; end; if (operador = '-') then begin goto sub; end; if (operador = '*') then begin goto muti; end; if (operador = '/') then begin goto divi; end; if (operador = '=') then begin goto result; end; end; sub: begin Writeln (''); readln(num2); resultado:=resultado - num2; write('OPERADOR'); read(operador); if (operador = '+') then begin goto soma; end; if (operador = '-') then begin goto sub; end; if (operador = '*') then begin goto muti; end; if (operador = '/') then begin goto divi; end; if (operador = '=') then begin goto result; end; end; divi: begin Writeln (''); readln(num2); resultado:=resultado / num2; write('OPERADOR'); read(operador); if (operador = '+') then begin goto soma; end; if (operador = '-') then begin goto sub; end; if (operador = '*') then begin goto muti; end; if (operador = '/') then begin goto divi; end; if (operador = '=') then begin goto result; end; muti: begin Writeln (''); readln(num2); resultado:=resultado * num2; write('OPERADOR'); read(operador); if (operador = '+') then begin goto soma; end; if (operador = '-') then begin goto sub; end; if (operador = '*') then begin goto muti; end; if (operador = '/') then begin goto divi; end; if (operador = '=') then begin goto result; end; result: begin Writeln (Resultado :5:2); repeat Writeln('Zerar? s/n'); operador:=readkey; operador:=upcase(operador); until ((operador = 'S') OR (OPERADOR = 'N')); if (operador = 'S') then begin goto inicio; end; if (operador = 'N') then; begin writeln('FIM'); end; end; end; end; readkey; end. ta ae funciona ... apesar de meio grande hehe da um desconto to no primeiro periodo ainda de ciencia da computacao!!
__________________
Gente nos fins de semana ![]() Windows 7 deskWindows 7 note* Linux note
|
|
|
|
|
|
#12 (permalink) |
|
Veterano
|
agora q eu vi eu copiei e colei fico sem identação hehe!!
__________________
Gente nos fins de semana ![]() Windows 7 deskWindows 7 note* Linux note
|
|
|
|
|
|
#13 (permalink) |
|
General de Pijama
|
Coloca entre as tags
Código:
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#14 (permalink) |
|
Veterano
|
am valew nem sabia disso
mas agora ja he vo cola denovo n ... nem salvei uahauhauhauha hehe ae mas a calculadora?? fico boa em em?hehe
__________________
Gente nos fins de semana ![]() Windows 7 deskWindows 7 note* Linux note
|
|
|
|
|
|
#15 (permalink) | |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Se bem que não gostei muito do que vi... com certeza dá pra reescrever seu código sem usar o famigerado "goto".
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
|
#16 (permalink) |
|
Membro Senior
|
É verdade, mata esses goto's que goto é coisa de QBasic. uhahuahuauhhauhuhuhaaaaaaaaaa
|
|
|
|
|
|
#17 (permalink) |
|
Veterano
|
po o goto acho o mais facil.. hehe
tipo oq vcs recomndam usar...?? Po eu falei to no primeiro periodo de CC...... ae vc usaria oq pra tipo voltar e tal?? pq vc tento rodar essa minha calculadora de 4 operações??funcionalidade ok!! tipo pq a que tinha la em cima eu olhei e vi que tipo a parada do contador .. sei la (eu tentei fazer parecido pq tem muito menos codigo ne!!) mas n da a funcionalidade ... tipo eu quis fazer uma que vc poe um numero .. escolhe a operação.. digita otro.. (ai se quizer escolhe otra operação ou se por =vai direto para o resultado) e tem a opção de voltar ao inicio(ai t ao porque dos goto)... eu n sei otra função q retorne ou de saltos!!) mas ae to aprendendo!!
__________________
Gente nos fins de semana ![]() Windows 7 deskWindows 7 note* Linux note
|
|
|
|
|
|
#18 (permalink) |
|
General de Pijama
|
Use laços (do, while ou for para voltar... gotos acabam com a estrutura do seu código, o deixa muito propenso a erro e muito inflexível para futuras edições. Além de deixar difícil de ler, o que eu, sinceramente, acho pior.
goto nem é algo ensinado quando se ensina C. Se te ensinaram, fizeram mal, ele SEMPRE é substituível e sua presença só não acaba com o código em poucos casos.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#19 (permalink) | |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
|
#20 (permalink) |
|
General de Pijama
|
Eu também. Depois de anos programando, só fui usar goto (que eu sabia muito bem como dispensar) mês passado. O código sem ele nem ficaria tão grande assim, mas como seria um só e ajudaria a deixar tudo bem claro, preferi usar.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
![]() |
| Opções do Tópico | |
|
|