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