Corso di Sistemi anno scolastico 2007/2008 Prof. Aniello Celentano

Transcript

Corso di Sistemi anno scolastico 2007/2008 Prof. Aniello Celentano
Introduzione all‟uso di Visual Basic
La dispensa non vuole essere un manuale completo ed esaustivo del Visual Basic,
ma piuttosto vuole essere una semplice introduzione allo studio e all‟uso del
linguaggio di programmazione più diffuso al mondo. Un primo approccio nella
realizzare semplici programmi.
Corso di Sistemi anno scolastico 2007/2008
Prof. Aniello Celentano
ITIS Galileo Ferraris - Napoli
Segnalare eventuali incomprensioni, imprecisioni e errori tramite il sito www.anicele.it
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 1
Introduzione all‟uso di Visual Basic
Concetti di base
Un computer può memorizzare i dati in tre differenti modi.
a) Il modo numerico. In questo modo i dati sono di tipo numerico e sono codificati in binario.
Un byte è costituito da 8 bit. Questo significa che un byte può rappresentare al massimo 256
valori diversi: tutti i numeri positivi tra 0 e 255. Per un elaboratore c‟è differenza nel modo
di memorizzare un numero intero, per esempio 100, e un numero decimale, tipo 100.0.
Si distinguono diversi formati:
a1) Il formato Byte a 8 bit. Questo formato può rappresentare tutti i numeri tra 0 e 255,
occupando in memoria solo un byte.
a2) Il formato INTEGER o Intero a 16 bit. In questo formato vengono memorizzati i numeri
interi con segno. Questo formato comporta l‟utilizzo di 2 byte (16 bit) in memoria. In
questo formato, ad esempio, il numero 32145 costituito da 5 cifre decimali (5 caratteri)
occupa uno spazio RAM di soli 2 byte. Dei 16 bit uno è riservato per il segno, il più
significativo, e gli altri per la codifica del numero: 215=32768 possibili numeri.
a3) Il formato SINGLE o floating. In questo formato si possono memorizzare i numeri con
la virgola, per esempio 10,5. Un numero in questo formato occupa 4 byte. Anche se
dobbiamo memorizzare 2.3 (tre caratteri numerici) occupa in RAM sempre 4 byte.
a4) Esistono altri formati, sempre un multiplo intero di byte, che permettono di memorizzare
dati sempre più grandi riservando 4, 8, 16 o 32 byte e operando sempre una codifica in
binario. Ad esempio il numero 1345827.6 occupa 4 byte in memoria anche se è un
numero fatto di 8 caratteri numerici più il punto decimale.
b) Il modo stringa. In questa modalità le informazioni sono memorizzate in unità di 8 bit per
volta: il byte. Quindi una stringa è una successione di byte che rappresentano i caratteri
rappresentati nella tabella ASCII. In questo modo c‟è una profonda differenza tra il formato
numerico e quello stringa. Il numero 1823.74 (7 caratteri) è memorizzato in un formato
numerico occupando solo 4 byte (formato single). Lo stesso numero è memorizzato nel
formato stringa impiegando 7 byte: un byte per il carattere 1, un byte per il carattere 8, ecc.
ecc. Anche il punto decimale è un carattere. Quindi si comprende che il formato numerico è
un formato che non si presta ad una facile “visualizzazione” del numero, dato che viene
codificato in binario, mentre il formato stringa, che memorizza i caratteri, si presta meglio
per la visualizzazione del numero. Inoltre il formato numerico permette di eseguire tutta
l‟aritmetica tra i numeri, il formato stringa non permette di fare le operazioni matematiche
perché è un formato di rappresentazione.
c) Il modo Booleano. In questa modalità le informazioni sono memorizzate rispetto allo stato
logico che assumono. Se la variabile X è definita booleana, allora questa variabile può
assumere solo i valori True/False (Vero/Falso).
La Tabella ASCII
Questa tabella permette di codificare un insieme di 256 caratteri in un codice a 8 bit. L‟insieme dei
caratteri è costituito dall‟alfabeto, lettere maiuscole (ABCD…) e minuscole (abcd…), i simboli
numerici (0123…), i simboli di punteggiatura (;,:!). Pertanto ogni carattere può essere
rappresentato da un codice numerico e viceversa. Ad esempio il carattere A è rappresentato dal
codice numerico 65, mentre il codice 122 rappresenta il carattere z
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 2
Introduzione all‟uso di Visual Basic
Dimensionamento di una Variabile
Una variabile può essere intesa come una specie di contenitore in cui memorizzare un valore, sia
numerico che stringa. Quando scriviamo che X=3 definiamo una variabile che chiamiamo X e che
assume il valore di 3. In Basic prima di usare una variabile dobbiamo definirla per permettere al
Basic di riservare la giusta quantità di memoria necessaria per memorizzare il dato che deve
rappresentare. Vediamo ciò come avviene.
Dimensionamento variabili Intere. Se nel corso del programma che si sta sviluppando si decide di
usare una variabile I che può assumere solo valori interi, allora si deve dimensionare la variabile
con l‟istruzione Dim I as Integer. Questa istruzione significa: riserviamo due byte di memoria
RAM per memorizzare i valori che di volta in volta assume la variabile I.
Dimensionamento variabili Reali. Se abbiamo l‟esigenza di usare una variabile con nome
Temperatura, perché deve contenere i valori della temperatura, allora questa deve essere
dimensionata con l‟istruzione Dim Temperatura as Single. In questo modo il VB riserva 4 byte per
memorizzare i valori della temperatura, potendo memorizzare anche i decimali. In questo modo
l‟istruzione Temperatura=-5.2 permette di memorizzare il dato (-5.2) nella variabile Temperatura.
Si faccia attenzione al fatto che se Temperatura fosse stata dimensionata come Intera, il dato
memorizzato sarebbe stato -5, VB avrebbe troncato tutti i decimali.
Dimensionamento Stringhe. Se si usa una delle variabili che devono contenere delle stringhe
(successioni di caratteri), cioè delle frasi, allora le variabili devono essere dimensionate come segue.
L‟istruzione Dim Allarme as String dimensiona una variabile che si chiamiamo Allarme e a cui
possiamo assegnare solo delle frasi, ad esempio l‟istruzione Allarme = ”Raggiunto livello massimo”
assegna alla variabile Allarme la frase delimitata dai doppi apici. Se avessimo eseguito l‟istruzione
Allarme=-3.5 il VB avrebbe segnalato un errore: assegnazione non valida. Questo perché non
possiamo assegnare un valore numerico ad una variabile dimensionata come variabile stringa.
Dimensionamento variabili booleane. Una variabile booleana è una variabile che può assumere solo
due tipi di valori: Vero (True) o Falso (False). Supponiamo che la variabile Stato indichi lo stato di
riempimento di un serbatoio d‟acqua: Stato=True significa che la cisterna è piena; Stato=False
significa che è vuota. La variabile deve essere dimensionata nel modo seguente: Dim Stato as
Boolean.
Le assegnazioni alle variabili
Una variabile può assumere un valore tramite il simbolo di uguale. Ad esempio:
Altezza=5.12
Temperatura=85.3
Riempimento=False
Numero = 5
Allarme=”STOP”
Assegna il valore di 5.12 alla variabile Altezza (Single)
Assegna il valore di 85.3 alla variabile Temperatura (Single)
Assegna il valore logico „Falso‟ alla var. Riempimento (Boolean)
Assegna il numero intero 5 alla var. Numero (Integer)
Assegna la frase „STOP‟ (4 caratteri) alla var. Allarme (String)
Si osservi che le assegnazioni si leggono da destra verso sinistra. La frase “STOP” è assegnata alla
variabile Allarme. Si può anche dire: la variabile Allarme assume il valore di “STOP”.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 3
Introduzione all‟uso di Visual Basic
Uso delle variabili
L‟istruzione di definizione/dimensionamento di una variabile fa sì che il Basic inserisca il nome
della variabile in una tabella a due colonne: nella prima colonna inserisce il nome della variabile;
nella seconda colonna inserisce il valore che assume la variabile. In questo modo, quando in
un‟espressione si richiede il valore della variabile, il Basic rintraccia prima la posizione nella tabella
di definizione e quindi preleva il valore della variabile da utilizzare.
Per esempio, vediamo cosa avviene con le seguenti istruzioni:
Dim X as Integer
. . .
. . .
X = 15
. . .
X=X+20
. . .
Queste istruzioni si commentano in tre passi.
a) Con la prima istruzione definiamo una variabile X che può assumere solo valori interi.
b) La seconda istruzione assegna alla variabile X il valore 15. Ciò avviene ricercando la
posizione della variabile X nella prima colonna della tabella delle variabile e, quindi,
registrando il valore di 15 nella colonna dei valori.
c) La terza istruzione si commenta così: il Basic deve fare una somma tra il numero 20 e il
contenuto della variabile X, pertanto ricerca nella tabella delle variabili la posizione della
variabile X e “preleva” il valore che ha registrato nella colonna dei valori. Quindi, al valore
prelevato, addiziona il valore 20. Il risultato-somma è assegnato alla variabile X nella
modalità descritta al punto b).
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 4
Introduzione all‟uso di Visual Basic
Concetto di vettore o array
Spesso si ha l‟esigenza di dover introdurre molte variabili con lo stesso nome. Ad esempio,
supponiamo di voler memorizzare l‟età degli alunni di una scuola che contiene 3000 alunni. Per
indicare l‟età del primo alunno possiamo creare la variabile ETA1 che conterrà l‟età del primo
studente nell‟elenco della classe 1A. Quindi possiamo creare la variabile ETA2 che conterrà l‟età
del secondo alunno, il secondo nell‟elenco della 1A. Successivamente si possono creare tutte le
variabili , una per ogni alunno, fino ad arrivare alla variabile ETA3000 che conterrà l‟età dell‟ultimo
alunno dell‟ultima classe dell‟ultima sezione. Questo metodo è troppo pesante, dobbiamo creare e
gestire 3000 variabili con 3000 nomi diversi, anche se hanno la stessa radice „ETA‟. Si pensi che
solo i nomi delle variabili occupano circa 15 Kbyte di memoria. Esiste un altro metodo per evitare
di scrivere tutte queste variabili, più semplice e compatto. Si definisce vettore una successione di
locazioni di memoria richiamabili con lo stesso nome ed un indice progressivo che indica la
posizione dell’elemento di memoria. In altre parole, riprendendo l‟esempio degli alunni, possiamo
definire un vettore di 3000 elementi richiamabili con il nome di ETA. Il primo elemento di questo
vettore è richiamabile con la notazione ETA(1), il secondo con ETA(2) ecc. ecc.. In questo modo si
vede che la gestione degli elementi diventa più semplice. Chiaramente il vettore, detto anche array,
deve essere opportunamente dimensionato. L‟istruzione Dim ETA(3000) as Integer dimensiona un
vettore di 3000 elementi e tale che ogni elemento può assumere solo valori interi. In questo modo se
vogliamo assegnare l‟età del 35-esimo alunno dobbiamo eseguire l‟istruzione ETA(35)=18, se 18 è
l‟età del 35-esimo alunno.
I vettori possono contenere anche stringhe.
Il vettore Cognomi() contiene i cognomi dei 20 dipendenti di una data di una fabbrica. Ciò significa
che abbiamo opportunamente dimensionato il vettore con l‟istruzione: Dim Cognomi (20) as
String. Una volta dimensionato il vettore possiamo assegnare ad ogni elemento un valore. Ad
esempio:
Cognomi(1)=”Ciotola”
Cognomi(2)=”Bruzzaniti”
Cognomi(3)=”Borgia”
...
...
...
Cognomi(20)=”Pagano”
Dopo aver assegnato a ciascun elemento del vettore un dato cognome, possiamo pensare di usare il
vettore. Ad esempio, l‟istruzione X = “Il Prof.” + Cognomi(3) + “ è a scuola.” assegna alla
variabile stringa X la frase “Il Prof. Borgia è a scuola”.
In modo del tutto analogo si possono definire vettori che contengono numeri i singola precisione.
Ad esempio in un vettore Temperature() possiamo memorizzare le 24 temperature rilevate ogni ora
nel corso di una giornata. In questo modo Dim Temperature(24) as Single permette di
dimensionare un vettore di 24 elementi in cui si memorizzano valori di temperatura. Ad esempio
Temprature(10) rappresenta la temperatura di 14.8°C rilevata alle ore 10:00.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 5
Introduzione all‟uso di Visual Basic
Le istruzioni del linguaggio
L’istruzione IF…THEN…ELSE
Durante l‟esecuzione di un programma spesso accade di dover decidere se una data variabile ha o
non ha un certo valore e, quindi, a secondo del caso si devono eseguire delle istruzione piuttosto
che altre. Il Basic, per questo tipo di problema, prevede l‟istruzione IF. La struttura e l‟esatta
sintassi è la seguente.
IF condizione THEN
istruzione da eseguire
ELSE
istruzioni alternative
END IF
Per chiarire meglio l‟uso dell‟istruzione facciamo qualche esempio.
Esempi 1:
...
...
IF temp > 80 THEN
„Controlliamo che la variabile temp sia > 80 (°C)
Accendi_Ventilatore „Se la precedente condizione è vera, si esegue il commando
END IF
...
...
Leggiamo in questo modo: Se (IF) la variabile „temp‟ ha un valore superiore a 80 allora (THEN)
eseguiamo il commando che permette di accendere il ventilatore.
Se la variabile non ha un valore >80 l‟istruzione di accendere il ventilatore non verrà eseguita, ma
verranno eseguite le istruzioni che si trovano dopo la chiusura dell‟IF, cioè dopo END IF.
Esempio 2:
...
...
IF Potenza > 10 THEN
„Controlliamo se la variabile Potenza > 10 (Watt)
Spegnere_Motore
„Se la preced. condizione è vera si esegue questa istruzione
ELSE
Accendere_Motore
„Se la condizione testata non è vera si esegue questa istruzione
END IF
...
...
Leggiamo in questo modo: Se (IF) la variabile Potenza ha un valore superiore a 10 allora (THEN)
eseguiamo l‟istruzione che permette di spegnere il motore altrimenti (ELSE) eseguiamo l‟istruzione
che permette di accendere il motore. E‟ ovvio che solo una sola istruzione verrà eseguita e, solo
dopo la sua esecuzione, verranno eseguite le istruzioni che si trovano dopo la chiusura dell‟IF, cioè
dopo END IF.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 6
Introduzione all‟uso di Visual Basic
L’istruzione FOR…NEXT
Spesso accade che nel corso di un programma dobbiamo eseguire un gruppo di istruzioni un certo
numero di volte. In questo caso bisogna usare il ciclo For..Next. La sintassi è
FOR contatore = Valore Iniziale TO Valore finale STEP Incremento
… (Istruzione)
… (Istruzione)
NEXT contatore
Con il primo rigo si introduce il ciclo For.. next.
Su questo rigo viene indicato il nome di una variabile contatore che assumerà, di volta in volta, tutti
i valori compresi nell‟intervallo [Valore Iniziale,Valore Finale] con un passo (STEP) pari
all‟Incremento indicato.
Per ogni valore assunto dalla variabile contatore, verranno eseguite tutte le istruzioni indicate e
delimitate dalle istruzioni FOR e NEXT.
Dopo aver eseguito un ciclo di istruzioni, l‟istruzione NEXT fa sì che la variabile contatore venga
incrementata di un passo ed il nuovo valore viene controllato per verificare che si trovi tra il Valore
Iniziale e il Valore Finale.
Se il valore della variabile contatore risulta compreso nell‟intervallo indicato allora si rieseguono
tutte le istruzioni; in caso contrario il ciclo FOR…NEXT viene interrotto e vengono eseguite le
istruzioni che si trovano oltre l‟istruzione NEXT.
Per fissare le idee, supponiamo di voler fare la somma dei primi 100 numeri naturali, cioè calcolare
la somma 1+2+3+4…+100. Questo problema si risolve facilmente con l‟istruzione FOR.
Per prima cosa dobbiamo pensare ad una variabile, che chiamiamo Somma, che deve contenere il
valore della somma da calcolare. Quindi dobbiamo introdurre una variabile X che deve assumere, di
volta in volta, tutti i valore tra 1 e 100. Commentiamo le seguenti istruzioni
Dim Somma As Integer
Dim X as Integer
Somma = 0
For X = 1 to 100 Step 1
Somma = Somma + X
Next X
„Definisce una var. Somma che assume solo valori interi
„Definisce una var. X che assume solo valori interi
„Azzera la variabile Somma
„Introduce la var. contatore X, la prima volta sarà X=1
„Somma il valore di X a quello contenuto in Somma ed il
„risultato lo assegna alla variabile Somma.
„Incrementa di 1 la variabile X
L‟istruzione Somma=Somma+X viene eseguita 100 volte, fintato che il valore X, che di volta in
volta viene incrementato dall‟istruzione Next X, è compreso tra 1 e 100.
Se avessimo voluto fare la somma dei soli numeri dispari, il programma sarebbe stato:
Somma = 0
For X = 1 to 100 Step 2
Somma = Somma + X
Next X
„Azzera la variabile Somma
„Introduce la var. contatore X, la prima volta X=1
„Somma il valore di X a quello contenuto in Somma ed il
„risultato lo assegna alla variabile Somma.
„Incrementa di 2 la variabile X
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 7
Introduzione all‟uso di Visual Basic
L’istruzione DO…LOOP
L‟istruzione FOR…NEXT è un ciclo ben definito nel senso che un gruppo di istruzioni viene
eseguito tante volte come è indicato nell‟istruzione stessa. Nella pratica accade spesso che un
gruppo di istruzioni deve essere eseguito un numero di volte indefinito. Per esempio, se dobbiamo
intercettare che un tasto venga premuto, dobbiamo fare una serie di letture dalla tastiera e solo se il
tasto premuto è quello che aspettavamo dobbiamo eseguire uno specifico comando. In questo caso
non sappiamo quanti tasti vengono premuti prima di quello che ci interessa, dobbiamo eseguire
sempre una lettura dalla tastiera fino a quando non intercettiamo il tasto che ci interessa.
Nei casi come quello appena descritto si deve fare uso dell‟istruzione DO…WHILE. Per questa
istruzione esistono diversi tipi di sintassi.
Sintassi N. 1
DO WHILE Condizione
Istruzione
Istruzione
LOOP
Sintassi N. 2
DO
Istruzione
Istruzione
LOOP WHILE Condizione
Sintassi N. 3
DO
Istruzione
Istruzione
LOOP
Vediamo come si leggono questi riquadri. L‟istruzione DO deve essere letta con la parola „esegui‟,
mentre l‟istruzione LOOP deve essere letta come „ripeti‟. La parola WHILE deve essere letta come
„fino a che‟ oppure „fintato che‟. Allora la sintassi del primo riquadro si legge nel seguente modo:
Esegui, fintanto che la condizione è verificata, l‟Istruzione 1, l‟Istruzione 2. . ., ripeti il ciclo.
In questo caso prima di eseguire le istruzioni viene controllata la validità della condizione. Se questa
è verificata, allora si eseguono le istruzioni, diversamente il ciclo si interrompe e vengono eseguite
le istruzioni successive all‟istruzione LOOP.
Il secondo riquadro si legge nel seguente modo:
Esegui l‟istruzioni 1, l‟istruzione 2. . ., ripeti il ciclo fintato che la condizione è verificata.
In questo caso vengono prima eseguite le istruzioni e poi si passa al controllo della condizione. Se
questa è verificata, il ciclo si ripete, diversamente il ciclo delle istruzioni viene interrotto e vengono
eseguite le istruzioni successive all‟istruzione LOOP.
Il terzo riquadro si legge nel seguente modo:
Esegui l‟Istruzione 1, l‟Istruzione 2,. . . ripeti il ciclo.
In questo caso manca la condizione da controllare: il ciclo non si interrompe mai!
In effetti sarà una delle istruzioni da eseguire che dovrà interrompere il ciclo con l‟istruzione break.
Altrimenti il programma resterebbe bloccato in questo punto e non finirebbe mai: si dice che il
programma è in loop.
Nei tre riquadri si è usato la parola WHILE per indicare che la condizione deve essere verificata. Al
posto di WHILE si può usare anche la parola UNTIL. Quest‟ultima si legge come: a meno che. Per
esempio, il primo riquadro si leggerebbe: Esegui a meno che non sia verificata la condizione. . .
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 8
Introduzione all‟uso di Visual Basic
Le funzioni fondamentali in basic
Il VB prevede molte funzioni aritmetiche, vediamo quelle di maggiormente vengono usate.
ABS
INT
FIX
SQRT
LOG
EXP
SIN
TIMER
Restituisce il valore assoluto di un numero
Questa funzione ritorna il valore intero per difetto se il numero è positivo, per eccesso
se il numero è negativo. Ad esempio l‟istruzione X=Int( 13.89) assegna alla variabile X
il valore di 13, dato che 13<13.89 . Mentre Y=Int(-13.89) assegna il valore –13 ad Y,
dato che –13>-13.89
Questa funzione tronca semplicemente i decimali, ritornando il valore intero.
Questa funzione ritorna la radice quadrata di un numero. Ad esempio X=Sqrt(5) assegna
ad X la radice quadrata di 5
Restituisce il logaritmo neperiano di un numero. Ad esempio X=Log(10) assegna alla
variabile X il valore 2.3
Restituisce il valore di potenza in base e. L‟istruzione X=Exp(3.5) equivale
all‟espressione X=e3.5
E‟ una funzione trigonometrica e restituisce il valore seno dell‟argomento.
Questa funzione ritorna il numero di secondi che trascorrono dalla mezzanotte al
momento in cui di richiama l‟istruzione Timer.
La tabella sopra riporta solo alcune funzioni, lasciando intravedere, ad esempio, che esistono tutte le
funzioni trigonometriche: Seno, Coseno, Tangente, ecc. ecc.. Per un elenco dettagliato si deve fare
ricorso ad un manuale vero e proprio reperibile in internet.
Operatori aritmetici, relazionali e logici
Tra le variabili di tipo numerico possono essere applicati gli operatori matematici.
L‟istruzione X=5+Y assegna la somma tra il numero 5 ed il contenuto di
Addizione
+
Y alla variabile X.
L‟istruzione X=Y-Z assegna ad X il valore della differenza tra il valore
Sottrazione
contenuto in Y e quello contenuto in Z
L‟istruzione X=3*Y assegna il prodotto tra il numero 3 ed il contenuto
Moltiplicazione
*
della variabile Y alla variabile X
L‟istruzione X=Y/5 assegna ad X il quoziente tra Y e 5.
Divisione
/
L‟istruzione X=3^2 assegna il valore di 32 alla variabile X
Potenza
^
Tra le variabili di tipo numerico si possono applicare anche gli operatori relazionali. La tabella che
segue ne illustra l‟utilizzo.
Uguale
=
Maggiore
>
Minore
Minore o Uguale
Maggiore o Uguale
<
<=
>=
Se X è una variabile booleana e supponiamo che la variabile numerica
Y contenga 5, l‟istruzione X=(Y=5) assegna ad X il valore Vero,
mentre se fosse stato Y=10 allora la variabile X avrebbe assunto il
valore Falso. L‟istruzione tra parentesi (X=5) deve essere letta come
una domanda: X è uguale a 5? Allora esistono solo due possibilità: Si
(Vero) o No (Falso)
Stabilisce se una variabile è maggiore di un‟altra. Sulla base di quanto
detto per il simbolo di uguale, l‟istruzione X=(Y>5) assegna ad X il
valore di Vero se Y contiene 10.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 9
Introduzione all‟uso di Visual Basic
Oltre agli operatori aritmetici e relazionali esistono anche gli operatori logici applicabili alle
variabili booleane. La tabella che segue illustra gli operatori logici.
NOT
AND
OR
Operatore di Negazione. Se Y contiene Falso, allora X=NOT Y assegna Vero
alla variabile X.
Operatore di prodotto logico. Se X e Y sono variabili booleane che contengono
rispettivamente lo stato logico di Vero e Falso, l‟espressione Z = ( X AND Y )
assegna il valore di Falso alla variabile Z
Operatore si somma logica. L‟espressione Z = ( X OR Y ) assegna il valore di
Vero alla variabile Z se X=Vero e Y=Falso.
Di seguito viene riportato la tabella di verità delle funzioni NOT, AND ed OR. E‟ evidente il
significato del simbolo V (Vero) ed F (Falso).
X
F
F
V
V
Y
F
V
F
V
NOT(X)
V
V
F
F
X AND Y
F
F
F
V
X OR Y
F
V
V
V
Le stringhe o successioni di caratteri
Tra le stringhe è possibili usare solo l‟operatore di addizione + che viene definito come operatore di
concatenamento. Se X contiene la stringa “Oggi è” e Y contiene la stringa “Lunedì”, allora la
variabile Z=X+Y conterrà la frase “Oggi è Lunedì”. Il VB definisce alcune funzioni fondamentali
che permettono la manipolazione delle stringhe. Vediamo quali.
Questa funzione permette di prelevare uno o più caratteri a sinistra di una stringa. Ad
esempio se X contiene “Oggi è una bella giornata.” Allora Y=Left( X,4) contiene la
parola “Oggi” (4 caratteri!)
RIGHT Questa funzione permette di prelevare uno o più caratteri a destra di una stringa. Ad
esempio se X contiene la frased “Oggi è una bella giornata”, l‟espressione Y=Right( X,8)
assegna ad Y la parola “giornata” (8 Caratteri!)
Questa funzione permette di prelevare una porzione di stringa a partire da una certa
MID
posizione. Ad esempio se X contiene la frase “Oggi è una bella giornata”, l‟espressione
Y=Mid( X,12,5 ) assegna ad Y la frase “bella”, che inizia dalla posizione 12 ed lunga 5
caratteri.
Questa funzione restituisce la lunghezza in caratteri di una stringa. In riferimento agli
LEN
esempi fatti, k=Len( X ) assegna a k il numero 26 che rappresenta il numero di caratteri
che costituiscono la stringa memorizzata in X.
UCASE Questa funzione, che si legge “Upper case”, si applica alle variabili stringa e trasforma
tutti i caratteri in maiuscolo. Ad esempio, se eseguiamo X=UCase(“Frase O,k,”) la
variabile X conterrà: “FRASE O.K.”
LCASE Questa funzione, che si legge “Lower case”, si applica alle variabili stringa e trasforma
tutti i caratteri in minuscolo. Ad esempio, se eseguiamo X=LCase(“Frase O,k,”) la
variabile X conterrà: “frase o.k.”
LEFT
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 10
Introduzione all‟uso di Visual Basic
Concetto di Programma MAIN, SUBROUTINE e FUNCTION
Supponiamo di voler fare un programma che permette di calcolare il parallelo di due resistenze. Nel
FORM mettiamo un pulsante che una volta premuto con il muose vengono eseguite una serie di
istruzioni che portano al calcolo della resistenza parallela. L‟insieme di queste istruzioni costituisce
il Main Programm ossia il programma principale. Questa definizione è necessaria perché spesso il
programma main richiama dei piccoli sottoprogrammi, che costituiscono le Subroutine, cioè dei
sottoprogrammi che controllano o verificano o eseguono dei compiti specifici.
Per esempio se volessimo fare un programma che calcola il parallelo di 10 resistenze, allora
possiamo fare un sottoprogramma o subroutine che si occupa solo di acquisire i valori delle
resistenze controllando che siano positivi. Il programma Main in questo modo deve richiamare
l‟esecuzione del sottoprogramma di lettura e fare il parallelo
delle 10 resistenze.
Un altro concetto importante è quello di funzione o Function.
Una funzione è un sottoprogramma che è chiamato dal Main,
riceve dei parametri e ritorna al main un valore che calcola.
Riprendendo l‟esempio del parallelo delle 10 resistenze, si può
pensare di realizzare una funzione che chiamata dal Main
permette di calcolare il parallelo di due resistenze.
La figura qui a lato rappresenta schematicamente un programma
MAIN che evolve dall‟alto verso il basso eseguendo le
istruzioni di cui è fatto. In un dato punto del programma viene
chiamata una Subroutine che esegue delle istruzioni e, alla fine
di tale compito, il controllo ritorna al programma principale. In
un punto successivo, il programma Main chiama una funzione
Function a cui passa dei parametri e riceve dalla funzione un risultato, continuando quindi ad
eseguire le istruzioni del programma Main.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 11
Introduzione all‟uso di Visual Basic
Il primo passo
Come primo passo bisogna procurarsi il programma di sviluppo software Visual Basic (VB). Sul
WEB è possibile trovare diverse versioni di questo programma, alcune funzionano altre danno
grossi problemi. Una versione funzionante e semplice da installare può essere scaricata dal sito
www.anicele.it. Collegandosi al sito, sotto la voce „Scuola‟ si può scaricare il file
VB_Versione_Ridotta.zip che contiene una versione ridotta del Visual Basic. Estraendo tutti i file
che esso contiene nella cartella C:\Basic, si deve lanciare il file VB6.EXE per entrare nell‟ambiente
di sviluppo software del Visual Basic.
Lanciando VB6.EXE sullo schermo si presenta un‟immagine che rappresenta l‟ambiente di sviluppo
o interfaccia del Visual Basic. Dalla colonna „File‟ bisogna selezionare la scelta Nuovo progetto e
l‟interfaccia richiede che tipo di programma si vuole sviluppare: scegliere Exe standard. Il VB
(Visual Basic) presenta uno schema che è l‟immagine del Form vuoto. L‟immagine che seguente è
una parte di quella che appare sullo schermo se si sta utilizzando il Visual Basic versione 6.0 (VB6).
Sul lato sinistro si vedono le „Tools‟ o „ Casella
degli strumenti ‟ che VB mette a disposizione.
Sono i così detti controlli che tra breve
impareremo a gestire.
Alcuni concetti di base
1) Il FORM , quel riquadro in blù con l‟intestazione
Form1 nella figura qui a lato, deve essere inteso
come una sorta di contenitore in cui collocare i vari
controlli.
2) Per CONTROLLO si deve intendere una serie di
operazioni che il VB esegue per „controllare‟
l‟esito di avvenimenti che accadono. Questi
avvenimenti, tipo il click del mouse o la pressione
di un tasto, sono detti eventi.
3) Un EVENTO è un qualche cosa che accade e che
VB deve fronteggiare. Ad esempio, se si preme il
tasto sinistro del mouse il VB deve compiere
qualche operazione associata a tale evento, ad esempio aprire un menu e permettere di eseguire una scelta.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 12
Introduzione all‟uso di Visual Basic
Il Form
Il Form deve essere inteso come una specie di contenitore atto a contenere i controlli che si
vogliono utilizzare. Per controllo si intende qualunque oggetto che si può mettere nel form: un
titolo, un bottone/tasto, un campo testo, un‟immagine. Ogn‟uno di questi controlli appaiono nella
colonna delle tools sul lato sinistro del form.
Il form, come tutti i controlli, ha delle proprietà o attributi che possiamo cambiare a nostro
piacimento. Puntando il mouse in un punto del form libero e premendo il tasto destro del mouse si
scelga la voce di menu „Proprietà‟. Si apre un riquadro in cui si possono leggere e modificare gli
attributi del form. Vediamo gli attributi più significativi.
1) La proprietà „Name‟ permette di assegnare un nome al Form con il quale richiamare in fase
di esecuzione le proprietà del form. Il nome non deve contenere spazi bianchi. Per il primo
Form che si crea Visual Basic gli attribuisce il nome di Form1.
2) L‟attributo „Caption‟ permette di inserire un titolo nella cornicetta del Form. Per default
l‟attributo è impostato con il titolo „Form1‟.
3) L‟attributo „BackColor‟ permette di assegnare un colore allo sfondo del Form. In fase di
sviluppo si può cliccare su questa proprietà e scegliere uno dei colori che vengono proposti a
video.
4) La proprietà „StartUpPosition‟ permette di stabilire dove deve apparire il form al momento
che si attiva l‟esecuzione. Diverse possibilità si presentano per questo attributo, conviene
scegliere „CenterScreen‟ per avere il Form visualizzato sempre al centro dello schermo.
5) La proprietà „MinButton’, di tipo booleana (Vero/Falso), permette di decidere se il form
può essere ridotto ad icona.
6) L‟attributo „MaxButton’, di tipo booleano (Vero/Falso), permette di stabilire se il form può
essere esteso a tutto schermo.
7) L‟attributo ‘Picture’ permette di visualizzare un‟immagine come sfondo del form.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 13
Introduzione all‟uso di Visual Basic
Il controllo Label
La casella degli strumenti presenta
un‟icona con la lettera A. Se selezioniamo
questo controllo e quindi ci portiamo in un
punto libero del form , l‟immagine del
mouse appare come una „croce‟. Tenendo
premuto il tasto destro del mouse e
contemporaneamente strascinandolo sul
Form, si disegna un riquadro che delimita
il controllo Label o Testo (etichette).
L‟immagine sul Form appare come
raffigurata qui a lato. I punti in blù
permettono di allargare o restringere il
campo a piacimento.
Questo tipo di controllo si usa in genere quando vogliamo mettere dei titoli o delle frasi sul form, ad
esempio per commentare dei valori che facciamo visualizzare in apposite caselle sul form.
Vediamo gli attributi più importanti di questo controllo.
1) L‟attributo „Name‟ può essere cambiato secondo le proprie esigenze ma , in genere, va bene
quello che viene proposto dal VB. Per la prima Label che si inserisce nel Form Visual Basic
sceglie il nome Label1, per la successiva Label2, e così via.
2) L‟attributo „Caption‟ permette di inserire una frase (titolo) all‟interno del campo. Il VB
mette per default la frease Label1 che possiamo cambiare in ogni momento
3) L‟attributo „BackColor‟ permette di selezionare il colore dello sfondo su cui appare il titolo.
4) L‟attributo „ForeColor‟ permette di impostare il colore delle lettere, colore di primo piano.
5) L‟attributo „Font‟ permette di impostare il tipo di carattere con cui vogliamo presentare la
frase inserita sul Form. Con questa proprietà controlliamo diversi parametri: l‟altezza del
carattere, l‟attributo del carattere (grassetto, sottolineato o corsivo) e il tipo di stile
tipografico da usare (Arial, Courier, Symbol, Times new Roman).
6) L‟attributo „BorderStyle‟ permette di disegnare una cornicetta intorno al campo che
delimita il controllo, oppure senza impostare alcun bordino.
7) L‟attributo ‘Visible’ permette di impostare la „visibilità‟ del controllo sul Form. Assume un
valore di tipo booleano (Vero/Falso). Se impostato su Vero (True) il controllo è visibile sul
Form, viceversa se impostato su Falso (False) il controllo non è visibile. Il controllo di
questo attributo può fare in modo che appaiono dei riquadri con delle frase che avvertono
l‟operatore di eventuali errori che accadono e che dopo un poco di tempo scompaiono dal
Form.
Molte delle proprietà appena elencate sono gestibili in fase di esecuzione del programma, tipo
l‟attributo Visible che permette di far apparire sul Form delle frasi. Tutte fatta eccezione per la
proprietà Name che deve essere impostata in fase di creazione del controllo. In fase di esecuzione un
attributo può essere richiamato e/o impostato con la seguente sintassi:
[Nome del controllo] . [Nome dell’attributo] = [Valore]
Ad esempio, volendo cambiare il titolo inserito in una Label, che si chiama Label1, possiamo
eseguire il comando: Label1.Caption = ”Titolo di prova” . Mentre per far apparire sul Form la
Label di errore, che abbiamo chiamato LabelErrore, dobbiamo eseguire: LabelErrore.Visible =
True. Si faccia attenzione alla notazione con il punto che separa il nome del controllo dall‟attributo.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 14
Introduzione all‟uso di Visual Basic
Il controllo Testo (TextBox)
Questo controllo si presenta nella casella
degli strumenti come un piccolo riquadro
al cui interno vi è la scritta „ab|‟.
Selezionando il controllo e inserendolo nel
Form, allo stesso modo di come viene
fatto per il controllo Label, l‟immagine
che appare al video è la seguente. Come
nel caso del controllo Label i punti in blù
permettono di modificare le dimensione del controllo per adattarle alle nostre esigenze.
Questo controllo si usa per inserire (Input) o visualizzare (Output) dei dati.
Per esempio si facciamo un programma che calcola il parallelo di due resistenze, i valori delle
resistenze devono essere fornite al programma attraverso un controllo TextBox. Mentre il risultato
(il valore del parallelo) deve essere visualizzato all‟interno di un‟altra TextBox.
Tra le proprietà di questo controllo riveste una particolare importanza la proprietà ‘Name’. A
differenza del controllo Label, il nome di questo controllo è importante perché ci deve fornire subito
un significato sul valore che rappresenta. In altre parole, un controllo deve essere chiamato
„Resistenza‟ se vogliamo che esprima il valore di un resistore, oppure „Potenza‟ se vogliamo che
esprima il valore di una potenza elettrica. Mentre possiamo chiamare un controllo TextBox con il
nome di „RParallelo‟ si vogliamo che esprima il valore di un parallelo tra due resistenze. Il nome
che possiamo dare a questo attributo non deve contenere spazi bianchi e non deve essere una
parola riservata al Basic. Vediamo le principali proprietà di questo controllo.
a) L‟attributo „Name‟ deve contenere il nome di una variabile facilmente riconoscibile.
b) L‟attributo „Text‟ permette di inserire un dato in formato testo.
c) L‟attributo „BackColor‟ permette di selezionare il colore dello sfondo
d) L‟attributo „ForeColor‟ permette di impostare il colore delle lettere, colore di primo piano.
e) L‟attributo „Font‟ permette di impostare il tipo di carattere con cui vogliamo presentare il
controllo. Con questa proprietà controlliamo diversi parametri: l‟altezza del carattere,
l‟attributo del carattere (grassetto, sottolineato o corsivo) e il tipo di stile tipografico da usare
(Arial, Couririe, Symbol, Times new Roman).
f) L‟attributo „BorderStyle‟ permette di disegnare una cornicetta intorno al campo che
delimita il controllo, oppure senza impostare alcun bordino.
g) L‟attributo ‘Visible’ permette di impostare la „visibilità‟ del controllo sul Form. E‟ un
attributo di tipo booleano (Vero/Falso). Se impostato su Vero (True) il controllo si presenta
sul form, viceversa se impostato su Falso (False) il controllo non è visibile.
h) L‟attributo ‘MultiLine’ permette di impostare il modo di visualizzare all‟interno del campo:
se su una sola linea o su più righe. Questo controllo è legato al controllo ScrollBars.
i) L‟attributo ‘ScrollBars’ permette la visualizzazione nel campo della „barra di scorrimento‟,
nel caso si sia scelto una visualizzazione su più righe (MultiLine=True). La barra di
scorrimento può essere orizzontale, oppure verticale, o entrambe.
Vediamo come si imposta la proprietà Text in fase di esecuzione del programma. Questa proprietà
può contenere solo campi „testo‟. Per esempio, se nel campo TextBox, che chiamiamo Indirizzo,
vogliamo mettervi un indirizzo, allora dobbiamo fare: Indirizzo.Text = “Via Roma, 5”, notate i
doppi apicetti (“) che permettono di delimitare le stringhe. Mentre se il campo deve contenere il
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 15
Introduzione all‟uso di Visual Basic
valore di una variabile numerica, allora dobbiamo usare la funzione STR() che trasforma in un
valore stringa un numero.
Per esempio se la variabile numerica X contiene il numero 150 che è il risultato di un dato calcolo
eseguito e vogliamo che appaia nel campo che abbiamo chiamato Resistenza, dobbiamo eseguire:
Resistenza.Text = STR( X ). L‟istruzione si legge come: il valore numerico contenuto in X,
trasformato in caratteri dalla funzione STR(), viene assegnato all‟attributo Text del controllo
Resistenza. Si legge da destra verso sinistra.
In fase di immissione di dati, se in un campo TextBox, che chiamiamo Resistenza, immettiamo il
valore 125 digitandolo sulla tastiera, ciò significa che l‟attributo Text del campo Resistenza contiene
i caratteri 1, 2 e 5, non il numero 125. Per trasformare i caratteri 1, 2 e 5 in numero 125 dobbiamo
usare la funzione VAL() che trasforma una sequenza di caratteri in un valore numerico.
Nel nostro esempio, se Resistenta.Text contiene la stringa “125” (notate i doppia apici), una
variabile numerica X nel nostro programma riceverà il valore numerico 125 se eseguiamo
l‟istruzione X = VAL( Resistenza.Text ) oppure semplicemente l‟istruzione X = VAL( Resistenza ).
La funzione VAL() legge i caratteri 1,2,5 e li trasforma in numero 125 assegnandolo ad X.
Le due funzioni STR() e VAL() sono l‟una l‟inversa dell‟altra. Bisogna tenere ben chiaro questo
concetto dei valori stringa e dei valori numerici. Vedi il paragrafo „Il Tipo di Dati‟.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 16
Introduzione all‟uso di Visual Basic
Il controllo Bottone (Button)
Questo controllo è molto importante perché permette di eseguire delle procedure che
associamo al bottone/pulsante. Selezionando il controllo dalla colonna delle tools e
collocandolo nel Form, VB permette la gestione in modo semplice la stesura delle
istruzioni da eseguire quando il bottone viene cliccato. Vediamo gli attributi (proprietà)
più significative.
a) L‟attributo ‘Name’ permette di assegnare un nome al comando bottone.
b) L‟attributo ‘Caption’ permette di inserire un titolo all‟interno bottone.
c) L‟attributo ‘Font’ permette di cambiare il tipo di font del carattere usato per il
testo dentro il Bottone. Si può controllare l‟altezza, il corsivo, il grassetto il
carattere tipografico. Non è possibile cambiare il colore del carattere.
d) L‟attributo ‘BackColor’ permette di assegnare un colore di sfondo al bottone.
Questa proprietà è legata alla proprietà „Style‟ che deve essere impostata sul
valore Graphical per far sì che BackColor possa cambiare il colore dello sfondo.
e) L‟attributo ‘Style’ permette di impostare l‟immagine del bottone in modalità grafica, nel
caso in cui si voglia inserire all‟interno del bottone un‟immagine tramite l‟attributo „picture‟
f) L‟attributo ‘Picture’ permette di inserire come sfondo del Bottone un‟immagine.
L‟obiettivo di questo controllo è quello di inserire dei pulsanti che se attivati, nel senso che si clicca
sopra con il mouse, vengono avviate delle procedure per fare qualcosa. Per esempio se stiamo
facendo un programma per calcolare il parallelo di due resistenze, dobbiamo prevedere un pulsante
che quando premuto dovrà calcolare il parallelo delle resistenze e visualizzare il risultato sul Form.
Una particolare attenzione deve essere fatta nello scegliere il nome da dare al comando Bottone.
Questo perché il nome deve indicarci il senso del bottone. Un bottone che calcola il parallelo di due
resistenze deve essere chiamato „EseguiParallelo‟ mentre uno che permette di finire l‟esecuzione di
un programma conviene chiamarlo „FineProgramma‟, non „End‟ che è una parola riservata.
Cliccando due volte sul bottone nel Form, VB si predispone in modalità di scrittura delle procedure.
In altre parole si predispone affinché si possano scrivere le istruzioni che devono essere eseguite
quando si clicca sul pulsante.
Ad esempio se il nome di un pulsante è „CalcolaParallelo‟ perché deve calcolare il parallelo di due
resistenze, cliccando due volte sopra il pulsante VB entra in modalità testo e predispone una
subroutine che si chiama CalcolaParallelo_Click(), in altre parole vengono creati i due step:
Private sub CalcolaParallelo_Click()
End Sub
E‟ tra questi due step che bisogna inserire le istruzioni per ottenere il parallelo delle due resistenze.
Questa subroutine è un ‘evento’, cioè una procedura che viene attivata quando si clicca sul pulsante
situato nel Form. Questo non è l‟unico evento che VB gestisce, ve ne sono un‟infinità: un evento
quando si preme un tasto della tastiera, quando si muove il mouse, quando si clicca il mouse,
quando un campo nel Form cambia valore, quando si finisce il programma ecc. ecc. Ogni evento
deve essere supportato da un‟ appropriato software che verrà eseguito quando si verifica l‟evento
stesso.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 17
Introduzione all‟uso di Visual Basic
Il controllo Picture (Box grafica)
Dalla barra degli strumenti si seleziona il controllo Picture selezionando l‟icona come
evidenziato nell‟immagine qui a lato. Questo controllo permette di inserire nel Form
un‟immagine. Questo controllo può servire per fare delle animazioni, come vedremo tra
breve. Le principali proprietà sono:
a) L‟attributo ‘Name’ permette di assegnare un nome al controllo. Il VB propone un
nome del tipo „Picture1‟ per il primo controllo, „Picture2‟ per il secondo e così
via. Conviene mettere un nome che possa subito richiamare alla mente
l‟immagine che raffigura.
b) L‟attributo ‘Picture’. Questo attributo permette di selezionare dal disco
un‟immagine da far vedere nel controllo.
c) L‟attributo „Visible‟ permette di rendere visibile nel Form il controllo. Questo
attributo può assumere solo un valore booleano: True/False (Vero/Falso)
Queste sono solo alcune delle proprietà di questo controllo. Un‟animazione con questo controllo
può essere fatto nel seguente modo. Supponiamo di voler visualizzare lo stato di un interruttore. Per
lo stato aperto possiamo reperire un‟immagine dal WEB (o la costruiamo con PAINT) che raffiguri
l‟interruttore aperto e che salviamo in un controllo chiamato InterruttoreOFF. Allo stesso modo
reperiamo un‟immagine di un
interruttore chiuso, possibilmente simile alla precedente.
Quest‟ultima la memorizziamo in un altro controllo picture che chiamiamo InterruttoreON. Se i due
controlli hanno le stesse dimensioni, sovrapponendoli si fa in modo che solo uno dei due controlli
sia visibile. Controllando in fase di esecuzione la proprietà Visibile si fa in modo che solo un
controllo sia visibile, mentre l‟altro è oscurato. Cambiando lo stato di visibile si fa in modo da
visualizzare un interruttore che cambi il suo stato aperto o chiuso.
Questo controllo oltre a visualizzare un‟immagine può servire anche come base per realizzare dei
grafici: possiamo disegnare delle rette, cerchi, scrivere delle frasi colorate. Nella barra degli
strumenti vi è un altro controllo che si chiama controllo Image che permette solo la visualizzazione
delle immagini. Quest‟ultimo controllo è più semplice da usare se si vuole solo visualizzare
un‟immagine e non disegnarla con rette, cerchi o altro.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 18
Introduzione all‟uso di Visual Basic
Il controllo Timer
Questo controllo è abbastanza interessante. Con questo controllo possiamo fare in modo
che il VB in modo automatico e ad intervalli di tempo che impostiamo esegua una serie di
operazioni prestabilite. Ad esempio possiamo fare in modo che lo sfondo di una casella
TextBox cambi colore ogni 10 secondi, senza alcun intervento dell‟operatore.
L‟icona di un orologio individua questo controllo nell‟insieme dei controlli messi a
disposizione da VB, come si vede dall‟immagine qui a lato. L‟icona del controllo, una
volta inserita in un Form, diventa non-visibile in fase di esecuzione del programma.
Questo controllo possiede poche proprietà. Vediamo quali sono.
a) La proprietà Name permette di assegnare un nome al controllo che servirà per
creare la subroutine in cui inserire le istruzioni da eseguire. Cliccando due volte
sull‟icona del Timer inserita nel Form, il VB crea i due step:
Private Sub Timer1_Click()
End Sub
avendo lascito il nome Timer1 proposto da VB. Tra queste due istruzioni dobbiamo mettere
tutte le istruzioni che vogliamo eseguire in modo automatico a intervalli regolari.
b) La proprietà Interval permette di impostare l‟intervallo di tempo tra due chiamate
successive alla subroutine timer1_click(). L‟intervallo di tempo deve essere espresso in
millisecondi.
c) La proprietà Enabled permette di abilitare o disabilitare la chiamata alla subroutine Timer.
Questa proprietà serve per arrestare o avviare il processo automatico del timer.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 19
Introduzione all‟uso di Visual Basic
Programma N.1: Realizzare un programma che permette di calcolare il parallelo di due resistenze
espresse in K.
Vediamo i passi da eseguire.
a) Lanciamo il programma VB
b) Sul FORM inseriamo un controllo Label. Modifichiamo la proprietà Caption inserendo la
frase „Prima Resistenza‟.
c) A fianco della label inseriamo un controllo TextBox. Modifichiamo la proprietà Name
assegnando il nome di R1: questo perché è il valore della prima resistenza.
d) Mettiamo un‟altra Label a cui assegniamo il titolo „Seconda Resistenza‟.
e) Inseriamo un altro controllo TextBox che chiamiamo R2.
f) Inseriamo un controllo Button (Bottone/Pulsante). Modifichiamo la proprietà Caption con il
titolo: „Calcola il parallelo „. Cambiamo la proprietà Name, che il VB mette „Command1‟,
con il nome „EseguiParallelo‟.
g) Inseriamo un ultimo controllo TextBox in cui faremo figurare il risultato del parallelo.
Modifichiamo la proprietà Name inserendo il nome‟Risultato‟
Il modo di disporre le informazioni sul Form
è del tutto personale. Si osservi la figura che
segue che illustra un modo di realizzare un
Form. In fase di costruzione del Form, nei
campi delle TextBox appare la scritta „Text‟
che cancelliamo modificando l‟attributo
Text del controllo. Inseriamo la procedura
per calcolare il parallelo delle due resistenze.
Clicchiamo due volte sul bottone inserito. Il
VB entra in modalità testo permettendo di
inserire le istruzioni che permettono il
calcolo del parallelo delle due resistenze. Seguiamo le istruzioni.
Private Sub EseguiParallelo_Click()
„Questa istruzione è inserita dal VB
Dim x1 as integer „Dimensioniamo x1 affinché possa contenere il valore numerico indicato nel campo R1
Dim x2 as integer „Dimensioniamo x2 affinché possa contenere il valore numerico indicato nel campo R2
Dim xp as integer „Dimensioniamo xp affinché possa contenere il valore calcolato del parallelo
x1 = VAL( R1 )
„R1 è il controllo in cui inseriamo il valore della prima resistenza, R1, che è
„una stringa di caratteri che deve essere trasformata in numerico: la funzione
„VAL() trasforma i caratteri numerici in valori numerici.
x2 = VAL( R2 )
„ La funzione VAL trasforma i caratterei numerici inseriti in R2 in numero.
xp = 1/( 1/x1 + 1/x2 )
„Calcola il valore del parallelo troncando gli eventuali decimali perché xp è
„una variabile definita come intera
Risultato = STR( xp ) „La funzione STR() (leggi stringa) converte un numero in caratteri numerici
„che vengono assegnati alla proprietà Text del controllo Risultato. Dopo
„questa istruzione sul video nel campo del controllo Risultato appare il valore
„del calcolo del parallelo delle resistenze.
End Sub
„Questa istruzione è inserita dal VB
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 20
Introduzione all‟uso di Visual Basic
Programma N.2: Realizzare un programma che permetta di ottenere la conversione termometrica
da gradi Celsius in gradi Fahrenheit.
Come primo passo realizziamo un
Form in cui inseriamo un campo
TextBox per la temperatura Celsius
che vogliamo convertire ed un campo
TextBox per il risultato della
conversione. Si osservi l‟immagine di
seguito. Rispetto al Form precedente è
stato introdotto il pulsante „Fine
Programma‟ che ha l‟unica istruzione di „END‟ che permette di terminare il programma. Il pulsante
„Converti in °F‟ permette la conversione del dato „Gradi Celsius‟ in gradi Fahrenheit. Questo
pulsante lo chiamiamo „ConvertiCelsius‟. Nel Form è stato introdotto un secondo pulsante „Converti
in °C‟ che permette la conversione del dato Fahrenheit in Celsius. Questo pulsante lo chiamiamo
„ConvertiFahrenheit‟. I due campi TextBox, in cui introduciamo i dati, li chiamiamo rispettivamente
„Celsius‟ e „Fahrenheit‟. Per quanto riguarda le label lasciamo il nome fornito da VB. Vediamo
come introdurre le istruzioni di conversione. Facendo doppio click con il mouse sul bottone
„Converti in °F‟ il VB si predispone in modalità testo permettendo di scrivere il codice (istruzioni)
che permette la conversione.
Private Sub ConvertiCelsius_Click()
Dim x1 as single
Dim x2 as single
x1 = VAL( Celsius )
x2 = 1.8 * x1 + 32
Fahrenheit = STR( x2 )
End Sub
„Questa istruzione è messa dal VB
„La variabile x1 è di tipo single perché deve contenere la temperatura
„Celsius che può essere con i decimali.
„La variabile x2 è di tipo single o reale in quanto deve rappresentare
„dei numeri con la virgola. Deve contenere la temp. Fahrenheit
„La funzione VAL converte i caratteri numerici immessi nel campo „Celsius‟
„in un numero che viene assegnato alla variabile x1.
„Formula di conversione da Celsius a Fahrenheit.
„La funzione stringa STR converte il numero x1 in una successione di
„caratteri (stringa) che sono assegnati al campo (controllo) Fahrenheit e,
„quindi, appaiono nel Form.
„Questa istruzione è messa dal VB
Allo stesso modo, cliccando due volte sul bottone „Converti in Celsius‟ possiamo scrivere il
seguente programma per la conversione in Celsius.
Private Sub ConvertiFahrenheit_Click()
Dim x1 as single
Dim x2 as single
x1 = VAL( Fahrenheit )
x2 = ( x1 – 32 ) / 1.8
Fahrenheit = STR( x2 )
End Sub
„Questa istruzione è messa dal VB
„La variabile x1 è di tipo floating perché deve contenere la temperatura
„Fahrenheit che può essere con i decimali.
„La variabile x2 è di tipo floating o reale in quanto deve rappresentare
„dei numeri con la virgola. Deve contenere la temp. Celsius
„La funz. VAL converte i caratteri numerici immessi nel campo „Fahrenheit‟
„in un numero che viene assegnato alla variabile x1.
„Formula di conversione da gradi Fahrenheit in Celsius.
„La funzione stringa STR converte il numero x1 in una successione di
„caratteri (stringa) che sono assegnati al campo (controllo) Fahrenheit e,
„quindi, appaiono nel Form.
„Questa istruzione è messa dal VB
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 21
Introduzione all‟uso di Visual Basic
Esempio 3: Un esempio di animazione a video (animation)
Vogliamo realizzare un programma che visualizzi la rotazione di un oggetto. Entriamo
in PAINT e realizziamo i seguenti disegni. In un piccolo quadrante, diciamo di 70x70
pixel, disegniamo un cerchio graduato con una freccetta che punta dal centro verso
l‟alto, come nella figura qui a lato. Salviamo l‟immagine con il nome di
Orologio1.bmp. Modifichiamo l‟immagine in modo da fare la freccia inclinata a 45
gradi, come nella figura che segue. Salviamo l‟immagine con il nome Orologio2.bmp.
Allo stesso modo costruiamo altre immagini che raffigurano la freccia di volta in volta
inclinata sempre di più. Alla fine abbiamo 8 file che se visti in successione avremmo
l‟impressione che la freccetta si muova in senso orario.
Entriamo in VB e nel Form mettiamo 8 controlli Image, lasciando la proprietà Name come
assegnata da VB, cioè Image1, Image2 …. Nelle proprietà Picture carichiamo i file costruiti,
Orologio1.bmp nel controllo Image1, Orologio2.bmp nel controllo Image2 …
Dopo aver inserito le immagini, sovrapponiamo perfettamente i controlli in modo che sia visibile
una sola immagine.
Inseriamo due controlli „Button‟ che ci permettono di avviare l‟animazione o di arrestarla. Nel
primo pulsante modifichiamo la proprietà Caption inserendo la frase „Avvia Animazione‟ mentre
nel secondo pulsante mettiamo „Arresta Animazione‟. Cliccando due volte sul primo pulsante,
inseriamo il seguente step:
Private Sub Comman1_Click()
Timer1.Enabled=True
End Sub
„Questa istruzione viene inserita dal VB in modo automatico
„Avvia il Timer
„Questa istruzione viene inserita dal VB in modo automatico
Cliccando due volte sul secondo pulsante inseriamo:
Private Sub Comman1_Click()
Timer1.Enabled=False
End Sub
„Questa istruzione viene inserita dal VB in modo automatico
„Arresta il Timer
„Questa istruzione viene inserita dal VB in modo automatico
Inseriamo un controllo Timer inserendolo in un punto qualunque del FORM poiché non verrà
visualizzato in fase di esecuzione del programma. Modifichiamo la proprietà Interval inserendovi il
numero 1000, che vuol dire 1000 millisecondi e cioè 1 secondo. Cliccando due volte sul controllo
Timer entriamo in modalità testo ed inseriamo il seguente programma.
Private Sub Timer1_Timer()
„Questa istruzione viene inserita dal VB in modo automatico
Indice = Indice + 1
If Indice > 8 Then Indice = 1
„Indice è una variabile contatore: deve indicarci quale immagine
„ deve essere visibile sul Form. Non deve essere superiore a 8
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
„Tutte le immagini sono rese non-visibili sul Form
„Fare attenzione alla notazione CONTROLLO.PROPRIETA‟ che
„permette di assegnare un valore ad una data proprietà di un controllo
If Indice = 1 Then Image1.Visible = True
If Indice = 2 Then Image2.Visible = True
If Indice = 3 Then Image3.Visible = True
„Solo l‟immagine che ha indice uguale al numero contenuto nella
„ variabile „Indice‟ viene resa visibile sul form
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 22
Introduzione all‟uso di Visual Basic
If Indice = 4 Then Image4.Visible = True
If Indice = 5 Then Image5.Visible = True
If Indice = 6 Then Image6.Visible = True
If Indice = 7 Then Image7.Visible = True
If Indice = 8 Then Image8.Visible = True
End Sub
La variabile „Indice‟ usata nella subroutine Timer1_Click() deve essere definita esternamente alla
subroutine con una dichiarazione del tipo: Public Indice as Integer. In questo modo la variabile
Indice non perde il valore memorizzata tra una chiamata alla subroutine Timer1_click() e una
chiamata successiva. Questa istruzione deve essere la prima istruzione scritta in assoluto.
Avviando l‟esecuzione del programma sul video appare il quadrante costruito con Paint in cui la
freccetta cambia posizione continuamente.
Modificando la proprietà Interval del controllo Timer possiamo fare in modo che l‟animazione sia
più veloce o rallentata.
Se clicchiamo sul pulsante „Arresta Animazione‟ si modifica la proprietà Enabled del controllo
Timer per cui VB provvede a sospendere le chiamate alla subroutine Timer1_Click(). Accade il
contrario se premiamo il pulsante „Avvia Animazione‟.
Di seguito è riportato l‟immagine del Form realizzato. Si vede l‟immagine del controllo Timer che
in fase di esecuzione del programma non appare visibile nel Form.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 23
Introduzione all‟uso di Visual Basic
Esempio 4: Un programma deve permettere la ricezione di un segnale attraverso la porta parallela e
accendere un LED per tutto il tempo che si riceve il segnale.
Osserviamo lo schema elettrico riportato a lato. Un pulsante
N.O. (Normal Open) se premuto permette di inviare un
impulso di +5 Volt su un piedino della porta parallela. Un altro
piedino della porta parallela è collegato ad un ramo elettrico
costituito da due porte NOT e un diodo LED.
Supponiamo che il pin di output, quello collegato alla porta
NOT, sia il pin 5 mentre il pin 13 permette di ricevere un
segnale elettrico. Lo stato elettrico del pin 5 è controllato del
bit 3 del registro 0378 (esadecimale). Lo stato elettrico del pin
13 determina lo stato logico del bit 4 del registro 0379. Il programma che vogliamo realizzare deve
monitorare continuamente il pin 5 e, se riceve un segnale attraverso questo pin, accendere il LED
impostando lo stato logico del bit 3 del registro 0378. Vediamo il seguente flowchart.
Start
Legge il registro 0379
Isola il bit 4
NO
Imposta il Bit 5 del
registro 0378 a 1
SI
Il Bit = 0
Imposta il Bit 5 del
registro 0378 a 0
Vediamo come si traduce questo flowchart in Visual Basic. Realizziamo un Form, che chiamiamo
„Monitoraggio‟, in cui vi è un pulsante che avvia la procedura di monitoraggio. Un campo TextBox
avverte se è „Presente‟ o è „Assente‟ il segnale di ingresso. Una TextBox avverte che il LED è
„Acceso‟ o „Spento‟. Qui di seguito è riportato l‟immagine del Form.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 24
Introduzione all‟uso di Visual Basic
Vediamo come realizzare le istruzioni in Basic. Cliccando due volte sul pulsante „Avvia
Monitoraggio‟ il VB permette di inserire le istruzioni in Basic.
Private Sub Monitoraggio_Click()
DIM X as Integer
DIM Y as Integer
DO
X = Inp(&H0379)
X = X AND 16
IF X <> 0 THEN
Text1 = “Presente”
Y = Inp(&H0378)
Y = Y OR 8
Out &H0378 , Y
Text2 = “Acceso”
ELSE
Text1 = “Assente”
Y = Inp( &H0378 )
Y = Y AND &HF7
Out &H0378 , Y
Text2 = “Spento”
ENDIF
LOOP
End Sub
„Questa istruzione è introdotta da VB
„Dimensionamento di una variabile X, intera di appoggio
„Dimensionamento di un‟altra variabile Y di appoggio
„Inizia un ciclo DO…WHILE senza condizioni di fine
„Legge il registro all‟indirizzo 0379 (&H indica il valore in esadecimale)
„Azzera tutti i bit di X ad eccezione del bit 4 (24=16)
„Se X<>0 allora il Bit 4 è Alto (1), c‟è il segnale sul pin 13
„Sul Form appare la frase „Presente‟
„Legge il registro 0378
„Imposta solo il bit 3 (23=8) ad 1, lasciando inalterati gli altri bit
„Invia nel registro 0378 il valore Y, accendendo il LED
„Sul Form appare la frase per il LED „Acceso‟
„Il valore X=0, non c‟è nessun segnale sul pin 13
„Sul Form appare la frase „Assente‟ per il segnale
„Legge il registro 0378
„Azzera solo il bit 3 del numero contenuto in Y
„Invia nel registro 0378 il valore di Y, che spegne il LED
„Sul Form appare la frase „Spento‟
„Chiude l‟istruzione IF
„Chiude l‟istruzione DO. L‟esecuzione riprende
„dall‟istruzione successiva a DO, cioè da X=Inp(&H0379)
„Questa istruzione viene messa dal VB per chiuse la SUB
Dal programma si vede qual è l‟esatta sintassi sia della funzione INP() che della procedura OUT.
Quello che non si vede è in che modo VB riconosca le due procedure che si trovano in una libreria
DLL esterna a VB. Per fare questo bisogna ricercare nel WEB una libreria in cui sono definite le
procedure appena descritte. Dal sito ww.anicele.it sotto la voce Download Programmi è possibile
scaricare il programma „Test Porta Parallela‟ in cui è presente la libreria che cerchiamo. Una volta
scompattato il file .zip si può usare la libreria Input32.dll a patto che nel file modulo (*) si mettano
le seguenti istruzioni di dichiarazione:
Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
Queste due istruzioni definiscono la funzione INP() e la procedura OUT. Per il corretto uso della
libreria Inp32.dll si legga il file Input32.txt che è accompagnato al download del file “Test porta
parallela”.
_______________________________________________________________________
(*) Nel progetto Visual Basi può essere creato un file modulo nel seguente modo. Sotto la voce di menu „Progetto‟
bisogna scegliere la voce „Inserisci Modulo‟. In questo modo il VB predispone la possibilità di editare un file di tipo
testo in cui, in genere, vengono messe delle dichiarazioni di variabili di carattere globale, cioè „viste‟ da tutte le
subroutione.
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 25
Introduzione all‟uso di Visual Basic
ESERCIZI DA SVILUPPARE
Convertire un numero decimale in binario e viceversa
Convertire una temperatura di .°C in °F e °K e viceversa
Leggere 10 valori e calcolare la media dei numeri
Leggere cinque resistenze e calcolare il parallelo
Modificare un bit di un dato numero fornito
Data la legge di variazione di un sensore KTY, calcolare la R-Linearizzazione
Disegnare un interruttore che cambia stato cliccando su di esso oppure leggendo un valore 0/1
Corso di Sistemi Anno scolastico 2007/2008 – Prof. Aniello Celentano – Pag 26