Corso di programmazione in Visual Basic

Durante questo corso introdurrò Visual Basic versione 6.0. Visual Basic è un linguaggio di programmazione che ho più volte incrociato in passato, ma non ne avevo mai approfondito il funzionamento prima d’ora.

Spesso abbrevierò Visual Basic con VB.

Premessa

Non si tratta di un linguaggio che ritengo utile per la carriera di un programmatore, ma ne riconosco l’utilità ai fini didattici. Non a caso mi sono trovato a studiarlo, per la prima volta qualche settimana fa, mentre aiutavo un ragazzo a recuperare un debito scolastico.

Essendo inoltre lo stesso linguaggio utilizzato per automatizzare alcune funzioni di Excel, conoscerlo ci permette di capire il funzionamento di alcuni fogli di calcolo spesso utilizzati da molte aziende fedelissime all’ormai deprecato sistema di Microsoft.

Requisiti

Do per scontato che chi segue il corso abbia un’infarinatura riguardo il mondo dell’informatica, i linguaggi di programmazione e la logica alla base di essi.

  • Programmazione strutturata
  • Variabili e tipi di variabile
  • Strutture di controllo (if, else, ecc…)
  • Strutture iterative (while, for, ecc…)

Ambiente di sviluppo

Impostiamo il nostro ambiente di sviluppo. Durante il corso che ho tenuto, ho utilizzato Microsoft Excel per testare il codice scritto.

In alternativa si può utilizzare Visual Studio Community edition, ma è un po’ più complessa l’impostazione del progetto.

Infine, in preda alla disperazione sul mio portatile con Linux, sono riuscito a eseguire il codice con LibreOffice Calc. Se volete saperne di più scrivetemi.

Microsoft Excel

Per poter scrivere del codice VB è necessario abilitare la scheda Sviluppatori di Excel.

La scheda Sviluppo non viene visualizzata per impostazione predefinita, ma è possibile aggiungerla alla barra multifunzione.

  1. Nella barra dei menù cliccare su File
  2. Opzioni
  3. Personalizzare la barra multifunzione
  4. Nella finestra Personalizzazione della barra multifunzione tra le Schede principali selezionare la casella Sviluppo

Il menù sviluppatori si presenta nel seguente modo per le ultime versioni di Excel.

In alternativa click con il tasto destro sulla barra delle applicazioni e selezionare Personalizzazione della barra multifunzione. Da li, seguire il punto 4 dell’elenco precedente.

Impariamo le basi

Qui di seguito un riassunto dei comandi di base del linguaggio, se siete impazienti come me, e volete prima vederlo in azione e dopo capire come funziona, vi rimando alla sezione esercizi.

Sintassi

La sintassi è la base del linguaggio. Una volta che siamo certi di sapere cos’è una variabile, una struttura condizionale o iterativa, possiamo vedere come si traducono questi concetti in Visual Basic.

Variabili

La dichiarazione delle variabili in Visual Basic deve essere effettuata secondo la seguente forma:

Dim nomeVariabile as Tipo

Dove:

  • Dim è una parte comune che indica che stiamo inizializzando una variabile
  • nomeVariabile è il nome della variabile che stiamo dichiarando
  • Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto

Costanti

Le costanti sono un particolare tipo di dato che, una volta inizializzato, non potrà mai cambiare il suo valore durante l’esecuzione del programma. Proprio a causa di questa caratteristica devo assegnarle un valore in fase di dichiarazione.

Public Const NomeCostante as Tipo = valore

Dove:

  • Public indica se l’ambito della variabile, può essere Public o Private
  • Const indica che sto inizializzando una variabile
  • NomeCostante è il nome della variabile che stiamo dichiarando
  • Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto
  • = assegnazione di un valore alla costante
  • valore è il valore da assegnare alla costante

Vettori

