In questo capitolo inizieremo un lungo tour per dare uno sguardo sommario a tutte le caratteristiche principali della programmazione in swift. Per comprendere parte di questo capitolo dovreste avere almeno delle basi nella programmazione in C, in quanto gli argomenti verranno trattati in modo non approfondito. Dal secondo capitolo in poi, inizieremo con la vera e propria guida al linguaggio, partendo da zero, ovviamente tutto in italiano!

La tradizione suggerisce che il primo programma da affrontare quando si studia un nuovo linguaggio debba essere il classico “Ciao, mondo”: In Swift, questo può essere fatto in una sola riga:

println (“Ciao,mondo”)

Se avete scritto del codice in C o Objective-C, questa sintassi vi sembrerà familiare! In Swift, questa riga di codice è un programma completo.

Non è necessario importare alcuna libreria separata per le funzionalità basilari, come input/output o la gestione delle stringhe (come invece accade in C con la libreria “stdio.h”).

Il codice scritto in ambito globale viene utilizzato come punto di ingresso per il programma, in modo da non aver bisogno di una funzione principale. Inoltre, non c’è bisogno di scrivere alcun punto e virgola “;” per delineare il termine di una riga di codice.

Questo tour vi darà abbastanza informazioni per iniziare a scrivere codice Swift e vi dimostrerà come eseguire una varietà di istruzioni. Non preoccupatevi se qualcosa non vi sarà chiaro, tutto quello che introdurremo in questo tour verrà poi spiegato nei minimi nel resto del manuale.

VALORI SEMPLICI

Utilizzare let per dichiarare un costante e var per dichiarare una variabile. Il valore di una costante non ha bisogno di essere assegnato in fase di compilazione, ma è necessario assegnargli un valore solo in fase di inizializzazione. Ciò significa che è possibile utilizzare le costanti per denominare un valore e poi riutilizzarlo in modo ricorrente all’interno del programma che andremo a sviluppare.

var LaMiaVariabile = 34 
MiaVariabile = 21 
let MiaCostante = 38

Costanti e variabili devono contenere di un tipo specifico ma, in Swift, non è necessario dichiararlo esplicitamente. Infatti possiamo lasciare al compilatore il compito di riconoscerlo autonomamente. Nell’esempio precedente, il compilatore deduce che MiaVariabile è un numero intero (int) perché è stata inizializzata proprio con un valore intero (42).

Se il valore iniziale non fornisce informazioni sufficienti (o se non c’è un valore iniziale), bisogna specificare il tipo di dato scrivendolo dopo la variabile, separato da due punti.

Esempio:

let IntegerImplicito = 45

let DoubleImplicito = 37.0

let DoubleEsplicito: Double = 37

I valori non sono mai implicitamente convertiti in un altro tipo. Se avete bisogno di convertire un valore a un tipo diverso, bisogna inizializzare una variabile esattamente del tipo desiderato.

let etichetta = “la larghezza è”
let larghezza = 78 
let EtichettaAltezza = etichetta + String (larghezza)

C’è un modo ancora più semplice per includere i valori nelle stringhe: Scrivere il valore tra parentesi e anteporre il carattere (\). Per esempio:

let mele = 5
let arance = 6
let SommaMele = “Ho \(mela) mele.”
let SommaFrutti = “Ho \(mele + aranci) unità di frutti.”

Si possono creare array e dizionari utilizzando parentesi quadre ([]), per poi accedere ai loro elementi scrivendo l’indice o la chiave tra parentesi:

var listaDellaSpesa = [“pesce”, “acqua”, “pane”, “vernice”]
shoppingList[1] = “bottle of water”

var mestieri= [
“Pizzaiolo”: “Poliziotto”,
“Panettiere”: “Meccanico”,
]
mestieri[“Luca”] = “Commesso”

Per creare un array o un dizionario vuoto si deve utilizzare la seguente sintassi:

let DizionarioVuoto = Dictionary<String, Float>()

let Arrayvuoto = String[]()

Se il dato è di tipo che può essere dedotto automaticamente dal compilatore, si può scrivere una matrice vuota come [] e un dizionario vuoto come [:], ad esempio, quando si imposta un nuovo valore per una variabile o si passa un argomento a una funzione:

Listadellaspesa = [] 

Utilizzare if e switch per dichiarare delle condizioni, e utilizzare for-in, for, while e do-while per fare dei loop. Le parentesi intorno alla condizione o variabile del ciclo sono opzionali. Le parentesi graffe sono necessarie!

let PunteggiIndividuali = [34, 43, 190, 45, 78]

var PunteggioSquadre = 0

for punteggio in PunteggiIndividuali {
    if punteggio > 50 {
        PunteggioSquadra += 3
    } else{

        PunteggioSquadra += 1
    }
}
PunteggioSquadra

In un if, il condizionale deve essere un’espressione booleana, ciò significa che il codice come “if the score {…}” è un errore, non un paragone implicito a zero.

Potete utilizzare if let insieme per lavorare con i valori che potrebbero mancare. Questi valori sono rappresentati come valori opzionali. Un valore opzionale o contiene un valore nullo oppure nil per indicare che il valore è mancante.  Scrivi un punto interrogativo (?) Dopo il tipo di un valore per contrassegnarlo come opzionale.

var StringaOpzionale: String? = “Ciao”
optionalString == nil

var NomeOpzionale: String? = “Mario Rossi”
var saluti = “Ciao!”
if let nome = NomeOpzionale {
    Saluti = “ciao, \(nome)”
}

Se il valore opzionale è nil, il condizionale è false e il codice tra parentesi graffe viene ignorato. In caso contrario, il valore opzionale viene scartato e assegnato alla costante dopo  let.

Gli switches supportano qualsiasi tipo di dato e una varietà di operatori di comparazione, non limitandosi alle semplici comparazioni di uguaglianza e ai soli dati interi

let vegetali = “Insalata”
switch vegetali {
case “zucchine”:
    let CommentoVegetali = “Favoriscono la digestione.”
case “Melone”, “Mela”:
    let CommentoVegetali = “Puoi farci un buon tè.”
case let x where x.hasSuffix(“pepe”):
    let CommentoVegetali = “è piccante \(x)?”
default:
    let CommentoVegetali = “Tutti sono adatti per un ottimo minestrone.”
}

Dopo l’esecuzione del codice all’interno dell’accoppiata switch e case che ha avuto un riscontro positivo, il programma esce dall’istruzione switch, quindi non continua verificando il prossimo case. Ne consegue che non c’è bisogno di utilizzare la funzione break per interrompere l’esecuzione dopo ogni case.

Si utilizza for-in per scorrere gli elementi di un dizionario, fornendo ad esempio due nomi da utilizzare per ogni coppia chiave-valore.

let numeriInteressanti = [
    “Primi”: [2, 3, 5, 7, 11, 15],
    “Fibonacci”: [1, 1, 2, 3, 5, 8],
    “Quadrati”: [1, 4, 9, 16, 25],
]
var ilPiuGrande = 0
for (kind, numero) in numeriInteressanti {
    for numero in numeri {
        if numero > IlPiùGrande {
           IlPiuGrande= numero
            }
       }
}
IlPiuGrande

Possiamo utilizzare while per ripetere un blocco di codice finché una condizione cambia. La condizione di un ciclo può essere posta alla fine, assicurando che il ciclo stesso venga eseguito interamente almeno una volta.

var n = 3
while n < 150 {
n = n * 3
}
n

var m = 3
do {
m = m * 3
} while m < 150
m

Siamo a pagina 12 di 766 del manuale, continua nella parte 2 di 3 !

VOLETE ESSERE AGGIORNATI TEMPESTIVAMENTE ALL’USCITA DI UN NUOVO CAPITOLO ? BASTA UN LIKE SULLA NOSTRA PAGINA FACEBOOK!)