Eingabe mit INPUT

Bearbeiten

Wie wir im vorigen Abschnitt erfahren haben, können Variablen Werte speichern. Wir wissen bereits eine Methode, wie wir Variablen Werte zuweisen können, nämlich mit Variablenname = Wert. Doch somit würden wir nur im Programm selber Werte vergeben können. Wir wollen in diesem Abschnitt lernen, wie wir Variablen während der Laufzeit mit Werten füllen können. Hierzu benötigen wir den Befehl INPUT.

Zunächst die Syntax:

INPUT Text, Variable

Wie wir sehen können, ist Text ein optionaler Parameter. Wenn wir diesen weglassen, wird zum Beispiel statt einem erklärenden Text ein Fragezeichen angezeigt.

Beispiel:

DIM x AS INTEGER 'Variable x als Ganzzahl initialisieren
INPUT "Wert für x eingeben: ", x 'Wert für x eingeben
PRINT "X hat den Wert: ";
PRINT x

Die erste Zeile initialisiert bzw. deklariert eine Variable des Typs Integer. Danach wird unser neu gelernter Befehl INPUT aufgerufen und wir können nun eine beliebige Zahl eintippen. Während der Eingabe erscheint ein Text, der angibt wofür diese Eingabe zuständig ist: Wert für x eingeben:. In den letzten zwei Zeilen wird der Inhalt der Variable ausgegeben (X hat den Wert: ).

Am Bildschirm würde man nun zum Beispiel folgendes sehen:

Wert für x eingeben: 14
X hat den Wert:  14

Wenn wir das Beispiel oben nun wie folgt abwandeln...

DIM x AS INTEGER 'Variable x als Ganzzahl initialisieren
INPUT x 'Wert für x eingeben
PRINT "X hat den Wert: ";
PRINT x

...erhalten wir als Anzeige am Bildschirm zum Beispiel:

? 14
X hat den Wert:  14

Dieses Fragezeichen ist kein Fehler, sondern beabsichtigt. Der Befehl gibt bei keiner Angabe des Parameters Text standardmäßig ein Fragezeichen aus. Um dieses doch zu entfernen, kann man die INPUT-Zeile wie folgt abändern:

INPUT "", x 'Wert für x eingeben

Man würde nun folgende Anzeige erhalten:

14
X hat den Wert: 14

Statt einem Fragezeichen, erhalten wir als Beschreibungstext nichts, also einen leeren String.

Eingabe mit INKEY$

Bearbeiten

INKEY$ ist eine weitere Methode des Einlesens von Daten. INKEY$ prüft, technisch gesehen, welche Taste momentan gedrückt ist, und gibt das entsprechende Zeichen als Ergebnis zurück. Wenn zur Zeit keine Taste gedrückt ist, ist das Ergebnis ein leerer String.

Auf diese Art kann man bereits ein Programm realisieren, welches sich mit bestimmten Tasten bedienen lässt und auch mit einer Taste beenden lässt:

REM Dieses Beispiel gibt unendlich lange die gedrückten Tasten auf dem Bildschirm aus.
REM Es werden einige Beispiel-Tastencodes angegeben.
REM Abbruch mit Escape.
DO
    DO
        PRESSEDKEY$ = INKEY$
    LOOP UNTIL PRESSEDKEY$ <> ""
    
    SELECT CASE ASC(PRESSEDKEY$)
    CASE 13
        PRINT "Du hast die Eingabetaste gedrückt!"
    CASE 27
        PRINT "Du hast Escape gedrückt - das Programm wird beendet!"
        REM Da die Schleife der Hauptbestandteil des Programms ist, wird selbiges beendet, wenn die Schleife abgebrochen wird.
        EXIT DO
    CASE 48 TO 57
        PRINT "Du hast die Nummer"; ASC(PRESSEDKEY$) - 48; "gedrückt"
    CASE ELSE
        PRINT "Du hast das Zeichen "; PRESSEDKEY$; " mit dem Code"; ASC(PRESSEDKEY$); "gedrückt"
    END SELECT
LOOP

Das ganze Programm befindet sich dabei in einer Do-Loop-Schleife, da die Abbruchbedingung im Schleifenrumpf definiert ist. Jeder Durchlauf dieser Schleife entspricht einem einzigen Tastendruck. Am Anfang jedes Durchlaufs wird auf den nächsten Tastendruck gewartet (dies ist der Fall, wenn das Ergebnis von INKEY$ nicht "" ist). Danach kann man in einer SELECT-Anweisung den Tastencode auswerten. Es handelt sich dabei um ein einfaches ASCII-Zeichen. Wenn Escape gedrückt wird (entspricht Code 27), dann wird die Hauptschleife, also das Programm, mit EXIT DO beendet.

Übungen

Bearbeiten
  • Schreibe ein Programm, welches nach deinen Namen fragt und diesen danach ausgibt
    • Das Programm soll separat nach Vor- und Nachname fragen
    • Die Ausgabe soll mit einer beliebigen Farbe dargestellt werden
  • Schreibe ein Programm, welches zwei Ganzzahlen (Variablendeklaration als Integer) einliest und dem LOCATE-Befehl übergibt
  • Schreibe ein Programm, welches zwei beliebige Namen einliest und an zwei unterschiedlichen Positionen wieder ausgibt
    • Die Position soll vom Benutzer festgelegt werden können