OpenOffice.org/Macro/BASIC

Origem: Wikilivros, livros abertos por um mundo aberto.

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[editar | editar código-fonte]

Subrotinas 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[editar | editar código-fonte]

A 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[editar | editar código-fonte]

Uma 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[editar | editar código-fonte]

Ver módulo principal: /GUI/

O 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[editar | editar código-fonte]

A 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 | editar código-fonte]

Tópicos mais avançados da linguagem[editar | editar código-fonte]

Módulos que contém exemplos de ooBasic[editar | editar código-fonte]

  • 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 | editar código-fonte]

  1. Case Sensitivity, no site www.services.openoffice.org
  2. Arrays, no site wiki.services.openoffice.org
  3. Error Handling, no site wiki.services.openoffice.org
  4. Other Instructions, site wiki.services.openoffice.org
  5. Message and Input Boxes (Runtime Library), no site wiki.services.openoffice.org
  6. Introdução ao OpenOffice.org BASIC, por Noelson Alves Duarte, site www.tc.df.gov.br