logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 06/2001   »   Ausgabe bestellen

Programmiersprachen unter Linux

BASIC

von Hans-Georg Eßer


Linux ist ein wahres Paradies für Programmierer, denn nahezu jede aktuelle oder in der Vergangenheit verwendete Programmiersprache gibt es auch für das freie Betriebssystem. Im Auftakt zu unserer neuen Serie über Programmiersprachen schauen wir auf einen echten Klassiker: BASIC.

Wer schon länger mit Computern arbeitet, erinnert sich an die Zeit der Home-Computer: Commodore C64, Sinclair Spectrum oder Schneider CPC hießen die Geräte, die in der Regel an einen Fernseher angeschlossen wurden und den kompletten Rechner in der Tastatur unterbrachten. Was all diese Home-Computer gemeinsam hatten, war das Booten eines simplen Betriebssystems mit einem BASIC-Interpreter; das klassische "Hello-World"-Programm war in BASIC schnell geschrieben, und die nötigen Zeilen beschränkten sich auf

 10 PRINT "Hello World"
 20 GOTO 10
 run
 

Um die alten Tage in Erinnerung zu rufen oder einfach aus Interesse an einer leicht zu erlernenden Sprache ein wenig mit BASIC zu experimentieren, bietet sich unter Linux (und anderen Unix-Plattformen) das bwBASIC-System (http://www.bwbasic.com) an. bwBASIC ist ein BASIC-Interpreter, der als Shell verwendet werden kann: Wenn Sie bwBASIC starten, können Sie weiterhin externe Programme wie ls oder vi aufrufen, als würden Sie in einer Bash arbeiten; zusätzlich lassen sich aber Skripte erstellen, die den Syntaxregeln von BASIC folgen.

Woher nehmen?

SuSE Linux enthält in allen Versionen bwBASIC 2.20, und dieses Paket lässt sich einfach über den rpm-Befehl installieren. Anwender von Red Hat und Mandrake Linux können das RPM-Paket unter ftp://ftp.uwsg.indiana.edu/linux/redhat/contrib/libc5/i386/bwbasic-2.20pl1-1.i386.rpm verwenden. Nach der Installation zeigt ein ldd-Aufruf, dass bwBASIC sehr genügsam ist, was die benötigten Bibliotheken angeht:

 [root@dual basic]# ldd /usr/bin/bwbasic
   libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40010000)
   libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40018000)
 
Außer libc und libm wird hier nichts benötigt, die beiden Standard-Bibliotheken müssen allerdings in der veralteten Version 5 vorliegen (aktuell ist libc6, auch glibc2 genannt).

Lieber aus den Sourcen?

bwBASIC ist auch im Quellcode verfügbar. Die aktuellste, aber vom Hersteller nicht unterstützte Version findet sich unter ftp://ftp.rahul.net/pub/rhn/bwbasic-2.20.tar.Z. Diese ließen sich allerdings unter Red Hat Linux 6.0 und 6.2 sowie SuSE Linux 7.1 nicht übersetzen, so dass wir von einer Verwendung der Sourcen abraten.

BASIC-Grundlagen

BASIC ist eine sehr alte Programmiersprache, die für den Einsatz auf schmalbrüstigen Maschinen mit teilweise nur 16 KB RAM entwickelt wurde. Dementsprechend wartet sie nicht mit Features wie Pointern oder Objekt-Orientierung auf. Ein BASIC-Programm besteht aus Programmzeilen, die mit einer Zeilennummer beginnen; es wird dann in der Reihenfolge dieser Zeilennummern abgearbeitet. Während Sie prinzipiell wie bei Shell-Skripten ein BASIC-Programm im Editor schreiben, als meinprogramm.bas abspeichern und dann von der Kommandozeile direkt über

 bwbasic meinprogramm.bas
 

aufrufen können, erlaubt der bwBASIC-Interpreter auch die interaktive Eingabe eines Programmes; Sie können also am "bwBASIC:"-Prompt einfach Programmzeilen der Form "10 Befehl" eingeben. Ein auf diese Weise erstelltes Programm kann dann jederzeit über den Befehl run ausgeführt werden. Mit dem Befehl save "programm.bas" kann es für spätere Verwendung im aktuellen Verzeichnis gespeichert und mit load "programm.bas" wieder geladen werden.

Variablen

BASIC verwendet unterschiedliche Schreibweisen für numerische und Text-Variablen: Zahlenwerte (egal ob Integer oder Real) werden in Variablen mit einfachen Namen (a, meinevariable etc.) gespeichert, Text-Strings wird zur Unterscheidung das Dollar-Zeichen angefügt (eingabe$, ausgabe$). Eine Deklaration von Variablen ist zwar möglich, in der Regel aber nicht nötig -- lediglich wenn Sie Arrays verwenden wollen, sind diese vorher einzurichten: so definiert etwa

 dim feld$(20)
 

