Jump to content
Kermi

Calculadora Básica

Recommended Posts

Kermi

Boa Tarde Pessoal!

Eu estou num curso de Informática e tenho promgramação.

Tive de fazer uma especie de calculadora por isso para quem precise esta aqui o codigo:

Sintam-se Livres para utilizar, e modificar o codigo!

Program Study1;

var num1, num2, Op, Op2, VClose : Integer;

BEGIN

gotoxy (10,5);
writeln ('Introduza Dois Numeros Inteiros: ');
gotoxy (10,7);
Readln (Num1);
gotoxy (10,9);
Readln (num2);
gotoxy (10,11);
writeln ('Escolha Uma Operação para Fazer com os Numeros'); {O Menu começa Aqui}
gotoxy (10,13);
writeln ('1- Adição');
gotoxy (10,15);
writeln ('2- Subtração');
gotoxy (10,17);
writeln ('3- Multiplicação');
gotoxy (10,19);
writeln ('4- Divisão (Inteira)');
gotoxy (14,21);
Writeln ('Opção: ');
gotoxy (21,21);
Read (Op);
{Repeat Global, Para Voltar a Fazer O Programa}
Repeat
//Se escolher Opção Nao existente ira voltar a aprecer o Menu

If (Op<0) or (Op>4)
Then
{Primeiro Ciclo}
Begin
Repeat
ClrScr;
gotoxy (10,9);
Writeln ('A sua Escolha é Invalida!!!');
gotoxy (10,11);
writeln ('Escolha Uma Operação para Fazer com os Numeros');
gotoxy (10,13);
writeln ('1- Adição');
gotoxy (10,15);
writeln ('2- Subtração');
gotoxy (10,17);
writeln ('3- Multiplicação');
gotoxy (10,19);
writeln ('4- Divisão (Inteira)');
gotoxy (14,21);
Writeln ('Opção: ');
gotoxy (21,21);
Read (Op);
Until (Op>=0) And (Op<=4);
End;

{A seleção da Operação}

Case Op of
1: Begin
gotoxy (10,23);
writeln ('O Resultado da Adição é: ',num1+num2);
End;

2: Begin
gotoxy (10,23);
writeln ('O Resultado da Subtração é: ',num1-num2);
End;

3: Begin
gotoxy (10,23);
writeln ('O Resultado da Multiplicação é:',num1*num2);
End;

4: Begin
gotoxy (10,23);
writeln ('O Resultado da Divisão é: ',num1 DIV num2);
End;
End;
//Aqui é o Repeat Para Fechar ou Repetir
Repeat
gotoxy (10,25);
writeln ('Para Fazer Outra Opção Prima 1 (Um), Para Sair Prima 2 (Dois)');
gotoxy (10,27);
Read (Op2);

If (Op2=1)
Then

Begin
Repeat
ClrScr;
gotoxy (10,9);
writeln ('Escolha Uma Operação para Fazer com os Numeros');
gotoxy (10,11);
writeln ('1- Adição');
gotoxy (10,13);
writeln ('2- Subtração');
gotoxy (10,15);
writeln ('3- Multiplicação');
gotoxy (10,17);
writeln ('4- Divisão (Inteira)');
gotoxy (14,19);
Writeln ('Opção: ');
gotoxy (21,19);
Read (Op);
Until (Op>0) And (Op<=4);
Case Op of
1: Begin
gotoxy (10,23);
writeln ('O Resultado da Adição é: ',num1+num2);
End;

2: Begin
gotoxy (10,23);
writeln ('O Resultado da Subtração é: ',num1-num2);
End;

3: Begin
gotoxy (10,23);
writeln ('O Resultado da Multiplicação é:',num1*num2);
End;

4: Begin
gotoxy (10,23);
writeln ('O Resultado da Divisão é: ',num1 DIV num2);
End;
End;
End;

Until (Op2=2);
If (Op2=2)
Then VClose := 0;
Until (VClose=0);
CLRSCR;
End.

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
thoga31

Conselhos:

1) Indenta o código.

2) Não abuses tanto do GotoXY, torna o código quase ilegível.

3) Se me apetecer fazer uma divisão por zero, o programa nem sequer me vai alertar para o facto: vai abaixo.


Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

use variáveis reais

Deixaria de ser uma divisão inteira. O mais correcto é introduzir uma condição no programa e avisar o utilizador de que não será possível dividir num1 valor por 0, executando a divisão apenas se num2 for diferente de 0.

Share this post


Link to post
Share on other sites
thoga31

use variáveis reais

<irony> Uma boa solução para evitar a divisão por zero... </irony>

Como o @pwseo disse, a solução passa por controlar se num2 é zero. Isto porquê? Porque num2 é o divisor em num1/num2. 0/num2 dá 0, mas num1/0 dá erro. Conclusão: uso de um if.


Knowledge is free!

Share this post


Link to post
Share on other sites
Dreigon Fenriz

sim sim,eu não entendi o que ele queria por isso coloquei essa de variáveis reais,quando vi um 0 e divisão na mesma frase veio essa confusão

Share this post


Link to post
Share on other sites
thoga31

Ok... Não entendi de onde veio a confusão, creio que o OP foi muito claro na sua questão, mas acredito que sim.

@Kermi, já resolveste essa questão da divisão por zero? ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

sim sim,eu não entendi o que ele queria por isso coloquei essa de variáveis reais,quando vi um 0 e divisão na mesma frase veio essa confusão

Mas é uma conclusão errada. Muito embora em Pascal o resultado possa estar definido para números reais (seria +Inf ou -Inf), na matemática o resultado da divisão por zero é indefinido seja para números inteiros, seja para números reais -- não faz sentido. Podemos falar de limites quando o divisor tende para zero, mas não podemos falar de divisões por zero como tendo resultados reais.

Share this post


Link to post
Share on other sites
Dreigon Fenriz

bem vcs não estão em minha mente para saber o que pensei na hora que fui escrever,então não tentem me rebaixar com indiretas de (ele não sabe a questão)

o todo da confusão foi que crie uma calculadora de expressões em pascal,que tinha poderia ter divisão por 0 em uma expressão digitada,lembro de ter declarado algumas variáveis como reais ,mas não foi só com isso que resolvi o problema então na hora que fui da a resposta não tentei compreender de todo o enunciado e por isso coloquei tal resposta

Share this post


Link to post
Share on other sites
thoga31

De facto não estamos na tua mente, mas ninguém te está a rebaixar. Apenas comentamos com base na informação que temos, e a informação que temos é 1) eu propus um controlo da divisão por zero, 2) o OP perguntou como, e 3) tu disseste "usa variáveis reais". Portanto, com base nisto, estamos a dizer que isto não resolve o problema. Se sabes que não resolve o problema, isso não sabemos. Demonstraste isso na altura? Não. Disseste que te tinhas confundido com a frase do OP. Assumimos que a confusão veio na mesma do facto de, aparentemente, teres assumido que as variáveis reais resolviam a questão.

Portanto, da mesma forma que nós não estamos na tua mente, vais-me agora dizer que estás tu nas nossas para saberes que estamos a rebaixar-te com indirectas?... É que se estás, lamento, mas estás a sintonizar as mentes erradas, muda a frequência da bola de cristal.

Edited by thoga31

Knowledge is free!

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

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