Istruzioni avanzate in C: for, do while e switch

Esistono altri controlli oltre all’if e al while, creati apposta per delle situazioni particolari. Vediamoli insieme.

Istruzione For

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.

rappresentazione istruzione for

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.

Istruzione Do 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.

rappresentazione istruzione do while

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.

Istruzione Switch

Lo switch ci permette di gestire condizioni multiple e può sostituire una serie di if, else if.

rappresentazione istruzione switch

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