Privacy Policy Cookie Policy Terms and Conditions FreeBASIC - Wikipedia

FreeBASIC

aus Wikipedia, der freien Enzyklopädie

FreeBASIC
FreeBASIC Logo
Basisdaten
Entwickler: open source
Aktuelle Version: 0.17 Testing (2006-07-30)
Betriebssystem: Windows, Linux und Dos
Kategorie: Compiler
Lizenz: GPL/LGPL
Deutschsprachig: nur IDE
Website: www.freebasic.net

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

Zurzeit können Bibliotheken wie GTK+, GSL, SDL, Allegro, Lua oder OpenGL direkt genutzt werden, mit jeder neuen Version steigert sich jedoch die Anzahl der unterstützten Bibliotheken.

Die erste Version wurde im November 2004 veröffentlicht, die neueste Version ist Version 0.17 (Testing) vom 30. Juli 2006. Die zuletzt veröffentlichte Beta-Version ist die Version v0.16 vom 11. Juni 2006.

Inhaltsverzeichnis

[Bearbeiten] Merkmale

[Bearbeiten] Syntax

Dieses Thema kann an dieser Stelle aufgrund seiner Komplexität natürlich nur im groben Überblick angesprochen werden. Es existieren derzeit über 400 Schlüsselwörter, die z.T. auf mehrerlei Art und Weise verwendet werden können. Bei entsprechendem Interesse sei daher auf die Online-Befehlsreferenz verwiesen.

Generell werden drei Arten von Schlüsselwörtern unterschieden:

  • 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 absolut bedeutungslos; GetMouse und GETMOUSE werden vom Compiler absolut gleich behandelt.

Beim Umgang mit Werten (Zahlen, Zeichenketten, oder sonstige Arten von Informationen) werden Variablen und Konstanten verwendet; Variablen sind dabei einzelne Buchstaben oder ganze Wörter, über die auf den Wert zugegriffen werden kann (d.h. die Information kann gelesen oder verändert werden). Konstanten sind etwa die Zahlen als solche, oder aber STIRNGs (Zeichenketten). STRINGs werden in "doppelten Anführungszeichen" gehandled, um anzuzeigen, wo der String beginnt und endet, und ab wo der Text wieder zum Programmcode gehört.

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 logischerweise eingeschränkt, möglich ist nur die Verkettung (+ oder &), sowie die Indizierung (mittels eckiger Klammern).

Manche Anweisungen oder Funktionen können, einige müssen sogar mit Variablen oder Konstanten verwendet werden; wird ein Wert zusammen mit einer Anweisung oder einer Funktion verwendet, so nennt man diesen Wert einen Parameter.

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

print "Hallo Welt!"
sleep

Anmerkung: Der SLEEP-Befehl wird nicht benötigt. Er wird nur benutzt, um zu verhindern, dass sich das Ausgabefenster der Anwendung nicht automatisch schließt, wenn diese nicht aus der Konsole gestartet wurde.

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.

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.

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.

Ein weiterer Unterschied ist, dass bei Subaufrufen die Klammersetzung optional ist: Man kann eine Sub sowohl mit "ProcName(parameter)" als auch mit "ProcName parameter" aufrufen, ebenfalls von QBasic abgeleitet. Jedoch ist das nicht bei Funktionen möglich, dort müssen immer Klammern gesetzt werden.

[Bearbeiten] Kritik

freeBasic IDE unter Windows
vergrößern
freeBasic IDE unter Windows
  • freeBASIC ist ein reiner Compiler, d.h. der Code kann nur in verschiedene andere Sprachformen umgesetzt werden (Assembler, static & dynamic Lib, Object file und Executable); eine zeilenweise Ausführung des Codes wie in QBASIC oder VisualBASIC ist nicht möglich. Dies erschwert die Fehlersuche erheblich, da Debug-Methoden wie Haltepunkte, Variablenüberwachung und Ähnliches mühevoll selbst implementiert werden müssen.
  • Vor allem Einsteiger in die Sprache werden von der nicht ganz unkomplizierten Installation abgeschreckt, die zuerst erfolglos erscheint. In den offiziellen Download-Archiven ist meist nur der Compiler mit den zugehörigen LIBs, Includes und einigen Beispieldateien. Beim Starten der fbc.exe startet aber keine IDE, wie das etwa bei QBASIC noch geschah; stattdessen erscheint nur ein DOS-Prompt, in dem die Syntax des Compilers erläutert wird. In den meisten Fällen verschwindet diese Erläuterung schon, bevor sie überhaupt gelesen werden kann, weshalb oft von einem unvollständigen Download-Archiv ausgegangen wird. Dieses Problem nimmt allerdings ab, da in den Foren auf den nötigen Download einer IDE (Integrated Development Environment) hingewiesen wird. Auch existieren eine Reihe von Websites, die den Download einer solchen inzwischen als Paket mit dem Compiler anbieten.
  • Es ist Fluch und Segen zugleich, dass es sich bei freeBASIC um eine lebendige Sprache handelt. Das heißt, sie wird laufend weiterentwickelt. Dabei ändern sich oft auch alte Sprachstrukturen, neue Regeln werden aufgesetellt, Befehle ändern ihr Verhalten, ... Das bewirkt zwar eine laufende Verbesserung der Sprache, allerdings ist es auch nach jedem Update des Compilers nötig, zu prüfen, ob alte Codes noch funktionieren.
  • Trotz der massiven Arbeit vieler Hobbyprogrammierer existieren derzeit nur wenige Tutorials; in vielen Fällen wird auf Anleitungen verwiesen, die im Original für QBASIC geschrieben wurden. Dies ist sinnvoll, da die Sprachen zu 99% identisch sind. Allerdings existieren kleine Unterschiede, die die Tutorials (mit neuerer Version von freeBASIC immer mehr) unpassend machen.

Aufgrund dieser Dinge ist freeBASIC eine Sprache, die eher von erfahrenen Programmierern benutzt werden sollte. Tatsächlich sind viele Ikonen in der freeBASIC-sprechenden Community ehemalige QBasic-Coder.

[Bearbeiten] Weblinks

Wikibooks: FreeBasic – Lern- und Lehrmaterialien
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu