Skip to content
Arrays
step 1/5

Reading — step 1 of 5

Learn

~2 min readSubs, Functions, Arrays

BASIC arrays use DIM with bounds:

DIM nums(10) AS INTEGER          ' 0..10 — 11 elements!
DIM names(1 TO 5) AS STRING      ' 1..5 — 5 elements
DIM matrix(3, 3) AS INTEGER       ' 4x4 (0..3, 0..3)

nums(0) = 100
nums(1) = 200
PRINT nums(0)

Like Pascal, BASIC declares inclusive upper bounds. DIM nums(10) gives 11 elements (0 through 10).

Initialization

Elements default to 0 / 0.0 / "" depending on type. Initialize:

DIM nums(4) AS INTEGER
FOR i AS INTEGER = 0 TO 4
    nums(i) = (i + 1) * 10
NEXT i

Or inline (FreeBASIC):

DIM nums(4) AS INTEGER => {10, 20, 30, 40, 50}

Bounds

LBOUND(nums)        ' 0 — lower bound
UBOUND(nums)        ' 4 — upper bound (NOT length!)
UBOUND(nums) - LBOUND(nums) + 1   ' length

REDIM (resize)

DIM nums() AS INTEGER       ' undimensioned
REDIM nums(9)               ' size 10 (0..9)
REDIM PRESERVE nums(19)     ' grow, keep contents

Without PRESERVE, contents are lost.

Iteration

FOR i AS INTEGER = LBOUND(nums) TO UBOUND(nums)
    PRINT nums(i)
NEXT i

Using LBOUND/UBOUND adapts to any bound choice.

Multi-dim

DIM grid(2, 2) AS INTEGER       ' 3x3
grid(1, 1) = 5
PRINT grid(1, 1)               ' 5

' 3D:
DIM cube(9, 9, 9) AS INTEGER    ' 1000 elements

Common operations (FreeBASIC)

  • ERASE arr — clear (zero out)
  • Sorting requires manual implementation or library

String arrays

DIM names(0 TO 2) AS STRING
names(0) = "Ada"
names(1) = "Bob"
names(2) = "Carol"

FOR i AS INTEGER = 0 TO UBOUND(names)
    PRINT names(i)
NEXT i

Splitting strings

DIM text AS STRING
LINE INPUT "", text

DIM parts(0 TO 100) AS STRING
DIM count AS INTEGER = 0
DIM start AS INTEGER = 1
DIM idx AS INTEGER

DO
    idx = INSTR(start, text, " ")
    IF idx = 0 THEN
        parts(count) = MID(text, start)
        count += 1
        EXIT DO
    END IF
    parts(count) = MID(text, start, idx - start)
    count += 1
    start = idx + 1
LOOP

FOR i AS INTEGER = 0 TO count - 1
    PRINT parts(i)
NEXT i

Manual; FreeBASIC has no built-in SPLIT function. The INSTR and MID functions are your tools.

Discussion

Ask a question, share an insight, or help someone who’s stuck.

Sign in to post a comment or reply.

Loading…