I manuali di | |
|
Visual Studio .net
|
IL Visual Basic L'ambiente di programmazione Il form I controlli la finestra delle proprietà Il codice L'esecuzione |
Visual Basic viene definito dalla Microsoft come un "Sistema di programmazione per Windows". Il termine "sistema" viene utilizzato ad indicare il fatto che si tratta di un insieme di componenti che vengono forniti insieme, ed insieme operano, nell'ambito della programmazione. Vediamo perciò prima di tutto che cosa si intende per "programmazione": con tale parola si identifica la branca dell'informatica che si occupa di creare programmi software. Ogni programma che si utilizza sul proprio computer – dal sistema operativo Windows, a Word o ad Excel – sono stati prodotti utilizzando la programmazione. Lo scopo della programmazione è quello di produrre file eseguibili (file di estensione EXE), che possono poi essere eseguiti dall'utente, per rispondere alle sue esigenze.
Visual Basic si occupa di programmazione mettendo a disposizione
dell'utente (non l'utente finale del programma da creare, ma
l'"utente-sviluppatore" che crea il programma) un insieme di
strumenti, che sono poi quelli "classici" di tutti i sistemi di
programmazione. Vediamoli: Penso sia ora il caso di provare con un primo esempio. Lanciamo Visual studio e scegliamo nuovo progetto da questa fineestra.
Impostiamo un nome per il nostro progetto che, se non cambierete la cartella di destinazione, verrà salvato automaticamente nella cartella Visual Studio Project . Dato l'ok vi troverete davanti alla finestra che rappresenta l'ambiente di programmazione Visual Basic.
Al
centro vedete il form. I
forms costituiscono l'interfaccia dell'applicazione, cioè
quello che dell'applicazione "si vede". Esse contengono tutto ciò in
cui l'utente può scrivere, premere, selezionare o muovere con il
mouse, ecc. È ben difficile che un'applicazione non contenga alcun
form, non fosse altro per dare all'utente un modo per vedere cosa
l'applicazione fa, ed un pulsante per chiuderla . Nel
nostro primo esempio noi useremo 2 tipi di controlli:
Per disegnare gli oggetti nel form, occorre selezionare gli appositi strumenti dalla sasella degli strumenti a sinistra nell'immagine, nel caso questa non sia visualizzata sul vostro monitor, scegliete viualizza casella degli strumenti dal menu. Gli oggetti si disegnano sul form utilizzando il mouse come fosse la nostra matita, quindi tenendo premuto il tasto Sx e rilasciandolo quando il controllo ha raggiunto la dimensione desiderata. Sulla destra in alto la scheda Esplora soluzioni e sotto la scheda delle proprietà. Quest'ultima evidenzia le proprietà, quindi le caratteristiche degli oggetti del nostro progetto, in particolare di quello evidenziato in quel momento, quindi nell'esempio indica le proprietà della label (etichetta) ammanigliata (selezionata-evidenziata). Procedendo con il nostro esempio, supponiamo che il nostro obiettivo sia quello di realizzare un programma che permetta all'utente di cliccare un pulsante e ricevere un messaggio di conferma, un saluto. Le fasi di realizzazione dunque saranno tre: una, la prima l'abbiamo già vista e consiste nel disegno dell'interfaccia, poi si deve continuare con la definizione delle proprietà. Si può visualizzare la scheda delle proprietà cliccando con il tastoDx dle mouse l'oggetto e selezionando Proprietà. Ogni oggetto ha molte proprietà che ne fissano il colore, le dimensioni, la posizione sulla scheda, il carattere (se compare del testo), e un numero incredibile di altre cose che non sarà necessario sempre andare ad impostare, vediamo quali sono le proprietà che sicuramente dovremo andare a modificare:
La sintassi per accedere alle proprietà degli oggetti dal codice è: NomeControllo.NomeProprietà Ma
ora vediamo come arrivare al codice e come collegare questo
all'interfaccia.
Quindi tutto dipenderà da cosa scriveremo in questa procedura. Intanto per scrivere il codice ci si deve spostare nella scheda codice lasciando quindi la scheda progettazione. Si può accedere alla finestra codice dalla linguetta apposita oppure direttamente facendo doppio click sull'oggetto al quale è collegata la procedura d'evento, nel nostro caso il bottone:
Quella che vediamo in questo esempio è una banale istruzione di assegnazione, cioè assegniamo alla proprietà text della label il contenuto indicato tra apici. Vediamo ora un secondo esempio in cui utilizzeremo un altro controllo: la casella di testo. Nel text box l'utente può scrivere direttamente in fase di esecuzione oltre che il programmatore come per la label , può scriovere "via codice" . Il fatto che l'utente possa scrivere nella casella di testo, fa di questo controllo un utile strumento da utilizzare per l'immissione degli input dall'utente. Se ad esempio volessimo simulare il funzionamento di una calcolatrice, come vedete nell'immagine,
avremmo bisogno di due caselle di testo che l'utente utilizzerà per immettere i numeri che saranno oggetto dell'operazione scelta attraverso l'evento Click dei relativi pulsanti. A ciascuno di quei pulsanti sarà collegato il codice indicato nel fumetto, che si differenzierà solo per l'operatore aritmetico + - * /. Anche in questo caso si tratta di una istruzione di assegnazione che attribuisce alla proprietà text della label la somma dei valori numerici delle proprietà text delle due caselle di testo. Per questo motivo è stata usata la funzione VAL() questa restituisce il valore numerico di una stringa.All'inverso la funzione Cstr converte in stringa un valore numerico.
|
Cos'è una variabile La dichiarazione delle variabili I tipi di variabile Esempio di uso di variabili |
Anche Visual
Basic, come tutti i linguaggi di
programmazione, prevede l'uso delle
variabili,
queste sono dei nomi, che noi definiamo, in grado di memorizzare dei
valori (ad esempio dei numeri o dei testi). Una variabile è detta locale quando è definita all'interno di una procedura; la sua creazione avviene quando si fa riferimento ad essa per la prima volta, oppure quando è eseguita l'istruzione Dim, che presenta la seguente sintassi: Dim <nome> [As <tipo>] in cui <nome> rappresenta il nome da assegnare alla variabile. Esso non si sottrae alla regola valida per tutti gli identificatori, ivi compresi i nomi degli oggetti, che impone loro di essere costituiti da delle sequenze di caratteri alfabetici o numerici prive di spazi ed aventi per iniziali delle lettere dell'alfabeto. È inoltre possibile, anche se non indispensabile (come sottolineato dalla presenza delle parentesi quadre), aggiungere all'istruzione Dim un'indicazione del tipo di dato da creare. Visual Basic prevede numerosi tipi standard. I più utilizzati, come vi ho anticipato, sono integer, usato per rappresentare i dati numerici interi compresi fra -32,768 a 32,767, string, che può contenere delle sequenze (stringhe) alfanumeriche composte al massimo da circa 65500 caratteri, long, in grado di ospitare numeri interi compresi fra -2,147,483,648 e 2,147,483,647, single e double, con cui è possibile memorizzare numeri reali anche di notevole entità. Se invece è omessa la dichiarazione del tipo, la variabile è definita variant. Questo formato non è previsto dalla maggior parte dei linguaggi di programmazione tradizionali. La sua caratteristica fondamentale è l'universalità. Una variabile variant, infatti, può contenere dei dati aventi qualsiasi formato. È buona norma, tuttavia, non fare largo uso di strutture di questo tipo, in quanto la loro gestione da parte dell'interprete è poco efficiente. Una variabile locale può anche non essere dichiarata. In questo caso, la sua creazione avviene la prima volta in cui si fa riferimento ad essa. In assenza di dichiarazione, è necessario aggiungere al nome un identificatore di tipo, costituito da un carattere. In caso di sua omissione, la variabile è creata di tipo Variant. I principali identificatori di tipo sono i seguenti: $ (String), % (Integer), & (Long), ! (Single), # (Double). Ad esempio, è possibile creare una variabile di tipo numerico intero ed assegnarle il valore 5 sia scrivendo Dim A as Integer A = 5 sia con la riga A% = 5 Ora vediamo come modificare uno dei nostri esercizi con l'utilizzo delle variabili. Prendiamo ad esempio questo: Private Sub btnCALCOLAx_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCALCOLAx.ClickDim a, b, c as integer Dim x as single a = Val(txta.Text) b = Val(txtb.Text) c = Val(txtc.Text) x = (c - b) / a lblx.Text = x End Sub
Sarà quindi sempre necessario, disegnare l'interfaccia, definire le proprietà dei controlli, dichiarare le variabili, assegnare alle variabili di input il contenuto della proprietà text delle text box utilizzando la funzione VAL, eseguire le operazioni/istruzioni richieste dal testo, assegnare il valore della variabile alla proprietà text del controllo label che abbiamo predisposto in fase di progettazione come contenitore dell'output.
|
L'istruzione condizionale If ...Then...Else If...Then...ElseIf La funzione IsNumeric La concatenazione di stringhe Esempio |
Raramente i programmi prevedono la sola esecuzione sequenziale di istruzioni. Per di più i programmi devono eseguire operazioni diverse in risposta a condizioni diverse. Ad esempio, un programma potrebbe dover verificare il giorno della settimana ed eseguire un'operazione diversa in base al giorno. L'istruzione If...Then consente di valutare una condizione e di eseguire sezioni di codice diverse in base ai risultati di tale condizione. Vi sono due forme differenti: la più semplice è l’istruzione singola, su unica linea, If – Then, che viene scritta come segue:
If espressione
logica Then
If espressione logica1 then Ora vi propongo un esercizio svolto in cui ho utilizzato l'istruzione condizionale if ...then ...else e una funzione predefinita di Visual Basic, IsNumeric( ) che restituisce VERO se la variabile passata come argomento è un numero e restituisce falso in caso contrario.
Il codice necessario è questo, potete poi ricopiarlo per provare voi stessi:
Voglio farvi notare inoltre l'utilizzo della "&" nell'assegnazione del contenuto alla proprietà text della label, questa operazione si chiama "concatenazione" ovvero si può attaccare ad una stringa il valore di una variabile: questa tecnica risulta essere molto utile per comunicare gli output all'utente.
|
La funzione InputBox ( ) La funzione MsgBox ( )
|
Finora abbiamo sempre
previsto l'uso di textbox per l'inserimento di dati (input) da parte
dell'utente, ma andando avanti sicuramente vi troverete davanti a
problemi in cui sarebbe davvero difficile utilizzare quel tipo di
controllo. Prendiamo ad esempio il caso in cui si volesse realizzare
un progetto che calcoli la media dei voti di un allievo non sapendo
ha quante prove questo si fosse sottoposto: non sapremmo quante
textbox disegnare! A questo punto entrano in gioco le funzioni
per finestre di dialogo elementari: per l'input, la
InputBox( )
e per l'output la
MsgBox ( ) nomevariabile=InputBox("Inserisci il valore della variabile")
Nella variabile "nomevariabile", andrà a finire quello che l'utente scrive nella casella bianca della finestra qui a lato.
|
La ripetizione POST_condizionale La ripetizione PRE_condizionale L'istruzione Do...Loop Until L'istruzione Do...Loop While Le istruzioni Derivate L'istruzione For ... Next
|
Abbiamo finora conosciuto 2 strutture di
controllo: la
struttura sequenziale, e
la struttura alernativa. La terza struttura fondamentale
della programmazione strutturata è la
ripetizione (CICLO)
Per ciclo si intende un meccanismo per il quale un blocco di
istruzioni viene eseguito più di una volta, e più precisamente: Ripetizione POST-Condizionale Ripetizione PRE-Condizionale Come potete vedere, nei casi esposti
sopra non si conosce dapprima il necessario numero di ripetizioni,
vediamo cosa accade se invece lo si conosce dal principio. Per
questi casi si utilizza l'istruzione
for...next La
sintassi di For... Next è la seguente:
|
L'istruzione Select Case Esempio |
Select case
rappresenta una versione migliorata di un normale If... Then
nei casi in cui:
Select funziona dunque leggendo una
prima (ed unica) volta il valore di una variabile e confrontandolo
in sequenza con i valori dei vari Case, fin tanto che non ne trova
uno uguale, cioè in cui il confronto restituisca Vero. La sintassi è
dunque la seguente: • BloccoIstruzioni-1,
ecc. è quello che viene eseguito se la corrispondente Espressione1 è
verificata. • L'ultimo Case Else
(facoltativo) corrisponde a quello che si deve fare se nessuno dei
Case precedenti è stato verificato. Vi mostro un banale esempio in cui
viene usata l'istruzione Select Case per mostrare in output il la
scelta digitata dall'utente.
|
La dichiarazione di un Array La dichiarazione di una Matrice Ridimensionamento di un Array Il caricamento di un Array Il caricamento di una Matrice
|
Se devo memorizzare più valori che sono
in qualche modo parenti dal punto di vista logico, posso usare il
concetto di vettore di
variabili (array).
Quando si cominciano ad utilizzare gli array, nasce l'esigenza di ordinare gli elementi che lo compongono,(SORT) o di ricercare un elemento all'interno dell'array stesso (RICERCA) Esistono vari algoritmi sia per l'ordinamento che per la ricerca. ORDINAMENTO CON METODO DI SOSTITUZIONE Questo metodo è forse uno dei più semplici, ma visto che prevede lo scorrimento di tutto l'array più volte, è adatto nei casi in cui l'array è di dimensioni contenute. In pratica, partendo dal primo elemento, ogni elemento viene confrontato con tutti gli altri e laddove risultasse maggiore viene scambiato di posizione con il successivo (questo in caso di ordinamento crescente). La stessa procedura viene utilizzata indifferentemente per ordinare un array di valori numerici o di stringhe. Per effettuare lo scambio di posizione, si utilizza una variabile di comodo che nell'esempio abbiamo chiamato temp.
In questo esempio vedete come con tre semplici procedure è possibile prevedere il caricamento di un array, la visualizzazione e l'ordinamento di un array di numeri. Ovviamente una volta ordinato basterà cliccare ancora su Visualizza per vedere l'array ordinato.
La ricerca sequenziale consiste nel leggere tutte le componenti degli array, confrontarle con il valore dell'elemento cercato e nel caso in cui si trovi corrispondenza tra i due elementi, si interromperà la ricerca, altrimenti, si procederà fino alla fine. Nell' esempio che vi propongo, dopo aver caricato i nomi il sesso e l'età di n elementi in due array paralleli, ho previsto la ricerca per nome, restituendo TRUE (vero) se l'elemento inserito è presente nell'array, con le relative informazioni contenute negli array paralleli, età e sesso.
E' un altro metodo di ricerca che può essere utilizzato solo se l'array è ordinato. Si procede dividendo l'array in due parti ed escludendo dal controllo la parte dell'array che sicuramente non conterrà l'elemento cercato. La divisione in parti dell'array, procede fino a quando non viene trovato l'elemento cercato oppure fino a che rimarranno 2 soli elementi e sarà quindi opportuno inviare il messaggio "ELEMENTO NON PRESENTE IN ARRAY" Qui di seguito vi mostro il codice per integrare l'esercizio già visto precedente con un bottone per la ricerca dicotomica.
LE MATRICI Per Matrice si intende un array a due (o più dimensioni), cioè un insieme di elementi dello stesso tipo individuabili all'interno della matrice da una coppia di indici, uno per la riga e uno per la colonna. Quindi avremo in fase di dichiarazione dim m(nr,nc) as integer per dichiarare una matrice dove nc indica il valore massimo che può avere l'indice j (colonne) e nr il valore massimo di i (righe). Il caricamento di una matrice prevederà quindi l'uso di due cicli for : for i = 0 to nr for j = 0 to nc m(i,j)=inputbox("inserisci elemento") next j next i
|
|
Quando è necessario arricchire l'interfaccia grafica di un software, si può utilizzare il controllo della barra degli strumenti di Visual Basic: Picture Box Il procedimento per inserire un immagine in un form è questo: 1) Selezionare dalla barra degli strumenti: e disegnare nel form un riquadro dove inseriremo l'immagine. 2)selezionato il riquadro con il tastoDX, accediamo alla finestra delle proprietà dove andiamo ad impostare la proprietà image: selezioniamo risorsa locale, come nell'immagine, e procediamo importando un'immagine tra quelle memorizzate nel nostro hard disk o altro supporto. il risultato che otterremo sarà il seguente:
|
Quando ho necessità di visualizzare a video un elenco, come ad esempio il contenuto di un array, posso utilizzare un oggetto di Visual Basic che è la List Box in sostituzione del metodo di cancatenazione di stringa, che abbiamo visto nella lezione precedente. La lista, o casella di riepilogo, viene gestita da visual basic come un array con indice che parte da 0. Come gli altri controlli, per gestire questi oggetti dobbiamo conoscerne i principali metodi:
dove elemento può essere una variabile, può essere una componente di array ( VET(I) ) o una stringa ( "CIAO"). Per visualizzare tutte le componenti di un array, si userà dunque la seguente sintassi: For I = 0 To N-1 listbox1.ITEMS.ADD (Vett(I)) next I Le principali proprietà della ListBox:
Queste proprietà, possono quindi essere utili se utilizzate come indici dell'array lista quando necessario. La Combo Box appare come la combinazione di un text box e una lista. Questa funziona come la lista, con l'unica differenza che si può effettuare una scelta oltre che dall'elenco, digitando nel text box.
|
|
Quando si realizzano software utilizzando il linguaggio di programmazione Visual basic, può essere necessario prevedere un'interfaccia grafica costituita da più form. Visual studio .net, gestisce questi form considerandoli variabili, pertanto è necessario dichiarare per ciascun form del progetto, una variabile, secondo la seguente sintassi: Public <nome variabile> as New <Nome Form> Da notare che la parola riservata Dim tipica della dichiarazione delle variabili, è sostituita da Public. Questo perchè la variabile dichiarata deve essere pubblica, ovvero visibile da tutti i form del progetto. Come tutte le variabili pubbliche, questa deve essere dichiarata in un apposita area appunto visibile a tutti i form, che viene definita MODULO. Vediamo ora i passi necessari per inserire un modulo e un nuovo form in un progetto: Dalla barra dei menu, selezionare PROGETTO - Aggiungi Windows Form / Aggiungi Modulo
un nuovo form/modulo verrà creato e potrà essere rinominato. La finestra Modulo appare come un foglio bianco come la finestra del codice che già conosciamo. Dunque dopo aver creato un secondo Form, che supponiamo abbiamo lasciato nominare di default Form2 si procede con la dichiarazione di tale form nel modulo: Module Module1Public f1 As New Form1 Public f2 As New Form2 End ModuleA questo punto sarà possibile prevedere per l'utente la possibilità di passare da un form all'altro predisponendo l'apposito codice. Per far apparire in primo piano un form, si deve utilizzare la seguente istruzione: f2.Show() Questa tradotta indica al secondo form dichiarato come F2 di essere mostrato a video. Il risultato sarà il seguente al cliccare del bottone :
Come si nota, è stato messo in primo piano il secondo form, ma il primo è comunque restato a video se pur in secondo piano. Per evitare il sovrapporsi di tutti i form, è necessario prima di mostrare un form, prima provvedere all'oscuramento dal video del form attivo, utilizzando l'istruzione: Me.Hide( ) Me indica l'oggetto attivo quindi nel nostro caso per l'appunto il form1. Il risultato dunque sarà il seguente: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickMe.Hide() f2.Show() End Sub
|
|
Questi due controlli sono molto utili in quanto permettono di rappresentare graficamente nel Form scelte opzionali da offrire all'utente. In particolare i radio button sono utilizzati quando la scelta offerta all'utente è esclusiva ovvero, tra una serie di scelte l'utente può sceglierne una soltanto, escludendo automaticamente tutte le altre. Spesso utilizzando i radio button, i programmatori usano un altro controllo, il Group box che permette di raggruppare una serie di radio button in modo che su uno stesso form si possano prevedere più possibilità di scelte esclusive. In questo caso si procede prima col disegnare il group box, all'interno del quale verranno poi inseriti i radio button.
I Check box invece, si usano quando l'utente può scegliere più di una opzione ed utilizzando il metodo del "segno di spunta" esprime un'opzione del tipo vero-falso. Questi appaiono così: . Accanto a ciascuno dei controlli su descritti, si può scrivere una descrizione dell'opzione impostando la proprietà text. La proprietà checked invece, che può assumere i valori true o false, indica rispettivamente se il controllo (radio ocheck) è selezionato o deselezionato.
|
|
Quando si devono risolvere problemi in cui le informazioni da elaborare devono essere conservate, le strutture già conosciute, come gli array, non bastano, infatti queste trattengono i dati solo fin quando è in esecuzione il programma, dunque allo spegnimento i dati caricati e manipolati negli array, si perdono. Nasce quindi la necessità di utilizzare i files che invece mantengono registrate le informazioni fino a quando l'utente stesso non deciderà di cancellarle. I Files vengono infatti memorizzati sulle memorie di massa, potremo quindi salvare le informazioni relative ai nostri contatti telefonici in un file su hard-disk, pendrive ecc. Il metodo di organizzazione di un file, stabilisce la logica e le modalità con cui le informazioni sono memorizzate sui supporti fisici. I tipi di organizzazione sono:
In questa lezione proveremo a registrare le informazioni a riguardo dei nostri amici nome e numero di telefono in un file sequenziale, ove dunque le informazioni saranno registrate una di seguito all'altra, e potranno essere raggiunte solo scorrendole tutte dal principio alla fine.
...LEZIONE IN ALLESTIMENTO ...
|
|
Quando abbiamo necessità di individuare il valore massimo o minimo in una serie di valori, possiamo riferirci a questo algoritmo: Ogni volta inizializzeremo la variabile d'appoggio Max attribuendo o il primo numero della serie data in input,(che essendo il primo ad essere analizzato viene considerato il maggiore), oppure un valore molto basso. Impostiamo il contatore ad 1 e procediamo con l'acquisizione di un altro numero in input. All'interno della struttura di ripetizione, confronteremo ogni numero della serie dato in input con il valore della variabile Max, che assumerà il valore di Num ogni volta che quest'ultimo risultasse maggiore. Al termine delle ripetizioni, la variabile di appoggio conterrà il valore massimo tra quelli analizzati. NB: Per i problemi di ricerca del Minimo, basterà adattare questo stesso algoritmo,attribuendo alla variabile d'appoggio Min il primo valore della serie (perchè al primo controllo il primo numero è oggettivamente il più piccolo), oppure attribuendo un valore molto basso, anche zero. Successivamente, all'interno del ciclo, si dovrà confrontare il valore di ciascun Num con Min ( if Num < Min) ed ogni volta che Num risultasse minore di Min, Min assumerà il valore di Num. All'uscita dal ciclo, la variabile d'appoggio conterrà il numero più basso della serie analizzata. SOLUZIONE Visual Basic Scarica la Codifica |
http://www.ermannomadonna.it http://www.ermannomadonna.it/chisonor.htm