rubyacademy

 

Letters

Page history last edited by g 3 yrs ago

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:)

 

bau bau bau bau

 

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:

 

puts 'You're swell!'

 

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.