

                        Pascal-Kurs #2
                        

Nun ja, im ersten Teil ist ja noch nichts Aufregendes passiert.
Einen Bildschirm lschen und etwas schreiben zu lassen, das be-
kommt man auch noch unter DOS hin. In diesem Abschnitt wollen
wir uns einmal damit beschftigen, wie man etwas von der Tasta-
tur einliest, das es ansonsten ziemlich de sein drfte, wenn nur
der Computer seine Meinung kundtun darf.
Um etwas eingeben zu knnen, bentigt der Computer ersteinmal
eine Stelle, an der er sich das Eingegebene merken kann. Diese
Stelle nennt man Variable. Wir knnen selbst entscheiden, wie
wir die Variable bennen wollen (Oh, wie schn!). Zwechkmiger-
weise sollte man die Variablen so benennen, da man spter auch
wei, wofr sie gut waren. Also es empfiehlt sich nicht, die Va-
riablen mit a, b, c... fortlaufend durchzubenennen - ist aber
technisch mglich. Nicht mglich sind Zahlen am Anfang des Vari-
ablennamen, jegliche Form von Sonderzeichen, also alle Zeichen,
die nicht im Alphabet vorhanden, bzw. 0-9 bezeichnen. Auerdem
drft Ihr keinen Namen verwenden, der ein TP-Befehl ist. Das ist
insofern schwierig, da Ihr die meisten Befehle noch nicht kennt
(He He...). Macht nichts, denn der Computer wird schon mit Euch
schimpfen. Desweiteren sollte es keine Variable geben, die genau-
so heit wie Euer Programm in der 'PROGRAM' Zeile, sonst gibt es
sofort eine kleine se Fehlermeldung. So, nachdem wir alle mg-
lichen Bezeichnungen als Namen ausgeschlossen haben, knnen wir
weitermachen.
Habt Ihr noch im Kopf, wie Euer erstes Programm aufgebaut war?
Sehr schn! Jetzt klemmt Ihr unter die 'Uses'-Zeile einen neuen
Befehl. (Fr die, die es nicht wissen: mit dem Cursor ans Ende
der Zeile 'Uses' und Return drcken)

         Var
             Eingabe : String;

Zwei Zeilen? Richtig, es reicht zwar auch eine, so finde ich es
aber bersichtlicher. Hinter 'Var' kommt kein Semikolon, dafr
aber hinter 'String' in der zweiten Zeile und hinter jede wei-
tere Variablendeklaration! In diesem Fall heit unsere Variable
'Eingabe'. Da der Computer wissen will, was er sich da merken
soll, steht hinter dem Variablennamen ': String'. Dies sagt ihm,
da es sich um eine Kette von Zeichen handelt. Hier kann abge-
speichert werden, was die Tastatur hergibt. Ja aber was soll er
sich denn nun genau merken? Das wird spter von dem Benutzer Eu-
res Programms in die Tastatur gehackt. Vorher mssen aber noch
ein paar Vernderungen gemacht werden. Verwendet einfach folgen-
des Programm:

  Program Texteingabe;
  Uses Crt;

  Var
      Eingabe : String;

  Begin
   WriteLn('Gib Deinen Namen ein: ');
   ReadLn(Eingabe);
  End.

Fhrt das Programm doch einmal aus. Toll was! Bis jetzt hat sich
fr den Benutzer noch gar nichts gendert! Fgt vor das 'End.'
noch folgende drei Zeilen ein:

   ClrScr;
   WriteLn(Eingabe);
   ReadLn;

