|
Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
|
| |
|
|
Benutzerhandbuch |
|
|
Kapitel 2
Grundlegendes über Blitz2
·Mein erstes Programm
·Der Print-Befehl
·Formatiertes Drucken
·Einfache Variablen
·Einfache Schleifen
·Verschachtelte Schleifen
·Die Benutzung von String-Variablen
·Der Programmablauf
·Sprungbefehle
·Benutzereingaben
·Felder
Das folgende Kapitel wendet sich an diejenigen Benutzer, die noch keine Programmiererfahrung in BASIC haben. Es liefert eine schrittweise Einführung in die grundlegenden Elemente von Blitz2.
Sobald Blitz2 betriebsbereit ist (s. vorhergehendes Kapitel), betätigen Sie den "OKEE DOKEE"-Knopf und Sie können Ihr erstes Programm schreiben.
Wenn Sie Schwierigkeiten mit dem Blitz2-Editor haben sollten, sehen Sie im Anhang 1 nach. Dort ist der Editor Ted ausführlich erklärt.
Mein erstes Programm
Geben Sie die folgenden zwei Befehle ein:
PRINT "Dies ist mein erstes Blitz2 Programm!"
MouseWait
Dann wählen Sie "COMPILE&RUN" im oberen rechten Menü.
Wenn Sie das Programm korrekt eingegeben haben, erhalten Sie ein CLI-Fenster mit Ihrer Mitteilung. Betätigen Sie den Mausknopf und Sie sind wieder im Editor.
Das ist schon alles.
Der Print-Befehl
Positionieren Sie den Cursor auf das Wort "Print" in Ihrem Program und drücken Sie die Help-Taste. Die Syntax für den Print-Befehl erscheint dann oben auf dem Bildschirm. Dort steht jezt:
Print Expression[,Expression...]
Die eckigen Klammern sagen aus, daß der Print-Befehl mit beliebig vielen Ausdrücken versorgt werden kann. Die Ausdrücke müssen durch Kommata getrennt werden. Ein Ausdruck kann eine beliebige Zahl, eine Zeichenkette (ein Text in "Anführungszeichen"), eine Variable oder eine BASIC-Formel sein. Das folgende Beispiel enthält alle diese Möglichkeiten.
Vergessen Sie den MouseWait-Befehl nicht wenn Sie dieses Programm testen, denn sonst druckt Blitz2 die Meldung und kehrt sofort zum Editor zurück, bevor Sie Zeit hatten, sie zu lesen.
Print 3,"Autos",a,a*7+3
Die folgende Zeile sollte in dem CLI-Fenster erscheinen.
3Autos03
Wenn Sie Zwischenräume zwischen die verschiedenen Ausdrucke einfügen, wie z.B. so:
Print 3," Autos",a," ",a*7+3
dann erhalten Sie folgende Zeile
3 Autos 0 3
Formatiertes Drucken
Der Format-Befehl ermöglicht es, Zahlen in unterschiedlichen Formaten auszudrucken. Dies ist z.B sinnvoll wenn Sie Zahlen in Spalten ausgeben wollen.
Der NPrint-Befehl dient dazu, den Cursor nach der Ausgabe automatisch in die nächste Zeile zu bewegen.
Format "###.00"
Nprint 23,5
Nprint 10
Nprint ,5
Nprint 0
MouseWait
Einfache Variablen
Was eine Programmiersprache mächtig macht, ist ihre Fähigkeit, Zahlen und Text zu verändern. Um diese Informationen zu speichern werden Variablen verwendet.
Der folgende Befehl weist der Variablen a den Wert 5 zu :
a=5
Jetzt besitzt die Variable a den Wert 5. Man kann den Computer jetzt anweisen, 1 zu dem Wert von a zu addieren, sodaß das Ergebnis 6 ist :
a=a+1
Ein Ausdruck kann auch mehrere Rechenoperationen enthalten. Um zu erreichen, daß eine bestimmte Operation vor der anderen ausgeführt wird, wird diese in Klammern eingeschlossen:
a=(a+3)*7
An dieser Stelle sei auf Anhang 5 verwiesen, der eine Liste aller Operatoren und deren Präzedenz (die Reihenfolge, in der die Operationen ausgeführt werden) enthält.
In dem folgenden Programm wird a zunächst der Wert 0 zugewiesen, dann viermal 12 addiert und der Wert ausgedruckt.
a=0
a=a+12:Nprint a
a=a+12:Nprint a
a=a+12:Nprint a
a=a+12:Nprint a
MouseWait
Wie Sie sehen, können zwei Befehle in der selben Zeile stehen wenn sie durch einen Doppelpunkt getrennt werden. Im Übrigen ist der erste Befehl a=0 nicht nötig, da allen Variablen in Blitz2 grundsätzlich zunächst der Wert 0 zugewiesen wird.
Einfache Schleifen
Das folgende Programm druckt das 1 mal 12. Anstatt 12 Zeilen einzugeben, wird eine For...Next-Schleife verwendet. Durch eine Schleife wird das Programm angewiesen, einen Programmabschnitt mehrmals zu wiederholen.
Durch For i=0 To 12..Next wird erreicht, daß die Befehle zwischen For und Next 12 mal ausgeführt werden. Dabei wird die Variable i als Zähler verwendet.
Der Stern "*" ist der Multiplikations-Operator; a=i*12 bedeutet, daß die variable a anschließend den 12-fachen Wert der Variablen i besitzt. Da i aber von 1 bis 12 hochgezählt wird, erhält a die Werte 12, 24, 36 usw.
For i=1 To 12
a=i*12
Nprint i, "*",12,"=",a
Next
MouseWait
Beachten Sie, daß die beiden Zeilen innerhalb der Schleife eingerückt sind. Dies dient dazu, das Programm übersichtlicher zu machen, sodaß man leichter erkennen kann, welche Abschnitte innerhalb von Schleifen sind und welche nicht.
Um Zeilen einzurücken wird die Tabulator-Taste verwendet.
Wenn Sie nun die erste Zeile abändern, sodaß dort jetzt For i=1 To 100 steht, werden Sie sehen, daß der Rechner auch kein Problem hat, dies zu berechnen.
Sie können auch die Zahl 12 in den ersten 3 Zeilen abändern um das Einmaleins für andere Zahlen zu erstellen.
Verschachtelte Schleifen
Das folgende Programm ist ein Beispiel für die Verschachtelung von Schleifen. Verschachtelte Schleifen sind Schleifen die innerhalb anderer Schleifen sind. Dabei werden die Anweisungen der inneren Schleife weiter eingerückt, sodaß sich leichter erkennen läßt, ob für jeden For-Befehl auch ein entsprechender Next-Befehl vorhanden ist.
For y=1 To 12
For x=1 To 12
NPrint y,"*",x,"=",x*y
Next
Next
MouseWait
Die Verschachtelung der For x=1 To 12 Schleife innerhalb der For y=1 To 12 Schleife hat zur Folge, daß die Zeile "NPrint..." 12*12mal ausgeführt und jedesmal eine neue Kombination von x und y berechnet wird.
While...Wend und Repeat...Until
Außer For...Next gibt es noch zwei weitere einfache Methoden in Blitz2, um Schleifen zu realisieren.
While...Wend und Repeat...Until Schleifen werden wie folgt geschrieben:
While a<20
Nprint a
a=a+1
Wend
Repeat
Nprint a
a=a+1
Until a>=20
Wie viele BASIC-Befehle sind auch diese einigermaßen selbsterklärend: das Innere der While...Wend-Schleife wird wiederholt, solange die Bedingung erfüllt ist, die Repeat...Until-Schleife wird durchlaufen, BIS die Bedingung erfüllt ist.
Die Bedingung die angegeben wird, kann ein beliebiger Ausdruck sein wie While a+10<50, While f=0, While b<>x*2, usw.
Der Unterschied zwischen diesen beiden Schleifen ist, daß bei einem Anfangswert von a größer als 20 die Repeat...Until-Schleife einmal durchlaufen wird, die While...Wend-Schleife jedoch gar nicht (die While-Schleife wird daher auch abweisende Schleife genannt).
Endlosschleifen
Wenn ein Programm in einen Zustand gerät, in dem eine Schleife nicht mehr verlassen wird, spricht man von einer Endlosschleife. In einer solchen Situation muß der Programmierer in der Lage sein, das Programm von außen zu beenden.
Ein Programm kann mit der Ctrl/Alt-C Kombination unterbrochen werden. Hierzu müssen die Ctrl-Taste und die linke Alt-Taste gleichzeitig gedrückt und gehalten werden und zusätzlich das C gedrückt werden. Das Programm wird dann angehalten und der Debugger erscheint auf dem Bildschirm. Um den Debugger zu verlassen und zum Editor zurückzukehren, drücken Sie die Esc-Taste (links oben auf der Tastatur). Der Debugger wird in Kapitel 6 behandelt.
Die Benutzung von String-Variablen
Variablen, die keine Zahlenwerte sondern Buchstaben (Text) enthalten werden Zeichenketten oder String-Variablen genannt. Um String-Variablen zu kennzeichnen, müssen sie ein $-Zeichen hinter dem Namen erhalten. Das folgende Beispiel zeigt eine einfache Anwendung von Strings:
a$="Simon"
Nprint a$
MouseWait
Wie bei den numerischen Variablen wird auch bei Strings das "="-Zeichen dazu verwendet, der Variablen einen Wert zuzuweisen. Das "+"-Zeichen dient dazu, String-Variablen zu 'addieren', also aneinander zu fügen:
a$="Simon":b$="Armstrong":c$=a$+b$
Die Variable c$ enthält anschließend die Zeichenkette "Simon Armstrong". Funktionen, die mit Strings arbeiten sind in Kapitel 6 des "Blitz Referenzhandbuchs" aufgeführt.
Der Programmablauf
Vielfach muß ein Programm bei der Ausführung entscheiden, ob der eine oder der andere Befehl auszuführen ist; dies nennt man den Programmablauf. Die If..Then-Anweisung dient dazu, den nachfolgenden Befehl nur dann ausführen zu lassen, wenn eine bestimmte Bedingung erfüllt ist. Im folgenden Beispiel wird nur dann das Wort "Hallo" ausgegeben, wenn die Variable a den Wert 5 hat:
If a=5 Then Print "Hallo"
Unter Verwendung des If...EndIf-Befehls kann das Beispiel so verändert werden, daß ein ganzer Programmabschnitt nur dann ausgeführt wird, wenn a gleich 5 ist:
If a=5
Print "Hallo"
a=a-1
EndIf
Mit dem Else-Befehl kann alternativ ein anderer Programmabschnitt ausgeführt werden, wenn die Bedingung nicht erfüllt ist:
If a=5
Print "Hallo"
Else
Print "Auf Wiedersehen"
EndIf
Der Programmcode wird wiederum innerhalb der Strukturblöcke eingerückt um die Lesbarkeit zu erhöhen, genau wie bei den Schleifen.
Die Bedingung, die in dem If-Befehl genannt ist, kann ein beliebig komplizierter Ausdruck sein, wie die folgenden Beispiele zeigen:
If a=1 or b=2
If a>b+5
If (a+10)*50<>b/7-3
Anhang 5, am Ende dieses Handbuchs, enthält eine vollständige Beschreibung des Gebrauchs von Operatoren und deren Präzedenz.
Sprungbefehle
Oftmals ist es nötig, innerhalb des Programms zu einem anderen Abschnitt zu 'springen'. Hierfür dienen die Befehle Goto und Gosub.
Die Stelle, zu der das Programm springen soll muß eine Sprungmarke (Label) besitzen, sodaß angegeben werden kann, zu welcher Stelle gesprungen werden soll.
Im folgenden wird die Sprungmarke 'start' verwendet:
Goto start
Nprint "Hallo"
start
MouseWait
Da durch den Goto-Befehl das Programm dazu veranlasst wird, zur Marke 'start' zu springen, wird der Text "Hallo" nie ausgegeben.
Der Befehl GoSub wird dazu benutzt, um zu einem Unterprogramm (Subroutine) zu springen. Ein Unterprogramm ist ein Programmabschnitt, der mit einem Return-Befehl abgeschlossen wird. Nachdem die Anweisungen des Unterprogramms ausgeführt wurden, wird durch den Return-Befehl wieder zu der Zeile mit dem GoSub-Kommando zurückgesprungen und dort fortgefahren.
.start:
GoSub message
GoSub message
GoSub message
MouseWait
End
.message
NPrint "Hallo"
Return
Beachten Sie, daß den Sprungmarken ein Punkt vorangestellten ist. Dadurch werden sie vom Editor als solche erkannt und erscheinen in einer Liste auf der rechten Bildschirmseite. Wenn Sie mit der Maus in diese Liste klicken, springt der Cursor automatisch zu der Marke im Programm. Beim Erstellen großer Programme ist dies sehr nützlich.
Benutzereingaben
Vielfach muß ein Programm auf Eingaben vom Benutzer warten, entweder durch die Tastatur oder durch die Maus. Der MouseWait-Befehl, zum Beispiel, hält das Programm an, bis der Benutzer den linken Mausknopf betätigt.
Die Befehle Edit und Edit$ erwarten Eingaben von der Tastatur, ähnlich wie der Input-Befehl in anderen Programmiersprachen auch.
Das folgende Beispiel fragt den Benutzer nach seinem Namen und speichert die Eingabe in einer String-Variablen:
Print "Ihr Name bitte ?"
a$=Edit$(80)
NPrint "Hallo",a$
MouseWait
Die Zahl 80 in dem Befehl Edit$(80) bezieht sich auf die Anzahl Zeichen, die der Benutzer eingeben kann.
Um Zahlen einzulesen, wird die Funktion Edit verwendet. Der Befehl a=Edit(80) erwartet die Eingabe einer maximal 80stelligen Zahl und speichert diese in der Variablen a.
Felder
Programme müssen häufig Gruppen von Zahlen oder Strings verarbeiten. Variablen, die solche Gruppen darstellen, werden Felder (Arrays) genannt. Wenn z.B. eine Gruppe von zehn Zahlen verarbeitet werden sollen, die alle in einer gewissen Beziehung zueinander stehen, so kann statt zehn einzelner Variablen auch ein Feld definiert werden.
Hierzu dient die Anweisung Dim:
Dim a(10)
Die Variable a kann nun 10 Zahlen aufnehmen (eigentlich 11, siehe Kapitel 3). Um auf die einzelnen Werte zuzugreifen, wird der Index des Feldelements in der Klammer hinter dem Variablennamen angegeben:
a(1)=5
a(2)=6
a(9)=22
NPrint a(9)
a(1)=a(1)+a(2)
Nprint a(1)
Das wichtige dabei ist, daß der Index, der das Feldelement angibt, wiederum eine Variable sein kann. Wenn i=2 ist, dann bezieht sich der Ausdruck a(i) auf die selbe Variable wie a(2).
Im folgenden werden 5 Strings in einer For...Next-Schleife vom Benutzer eingelesen. Da die Strings in einem Feld gespeichert werden, können sie wiederum in einer Schleife ausgedruckt werden:
Dim a$(20)
NPrint "Geben Sie 5 Namen ein"
For i=1 To 5
a$(i)=Edit$(80)
Next
NPrint "Die eingegebenen Namen sind"
For i=1 To 5
NPrint a$(i)
Next
MouseWait
|
|
|
|
|
|