Le lettere
E così adesso sappiamo tutto sui numeri, ma cosa sappiamo sulle lettere? e sulle parole? e sul testo?
In un programma un gruppo di lettere è detto stringa. (Potete pensare a delle lettere stampate tenute insieme su uno striscione.) Le stringhe saranno colorate di rosso per distinguerle facilmente all'interno del codice. Ecco alcune stringhe:
'Ciao.'
'Ruby rocks.'
'5 è il mio numero preferito... quale è il tuo?'
'Snoopy dice #%^?&@! quando urta con il ditone.'
' '
''
Si può notare che le stringhe possono contenere punteggiatura, cifre, simboli... oltre alle lettere. L'ultima stringa non contiene niente; perciò la chiameremo stringa vuota.
Prima abbiamo usato puts per stampare dei numeri; adesso
proveremo con alcune stringhe:
puts 'Ciao Mondo!'
puts ' '
puts 'Addio.'
Ciao Mondo!
Addio.
Funziona bene. Adesso prova con alcune stringhe a tuo piacere.
Aritmetica con le stringhe
Così come si può fare aritmetica con i numeri, è possibile fare aritmetica con le stringhe! O almeno una specie di aritmetica...
comunque possiamo sommare le stringhe. Proviamo a sommare due stringhe e vediamo puts cosa tira fuori.
puts 'Mi piace' + 'la torta di mele.'
Mi piacela torta di mele.
Oops! Ho dimenticato di mettere uno spazio tra 'Mi piace' e 'la torta di mele'. Gli spazi in genere non contano, ma hanno importanza all'interno delle stringhe. (E` vero quello che si dice: i computer non fanno quello che vorremmo che loro facessero, ma fanno solo quello che gli si dice di fare.) Riproviamo ancora:
puts 'Mi piace ' + 'la torta di mele.'
puts 'Mi piace' + ' la torta di mele.'
Mi piace la torta di mele.
Mi piace la torta di mele.
(Come si può vedere non importa in quale stringa è stato aggiunto lo spazio.)
Quindi possiamo aggiungere stringhe, e possiamo anche moltiplicarle! (Per un numero, ovviamente.) Vediamo:
puts 'bau ' * 4
cane che abbaia
(Sto scherzando... in realtà viene fuori questo:)
Pensandoci ha perfettamente senso. Dopotutto, 7*3 significa 7+7+7, così 'moo'*3 significa 'moo'+'moo'+'moo'.
12 vs '12'
Prima di andare avanti dovremmo essere sicuri di aver capito la differenza tra numeri e cifre. 12 è un numero, ma '12' è una stringa di due cifre.
Giochiamoci sopra per qualche momento:
puts 12 + 12
puts '12' + '12'
puts '12 + 12'
24
1212
12 + 12
Qualcosa come questo:
puts 2 * 5
puts '2' * 5
puts '2 * 5'
10
22222
2 * 5
Questi esempi sono mplto semplici. Tuttavia, se non si sta molto attenti a mischiare stringhe e numeri si possono avere dei...
Problemi
A questo punto potreste aver provato alcune cose che non funzionano. Se così non è stato eccone alcune:
puts '12' + 12
puts '2' * '5'
#<TypeError: can't convert Fixnum into String>
Hmmm... un messaggio d'errore. Il problema è che non si può aggiungere un numero ad una stringa. Non ha più senso che fare qualcosa del genere:
puts 'Betty' + 12
puts 'Fred' * 'John'
Qualcos'altro a cui stare attenti: si può scrivere 'maiale'*5 in un programma, che significa 5 ripetizioni della stringa 'maiale'. Tuttavia non si può scrivere 5*'maiale', che significherebbe 'maiale' ripetizioni del numero 5, e questo è molto sciocco.
Per concludere, come si fa ad avere un programma che stampa You're swell!? Possiamo provare in questo modo:
ebbene, così non funziona; non voglio neanche provare ad eseguirlo. The computer thought we were done with the string. (Ecco perché è una buona cosa avere un editor di testo con la sintassi colorata.) Quindi come facciamo a far sapere al computer cosa vogliamo mettere nella stringa? Dobbiamo fare l'escape dell'apostrofo, in questo modo:
puts 'You\'re swell!'
You're swell!
Il backslash è il carattere di escape. In altre parole se si ha un backslash seguito da un altro carattere questi a volte vengono sostituiti da un nuovo carattere. Le sole cose di cui il backslash fa l'escape comunque sono l'apostrofo e il backslash stesso (se ci si pensa, i caratteri di escape devono sempre fare l'escape anche di sé stessi). Ecco degli esempi, credo, ordinati:
puts 'L\'arcobaleno è bello!'
puts 'backslash alla fine della stringa: \\'
puts 'su\\giu'
puts 'su\giu'
L'arcobaleno è bello!
backslash alla fine della stringa: \
su\giu
su\giu
Dato che il backslash non fa l'escape della lettera 'g', ma fa l'escape di sé stesso, le ultime due stringhe sono identiche: nel codice sembrano differenti ma per il computer sono la stessa stringa.
Se vi vengono delle domande o delle perplessità continuate leggere! Dopotutto non posso rispondere a tutte le domande in questa pagina.
Comments (0)
You don't have permission to comment on this page.