Il costrutto if-else
Objective-C supporta il costrutto if-else con la sintassi classica del C. Ecco un esempio:
if (anInt > 0) {
NSLog(@"%d is greater than zero", anInt);
} else {
NSLog(@"%d is not greater than zero", anInt);
}
Il comando if
viene seguito da un’espressione booleana racchiusa obbligatoriamente da parentesi tonde. Nel caso in cui la condizione sia vera, allora viene eseguito il codice all’interno del primo blocco di parentesi graffe.
Se viene fornito un blocco else
, esso viene eseguito nel caso in cui l’espressione booleana viene valutata come falsa.
Come avviene in C ed altri linguaggi simili, le parentesi graffe che racchiudono i blocchi di codice che seguono i comandi if
e else
possono essere omesse se contengono una sola istruzione:
if (anInt > 0)
NSLog(@"%d is greater than zero", anInt);
else
NSLog(@"%d is not greater than zero", anInt);
Il ciclo for
Anche il costrutto for
classico fornito da C è disponibile in Objective-C. La sintassi segue la seguente struttura:
for (DEFINIZIONE VARIABILI LOCALI; CONDIZIONI; ESPRESSIONE ESEGUITA AL TERMINE DEL CICLO) {
ISTRUZIONI DA ESEGUIRE PER OGNI CICLO
}
Ecco un esempio dove stampiamo tutti gli interi da 0 ad un valore pari al risultato dell'espressione anInt - 1
:
for (int i = 0; i < anInt; i++) {
NSLog(@"%d", i);
}
Il costrutto for ... in
Per iterare gli elementi in una collection (come ad esempio NSArray
, che vedremo in seguito) Objective-C 2.0 ha introdotto il costrutto for in.
Per capire come funziona, anticipiamo la definizione di un NSArray
contenente 3 stringhe:
NSArray * fruits = @[@"Apple", @"Orange", @"Kiwi"];
Possiamo stampare tutti gli elementi dell'array fruits
scrivendo quanto segue:
for (NSString * fruit in fruits) {
NSLog(@"%@", fruit);
}
L'ouput sarà il seguente:
Apple
Orange
Kiwi
Il ciclo while
Objective-C eredita da C anche il ciclo while
, parola chiave che va seguita da un’espressione booleana tra parentesi tonde.
Finché l’espressione sarà vera, verrà eseguito il corpo del ciclo while
, ovvero il codice tra parentesi graffe.
NSArray * fruits = @[@"Apple", @"Orange", @"Kiwi"];
int index = 0;
while (index < fruits.count) {
NSLog(@"%@", fruits[index]);
index++;
}
Nel caso in cui il corpo del ciclo while
contenesse una sola istruzione, anche in questo caso possiamo omettere le parentesi graffe.
Il ciclo do while
Questa variante del ciclo while
visto in precedenza esegue sempre almeno una volta le istruzioni contenute nel corpo del do
, anche nel caso in cui la condizione che segue la parola chiave while
sia falsa.
do {
NSLog(@"%@", fruits[index]);
index++;
} while (index < fruits.count);