Thema_1

ereig_1.lst

' Grundlegende Eigenschaften eines einfachsten
' Programms unter Windows
' Der INPUT-Befehl ist sehr einfach aber nicht WINDOWS-gemäß.
' (Vergleiche Dialoge)
' Die Ereignisschleife ist wesentlich! Unter WINDOWS ist
' kein Programm allein.
'
// Programm EREIGNIS
OPENW #1                    // Fenster Nr. 1 öffnen
INPUT "Bitte Zahl Eingeben: ", eingabe
ausgabe = eingabe ^ 4           // vierte Potenz
TEXT 25,25, ausgabe
REPEAT                      // Wiederhole die
  GETEVENT                  // Ereignisabfrage
UNTIL MENU(1)=4             // bis Schließmenü betätigt.
CLOSEW #1                   // Fenster Nr.1 schließen
'
' AUFGABEN: 1. Bewegung des Fensters an der Titelleiste,
'              anschließend verkleinern, vergrößern.
'           2. Klick auf den Schaltknopf Variable (unten im Editor).

variab_2.lst

'EVA-Prinzip, Datentypen, Variablenbezeichnung
'(Siehe Variable-Schaltknopf unten)
'
'Variablentypen (einfache Variablen)
'    Name   Postfix Speicherpl.Variablentyp   Bereich
'-----------------------------------------------------------------------
'    Double    #     8 Bytes   real    reelle -2.2E308 | 1.67E308
'    Long      %     4 Bytes   integer ganze  -2147483648 | +2147483647
'    Word      &     2 Bytes   integer ganze  -32768 +32767
'    Byte      |     1 Byte    integer ganze   0 | 255.
'    Boolean   !     1 Bit     boolean logisch TRUE (-1) | FALSE (0)
'    String    $     abhängig  string  Zeichenkette
'                    vom String
'                    maximal 32767
'
' Binärzahlen bei den Fensterattributen siehe
' Hilfe zu OPENW (Cursor setzen, shift+F1)
' Grafik-TEXT-Ausgabe (x,y-Koordinaten auf dem Bildschirm)
' und Typumwandlung str$()

//Programm zu DATEN , VARIABLEN
OPENW #1,20,40,500,400,&X0011111000      // (siehe Hilfe)
TITLEW #1,"Artikelbearbeitung"
// --- Eingabe ---
INPUT "Artikelbezeichnung: ",artikel$
INPUT "Stückzahl: ",stk%
INPUT "Preis: ", preis
// --- Verarbeitung ---
gesamt=stk%*preis
mwst = gesamt * 0.16            // Dezimalpunkt
brutto=gesamt+mwst
// --- Ausgabe ---
REPEAT
  TEXT 10,200,"Gesamtpreis: "+STR$(gesamt) // Typumwandlung
  TEXT 10,220,"Mehrwertsteuer: "+STR$(mwst)
  TEXT 10,240,"Gesamtbruttopreis:"+STR$(brutto)
  GETEVENT
UNTIL MENU(1)=4 OR INKEY$=CHR$(27) // ASCII-Code 27: ESC-Taste
CLOSEW #1
'
' AUFGABEN: 1. Änderung der Fensterattribute im Befehl OPENW.
'           2. Veränderung der Fenstergröße nach Ausgabe.

if_3.lst

' Struktogramme (siehe Tafelwerk)
'
'
//Übung zur Struktogrammtechnik
OPENW #1,40,10,400,300,&X11111111111
TITLEW #1,"Struktogrammtechnik"
INPUT "Gebe eine Zahl ein:",zahl
REPEAT
  IF zahl=0
    TEXT 50,200,"Die Zahl hat kein Reziprokes!"
  ELSE
    reziprokes = 1 / zahl
    TEXT 50,30,"Das Reziproke der Zahl ist: " + STR$(reziprokes)
  ENDIF
  GETEVENT
UNTIL MENU(1)=4 OR INKEY$=CHR$(27)
CLOSEW #1
'
'AUFGABEN: 1. Struktogramm zeichnen
'          2. Begriffe: Fensterattribute
'                       Typumwandlung
'                       ASCII

zylind_4.lst

' Zwei Fenster
' "Denk-"pausen
' grafische Elemente in der Ereignisabfrageschleife
' (Test: max. Größe des Ausgabefensters)
'
//Volumen eines Zylinders
//-----------------------
OPENW #1,10,20,400,150,&x0011110000
DELAY 0.5                             // 1/2 Sekunde verstreicht
OPENW #2,40,100,450,250,&x1011110000
DELAY .5
TITLEW #1,"Eingabefenster"
DELAY 1.5
TITLEW #2,"Ausgabefenster"
DELAY 1.5
TOPW #1                              // Fenster 1: Vordergrund
// ---------- Eingabe -------------
INPUT "Radius: ",radius
INPUT "Höhe: ",hoehe
// ------- Verarbeitung -----------
volumen=PI*radius^2*hoehe
// ---------- Ausgabe -------------
TOPW #2                              // Fenster 2: Vordergrund
REPEAT
  GETEVENT                           // Ereignisabfrage
  TEXT 10,15,"Das Volumen beträgt :"
  TEXT 30,40,volumen
  ELLIPSE 100,200,50,25
  ELLIPSE 100,300,50,25
  LINE 50,200,50,300
  LINE 150,200,150,300
UNTIL MENU(1)=4 OR INKEY$=CHR$(27)
CLOSEW #2
CLOSEW #1
'
' Aufgaben: 1. Variation des Programms

while_5.lst

' Struktogrammtechnik:
' Programmschleifen
' abweisende Schleife (Anfangstest)
'
// Programm while-Schleife
//
OPENW #1
TEXT 50,20,"Bitte einen Buchstaben eintippen, Enter"
TEXT 50,40,"(Wort)-Ende mit Leertaste"
buchstabe&=0
WHILE NOT(buchstabe$=CHR$(32)) // ASCII 32: Leerzeichen
  GETEVENT
  wort$=wort$+buchstabe$
  TEXT 50,60,wort$
  INPUT "";buchstabe$       // (*)
  buchstabe&=buchstabe&+1
  TEXT 50,100,"Schleifendurchlauf:"
  TEXT 210,100,buchstabe&
WEND
wort$="*** "+wort$+" ***"
TEXT 50,60,"Das Wort ist  "+wort$
DELAY 5
CLOSEW #1
'
' AUFGABEN: 1. Struktogramm zeichnen
'           2. Zeile (*) zusätzlich vor die Schleife kopieren
'              (Wirkung?)
'           3. ; nach INPUT "" in , ändern - Wirkung?

zaehl_6.lst

'
// Programm Zählschleife
OPENW #1
TEXT 200,15,"   ms "+STR$(TIMER)
DELAY 3
startzeit%=TIMER                 // ms nach Systemstart
FOR i%=0 TO 100000
  summe=summe+i%
  PEEKEVENT
  IF (i% MOD 1000)=0
    TEXT 10,15,"Zähler: "+STR$(i%)
    TEXT 10,60,"Zeit: "+STR$(ROUND((TIMER-startzeit%)/1000))+"s"
  ENDIF
NEXT i%
TEXT 10,30,"Die Summe ist: "+STR$(summe)
DELAY 5
CLOSEW #1
'
' Aufgaben: 1. Struktogramm zeichnen
'           2. Ausgabe der Startzeit
'           3. Programm abändern: Produkt der Zahlen (Überlauf)
'

doloop_7.lst

' Struktogramm der Schleife mit internem Abbruch:
'     __________________________
'    | tue |                    |
'    |     |        a1          |
'    |     |____________________|
'    |     |<  Abbruch wenn ... |
'    |     |____________________|
'    |     |                    |
'    |     |        a2          |
'    |_____|____________________|

// Programm mit Abbruch innerhalb der Schleife.
OPENW #1,10,20,550,380,&x1011110000
TITLEW #1,"Ende Grafik: klick rechts "
DO
  GETEVENT
  MOUSE maus_x% ,maus_y%,maus_k% // Mausstatus
  EXIT IF maus_k%=2      // Abbruch wenn Maustaste rechts
  IF maus_k%=1           // MausKnopf links
    PCIRCLE maus_x%,maus_y%,4  // gefüllter Kreis
  ENDIF
LOOP
CLOSEW #1
'
' Aufgaben: 1. Programmerweiterung: CLS n% (Farbe n%)
'                                   COLOR v%,h%
'           2. Abbruchkriterium ändern