Gambas Basic visuale per GNU/Linux - Autore: Matteo Pasotti Data: 24/10/2009 Realizzato con l'ausilio di OpenOffice 3,0
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Gambas
Basic visuale per GNU/Linux
Autore: Matteo Pasotti
Data: 24/10/2009
Realizzato con l'ausilio di OpenOffice 3,0Cos'è GAMBAS
GAMBAS significa Gambas Almost Means BASic
Gambas è un ambiente di sviluppo libero basato su un
interprete Basic orientato agli oggetti, come Visual
Basic™ (ma NON è un clone!)
2
Matteo Pasotti, TiLUG, Linux Day 2009Perchè usare GAMBAS
È software libero, tutelato da licenza GPL
è ideato e realizzato per e su GNU/Linux
permette di realizzare rapidamente le interfacce
grafiche (GUI) per i vostri applicativi (QT e GTK)
permette di accedere a database MySQL, PostgreSQL,
SQLite, ecc
3
Matteo Pasotti, TiLUG, Linux Day 2009Perchè usare GAMBAS
permette di pilotare applicazioni KDE con DCOP
permette di tradurre i vostri applicativi in varie lingue
permette di creare applicazioni “di rete” facilmente
utile per la didattica
è semplice, comodo, veloce.
ecc, ecc, ecc
4
Matteo Pasotti, TiLUG, Linux Day 2009Come funziona GAMBAS
Come detto prima, Gambas è un linguaggio interpretato, quindi i nostri
programmi per essere utilizzabili dovranno subire due processi:
compilazione: genera un codice detto bytecode che va a costituire
il nostro file .class;
interpretazione: riceve in ingresso il file .class contenente il
bytecode e attraverso opportuni procedimenti e una fase detta di
“linking”, carica il nostro programma in memoria, pronto a svolgere
il suo lavoro.
I programmi responsabili di questi due passaggi fondamentali sono il
compilatore gambas gbc2 e l'interprete gbr2/gbx2.
gbr2/gbx2
Senza l'interprete il nostro programma NON sarà eseguibile!
L'IDE però ci risparmia tutto il lavoro sporco e in “due click” genera il
nostro pacchetto che sembrerà a tutti gli effetti un comune programma,
eseguibile con il “doppio click”.
5
Matteo Pasotti, TiLUG, Linux Day 2009Come funziona GAMBAS
Compilazione:
Classi + Moduli
Compilatore ByteCode
gbc2 prog.class
codice
Forms
gambas
Esecuzione:
Interprete
ByteCode Eseguibile
prog.class
Gambas Linking
gbx2
6
Matteo Pasotti, TiLUG, Linux Day 2009Installiamo GAMBAS
Due approcci possibili:
Pacchetto binario della propria distribuzione (deb, rpm)
Compilazione sorgenti (tar.gz, tar.bz2)
7
Matteo Pasotti, TiLUG, Linux Day 2009Installiamo GAMBAS
Pacchetti Binari - Debian/Ubuntu Way
Da terminale:
Adept o Synaptic (stile click&run):
click&run
8
Matteo Pasotti, TiLUG, Linux Day 2009Installiamo GAMBAS
Pacchetti Binari - CentOS/Fedora Way
Da terminale:
Da PackageKit / Yumex
10
Matteo Pasotti, TiLUG, Linux Day 200911 Matteo Pasotti, TiLUG, Linux Day 2009
Installiamo GAMBAS
Compilazione sorgenti
Da terminale:
# cd
# ./configure -C
# make
# (come root) make install
!!
NB: quando si procede via compilazione devono essere
presenti il compilatore e tutte le librerie necessarie ai vari
componenti di GAMBAS altrimenti o non vengono abilitati o
si verificano errori durante il processo di compilazione
12
Matteo Pasotti, TiLUG, Linux Day 2009Avviamo GAMBAS
Da terminale:
Da menù:
13
Matteo Pasotti, TiLUG, Linux Day 2009IDE di GAMBAS
Caratteristica principale:
E' scritto in Gambas
Composto da:
Box dei componenti
Box delle proprietà dei
componenti
Box del progetto
Box del codice
IDE = Integrated Development Environment, Ambiente di sviluppo integrato 14
Matteo Pasotti, TiLUG, Linux Day 200915 Matteo Pasotti, TiLUG, Linux Day 2009
IDE di GAMBAS
16
Matteo Pasotti, TiLUG, Linux Day 2009IDE di GAMBAS 2
Matteo Pasotti, TiLUG, Linux Day 2009
17Documentazione di GAMBAS
Uno dei punti di forza di Gambas è la sua
documentazione vasta, dettagliata e ricca di esempi
pratici
Per accedervi è sufficiente cliccare sul ? e quindi sul
primo elemento della lista (il pulsante funziona bene in
ambiente KDE mentre in GNOME non apre il browser)
18
Matteo Pasotti, TiLUG, Linux Day 2009Documentazione di GAMBAS
La documentazione viene caricata all'interno del
browser web Konqueror (qualche problema con GNOME)
La documentazione è presente sia in locale sia al link
http://gambasdoc.org/help/
19
Matteo Pasotti, TiLUG, Linux Day 200920 Matteo Pasotti, TiLUG, Linux Day 2009
Linguaggio GAMBAS
E' molto simile al BASIC utilizzato in Visual Basic™,
migliore riguardo molti aspetti (gestione degli errori ad
esempio)
è semplice da assimilare
consente di sfruttare la programmazione orientata agli
oggetti (OOP)
i suoi componenti sono binding a librerie già esistenti
21
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Operatori aritmetici
- (Numero) OPPOSTO
Numero - Numero SOTTRAZIONE
Numero + Numero ADDIZIONE
Numero * Numero MOLTIPLICAZIONE
Numero / Numero DIVISIONE
Numero DIV Numero Int(Numero/Numero)
Numero MOD Numero Resto divisione 22
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Operatori di confronto
=
=
<
>
(quest'ultimo significa diverso)
23
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Operatori di assegnazione
var = val uguale
var += val eq. a var = var + val
var *= val eq. a var = var * val
var /= val eq. a var = var / val
var \= val eq. a var = var \ val
var &= val concatenazione stringhe
var &/= val concatenazione per percorsi (path)
24
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Dichiarare variabili locali e globali
Variabili Locali:
DIM variabile AS TIPO
DIM x AS Integer
DIM y AS Float
DIM k AS String
Variabili Globali:
[STATIC] [PUBLIC/PRIVATE] variabile AS TIPO
PUBLIC x AS Integer
PRIVATE y AS Float
STATIC PUBLIC k AS String 25
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Dichiarare array (vettori)
Vettori:
DIM variabile AS NEW TIPO [dimensione vettore]
DIM x AS NEW Integer[10]
DIM y AS NEW Float[2]
DIM k AS NEW String[50]
Vettori (Inizializzazione):
DIM variabile AS TIPO [] = [dato, dato, ...]
DIM x AS Integer[]=[1,2,3]
DIM y AS Float[]=[2.5,3.4]
DIM k AS String[] = [“pippo”,”pluto”] 26
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Dichiarare array multidimensionali (matrici)
Matrici:
DIM variabile AS NEW TIPO [X][Y]
DIM x AS NEW Integer[1][10]
DIM y AS NEW Float[2][100]
DIM k AS NEW String[50][50]
27
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Statement condizionali
IF .... THEN .... ELSE .... ENDIF
IF var = TRUE THEN
' fa qualcosa
ELSE
'fa qualcosa d'altro
ENDIF
28
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Statement di scelta (sempre condizionale)
SELECT .... CASE .... END SELECT
SELECT CASE var
CASE valore1
'azione da compiere al verificarsi di questa scelta
CASE valore2
'altra azione
CASE ELSE
'nel caso in cui nessun valore di var soddisfi
alcuna scelta
END SELECT
29
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Cicli iterativi
REPEAT .... UNTIL condizione
REPEAT
'range di azioni
UNTIL var >= val
'ripete finchè la variabile var assume valore >= val
30
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Cicli iterativi – Statement ripetitivi
WHILE condizione .... WEND
WHILE varLinguaggio GAMBAS
Le Basi
Cicli iterativi – Statement ripetitivi
FOR .... TO .... [STEP espressione] .... NEXT
FOR var = 0 TO val STEP 1
'range di azioni
NEXT
' ripete finchè la variabile var raggiunge il valoreLinguaggio GAMBAS
Le Basi
Cicli iterativi – Statement ripetitivi
FOR EACH ... IN ... ... NEXT
FOR EACH item IN aVector
'azioni su item
NEXT
' ripete per ogni item presente in aVector
33
Matteo Pasotti, TiLUG, Linux Day 2009Linguaggio GAMBAS
Le Basi
Gestione degli errori
TRY .... CATCH .... END TRY
TRY
'azioni che possono generare errori da gestire
'apri,chiudi file ad esempio
CATCH
' nel caso venga generato l'errore esegue quanto
' contenuto in questo statement
END TRY
34
Matteo Pasotti, TiLUG, Linux Day 2009Componenti Librerie
35
Matteo Pasotti, TiLUG, Linux Day 2009Componenti Librerie
36
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb
File
Collection
Error
Costanti
Array di Datatype nativi (Byte[], String[],ecc)
System
Class
Object
ecc, ecc
37
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.eval
Il componente gb.eval consente a Gambas di valutare
espressioni. Viene caricato in modo automatico all'utilizzo
della funzione Eval()
Eval("(Sin(45)+Cos(45)+atan(i/4))")
2.04199926338
38
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.compress
Il componente gb.compress consente a Gambas di
comprimere e decomprimere file, di leggere e scrivere file
compressi, di comprimere e decomprimere stringhe in
memoria. Si appoggia alle librerie zlib e libbzip2
(rispettivamente utilizzate da gzip e bzip2)
39
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.db
Il componente gb.db consente a Gambas di accedere ai
seguenti sistemi di database:
PostgreSQL
MySQL
FireBird
SQLite
Un esempio dell'utilizzo di questo componente lo
troviamo nel Gambas Database Manager.
40
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.net / gb.net.curl
Il componente gb.net consente a Gambas di realizzare
applicativi di rete tipo server e/o client (TCP e UDP),
accedere alla porta seriale, fare richieste sincrone o
asincrone ai DNS
Il componente gb.net.curl consente a Gambas di
accedere a file remoti, quindi attraverso la rete, sfruttando
protocolli quali http, ftp, tftp, ecc
41
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS gb.vb Gambas non ha lo scopo di essere compatibile con vb Il componente gb.vb include solo alcune funzioni che mancano in Gambas o il cui comportamento è differente da Gambas a VB DateAdd / DateDiff Left$ / Mid$ /Right$ Round Str / Val Questo componente aiuta il porting dei progetti scritti in VB in GAMBAS 42 Matteo Pasotti, TiLUG, Linux Day 2009
Componenti GAMBAS
gb.qt / gb.qt.ext
Il componente gb.qt consente a Gambas di realizzare
applicativi con GUI sfruttando le librerie grafiche QT
(gestione tastiera e mouse, drag & drop, controlli,
container, menu, disegno e stampa, ecc)
43
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.gtk / gb.gtk.ext
Il componente gb.gtk consente a Gambas di realizzare
applicativi con GUI sfruttando le librerie grafiche GTK
(gestione tastiera e mouse, drag & drop, controlli,
container, menu, disegno e stampa, ecc). Ottimo per
applicativi da integrare in GNOME
44
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.xml / gb.xml.xslt / gb.xml.rpc
I componenti gb.xml, gb.xml.xslt e gb.xml.rpc sono
semplici interfacce alle librerie libxml, libxslt e libcurl
45
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.qt.kde / gb.qt.kde.html
I componenti gb.qt.kde, gb.qt.kde consentono a
Gambas di sfruttare le standard dialog di kde, di
realizzare browser web sfruttando il widget KHTML e di
pilotare le applicazioni con DCOP (automatizzazione)
46
Matteo Pasotti, TiLUG, Linux Day 2009Componenti GAMBAS
gb.qt.editor
Il componente gb.qt.editor consente a Gambas ed al
suo IDE di realizzare, ad esempio, editor con capacità di
Syntax Highlighting (questo componente si appoggia al
componente gb.eval di cui prima)
47
Matteo Pasotti, TiLUG, Linux Day 2009Distribuzione applicazioni
L'ambiente di sviluppo di GAMBAS mette a disposizione una utility con
interfaccia grafica per la realizzazione di pacchetti per le maggiori
distribuzioni GNU/Linux: Debian, Fedora, Ubuntu, Mandrake, Slackware,
ecc;
In questo modo chiunque potrà creare un pacchetto redistribuibile
della propria applicazione, rendendola comodamente fruibile da tutto il
mondo;
L'utility stessa è scritta in GAMBAS, esattamente come l'editor e il db
manager;
48
Matteo Pasotti, TiLUG, Linux Day 2009Distribuzione applicazioni
49
Matteo Pasotti, TiLUG, Linux Day 2009Applicazioni
50
Matteo Pasotti, TiLUG, Linux Day 2009Conclusioni
Come abbiamo visto, GAMBAS è un comodo strumento
che ci consente di realizzare applicativi, per ora
principalmente di tipo gestionale e nel futuro anche di altri
generi, in modo facile, veloce e Libero*.
Inoltre grazie alla sua semplicità e alla somiglianza con
l'ambiente di casa microsoft, risulta essere una valida
alternativa per gli studenti di tutti gli istituti superiori che
usano il visual basicTM a scopo didattico e che spesso
incontrano difficoltà nell'esercitarsi al di fuori dei laboratori a
causa degli elevati costi di licenza di questi prodotti.
* Con Libero si intende la libertà che deriva dall'utilizzo di software libero e a
sorgenti aperti
51
Matteo Pasotti, TiLUG, Linux Day 2009Disclaimer
Questa presentazione è stata realizzata
sfruttando le mie conoscenze sull'argomento e
raccogliendo documentazione dalla rete,
in particolare da http://gambas.sourceforge.net e www.gambas.it.
Si ringraziano pertanto l'autore di GAMBAS, Benoît Minisini,
tutti coloro che lavorano allo sviluppo del progetto
GAMBAS e tutti coloro che forniscono documentazione,
tutorial ed esempi a riguardo.
52
Matteo Pasotti, TiLUG, Linux Day 2009Licenza
Quest'opera è stata rilasciata sotto la licenza Creative
Commons Attribution-NonCommercial-ShareAlike 2.5.
Per leggere una copia della licenza visita il sito web
http://creativecommons.org/licenses/publicdomain/ o
spedisci una lettera a Creative Commons, 559 Nathan
Abbott Way, Stanford, California 94305, USA.
53
Matteo Pasotti, TiLUG, Linux Day 2009Riferimenti
http://gambasdoc.org/help
http://gambas.sourceforge.net
http://www.gambas.it
54
Matteo Pasotti, TiLUG, Linux Day 2009Basta chiacchiere
Se questa relazione vi ha incuriosito
possiamo iniziare a divertirci con
Gambas
In laboratorio
55
Matteo Pasotti, TiLUG, Linux Day 200956 Matteo Pasotti, TiLUG, Linux Day 2009
Puoi anche leggere