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