Colored boxes

Variabili e Tipi di Dato

giftIn programmazione, una variabile è un contenitore di un qualche valore. Una scatola, come abbiamo visto nella lezione precedente, nella quale possiamo inserire un numero, una frase o altri tipi di dati.

Prima di essere utilizzata una variabile deve essere dichiarata (che equivalente al concetto di costruire una scatola).

Una volta che la variabile è stata dichiarata possiamo:

  1. valorizzarla (mettere qualcosa nella scatola)
  2. leggerla (guardare cosa c’è nella scatola)
  3. valorizzarla con un nuovo dato

Le variabili sono uno dei mattoni fondamentali con cui si scrive un programma, da ora in poi le incontrerete molto spesso.

Torniamo al nostro Playground. Per aprirlo basta fare doppio click sul file Playground che avete salvato sul Desktop.

Una volta aperto, cancelliamo le 3 righe presenti in precedenza e scriviamo.

Bene, con questa istruzione abbiamo creato una variabile di nome show e gli abbiamo assegnato le parole "Breaking Bad". Se guardiamo la colonna destra di Playground vedremo che in corrispondenza della riga che abbiamo scritto viene stampato il contenuto della nostra variabile.

Alla riga successiva scriviamo semplicemente show.

Come vedete Playground continua a stampare il contenuto di show. Questo è un buon sistema per conoscere il contenuto di una variabile in un certo istante. Vi vasta scriverla, premere Invio e aspettare qualche istante perché Playground stampi il valore della variabile sulla riga di destra.

Sovrascrivere una variabile

Vogliamo ora scrivere un valore differente nella nostra variabile, ad esempio “Dexter”.

Per assegnare un valore a una variabile basta scrivere sulla stessa riga e in questo ordine:

  1. il nome della variabile
  2. il simbolo =
  3. il nuovo valore

Proviamo!

Ispezionate la colonna destra e vedrete che ora show contiene la parola "Dexter".

Bene! Un ultimo tentativo, “cercate” ora di assegnare a show il numero 5 scrivendo.

Playground sta segnalando il seguente errore:

Cannot assign a value of type ‘Int’ to a value of type ‘String’

Ovvero:

Non posso assegnare un valore di tipo ‘Int’ a un valore di tipo ‘String’.

Cosa è successo?

Tipi di dato

Facciamo un passo indietro, immaginate di avere di fronte uno di quei vecchi telefoni a disco come quello in figura.

Telephone
Telephone

Dovete effettuare una telefonata ed è necessario immettere il numero di telefono della persona da chiamare. Potete immettere il numero corretto o il numero errato ma sicuramente l’unica cosa che potete immettere è un numero giusto? Se voleste immettere il nome della persona da chiamare non sarebbe possibile perché l’interfaccia del telefono vi obbliga a immettere un numero.

Altro esempio, immaginate di partecipare a un quiz televisivo. Davanti a voi avete 2 pulsanti: uno con scritto Si e uno con scritto No. Il conduttore vi pone la seguente domanda:

E’ vero che tutti gli alieni in questa stanza hanno i capelli rossi?

Si tratta di una domanda la cui risposta può essere o Si oppure No. Non è ammessa eccezione. Non potete rispondere con una frase del tipo “Forse!” e non potete rispondere con un numero! Dovete esclusivamente premere il pulsante Si o No. Quindi in questo caso siete obbligati a trasmettere una risposta binaria (ovvero una risposta che può essere Si oppure No).

Tecnicamente in questi 2 esempi potreste anche non immettere niente ma affronteremo questo scenario più avanti.

Riflettete su questi 2 esempi. Cosa possiamo dedurne? Beh innanzitutto che nel mondo esistono dei tipi di dati. Vediamone alcuni:

  • Interi: 1,2,0,-50, 100
  • Stringhe: “Hello world”, “Breaking Bad”, “The Walking Dead”
  • Binari o booleani: Si, No

L’importanza dei tipi di dati è ancora maggiore nel contesto della programmazione. Non a caso Swift (come quasi tutti i linguaggi di programmazione) permette di indicare un tipo di dato con delle parole speciali.

  • Int: indica i numeri interi (esempio: 1,2,0,-50, 100)
  • String: indica delle stringhe, ovvero dei gruppi di caratteri (esempio: “Hello world”, “Breaking Bad”, “The Walking Dead”)
  • Bool: indica un valore che può essere o vero o falso (esempio true, false)

