

Einsteigerkurs #1


Ich gehe davon aus, da jeder Benutzer eines PC's wei, wie
man QBASIC startet, wenn dies nicht der Fall sein sollte, solltet
ihr in der DOS Ebene einfach 'QBASIC' eintippen (Sollte normaler-
weise funktionieren). Fr BASIC-Freaks wird dieser erste Teil des
Einsteigerkurses wahrscheinlich zu langweilig sein, um sie zu
fesseln, aber der Kurs ist halt fr Einsteiger gedacht und
deshalb heit dieser Kurs ja auch Einsteigerkurs (wer htte das
gedacht !?).

In diesem ersten Teil gehe ich auf sequentielle Dateien ein.
                                   

Sequentielle Dateien sind in der Regel einfacher zu erzeugen als
Direktzugriffs-Dateien, sind jedoch nicht so flexibel und
erlauben auch nicht einen so schnellen Datenzugriff, wie
letztere. In einer sequentiellen Datei werden die Datenelemente
als Gruppen von ASCII-Zeichen eines nach dem anderen
(sequentiell) in der Datei abgelegt. In derselben Ordnung werden
sie dann auch wieder aus der Datei gelesen.
Das unten angegebene Beispielprogramm zeigt, wie mit QBASIC eine
sequentielle Datei mit dem Namen DATEN erzeugt wird und mit
Daten, die ber die Tastatur eingegeben werden, gefllt wird.

Erzeugen einer sequentiellen Datei:


  OPEN "Daten" FOR OUTPUT AS #1               'ffnet die Datei
                                               zur Ausgabe
  CLS                                         'lschen des Bildes
Eingabe:                                      'Sprugmarke       
    INPUT "Name ('RETURN' zum Beenden): "; N$ 'Namenseingabe mit
                                               Abbruchbedingung
    IF N$ = "" THEN GOTO Fertig               'Abfrage der Ab-
                                               bruchbedingung
    INPUT "     Vorname: "; VOR$              '   Eingabe von
    INPUT "Geburtsdatum: "; GEB$               beliebigen Daten
    WRITE #1, N$, VOR$, GEB$                  '  schreiben der
    PRINT Daten
    GOTO Eingabe                              'zurckkehren zur
                                               Sprungmarke

Fertig:                                       'Sprungmarke
    CLOSE #1                                  'Datei schlieen
    END                                       'Programmende


Wie im Beispiel gezeigt, werden folgende Programmschritte
bentigt, um eine sequentielle Datei zu erzeugen und Daten
abzulegen:

1. Die Datei fr die Ausgabe ffnen.
2. Daten mit der WRITE#-Anweisung in die Datei schreiben.
3. Am Ende der Datenbertragung die Datei schlieen.

In einem weiteren Beispielprogramm wird gezeigt, wie die Daten
aus der Datei Daten, die mit dem ersten Beispielprogramm erzeugt
wurde, gelesen werden. Um das ganze zu erschweren, werden nur
die Namen der Leute angezeigt werden, die im Jahr 1977 geboren
wurden.

Aus einer sequentiellen Datei lesen:


  OPEN "I", #1, "Daten"               'ffnet Datei zum Lesen
  CLS                                 'lschen des Bildes
  WHILE NOT EOF(1)                    'Steuerschleife (Anfang)
     INPUT #1, N$, VOR$, GEB$         'liest Daten ein
     IF RIGHT$(GEB$, 2) = "77" THEN PRINT N$, VOR$, GEB$ 'Ausgabe
  WEND                                'Steuerschleife (Ende)


Es wird jedes Datenelement nacheinander gelesen und daraufhin
untersucht, ob am Ende die Zahl 77 steht. Nur dann wird der Name
angezeigt. Die Steuerschleife WHILE...WEND verwendet vor jedem
Lesevorgang die EOF-Funktion, um zu berprfen, ob das Dateiende
erreicht ist. Damit wird verhindert, da ein Fehler auftritt,
wenn versucht wird, ber das Dateiende hinaus zu lesen.

Bei einer existierenden sequentiellen Datei knnen nicht einfach
Daten hinzugefgt werden, indem die Datei fr die Ausgabe ge-
ffnet wird. Dies wrde nmlich die vorhandenen Daten zerstren.
Statt dessen mu man die Daten an die Datei anfgen. Falls die
Datei nicht vorher existiert hat, arbeitet der Anfgemodus genau
wie der normale Ausgabemodus (Beispielprogramm folgt in der
nchsten Ausgabe des STOD, da ich nicht mehr fertiggeworden bin,
entschuldigt bitte).

Die Direktzugriffsdatei werde ich dann im nchsten Teil des
Einsteigerkurses erklren !!! Die beiden Beispielprogramme
findet ihr brigens auch auf der STOD-Diskette (SEQUENT.BAS,
SEQULES.BAS).
                                     
                                     Tschssi  
                                               M O Z A R T

