Programmazione per computer - Array

Considera una situazione in cui dobbiamo memorizzare cinque numeri interi. Se usiamo i concetti di variabile semplice e tipo di dati di programmazione, allora abbiamo bisogno di cinque variabili diint tipo di dati e il programma sarà il seguente:

#include <stdio.h>

int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     

   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

Era semplice, perché dovevamo memorizzare solo cinque numeri interi. Supponiamo ora di dover memorizzare 5000 numeri interi. Useremo 5000 variabili?

Per gestire tali situazioni, quasi tutti i linguaggi di programmazione forniscono un concetto chiamato array. Un array è una struttura di dati che può memorizzare una raccolta di dimensioni fisse di elementi dello stesso tipo di dati. Un array viene utilizzato per memorizzare una raccolta di dati, ma spesso è più utile pensare a un array come una raccolta di variabili dello stesso tipo.

Invece di dichiarare singole variabili, come numero1, numero2, ..., numero99, devi solo dichiarare una variabile di matrice numberdi tipo intero e utilizzare numero1 [0], numero1 [1] e ..., numero1 [99] per rappresentare le singole variabili. Qui, 0, 1, 2, ..... 99 sonoindex Associato a var variabile e vengono utilizzati per rappresentare i singoli elementi disponibili nell'array.

Tutti gli array sono costituiti da posizioni di memoria contigue. L'indirizzo più basso corrisponde al primo elemento e l'indirizzo più alto all'ultimo elemento.

Crea array

Per creare una variabile di matrice in C, un programmatore specifica il tipo di elementi e il numero di elementi da memorizzare in tale matrice. Di seguito è riportata una semplice sintassi per creare un array nella programmazione C -

type arrayName [ arraySize ];

Questo è chiamato array unidimensionale . IlarraySize deve essere una costante intera maggiore di zero e typepuò essere qualsiasi tipo di dati C valido. Ad esempio, ora per dichiarare un array di 10 elementi chiamatonumber di tipo int, usa questa dichiarazione -

int number[10];

In questo caso, numero è un array di variabili, sufficiente a contenere fino a 10 numeri interi.

Inizializzazione degli array

È possibile inizializzare un array in C uno per uno o utilizzando una singola istruzione come segue:

int number[5] = {10, 20, 30, 40, 50};

Il numero di valori tra parentesi graffe {} non può essere maggiore del numero di elementi dichiarati per l'array tra parentesi quadre [].

Se ometti la dimensione dell'array, viene creato un array abbastanza grande da contenere l'inizializzazione. Pertanto, se scrivi -

int number[] = {10, 20, 30, 40, 50};

Creerai esattamente lo stesso array che hai fatto nell'esempio precedente. Di seguito è riportato un esempio per assegnare un singolo elemento dell'array:

number[4] = 50;

L'istruzione sopra assegna all'elemento numero 5 nell'array un valore di 50. Tutti gli array hanno 0 come indice del loro primo elemento che è anche chiamato indice di base e l'ultimo indice di un array sarà la dimensione totale dell'array meno 1. L'immagine seguente mostra la rappresentazione pittorica della matrice di cui abbiamo discusso sopra:

Accesso agli elementi dell'array

Si accede a un elemento indicizzando il nome dell'array. Questo viene fatto inserendo l'indice dell'elemento tra parentesi quadre dopo il nome dell'array. Ad esempio:

int var = number[9];

L'istruzione precedente prenderà il decimo elemento dall'array e assegnerà il valore a varvariabile. L'esempio seguente utilizza tutti i tre concetti sopra menzionati, vale a dire. creazione, assegnazione e accesso agli array -

#include <stdio.h>
 
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
 
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
	
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
	
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   
   return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Array in Java

Di seguito è riportato il programma equivalente scritto in Java. Java supporta gli array, ma c'è una piccola differenza nel modo in cui vengono creati in Java utilizzando l'estensionenew operatore.

Puoi provare ad eseguire il seguente programma per vedere l'output, che deve essere identico al risultato generato dall'esempio C sopra.

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      
      while( i < 10 ) {
		
         number[ i ] = i + 100;
         i = i + 1;
      }

      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

Quando il programma di cui sopra viene eseguito, produce il seguente risultato:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Array (elenchi) in Python

Python non ha un concetto di Array, invece Python fornisce un'altra struttura dati chiamata list, che fornisce funzionalità simili a quelle degli array in qualsiasi altra lingua.

Di seguito è riportato il programma equivalente scritto in Python:

# Following defines an empty list.
number = []
i = 0

while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1

i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

Quando il programma di cui sopra viene eseguito, produce il seguente risultato:

number[ 0 ] =  100
number[ 1 ] =  101
number[ 2 ] =  102
number[ 3 ] =  103
number[ 4 ] =  104
number[ 5 ] =  105
number[ 6 ] =  106
number[ 7 ] =  107
number[ 8 ] =  108
number[ 9 ] =  109