DIM Array()
Liberty BASIC ondersteunt enkelvoudige en dubbele gedimensioneerde arrays (reeksen).
Deze kunnen als string of numerieke series worden gedefinieerd.
De omvang van de afmetingen kan meer dan 2 miljoen elementen zijn,
zolang er maar genoeg RAM beschikbare is.
Alle arrays die meer dan 10 elementen bevatten moeten worden gedimensioneerd
alvorens zij kunnen worden gebruikt. Arrays worden met het DIM statement gedimensioneerd.
DIM students$(20)
DIM ages(100)
Het opnieuw vaststellen van de omvang van een array wordt gedaan met het REDIM statement,
maar daarmee wordt de inhoud van de array eerst gewist.
REDIM students$(30)
Dubbel gedimensioneerde arrays moeten altijd vóór het gebruik met het
DIM statement gedimensioneerd worden.
DIM scores$(20, 10)
Het is gelijk teken (=) wordt gebruikt om een waarde aan een element uit een array
toe te wijzen. Het element wordt bepaald door zijn indexgetal.
De index kan als letterlijk getal of als numerieke variabele worden uitgedrukt.
In het volgende voorbeeld wordt het element met index 2 gevuld met "John."
Het element met index 7 wordt gevuld met getal 12.
students$(2) = "John"
ages(7) = 12
De arrays kunnen op de meeste plaatsen worden gebruikt waar een variabele
of letterlijke waarde kan worden gebruikt. Om tot de waarde van een element
in een array toegang te krijgen, wordt de index voor dat element geplaatst binnen haakjes.
In dit voorbeeld, wordt de waarde bij index 4 teruggewonnen uit de array:
thisKid$ = students$(4)
or
print students$(4)
Het gebruik van arrays in lussen (loops).
Één van de grote voordelen van arrays is dat we ze in een loop kunnen benaderen,
zoals in het volgende voorbeeld wordt getoond,
waarin de namen van elementen 1 - 30 uit een array worden geprint.
for i = 1 to 30
print students$(i)
next
Input naar arrays
In vroegere versies van Liberty BASIC, was het niet mogelijk om direct in arrays gegevens
in te voeren. Die beperking bestaat niet meer in Liberty BASIC 3.
Het is nu mogelijk om zowel INPUT als LINEINPUT te gebruiken om gegevens
uit geopende bestanden direct in te lezen in arrays.
'now works:
open "myfile.dat" for input as #f
input #f, itemArray$(1)
close #f
Het is echter nog steeds noodzakelijk met het commando READ eerst de gegevens
in variabele in te lezen, en pas daarna een serie element ermee in te vullen:
'wrong:
read numericArray(1)
'correct:
read num1
numericArray(1) = num1
For more, see ARRAYS, DIM, SORT, and Sorting Arrays.
DIM array(size) -or- DIM array(size, size)
DIM array1(size1), array2(size2), array3(size3), etc.
Beschrijving:
DIM zet de maximumgrootte van een array (serie).
Het maakt qua grootte niets uit, elke array kan worden gedimensioneerd
zolang het geheugen dat toelaat. Als een array niet uitdrukkelijk wordt gedimensioneerd,
dan zal de array (reeks) tot 11 elementen, 0 tot 10 beperkt zijn.
De niet gedimensioneerde tweevoudige arrays zullen tot 100 elementen 0 tot 9 bij 0 tot 9
worden beperkt. Het DIM statement kan op één regel staan waarin
meerderde arrays gedimensioneerd worden, zolang die maar door komma's worden gescheiden.
Gebruik:
'Example 1
print "Please enter 10 names."
for index = 0 to 10
input names$ : name$(index) = name$
next index
'Example 2
'Dimension three arrays at once
dim arrayOne(100), arrayTwo$(100, 5), arrayThree(100, 100)
In het voorbeeld hierboven wordt de FOR. . . NEXT loop beperkt tot een maximumwaarde
van 10 omdat de array names$ () niet wordt gedimensioneerd,
en daarom beperkt is tot 11 genummerde elementen, 0 - 10. Om dit probleem te verhelpen,
voeg een DIM statement, zoals in het voorbeeld hieronder toe.
Merk op dat het niet noodzakelijk is om alle beschikbare indexgetallen te gebruiken.
In het voorbeeld wordt de array gevuld vanaf index 1, en wordt index 0 genegeerd.
dim names$(20)
print "Please enter 20 names."
for index = 1 to 20
input names$ : names$(index) = name$
next index
Arrays met een dubbele subscript kunnen informatie flexibel opslaan:
dim customerInfo$(10, 5)
print "Please enter information for 10 customers."
for index = 0 to 9
input "Customer name >"; info$ : customerInfo$(index, 0) = info$
input "Address >"; info$ : customerInfo$(index, 1) = info$
input "City >"; info$ : customerInfo$(index, 2) = info$
input "State >"; info$ : customerInfo$(index, 3) = info$
input "Zip >"; info$ : customerInfo$(index, 4) = info$
next index