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 Private Sub Command1_Click(Index As Integer) If ind = 4 Then prev = 0 Text1.Text = "" ind = 0 opnre = 0 If oflag = 0 Then Text1.Text = " " oflag = 1 If Command1(Index).Caption <> "." Then If Text1.Text <> " 0" Then Text1.Text = Text1.Text & Command1(Index).Caption Text1.Text = " " & Command1(Index).Caption If dflag = 0 Then Text1.Text = Text1.Text & "." dflag = 1 MsgBox ("Erro") End Sub 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.
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. Private Sub Command2_Click(Index As Integer) If VF = True Then Dim pica As Integer pica = Text1.Text Text1.Text = var1 ^ pica VF = False Dim n As Long Dim r As Long If opnre = 0 Or Index = 4 Then If ind = 0 Then prev = prev + Val(Text1.Text) If ind = 1 Then prev = prev Val(Text1.Text) If ind = 6 Then prev = prev Mod Val(Text1.Text) If 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 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 5 3 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)
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 b n = x. Normalmente é escrito como log b x = n. Por exemplo: 3 4 = 81 portanto log 3 81 = 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))) MsgBox (" ILEGAL. Log não é positivo ") 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)) MsgBox (" ILEGAL. LN não é positivo ") 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))) MsgBox (" OVERFLOW. Valor muito grande ") Sendo um valor constante na matemática. Para x 2 e x 3 temos If (Val(Text1.Text)) < 1290 Then Text1.Text = Text1.Text ^ 2 (ou 3) MsgBox ("OVERFLOW.VALOR MUITO GRANDE ") Para x y temos um processo diferente, vamos por passos. O utilizador: introduz um valor carrega no botão x y [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 (x y ): If Text1.Text <> "" Then varx = Text1.Text Text1.Text = "" VF = True Botão (=): If VF = True Then Dim vary As Integer vary = Text1.Text Text1.Text = varx ^ vary VF = False
Factorial Na matemática, o factorial de um número natural n é o produto de todos os inteiros positivos menores ou iguais a n. Isso é escrito como n! e lido como "factorial de n ". A função factorial é normalmente definida por: Por exemplo, 5! = 1 2 3 4 5 = 120 Esta definição implica em particular que: 0! = 1 No visual Basic temos: Text1.Text = Str(fact(Val(Text1.Text)) )
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) End Sub Select Case Index Case 0 ang = 3.141592654 / 180 Case 1 ang = 1 Case 2 ang = 3.141592654 / 200 End Select 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.