Criando uma função no OpenOffice.org Calc

Em um artigo anterior comentei sobre algumas funções internas aplicáveis à estatística. Pois então, apesar da grande quantidade de funções disponibilizadas no OpenOffice Calc, pode ser que em algum momento você precise criar uma função específica. Logo...

[ Hits: 33.209 ]

Por: jorge luiz vidal soares em 13/10/2009


Introdução



Neste artigo vou procurar mostrar o caminho das pedras para a construção de uma função no OpenOffice.org Calc, vou utilizar um conteúdo de álgebra que é uma situação matemática bem simples e que vai servir para ilustrar todo o artigo. Trata-se do cálculo das raízes de uma equação do segundo grau, aplicando a fórmula de Bhaskara.

Temos à nossa disposição um editor de macros que vem junto com o pacote OpenOffice.org Calc e que funciona com uma linguagem de programação muito simples, o Basic, mas que produz grandes resultados quando utilizada com direcionamento adequado. Vou mostrar como se cria uma função a partir de um macro comando, em um nível bem inicial.

Construir um macro comando pode ser uma tarefa fácil se você possuir uma boa lógica na hora de programar e saber bem aonde quer chegar. Estes macros comandos são muito funcionais nas tarefas corriqueiras que necessitam de uma intensa repetição de comandos. Vamos compreender o que é uma função e um procedimento o decorrer do exercício.

Muitos utilizam o termo "uma" macro, eu particularmente discordo e uso o termo "um" macro, pois trata-se de "um" comando "grande" ou grupo de comandos executados em processo batch (lote).

Preparando o ambiente de desenvolvimento

Primeiramente vamos iniciar o OpenOffice.org Calc e gravar o nosso arquivo com o nome de BHASKARA, o que pode ser feito em uma planilha vazia ou em uma planilha que você esteja desenvolvendo, até chegar o momento da necessidade de construir uma função que você não encontrou no pacote fornecido.

Vamos lá então! Dê o comando:

FILE > SAVE > BHASKARA

Vamos agora acionar o editor de macros. Dê o comando:

TOOLS > MACROS > ORGANIZE MACROS > OPENOFFICE.ORG BASIC...

Veja o comando na figura baixo:
Linux: Criando uma função no OpenOffice.org Calc

Iniciando a criação do módulo

Você deverá estar vendo uma janela parecida com a que está mostrada abaixo. Nesta janela, clique sobre o nome que você salvou o seu arquivo (observe à esquerda), então clique na opção "Standard". Agora clique no botão NEW, como mostra a figura abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Ao surgir a caixa de diálogo, digite o nome do módulo, no nosso caso use um nome sugestivo.

Digite: ModuloBhaskara

Observe que você já está na janela de edição de procedimentos e funções, isto é, um ambiente de programação em linguagem Basic. Note também que o nome da função que criamos, expressa com muita clareza o que estamos fazendo. Um erro comum em programadores sem experiência é sair nomeando procedimentos e funções, variáveis e arquivos sem um certo rigor. Isto, mais tarde, causa sérias dores de cabeça. Bom, voltando ao nosso assunto!

Existe uma procedure (procedimento), a principal do programa, chamada Sub Main, não vamos entrar no detalhe desta Sub neste artigo. A nossa Function (função) ficará digitada abaixo dela, assim como qualquer outra função que desejarmos criar para nossa coleção. Observe a tela abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Vamos começar!

Primeiro entender o que desejamos fazer: CALCULAR RAÍZES DA EQUAÇÃO DO 2° GRAU POR BHASKARA.

O que vamos precisar?

Da fórmula:
Linux: Criando uma função no OpenOffice.org Calc
De uma equação para testar:
Linux: Criando uma função no OpenOffice.org Calc
Saber quem são os coeficientes e o termo independente: a, b e c respectivamente 1, 2 e -15, da equação acima. No seu editor Basic, já aberto, digite o código abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Se estiver difícil de ver, segue abaixo o código (aproveita, copia e cola! rsrs):

Function Bhaskara() As String
Dim doubleA, doubleB, doubleC, doubleDelta, doubleX1, doubleX2 As Double
doubleA = Val(InputBox("Digite o coeficiente A:"))
doubleB = Val(InputBox("Digite o coeficiente B:"))
doubleC = Val(InputBox("Digite o termo C:"))
doubleDelta=Val((doubleB*doubleB)-(4*doubleA*doubleC))

   if doubleDelta < 0 then
      print "A equação não tem solução real !"
   exit function
   endif

doubleX1=(-doubleB+sqr(doubleDelta))/2*doubleA
doubleX2=(-doubleB-sqr(doubleDelta))/2*doubleA

msgbox doubleX1
msgbox doubleX2

End function

    Próxima página

Páginas do artigo
   1. Introdução
   2. Testando e concluindo
Outros artigos deste autor

Validação de dados no OpenOffice.org Calc

Básico do OpenOffice.org Calc

Introdução aos trabalhos com bases de dados no OpenOffice.org Calc

Criando formulário e subtotais no OpenOffice.org Calc

Filtragem de registros em bases de dados no OpenOffice.org Calc

Leitura recomendada

Um belo desenho em apenas alguns passos com o BROffice Draw

Validação de dados no OpenOffice.org Calc

Estudo de funções de estatística básica no OpenOffice Calc

Outros recursos no OpenOffice: colunas, fundo e bordas

Conheça o OpenOffice.org e o BrOffice.org

  
Comentários
[1] Comentário enviado por hideoux em 13/10/2009 - 19:37h

Legal demais!
Precisamos quebrar o mito de que apenas o excel presta...
Eu utilizo muito Calc. Para tudo, e olha que não são coisas nada simples...

Quanto mais tutoriais tivermos com coisas avançadas, melhor!
Abraço,
Hideo

[2] Comentário enviado por diegofsouza em 13/10/2009 - 20:19h

Muito bom... gostei da artigo!
Vlws

[3] Comentário enviado por rocarva em 24/11/2009 - 15:41h

Nossa o Calc 3.1 faz coisas em basic e python, onde eu consigo mais coisas para estudar ???

[4] Comentário enviado por JediMai em 29/09/2020 - 16:15h

E tem como criar uma função em que os valores sejam buscados diretamente de determinadas células da planilha, seja em endereços fixos, ou endereços relativos?
Tipo, eu inserir a função em uma célula H1, por exemplo, e a formula buscar os valores nas três células das colunas anteriores, etc?

[5] Comentário enviado por jlvidals em 08/10/2020 - 08:27h


[4] Comentário enviado por JediMai em 29/09/2020 - 16:15h

E tem como criar uma função em que os valores sejam buscados diretamente de determinadas células da planilha, seja em endereços fixos, ou endereços relativos?
Tipo, eu inserir a função em uma célula H1, por exemplo, e a formula buscar os valores nas três células das colunas anteriores, etc?



Tem como sim!
Basta vc utilizar o mesno raciocinio da função deste artigo. Se for buscar valores pode operá-los na própria função (soma, subtração, etc) se for buscar textos pode concatenar o resultado na própria célula.

[6] Comentário enviado por Telvabjr em 27/01/2021 - 11:22h

Fiz o meu assim:
Function Bhaskara(doubleA, doubleB, doubleC) As String
Dim doubleDelta, doubleX1, doubleX2 As Double
doubleDelta=Val((doubleB*doubleB)-(4*doubleA*doubleC))
if doubleDelta < 0 then
print "A equação não tem solução real !"
exit function
endif
doubleX1=(-doubleB+sqr(doubleDelta))/2*doubleA
doubleX2=(-doubleB-sqr(doubleDelta))/2*doubleA
msgbox("X1 = " + doubleX1 + "; X2 = " + doubleX2)
End function


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts