Magic Disk 64

home to index to html: MD8909-KURSE-BASIC_KURS_TEIL_8-3.html
Eine andere Anwendungsweise  wäre  viel-
leicht  die Möglichkeit, ein Programm in
Form von ASCII-Zeichen in einem File  zu
speichern, um es, zum Beispiel mit Hilfe
eines Terminalprogramms, in eine Mailbox
zu  schicken.  In diesem Fall müßten Sie
nur ein sequentielles File zum Schreiben
öffnen, mit CMD die Ausgabe  auf  dieses
File  umleiten  und  das  Programm  dann
LISTen.                                 
Eines wäre jedoch noch zu beachten.  Da-
mit  Sie  nämlich  wieder  aus  dem CMD-
Befehl herauskommen, um dann die Ausgabe
wieder auf  den  Bildschirm  zu  leiten,
müssen Sie einen einfachen PRINT#-Befehl
nachschieben, ohne Parameter, etwa so:  
PRINT#1                                 
Wobei hier anstelle der  "1"  auch  jede
andere  Zahl  stehen könnte, je nachdem,
welche Filenummer Sie vorher beim  OPEN-
Befehl benutzt hatten, auf dessen geöff-
neten Kanal Sie dann die Ausgabe  umlei-
teten.                                  
Anschließend sollte man den  Kanal  auch
noch schließen, also:                   
CLOSE 1 :REM (je nach Filenummer)       
Damit hätten wir  das  Thema  Peripherie
abgeschlossen.  Ich  muß  Ihnen nun noch
etwas über Variablen erzählen.  Wie  wir
diese  handhaben  und vor allem, wie wir
deren Namen wählen, hatten wir ja  schon
im 1. und 2. Teil dieses Kurses geklärt.
Es gibt allerdings noch eine weitere Art
Variablen zu benutzen, nämlich durch die
Definition von sogenannten Variablenfel-
dern.  Dies  klingt   vielleicht   etwas
merkwürdig,  doch werden Sie gleich ver-
stehen, was damit geimeint ist.         
Ein Feld, oder eine Fläche, hat ja,  wie
Sie  vielleicht  aus dem Geometrieunter-
richt noch wissen, zwei Ausdehnungen.   
Zum  einen die Länge und zum anderen die
Breite. Man sagt auch "ein Feld hat zwei
Dimensionen". Es ist also ein Objekt der
Zweiten Dimension. Ebenso gibt  es  eine
Erste Dimension, die alle Strecken bein-
haltet. Diese  haben  nur  eine  einzige
Ausdehnung, nämlich die Länge.          
Diesen  Begriff  der  Dimension kann man
nun auch auf  Variablen  übertragen.  Es
gibt  nämlich  in BASIC die Möglichkeit,
mehrere Variablen mit dem gleichen Namen
anzulegen, die alle  jedoch  voneinander
unterschieden  werden,  indem  man ihnen
einen sogenannten Index gibt. Das heißt,
daß jeder Variable eine  bestimmte  Zahl
nachgestellt  wird,  die  eine  ganz be-
stimmte Variable darstellt.  Anwendungs-
gebiete  gibt  es  hierfür  wie  Sand am
Meer. Angenommen, Sie möchten  ein  Pro-
gramm schreiben, daß alle Adressen Ihrer
Bekannten  und Verwandten speichert. Ge-
hen wir einmal davon aus, daß dies maxi-
mal  100 bis 200 an der Zahl sind. Möch-
ten Sie nun alle diese Namen in  "norma-
len"  Variablen speichern, so würden Sie
jedesmal einen neuen Variablennamen  he-
raussuchen  müssen,  damit  BASIC  diese
voneinander unterscheiden kann.  Stellen
Sie  sich  einmal das Chaos vor, daß Sie
dann in einem Programm hätten.  200  Va-
riablen,  von denen Sie nicht mehr genau
wissen was zu wem gehört. Wenn man davon
ausgeht, daß  Sie  vielleicht  zu  jedem
Namen  auch  noch  Straße,   Hausnummer,
Wohnort und Telefonnummer speichern wol-
len, dann  müßte  Herr  Müller  aus  der
Bahnhofstaße  37  in  8000  München  und
der Telefonnummer 089/12345678  etwa  in
folgenden Variablen verteilt werden :   
AX$="Herr Mueller"                      
FR$="Bahnhofstraße"                     
KL=37                                   
OG=8000                                 
TA$="Muenchen"                          
XD$="089/12345678"                      
Sie  sehen  also, wir haben hier wahllos
verteilte Variablen vor uns, die  nichts
über ihren Inhalt aussagen, da jeder nur
erdenkliche Variablenname genutzt werden
muß.  Stellen  Sie sich doch nur die me-
terlangen Listings von IF-Abfragen  vor,
die  man  machen müßte, um eine ganz be-
stimmte Adresse herauszufinden. Außerdem
wüßte man noch nicht einmal  welche  Va-
riablen  zu  einer Adresse gehören. Des-
halb gibt es die Feldvariablen. Sie sol-
len hier eine Abhilfe schaffen. Auf die-
se Art und  Weise  können  nämlich  bei-
spielsweise  alle  Namen in einem Varia-
blennamen  zusammengeafßt  werden,  oder
alle  Straßennamen,  oder alle Städtena-
men...                                  
Doch wie wirds gemacht?  Dazu wollen wir
jetzt kommen.  Zuerst  müssen  wir  eine
Variable "dimensionieren".  Im  Klartext
heißt  das,  daß  wir  einen  Namen  für
das  Variablenfeld  und die maximale An-
zahl  der in ihm zu speichernden  Daten,
festlegen  müssen.                      
In unserem Fall  einer  Adressverwaltung
nehmen wir (beispiels- weise) den  Vari-
ablennamen NA$ für "Na- me". Die  Dimen-
sionierung wird mit einem eigenen BASIC-
Befehl durchgeführt, dem DIM-Befehl. Bei
diesem wird zuerst der Name des  Variab-
lenfeldes  angegeben  und   anschließend
seine maximale  Ausdehnung.  Wir  wollen
also 200  Stringvariablen  im  Feld  NA$
speichern. Deshald also diese Anweisung:
DIM NA$(200)                            
Schon wäre unser Feld dimensioniert. Wir
haben hier ein eindimensionales Feld vor
uns,  dem  DIM-Befehl  wird  zuerst  der
Feldname  und  dann  die maximale Anzahl
aller  Datenelemente,  in  Klammern  ge-
setzt,  nachgestellt.  In  dem  Feld NA$
können wir nun also 200 Variablen unter-
bringen.                                
Um jetzt ein einzelnes dieser 200  Date-
nelemente  adressieren zu können, müssen
wir  seine  Indexnummer,  ebenfalls   in
Klammern  gesetzt, einfach dem Feldnamen
nachstellen. Diese  Datenelemente  eines
Feldes  werden  übrigens genauso gehand-
habt, wie die Variablenart  in  der  sie
dimensioniert  wurden.  Wir  haben  hier
einen  Stringvariablennamen   angegeben,
also  haben wir auch 200 Stringvariablen
vordefiniert. Demnach sind auch die  Zu-
weisungen  ausgelegt.  Wie  bei  Strings
auch geben Sie den obigen  "Variablenna-
men"  an  und  weisen  ihm mit Hilfe des
"="-Zeichens eine Zeichenkette zu.  Etwa
so:                                     
NA$(0)="HERR MUELLER"                   
Hier  haben  wir dem 0. Datenelement den
String "Herr  Mueller"  zugewiesen.  Sie
erinnern  sich  ja :  der Computer fängt
immer bei 0 an  zu  zählen,  dementspre-
chend  ist das 0. Datenelement der erste
Eintrag in unserem Datenfeld.  Doch  wir
müssen hier keineswegs einer numerischen
Reihenfolge  der Variablenzuweisung vor-
gehen.  Vielmehr  können  Sie  ebenfalls
auch  Zuweisungen  von  Werten bei nume-
risch größeren Variablen vornehmen.  Sie
haben hierbei also freie Hand. Wie wärs,
wenn  wir "Herrn Schultze" im 134. Date-
nelement unterbrächten, kein Problem:   
NA$(134)="SCHULTZE"                     
Doch die eigentliche Stärke der  Feldva-
riablen  liegt  nicht darin, daß man sie
in einem Namen zusammenfassen kann, son-
dern  vielmehr,  daß man mit Hilfe einer
Schleife gezielt  ein  Feld  nach  einem
bestimmten  Datensatz  durchsuchen kann,
ohne  dabei  großen   Programmieraufwand
leisten  zu müssen. Angenommen wir woll-
ten Herrn Schultze in unserem  Datenfeld
wiederfinden,  dann  wäre folgendes Pro-
gramm schnell und einfach geschrieben:  
100 FOR I=0 TO 200                      
110 IF NA$(I)="HERR SCHULTZE" THEN 130  
120 NEXT                                
130 PRINT"HERR  SCHULTZE STEHT IM DATENS
ATZ NR.";I                              
Wenn wir nun die anderen Daten ebenfalls
so anlegen, daß  wir  200  Datenelemente
darin  speichern können  und den einzel-
nen  Feldelementen  mit  dem  Index  134
ebenfalls  die zu Herrn Schultze gehöri-
gen Daten zuordnen, so können  wir  ganz
einfach  mit  Hilfe  der Variablen I auf
alle Datenelemente der Adresse  von  ihm
zugreifen, etwa so:                     
200 PRINT NA$(I) :REM NAME              
210 PRINT SR$(I) :REM STRASSE           
220 PRINT NR(I)  :REM HAUSNUMMER        
230 PRINT PL(I),OR$(I) :REM PLZ UND ORT 
240 PRINT TE$(I) :REM TELEFONNUMMER     
Und schon wäre die gesamte  Adresse  von
Herrn  Schultze  ausgedruckt,  da wir ja
vorher die einzelnen Elemente  ebenfalls
den  Feldelementen  mit  der  Nummer 134
zuweisen wollten. So einfach ist es dann
beispielsweise einen  bestimmten  Daten-
satz  zu  finden.  Auch beim Abspeichern
haben wir keine Probleme,  wir  brauchen
lediglich  eine  Schleife zu programmie-
ren, die alle Datenelemente  des  Feldes
von   0   bis   200  in  ein  WRITE-File
schreibt.                               
Wie  Sie sahen, hatten wir ein eindimen-
sionales Feld  dimensioniert.  Es  hatte
also  nur EINE Ausdehnung. Man kann dies
jedoch beliebig erweitern. Wie  wäre  es
denn  mit  einem  zwei-, drei-, oder gar
vierdimensionalen Feld? Bitte:          
DIM A$(1000,10)                         
DIM B%(10,3)                            
DIM C(5,5,5)                            
Mit diesen Dimensionierungen  haben  wir
nun  also  veranlaßt, daß beispielsweise
ein Feld mit dem Namen A$ für 1000 Date-
nelemente dimensioniert wurde, von denen
jedes einzelne wiederum 10  weitere  Da-
tennelemente aufnehmen kann. Diese  kön-
nen Sie dann folgendermaßen ansprechen: 
PRINT A$(523,3)                         
Valid HTML 4.0 Transitional Valid CSS!