You are on page 1of 6

Visual Basic

Introduzione
Il Visual Basic è un linguaggio di programmazione ad alto livello della Microsoft.
Si dice ad alto livello perché è orientato all’utente, cioè le istruzioni del programma che l’utente
implementa sono vicine al modo di ragionare dell’essere umano piuttosto che verso la macchina.
Un programma è un insieme di istruzioni. Una istruzione rappresenta un evento elementare. Se, ad
esempio, abbiamo un problema da risolvere, la strategia di soluzione del problema consiste
nell’insieme di operazioni elementari che risolvono quel problema; nel caso di una telefonata si
deve alzare la cornetta, aspettare il segnale di libero e poi comporre il numero. Se si riceve il
segnale di occupato si chiude il telefono e si ripete la procedura. Se, invece, si ottiene il segnale di
inoltro telefonata si aspetta che l’interlocutore risponda per dare l’avvio alla conversazione.
Il programmatore, analogamente, quando realizza un programma, suddivide il problema in passi
elementari e prevede tutti i possibili casi che si possono verificare.
Terminata la scrittura delle istruzioni in linguaggio sorgente (istruzioni comprensibili all’uomo)
queste vengono trasformate in istruzioni in linguaggio macchina (istruzioni eseguibili dal
microprocessore del computer). Questo procedimento di traduzione può avvenire in due diverse
modalità a seconda del linguaggio di programmazione:
• interpretazione
• compilazione
I linguaggi di programmazione interprete convertono l’istruzione sorgente attuale in istruzione in
linguaggio macchina ed immediatamente la eseguono. Un esempio è il linguaggio di
programmazione PHP utilizzato per generare pagine web.
I linguaggi di programmazione compilatori convertono tutte le istruzioni del programma sorgente in
istruzioni in linguaggio macchina e dopo questa fase, chiamata compilazione, eseguono il
programma. Il Visual Basic è un esempio di linguaggio di programmazione compilato.
È evidente che un programma compilato è più veloce, nell’esecuzione, di un programma
interpretato, perché la trasformazione delle istruzioni sorgente in linguaggio macchina è avvenuta in
precedenza mentre per i linguaggi interpretati l’esecuzione di ogni istruzione avviene dopo aver
atteso la traduzione in linguaggio macchina.
I recenti linguaggi di programmazione consentono la realizzazione del programma attraverso due
fasi distinte:
• realizzazione dell’interfaccia grafica
• scrittura del codice (istruzioni del programma in linguaggio sorgente)
Per interfaccia grafica si intende l’insieme degli oggetti che appariranno nella finestra che si ottiene
al lancio del programma realizzato: Etichette, caselle di testo, pulsanti, ecc.
In questa prima parte della dispensa faremo riferimento esclusivamente ai tre oggetti sopra citati.
La procedura per l’esecuzione di un programma avviene nel seguente modo:
lanciato il programma, si ottiene una finestra che contiene l’interfaccia grafica con pulsanti,
etichette e quant’altro. Facendo click, doppio click, click di destro, ecc. su un oggetto si potrebbe
attivare un particolare evento realizzato da una serie di istruzioni scritte a suo tempo dal
programmatore.

Ambiente di editing di Visual Basic


Lanciato il Visual Basic si ottiene una schermata con la barra dei menù e la barra degli strumenti
sulla parte superiore, una casella degli strumenti generale nella parte a sinistra che contiene gli
oggetti fondamentali che possiamo usare, sulla parte destra troviamo una finestra per la gestione
del progetto e una finestra delle proprietà relative all’oggetto selezionato. Nella parte centrale delle
schermo troviamo il form che è quella finestra che conterrà gli oggetti che costituiranno la nostra
interfaccia grafica (GUI = Graphics Interface User).
Si mostrano, in fig.1, le barre degli strumenti precedentemente indicate.

1
Supponiamo di voler realizzare un semplicissimo programma che, dati due numeri a e b, calcola la
somma, la sottrazione, la moltiplicazione e la divisione.
L’interfaccia grafica potrà essere costituita da una serie di label che indicano il titolo del
programma, i nomi delle variabili di input a e b ed i risultati, 5 pulsanti uno per ogni operazione ed
il quinto per la chiusura del programma, due caselle di testo che conterranno i valori di a e b e
quattro caselle di testo che conterranno i risultati.
Si mostra nella fig.2 l’interfaccia grafica.

Fig.2 – Interfaccia grafica per il programma che calcola le 4 operazioni su due numeri dati.

