Anzitutto, per accedere al Basic si apre Strumenti-->Macro-->Organizza macro-->Macro (su OOo 2.3.x, mentre su OOo fino a 2.2.x era OpenOffice.Org Basic): verrà fuori una schermata così:

In dettaglio:
le librerie (Macro personali, OpenOffice.Org – Macro, ecc.) contengono i moduli (SergioC e Standard nel caso delle Macro personali) che contengono le macro, che sono i programmi in Basic.
per aggiungere una libreria o un modulo si utilizza il tasto Gestisci... .
per modificare una macro, la si seleziona e si clicca su Modifica. Successivamente, dall'interno del modulo Macro si possono creare nuove macro cliccando in basso, come per aggiungere un foglio di calcolo (è meglio sempre dare un nome significativo alle macro, per non perdersi quando se ne avranno diverse).
il bel tastino Assegna, che si nota sopra a modifica, serve ad assegnare le macro ad un pulsante della barra degli strumenti, cliccandoci uscirà la finestra Personalizza qui sotto:

e successivamente, cliccando su Importa, la finestra Aggiungi comandi: sulla Categoria, scorrendo fino alla fine, si troveranno le Macro, aprendo si troveranno le stesse finestre di prima, Macro personali, Standard, e sulla parte destra si leggerà i vari Comandi della macro (una macro può contenerne decine, sono i vari Sub... o Function...): si sceglie quello che serve e si dà l'OK, apparirà quindi un nuovo bottone sulla barra degli strumenti, in questo caso quella Standard). Non preoccupatevi se vi pare complicato, tutto si chiarirà con l'uso.
Punti base del basic:
Il programma viene eseguito riga per riga (per andare a capo si usa _ seguito subito dall'invio, facendo attenzione ad utilizzarlo dopo la fine di un comando, cioè dopo una virgola o dove c'è uno spazio) come unità a se stante; ogni riga può contenere diversi comandi, separati dai :
I commenti possono essere inseriti con il comando REM oppure con l'apostrofo '
I marcatori sono le variabili, le costanti, le funzioni o altro, che ci servono per lavorare con i programmi. Essi devono iniziare con lettere (non speciali) o con il carattere di sottolineatura. Non sono sensibili alle maiuscole/minuscole (solo le costanti UNO-API lo sono, ma per ora non ci interessano)
Sub Main REM 'Sub' è la procedura in cui vengono immessi i comandi, 'Main' è il nome
print 1+5_
-4
End Sub ' La procedura qui viene chiusa
Dà il risultato

Sub Pippo
a = 5 : b = 8 REM 'a' e 'b' sono due variabili, a cui abbiamo assegnato il valore con =
print a & b
end Sub
dà invece

