Corso di Visual Basic: | |||||||||||||||||||||
Finora abbiamo visto come vengono valutate le espressioni per verificare se sono true o false, e negli esempi abbiamo sempre usato dei confronti: in realtà questo spesso non è necessario, anzi è ridondante; consideriamo ad esempio questa condizione:
La condizione risulta true se frmAbout.Visible è True, risulta False se frmAbout.Visible è False: in parole povere il valore della condizione è identico al valore di frmAbout.Visible; pertanto non c'è alcun bisogno di effettuare il confronto, ma sarà sufficiente scrivere:
Se il form non è visible, la condizione sarà verificata e le istruzioni saranno eseguite. Una cosa simile si può fare anche con i valori numerici: bisogna infatti sapere che i valori True e False in realtà non sono altro che numeri, e precisamente la parola chiave true corrisponde al valore -1 e la parola chiave false corrisponde al valore 0. Provate infatti a creare un nuovo progetto, a inserire un CommandButton e a scrivere queste righe nella routine dell'evento click:
True False Ora provate a scrivere, al posto di "blnProva = -1", "blnProva = 34" e riavviate il progetto: ripremendo il pulsante, vedrete ancora nella finestra immediata: True False Questo accade perché, quando un valore numerico viene convertito in Boolean, esso è interpretato da VB come true se è diverso da 0, anche se il valore predefinito di true è -1, ed è interpretato come false quando è uguale a 0. Analogamente, è possibile convertire un valore Boolean in un valore numerico:
-1 0 Insomma, le parole chiave True e False funzionano quasi come delle variabili numeriche il cui valore è rispettivamente -1 e 0: infatti la guida in linea di Visual Basic afferma che le variabili Boolean sono memorizzate come variabili numeriche a 16 bit (2 byte), ossia come gli Integer. Ma se un numero può essere direttamente interpretato come un valore Boolean, non c'è bisogno di scrivere, ad esempio:
Il fatto è che gli operatori logici, se applicati a valori o variabili numeriche, eseguono un confronto "bit a bit" dei due operandi. Qui occorre fare una breve digressione sui bit e sui byte. Un bit è l'unità fondamentale su cui si basa il funzionamento di un computer, e può assumere solo due valori: 0 e 1; questa caratteristica deriva dal fatto che i supporti fisici di memorizzazione dei dati possono assumere solo due stati stabili: possono cioè essere magnetizzati in senso positivo oppure negativo. Pertanto i processori eseguono i calcoli in base al sistema numerico binario, cioè in base alle potenze di 2 (perché 2 sono i valori possibili: 0 e 1), mentre noi utilizziamo il sistema decimale, cioè in base alle potenze di 10 (perché 10 sono le cifre da 0 a 9). Solitamente come unità di misura della capacità di memoria dei computer viene preso il byte, che è semplicemente un gruppo di 8 bit contigui: se avessimo un numero di 8 cifre decimali questo sarebbe compreso tra 0 e
Invece un numero di 8 cifre binarie (cioè un byte) è compreso tra 0 e
infatti il tipo di dati byte memorizza proprio un numero compreso tra 0 e 255 (v.lez. 1). Un numero di 16 bit (cioè 2 byte, come un integer), ad es., è compreso tra 0 e
e così via (il motivo per cui il tipo integer può assumere valori tra -32768 e +32767 lo vedremo un'altra volta). Viceversa, il numero 206 può essere scomposto, in base al sistema decimale, in
numerando ogni cifra a partire da destra (cioè considerando 6 la prima cifra, 0 la seconda cifra, 2 la terza cifra) potremo scrivere
In altri termini, ogni numero può essere espresso come la somma dei prodotti di ogni cifra per 10 elevato alla posizione occupata da quella cifra meno uno. Questa spiegazione può sembrare molto complicata, ma è importante per capire come convertire un numero decimale in base binaria e un numero binario in base decimale; supponiamo ad es. di avere il numero binario 101: per sapere a quale numero decimale corrisponde, dovremo moltiplicare 1 (la prima cifra da destra) per 2^ (1 - 1); poi dovremo moltiplicare 0 (la seconda cifra) per 2 ^ (2 - 1) e infine 1 (la terza cifra da destra) per 2 ^ (3 - 1). In parole povere:
Se invece dovessimo convertire un numero decimale in binario, dovremmo dividere il numero per 2: se il risultato è intero, scriviamo 0, altrimenti 1; poi prendiamo la parte intera della divisione e la dividiamo ancora per 2, e procediamo in questo modo finchè non resta 0; infine si ribalta la serie di 0 e 1 che abbiamo scritto. Ad eempio, per convertire il numero 9 si procede così:
La successione che abbiamo ottenuto è quindi 10010, che ribaltata diventa: 01001, cioè 1001: infatti
Ora torniamo al confronto bit a bit. Questo confronto, come dice il termine, prende in considerazione ogni singolo bit di un operando e lo confronta con il bit che occupa la stessa posizione nell'altro operando: il risultato del confronto sarà determinato dall'operatore logico utilizzato, tenendo conto che il bit 0 corrisponde a False e il bit 1 corrisponde a True. Supponiamo ad eempio. di fare 23 And 200:
Il risultato è 0 perché, per ogni posizione, i bit corrispondenti dei due operandi non sono mai contemporaneamente 1 e 1 (cioè True e True). Facciamo altri esempi:
Nel caso del Not x, vi faccio notare che il risultato è sempre 255 - x, ovvero il valore massimo che può assumere un byte meno il valore dell'operando (nel caso in cui x sia un dato di tipo byte). |
Archivio:ndexed | ||||
Lezioni | Commenta questa lezione | Invia la tua guida | Avviso per le nuove lezioni | Proponi un argomento |
Visual Basic Italia© copyright 2000 - tutti i diritti riservati |