I valori di a e b saranno scritti nelle “Text box” indicate con Text1 e Text2; i risultati si avranno
nelle text box a destra. Per ottenere la somma si farà click sul pulsante indicato col + (proprietà
caption del “command button), ecc. Per chiudere fare click sul pulsante Esci. Per ottenere il segno
2
di sottolineatura sulla E di esci si precede il testo Esci, nel caption, col carattere &. Come è noto,
l’attivazione del comando Esci potrà, quindi, avvenire pigiando ALT+E.
Affinché si ottengano le funzioni desiderate si devono mettere a punto semplici sottoprogrammi
(sub routine). Facendo doppio click sul pulsante Commandi1 indicato col + nell’interfaccia grafica,
si entra nella modalità di testo in cui scrivere le istruzioni valide in Visual Basic che consentono di
effettuare la somma tra a e b. Innanzitutto vedremo che si otterranno automaticamente due righe che
contengono due istruzioni:

Private Sub Command1_Click()

End sub

La prima dichiara che si tratta di una subroutine privata che si attiva al click sul pulsante di nome
Command1, la seconda indica la fine della subroutine. Al loro interno dovrà trovarsi la lista delle
istruzioni che svolgono la somma e depositano il risultato nella casella di testo Text3.
Analogamente per gli altri pulsanti. Si riporta di seguito il listato dell’intero programma.
Commentiamo in dettaglio la prima Sub che effettua la somma.
Nella variabile a cui si è dati il nome a viene trasferito il valore numerico del contenuto della text
box di nome Text1. Da notare che il contenuto della text box possiede il formato testo per cui per
trasformarlo in formato numerico si deve attivare la funzione Val. La stessa procedura è attivata per
la casella di testo Text2 che viene trasformata in numero e trasferita nella variabile b.
La variabile somma conterrà il risultato a+b. Somma verrà poi trasformata in stringa (formato testo)
dalla funzione Str$ e trasferito in Text3. Il sottoprogramma termina con l’istruzione End Sub.
Gli altri sottoprogrammi sono analoghi salvo per la divisione. Qui, infatti, è impostato un controllo
su b che deve essere diverso da zero. Infatti se il divisore è uguale a zero non si può svolgere la
divisione. In particolare il programma cessa di funzionare a causa di un errore (dichiarata come
division by 0).
Per effettuare il controllo di b si utilizza l’istruzione if … then … else … End If che suona così:
Se b è diverso da zero allora definisci rapporto il risultato di a/b che poi viene trasferito nellaText6
dopo essere stato trasformato in testo altrimenti (cioè se b=0) poni nella Text6 il messaggio di testo
(tra doppie virgolette) Attento: b=0!

Private Sub Command1_Click() Private Sub Command4_Click()


a = Val(Text1.Text) a = Val(Text1.Text)
b = Val(Text2.Text) b = Val(Text2.Text)
somma = a + b If b <> 0 Then
Text3.Text = Str$(somma) rapporto = a / b
End Sub Text6.Text = Str$(rapporto)
Else
Private Sub Command2_Click() Text6.Text = "Attento: b=0!"
a = Val(Text1.Text) End If
b = Val(Text2.Text) End Sub
differenza = a - b
Text4.Text = Str$(differenza) Private Sub Command5_Click()
End Sub End
End Sub
Private Sub Command3_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
prodotto = a * b
Text5.Text = Str$(prodotto)
End Sub

La pressione del mouse su Command5 attiva l’ultimo sottoprogramma che consente l’uscita dal
programma. Esso consiste nella semplice istruzione End.

Si riportano nelle pagine successive alcuni listati con relativa interfaccia grafica.

3
Private Sub Command3_Click()
Label5.Caption = "X1"
Label6.Caption = "X2"
If Val(Text1) = 0 Then
Text1 = "a<>0"
Label7.Caption = "Se a=0 l'equazione non è di 2° grado!"
Text4 = ""
Text5 = ""
Else
delta = Val(Text2) ^ 2 - 4 * Val(Text1) * Val(Text3)
If delta > 0 Then
Label7.Caption = "Radici reali e distinte"
Text4 = (-Val(Text2) + Sqr(delta)) / (2 * Val(Text1))
Text5 = (-Val(Text2) - Sqr(delta)) / (2 * Val(Text1))
End If
If delta = 0 Then
Label7.Caption = "Radici reali e coincidenti"
Text4 = -Val(Text2) / (2 * Val(Text1))
Private Sub Form_Load() Text5 = Text4
Text1 = "" End If
Text2 = "" If delta < 0 Then
Text3 = "" Label7.Caption = "Radici complesse e coniugate"
Text4 = "" Text4 = -Val(Text2) / (2 * Val(Text1))
Text5 = "" Text5 = Sqr(-delta) / (2 * Val(Text1))
Label7.Caption = "" Label5.Caption = "parte reale"
End Sub Label6.Caption = "parte immaginaria"
End If
Private Sub Command1_Click() End If
End End Sub
End Sub

