FreeBASIC

FreeBASIC
FreeBASIC
FreeBASIC Logo
Basisdaten
Entwickler Quelloffen (Open Source)
Aktuelle Version 0.23
(7. August 2011)
Betriebssystem Windows, Linux, DOS und FreeBSD (letzteres nur eingeschränkt)
Kategorie Compiler
Lizenz GPL/LGPL
Deutschsprachig nein
www.freebasic.net

FreeBASIC (kurz FB) ist ein kostenloser Open-Source-Compiler, dessen Syntax auf Microsoft QuickBASIC aufbaut. Er ermöglicht das Erzeugen von 32-Bit-Anwendungsprogrammen, Spielen etc. für Microsoft Windows, Linux, FreeBSD und DOS, teilweise auch für die Xbox. Versionen für weitere Betriebssysteme sind geplant.

Bibliotheken, die C-kompatibel sind, können direkt in FreeBASIC verwendet werden, aber auch C++ Bibliotheken können teilweise verwendet werden. So können beispielsweise GTK+, GSL, SDL, Allegro, Lua oder OpenGL genutzt werden und mit jeder neuen Version steigert sich die Anzahl der unterstützten Bibliotheken.

Die erste Version wurde im November 2004 veröffentlicht, die neueste Version ist Version 0.23 vom 7. August 2011.

Inhaltsverzeichnis

Merkmale

  • Der FreeBASIC-Compiler ("FBC") erzeugt lediglich Assembler-Code, welcher mithilfe der GCC-Suite compiliert und gelinkt wird. Durch dieses Verfahren können Importbibliotheken von der GCC-Suite direkt übernommen werden. Durch dieses Backend können ausführbare Binarys kleiner Größe für Windows, DOS und Linux erzeugt werden. Aktuell ist ein weiteres Backend in der Entwicklung, welches C-Code (auf Basis des GCC) erzeugt. Dieses soll eine portable und schnelle Alternative zum Assembler-Backend bieten.
  • Inline-Assembler
  • Pointer auf Variablen und Funktionen
  • Überladen von Funktionen, Subroutinen (Funktionen ohne Rückgabe) und Operatoren. Außerdem können Funktionen und Subroutinen mit optionalen Parametern erstellt werden.
  • Im Gegensatz zum DOS-basierten QuickBasic kann man auf fast alle Funktionen zurückgreifen, die heutige Programmierer nutzen, wie zum Beispiel die WinAPI und andere Bibliotheken.
  • Alle Funktionen (u. a. Dateizugriff, Stringhandling, etc.) der Laufzeitbibliothek, sowie sämtliche internen Grafikbefehle sind plattformunabhängig, d. h. können auf Windows, Linux und DOS gleichermaßen verwendet werden. Das ermöglicht das einfache Schreiben plattformunabhängiger Anwendungen.
  • Bindings für viele populäre Bibliotheken, u. a. OpenGL oder DirectX.
  • Shorthands, Makros u. ä., die dem Programmierer einige Tipparbeit abnehmen
  • Inzwischen ist es möglich, Objekte zu erstellen, jedoch sind einige Elemente der Objektorientierung (z. B. Polymorphie) in den stabilen Versionen noch nicht enthalten.

Syntax

Es existieren derzeit über 400 Schlüsselwörter, die z. T. auf mehrerlei Art und Weise verwendet werden können. Generell werden drei Arten von Schlüsselwörtern unterschieden:[1]

  • Anweisungen: Anweisungen erfüllen eine bestimmte Aufgabe, etwa die Ausgabe von Text auf dem Bildschirm.
  • Funktionen: Sie zeichnen sich dadurch aus, dass nach ihrem Aufruf ein Wert zur Verfügung gestellt wird, der das Ergebnis des Funktionsaufrufs darstellt. Dabei kann der Wert den einzigen Sinn der Funktion darstellen (etwa bei mathematischen Funktionen wie LOG), oder nur über den Status des Funktionsaufrufs informieren (Funktionen mit Anweisungscharakter, wie GETMOUSE; diese Funktion fragt den Status der Maus ab, und gibt eine Zahl zurück, die bestätigt, dass die Abfrage erfolgreich war, oder ob dabei ein Fehler aufgetreten ist.)
  • Klauseln: Sie beeinflussen das Verhalten von Anweisungen und Funktionen, und können losgelöst von diesen nicht verwendet werden.

