INFORMATICA - MICROSOFT VISUAL BASIC

Introduzione
MS Visual Basic è nato dalla necessità di dare ai numerosi programmatori BASIC per MS-Dos, uno strumento di sviluppo facile ed intuitivo per creare applicazioni in ambiente Microsoft Windows.
Visual Basic consente di creare senza troppo sforzo delle applicazioni con interfaccia utente grafica secondo lo stile di tutte le applicazioni per WindowsÖ, è un generatore di applicazioni in ambiente completamente grafico.
Potete disegnare le finestre, aggiungere tutti gli altri elementi dell'interfaccia semplicemente trascinandoli da una finestra di strumenti sulla finestra creata, tramite le finestre "proprietà" è possibile stabilire il comportamento degli oggetti che avete disegnato ed il loro aspetto, e finalmente potete scrivere del codice per gestire gli eventi generati dall'utente.

L'applicazione Visual Basic

Un applicazione Visual Basic è costituita da uno o più "form", che corrispondono alle finestre utilizzate nell'applicazione, da uno o più file di codice Basic che contengono procedure generali che verranno, da uno o più controlli personalizzati (OCX, VBX) o standard e da un file di risorse, tipicamente usato per le localizzazioni del programma nelle varie lingue.
Le applicazioni Visual Basic si differenziano dalle applicazioni tradizionali per essere guidate dagli eventi ("event driven"). Le applicazioni tradizionali sono dette "procedurali" in quanto iniziano l'esecuzione dalla prima linea di codice, e proseguono fino all'ultima seguendo uno schema imposto da chi ha scritto il programma.
Nelle applicazioni guidate dagli eventi sono gli eventi generati dall'utente o dal sistema a determinare la sequenza delle procedure che verranno eseguite.

Gli eventi possono essere generati contemporaneamente ad altri eventi ad esempio l'evento "doppio-click" è generato assieme agli eventi "mousedown", "mouseup" e "click".
Siccome il programma non sa "a priori" in che situazione verrà generato un particolare evento, il programmatore dovrà fare in modo di abilitare o disabilitare certe possibilità in considerazione delle condizioni al contorno. Facciamo un esempio pratico:
Supponiamo che il vostro programma sia costituito da un finestra contenente 2 caselle in cui l'utente potrà scrivere dei numeri e da un bottone che, se premuto, eseguirà la divisione dei due numeri e comunicherà il risultato. È chiaro che se i due numeri non sono ancora stati scritti è inutile che l'utente prema il bottone "dividi", per evitare questo il vostro programma abiliterà il bottone "dividi" solo se ambedue le caselle testo conterranno dei numeri, altrimenti rimarrà disabilitato.

Uso delle variabili

Spesso è necessario tenere traccia di alcuni valori temporaneamente per poter fare in seguito delle operazioni o dei confronti, a questo scopo si usano le variabili. In Visual Basic così come in molti altri linguaggi di programmazione, le variabili hanno un nome, dato dal programmatore ed usato nel programma per riferirisi a quel dato, e un tipo, per identificare che tipo di dato è contenuto in quella variabile.
In Visual Basic non è necessario dichiarare esplicitamente una variabile, ma è consigliabile per avere meno problemi durante il debugging (fase della programmazione in cui si correggono gli errori di funzionamento). Per dichiarare una variabile si usa l'istruzione Dim nome_variabile as Tipo.
Le variabili dichiarate all'interno di una procedura esistono solamente durante l'esecuzione di quella procedura. Le variabili dichiarate a livello di form, di modulo o di classe valgono per tutte le procedure esistenti in quel modulo. Le variabili dichiarate "public" valgono per l'intera applicazione, mentre quelle dichiarate "statiche" (static) all'interno di una procedura mantengono il loro valore tra una chiamata della procedura e la successiva.

I tipi di dati

In Visual Basic una variabile di cui non è stato definito esplicitamente il tipo è di tipo "Variant", queste variabili possono contenere qualsiasi tipo di dati, array, stringhe, numeri interi o reali, date, quando assegnate uno di questi oggetti a una variabile di tipo Variant non dovete preoccuparvi di fare nessuna conversione, ci pensa Visual Basic a farle per voi.
Gli altri tipi di dati gestiti da Visual Basic sono:

Integer
per contenere numeri interi tra -32768 e + 32767

Long
per contenere numeri interi tra -2.147.483.648 e + -2.147.483.647

Single
per contenere numeri reali a precisione singola

