PDA

Visualizza la versione completa : [Pascal] Curiosità: array dinamici, è possibile?


LeleFT
13-05-2004, 00:05
Ciao a tutti.
Ho una curiosità da soddisfare: è possibile in Pascal creare array di dimensioni non prefissate, ma dimensionabili "a runtime"?

Io ho provato anche ad "ingannare" il compilatore, usando una unit costruita ad hoc, ma senza risultati.

La unit era questa:


unit nome;

interface

var n : integer;

implementation

begin
Writeln('introduci valore: ');
Readln(n);
end.

Questo doveva servire per "scavalcare il problema", avendo una Unit che viene inizializzata prima dell'avvio del programma, che istanzia, quindi, la variabile che doveva permettere la creazione dell'array (visto che il programma la vede come un'informazione esterna).

Ovviamente non funziona. :gren:

Se non si vogliono implementare delle liste con i puntatori, è possibile creare un array con dimensione non costante?


Ciao. :ciauz:

alka
13-05-2004, 02:59
Non ho ben capito il significato del codice che hai scritto, ad ogni modo non ricordo se il Pascal standard supporta gli array dinamici.

In Delphi è possibile implementarli attraverso una dichiarazione di questo tipo:


var
a: array of Integer;

Si tratta comunque di una struttura dati particolare, gestita dal compilatore.

La dimensione del vettore può essere reimpostata richiamando SetLength:


SetLength(a, 10);


Se in Pascal non viene accettato questo tipo di dato, credo che l'unica tua possibilità sia quella di implementare autonomamente l'allocazione di record (usando New e Dispose) che contengano il valore da inserire in lista e l'indirizzo dell'elemento successivo.

Ciao! :ciauz:

LeleFT
13-05-2004, 12:23
Infatti, come supponevo, non è possibile. Il compilatore non accetta quel tipo di dato. Vabbè... era solo una curiosità.

Per il codice che ho scritto io, ho solo creato una Unit che mette a disposizione una variabile 'n', la quale viene inizializzata al momento dell'inizializzazione della unit. Ma ovviamente il compilatore non me lo accetta.


Ciao. :ciauz:

Loading