Private Sub Command2_Click()


Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Text5 = ""
Label5.Caption = "X1"
Label6.Caption = "X2"
Label7.Caption = ""
End Sub

4
Le strutture fondamentali dei programmi.
Esse sono:
• Sequenza
• Selezione
• Iterazione (o ripetizione)
La sequenza è la successione ordinata delle istruzione. Esse saranno svolte nell’ordine così come
appaiono nel listato. Questo è il caso dei sottoprogrammi della somma, sottrazione e
moltiplicazione sopra riportato.
L’algoritmo (strategia di soluzione) della somma, ad esempio, è una sequenza che si può
rappresentare con i seguenti blocchi:

L’ovale indica l’inizio o la fine della


procedura.
Le operazioni di lettura e di scrittura si
rappresentano in parallelogrammi.
Le operazioni vengono realizzate nei
rettangoli.
Per le operazioni di decisione (if..then..else)
si utilizzerà il simbolo del rombo con un
ingresso e due uscite a seconda dell’esito di
un confronto che potrà essere vero o falso.

Nello schema a blocchi riportato a sinistra le


variabili a e b vengono lette dalle Text box e
il risultato somma è scritto nella text box
Text3.
La struttura del diagramma a blocchi a
sinistra è una sequenza.

La selezione è una struttura che consente di


operare una tra due possibili scelte in
funzione dell’esito di un test che può essere
VERO o FALSO.
Ad esempio, nel caso dell’algoritmo della
divisione, occorre verificare se b è diverso
da zero. Se ciò è vero si procederà al calcolo
di a/b, se invece è falso la divisione non si
può realizzare per cui si decide di inserire
nella casella di testo dell’uscita Text6 un
messaggio che ci informa che b è zero.
Si riporta di seguito il diagramma a blocchi
dell’algoritmo della divisione.

5
Iterazione
È una procedura che consiste nel ripetere un gruppo di istruzioni finchè è vera o falsa una data
condizione. Nelle istruzioni che riguardano il ciclo deve esistere almeno una che modifica una delle
variabili implicate nel test altrimenti si rischierebbe che la condizione non è mai soddisfatta (o
sempre soddisfatta) ed il ciclo verrebbe ripetuto all’infinito.
Le istruzioni che implementano il ciclo sono:

Do Do While condizione
Istruzioni Istruzioni
Loop While condizione Loop
Se la condizione è vera il gruppo indicato con Se la condizione è vera il gruppo indicato con
istruzioni viene ripetuto in caso contrario il istruzioni viene ripetuto in caso contrario il
programma esegue la successiva a Loop While. programma esegue la successiva a Loop. Anche
Si pone la parola chiave Until invece di While in questo caso si usa Until anziché While se si
se la ripetizione delle istruzioni deve avvenire se vuole ripetere il ciclo se la condizione è falsa.
la condizione è falsa.

La differenza tra le due strutture di iterazione sta nel fatto che la prima esegue le istruzioni del ciclo
almeno una volta mentre nel secondo caso il gruppo istruzioni del ciclo potrebbe non essere mai
eseguite se la condizione è vera subito.
Vi sono numerosi casi in cui è necessaria la struttura iterativa 1) ed altri la 2).
Se la ripetizione deve avvenire facendo assumere ad una variabile valori numerici che si
incrementano o decrementano fino al un certo valore finale noto, si utilizza la comoda struttura
for…next. La sintassi è: For contatore = val_iniz To val_fin Step Incremento. Segue, a questa, un
gruppo di istruzioni da ripetere ed alla fine troviamo l’istruzione Next contatore. Se Incremento=1
si può omettere la parte finale Step 1. Contatore è la variabile che assumerà il valore iniziale
val_iniz e valore finale val_fin. Si mostra nella successiva figura l’interfaccia grafica ed il listato di
un programma che consente di generare 10 numeri casuali tra 0 e 99 e di metterli nella lista List1
alla pressione del primo tasto e di ordinarli in senso crescente premendo il secondo pulsante.
Si noti l’utilizzo di 5cicli For Next dei quali uno (avente j per contatore) nidificato in un ciclo i.
In questo programma, inoltre, troviamo la struttura vettoriale, la lista e l’algoritmo di scambio.

You might also like