Advertisement
Guest User

calcBasica

a guest
Sep 21st, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.18 KB | None | 0 0
  1. program calcBasica;
  2. //Objetivo: Calcular as funçoes basicas
  3. //Responsável: Mateus Gurgel
  4. //Data:11/09/2014
  5.  
  6. uses crt; //Biblioteca necessaria para o comando clrscr
  7.  
  8. procedure instrucoes(); // Comandos e instruções do programa
  9. begin
  10.     writeln('Comandos:');
  11.     writeln;
  12.    
  13.     writeln('   +    : Soma');
  14.     writeln('   -    : Subtracao');
  15.     writeln('   /    : Divisao');
  16.     writeln('   *    : Multiplicacao');
  17.     writeln('   i    : Inversao');
  18.     writeln('   p    : Potenciacao');
  19.     writeln('   r    : Raiz Quadrada');
  20.     writeln;
  21.    
  22.     writeln('  dec   : Ajustar numero de casas decimais (Padrao = 4, Max = 15)');
  23.     writeln('  sair  : Sair');
  24.     writeln('   0    : Limpar memoria');
  25.     writeln('   ?    : Instrucoes');
  26.     writeln;
  27.    
  28. end;
  29.  
  30. //Declaração de variaveis
  31. var
  32. num2, resultado, base: real;            // Variáveis reais para a maioria das operações
  33. expoente:integer;                       // Variável para expoente inteiro
  34. comando: string;                        // Variável para escolha de operação
  35. controle,primVez,inverter : boolean;    // Variáveis de controle booleanas
  36. decimal:integer;                        // Variável para ajuste de casas decimais
  37. i:integer;                              // Variável de controle inteira
  38.  
  39. //Inicio do programa
  40. begin
  41.  
  42. //Inicializando variaveis
  43.     controle:=true;
  44.     primVez :=true;
  45.     resultado:=0;
  46.     decimal:=4;
  47.    
  48. //Introdução ao usuário
  49.     writeln('Calculadora basica');
  50.     writeln;   
  51.     instrucoes();
  52.    
  53. //Selecionando função matemática
  54.     while controle do
  55.         begin
  56.         writeln;
  57.         write('Digite um comando: ');
  58.         readln(comando);
  59.         writeln;
  60.        
  61. //Comandos
  62.         case(comando)of
  63.        
  64.             (*Soma*)
  65.             '+':
  66.             begin
  67.                 if primVez then
  68.                 begin
  69.                     primVez:=false;
  70.                     write('Digite o primeiro valor: ');
  71.                     readln(resultado);
  72.                 end;
  73.                
  74.                 write('Digite o segundo valor: ');
  75.                 readln(num2);
  76.                 resultado:=resultado + num2;
  77.                    
  78.                 writeln('Soma = ',resultado:0:decimal);            
  79.             end;           
  80.            
  81.            
  82.             (*Subtração*)
  83.             '-':
  84.             begin
  85.                 if primVez then
  86.                 begin
  87.                     primVez:=false;
  88.                     write('Digite o primeiro valor: ');
  89.                     readln(resultado);
  90.                 end;
  91.                
  92.                 write('Digite o segundo valor: ');
  93.                 readln(num2);
  94.                 resultado:=resultado-num2;
  95.                
  96.                 writeln('Subtracao = ',resultado:0:decimal);               
  97.             end;
  98.            
  99.            
  100.             (*Divisão*)
  101.             '/':
  102.             begin
  103.                 if primVez then
  104.                 begin
  105.                     primVez:=false;
  106.                     write('Digite o numerador:');
  107.                     readln(resultado);
  108.                 end;
  109.                
  110.                 write('Digite o denominador: ');
  111.                 readln(num2);
  112.                
  113.                 while num2=0 do
  114.                 begin
  115.                     write('O denominador nao pode ser zero. Por favor digite outro numero: ');
  116.                     readln(num2);
  117.                 end;                   
  118.                            
  119.                 resultado:=resultado/num2;
  120.                
  121.                 writeln('Divisao = ', resultado:0:decimal);
  122.             end;
  123.            
  124.             (*Multiplicação*)
  125.             '*':
  126.             begin
  127.                 if primVez then
  128.                 begin
  129.                     primVez:=false;
  130.                     write('Digite o primeiro valor:');
  131.                     readln(resultado);
  132.                 end;
  133.                
  134.                 write('Digite o segundo valor: ');
  135.                 readln(num2);
  136.                 resultado:=resultado*num2;
  137.                
  138.                 writeln('Multiplicacao = ', resultado:0:decimal);
  139.             end;
  140.            
  141.             (*Inversao*)
  142.             'i':
  143.             begin
  144.                 if primVez then
  145.                 begin
  146.                     primVez:=false;
  147.                     write('Para inversao, digite o valor: ');
  148.                     readln(resultado);
  149.                 end;
  150.                 if resultado = 0 then
  151.                     writeln('Inversao nao permitida. Denominador nao pode ser zero.')
  152.                 else
  153.                 begin
  154.                     resultado:= resultado / sqr(resultado);                
  155.                     writeln('Inversao =  ', resultado:0:decimal);
  156.                    
  157.                 end;
  158.             end;
  159.            
  160.             (*Potenciacao*)
  161.             'p':
  162.             begin
  163.                 if primVez then
  164.                 begin
  165.                     primVez:=false;
  166.                     write('Digite o valor da base:');
  167.                     readln(resultado);
  168.                 end;
  169.                     base:=resultado;
  170.                     resultado:=1;
  171.                     write('Digite o valor do expoente:');
  172.                     readln(expoente);
  173.                    
  174.                     if expoente = 0 then
  175.                         resultado:=1
  176.                        
  177.                     else
  178.                     begin
  179.                         if expoente < 0 then
  180.                         begin
  181.                             expoente:=expoente * -1;
  182.                             inverter:=true;
  183.                         end;               
  184.                    
  185.                         for i:=1 to expoente do
  186.                         begin
  187.                             resultado:=resultado * base;                       
  188.                         end;
  189.                    
  190.                         if inverter then
  191.                             resultado:= resultado / sqr(resultado);
  192.                     end;
  193.                     writeln('Potenciacao =  ', resultado:0:decimal);               
  194.             end;
  195.            
  196.             (*Raiz Quadrada*)
  197.             'r':
  198.             begin
  199.                 if primVez then
  200.                 begin
  201.                     primVez:=false;
  202.                     write('Para raiz quadrada, digite o valor:');
  203.                     readln(resultado);
  204.                 end;
  205.                
  206.                 resultado:=sqrt(resultado);
  207.                 writeln('Raiz quadrada = ',resultado:0:decimal);
  208.             end;
  209.            
  210.             (*Casas Decimais*)
  211.             'dec':
  212.             begin
  213.                 write('Digite o numero de casas decimais desejado: ');
  214.                 readln(decimal);
  215.                
  216.                 repeat
  217.                     write('O intervalo de casas decimais possiveis e entre 0 e 15. Digite outro valor: ');
  218.                     readln(decimal);
  219.                 until(decimal>0) and (decimal<15);
  220.             end;
  221.            
  222.             (*Limpar Memória*)
  223.             '0':
  224.             begin
  225.                 resultado:=0;
  226.                 primVez:=true;
  227.                 clrscr;
  228.                 writeln('A memoria foi limpa com sucesso!');
  229.             end;
  230.            
  231.             (*Sair Do Programa*)
  232.             'sair':
  233.             begin
  234.                 writeln('Obrigado por usar esse programa! Aperte ENTER para fechar.');
  235.                 controle:=false;
  236.                 readln;
  237.             end;
  238.            
  239.             (*Instruçoes*)
  240.             '?':
  241.             begin
  242.                 instrucoes();
  243.             end;
  244.            
  245.         end;
  246.     end;
  247. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement