Problem

1/10

Matrici (elenchi). introduzione

Theory Click to read/hide

Archiviazione dati

Diciamo che hai sviluppato un gioco per computer chiamato "User Hostile" in cui i giocatori competono contro un'interfaccia computer intricata e ostile. Ora devi scrivere un programma che tenga traccia delle vendite mensili di questo gioco per un periodo di cinque anni. Oppure diciamo che devi fare l'inventario delle carte collezionabili di Hacker Hero.
Molto presto arriverai alla conclusione che hai bisogno di qualcosa di più dei semplici tipi di dati di base per archiviare ed elaborare le informazioni.
 

Array (elenchi). Introduzione

Per facilitare il lavoro con una grande quantità di dati, a un gruppo di celle viene assegnato un nome comune. Tale gruppo di celle è chiamato array
Array – è un gruppo di celle di memoria dello stesso tipo, poste una accanto all'altra e aventi un nome comune. Ogni cella del gruppo ha un numero univoco.

Quando lavori con gli array, devi imparare a risolvere tre compiti:
X allocare memoria della dimensione richiesta per un array
X scrivere i dati nella cella desiderata
X leggere i dati dalla cella


Array in Pascal


Tradizionalmente Pascal utilizza array statici come

var a: array [1..10] di intero;

I limiti di un array devono essere impostati da costanti e non è possibile modificare la dimensione di un array durante l'esecuzione del programma. Ma puoi creare un indice non solo di un numero intero, ma anche, diciamo, di un carattere o di un tipo enumerato. Ad esempio, per contare l'occorrenza di ogni lettera, puoi utilizzare un array

var LettersCount: array ['a'..'z'] di intero;

e lavoraci a tuo piacimento:

LettersCount['z'] := 1;
LettersCount['d'] := LettersCount['d'] + 1;

Gli svantaggi di tali array sono noti: se non si sa in anticipo quanti elementi dovranno essere utilizzati, allora viene allocata la dimensione massima della memoria per l'array. Di conseguenza, nella maggior parte dei casi "facciamo scorta per il futuro" e talvolta questa "riserva" risulta non essere sufficiente. Ecco perché tali array sono chiamati  statici: la loro dimensione è statica e deve essere impostata in fase di compilazione del programma. Tuttavia, in Pascal ci sono  array dinamici, la cui dimensione non solo può essere impostata, ma anche modificata nel corso del programma. Sono questi array e i vantaggi del loro utilizzo che verranno discussi ulteriormente.

Creazione di un array

Quando si crea un array, lo spazio viene allocato in memoria (un certo numero di celle)
1) Gli array possono essere creato semplicemente elencando gli elementi:
var a: matrice di numeri interi;
ImpostaLunghezza(a, 3);
a[0] := 1;
a[1] := 2;
a[2] := 3;

2) Gli array possono essere composti da dati di qualsiasi tipo: numeri interi o reali, stringhe di caratteri 
var a: matrice di char;
ImpostaLunghezza(a, 3);
a[0] := 'a';
a[1] := 'b';
a[2] := 'c';
3) Un array "sa" sempre la tua taglia. La funzione  length viene utilizzata per determinare la dimensione di un array. Spesso la dimensione dell'array è memorizzata in una variabile separata in modo che il programma possa essere facilmente modificato per lavorare con una diversa dimensione dell'array. Esempio:
N := 10; // nella variabile N memorizziamo la dimensione dell'array
ImpostaLunghezza(a, N); // imposta l'array e la dimensione N
writeln(lunghezza(a)); //visualizza la dimensione dell'array
La dimensione di un array può essere impostata dalla tastiera.

Problem

Modificare il programma in modo tale che nella quinta riga venga inserito da tastiera il valore della variabile N, e nella sesta riga venga creato un array di dimensione N (i valori degli elementi dell'array possono essere qualsiasi)