From C++ to Visual Basic

Transcript

From C++ to Visual Basic
FROM C TO
Visual Basic
DEDICATO AGLI UTENTI
CON BASI DI C CHE SI
AFFACCIANO AL MONDO
DEL VISUAL BASIC.
Contiene solo basi di
linguaggio
FEDERICO GIUNTOLI
Microsoft
Visual Basic
Questo capitolo ha lo scopo di
definire le caratteristiche
elementari del linguaggio e
dell’ambiente di sviluppo
integrato.
Un nuovo modo di programmare
C ONTENUTO
1. Cenni storici
2. Descrizione generale del linguaggio
3. Programmazione event-driven
Al giorno d’oggi, la disponibilità di linguaggi e di strumenti utili al fine di
creare applicazioni è ampia, vale tuttavia la pena di prendere in
considerazione il Visual Basic.
Arrivato alla versione 8, il Visual Basic è un semplice ma potente linguaggio
di programmazione di casa Microsoft per costruire software installabili
direttamente sul computer. Fino alla versione 6, il VB era considerato, da
molti, un linguaggio limitato e semplicistico, tuttavia, dalla versione 7, Visual
Basic è stato completamente rivisto e microsoft ha lanciato il nuovo Visual
Basic .NET, la sintassi è comunque molto simile a quella del VB. Con le nuove
versioni questo si è evoluto in un linguaggio più vicino alle esigenze degli
sviluppatori che utilizzano la programmazione orientata agli oggetti. Con
questo linguaggio è possibile creare qualsiasi tipo di applicazione.
Le caratteristiche per cui questo linguaggio risulta particolarmente semplice e
versatile, sono diverse:
• Facilità di scrittura (non utilizza formalità di punteggiatura tipica di quasi
tutti gli altri linguaggi).
• Funzione di progettazione dell’interfaccia grafica completamente visuale.
• Il linguaggio di tipo event-driven.
I programmi Event-driven (programmazione a eventi), non hanno un
inizio e una fine, bensì sono predisposti ad eseguire un loop infinito di
istruzioni. Il flusso di lavoro viene dunque determinato dal verificarsi di
eventi esterni. Un evento o, più semplicemente, un’azione, è un’interazione
dell’utente con il programma, essa può consistere in un semplice click,
digitazione in una casella, inserimento di periferiche esterne, cambiamento
della risoluzione, ecc. Gli oggetti del Visual Basic sono in grado di riconoscere
autonomamente gli eventi più comuni, senza che il programmatore si
preoccupi di stabilire, per esempio, quando l’utente ha fatto click su un
oggetto.
Proprio per la sua facilità e per la potenza e la flessibilità che offre, il Visual
Basic viene utilizzato sia dai programmatori più esperti, sia dai neofiti che si
avvicinano per la prima volta al mondo della programmazione.
L’apprendimento del VB risulta, per la sua somiglianza sintattica al C# e
quindi al C++, particolarmente facilitato per gli utenti i quali hanno già
familiarità con quest’ultimo.
S EZIONE 2
L’ambiente Microsoft
Visual Basic
C ONTENUTO
1. L’ambiente di sviluppo visuale Microsoft
Visual Basic
2. Da che cosa è composto e le fasi di
realizzazione di un progetto Visual Basic
3. Il primo progetto
L’editor per la programmazione ad oggetti in Visual Basic più famoso è
Microsoft Visual Studio e non si tratta esattamente di un editor, bensì di un
ambiente di sviluppo. Esistono dei software, magari scritti anch’essi in Visual
Basic, ad uso commerciale o meno, per implementare utility, ma sono dei
surrogati dell'ambiente di sviluppo originale. VB.NET è un linguaggio di
libero utilizzo. Il relativo compilatore è scaricabile dall'area download del sito
Microsoft. È altresì scaricabile una versione detta Express dell'IDE di
sviluppo Visual Studio completamente gratuita.
Esiste inoltre un compilatore opensource e multipiattaforma che, grazie al
progetto Mono, è in grado di compilare anche su piattaforme anche diverse da
Windows, come Mac OS X o Linux.
Oltre alle versioni di Visual Studio, esiste anche un IDE (Integrated
Development Environment) open source, SharpDevelop, che permette di
creare applicazioni in modo veloce e semplice. SharpDevelop permette lo
sviluppo di plugin per l'IDE stesso, applicazioni Mono, creazione di
applicazione con .NET Compact Framework e le classiche applicazioni
Console e Windows Form.
L’ambiente di sviluppo utilizzato per realizzare questa guida è Microsoft
Visual Basic 2010 Express.
Iniziamo con il lato pratico. Apriamo Microsoft Visual Basic 2010,
spostiamoci nel menu “File” e facciamo click su “Nuovo progetto”, scegliamo
“EXE Standard” (Applicazione Windows form, nel nostro caso).
Avviato il nuovo progetto, ci troviamo davanti vuna finestra, il form, che sarà
la finestra della nostra futura applicazione. Nel form vengono collocati tutti
gli elementi dell’interfaccia utente: caselle di testo, pulsanti, immagini, ecc.
Per inserirli nel progetto basterà selezionarli dalla barra strumenti e
trascinarli nel punto desiderato. Altrettanto facilmente è possibile modificare
la posizione e la dimensione di un controllo semplicemente utilizzando il
mouse.
Come comune in ambiente windows, i comandi utili alla realizzazione di un
progetto sono raggruppati in una toolbox.
Nella finestra proprietà sono elencate le
impostazioni dell’oggetto selezionato, una
proprietà è una caratteristica dell’oggetto.
A seconda dell’oggetto selezionato le proprietà
visibili saranno diverse. L’ambiente di Visual Basic
propone già i possibili valori elencati in una casella
di riepilogo.
Le fasi di realizzazione di un progetto sono le seguenti:
1. Creazione dell’interfaccia utente - definiamo il form e tutti gli oggetti
che saranno utilizzati nel progetto.
2. Impostazioni delle priorità - descrizione degli oggetti componenti il
progetto
3. Scrittura del codice Visual Basic - Istruiamo il programma in modo da
stabilire cosa deve “accadere” al verificarsi di un dato evento.
Al termine di queste fasi si potrà procedere alla creazione dell’eseguibile e
del pacchetto di installazione.
Vediamo adesso come realizzare il nostro semplicissimo primo progetto.
1.
Apriamo un nuovo progetto e iniziamo ad inserire i controlli utilizzando
la toolbox degli strumenti.
2.
Selezioniamo l’oggetto “Label” e posizioniamolo nel form.
3.
Troviamo l’oggetto “Button” e facciamo la stessa cosa del punto 2
La situazione dovrebbe essere all’incirca questa:
4.
Selezionate adesso il bottone, spostatevi nella finestra delle proprietà e
quindi nel campo “name”, modifichiamolo in “cmdbutton”.
5.
Nel campo “Text” scriviamo “Calcola”
6.
Ripetiamo i punti 4 e 5 per Label1 e modifichiamo nel modo seguente,
name: lblrisultato, Text: ”qui comparirà il risultato
7.
Finestraacciamo doppio click sul bottone, si aprirà la scheda del codice,
dove troveremo quanto segue:
Public Class Form1
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
End Sub
End Class
Per versioni VB dalla 7 in poi.
Public Class Form1
Private Sub cmdcalcola_Click()
End Sub
End Class
Per vecchie versioni di VB
Ogni comando inserito all’interno del sub appena creato verrà lanciato non
appena si farà click sul pulsante
8.
Spostiamoci all’interno del nuovo sub e scriviamo
lblrisultato.text = 2 + 2
Analogamente alla sintassi del C#, l’operazione di assegnazione viene
effettuata tramite l’operatore “=”
9. Eseguiamo il programma con il tasto “Run” o premendo F5
Se tutto ha funzionato, il programma dovrebbe avviarsi e, cliccando sul
pulsante, dovrebbe comparire la somma di 2+2.
C APITOLO 2
Allora iniziamo a
programmare!
- Le basi
Dopo aver affrontato il primo
capitolo e aver preso mano con il
linguaggio e il relativo ambiente
di sviluppo, questo capitolo
fornisce gli elementi per
applicare le basi di
programmazione che si
conoscono al Visual Basic
S EZIONE 1
Le variabili e le costanti
C ONTENUTO
1. I tipi di dato
2. Dichiarazione di una variabile
3. Dichiarazione di una costante
4. Pratica: Area del cerchio
Così come in C# (e in tutti gli altri linguaggi) i dati possono essere di vario
tipo, ognuno dei quali rappresenta valori diversi e occupa una diversa
dimensione in memoria:
Tipo di dato
Dimension Intervallo
e in
memoria
Boolean
2 byte
true (-1) o False (0)
Integer (intero)
2 byte
Da -32.768 a 32.767
Long (intero
lungo)
4 byte
Da -2.147.483.648 a 2.147.483.647
Single (virgola
mobile a
precisione
semplice)
4 byte
Da -3,402823E38 a -1,401298E-45 per
valori negativi;da 1,401298E-45 a
3,402823E38 per valori positivi
Double (virgola
mobile a
precisione
doppia)
8 byte
Da -1,79769313486232E308 a
-4,94065645841247E-324 per valori
negativi; da 4,94065645841247E-324 a
1,79769313486232E308 per valori positivi
String
10 byte +
lunghezza
stringa (10
byte +
numero
caratteri)
Da 0 a circa 2 miliardi
Vediamo adesso la differenza tra la dichiarazione di una costante e quella di
una variabile.
Le costanti vengono dichiarate nel seguente modo:
[Public | Private] Const <NomeConstante> As <Tipo> = valore
• Public e Private restringono il campo d’azione delle costanti definite, il
primo stabilisce che i dati presenti nel form possono essere condivise anche
con altri progetti, mentre la seconda limita l’uso dei dati al solo progetto in
costruzione.
• Const è la parola chiave
• <NomeConstante> è il nome che si desidera assegnare alla costante
• As è un’altra parola chiave, indica che <Tipo> è il tipo con cui viene
dichiarata la constante
• <Tipo>, come appena detto, identifica il tipo assegnato alla constante
• = valore assegna il valore della constante
esempi di constanti sono:
Const Massimo As Integer = 10
Const pigreco As Double = 3,14
Vediamo adesso come dichiarare una variabile
Dim <NomeVariabile> As <Tipo>
• Dim è l’istruzione di dichiarazione esplicita che consente di assegnare alle
variabili un identificatore e un tipo
• <NomeVariabile> è il nome da assegnare alla variabile
• As, così come <Tipo>, hanno la stessa funzione vista per le constanti
Anche per le variabili è possibile assegnare un valore iniziale, sempre con
l’operatore “ = “
Esempi:
Dim Risultato As Integer
Dim I As Integer = 1
Dim cognome As String
Dim nome As String *20
Così come accadeva in C# con il tipo string, anche qui esso può sì avere una
lunghezza fissa dichiarata (*20 indica che la variabile nome può contenere
massimo 20 caratteri), ma può avere anche lunghezza variabile (come accade
nel terzo esempio), basta non dichiarare la dimensione
Vediamo adesso come realizzare un semplice programma che utilizzi sia
variabili che constanti.
1.
Apriamo un nuovo progetto e inseriamo nel form il controllo “TextBox”
2.
Inseriamo adesso un bottone comune e una Label
3.
Applichiamo le seguenti proprietà,
Bottone:
Name: cmdbutton, Text: Calcola;
Label:
Name: lblrisultato, Text: Risultato
4.
Spostiamoci all’interno della scheda del codice, dentro il class, e
andiamo a dichiarare le seguenti variabili e constanti:
Const pigreco As Double = 3.14
Dim raggio As Double
Dim Risultato As Double
5.
Torniamo nella finestra del form, facciamo doppio click sul bottone, ecco
che verremo spostati nuovamente nella scheda del codice, all’interno del
sub
6.
Qui andremo a scrivere:
Raggio = TextBox1.Text
Risultato = pigreco * raggio * raggio
lblrisultato.text = Risultato
7.
Il codice completo dovrebbe essere simile a questo:
Public Class Form1
Const pigreco As Double = 3.14
Dim raggio As Double
Dim Risultato As Double
Private Sub cmdcalcola_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmdcalcola.Click
raggio = TextBox1.Text
Risultato = pigreco * raggio * raggio
lblrisultato.text = Risultato
End Sub
8.
Eseguite il programma, inserendo il valore del raggio nella casella di
testo e premendo “Calcola”, dovrebbe comparire l’area del cerchio.
S EZIONE 2
Procedure e funzioni
C ONTENUTO
1.
Procedure
2.
Funzioni
3.
Applicazioni e differenze
4.
Esempio: Somma e sottrazione
Come abbiamo già visto studiando il linguaggio C, nella scrittura di un
programma possiamo usufruire di un potente strumento le funzioni.
Le funzioni, o routine, ci permettono dunque di dividere il programma in
sottoprogrammi. Rispetto al C la gestione delle funzioni è molto simile e la
sintassi semplificata. Vediamo adesso alcune precisazioni.
In VB abbiamo la distinzione tra procedure e funzioni. La differenza
fondamentale tra procedure e funzioni è che le seconde possono restituire dei
valori, mentre le procedure no.
Di seguito, la dichiarazione di una procedura.
Private Sub <nome>([Parametro As <Tipo>, ...])
...
End Sub
•Private, indica il campo d’azione dei dati.
•Sub è l’abbreviazione di “subroutine”, inizia la dichiarazione della procedura
•nome: è il nome con cui vogliamo identificare la procedura per una
successiva chiamata.
• Dentro le parentesi tonde dobbiamo inserire il nome delle variabili con i
relativi tipi, esse rispettano le regole studiate nel C, in chiamata dovremmo
perciò rispettare gli stessi accorgimenti. Potremo inoltre decidere se passare il
parametro per valore (anteponendo byval) o per indirizzo (byref).
• end sub, è una parola chiave del VB che segna la fine della procedura.
Vediamo adesso come gestire la chiamata ad una procedura:
<nome>([Parametro As <Tipo>, ...])
La chiamata è estremamente semplice, basta fare riferimento al nome e
includere tra parentesi i parametri da passare al parametro.
Vediamo adesso la dichiarazione di una funzione.
Private Function <nome>([Parametro As <Tipo>, ...]) [As
<Tipo>]
...
End Function
•Private, indica il campo d’azione dei dati.
• Fuction, inizia la dichiarazione della funzione
•nome: è il nome con cui vogliamo identificare la funzione per una successiva
chiamata.
•Come con le procedure, passiamo, all’interno delle parentesi tonde, i
parametri.
•As <Tipo>: esso indica il tipo di dato restituito dalla funzione.
Proviamo a mettere in pratica quanto appreso.
1. Apriamo un nuovo progetto
2. Inseriamo il necessario: tre label, due TextBox, due bottoni e modifichiamo
come di seguito
CAMPO
\OGGETTO
NOME
.TEXT (O
CAPTION)
Label1
-invariato-
Variabile A
Label2
-invariato-
Variabile B
Label3
lblrisultato
Risultato
TexBox1
txtVarA
-vuoto-
TexBox2
txtVarA
-vuoto-
Botton1
cmdsomma
Somma
Botton2
cmdsottrazione
Sottrazione
Otterrete un risultato simile a questo
Adesso andremo ad effettuare la somma mediante un parametro e la
sottrazione mediante una funzione.
3. Dichiariamo due variabili globali: A e B come interi
4. Andiamo a scrivere la procedura somma, ricordiamo che una procedura
non restituisce valori.
Private Sub somma(ByVal A As Integer, ByVal B As Integer)
Dim risultato As Integer
risultato = Val(A) + Val(B)
lblrisultato.Text = risultato
End Sub
Analizziamo:
•Abbiamo dichiarato la procedura somma, la quale lavorerà con il valore
(byval) dei parametri A e B).
•Abbiamo dichiarato il risultato come un intero e abbiamo assegnato ad
esso l’addizione tra A e B.
•Poiché non è possibile far tornare un valore, la visualizzazione del risultato
deve avvenire all’interno della procedura.
5. Scriviamo la funzione sottrazione, la quale può restituire valori.
Private Function sottrazione(ByVal A As Integer, ByVal B
As Integer) As Integer
Dim risultato As Integer
risultato = Val(A) - Val(B)
Return risultato
End Function
Analizziamo:
• Abbiamo dichiarato la funzione somma, la quale lavorerà con il valore
(byval) dei parametri A e B). Questa funzione restituirà un valore intero.
•Abbiamo dichiarato il risultato come un intero e abbiamo assegnato ad
esso la differenza tra A e B.
•Return è la parola chiave che anticipa il valore di ritorno.
6. Creiamo gli eventi click su cmdsomma e click su cmdsottrazione.
7. Assegnamo alle variabili i TextBox.
8. Effettuiamo la chiamata al sottoprogramma relativo.
Risultato finale:
Public Class Form1
Dim A As Integer
Dim B As Integer
Private Sub cmdsomma_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmdsomma.Click
A = txtVarA.Text
B = txtVarB.Text
somma(A, B)
End Sub
Private Sub cmdsottrazione_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmdsottrazione.Click
A = txtVarA.Text
B = txtVarB.Text
Dim risultato As Integer
risultato = sottrazione(A, B)
lblrisultato.Text = risultato
End Sub
Private Sub somma(ByVal A As Integer, ByVal B As
Integer)
Dim risultato As Integer
risultato = Val(A) + Val(B)
lblrisultato.Text = risultato
End Sub
Private Function sottrazione(ByVal A As Integer,
ByVal B As Integer) As Integer
Dim risultato As Integer
risultato = Val(A) - Val(B)
Return risultato
End Function
End Class
//A seconda della versione utilizzata, il codice potrebbe risultare diverso.
S EZIONE 3
Funzioni iterative
C ONTENUTO
1. Ciclo For ... Next
2. Ciclo Do ... Loop
3. Pratica: Fattoriale
Vediamo come mandare in esecuzione dei cicli con il VB.
Il ciclo più utilizzato è sicuramente il For .. Next /*anche se alla prof non
piace :’) */
Vediamone la sintassi:
For <Contatore> = Inizio To Fine [Step Incremento]
...
Next [<Contatore>]
•For: è la parola chiave che apre il ciclo
•<Contatore> : è una variabile contenente valori numerici
•Inizio To Fine: Inizio è il valore che assumerà subito il contatore, Fine è il
valore che dovrà raggiungere.
•La parola chiave Step è facoltativa, se non viene specificata, l’incremento di
default sarà +1
•Next <Contatore> chiude il ciclo
Il Do ... Loop può presentarsi in due forme:
Do While Condizione
...
Loop
Do apre il ciclo.
•While Condizione è la condizione da verificare per entrare nel ciclo.
•Loop termina il ciclo.
Questa struttura prevede per prima cosa la verifica della condizione. Il ciclo
entrerà in esecuzione finché la condizione risulterà vera.
Do
...
Loop While Condizione
Do: Apre il ciclo.
Loop: segna la fine del ciclo.
While Condizione è la condizione da verificare per entrare nel ciclo.
Questa struttura permette di eseguire le istruzioni e di verificare la condizione
al termine di ciascuna esecuzione.
Scriviamo adesso un semplice programma con i vari cicli, così da evidenziarne
le differenze.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles cmdcalcola.Click
Dim A As Integer
A = txtVarA.Text
Dim Risultato As Integer
Risultato = 1
For i As Integer = 0 To A - 1
Risultato = Risultato * (A - i)
Next
lblrisultato.Text = Risultato
End Sub
End Class
‘For … Next
Public Class Form1
>>>>>>Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmdcalcola.Click
Dim A As Integer, i As Integer, Risultato As
Integer
A = txtVarA.Text
Risultato = 1
i = 0
Do While i < A
Risultato = Risultato * (A - i)
i = i + 1
Loop
lblrisultato.Text = Risultato
End Sub
End Class
‘Do ... Loop