Probiert es einmal aus, jetzt sollte sich da schon etwas gendert
haben. Der Computer hat sich nicht nur die Eingabe gemerkt, son-
dern sie auf einer neuen Seite gleich wieder ausgegeben.
Hat alles geklappt? Wenn nicht, dann berprft doch mal, ob alle
Semikolon gesetzt sind, stimmen die Hochkommata, steht hinter End
ein Punke, ist der Computer eingeschaltet? (Diese Prfung ist bei
jedem nicht funktionierendem Programm sinnvoll) So, jetzt klappt
es aber. Was bedeutet denn nun die Vernderung genau? Die Zeile
ReadLn(Eingabe); wartet jetzt so lange, bis der Mensch an der Tas-
tatur was eintippt und mit Return besttigt. Nun ja, das ist ei-
gentlich nichts Neues, denn das passierte auch beim Programm aus
dem ersten Teil. Nur damals konnte man das Eingegebene nicht mehr
abrufen. Diesmal hatten wir hinter ReadLn in Klammern eine Va-
riable gesetzt. ReadLn speichert alles, was eingetippt wird, in
dieser Variablen, und sobald Return gedrckt wird, merkt es sich
auch, was da alles getippt wurde. Um diesen getippten Text ausge-
ben zu knnen, schreiben wir die Variable in Klammern hinter den
Befehl WriteLn. Wichtig: keine Hochkomma, denn sonst wrde der
Variablenname als Text interpretiert, und auf dem Bildschirm
wrde in diesem Fall nur 'Eingabe' erscheinen. Man merkt sich al-
so, Variablen werden bei ReadLn und WriteLn einfach so in Klam-
mern geschrieben. Jede Zeichenfolge, die der Programmierer dem
Benutzer mitteilen mchte, und die nicht in einer Variablen ge-
speichert ist, wird zwischen Hochkommas ausgegeben!!!
Nun noch ein paar Bemerkungen zu den Befehlen Read und Write.
Lat Ihr die Endung 'Ln' hinter den Befehlen weg, wird alles, was
ausgegeben wird, hintereinander geschrieben. Die Endung 'Ln'
sorgt dafr, da nach diesem Befehl eine neue Zeile begonnen
wird. Um also eine Leerzeile zu erzeugen, gibt man einfach den
Befehl WriteLn; an entsprechender Stele ein. Ein Problem gibt es
bei dem Befehl Read bzw. ReadLn. Es ist nmlich nicht mglich,
damit einen Text auszugeben, d.h., soll etwas gefragt werden, so
mu erst mit Write('Frage? '); die Frage ausgegeben werden. Der
Computer bleibt nun in der Zeile und erwartet auch die Antwort
direkt hinter der Frage. Soviel zu diesen beiden Befehlen, die
und noch sehr oft begegnen werden und noch allerhand Mglichkei-
ten bieten, die ich an dieser Stelle aber noch nicht verraten
will, da das einfach viel zu viel wrde.
Kommen wir lieber zu etwas Sinnvollerem. Da wir etwas eingeben
und etwas ausgeben knnen, haben wir zwei Bestandteile des welt-
berhmten EVA-Prinzips schon besprochen. Lediglich das V(erar-
beitung) haben wir noch berhaupt nicht betrachtet. Versuchen wir
nun folgendes: wir geben zwei Zahlen ein, und der Computer ad-
diert, subtrahiert und multipliziert. (Wahnsinn!!!)
Dazu nehmen wir folgendes Programm:

Program Mathe;
Uses Crt;

Var
    x, y, e : Integer;

Begin
 ClrScr;
 Write('Geben Sie eine Ganzzahl ein: ');
 ReadLn(x);
 Write('Geben Sie eine zweite Ganzzahl ein: ');
 ReadLn(y);
 e := x + y;
 WriteLn(x,' + ',y,' = ',e);
 e := x - y;
 WriteLn(x,' - ',y,' = ',e);
 e := x * y;
 WriteLn(x,' * ',y,' = ',e);
 ReadLn;
End.

                                                 Tnneminator

PS: Tja, irgendwie fehlt hier wohl noch etwas. Ich hoffe mal, ich
versaue nicht den ganze Artikel, wenn ich das jetzt bernehme.
Zum einen folgende Zeile: 'e := x + y;'. Hier wird der Variablen
e die Summe der beiden Variablen x und y zugewiesen. Das ge-
schieht mit Hilfe des 'Zuweisungsbefehls' :=. Mit := weist man
jeder beliebigen Variable einen Wert zu. Sei es, wie in diesem
Fall, einer Integer-Variablen (einer Ganzzahl) oder aber auch
einer String-Variablen (Text) : StringVariable := 'Hallo'.
x + y gibt nur an, das die Summe aus x und y gebildet werden
soll. Bei x - y soll natrlich y von x abgezogen werden, und bei
x * y soll das Produkt der beiden Zahlen ermittelt werden. Man
sieht in diesem Programm auch, da man eine Variable mehrfach
benutzen kann. Also keine einmalige Zuweisung und dann wech mit
der Variable!
Nun noch etwas zum Write/WriteLn-Befehl. Wie man in diesem Bei-
spiel sieht, ist es mglich, Variablen und Text gleichzeitig aus-
zugeben. Man mu die verschiedenen Variablen bzw. den Text le-
diglich durch ein Komma trennen: Write(V1,'Text1',V2,',Text2);,
wobei V1 und V2 natrlich vorher als Variablen deklariert sein
mssen.

So, ich hoffe ich hab das jut jenuch jemacht (hoffentlich
schlachtet mich der Tnneminator nicht)...

                                                 Kemil

