Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - Runde Klammern

Referenz-Navigation

 

Die runden Klammern werden in FreeBASIC für zwei Sprachkonstrukte verwendet:



Reihenfolge der Abarbeitung der Glieder eines Ausdrucks
Die runden Klammern werden in FreeBASIC wie in jeder mathematischen Gleichung eingesetzt und beeinflussen die Abarbeitung eines Ausdrucks. Dabei gilt, dass zuerst der Wert der Klammer berechnet wird und anschließend alle anderen Operationen in der Reihenfolge ihrer Priorität abgehandelt werden.

Dabei gilt die folgende Hierarchie der Operatoren:

Eine vollständige Liste zur Hierarchie findet sich im Referenzartikel zu den BefehlsreferenzeintragOperatoren.

Dementsprechend kommen folgende Werte zustande:

PRINT (3 + 4) * 5
PRINT -(1 + 1) ^ 2
PRINT (3 * (5 + 1)) + (-2 - (1 * 1))

Ausgabe:

35
-4
 15

Auch in BefehlsreferenzeintragBedingungsstrukturen müssen oft Klammern eingesetzt werden, um bei der Abarbeitung die gewünschte Reihenfolge zu erreichen.

Beispiel:

DIM AS INTEGER a = 4
IF (a < 10 OR a > 20) AND a <> 4 THEN
  PRINT "a liegt im richtigen Bereich."
END IF

' Überprüfen, ob a eine ungerade Zahl ist
IF (a AND 1) = 1 THEN PRINT "a ist ungerade."

SLEEP

Beide Bedingungen sind nicht erfüllt. Würden die Klammern weggelassen, dann wäre die Abarbeitungsreihenfolge eine andere, weshalb beide Bedingungen erfüllt wären.


Indizierung von Arrays
Wie unter BefehlsreferenzeintragDIM beschrieben, kann man sich ein Array als eine Liste bzw. Tabelle vorstellen, in der Werte gespeichert werden. Der Zugriff auf diese Werte erfolgt mittels Indizes, die in Klammern hinter dem Bezeichner des Arrays genannt werden.

Beispiel 1: Dimensionierung (Erstellung) eines Arrays

DIM AS INTEGER myArray(1 TO 10)
'     ^           ^       ^
'     |           |       +-- Anzahl der Elemente
'     |           +---------- Bezeichner des Arrays
'     +---------------------- Datentyp des Arrays

Diese Zeile legt das Verhalten des Arrays im Wesentlichen fest.
Auf die einzelnen Elemente des Arrays wird zugegriffen, indem zuerst der Bezeichner genannt wird, gefolgt vom Index des Elements in Klammern. Dabei gelten dieselben Regeln für den Lese- wie für den Schreibzugriff.

Beispiel 2: Zugriff auf Elemente eines Arrays

DIM AS INTEGER myArray(10)

myArray(5) = 17

PRINT myArray(5)
SLEEP

Bei mehrdimensionalen Arrays werden sowohl bei der Dimensionierung als auch beim Zugriff die Indizes durch Kommata getrennt.

Beispiel 3: Mehrdimensionale Arrays

RANDOMIZE TIMER

SCREENRES 320, 200

DIM AS INTEGER myTable(32, 20)
DIM AS INTEGER x, y

FOR x = 0 TO 32
  FOR y = 0 TO 20
    myTable(x, y) = RND * 255
  NEXT
NEXT

FOR x = 0 TO 32
  FOR y = 0 TO 20
    LINE (x * 10, y * 10) - (x * 10 + 10, _
       y * 10 + 10), myTable(x, y), BF
  NEXT
NEXT

SLEEP

Es ist möglich, ganze Arrays an eine Prozedur zu übergeben. Dazu wird als Parameter der Bezeichner des Arrays übergeben, gefolgt von den runden Klammern, jedoch ohne Angabe von Indizes, aber immer mit Typ.

Beispiel 4: Übergabe eines Arrays an eine Prozedur

RANDOMIZE

DECLARE SUB ShowTable(Table() AS INTEGER)

DIM AS INTEGER myTable(4, 4)
DIM AS INTEGER x, y

FOR x = 0 TO 4
  FOR y = 0 TO 4
    myTable(x, y) = RND * 9
  NEXT
NEXT

ShowTable myTable()
SLEEP

SUB ShowTable(Table() AS INTEGER)
  DIM AS INTEGER x, y, MaxX, MaxY
  MaxX = UBOUND(Table, 1)
  MaxY = UBOUND(Table, 2)

  FOR x = 0 TO MaxX
    FOR y = 0 TO MaxY
      LOCATE y * 2 + 1, x * 3 + 1
      PRINT Table(x, y); "|"
      LOCATE y * 2 + 2, x * 3 + 1
      PRINT "--+"
    NEXT
  NEXT
END SUB

In BefehlsreferenzeintragDECLARE-Zeilen können die Namen der Parameter ausgelassen werden (anonyme Parameter). Wird dabei der Name eines Array-Parameters ausgelassen, müssen dennoch die runden Klammern verwendet werden, um dem Compiler zu signalisieren, dass es sich bei dem anonymen Parameter um ein Array handelt.

Beispiel 5: Anonyme Array-Parameter in DECLARE-Zeilen

Declare Sub foo(() As Integer)

Dim As Integer bar(0 To ...) = {0, 1, 2}
foo(bar())
Sleep

Sub foo(array() As Integer)
  For i As Integer = LBound(array) To UBound(array)
    Print array(i)
  Next
End Sub

Unterschiede zu früheren Versionen von FreeBASIC:
Seit FreeBASIC v0.90 können in DECLARE-Zeilen die Namen von Array-Parametern ausgelassen werden.


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 06.08.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 02.07.2013 von Redakteurnemored gespeichert.
  Versionen Versionen