Procalc - ESCOPALescopal.com/site/wp-content/uploads/2009/06/procalc.pdf · função (soma por...

19
Procalc v1.0 Versão Programador

Transcript of Procalc - ESCOPALescopal.com/site/wp-content/uploads/2009/06/procalc.pdf · função (soma por...

 

 

Procalc v1.0 Versão Programador 

 

   

 

 

   

 

    

Conteúdo  

Procalc ...................................................................................................................................................... 4 

Primeiros botões ....................................................................................................................................... 5 

Funções Básicas ........................................................................................................................................ 6 

Como funciona .......................................................................................................................................... 7 

Funções avançadas ................................................................................................................................... 8 

Logaritmo .............................................................................................................................................. 8 

Logaritmo Natural ................................................................................................................................. 9 

Expoente ............................................................................................................................................. 10 

Factorial .............................................................................................................................................. 11 

Raiz quadrada e raiz cúbica ................................................................................................................. 12 

Seno, Cosseno e Tangente .................................................................................................................. 13 

Funções extra .......................................................................................................................................... 15 

Funções e Gráficos .................................................................................................................................. 16 

Imprimir .................................................................................................................................................. 18 

Menu Ficheiro ......................................................................................................................................... 19 

Copiar / Colar / Cortar / Seleccionar Tudo / Sair ................................................................................. 19 

Sair ...................................................................................................................................................... 19 

 

   

 

 

Procalc  

  Procalc uma calculadora científica e gráfica programada em Visual Basic. Esta 

calculadora promete ser precisa e eficiente em todo o tipo de aplicações. 

  Dispõe de um design exclusivo e é uma excelente alternativa às calculadoras 

convencionais. Esta inovadora ferramenta de trabalho, de fácil utilização mostra como é 

possível transportar com grande facilidade a programação mais avançada apenas num 

pequeno aplicativo. 

   Todo o código foi estruturado de forma a obter o melhor desempenho possível. 

  Através de avançadas fórmulas matemáticas foi‐nos possível criar comandos 

semelhantes aos das calculadoras científicas e gráficas.  

  Funções trigonométricas como seno, co‐seno e tangente, foram verdadeiros desafios 

da programação, tal como o cálculo do logaritmo, factorial e raiz cúbica. Não obstante das 

funções gráficas, não podemos deixar de mencionar a relação de conhecimentos matemáticos 

com o domínio do tratamento de imagem numa linguagem de programação. Podemos afirmar 

desta forma que atingimos com sucesso, um grande objectivo do projecto, a criação de 

gráficos através de funções. 

   

 

   

 

 

Primeiros botões 

 

 

 

 

 

 

 

  

  Criamos um controlo arrays através da propriedade caption do visual Basic. Incluímos 

também instruções, ciclos e variáveis para controlar o valor inserido, desta forma evitamos a 

criação de erros em quanto digitamos números. Este código foi construído para que quando 

carregamos nos botões numéricos, o valor seja acrescentado no display da direita para a 

esquerda.  

     

  Acrescentamos o Botão desligar e o display  da maquina. O display é uma textbox do 

visual Basic e o botão off contem a instrução Unload Me para descarregar o programa da 

memória. 

   

Private Sub Command1_Click(Index As Integer)If ind = 4 Then         prev = 0         Text1.Text = ""         ind = 0     End If     opnre = 0     If oflag = 0 Then         Text1.Text = " "     End If     oflag = 1     If Command1(Index).Caption <> "." Then            If Text1.Text <> " 0" Then                 Text1.Text = Text1.Text & Command1(Index).Caption             Else                 Text1.Text = " " & Command1(Index).Caption             End If     Else             If dflag = 0 Then                 Text1.Text = Text1.Text & "."                 dflag = 1             Else                 MsgBox ("Erro")             End If      End If               End Sub 

 

 

Funções Básicas  

  Para começar construímos as funções básicas de qualquer calculadora como, somar, 

subtrair, multiplicar, dividir, percentagem e igual. 

 

   

 

 

 

 

 

 

 

  Mais uma vez através de arrays de Index distinguimos as funções atribuídas a cada 

botão. 

  Para cada operação temos uma forma de cálculo, ou seja algumas funções já vêm 

incluídas no visual Basic, outras temos de ser nós a construir código de forma a obter o 

resultado pretendido, por exemplo: 

   

   ‐ O cálculo de um expoente pode ser feito através de um símbolo ASCII em vez de 

fazer o cálculo por extenso.  

  Ou seja, para o resultado de 53 podemos fazer de duas formas. 

 

    Resultado = 5 x 5 x 5    ou   Resultado = 5 ^ 3  

 

  O mesmo se passa com outros caracteres como a soma(+), subtracção(‐), divisão(/), 

multiplicação (x), etc. 

   Embora este método simplifique a programação existe ainda muito trabalho para 

fazer. 

  Por exemplo, para achar a raiz cúbica de um número temos que escrever a formula por 

extenso, tal como Newton a escreveu.  

   

  Para 3√6 temos : 

 

    Resultado = 6 ^ (1 / 3) 

   

Private Sub Command2_Click(Index As Integer)If VF = True Then         Dim pica As Integer         pica = Text1.Text         Text1.Text = var1 ^ pica         VF = False         Else         End If         Dim n As Long         Dim r As Long         If opnre = 0 Or Index = 4 Then             If ind = 0 Then                  prev = prev + Val(Text1.Text)             ElseIf ind = 1 Then                  prev = prev ‐ Val(Text1.Text)             ElseIf ind = 6 Then                 prev = prev Mod Val(Text1.Text)             ElseIf ind = 7 Then                 r = Fix(Val(Text1.Text))                 n = Fix(Val(prev)) 

If ((n > r Or n = r) And n > 0 And (r > 0 Or r = 0)) Then

 

 

 

Como funciona    

   A melhor forma que encontramos para calcular valores é através do armazenamento 

em variáveis, ou seja, sempre que introduzimos um valor e depois carregamos numa tecla de 

função (soma por exemplo), esse valor fica guardado na memória através de uma variável até 

ser novamente necessário. 

  Por exemplo, para o cálculo de 3+2= 

   

  No código temos declarado a variável VAR1, depois de o utilizador ter introduzido o 

número 3 e carregado na tecla (+) o valor será armazenado na memória ou seja (VAR1 = 3). 

Assim depois de o utilizador introduzir o número 2 e carregar na tecla igual (=) o código vai ser 

processado da seguinte forma: 

 

    Resultado  =  var1 + 2 

     

 

      

 

 

Funções avançadas 

Logaritmo 

 

  Já demos uma ideia de como funcionam as teclas mais básicas. Agora vamos mostrar 

como é que funcionam os botões da parte mais avançada. 

  Comecemos pelo calculo do Logaritmo.  

  Na Matemática, o Logaritmo de base b, maior que zero e diferente de 1, é uma função 

de domínio ]0;+∞[ e imagem   injectiva e contínua que devolve o expoente na equação        

bn = x. Normalmente é escrito como logb x = n. Por exemplo:   

    34 = 81    portanto    log381 = 4 

  Em termos simples o logaritmo é o expoente que uma dada base deve ter para 

produzir certa potência. No último exemplo o logaritmo de 81 na base 3 é 4, porque 4 é o 

expoente que a base 3 deve usar para obter 81. 

  Para cálculo no visual Basic fazemos: 

If Val(Text1.Text) > 0 Then 

  Text1.Text = Str((Log(Val(Text1.Text)) / Log(10))) 

Else 

  MsgBox (" ILEGAL. Log não é positivo ") 

End If 

 

  Nesta fórmula deixamos as variáveis de parte e trabalhamos directamente com os 

valores do display. Fizemos isto agora, e fazemos sempre que o resultado for de cálculo 

imediato, assim poupamos memória e aceleramos o processo. 

   

 

 

 

Logaritmo Natural 

 

  O logaritmo natural (LN) é o logaritmo de base ℮, onde ℮ é um número irracional 

aproximadamente igual a 2,718281828459045... (chamado Número de Euler). É, portanto, a 

função inversa da função exponencial. 

  O logaritmo natural é definido para todos os números reais estritamente positivos, e 

admite uma extensão como uma função complexa analítica em C/{0} . 

  Em termos simples, o logaritmo natural é uma função que é o expoente de uma 

potência de e, e aparece frequentemente nos processos naturais (o que explica o nome 

"logaritmo natural"). Esta função torna possível o estudo de fenómenos que evoluem de 

maneira exponencial. 

  No visual Basic fazemos da seguinte forma: 

If val(Text1.Text) > 0 Then 

  Text1.Text = Log(val(Text1.Text)) 

Else 

  MsgBox (" ILEGAL. LN não é positivo ") 

End If 

   

  Mas uma vez não foi necessária a criação de variáveis. 

   

 

 

 

Expoente 

 

  O expoente significa multiplicar um número real (base) por ele mesmo X vezes, onde X 

é a potência (número natural).  

Para x℮  temos: 

  If Val(Text1.Text) < 700 Then 

                Text1.Text = Str(Exp(Val(Text1.Text))) 

            Else 

                MsgBox (" OVERFLOW. Valor muito grande ") 

            End If 

  Sendo ℮ um valor constante na matemática. 

   

Para x2 e x3  temos      If (Val(Text1.Text)) < 1290 Then 

                    Text1.Text = Text1.Text ^ 2 (ou 3) 

                Else 

                    MsgBox ("OVERFLOW.VALOR MUITO GRANDE ") 

                End If 

   

Para xy temos um processo diferente, vamos por passos. 

O utilizador:  

  ‐ introduz um valor 

   ‐carrega no botão xy  [O código guarda o valor numa variável (varX).] 

  ‐ introduz o expoente 

  ‐Carrega no (=) [O código guarda o expoente noutra variável (varY) e dispõe o código 

da seguinte forma,  resultado = varX ^ varY.]   

 

Botão (xy): 

   If Text1.Text <> "" Then 

varX = Text1.Text 

Text1.Text = "" 

VF = True 

Else 

End If 

Botão  (=): 

If VF = True Then 

Dim varY As Integer 

varY = Text1.Text 

Text1.Text = varX ^ varY 

VF = False 

Else 

End If 

 

 

 

Facto

 

positiv

 

 

 

 

 

 

 

orial 

 

Na matemá

os menores o

A função fac

Por exemplo

5! = 1 × 2 × 

Esta definiç

0! = 1  

 

No visual Ba

Text1.Text =

ática, o factor

ou iguais a n. 

ctorial é norm

o, 

3 × 4 × 5 = 12

ão implica em

asic temos: 

= Str(fact(Val

ial de um núm

Isso é escrito

malmente def

20  

m particular q

l(Text1.Text))

 

mero natural

o como n! e li

finida por: 

 

que: 

n é o produt

do como "fac

o de todos os

ctorial de n ". 

s inteiros 

 

 

 

Raiz quadrada e raiz cúbica 

   

  Como já tínhamos mencionado a raiz cúbica calcula‐se através da fórmula: 

     Resultado = var1 ^ (1 / 3) 

  A raiz quadrada calcula‐se através de uma função predefinida do visual basic: 

    Resultado  =  Sqr(Val(var1)) 

 

   

 

 

 

Seno, Cosseno e Tangente 

   

     seno = cateto oposto dividido pela hipotenusa 

    cosseno = cateto adjacente dividido pela hipotenusa 

    tangente = cateto oposto dividido pelo cateto adjacente 

SENO‐ Text1.Text = Str(Sin(ang * Val(Text1.Text))) 

COSSENO‐ Text1.Text = Str((Atn(Val(Text1.Text))) / ang) 

TANGENT‐ Text1.Text = Str(Sin(ang * Val(Text1.Text)) / Cos(ang * Val(Text1.Text))) 

   

Em que str designa uma função numérica do visual Basic “ang”  o tipo de ângulo a calcular, o 

valor é predefinido e pode ser seleccionado pelo utilizador. 

  

No Visual Basic temos : 

Private Sub Option2_Click(Index As Integer) 

        Select Case Index 

            Case 0 

                ang = 3.141592654 / 180 

            Case 1 

                ang = 1 

            Case 2 

                ang = 3.141592654 / 200 

            End Select 

End Sub 

No código acima vemos que é criado 3 parâmetros “no caso de” então se tiver a trabalhar normalmente em graus o valor ângulo que será usado para converter um valor em graus é resultado de  3.141592654 conhecido por  e dividido por 180 ou seja “meia volta”. 

 

 

 

Neste caso o programador poderia deixar apenas o valor, uma vez que são valores 

fixos, o que não acontece porque iria dificultar o trabalho a programadores futuros que 

queriam analisar o código. 

 

 

   

 

 

Funções extra  

 

  Estas teclas foram criadas a pensar em possíveis problemas do utilizador, assim 

tentamos facilitar com algumas funções simples. 

   ‐ Introduz automaticamente o valor de . 

   ‐ Guarda o valor do display, numa Label ao lado. 

   ‐ Impressão rápida da janela actual. 

 

   

 

 

Funções e Gráficos  

  Uma função é determinada pelo seu gráfico e pela especificação do conjunto de 

chegada.  

  Embora o conceito de gráfico esteja relacionado ao conceito de desenho, pode‐se falar 

do gráfico de funções em espaços de dimensão infinita. 

  Através de uma PictureBox foi‐nos possível criar gráficos do tipo y=ax + b (rectas) e 

y=ax*x+bx+c (parábolas). 

  Para aceder às funções e gráficos basta aceder no menu a gráfico e clicar criar 

aparecendo o seguinte menu, em que se pode recriar na forma gráfica funções do primeiro 

grau e do segundo grau e comparando estas sobre as mesmas, uma vez que ao criar nova 

função a anterior só será apagada se clicar no botão Limpar. 

 

No visual Basic temos: 

 

Private Sub Command53_Click() 

Graph.ScaleMode = 3 

Dim a, b, RandomColor 

a = Text2.Text 

b = Text3.Text 

X = 0 

Y = 50 

RandomColor = QBColor(Rnd * 14) + 1 

For i = 1 To 10000 

 

 

 

X = (i ‐ 5000) / 50 

Y1 = a * X + b 

O que o código acima realiza é criada duas textbox do tipo text, em que são definidos valores de referencia. De seguida é criada aleatoriamente uma cor para o desenho do gráfico entrando num ciclo que realizará 10000 ciclos para os valores introduzidos nas textbox para o tipo de função em questão. Assim podemos dizer que neste caso a recta é definida por 10000 pontos, embora na realidade se saiba que as rectas em termos de pontos são  ilimitadas, em termos  de  programação  criar  um  recta  nesses  termos  o  programa  iria  entrar  em processamento infinito bloqueando como acontece diariamente ao utilizador comum. 

 

Para as  funções do segundo grau acontece exactamente o mesmo do acima descrito com a diferença que muda a expressão em questão e  como a expressão  contêm mais uma variável é adicionada uma textbox.

Private Sub Command55_Click() 

Graph.ScaleMode = 3 

Dim a, b, RandomColor 

a = Text5.Text 

b = Text4.Text 

c = Text6.Text 

 

RandomColor = QBColor(Rnd * 14) + 1 

For i = 1 To 10000 

X = (i ‐ 5000) / 50 

Y1 = a * X * X + b * X + c 

 

X1 = X 

 

 

   

 

 

Imprimir  

Esta opção do menu o que faz é um printscreen dos formulários do programa, ou seja em linguagem de utilizador comum é uma fotografia da janela do programa e passa‐a directamente para a impressora que estiver predefinida. 

 

 

Para tal acontecer é só associar o botão à função predefinida no visual Basic : 

Private Sub agora_Click() 

Me.PrintForm 

End Sub 

   

 

 

 

Menu Ficheiro 

Copiar / Colar / Cortar / Seleccionar Tudo / Sair  

 

  Copiar colar e cortar são das 3 operações mais usadas pelos utilizadores para facilitar a 

transferência de valores em programas, como tal estas não poderiam faltar, sendo estas de um 

modo geral muito idênticas e simples. 

  Tendo assim no visual Basic : 

Text1.SelText = Clipboard.GetText() 

Ou seja coloca o valor que está na caixa de transferência do Windows dentro da 

textbox Text1, sendo assim foi transferido o valor para o nosso programa existindo assim um 

interface de passagem de valores com o Windows. Para as opções Cortar / Colar / Seleccionar 

Tudo acontece exactamente o mesmo trabalhando claro com outras opções da função 

Clipboard. 

 

Sair Saí do programa. Fecha assim a form, em que é executada uma das funções mais simples do 

visual Basic. 

Private Sub sair_Click() 

        Unload Me 

       End Sub 

O parâmetro  Unload Me ao ser executado fecha a form em questão, ou seja fecha a 

form principal pois é onde está definida a função.