Passiamo ora alle variabili:
possono venire dichiarate in maniera IMPLICITA (come negli esempi sopra, si scrive a=5 e la variabile a nasce), però non c'è controllo sul tipo della variabile, che viene quindi definita in maniera standard come VARIANT, cioè che può contenere di tutto (come un cestino vecchia maniera, per capirci); noi però preferiamo la raccolta differenziata :-) , per cui usiamo la dichiarazione ESPLICITA, per cui si usa la parola chiave DIM, che definisce la variabile, seguita da AS e dal tipo di variabile scelta, per cui:
Dim a As ....
|
Variabile |
Integer |
Long |
Single |
Double |
Currency |
Boolean |
Variant |
Array |
Date |
String |
Object |
|
Utilizzo |
N. Intero per campi di numerazione |
N. intero lungo per campi di numerazione |
per calcoli matematici con virgola mobile poco precisi |
per calcoli matematici con virgola mobile precisi |
per valuta monetaria |
vero/ falso |
di tutto |
per campi di dati (tipo questa tabella) a una o più dimensioni |
per date |
per parole |
per oggetti (servono per utilizzare le API di cui si parlerà in seguito) |
|
Invece di usare il nome, si può usare il 'codice' a fianco |
% |
& |
! |
# |
@ |
(non esiste) |
var |
(non esiste) |
(non esiste) |
$ |
(non esiste |
STRING: la variabile stringa viene dichiarata così:
Dim a As String REM questa è la dichiarazione della variabile
a = “ciao” REM questa è l'assegnazione della variabile, oppure attribuzione
se una stringa è molto lunga, alle virgolette si fa seguire un +_ e invio, così si può proseguire su più righe:
Sub Pippo
Dim a$ REM assegnazione della variabile fatta in maniera abbreviata
a="ciao"+_
", come va?"
print a
end Sub
dà

ARRAY: sono campi di dati, come la tabella sopra, e si dichiarano così:
Dim mia_matrice()
dove mia_matrice è la variabile Array, mentre tra le due parentesi viene dichiarato il numero massimo di campi e quante dimensioni ha la matrice. Per intenderci, (0) vuole dire una matrice con una variabile, (1) con due variabili, (2,2) con 3 variabili x due dimensioni, quindi 3x3=9 variabili (un foglio di calcolo con 3 colonne e 3 righe). (n.b.: il conteggio in basic parte da 0, quindi 1 è la seconda variabile).
Le variabili della matrice sopra prendono il tipo variante, non essendo definito lo stesso. Per precisarlo, basta aggiungere:
Dim mia_matrice() As Integer
ad esempio, per il tipo intero.
Le altre variabili o sono di utilizzo
immediato (tipo Integer, Currency, Date) o troppo complesso (Object),
per cui è inutile tediarvi.
Inoltre, per dichiarare più variabili contemporaneamente si può fare così:
Dim a As String, b As String, c As Integer
(Si potrebbe anche così: Dim a, b, c As String --> ma in questo caso a e b sono Variant e non String, per cui è meglio evitare. )
DURATA delle variabili
Le variabili hanno una vita variabile (chiaro no?), cioè si può scegliere fino a quando devono esistere. Ci sono le variabili:
Locali: sono dichiarate all'interno di una funzione (ancora da spiegare, FUNCTION) o di una procedura (quella usata sopra, SUB), e quando la funzione/procedura finisce, spariscono. Le variabili a, b della SUB Pippo, dopo la chiamata End Sub non ci sono più.
Private: valgono solo all'interno del modulo in cui sono dichiarate (Private a As Integer)
Pubbliche: sono dichiarate prima della funzione/procedura (in generale, i moduli), nell'intestazione, e valgono per tutti i moduli.
Quindi:
Option Explicit
Dim a As Integer
Sub prova
bella REM qui viene richiamata la procedura “bella”, che assegna alla variabile pubblica a il valore 5
Print a
bello REM qui viene richiamata la procedura “bello”, che assegna alla variabile pubblica a il valore a+5
Print a
End Sub
Sub bella As Integer
a = 5
End Sub
Sub bello As Integer
a=a+5
End Sub
Dà come risultato prima
e poi
.
E' possibile dichiarare una variabile pubblica anche così:
Public a As Integer
però non è possibile usare questa dichiarazione all'interno di una procedura, quindi va messo nell'intestazione lo stesso.
Globali: sono molto simili alle variabili pubbliche, solo che i loro valori vengono conservati anche dopo l'esecuzione della procedura.
Si definiscono con la chiamata Const variabile =
Si possono definire anche come tipo, utilizzando As e indicando il tipo, ad esempio:
Const a As integer = 10
Oppure:
Const a = 10
Adesso possiamo vedere le procedure e le funzioni, che abbiamo comunque già anticipato.
Le procedure SUB sono i contenitori del programma, o meglio dei moduli che ne fanno parte: come abbiamo visto, all'interno di una SUB si può richiamarne un'altra, e lo stesso vale per le funzioni FUNCTION. La differenza tra le due è che le SUB non danno un risultato, mentre le FUNCTION, come la calcolatrice, danno un risultato.
Quindi:
Option Explicit
Sub prova
Print numero_intero
End Sub
Function barca
numero_intero= 5
End Function
dà come risultato

Si può dichiarare il tipo di una funzione come una variabile (Function numero_intero As Integer).
Si può uscire da una funzione/procedura prima della sua fine naturale con le chiamate Exit Sub / Exit Function, se si volesse uscire nel caso di un errore o nel caso in cui certe variabili raggiungano determinati valori. Più avanti verrano usate.
Una procedura/funzione può accettare uno o più parametri, cioè si può definire che variabili deve “chiedere” per funzionare. Un esempio è più immediato:
Option Explicit
Sub prova
Print barca (33, " trentini trotterellavano verso Trento")
End Sub
Function barca (a as Integer, b as String)
barca = a & b
End Function
dà come risultato

Un parametro può essere passato anche come valore, in modo che non venga influenzata da successive modifiche, scrivendo ByVal prima della dichiarazione della variabile. Ad esempio:
Option Explicit
Sub prova
Dim a As Integer
Dim b As String
a = 33
b = " trentini trotterellavano verso Trento"
barca (a,b)
print a & b
End Sub
Sub barca (a as Integer, b as String)
a = 4
b = " gatti dormivano sul divano"
End Sub
dà come risultato

mentre se sulla 10^ riga mettiamo
Sub barca (ByVal a as Integer, ByVal b as String)
dà come risultato

I parametri possono essere passati anche come opzionali, basta farli precedere dalla parola Optional
Per eseguire delle parti del programma in base a certe condizioni, si utilizzano le istruzioni condizionali:
istruzione If Then ... (Else) ... (Else If) ...End If (tra parentesi le parti opzionali)
Facciamo un esempio:
Option Explicit
Sub prova
Dim a As Integer
a = 5
If a = 5 Then
print "ciao"
EndIf
End Sub
dà come risultato

In caso la condizione If non sia raggiunta, si può indicare con Else cosa fare. Se si vogliono verificare più condizioni, si può usare Else If.
istruzione Select Case ... Case ... (Case) ... End Select: serve per dei casi particolari di If .. Then, quando si hanno diverse condizioni:
Option Explicit
Sub prova
Dim a As Integer
Dim risultato As String
a = 5
Select Case a
Case 1
risultato = "è uno"
Case 2 to 4
risultato = "è 2 o 3 o 4"
Case Else
risultato = "è qualcos'altro"
End Select
print risultato
End Sub
dà come risultato:

Per eseguire un'operazione un'infinità di volte (che è quello per cui alla fin fine sono creati i programmi) si utilizzano i cicli:
ciclo For ... Next viene eseguito per un numero fisso di volte
Dim variabile As Integer
For variabile = 1 To 10 REM si può usare anche un incremento diverso da 1, scrivendo Step
REM (incremento)
.... REM questa parte viene eseguita per tante volte come scelto sopra
Next variabile
si può anche uscire, ad esempio nel caso si verifichino determinate condizioni, con Exit For , ad esempio inserendo le due righe sotto all'interno del modulo sopra, si uscirà al quarto passaggio:
If variabile = 4 Then
Exit For
ciclo Do ... Loop è simile al precedente, solo che viene eseguito indefinitamente. Per terminarlo, si possono usare diversi sistemi:
Do While ... Loop : si esce quando la condizione dopo il While non è più soddisfatta
per esempio:
dim variabile As Integer
variabile = 0
Do While variabile < 5
variabile = variabile +1
Loop
esegue il ciclo 5 volte;
Do Until ... Loop : si esce quando la condizione dopo l'Untile è soddisfatta;
Do ... Loop While: come la prima, solo che in ogni caso fa il primo passaggio;
Do ... Loop Until: come la seconda, solo che in ogni caso fa il primo passaggio.
Ultima modifica: