Esistono altri controlli oltre all’if e al while, creati apposta per delle situazioni particolari. Vediamoli insieme.
L’istruzione for ci permette di iterare per un determinato numero di volte una porzione di codice. Questo può rivelarsi utile per stampare il contenuto di un array.
Vediamo subito un esempio pratico:
#include <stdio.h>
int main(){
int arr[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
//Utilizzo un for per stampare il contenuto dell'array
for( int i = 0 ; i < 5 ; i = i + 1){
printf("%d \n",arr[i]);
}
}
Eseguendo il programma otteniamo il seguente output:
1
2
3
4
5
for ci permette quindi di iterare un array in meno righe di un while.
Il do while ci permette di eseguire un istruzione prima di fare il controllo. Questo può esserci utile ad esempio per gestire un input.
Chiariamoci le idee con un programma di esempio:
#include <stdio.h>
int main(){
int numero = 0;
//Verifico il valore di numero più avanti ed eseguo comunque il codice
do{
//Ripeto finchè il numero inserito non è maggiore di 0
printf("Inserisci un numero maggiore di 0: ");
scanf("%d",&numero);
} while(numero > 0);
printf("Hai inserito %d",numero);
}
Se eseguiamo il programma riceviamo subito il seguente output:
Inserisci un numero maggiore di 0: _
Questo perché il do while fa il controllo dopo aver eseguito una volta il codice.
Lo switch ci permette di gestire condizioni multiple e può sostituire una serie di if, else if.
Scriviamo un programma d’esempio: una calcolatrice con menù.
#include <stdio.h>
int main(){
double n1,n2;
int selezione;
double risultato;
printf("Inserisci il primo numero: ");
scanf("%2f",&n1);
printf("Inserisci il secondo numero: ");
scanf("%2f",&n2);
//Stampo un menù
printf("SELEZIONA UN' OPERAZIONE: \n");
printf(" 1) ADDIZIONE \n");
printf(" 2) SOTTRAZIONE \n");
printf(" 3) MOLTIPLICAZIONE \n");
printf(" 4) DIVISIONE \n");
scanf("%d",&selezione);
switch( selezione ){
//ADDIZIONE
case 1:
risultato = n1 + n2;
printf("Risultato: %d",risultato);
break;
//SOTTRAZIONE
case 2:
risultato = n1 - n2;
printf("Risultato: %d",risultato);
break;
//MOLTIPLICAZIONE
case 3:
risultato = n1 * n2;
printf("Risultato: %d",risultato);
break;
//DIVISIONE
case 4:
risultato = n1 / n2;
printf("Risultato: %d",risultato);
break;
//NESSUNA DELLE PRECEDENTI
default:
printf("Selezione non riconosciuta");
break;
}
return 0;
}
A seconda del valore di selezione, lo switch selezionerà una porzione di codice da eseguire. Inserendo i numeri 10, 20 e 2 otterremo il seguente risultato.
Risultato: -10