OpenOffice.org/Macro/BASIC
OOo BASIC (no Brasil, BROffice BASIC; para ver o motivo desta diferença, ver o artigo BROffice.org) é a linguagem padrão das macros do OpenOffice.org.
Apesar ambas serem baseadas no BASIC, esta linguagem e o Visual Basic (do Microsoft Office) são bem diferentes.
Apesar de BASIC ser uma linguagem case-insensitive, há algumas exceções ao lidar com objetos mais complexos[1].
Subrotinas
editarSubrotinas são blocos de instrução. Uma macro executa uma subrotina.
Uma subrotina começa com Sub e termina com End Sub.
Uma subrotina pode receber parâmetros.
Variáveis
editarA linguagem possui quatro tipos básicos de variáveis: numéricas, lógicas, strings, datas e objetos. Além disso, é possível definir novos tipos, que combinam tipos existentes (como se fossem estruturas). Dim é a forma de declarar uma variável; como o próprio nome indica, Dim naturalmente serve para declarar vetores, matrizes ou arrays.
A declaração segue a forma:
Dim x As tipo-da-variável
Dim m(3,5) As tipo-da-variável
Na declaração de vetores, matrizes e arrays, deve-se lembrar que o que é declarado é o valor final da dimensão, que começa com zero. Então, uma declaração do tipo Dim m(3,5) As Integer declara uma matriz de (3 + 1) x (5 + 1) inteiros.
Os tipos numéricos são Integer, Long Integer, Decimal, Single (ponto flutuante, precisão simples), Double (ponto flutuante, precisão dupla) e Currency (para guardar valores monetários com alta precisão; como o valor mais alto é apenas +922337203685477.5807, pode ser que daqui a algum tempo a inflação supere a precisão deste tipo).
Variáveis também podem ser declaradas usando um sigil após o Dim. Por exemplo:
Dim x$ ' x é uma String
Dim y% ' y é um Inteiro
Dim z# ' z é um Double
Os demais tipos são String, Boolean, Date e Object.
O tipo Object é usado para o tratamento de estruturas complexas. Por exemplo, ao se rodar o BASIC em um documento do Writer ou Calc, o documento em si é um objeto, associado à variável ThisComponent. Em um documento do Calc, a totalidade das planilhas é o objeto ThisComponent.Sheets. Para acessar, por exemplo, uma planilha de nome "Alunos", pode-se declarar:
Dim alunos As Object
alunos = ThisComponent.Sheets.GetByName("Alunos")
Mais detalhes sobre ThisComponent serão vistos em um capítulo próprio, mais adiante.
Como visto acima, Dim é usado para declarar uma variável, um vetor, uma matriz ou estruturas mais complexas. Uma instrução muito útil e praticamente exclusiva do BASIC é Redim, que redimensiona vetores[2]. O exemplo abaixo também ilustra o tratamento de erros (it's easier to ask for forgiveness than permission)[3]:
Dim primos(4) As Integer ' array de cinco primos
Dim proximoprimo As Integer
Dim n As Integer
primos(0) = 2
primos(1) = 3
primos(2) = 5
primos(3) = 7
primos(4) = 11
proximoprimo = 13
On Error Goto AumentaVetor
primos(5) = proximoprimo ' instrucao da' erro
Goto ErroTratado
AumentaVetor:
n = UBound(primos)
Redim Preserve primos(n + 10) As Integer
primos(5) = proximoprimo
ErroTratado:
Estruturas
editarUma forma mais complexa de definir variáveis é através de Type ... End Type[4].
Primeiro, deve-se definir o tipo. A definição dos tipos deve estar fora das subrotinas.
Type Timedefutebol
Nome as String
V as Integer
E as Integer
D as Integer
GP as Integer
GC as Integer
End Type
Dentro das subrotinas, o tipo pode ser usado, declarando-se variáveis e atribuindo-se valores:
Dim MeuCampeonato(10) as New Timedefutebol
MeuCampeonato(1).Nome = "Ibis F.C."
MeuCampeonato(1).V = 0
MeuCampeonato(1).E = 1
MeuCampeonato(1).D = 54
MeuCampeonato(1).GP = 2
MeuCampeonato(1).GC = 283
Interface gráfica
editarO BASIC possui uma interface gráfica, que permite a exibição de caixas de mensagem, diálogos, etc.
A forma mais simples é através da função MsgBox (Message Box, ou caixa de mensagem)[5]:
MsgBox "hello, world!"
Debugando os objetos
editarA orientaçãoa objetos - o que são classes, objetos, métodos, atributos, etc - será explicada em próximos capítulos (Orientação a objetos e Atributos e métodos).
Existem três atributos que sempre podem ser usados nas variáveis do tipo Objeto, que servem para debugar um programa[6]:
- .Dbg_Properties
- .Dbg_Methods
- .Dbg_SupportedInterfaces
como os próprios nomes indicam, as duas primeiras retornam, respectivamente, Atributos (propriedades) e Métodos, enquanto que a terceira retorna as Interfaces.
Por exemplo, o código abaixo mostra os métodos do objeto ThisComponent:
Dim doc As Object doc = ThisComponent MsgBox doc.Dbg_Methods
Ver também
editar- Orientação a objetos - detalhes sobre ThisDocument e outros objetos das macros
- OpenOffice.org BASIC Programming Guide, na wiki do OpenOffice
- Visual Basic - BASIC da suite Microsoft Office
Tópicos mais avançados da linguagem
editarMódulos que contém exemplos de ooBasic
editar- Teoria de números/10000 primos - mostra como construir diálogos (input usando GUI), subrotinas com parâmetros, uso avançado de objetos, loops e condicionais
Referências
editar- ↑ Case Sensitivity, no site www.services.openoffice.org
- ↑ Arrays, no site wiki.services.openoffice.org
- ↑ Error Handling, no site wiki.services.openoffice.org
- ↑ Other Instructions, site wiki.services.openoffice.org
- ↑ Message and Input Boxes (Runtime Library), no site wiki.services.openoffice.org
- ↑ Introdução ao OpenOffice.org BASIC, por Noelson Alves Duarte, site www.tc.df.gov.br