Swift offre molti altri tipi di dato ma per capire il motivo dell’errore del paragrafo precedente questi sono sufficienti.

Torniamo al nostro codice.

Alla prima riga come ricorderete abbiamo creato una variabile di nome show e l’abbiamo valorizzata con la frase "Breaking Bad". Quello che non vi ho detto è che ogni variabile ha un tipo.

E, importante, in Swift e in molti altri linguaggi il tipo di una variabile non può essere in alcun modo cambiato.

Bene, quale è il tipo della variabile show? Suggerimento, è uno dei 3 visti poco sopra quindi o Int o String o Bool.

Forse avete già immaginato quale sia il tipo corretto, tuttavia per scoprirlo basta premere il tasto alt sulla tastiera e poi fare click sul nome della variabile. In sovrimpressione appare un fumetto con scritto:

Quel simbolo si legge “è di tipo”. Quindi Swift ci sta dicendo che:

la variabile show è di tipo String

Ok, ma come è stata presa questa decisione?

Torniamo al mondo reale. Se vi dicessero la frase:

E’ mezzanotte

voi sareste in grado non solo di capire il valore del messaggio ma implicitamente potreste dedurre anche il tipo di quel valore. Nel vostro cervello il messaggio viene interpretato come:

Sono le 0:00, questa è un’informazione di tipo orario.

Analogamente con una frase del tipo

Ci vediamo domani

potete dedurre che la tipologia del valore che vi è stato comunicato è Data, mentre con

Si, va bene

deducete che il valore è di tipo Binario/Booleano.

Swift possiede un meccanismo analogo chiamato Type Inference che permette (tra le varie cose) di dedurre il tipo di una variabile in base al valore con cui la stiamo popolando. Quindi quando abbiamo assegnato a show “la frase” "Breaking Bad" Swift ha analizzato il valore e ha dedotto che era di tipo String. Quindi ha dedotto che anche la variabile show avrebbe dovuto essere di tipo String. E così l’ha creata di quel tipo.

Successivamente quando abbiamo cercato di assegnare l’intero 5 a show abbiamo generato un errore perché abbiamo cercato di inserire un valore di tipo Int in una variabile di tipo String.

Creare altri tipi di variabili

Adesso che abbiamo scoperto per quale motivo l’ultima riga dava un errore possiamo trasformarla in un commento aggiungendo // all’inizio della riga. I commenti non vengono eseguiti da Swift e vengono letti soltanto da noi.

Creiamo ora una nuova variabile avente nome thisYear e contenente il valore 2015.

Quale sarà il tipo della variabile? Considerando che 2015 è un intero Swift avrà probabilmente deciso che anche thisYear deve essere di tipo Int. Fate alt + click sul nome della variabile per verificare. Dovrebbe apparire quanto segue.

Infine creiamo un variabile con nome thisIsSwft e assegniamogli il valore true.

Questa volta Swift avrà assegnato alla variabile il tipo Bool.

Assegnare un tipo esplicitamente

Fino ad ora abbiamo lasciato che Swift deducesse il tipo delle nostre variabili. Tuttavia abbiamo la possibilità di indicare esplicitamente il tipo della variabile che stiamo creando. Ecco la sintassi.

Come vedete basta aggiungere : e il tipo della variabile subito dopo il nome. Naturalmente il tipo della variabile dovrà essere lo stesso del valore che gli stiamo assegnando.

Conclusione

Ricordate che per creare un valore di tipo String in Swift basta scrivere un qualche testo e racchiuderlo tra virgolette.

Per creare un valore di tipo Int basta digitare un numero compreso tra -21474836482147483647.

Per creare un valore di tipo Bool basta usare le costanti true o false.

Per creare una variabile basta scrivere var nome della variabile  = valore

Esempio:

Per scrivere un commento bisogna digitate // seguito dal testo del commento

E’ tutto chiaro? Se non lo è usate i commenti qui sotto.

 

Prossima lezione

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *