home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB Tastenabfrage ()
- DECLARE FUNCTION UpCase$ (InVar AS STRING)
- DECLARE FUNCTION JaNein2$ ()
- DECLARE SUB ClearKeyBoard ()
- DECLARE SUB FillScreen ()
- DECLARE SUB JaNein1 (ch AS STRING)
-
- DIM farbe AS INTEGER '* farbe = Ganzzahl
- DIM ch AS STRING * 1 '* ch = CHAR
- DIM jn AS STRING * 1 '* jn = CHAR
- DIM i AS INTEGER, j AS INTEGER '* i und j = Ganzzahl
-
- CONST nein = "N" '* Definition echter
- CONST ja = "J" '* Konstanten
-
- '* Vorspann zur Demonstration der Funktion UpCase$
- CLS: LOCATE 12, 15
- PRINT UpCase$("ein teststring mit den umlauten ä,ö und ü")
- DO
- LOCATE 24, 1, 1 '* Tastaturabfrage
- PRINT "Weitermachen? (J/N) "; '* mit fußgesteuerter
- CALL JaNein1(jn) '* Kontrolle
- IF UpCase(jn) = nein THEN PRINT "jn": STOP
- LOOP UNTIL UpCase$(jn) = ja
-
- '* Hauptprogramm in einer DO/LOOP-Schleife ohne Abbruch-
- '* bedingungen. Die Schleife kann nur noch mit "EXIT DO"
- '* verlassen werden.
- farbe = 7
- DO
- COLOR farbe
- FillScreen
- LOCATE 1, 1
- COLOR 7
- ClearKeyBoard
- PRINT "Weitermachen (J/N)? ";
- ch = JaNein2$
- IF INSTR("Nn", ch) THEN PRINT ch: EXIT DO
- farbe = farbe + 1
- IF farbe > 15 THEN farbe = 1
- LOOP
- END
-
- SUB ClearKeyBoard
- DO WHILE INKEY$ <> "" '* kopfgesteuerte LOOP-Schleife
- LOOP '* die solange durchlaufen wird,
- END SUB '* bis der Tastaturpuffer leer ist.
-
- SUB FillScreen
- DIM i AS INTEGER, j AS INTEGER
- DIM x AS SINGLE, y AS SINGLE
- CLS
- PRINT "Füllen des Bildschirmes. Benutzt werden"
- PRINT "zwei Schleifen mit ganzzahlige Variablen."
- PRINT "Um zu beginnen, Taste drücken ...";
- LOCATE , , 1: Tastenabfrage
- FOR i = 1 TO 80 '* verschachtelte FOR/NEXT
- FOR j = 1 TO 25 '* Schleifen. Die innere
- LOCATE j, i, 0: PRINT "X"; '* und die äußere Schleife
- NEXT j '* dürfen nicht überkreuzt
- NEXT i '* werden.
- FOR i = 25 TO 1 STEP -1
- FOR j = 80 TO 1 STEP -1 '* Die selbe Schleife mit
- LOCATE i, j, 0: PRINT " "; '* negativem Schritt
- NEXT j, i
- LOCATE 1, 1
- CLS
- PRINT "Und jetzt das gleiche nochmals mit ";
- PRINT "Laufzeitvariablen einfacher Genauigkeit."
- PRINT "Um zu beginnen, Taste drücken ...";
- LOCATE , , 1: Tastenabfrage
- FOR y = 1 TO 80 '* verschachtelte FOR/NEXT
- FOR x = 1 TO 25 '* Schleifen mit Fließkom-
- LOCATE x, y, 0: PRINT "X"; '* mazahlen einfacher Ge-
- NEXT x '* nauigkeit. Die Aus-
- NEXT y '* führungsgeschwindigkeit
- FOR y = 25 TO 1 STEP -1 '* ist deutlich geringer.
- FOR x = 80 TO 1 STEP -1
- LOCATE y, x, 0: PRINT " ";
- NEXT x, y
- LOCATE 1, 1
- END SUB
-
- SUB JaNein1 (ch AS STRING)
- '* Ja/Nein-Kontrolle mit DO/LOOP (fußgesteuert)
- DO '* Bei DO/LOOP-Konstruktio-
- DO '* nen und Tastaturabfragen
- ch = INKEY$ '* mit INSTR-Test müssen
- LOOP UNTIL ch <> "" '* zwei Abfragen ineinan-
- LOOP UNTIL INSTR("JNjn", ch) '* dergeschachtelt werden
- END SUB
-
- FUNCTION JaNein2$
- DIM ch AS STRING
- '* Ja/Nein-Abfrage mit WHILE/WEND (kopfgesteuert)
- WHILE UCASE$(ch) <> ja AND UCASE$(ch) <> nein
- ch = INKEY$ '* Bei WHILE/WEND-Schleifen
- WEND '* entfällt die innere
- JaNein2$ = ch '* Kontrollstruktur.
- END FUNCTION
-
- SUB Tastenabfrage
- DIM a AS STRING
- ClearKeyBoard
- WHILE a = "" '* Warten, bis beliebige
- a = INKEY$ '* Taste gedrückt wurde.
- WEND
- END SUB
-
- FUNCTION UpCase$ (InVar AS STRING)
- '* UPPER$-Funktion mit Berücksichtigung der
- '* deutschen Umlaute
- DIM Inter AS STRING, ch AS STRING
- IF LEN(InVar) > 0 THEN '* Mehrzeilige IF/ELSE/
- Inter = InVar '* ENDIF-Struktur
- FOR i = 1 TO LEN(Inter)
- ch$ = MID$(InVar, i, 1)
- SELECT CASE ch
- CASE CHR$(97) TO CHR$(122): ch = UCASE$(ch)
- CASE CHR$(132): ch = CHR$(142)
- CASE CHR$(148): ch = CHR$(153)
- CASE CHR$(129): ch = CHR$(154)
- END SELECT
- MID$(Inter, i, 1) = ch
- NEXT i
- UpCase$ = Inter
- ELSE
- InVar = ""
- END IF
- END FUNCTION