Double
per contenere numeri reali a precisione doppia

Currency
per contenere numeri reali compresi tra -922.337.203.685.477,5808 e + 922.337.203.685.477.5808

Byte
Da 0 a 255

String
1 byte per carattere fino a circa 65000 caratteri su OS a 16 Bit

Boolean
Vero o Falso

Date
Da 1 Gennaio 100 al 31 Dicembre 9999

Object
Riferimenti ad oggetti

Variant
Ogni tipo precedente


Nella dichiarazione delle variabili potete definire sulla stessa riga variabili di tipo diverso ad esempio:
Dim i as integer, l as long, nome as String
In Visual Basic è possibile usare dei simboli per indicare il tipo della variabile senza dichiararlo in maniera esplicita così la dichiarazione precedente può anche essere scritta in questo modo:
Dim i%, l&, nome$

Gli Array

Gli array sono delle collezioni di variabili dello stesso tipo a cui è possibile accedere attraverso un unico nome e un indice, permettendovi così di scrivere del codice più ottimizzato. Gli array possono essere di dimensione fissa o variabile. Per dichiarare un variabile di tipo array di dimensione fissa si usa la seguente istruzione:

1 Dim nome_var(N) as Tipo
2 Dim nome_Var(L To U) as Tipo

3 Dim vettore(20) as integer
4 Dim vettore(10 To 20) as integer

Con l'esempio di riga 1 e 3 si definiscono array di N+1 elementi con l'indice dell'array che può variare tra 0 e N. Nell'esempio di riga 2 e 4 si definiscono array di (U-L+1) elementi con l'indice dell'array che varia tra L (limite inferiore) e U (limite superiore).

È anche possibile definire array che contengono array di tipo diverso, dichiarando un array di tipo Variant e poi assegnando ad ogni elemento dell'array principale, array di vari tipi.
Gli array possono anche essere multidimensionali, vediamo un esempio di matrice con il codice necessario per inizializzare i suoi elementi ad un valore prestabilito (nel ns. caso 100):

Dim Matrice(1 To 10, 1 To 10) as Integer
Dim I as integer, J as Integer
For I=1 to 10
For J = 1 to 10
Matrice(I, J) = 100
Next J
Next I

È necessario prestare molta attenzione nell'uso di array multidimensionali perché usano moltissima memoria, ad esempio la matrice dell'esempio precedente contiene 10 x 10 elementi.

Se non si conosce a priori il numero di elementi che ci serviranno è possibile usare degli array a dimensione variabile, per fare questo è necessario dichiarare l'array senza specificarne la dimensione e quindi usare l'istruzione ReDim per dimensionarlo quando serve.
Es: Dim Vettore() as integer
Redim Vettore(1 To X+1) as Integer

Con l'istruzione Redim è possibile cambiare il numero di elementi di un array ma non il numero delle dimensioni. In seguito a un ridimensionamento un array normalmente perde tutti i valori che conteneva, per fare in modo che li conservi è necessario far seguire la parola Preserve all'istruzione Redim.

Tipi definiti dall'utente

È ovviamente possibile definirsi dei propri tipi di dati, per far questo si usa l'istruzione Type.
Type NomeTipo
elemento1 as Tipo
elemento2 as Tipo
....
end Type

Se per esempio volessimo definire il Tipo Libro per fare un programma di gestione della nostra biblioteca potremmo definirlo in questo modo:

Type Libro
Titolo as String
Autore as String
N_Pag as Integer
Data_Pubb as Date
Stato as Integer
Letto as Boolean
end Type

Per dichiarare una variabile di tipo definito dall'utente si procede nel modo usuale:

Dim Miolibro as Libro

Per accedere agli elementi del tipo Libro si usa la notazione "NuovoTipo.Elemento1" così per assegnare il titolo alla variabile MioLibro dovrò scrivere:

Miolibro.Titolo = "I Promessi Sposi"

I Moduli

In Visual Basic esistono tre tipi di moduli: form, moduli standard e class.
Il modulo Form contiene tutte le informazioni sull'aspetto grafico della finestra, le proprietà dei suoi elementi, e il codice di gestione degli eventi di sua pertinenza. Un'applicazione molto semplice può essere costituita da un solo Form.
Talvolta, quando le applicazioni diventano più complesse si potrebbe avere la necessità di usare lo stesso codice in form diversi, per evitare di duplicare il codice, è possibile scrivere la procedura richiamata dai vari form in un modulo di tipo "standard", che sono utilizzati proprio per questo scopo, contenere procedure di uso generale.
I moduli di tipo "class" servono per creare nuovi oggetti, e permettono di realizzare la parte "object oriented" di Visual Basic. I nuovi oggetti possono avere metodi e proprietà definiti da voi ma non possono gestire nuovi eventi. Questi oggetti possono essere usati da tutti gli altri moduli dell'applicazione.

Uso delle Procedure

Quando si scrive un programma è buona abitudine dividere l'applicazioni in tante piccole unità logiche che realizzano l'obbiettivo finale. Queste piccole unità prendono il nome di procedure e sono usate con lo scopo di essere utilizzate in diverse parti del programma e per essere più facilmente manutenute. Visual Basic mette a disposizione due tipi di procedure: Sub e Function.

Sub

Le Sub sono procedure che accettano parametri in ingresso ma non restituiscono nessun valore.
Sintassi:
Sub NomeProcedura(argomenti)
istruzioni
End Sub

Esempio:
Sub ColoreBlu (textc as Control)
textc.Forecolor = RGB(0,0,255)
end Sub

Quando una procedura viene chiamata, vengono eseguite le istruzioni comprese tra l'istruzione Sub e l'istruzione End Sub, gli argomenti passati possono cambiare valore.
Per chiamare una procedura di tipo Sub la sintassi è:
NomeProcedura lista_dei_parametri
Es:
ColoreBlu Divisione.Dividendo
ColoreBlu Divisione.Divisore

È possibile passare variabili ad una procedura in due modi, per valore (By value) o per riferimento (By Ref), se non specificato Visual Basic assume che i parametri siano passati per riferimento.
I parametri passati per riferimento possono cambiare il loro valore all'interno della procedura e questo cambiamento si riperquotera' anche sulle procedure chiamanti; nel caso di variabile passate per valore, il contenuto della variabile puo' cambiare all'interno della procedura, ma all'uscita della procedura la variabile continuera' ad avere il suo valore iniziale.

Function

Le function si differenziano dalle Sub perche' ritornano un valore. Si dichiarano in questo modo:

Function Nome_funzione(argomenti) as Tipo
istruzioni
End Function

Per esempio se dovete scrivere una procedura che restituisca l'area del cerchio, noto il raggio, potete fare così:

Function AreaCerchio(r as Single) as Single
Dim A as Single
A = 3.14 * r^2
AreaCerchio = A
End Function

Le funzioni possono essere usate in istruzioni complesse e si comportano esattamente come le funzioni Built-in di Visual Basic come Sqr (Radice Quadrata), oppure Abs (Valore assoluto); ad esempio la funzione dell'esempio precedente può essere usata in questo modo :

SupTot = 2*AreaCerchio( r ) + PerimetroCerchio( r) * h

Strutture di controllo

Se non ci fossero strutture di controllo un programma sarebbe eseguito seguendo le istruzioni da destra verso sinistra e dall'alto verso in basso, ma in questo modo si potrebbero scrivere solo programmi molto semplici. Visual Basic mette a disposizioni diverse strutture di controllo.
Strutture di controllo decisionali
Tra le strutture di controllo più utili possiamo senz'altro annoverare la struttura IF in tutte le sue variazioni.

1) If condizione then istruzione

2) If condizione then
istruzioni
else
istruzioni
end if

3) If condizione1 then
istruzioni
elseif condizione2 then
istruzioni
elseif condizione3 then
istruzioni
.....
else
istruzioni
end if

Condizione di solito è un confronto tra valori, se la condizione è vera allora vengono eseguite le istruzioni che seguono la parola Then , altrimenti verranno eseguite le istruzioni che seguono la parola Else.
Nel caso 3 viene dapprima testata la condizione1 se non è vera viene testata la condizione2 e così via fino a che non viene trovata una condizione vera, a quel punto verranno eseguite le istruzioni seguenti la parola then , se nessuna condizione è vera verranno eseguite le istruzioni seguenti la parola "else" se presenti.

Vediamo un esempio :
If saldo 0 then
MsgBox "Attenzione, il vostro conto è in rosso!"
end if

A volte se l'espressione da testare è sempre la stessa è più comodo usare un'istruzione di tipo Select.

Select Case (espressione_test)
Case (lista di espressioni)
istruzioni
Case (lista di espressioni)
istruzioni
Case (lista di espressioni)
istruzioni
Case Else
istruzioni
end Select

Visual Basic valuta una volta all'inizio l'espressione quindi confronta il risultato con quelli che seguono la parola Case, se trova un valore uguale, esegue le istruzioni che seguono quel Case altrimenti esegue le istruzioni che seguono le parole Case Else.
Nel prossimo esempio, vedrete una funzione che viene chiamata quando l'utente seleziona un item del menu File(index), in funzione dell'elemento scelto la funzione eseguirà la procedura adatta.
Es:Private Sub MenuFile_Click(index as integer)
Select Case ( Index)
Case OPEN_FILE
ApriFile
Case SAVE_FILE
SalvaFile
Case QUIT
Esci
end Select
end Sub

CICLI

Visual Basic dispone di diversi tipi di loop che vedremo in dettaglio:

For contatore = inizio To Fine Step incremento
istruzioni
Next var

L'istruzione For viene usata quando si conosce esattamente il numero di volte che un'istruzione deve essere eseguita, ad esempio per leggere gli elementi di un array di dimensione conosciuta. Le variabili contatore, inizio, fine e incremento assumono valori interi, l'istruzione Step incremento è facoltativa ed in sua mancanza si assume un incremento positivo di una unità. Cosa succede quando Visual Basic esegue un'istruzione For? Vediamolo in dettaglio:
1. assegna alla variabile contatore il valore Inizio
2. Verifica se contatore è maggiore di Fine
3. Se non lo è esegue le istruzioni fino alla parola next
4. incrementa la variabile contatore di 1 (o di incremento)
5. ripete i passi 2-4 fino a che contatore non diventa maggiore di Fine

Es:
Sub StampaVettore (X() as integer, N as integer)
Dim i as integer
For i=0 to N
Print "Elemento" & i & " =" & X(i)
Next i
End Sub
Quando non è noto il numero di volte che le istruzioni devono essere eseguite è preferibile usare un ciclo Do While

DO While Condizione
istruzioni
LOOP

Se condizione è vera vengono eseguite le istruzioni fino alla parola LOOP, se è falsa le istruzioni vengono saltate e il programma prosegue sulla riga successiva alla parola LOOP. Le istruzioni comprese tra la riga DO While e la riga LOOP vengono eseguite fintanto che condizione rimane vera. Al fine di evitare cicli infiniti è bene accertarsi che all'interno delle istruzioni comprese nel ciclo ci sia anche quella che fa diventare falsa la Condizione.
Una variazione del cilco precedente è l'istruzione:
Do
istruzioni
While Loop Condizione
In questo caso la Condizione è testata dopo aver eseguito almeno una volta il ciclo.

Nel prossimo esempio, vedremo l'utilizzo dell'istruzione Do While per calcolare il Fattoriale di un numero.

Function Fattoriale( x as integer)
Dim result as Double
if (x = 0 ) then
Fattoriale = 1
else
result = 1
Do while x > 1
result = result*x
x= x-1
Loop
Fattoriale = result
end if
end Function

Esistono due ulteriori variazioni del ciclo Do Loop e sono

Do Until Condizione Do
Istruzioni Istruzioni
Loop Loop Until Condizioni

Si differenziano dai precedenti perché restano nel ciclo fino a che la condizione rimane falsa.

Come avete potuto vedere nell'esempio del Fattoriale le strutture di controllo possono essere innestate. Ciascuna istruzione di chiusura di un ciclo, chiude il ciclo corrispondente immediatamente precedente.
È anche possibile forzare l'uscita da un ciclo con l'istruzione Exit For o Exit Do, di solito si ricorre a queste istruzioni con l'intento di ottimizzare le prestazioni del codice e solitamente sono conseguenti alla verifica di una condizione; infatti al verificarsi di una certa condizione, che viene testata, può essere inutile continuare il ciclo.
Così come è possibile uscire da un ciclo con l'istruzione Exit è anche possibile uscire da una Sub o da una Function con le istruzioni Exit Sub e Exit Function, anche in questo caso, se la procedura ha fatto quel che doveva fare è possibile farla uscire immediatamente.

Controlli

Visual Basic mette a disposizione, numerosi controlli che consentono di realizzare interfacce utente gradevoli e funzionali. Descrivere il funzionamento di ciscun controllo va oltre le finalita' di questo capitolo, vedremo solo i principali e qual'è il loro utilizzo. Ogni controllo ha delle proprietà (Fonte, colore di sfondo, posizione, larghezza, altezza...), risponde a degli eventi (click del mouse, spostamento del mouse, ridimensionamento, attivazione, disattivazione ...) ed è possibile applicargli dei Metodi (Aggiungi (AddItem), Togli (RemoveItem), Rendilo attivo(SetFocus)).

TextBox (Casella Testo)
Controllo che permette all'utente di inserire dei dati, è possibile modificare il carattere, lo stile e la dimensione, scegliere il colore di sfondo e quello di scrittura.

Label (Etichette)
È come il TextBox solo che serve solo per visualizzare delle informazioni, l'utente non puo' modificarlo.
Command Button (Pulsanti )
È il tipico pulsante dell'ambiente Windows, può essere attivo o non attivo, ha un'etichetta e può avere un'icona. Viene usato per consentire all'utente di avviare determinate funzioni. È buona norma dare un'etichetta al bottone che sia significativa di quello che succederà quando viene premuto.

In questa figura le caselline a sfondo bianco sono TextBox, le scritte nere su fondo azzurro sono Label e il rettangolo grigio con scritta Dividi è un Command Button.

Check Box e Radio Button
Il controllo CheckBox è costituito da una casella nella quale viene visualizzata una x quando il controllo viene selezionato, la x scompare nel momento in cui la casella viene deselezionata. Un insieme di controlli CheckBox consentono all'utente di selezionare alcune delle opzioni disponibili.
Il controllo radio Button è costituito da un piccolo cerchio nel quale viene visualizzato un puntino quando è selezionato, il puntino scompare sulla deselezione. I controlli radio button consentono all'utente di scegliere tra opzioni tra di loro alternative.

I check box consentono di scegliere quali opzioni installare sulla propria macchina, mentre i radio botton permettono di scegliere il tipo di cambio.

ListBox (Casella di Riepilogo)

È un controllo che permette di visualizzare un elenco eventualmente scrollabile di elementi, su una o piu' colonne. Nella foto che segue potete vederne un esempio. Sulla Lista sono disponibili vari metodi tra cui AddItem (per aggiungere un elemento), RemoveItem (per togliere un elemento), Clear (per azzerare il contenuto della Lista) e diverse Proprieta' tra cui Sorted (per abilitare o disabilitare l'ordinamento), ListCount (per conoscere quanti elementi ci sono), ListIndex per sapere qual'è l'elemento corrente.

Combo Box (Casella Combinata)

La casella combinata assomiglia alla casella di controllo ma visualizza solo l'elemento corrente, gli altri elementi sono visualizzati solo premendo sull'apposito pulsante (freccia) che fa comparire un menu contenente l'elenco degli elementi. Rilasciando il mouse su uno degli elementi, il menu scompare e quell'elemento viene visualizzato nella casella.

Grid (Griglia)

È un controllo che consente di visualizzare elementi con aspetto tabellare. È il tipico aspetto dei Fogli elettronici, oppure viene usato per visualizzare i record di un database. È possibile impostare in fase di disegno o di esecuzione il numero di righe e di colonne con le proprieta' Rows e Cols, l'intersezione tra una riga ed una colonna costituisce una cella. Una cella puo' contenere del testo o un'immagine, ed è possibile leggere o impostare il suo contenuto durante l'esecuzione del programma. I metodi AddItem e RemoveItem consentono di aggiungere o togliere righe alla griglia, nelle posizioni specificate.

Distribuzione delle Applicazioni

Quando avete realizzato il vostro eseguibile, per poter funzionare su altri computer, esso ha bisogno di un certo numero di file accessori, che possono variare a seconda del tipo di controlli che avete usato. Per aiutare il programmatore a realizzare i dischetti necessari all'installazione del programma Visual Basic mette a disposizione un programma detto "Autocomposizione Installazione", il quale dopo avergli indicato il progetto di cui volete creare i dischetti, esamina il programma, decide quali sono i file necessari, vi chiede se volete aggiungere altri file che possono essere richiesti, e quindi crea il programma di installazione ed i dischetti.
Chiudi

Outlet Offerte Sconti Promozioni Risparmiare sugli Acquisti di prodotti e Servizi in Internet

Gigacenter Store-Vente privee-Show room prive-La ruota della fortuna-Outlet Pił Style-Offerte Outlet Store-Sconti Outlet Offerte-Spartoo Shoes-Private Outlet-Saldi Privati-Sold Outlet-Offerte del GiornoBuoni sconto-Saldi Sconti-Offerte Viaggio-Acquisti + Guadagni

 

eXTReMe Tracker

Shiny Stat

free counters