Zum Inhalt springen

FreeBasic: Arrays

Aus Wikibooks


Was ist ein Array?

[Bearbeiten]

Ein Array ist ein "Feld" Variablen. Gut und was heißt das jetzt? Das bedeutet, dass man viele Variablen in einer Variablen erzeugt. Aha, und was ist jetzt so toll daran? Man sieht es im folgenden Beispiel:

dim a as integer
dim b as integer
dim c as integer
dim x as integer
dim y as integer
dim s as integer

print a
print b
print c
print x
print y
print s
sleep

So könnte man es zwar machen, aber so ist das ganze viel besser:

dim a(1 to 6) as integer
dim i as integer
for i = 1 to 6
  print a(i)
next
sleep

Zugegeben, mit sechs Variablen nicht sehr sinnvoll, aber was, wenn es hunderte sind die alle zusammengehören? Daran sieht man die Vorteile eines Arrays. Ein Array ist also ein Feld mit Variablen.

Mehrdimensionale Arrays

[Bearbeiten]

Wenn man aus logischen Gründen die "Adresse" eines Arrayeintrags aus zwei Zahlen bestehen lassen will, zum Beispiel bei einem Koordinatensystem, kann man mehrdimensionale Arrays erzeugen:

dim a(1 to 6, 1 to 6) as integer

Das bedeutet, man spricht den Array über zwei Zahlen an, im oben genannten Beispiel also Länge und Breite. Man erstellt damit einen Array Array. Verwirrt? Es kommt noch besser. Man kann so viele Dimensionen erstellen wie man will. Also bei drei Dimensionen einen Array Array Array. Die Anwendungszwecke für achtdimensionale Arrays sind natürlich etwas begrenzt.

Dynamische Arrays

[Bearbeiten]

Ein dynamischer Array ist ein Array der seine Größe ändern kann. Solch ein Array wird so definiert:

redim arrayname(0 to 20) as integer

So jetzt hat man ein paar dynamische Arrays und wie benutzt man sie jetzt? So ändert man die Größe:

dim arrayname(0 to 8) as integer
redim [preserve] arrayname(20) as integer

Die Größe wird von 9 auf 20 geändert. Solch ein Array ist zum Beispiel beim Einlesen von Dateien nützlich. Preserve ist hier eingeklammert. Wenn man Preserve setzt bleiben bei einer Größenänderung alle früheren Elemente erhalten. Ohne Preserve ist das nicht der Fall.
Noch etwas wichtiges. Der dynamische Array muss aus dem Speicher gelöscht werden wenn er nicht mehr gebraucht wird, sonst kommt es zu Speicherlecks:

dim arrayname(0 to 8) as integer
redim [preserve] arrayname(20) as integer
erase arrayname

Es mag zwar nicht so aussehen, aber man sollte wirklich einen Array sobald man ihn nicht mehr braucht löschen.