Procalc - ESCOPALescopal.com/site/wp-content/uploads/2009/06/procalc.pdf · função (soma por...
Transcript of Procalc - ESCOPALescopal.com/site/wp-content/uploads/2009/06/procalc.pdf · função (soma por...
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.