# Pascal pur

Eigentlich ist bereits das erste Programmbeispiel im Buch schon mehr als reines Pascal. Falls du aber mal »allereinfachstes« Pascal sehen willst, sozusagen Pascal pur, dann findest du hier einige Beispiele. Die Dateien dazu finden sich auf der CD im Ordner Extra.

Zuvor aber sollst du wissen, wie man die Quelltexte im Extra-Ordner im Delphi verwendet:

à Starte Delphi, z.B. über Start, Alle Programme und Delphi.

à Öffne dann das Basisprojekt Pas_pur.Dpr.

Nun kannst du den vorliegenden Quelltext als Rahmen für dein Pascal-Programm nutzen:

à Ergänze einfach den jeweiligen Quelltext (zwischen begin und end).

## Einfach Hallo

Und schon kommen die ersten Zeilen (à Hallo0.dpr):

program Hallo0;

{$APPTYPE CONSOLE}

uses SysUtils;

begin

writeln ('Hallo!');

readln;

end.

Bevor wir uns in den Quelltext – wie dieser Programmtext auch genannt wird – stürzen, beschäftigen wir uns erst einmal mit Klammern.

Schon in diesen wenigen Zeilen tauchen gleich zwei von drei Sorten von Klammern auf. Was sie bedeuten, siehst du in dieser Tabelle:

| Bezeichnung | Tastenkombinationen
( ) | runde Klammern | [Shift][8] und [Shift][9]
{ } | geschweifte Klammern | [AltGr][7] und [AltGr][0]
[ ] | eckige Klammern | [AltGr][8] und [AltGr][9]

Damit kennst du ihre Namen und weißt, wo du sie auf der Tastatur finden kannst. Auf die Bedeutung jedes Klammernpaares kommen wir im Laufe dieses Kapitels noch zu sprechen.

Aber nun widmen wir uns zeilenweise dem Quelltext unseres allerersten Pascal-Programms. Am Anfang kommt eine Zeile, die das Projekt bzw. Programm einleitet:

program Hallo0;

Mit program wird ein Pascal- bzw. Delphiprogramm eingeleitet. Dahinter steht ein Name, der in der Regel auch der Dateiname ist (hier Hallo0.dpr)

Über die nächsten zwei Zeilen musst du nur soviel wissen: Sie sorgen dafür, dass dein »Pur«-Programme überhaupt unter Delphi funktionieren bzw. dass sie in einem Extrafenster ablaufen:

{$APPTYPE CONSOLE}

uses SysUtils;

Unter Windows nennt man das »Eingabeaufforderung«, früher besser bekannt als »DOS-Konsole«. (DOS ist ein altes ganz einfaches Betriebssystem, das vor dem Erfolg von Windows sozusagen PC-Standard war.)

## Prozeduren

Und damit sind wir bereits bei der eigentlichen Hauptsache:

begin

writeln ('Hallo!');

readln;

end.

Ein typisches Programm setzt sich in Pascal aus einem Kopf und einem Rumpf zusammen. Der Kopf besteht aus der Folge program mit einem Namen.

Der Rumpf des Programms ist immer in begin und end (mit Punkt!) gefasst, sozusagen als Anfangs- und Endmarke. Er umfasst den Algorithmus, der dafür sorgt, dass auf dem Bildschirm ein »Hallo« angezeigt wird und wir das Programm mit der [Eingabe]-Taste beenden können.

Unter einem Algorithmus versteht man eine Sammlung von Anweisungen oder Befehlen, die für den Computer eindeutig ausführbar sind – also eine Art Gebrauchsanweisung, allerdings eine wirklich verständliche.

Der Rumpf kann auch leer sein, dann würde das ganze Programm so aussehen:

begin

end.

Das wäre dann das absolut kleinste Pascal-Programm, es würde zwar laufen, aber wirklich nichts tun. Man könnte es sogar in eine einzige Zeile packen:

begin end.

Doch nun zu den »Innereien« des Programmrumpfes in unserem Hallo-Beispiel. Weiter oben habe ich schon kurz beschrieben, was hier geleistet werden soll. Genauer hingeschaut, steht dort als erste Zeile eine Prozedur:

writeln ('Hallo!');

writeln ist die Abkürzung für »write line«, was zu Deutsch frei übersetzt heißt: »Schreibe und beginne dann eine neue Zeile«. Dabei ist der Bildschirm das Gerät für die Standardausgabe. Dorthin schreibt der PC sozusagen z.B. einen Text.

Prozeduren spielen in Pascal eine große Rolle. Man versteht darunter eine Methode, die beschreibt, wie bestimmte Prozesse auszuführen sind. Gleich in unserem ersten Beispiel gibt es zwei davon, nämlich writeln und readln.

Daneben gibt es noch Funktionen, die außerdem am Schluss noch eine Wert zurückgeben. (Diesen Typ von Methoden lernst du im Buch näher kennen.)

Dann ist da noch eine Zeile. Wozu brauchen wir die?

readln;

Unschwer zu erkennen ist, dass es sich um das Gegenteil von writeln zu handeln scheint. Es muss sich wohl um die Abkürzung für »read line« handeln, zu Deutsch etwa: »Lies und beginne dann eine neue Zeile«. Hier ist die Tastatur gefragt, das Gerät für die Standardeingabe. Dort liest der PC die gedrückten Tasten.

Ohne diese Prozedur würde der Computer sofort nach der Anzeige von »Hallo« das Programm beenden, was für schnelle PCs bedeutet, dass wir vom »Hallo« (fast) nichts zu sehen bekommen.

Wir benötigen also eine Art »Bremse«, damit das Programm wartet, bis wir uns am »Hallo« satt gesehen haben und auf die [Eingabe]-Taste drücken, um selbst das Programmende zu bestimmen.

## Raus und Rein

Für unsere nächste Hallo-Version machen wir es uns nicht allzu schwer, aber ein kleines Gespräch sollte schon drin sein (à Hallo1.dpr):

program Hallo1;

{$APPTYPE CONSOLE}

uses SysUtils;

var Name: String;

begin

write ('Hallo! Wer bist du? ');

readln (Name);

write (Name, ', hoffentlich geht es dir gut! ');

writeln ('Ciao!');

readln;

end.

Beginnen wir in der Programmmitte (zwischen begin und end). Die Bedeutung der »Schreib«-Zeilen erklären sich fast von selbst:

write ('Hallo! Wer bist du? ');

readln (Name);

write (Name, ', hoffentlich geht es dir gut! ');

writeln ('Ciao!');

readln;

Aber irgendwie gibt es doch etwas Neues! Du hast es sicher schon erraten: write ist Schreiben ohne anschließende Neuzeile. Der Anzeigecursor bleibt (erst mal) dort stehen, wohin er das letzten Zeichen geschrieben hat.

Hier kommt neben mehreren write-Anweisungen ein zweites readln vor, diesmal übernimmt es – wie wir es schon von write(ln) kennen – einen Wert, auch Parameter genannt:

readln (Name);

Abgeschlossen wird eine Eingabe immer durch das Drücken der [Enter]- oder [Eingabe]-Taste. Und damit der eingetippte Text nicht verloren geht, wird er in einer Variablen gespeichert. Dann kann gleich in der folgenden Zeile der Name über write wieder angezeigt werden.

Statt Variable kann man auch »Platzhalter« sagen. Und so wird eine Variable vor ihrer Benutzung auch mitsamt benötigtem Platz vereinbart:

var Name: String;

Zuerst kommt das Wörtchen var als Abkürzung von »variable«, dann folgt die Bezeichnung, die wir der Variablen geben – hier Name. Schließlich wird durch einen Doppelpunkt getrennt der Typ der Variablen Name festgelegt. String heißt hier frei übersetzt »Zeichenkette«, man sagt aber meistens auch String.

Es ist in Pascal übrigens egal, ob du Name oder name oder NAME vereinbarst! Denn in Pascal wird – im Gegensatz etwa zu C++ –zwischen Groß- und Kleinschreibung nicht unterschieden.

## Noch mehr »Small talk«

Wenn du Spaß an unserem Hallo-Projekt gefunden hast, könntest du es z.B. so erweitern (à Hallo2.dpr):

program Hallo2;

{$APPTYPE CONSOLE}

uses SysUtils;

var Name, Antwort: String;

begin

write ('Hallo! Wer bist du? ');

readln (Name);

write (Name, ', geht es dir gut? ');

readln (Antwort);

writeln ('Na ja, dann Ciao!');

readln;

end.}

Neu ist eine zweite Variable Antwort, womit das Programm noch etwas mehr einem Gespräch ähnelt. Allerdings bleibt das Ganze unbefriedigend, denn ganz gleich wie es dir – als Gesprächspartner – geht, mehr als ein »Na ja« hat der Computer nicht zu erwidern.

Außer den Strings gibt es natürlich auch Zahlen – mit denen man nebenbei rechnen kann (siehe Buch). Hier erweitern wir das Programm noch ein wenig, um neben den Zeichenketten auch den Zahlen die Möglichkeit zu geben, sich vorzustellen:

program Hallo3;

{$APPTYPE CONSOLE}

uses SysUtils;

var Name, Antwort: String; Alter: Integer; Geld: Real;

begin

write ('Hallo! Wer bist du? ');

readln (Name);

write (Name, ', geht es dir gut? ');

readln (Antwort);

write ('Wie alt bist du eigentlich? ');

readln (Alter);

write ('Und wie viel Kohle bekommst du so? ');

readln (Geld);

writeln ('Na ja, dann Ciao!');

readln;

end.

Mit Integer werden ganze Zahlen, mit Real Dezimalzahlen vereinbart. (Wichtig ist, dass bei der Eingabe ein Dezimalpunkt – kein Komma – verwendet werden muss!)

Wenn du nun willst, kannst du dieses Gespräch ja ein wenig weiterspinnen...

## Zum Schluss

Ansonsten war's das auch schon. Alles andere z.B. über Kontrollstrukturen findest du im Buch selbst. Schau dir dazu aber auch mal die Beispielprogramme in Hallo4.dpr , Hallo5.dpr und Hallo6.dpr an.