Programmierkurs: Delphi: Pascal: Das erste Programm

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Das erste Programm[Bearbeiten]

Die Konsole[Bearbeiten]

Obwohl die schnelle Entwicklung einer grafischen Oberfläche (engl. Graphical User Interface, Abk. GUI) eine der größten Stärken von Delphi ist, eignet sie sich nur bedingt zum Einstieg in die Programmierung, da die GUI-Entwicklung ein eher komplexes und vielseitiges Thema ist. Außerdem setzt sie ein grobes Verständnis allgemeiner Programmiertechniken (wie z.B. objektorientierte Programmierung) voraus. In den folgenden Kapiteln wird als Einstieg die Konsolenprogrammierung genutzt, um Sie auf einfache Art und Weise in die verschiedenen Sprachelemente des Software Engineerings einzuführen. Unter Windows auch als „DOS-Fenster“ bekannt, stellt eine Konsole grundlegende Methoden zur Ein- und Ausgabe von Daten dar, die heutzutage zwar oft als veraltet gilt, aber dennoch nicht wegzudenken ist.

Wundern Sie sich bitte nicht, wenn in den folgenden Beispielen die deutschen Umlaute als ae, oe usw. ausgeschrieben sind. Das Konsolenfenster verwendet einen anderen Zeichensatz als Windows und kann diese Buchstaben deshalb nicht ohne Konvertierung darstellen, was leider nicht automatisch erfolgt.

Die Programmvorlage[Bearbeiten]

Startet man Delphi, so öffnet es direkt ein leeres Projekt zur Erstellung eines grafischen Programms. Da wir zunächst aber ein Konsolenprogramm erstellen wollen, müssen wir dieses Projekt schließen und ein anderes erstellen.

Delphi:

Datei / Neu / Weitere... / Konsolen-Anwendung

 1 program Project1;
 2 
 3 {$APPTYPE CONSOLE}
 4 
 5 uses
 6   SysUtils;
 7 
 8 begin
 9   { TODO -oUser -cConsole Main : Hier Code einfügen }
10 end.


Dies ist nun die Vorlage für unser erstes Programm. Zeile 1: Jedes Programm beginnt mit dem Schlüsselwort program gefolgt von dem Programmnamen (der übrigens identisch mit dem Dateinamen sein muss) gefolgt von einem Semikolon.

Die Zeilen 3–6 sollen uns zunächst nicht interessieren, sie sorgen für die nötigen Rahmenbedingungen, die unser Programm benötigt.

In Zeile 8 leitet das begin nun den Hauptanweisungsblock ein, in dem sich später unser Quelltext befinden wird. In Zeile 10 endet sowohl der Anweisungsblock als auch das Programm mit end.. Dieser Anweisungsblock wird beim Programmstart ausgeführt und danach beendet sich das Programm wieder.

Zeile 9 enthält nur einen Kommentar, der für uns unwichtig ist und bedenkenlos entfernt werden kann.

Unter Lazarus sieht der Programmrumpf ähnlich aus, wobei wir auch hier die Zeilen 3–12 zunächst nicht weiter beachten:

Datei / Neu... / Projekt / Programm

 1 program Project1;
 2 
 3 {$mode objfpc}{$H+}
 4 
 5 uses
 6   {$IFDEF UNIX}{$IFDEF UseCThreads}
 7   cthreads,
 8   {$ENDIF}{$ENDIF}
 9   Classes
10   { you can add units after this };
11 
12 {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
13 
14 begin
15 end.


Der Befehl Readln[Bearbeiten]

Delphi stellt mit der Programmvorlage ein zwar funktionierendes aber funktionsloses Programm zur Verfügung. Wenn wir einmal dieses Programm starten (mittels F9), so sehen wir im besten Fall für den Bruchteil einer Sekunde ein Konsolenfenster. Denn da unser Programm noch leer ist, wird es sofort beendet. Um dies zu verhindern, fügen wir den Befehl Readln ein:

begin
  Readln;
end.


Readln steht für „read line“ (deutsch: lies Zeile). Das heißt, Readln macht nichts anderes als eine Zeile Text von der Konsole zu lesen. Die Eingabe einer Zeile wird mit der ENTER-Taste beendet. Bis die ENTER-Taste gedrückt wurde, liest der Readln-Befehl alle Zeichen, die man eingibt, ein. Also müsste unser Konsolen-Fenster nun solange geöffnet bleiben, bis wir die ENTER-Taste drücken.

Tipp:

Info bulb.png

Pascal und Delphi sind case-insensitive. Das heißt, dass sie nicht zwischen Groß- und Kleinschreibung unterscheiden. Es spielt also keine Rolle, ob man „program“, „Program“, „PROGRAM“ oder „PrOgRaM“ schreibt. Sinnvoll ist allerdings, sich für eine Schreibweise zu entscheiden, damit der Quelltext lesbar bleibt (siehe Kapitel Programmierstil).


Wie man die durch Readln eingelesenen Zeichen verarbeitet, erfahren Sie später.

Die Ausgabe[Bearbeiten]

Nachdem unser Programm nun geöffnet bleibt, damit wir die Ausgaben des selbigen betrachten können, wird es nun Zeit Ausgaben hinzuzufügen. Dazu verwenden wir den Befehl Writeln:

begin
  Writeln('Hello World');
  Readln;
end.


Analog zu Readln steht Writeln für „write line“ (deutsch: schreibe Zeile). Wie sich daher bereits erahnen lässt, führt dieser Befehl dazu, dass der Text „Hello World“ auf der Konsole ausgegeben wird.

Tipp:

Info bulb.png

Die Routine Writeln ist nicht auf Zeichenketten begrenzt, sondern kann alle Arten von Daten aufnehmen. So ergibt z.B.: Writeln(42); dass die Zahl 42 auf der Konsole ausgegeben wird. Man muss sich auch nicht bestimmte „Formatbezeichner“ merken, wie es bei der Programmiersprache C der Fall ist. Da nur Writeln eine solche automatische Umwandlung vornimmt, existiert jedoch eine ähnliche Funktion, die eine Verwendung von Formatbezeichnern erlaubt. Diese heißt Format und findet sich in der Unit SysUtils.


Exkurs: Zeichenketten[Bearbeiten]

In Pascal werden Zeichenketten durch ein einfaches Apostroph (') gekennzeichnet und im Allgemeinen als String bezeichnet. Will man allerdings ein ' in seinem String verwenden so ist dies durch '' möglich. Mehrere Strings (oder String-Variablen oder Ergebnisse von Funktionen, die einen String zurückgeben) lassen sich mit dem Plus-Operator (+) zu einer Zeichenkette verbinden.

Zeichenkette in Pascal Entsprechung
'Hello World' Hello World
'Hello '' World' Hello ' World
'Hello '+'World' Hello World

Näheres siehe Strings.


Nun lassen sich selbstverständlich noch beliebig viele weitere Ausgaben hinzufügen. Allerdings entbehrt die reine Ausgabe von Text auf der Konsole dem eigentlichen Sinn von Programmen, die ja Informationen verarbeiten können sollen. Genau dies ist also Thema des nächsten Kapitels: Wenn Dann Sonst, aber zunächst beschäftigen wir uns erst mal mit den Datentypen.


Arrow left.png Pascal: Aufbau eines Delphi-Programms Inhaltsverzeichnis Pascal: Grundlegende Datentypen Arrow right.png