Home

Concetti fondamentali per iniziare con il Basic in OOo

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:



Punti base del basic:

  1. 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 :

  2. I commenti possono essere inseriti con il comando REM oppure con l'apostrofo '

  3. 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



VARIABILI

Passiamo ora alle variabili:

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



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. )



      Le variabili hanno una vita variabile (chiaro no?), cioè si può scegliere fino a quando devono esistere. Ci sono le variabili:

        1. 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ù.

        2. Private: valgono solo all'interno del modulo in cui sono dichiarate (Private a As Integer)

        3. 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.

        1. Globali: sono molto simili alle variabili pubbliche, solo che i loro valori vengono conservati anche dopo l'esecuzione della procedura.



COSTANTI

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



PROCEDURE E FUNZIONI

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



CONDIZIONI

Per eseguire delle parti del programma in base a certe condizioni, si utilizzano le istruzioni condizionali:

  1. 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.

  1. 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:

CICLI

Per eseguire un'operazione un'infinità di volte (che è quello per cui alla fin fine sono creati i programmi) si utilizzano i cicli:

  1. 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

  1. ciclo Do ... Loop è simile al precedente, solo che viene eseguito indefinitamente. Per terminarlo, si possono usare diversi sistemi:

    1. 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;

    2. Do Until ... Loop : si esce quando la condizione dopo l'Untile è soddisfatta;

    3. Do ... Loop While: come la prima, solo che in ogni caso fa il primo passaggio;

    4. Do ... Loop Until: come la seconda, solo che in ogni caso fa il primo passaggio.





Ultima modifica: 28/10/07