Startseite | Revo / plus | Teil 2 - OPL für Anfänger

Teil 2 - OPL für Anfänger


Teil 2 - OPL für Anfänger

Kommentare und Schleifen, oder wie wird eine reale Anwendung erstellt.

Im ersten Teil haben wir gelernt wie eine Zufallszahl zwischen 1 und 49 erzeugt wird. Jedoch benötigen wir im normalen Lotto 6 Zahlen, und es ist kein guter Weg das Programm so oft aufzurufen. Heute werden wir lernen, wie eine solche Anwendung erstellt wird, und vor allem auch noch nach einiger Zeit zu lesen ist.

Im letzten Kapitel war das unser Ergebnis:

K0105 Display

Nun, wir können nun natürlich einen sehr einfachen Weg gehen, wir kopieren die "PRINT" Anweisung sechs mal. Funktioniert prima! Somit ist die Anwendung also fertiggestellt.

Aber was ist wenn wir die Zahl 100 mal oder gar 1000 mal benötigen? Mit der Kopiermethode sind wir natürlich nicht unbedingt elegant, und verschwenden auch ein wenig Speicher. Aber es gibt ja Schleifen, und diese wollen wir einsetzen.

In OPL gibt es einige Schleifenarten, hier werden wir uns mit der "WHILE" Anweisung beschäftigen. Aber zuerst ein paar Worte zur Logik:

Setze einen Zähler auf 1
Während der Zähler kleiner oder gleich 6
Erzeuge eine Zufallszahl und drucke Sie aus
Addiere 1 zum Zähler
Gehe zurück zu Schleifenanfang und prüfe erneut die Bedingung

Die obige Beschreibung muß verstanden werden! Das ist die Basis für jegliches Verständnis in der Programmierung (nicht nur in OPL). Gegebenenfalls sollte man ruhig einige Zeit mit der Beschreibung verbringen.

Der erste Schritt ist die Erstellung eines Zählers. Dieser wird hier i% genannt. Warum? Alle Computer Programm benötigen diese Zähler, und es sind eigentlich Variablen. In Variablen können Informationen gespeichert werden. In OPL gibt es drei Arten von Variablen:

- 'Integer' Variablen (Ganze Zahlen, so wie unser Zähler im Programm),
mit einem "%" hinter dem Bezeichner

- 'Floating point' Variablen (Real Zahlen wie z.B.: 2.5983 oder 0.0290565)

- 'String' Variablen (Zeichen/ketten wie z.B.: "Hallo Welt"), mit einem "$"
hinter dem Bezeichner

So ist "i%" eine Integer-Variable, "Wert" ist eine Floating-Point(Fließkomma)-Variable und "Name$" ist ein String. Hier werden wir das "i%" benutzen. Dieser Buchstabe ist für solche Zwecke durchaus gebräuchlich, und schnell zu schreiben :))

So fügen wir also vor der Zeile "RANDOMIZE" folgendes ein:

LOCAL i%

Danach sollten auf dem Display folgendes zu sehen sein:

K0201 Display

Das Wort Local bedeutet, das diese Variable nur innerhalb der Funktion gilt, in unserem Fall besteht das ganze Programm jedoch nur aus einer Funktion (Lotto).
Aber nun fügen wir die Befehle für die Schleife ein. Nach der Zeile "RANDOMIZE" wird folgendes eingefügt:

i%=1
WHILE i%<=6

Nach der "PRINT" Anweisung muß folgendes eingefügt werden:

i%=i%+1
ENDWH

Das sind nun schon einige Änderungen. Die Zeilen sollten so eingerückt sein, wie auf dem Bildschirmbild zu sehen. Das Programm funktioniert natürlich auch ohne jede Einrückung, aber es ist bei weitem nicht so gut lesbar. Gerade bei größeren Projekten ist die Lesbarkeit jedoch äußerst wichtig! Das Display sollte wie folgt aussehen:

K0202 Display

Nun ist zu erkennen, das wir die oben beschriebene Schleife eingefügt haben. Der Zähler startet mit dem Wert 1 und wird mit jedem Schleifendurchlauf (WHILE.....ENDWH) um eins erhöht. Das geschieht solange, wie die Bedingung erfüllt ist. Ist die Bedingung nicht erfüllt (in unserem Fall bei 7) verläßt das Programm die Schleife und macht bei "GET" weiter.

Nachdem wir unseren Code (hoffentlich) verstanden haben, ist es Zeit das Programm zu starten. Nach dem Start sollte ähnliches zu sehen sein:

K0203 Display

Hier haben wir sechs Zufallszahlen. Mit unserem Programm sind wir noch lange nicht fertig, da natürlich einige Nummern doppelt sein können (Wie im Beispiel deutlich zu erkennen). Doch das ist ein Thema für ein anderes Kapitel.

Nachdem die Zahlen auf dem Display stehen, kommen wir zum Programm zurück, nachdem eine Taste gedrückt wird.

So, nun machen wir das Programm ein wenig "lesbarer". Denn ein Programm (vor allem ein größeres) hat den Nachteil, das man schon nach kurzer Zeit nicht mehr weiß wo was geschieht......
Hier gibt es im allgemeinen zwei Verschiedene Sorten von Programmierern, solche die jede Zeile mit Kommentaren versehen, am Anfang jeder Prozedur alles bis in letzte Detail beschreiben, und solche die nichts tun.

Wir sollten also ein vernünftiges Mittelmaß finden. Es sollten alle Details beschrieben werden die wir als wichtig für das spätere Verständnis empfinden. Natürlich kann am Anfang des Programmes auch das Alter, die Adresse, die Augenfarbe, Name der Freundin ...... angegeben werden, wir gehen in unserem Projekt jedoch einen anderen Weg:

Zum Beispiel beschreiben wir die Variable i%:

LOCAL i% rem Zählervariable für die Schleife

Der Befehl "rem" bewirkt, das OPL dahinter nicht mehr nach Befehlen sucht. Mann kann also seine Kommentare immer hinter dem Befehl: "rem" unterbringen! Genauso sollte man mit Leerzeilen arbeiten um Programmteile zu trennen. In unserem Beispiel die Variablendeklaration, dann Initialisierung und schließlich Hauptprogramm! Um dieses zu erreichen fügen wir Leerzeilen nach den Befehlen: "RANDOMIZE" und "PRINT" ein. Ferner ergänzen wir die Folgende Zeile mit einem Kommentar:

PRINT INT(RND*49)+1 rem Addiere 1 um die Zahl zwischen 1 und 49 zu erhalten

Jetzt sollte das Display folgendermaßen aussehen:

K0204 Display

Das nächste Kapitel unserer Programmiereinführung wird auf dem heutigen Programm aufbauen und sich unter anderem mit Überschriften und Feldern beschäftigen.