ein String-Array mit 20 Einträgen: Diese können über feld$(1) bis feld$(20) angesprochen werden. Variablenzuweisungen erfolgen über einfache Kommandos der Form summe=a+b. BASIC-Befehle werden übrigens nicht mit einem Semikolon oder sonstigem Zeichen abgeschlossen; es kann aber ein Befehls-Trenner ":" verwendet werden, um mehrere Befehle in einer Zeile unterzubringen, etwa: summe=a+b: print summe/100.

Abb. 1: Auch der freie DOS-Emulator dosemu kommt mit einer (älteren) Version von bwBASIC

Euro-Rechner

Mit BASIC lassen sich schnell zum Beispiel kleinere Rechenaufgaben lösen: Das folgende Beispielprogramm fragt nach einem Betrag in EURO und gibt den entsprechenden Wert in DM aus:

 10 print "Wechselkurs"
 20 print "-----------"
 30 dmeuro=1.95583
 40 print "Geben Sie den Betrag in Euro ein: ";
 50 input "",euro
 60 if euro=0 then goto 100
 70 dm=euro*dmeuro
 80 print "In DM sind das: ";dm
 90 goto 40
 100 end
 

Durch die Abfrage, ob ein Betrag von 0 eingegeben wurde, wird eine Abbruchbedingung geprüft: BASIC springt zur Zeile 100, falls der Wert 0 ist; dann wird das Programm beendet. Anderenfalls wird immer wieder ein neuer Wert erfragt, da am Ende der Berechnung über den goto-Befehl wieder zur Befehlszeile zurückgesprungen wird, die die Werteingabe einleitet. Ein Programmlauf sieht dann folgendermaßen aus:

 bwBASIC: run
 Wechselkurs
 -----------
 Geben Sie den Betrag in Euro ein: 150
 In DM sind das:  293.3745000
 Geben Sie den Betrag in Euro ein: 20
 In DM sind das:  39.1166000
 Geben Sie den Betrag in Euro ein: 0
 bwBASIC:
 

Auch Schleifen lassen sich in BASIC leicht programmieren. Wahlweise können Sie mit Befehlen der Form

 10 for i=1 to 10
 20   print i, i*3, i*10
 30 next
 

eine Variable (hier i) der Reihe nach alle Werte vom Start- zum Endwert durchlaufen lassen, oder Sie verwenden Schleifen, deren Abbruch von einer Bedingung abhängt: Dies sind while-Schleifen der Form

 10 wert=-1
 20 while wert<>0
 30   print "Wert eingeben, 0 fuer Ende: ";
 40   input "",wert
 50   print "Wert ist: ";wert
 60 wend
 

In unserem Euro-DM-Rechner hätten wir statt des GOTO-Sprungs also auch eine WHILE-Schleife verwenden können: Dank WHILE-Schleifen kann auf die explizite Angabe eines Sprungziels verzichtet werden. Wenn Sie Ihr BASIC-Programm in einer Datei ablegen, können Sie übrigens ganz auf die Vergabe von Zeilennummern verzichten: BASIC interpretiert die Befehle dann in der Reihenfolge, wie sie in der Datei auftauchen. Das obige Programm wird dann zur folgenden Version, die fast schon wie ein Shell-Skript aussieht:

 wert=-1
 while wert<>0
 print "Wert eingeben, 0 fuer Ende: ";
   input "",wert
   print "Wert ist: ";wert
 wend
 

Kurzreferenz

Eine etwas magere Kurzreferenz zu den Befehlen von bwBASIC bietet der Hersteller unter http://www.bwbasic.com/extended.html; für einen ausführlicheren Einstieg in BASIC sind zum Beispiel die folgenden Seiten interessant:

Diese Seiten beziehen sich auf QBasic, einen BASIC-Dialekt von Microsoft, deren erstes Produkt überhaupt ein BASIC-Interpreter gewesen ist; QBasic wurde erstmals mit MS-DOS 5.0 ausgeliefert. (Informationen zur Geschichte der MS-BASIC-Dialekte finden Sie unter http://www.emsps.com/oldtools/msbasv.htm.) QBasic und bwBASIC sind sich recht ähnlich, allerdings werden nicht alle Programme auch mit bwBASIC funktionieren. Nun Viel Spaß bei ersten Schritten in BASIC. (hge)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.




Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]