Die Groß/Kleinschreibung ist dabei, wie bei BASIC üblich, ohne Bedeutung. „GetMouse“ und „GETMOUSE“ werden vom Compiler gleich behandelt.

Variablen

Beim Umgang mit Werten (Zahlen, Zeichenketten, oder sonstige Arten von Informationen) werden Variablen und Konstanten verwendet, STRING-Variablen (Zeichenketten) werden in doppelte Anführungszeichen «"» gesetzt. Wird dem String ein «!» vorangestellt, können auch Escape-Sequenzen benutzt werden (z. B. Print !"Hello\nWorld" – erzeugt einen Zeilenumbruch zwischen «Hello» und «World»). Mit diesen Variablen und Konstanten kann über verschiedene Operatoren gearbeitet werden. Bei Zahlen-Variablen stehen etwa verschiedene mathematische Operatoren zur Verfügung (+, −, *, /, LOG, EXP, SIN, ASIN, …). Bei STRINGs hingegen ist die Auswahl der Operatoren eingeschränkt, möglich ist nur die Verkettung (+ oder &) sowie die Indizierung (mittels eckiger Klammern).

Funktionen und Subroutinen

Ebenso ist es möglich, innerhalb eines Programmes eigene Befehle zu erstellen, die aus einer Aneinanderreihung bestehender Befehle bestehen. Ein solcher eigener Befehl kann eine SUB (Abkürzung für Subroutine) sein, die sich wie eine Anweisung verhält, oder eine FUNCTION, die ebenso wie FreeBASICs eigene Funktionen einen Wert zurückgeben kann. Beide können mit Parametern arbeiten, die auch optional sein dürfen. Es werden auch variable Parameterlisten analog zu C unterstützt[2].

Im Gegensatz zu vielen anderen Sprachen werden Programmbefehle nicht mit einem Semikolon abgeschlossen, sondern mit einem Zeilenumbruch wie auch in QBasic. Möchte man einen Befehl über mehrere Zeilen ausdehnen, muss am Ende jeder Zeile, die den Befehl nicht beendet, ein Fußstrich geschrieben werden:

PRINT "Hallo, dieser String" + _
" ist ein einzelner String."

Mehrere Befehle können ohne Zeilenumbruch durch einen Doppelpunkt aneinander gereiht werden:

PRINT "Hallo, dieser String": PRINT " ist ein einzelner String."

Ein weiterer Unterschied zu anderen Sprachen ist, dass bei Aufrufen von Subroutinen die Klammersetzung optional ist, da man eine Subroutine sowohl mit Subroutine(Parameter) als auch mit Subroutine Parameter aufrufen kann. Diese Eigenschaft ist ebenfalls von QBasic abgeleitet. Jedoch ist dies nicht bei Funktionen möglich, dort müssen immer Klammern gesetzt werden.

Code-Beispiele

Hallo Welt

Ein einfaches Hallo-Welt-Programm in FreeBASIC sieht so aus:

PRINT "Hallo Welt!"
SLEEP
  • PRINT ist hierbei eine Anweisung, die bewirkt, dass ein Text auf dem Bildschirm ausgegeben wird.
  • "Hallo Welt!" ist hierbei ein Parameter; in diesem Fall wird also Hallo Welt! auf dem Bildschirm ausgegeben.
  • Der SLEEP-Befehl[3] wird nicht benötigt. Er wird nur benutzt, um zu verhindern, dass sich das Ausgabefenster der Anwendung automatisch schließt, wenn diese nicht aus der Konsole gestartet wurde.

Objektorientierte Programmierung

'Vektorklasse
Type Vector
        W as Integer
        H as Integer
        Declare Constructor (nW as Integer, nH as Integer)
End Type
 
Constructor Vector (nW as Integer, nH as Integer)
        W = nW
        H = nH
End Constructor
 
'Klasse zur Erstellung eines Objekts
Type Object
        Private:
                X as Integer
                Y as Integer
                Movement as Vector Pointer
        Public:
                'Öffentliche Methoden inklusive eines Konstruktors und eines Destruktors
                Declare Constructor (nX as Integer, nY as Integer)
                Declare Destructor ()
                Declare Sub SetMotion (Motion as Vector Pointer)
                Declare Sub Move ()
                Declare Property GetX as Integer
End Type
 
'Initialwerte setzen
Constructor Object (nX as Integer, nY as Integer)
        X = nX
        Y = nY
End Constructor
 
'Allozierten Speicher freigeben
Destructor Object ()
        delete Movement
End Destructor
 
'Bewegungsvektor setzen
Sub Object.SetMotion (Motion as Vector Pointer)
        Movement = Motion
End Sub
 
'Das Objekt anhand seines Bewegungsvektors bewegen
Sub Object.Move ()
        X += Movement->W
        Y += Movement->H
End Sub
 
'Rückgabe von X, welches sonst nicht zugänglich wäre
Property Object.GetX as Integer
        Return X
End Property
 
'Hier beginnt das eigentliche Programm
 
'Eine neue Instanz von 'Object' an den Koordinaten 100, 100 erstellen
Dim Player as Object = Type<Object>(100, 100)
 
'Ein neues Vektorobjekt dynamisch allozieren und dessen Position um 10 nach links und 5 nach unten verschieben
Player.SetMotion(new Vector (-10, 5))
 
'Die Position von 'Player' aktualisieren
Player.Move()
 
'Den neuen Wert von X (90) anzeigen
Print Player.GetX
 
'Weil 'Player' eine lokale Variable ist, wird sein Destruktor am Ende des Scopes automatisch aufgerufen
 
'Vor Programmende auf Tastendruck warten
Sleep

IDE

FBIde

FBIde in der Version 0.4.6

Mit FBIde gibt es eine eigene IDE für FreeBASIC. Die aktuelle Version ist 0.4.6r3.[4]

FBEdit

Mehr Möglichkeiten bietet der FreeBASIC-Editor, kurz FBEdit. Es gibt ein eigenes Interface zur Gestaltung von Dialogen mithilfe von Ressourcendateien und der Windows-API. Die Aktuelle Version ist 1.0.7.6c vom 6. Juli 2010.

Weblinks

Wikibooks Wikibooks: FreeBasic – Lern- und Lehrmaterialien
Wikiversity Wikiversity: Kurs:FreeBASIC – Kursmaterialien, Forschungsprojekte und wissenschaftlicher Austausch
 Commons: FreeBASIC – Album mit Bildern und/oder Videos und Audiodateien

Einzelnachweise

  1. http://www.freebasic-portal.de/befehlsreferenz/ Weblinks: Online-Befehlsreferenz
  2. http://www.freebasic-portal.de/befehlsreferenz/auslassung-ellipsis-556.html Ellipsis in der deutschsprachigen Befehlsreferenz
  3. http://www.freebasic-portal.de/befehlsreferenz/sleep-400.html
  4. http://fbide.freebasic.net/

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • FreeBasic — Basisdaten Entwickler: Quelloffen (Open Source) Aktuelle Version …   Deutsch Wikipedia

  • Freebasic — Basisdaten Entwickler: Quelloffen (Open Source) Aktuelle Version …   Deutsch Wikipedia

  • FreeBASIC — Семантика: мультипарадигменный: процедурное программирование Появился в: 2004 Автор(ы): The FreeBASIC Development Team Типизация данных …   Википедия

  • FreeBASIC — est un compilateur de langage BASIC pour les plateformes DOS, Linux et Windows. Il est placé sous licence publique générale GNU et permet de créer des exécutables 32 bits dans des modes graphiques haute résolution basés sur une bibliothèque… …   Wikipédia en Français

  • FreeBasic — est un compilateur de langage BASIC pour les plateformes DOS, Linux et Windows. Il est placé sous licence publique générale GNU et permet de créer des exécutables 32 bits dans des modes graphiques haute résolution basés sur une bibliothèque… …   Wikipédia en Français

  • FreeBASIC — Desarrollador(es) Equipo de desarrollo de FreeBASIC http://www.freebasic.net Información general Paradigma Procedural, orientado a objetos …   Wikipedia Español

  • FreeBASIC — es un compilador gratuito, de fuente abierta (licencia GPL), de 32 bits del lenguaje BASIC. Se diseñó para ser compatible en sintaxis con QuickBASIC, aportando nuevas capacidades . Puede compilarse para DOS, Microsoft Windows, Linux, y XBOX y… …   Enciclopedia Universal

  • FreeBASIC — Infobox programming language name = FreeBASIC paradigm = Procedural / Object Oriented year = 2004 designer = Andre Victor developer = The FreeBASIC Development Team latest release version = 0.20.0 Beta latest release date = release… …   Wikipedia

  • FreeBasic — …   Википедия

  • FBRTL — FreeBASIC Basisdaten Entwickler: Quelloffen (Open Source) Aktuelle Version …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”