Spesso utilizzerò la parola array e vettore come sinonimi, sono esattamente la stessa cosa. Per dichiarare un vettore in Visual Basic devo definirne la dimensione in fase di creazione.

Dim serieVelocita(n) as Tipo

Dove:

  • Dim è una parte comune che indica che stiamo inizializzando una variabile
  • serieVelocita è il nome del vettore che stiamo assegnando
  • () indicano che questa variabile è un vettore, cioè una variabile multidimensionale
  • n indica la dimensione del vettore. In fase di dichiarazione si può scegliere se il vettore deve iniziare da 0 o da 1 scrivendo (0 to n) oppure (1 to n)
  • Tipo è il tipo di dato che andremo a salvare dentro la variabile. La lista completa dei tipi di variabili è disponibile qui sotto

Gli array vengono creati vuoti e possono essere popolati successivamente iterando i tra i suoi valori con un ciclo. Vedi i cicli nel paragrafo successivo.

Public Const size as Integer = 3
Dim list(3) as Integer

For ind = 0 To size
     list(ind) = InputBox("Insert value " & ind & ":")
Next

oppure richiamando le singole aree di memoria dell’array:

Public Const size as Integer = 3
Dim list(3) as Integer

list(0) = 10
list(1) = 20
list(2) = 50
list(3) = 5

Matrici

Le matrici non sono altro che array di array e si dichiarano nel seguente modo:

Dim matrix(5, 5) As Double

Selettori condizionali

If (condizione) Then
 ...
ElseIf (condizione 2) Then
 ...
Else
 ...
End If

Loop iterativi

Il ciclo While è una tipologia di struttura iterativa che, prima di entrare nel ciclo, verifica la condizione. Se la condizione è vera esegue il ciclo finché questa condizione non diventa falsa.

While (condizione)
 ...
End While

Il Do … While serve nei casi in cui vogliamo far eseguire il ciclo anche quando la condizione del While non è soddisfatta prima di entrare nel ciclo.

Do
 ...
While(condizione)

Il ciclo For viene sempre eseguito, al contrario di quanto accadeva con il ciclo While.

For indice=0 To limite
 ...
Next

Il ciclo For è composto da due elementi principali.

  • indice ha la funzione di contatore. Dice al ciclo da quale numero iniziare a contare e viene incrementato a ogni iterazione
  • limite dice al ciclo For quando fermarsi

Entrambe le variabili devono essere di tipo Integer.

Oggetti

Gli oggetti sono elementi dell’interfaccia di un programma Visual Basic. Tra gli oggetti ricordo i bottoni, select box, text box, ecc…

Ogni oggetto è caratterizzato da due principali componenti:

  • Proprietà
    • Caratterizzano l’oggetto
    • Esempio: nel colore, dimensioni, nome, ecc…
  • Eventi
    • Riferiti a un particolare oggetto
    • Allo scatenarsi di un evento, eseguono la porzione di codice presente all’interno dell’evento
    • Esempio: Click, Change, ecc…

Non entriamo nel dettaglio di queste componenti, potete smanettare con il vostro ambiente di sviluppo dopo aver appreso le basi del VB.

I principali oggetti che utilizzeremo sono:

  • MsgBox
  • InputBox
  • TextBox
  • Label
  • CommandButton

Esercizi

Dopo questa noiosa spiegazione delle varie componenti del linguaggio, iniziamo a scrivere un po’ di codice.

Hello World

Il nostro primo programma non farà altro che visualizzare una piccola finestra con scritto “Hello World!”. Ecco come:

  1. Aprite Excel
  2. Selezionate la scheda Sviluppatori
  3. Selezionare Visual Basic
  4. Una volta entrati nell’editor di VB, nell’area di sinistra avrete una struttura ad albero dei contenuti del file attuale. Cliccate li con il tasto destro e selezionate Inserisci e poi UserForm
  5. Comparirà una piccola finestra vuota e una barra con le icone degli oggetti disponibili. Cliccate su Button e trascinatelo nella finestra UserForm1 appena creata
  6. Fate doppio click sul bottone appena creato, verrete rimandati alla visualizzazione del codice sorgente dell’applicativo. Li scrivete in seguente codice:
Private Sub CommandButton1_Click()
     MsgBox ("Hello World!")
End Sub

Per verificare il funzionamento, cliccate sul tastino Esegui in alto sulla barra delle funzioni. L’icona è un piccolo tastino “play” verde.

Divertiti? Andiamo avanti!

Hello Teodoro!

Per complicarci la vita andiamo ad aggiungere una Label, una TextBox e qualche variabile.

  1. Partendo sempre dal nostro form vuoto (vedi l’esercizio precedente se non ti ricordi come fare)
  2. Inseriamo una Label, entro la quale scriveremo “Inserisci il tuo nome:”
  3. Inseriamo una TextBox
  4. Inseriamo un Bottone
  5. Facciamo doppio click sul bottone e nella visualizzazione del codice scriviamo quanto segue:
Dim name As String

Private Sub CommandButton1_Click()
     name = TextBox1.Text 
     MsgBox ("Hello " & name & "'s World!")
End Sub

Clicchiamo sul tastino Esegui. Dovremmo vedere il nostro programmino che ci chiederà di inserire il nostro nome. Scrivete Teodoro e premete sul CommandButton1.

Se tutto funziona dovrete vedere una piccola finestrella con scritto “Hello Teodoro’s World!”.

Ok, le parti più semplici le abbiamo fatte.

Mettiamoci tutto!

Aggiungiamo quindi un Array, una costante, un ciclo, qualche InputBox e la possibilità di andare a modificare il contenuto di una TextBox.

  1. Partendo sempre dal nostro form vuoto (vedi il primo esercizio se non ti ricordi come fare)
  2. Inseriamo una Label, dentro la quale scriveremo “Ecco il tuo array”
  3. Inseriamo una TextBox subito sotto (abilita l’opzione multi linea se vuoi visualizzare il contenuto su più linee.
  4. Inseriamo tre Bottoni
  5. Facciamo doppio click sul bottone e nella visualizzazione del codice scriviamo quanto segue:
Private Const size As Integer = 3
Dim ind As Integer
Dim testoArray As String
Dim list(size) As String

Private Sub CommandButton1_Click()
     testoArray = "Array name: list" & vbCrLf & "Array content:"
     If list(0) = "" Then
          list(0) = "10"
          list(1) = "20"
          list(2) = "50"
          list(3) = "5"
     End If 

     For ind = 0 To size
          testoArray = testoArray & vbCrLf & list(ind)
     Next

     TextBox2.Text = testoArray
End Sub

Private Sub CommandButton2_Click()
     For ind = 0 To size
          list(ind) = InputBox("Insert value " & ind & ":")
     Next
End Sub

Private Sub CommandButton3_Click()
     End
End Sub

Appendice

Tipi di dati

TipoDati contenutiMemoria occupataIntervallo valori
ByteNumeri interi1 byteDa 0 a 255
IntegerNumeri interi2Da -32768 a 32767
LongNumeri interi4Circa +/- 2 miliardi
SingleNumeri decimali a singola precisione. 4Da +/- 1,401298e-45 a 3,402823e48
DoubleNumeri decimali a doppia precisione8Da +/- 4,94065645841247e-324 a 1,79769313486232e308
StringStringhe alfanumeriche1Insieme da 0 a 255 caratteri
BooleanValori logici2Valori logici
DateDate e ore8Da 1/1/100 al 12/31/9999
CurrencyNumeri in formato valuta (4 decimali) 8+/- 9e14
VariantTipo generico8Uno qualsiasi dei dati precedenti

Altro

Esiste la possibilità di scrivere testi su più righe: vbCrLf stampa un carattere di fine riga e manda il testo a capo.

Links