L’ambiente di programmazione
Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che con-
sente di creare procedure software dalla fase di editing del testo sorgente fino all’esecuzione del
programma.
Per attivare questo ambiente, aprire un programma LibreOffice, per esempio Calc: dal menu
Strumenti, scelta Macro, Organizza macro, LibreOffice Basic.
Si apre la finestra delle macro: clic sul nome del file .ods e poi su Standard.
Creare un nuovo Modulo, per contenere i sottoprogrammi associati al foglio elettronico, facen-
do clic sul pulsante Nuovo.
Istruzioni in sequenza
Il problema seguente presenta un esempio di codifica in Basic della sequenza, cioè la struttura
dell’algoritmo nella quale le istruzioni sono indicate una di seguito all’altra secondo l’ordine con
il quale devono essere eseguite dal computer.
ESEMPIO
Codice
Apriamo la finestra delle macro, come visto in precedenza.
È opportuno visualizzare la barra delle macro con i pulsanti per l’ambiente di sviluppo: menu
Visualizza, Barre degli strumenti, Macro.
Inseriamo il codice per il sottoprogramma Main.
Le frasi che iniziano con l’apice sono frasi di commento, che servono a documentare le
istruzioni del programma.
Nel testo del programma le frasi sono scritte con colori diversi per le parole chiave del
linguaggio, le variabili definite dall’utente e le frasi di commento.
ThisComponent rappresenta il file dell’intero foglio di calcolo ed è assegnato alla variabile
Doc di tipo Object:
Doc = ThisComponent
I fogli di lavoro del file Calc sono organizzati nell’insieme Sheets e identificati con un indice
che parte dal valore 0. Quindi il primo foglio di lavoro è Sheets(0) ed è assegnato alla variabile
Sheet di tipo Object:
Sheet = Doc.Sheets(0)
Le singole celle del foglio sono identificate attraverso la posizione nella griglia, indicando,
nell’ordine, il numero di colonna e il numero di riga, con valori che partono da 0. Quindi la
cella B1 si trova nella posizione (1, 0), colonna 2 e riga 1, la cella B2 nella posizione (1, 1),
colonna 1 e riga 1, e così via.
La posizione è ottenuta dalla funzione getCellByPosition:
c1 = Sheet.getCellByPosition(1, 0).Value
c2 = Sheet.getCellByPosition(1, 1).Value
La proprietà Value consente di acquisire il valore numerico contenuto nella cella, che è un
oggetto.
La stessa funzione è poi utilizzata per assegnare alla cella B3 il valore dell’ipotenusa:
Sheet.getCellByPosition(1,2).Value = ipot
L’istruzione print visualizza il valore di una variabile o un messaggio all’interno di una finestra
di dialogo:
print ipot
MsgBox ipot
Abbiamo visto nell’esempio precedente che la dichiarazione delle variabili è indicata con la
parola chiave Dim. Se si scrivono solo i nomi delle variabili, senza specificare il tipo di dato
che esse rappresentano (numero intero o reale, oppure stringa), il tipo di dato viene deter-
minato implicitamente dal programma sulla base del dato che viene letto nelle celle del foglio
elettronico. Tuttavia, per una maggiore chiarezza nella programmazione e una rappresenta-
zione più precisa del codice, è importante specificare, oltre al nome della variabile, anche il
tipo con la clausola As (come).
Per esempio:
Dim V1 As Integer
Const Max = 30
Anche se il codice funziona correttamente senza dichiarare le variabili in modo esplicito con
l’istruzione Dim, per programmare in modo ordinato è comunque opportuno e utile dichia-
rare le variabili in modo esplicito e con un tipo di dati specifico. La dichiarazione esplicita
consente infatti di ridurre gli errori per conflitti di nome e gli errori di ortografia.
Per evitare che le variabili vengano dichiarate in modo implicito, è possibile posizionare
l’istruzione Option Explicit prima dei sottoprogrammi nella finestra del codice. Questa
istruzione forza la dichiarazione esplicita di tutte le variabili nelle subroutine. Quando viene
utilizzata l’istruzione Option Explicit e viene incontrato un nome di variabile non dichiarata o
digitato in modo non corretto, verrà generato un errore di compilazione (Variabile non
definita) quando si esegue il programma.
La ripetizione per vero o ripetizione con controllo in testa, è rappresentata con la struttura
DO WHILE ... LOOP.
La sintassi generale della struttura è la seguente:
DO WHILE condizione
istruzioni
LOOP
La ripetizione viene eseguita mentre la condizione scritta vicino a While si mantiene vera. All’inizio
del programma alla variabile numero è assegnato il valore 0 per poter forzare l’esecuzione della
ripetizione almeno una volta, effettuando il primo controllo della condizione alla partenza della
ripetizione.