Array in C

Conosciamo gli array e impariamo a sfruttare le loro potenzialità.

Salvare più di un numero nella stessa variabile

Supponiamo di dover scrivere un programma che chieda in input 3 numeri e stampi la media. Il risultato è il seguente.

#include <stdio.h>

int main(){
    double numero1;
    double numero2;
    double numero3;

    printf("Inserisci il primo numero");
    scanf("%lf",&numero1);

    printf("Inserisci il secondo numero");
    scanf("%lf",&numero2);

    printf("Inserisci il terzo numero");
    scanf("%lf",&numero3);

    double media = (numero1 + numero2 + numero3) / 3;
    printf("Media: %lf",media);

    return 0;
}

Immaginiamo adesso di dover scrivere lo stesso programma ma con 20 numeri in input. Ci rendiamo subito conto che scrivendolo nello stesso modo andremmo ad utilizzare una variabile per ogni numero. E se i numeri in input fossero 1000? Anche qui, come per il tutorial sul while, ci stiamo perdendo qualcosa. Proviamo a scrivere il programma utilizzando gli array:

#include <stdio.h>

int main(){
    //dichiaro un array di 20 elementi
    double numeri[20];

    // finchè i è minore di 20
    // ovvero il numero di elementi dell'array
    int i=0;
    while(i<20){
        //chiedo in input un numero
        //lo assegno ad un elemento dell'array di indice i
        printf("Inserisci il numero %d: ",i);
        scanf("%lf",&numeri[i]);

        // incremento i per inserire il prossimo numero
        i = i + 1;
    }


    double media=0;
    //riparto a contare da 0
    i=0;
    while(i<20){
        // assegno a media la somma di tutti gli elementi dell'array
        media = media + numeri[i];
        // incremento i per ottenere il prossimo elemento
        i = i + 1;
    }

    //divido la somma per il numero di elementi, trovando la media
    media = media / 20;

    printf("Media : %lf",media);

    return 0;
}

Dopo aver inserito con pazienza 20 numeri:

10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 25, 50, 75, 100, 125, 50, 100, 150, 200, 250.

Otteniamo il seguente risultato:

Media: 138.75

Che cos’è un Array?

Un array è una variabile speciale che può contenere più valori dello stesso tipo. Per accedere a questi valori si utilizza il nome della variabile unito al numero di indice tra parentesi quadre.

rappresentazione array C

L’ indice di un array in C comincia da 0 anzichè da 1 e quindi l’ultimo elemento avrà indice pari al numero di elementi – 1.

Come utilizzare un Array?

Un array si utilizza in modo analogo ad una qualsiasi altra variabile: Anch’esso ha un tipo e un nome, ma anzichè contenere un singolo valore ne contiene uno per ogni suo elemento. Per accedere ai diversi elementi di utilizza il numero di indice.

utilizzo array C

Ricordati di non utilizzare numeri di indice minori di 0 o maggiori al numero di elementi – 1. Poichè tali elementi non esistono il tuo programma potrebbe andare in crash.

Stampare il contenuto di un array

Per stampare il contenuto di un array è necessario stampare ogni suo elemento. Il ciclo while può aiutarci ad iterare il suo contenuto.

#include <stdio.h>

int main(){
    int numeri[3];

    numeri[0] = 10;
    numeri[1] = 99;
    numeri[2] = 50;

    printf("Stampa contenuto dell'array: ");

    //scorro l'intero contenuto dell'array
    int i=0;
    while( i < 3 ){
        printf("%d ",numeri[i]);

        //non dimenticare di incrementare i
        //se non incrementi i sarà sempre minore di 3
        //e stamperai il primo elemento dell'array all'infinito
        i = i + 1;
    }

    return 0;
}
Stampa contenuto dell'array: 10 99 50

Grazie al while è possibile scorrere il contenuto di un array di qualsiasi dimensione.

Ecco come un array può aiutarci a semplificare i nostri programmi e ridurre le dimensioni del codice. Nel prossimo tutorial vedremo un’altra tecnica fondamentale per la programmazione.

© Nicola Bovolato 2020