Ogni programma che si rispetti svolge in genere azioni abbastanza
complicate da aver bisogno di memoria, cioè da aver bisogno di ricordarsi
qualcosa. Il meccanismo a cui si ricorre in questi casi sono le
variabili.
Potete pensare ad una variabile come ad un pezzetto (molto piccolo)
della vostra RAM, isolato dal resto e con un nome ben preciso. L'analogia
a cui si ricorre di solito e' quella di una celletta o di una scatolina,
dove si può inserire un pezzetto di carta con sopra scritta l'informazione
da memorizzare. La scatolina ha un nome, e quando vogliamo riferirci
al suo contenuto basta usare il suo nome.
Nel linguaggio Perl, cè in pratica un solo tipo fondamentale
di variabile, chiamato scalare, e un paio di tipi derivati
chiamati array. In questa lezione ci occuperemo delle variabili
scalari, che sono le più semplici.
Le variabili scalari
Una variabile scalare si riconosce dal prefisso $ (dollaro), con
di seguito scritto il nome della variabile stessa. Il nome può essere
una combinazione qualunque di caratteri alfanumerici. Alcuni esempio
di nomi validi sono $a, $pippo, $anno1999, $direzione_nord. Ma "$ciao
a tutti" no, perché contiene degli spazi, che non sono ammessi
nel nome.
In una variabile scalare possiamo mettere più o meno quello che
ci pare: numeri interi o decimali, stringhe (cioè sequenze di caratteri
alfanumerici), valori vero/falso eccetera. In gergo tecnico si dice
che queste variabili sono senza tipi. Il contenuto della variabile
verrà interpretato a seconda del contesto. Facciamo un esempio:
$a=2;
$b=10;
$somma = $a + $b;
$aggiunta = $a . $b;
$somma2 = $aggiunta + $a;
print "Somma: $somma\n";
print "Aggiunta: $aggiunta\n";
print $somma2 ."\n";
Questo e' piccolo un programma Perl che esegue alcune operazioni
e scrive il risultato. Provate a scriverlo e ad eseguirlo (ormai
dovreste essere in grado di farlo da soli), e dovreste vedere queste
righe:
Somma: 12
Aggiunta: 210
212
Analizziamo adesso le singole istruzioni. Tenete presente che, a
meno non si specifichi diversamente, il Perl esegue le vostre istruzioni
in sequenza, una riga alla volta.
La prima riga è unassegnazione: lordine al Perl
è di creare una variabile chiamata $a, e di metterci dentro il numero
2. Il punto e virgola finale serve a terminare l'istruzione (quasi
tutte le righe di un programma Perl terminano con un punto e virgola).
La seconda riga fa lo stesso con una variabile chiamata $b, mettendoci
dentro il numero 10.
Nella terza le cose sono ancora abbastanza semplici: le variabili
$a e $b vengono sommate (in realtà, vengono sommati
i loro contenuti), e il risultato viene messo nella variabile
$somma appena creata. Poiché sappiamo che $a contiene 2, e $b contiene
10, possiamo indovinare che a questo punto $somma conterrà 12.
La quarta riga fa una cosa simile a quella precedente, ma invece
di usare loperatore "+" (somma), usa loperatore
"." (unione di stringhe). Ricordate cosa dicevamo a proposito
dellinterpretazione del contenuto? Loperatore "+"
assume che le variabili contengano un numero, e somma questi numeri.
Invece, loperatore "." assume che le variabili contengano
delle stringhe, e crea una nuova stringa affiancando le due di partenza.
Perciò nella variabile $aggiunta viene messo il risultato di questa
operazione, cioè la stringa "210", che non è un
numero! E semplicemente una stringa di tre caratteri. L'operatore
"." tratta lettere, numeri e punteggiatura come singoli
caratteri senza significato.
Adesso un altro trucchetto: la quinta riga usa di nuovo il "+",
sulle due variabili $a e $aggiunta. Sappiamo che $a
contiene il numero 2, mentre $aggiunta contiene la stringa
"210". Il fatto che "210" non sia un numero
non influenza per niente l'operatore "+", il quale procede
a convertire "210" in un numero, lo somma a l 2 e mette
il risultato nella variabile $somma2.
Le tre istruzioni "print" finali scrivono sullo schermo
il risultato. La sintassi di unistruzione print è:
print espressione;
Dove espressione è una qualunque cosa che possa essere tradotta
in stringa. Quindi le nostre tre print e quella del nostro primo
programmino sono tutte valide.
Notate come, nelle prime due istruzioni print, sia contenuto il
nome di una variabile dentro la stringa da stampare. Questa variabile
viene, come si dice, interpolata, cioè invece del suo nome
viene usato il suo contenuto. Se questo contenuto è un numero, viene
tradotto in una stringa. Infine la stringa viene stampata sullo
schermo, compreso il ritorno a capo "n".
La terza print è diversa: troviamo come espressione loperazione
$aggiunta . "n", cioè usiamo di nuovo loperatore
".", che prende il contenuto di $somma2 (convertendolo
nel frattempo in stringa) e lo unisce all'altra stringa "n"
(ritorno a capo). Il risultato non viene messo da nessuna
parte, ma usato solo per listruzione print e poi dimenticato.
Se avessimo voluto conservarlo, avremmo dovuto creare un altra variabile
dove metterlo.
Nella prossima puntata impareremo a combinare più variabili scalari
per formare degli array.
Torna all'indice Generale del corso di Corso di Perl di Software Planet