- presentazione del sito
- Registrazione
- Eventi, mostre, convegni ed iniziative segnalate dalle aziende
- Recensioni ed articoli
- Le Mailing Lists
- La rivista Pc Ciechi
- Wiki
- Chi siamo
- Donazioni
- Un progetto degno di nota: Wintalbra
- Come navigare in questo sito
- rss
- Bancomat Accessibili sul territorio nazionale
- Contattaci
- I sostenitori di SpazioAusili
Corso vbs\Confronto tra stringhe
Guido Ruggeri su winguidotecnica, 03\01\2010, h. 20.04.
Dato che è venuto fuori l'argomento del confronto tra
stringhe, cominciamo a parlarne.
Innanzitutto ricordiamoci che una stringa è un insieme
definito di caratteri.
"Io mi chiamo Guido Ruggeri" è una stringa, della
lunghezza di 26 caratteri, di cui il primo carattere è "I"
maiuscola mentre l'ultimo è "i" minuscola.
Anche "dfshltihsohis" è una stringa, della lunghezza di 13
caratteri, il cui primo carattere è "d" e l'ultimo è
"s".
Questa volta non si tratta di una frase di senso compiuto,
ma di un insieme di caratteri che ho battuto a caso sulla
tastiera. Ma è sempre una stringa. Il computer non lo sa
se una stringa ha significato letterale oppure no: quello
glielo diamo noi che la leggiamo.
Un altro esempio di stringa è: "089345358". Questa ha la
lunghezza di 9 caratteri, il primo è "0" e l'ultimo è
"8".
L'ultimo esempio riguarda una stringa numerica, perché
composta da soli numeri. Ma anche qui per il computer non fa
differenza, che si tratta di soli numeri lo sappiamo noi che
la leggiamo.
Tutt'al più la cosa comincerebbe a diventare di interesse
del computer nel momento in cui cercassimo di convertirla a
numero: allora il computer analizzerebe il contenuto della
stringa per stabilire se può essere convertita a numero
oppure no.
Ma, fino ad allora, per il computer sarebbe una stringa come
tante altre, cioè: un insieme di caratteri.
Del confronto tra numeri abbiamo parlato, e su quello tutto
sommato c'è poco da dire: dati due numeri, o sono uguali
oppure uno è maggiore dell'altro.
Cosa vuol dire invece fare il confronto tra sue stringhe?
Vuol dire che il confronto avviene carattere per carattere.
Il primo carattere della prima stringa con il primo
carattere della seconda stringa.
Il secondo carattere della prima stringa con il secondo
carattere della seconda stringa.
Il terzo carattere della prima stringa con il terzo
carattere della seconda stringa.
E così via. Fino a quando? cioè, fino a quale carattere
prosegue il confronto?
Il confronto va avanti o finché non arriviamo alla fine di
una delle due stringhe, oppure finché non incontriamo due
caratteri che, nelle due stringhe, non sono uguali.
Facciamo un esempio.
Ho due stringhe.
S1 = "Guido Ruggeri"
S2 = "Guido Ruggeri"
Voglio confrontarle.
Inizio dai primi caratteri. Il primo di S1 è: "G". Il
primo di S2 è: "G".
Quindi sono uguali.
Allora devo continuare, con i secondi caratteri.
I secondi sono: "u" per S1, "u" per S2.
Sono sempre uguali. Perciò proseguo con i terzi caratteri.
Siccome sono sempre uguali, arriverò fino agli ultimi
caratteri, che sono: "i" e "i".
Sono ancora uguali. Il confronto comunque si è concluso,
perché siamo arrivati alla fine di entrambe le stringhe, e
non possiamo proseguire oltre.
In questo caso, l'esito del confronto è: le due stringhe
sono uguali.
Facciamo un altro esempio.
Adesso ho queste due stringhe:
S1 = "Antonio De Angelis"
S2 = "Antonio Ziviello"
facciamo il confronto.
Cominciamo dai primi caratteri: sono "A" ed "A".
Uguali. Perciò continuiamo.
I secondi caratteri sono: "n" ed "n".
Ancora uguali, per cui continuiamo.
E, proseguendo così, arriviamo alla fine delle parole
"Antonio".
Dopo le "o" abbiamo spazio e spazio.
Ancora uguali, perciò continuiamo.
Adesso abbiamo in S1 il carattere "D", e in S2 il carattere
"Z".
Alt! Stop! questi non sono uguali.
Secondo l'ordine alfabetico, "Z" è maggiore di "D".
Il confronto tra le nostre stringhe termina qui, non abbiamo
bisogno di esaminare gli altri caratteri.
L'esito del confronto è: la stringa S2 è maggiore della
stringa S1.
Quello che vale, cioè, è il confronto tra i primi
caratteri diversi che incontriamo.
Rimane da precisare quindi cosa voglia dire confronto tra
due caratteri.
Già abbiamo capito che quando i caratteri sono entrambi
lettere, vale il confronto per ordine alfabetico.
Però, attenzione: le lettere maiuscole vengono prima delle
minuscole.
Cioè: è vero che "a" minuscola è minore di "z"
minuscola, così come è vero che "A" maiuscola è minore
di "Z" maiuscola.
Però "Z" maiuscola è minore di "a" minuscola. Vale
cioè la regola che una lettera maiuscola è sempre minore
di una lettera minuscola, quali che siano le lettere.
I caratteri numerici, invece, vengono prima delle lettere.
Sono ordinati dallo "0" fino al "9"
Perciò "0" è minore di "5", ma "0", come anche "5", è
minore di "A" maiuscola e anche di "a" minuscola.
Chiarito cosa vuol dire fare il confronto tra due stringhe,
possiamo adesso dire che il confronto si fa con gli stessi
operatori dei confronti tra numeri.
Quindi gli operatori da usare sono: =, >, <, >=, <=,
<>.
"Guido Ruggeri" = "Guido Ruggeri"
questo confronto restituisce: True.
"Antonio De Angelis" > "Antonio Ziviello"
questo confronto restituisce: False.
"Antonio De Angelis" < "Antonio Ziviello"
questo confronto restituisce: True.
C'è però dell'altro da dire. Ne parleremo nella prossima
lezione.
***
d.
Ed ora, un po' di pubblicità
:Sarà effetto treno per sei ore,
ma
> non ho capito l'uso delle variabili in oggetto ed illoro
> uso;
Risposta:
Non si tratta di variabili, ma di costanti.
E' come quando, in geometria, tu dici che la circonferenza
di un cerchio si ottiene moltiplicando il diametro per pi
greco.
E che cos'è pi greco? E' una costante, che vale 3,1416.
La chiamiamo pi greco per comodità, è cioè un nome
mnemonico.
True e False sono la stessa cosa: costanti mnemoniche.
Vogliono dire: vero e falso.
False vale: 0.
True, in Basic, vale -1. Talvolta, in altri linguaggi vale
1.
Ma l'importante è che valga qualcosa diverso za 0, in modo
da contrapporsi a False.
***
d.
> Che significa ? Per favore mi sai dire quando se ne è parlato,
r.
alessandro Ricotta.
in VBScript esistono i valori costanti VBCR, VBLF e VBCRLF che servono
per stampare a video il ritorno a capo.
Per esempio se io scrivo:
MSGBox "Nome: Alessandro" & VBCRLF & "Cognome: Ricotta"
Il risultato a video sarà il seguente:
Nome: Alessandro
Cognome: Ricotta
Quindi ci ritroveremo un messaggio in due righe appunto separate dal
ritorno a capo.