Inhaltsverzeichnis

2 Einführung in Pascal

Dieses Kapitel bietet einen vollständigen Einführungskurs in die Sprache Pascal. Nachdem Sie das gesamte zweite Kapitel bearbeitet haben und dabei Programmiererfahrung durch das Lösen der in den Text eingestreuten Aufgaben gesammelt haben, können Sie sich guten Gewissens einem der vielen Bücher für fortgeschrittene Pascal-Anwender zuwenden. Dabei möchte ich Sie bereits an dieser Stelle auf die Literaturhinweise in Anhang E aufmerksam machen. In vielen der dort genannten Bücher finden Sie Anregungen für interessante Programme, die wegen ihrer Komplexität den Rahmen dieses Einführungskurses sprengen würden.

Teilweise bietet Pascal 2.0 Möglichkeiten, die über den Standard-sprachumfang, wie er in der Definition der Sprache (dem sogenannten report [1]) festgelegt wurde, hinausgehen. Diese Erweiterungen werden jedoch an der jeweiligen Stelle angesprochen, so daß Sie beim Verzicht auf diese Erweiterungen Ihre Programme auch für andere Compiler und Computer verwenden können. Eine kurze Einführung zum Thema Standardsprachumfang findet sich in Abschnitt 4.4.1.

2.1 Symbole und Syntax-Diagramme

Leider liegt am Anfang Ihrer Arbeit mit Pascal eine Durststrecke von einigen Kapiteln, die sich mit etwas abstrakteren Grundlagen beschäftigen. Sollten Sie beim ersten Lesen einige Details nicht ganz verstehen, können Sie später, wenn Sie etwas praktische Erfahrung am Computer besitzen, diese Teile noch einmal bearbeiten.

Pascal ist eine formale Sprache: Programme sind nichts anderes als Symbolfolgen. Man kann zwar unendlich viele korrekte Folgen von Symbolen bilden, jedoch ist die Menge der Bildungsregeln für korrekte Programme, die Syntax der Sprache Pascal, endlich.

Dieses Kapitel beschäftigt sich mit den kleinsten Einheiten in einem Programmtext. Diese Symbole der Sprache Pascal lassen sich in folgende Gruppen einteilen, die nachfolgend im einzelnen vorgestellt werden:

Die Definition einer Sprache über sozusagen atomare Symbole erlaubt eine gewisse Unabhängigkeit von den Eigenschaften spezieller Rechner. So wird z.B. in der Sprache nie Bezug auf Zeilennummern oder die Formatierung des Quelltextes genommen.

Namen (Bezeichner) können vom Programmierer zur Identifikation der verschiedensten Objekte in einem Programm verwendet werden (näheres in späteren Kapiteln). Formal gesehen besteht ein Name aus einem Buchstaben gefolgt von Buchstaben oder Ziffern (»A« bis »Z« und »0« bis »9«). Ein Bezeichner kann also beliebig lang werden.

VARIABLE   B747   ERGEBNIS   A  MARION  B   JB007

sind also gültige Namen. Die folgenden Zeichenfolgen sind keine Namen:

3MAL     ERGEBNIS-3    MIT_UNDERSCORE

In Pascal 2.0 sind nur die ersten 14 Zeichen eines Namens signifikant. Somit betrachtet der Compiler die folgenden Namen als gleich:

EXTRALANGERNAME1 EXTRALANGERNAME2

Eine Vielzhl von Namen besitzt in Pascal bereits eine vordefinierte Bedeutung, die in späteren Abschnitten besprochen wird.

Zahlen sind Symbole, die aus komplizierteren Zeichenfolgen bestehen können. Deshalb sind die Bildungsregeln auch nur schwerfällig in Worten zu beschreiben. Eine anschauliche und übersichtliche Beschreibung der Syntax von Pascal liefern die sogenannten Syntaxdiagramme. Bild 8 zeigt die Syntaxdiagramme für Zahlen in Pascal:

Bild 8: Zwei Syntaxdiagramme für Zahlen

Indem man von links nach rechts den Pfeilen durch den Graphen folgt und die Zeichen in den Kästen mit den abgerundeten Ecken notiert, erhält man gültige Zahlen in Pascal. Dabei kann man an einer Verzweigung jeden beliebigen Weg wählen und sich auch in Schleifen bewegen. Es ist jedoch verboten, gegen die Pfeilrichtung zu laufen.

Eine ganze Zahl besteht also aus einer oder mehreren Ziffern. Außerdem kann der Zahl ein Vorzeichen vorausgehen. Im zweiten Diagramm mit dem Namen Zahl tritt zweimal ein Kästchen mit der Bezeichnung ganze Zahl auf. Da die Ecken dieses Kästchens nicht abgerundet sind, bedeutet dies, daß an dieser Stelle eine Zeichenfolge steht, die durch das erste Syntaxdiagramm ganze Zahl beschrieben wird.

In späteren Kapiteln sollen Sie diese Diagramme selbständig lesen können, um die Syntax von Anweisungen und Ausdücken exakt zu verstehen. Daher sind alle Syntaxdiagramme der Sprache Pascal 2.0 im Anhang A zusammengestellt. Für Zahlen wird die Syntax an dieser Stelle noch einmal verbal beschrieben, um das Prinzip, das hinter den Diagrammen steht, zu verdeutlichen:

Eine ganze Zahl ist eine Ziffernfolge eventuell mit Vorzeichen.

Eine Zahl besteht aus einer ganzen Zahl. Daran kann sich ein Dezimalpunkt mit mindestens einer Nachkommastelle anschließen. Danach folgt eventuell der Buchstabe »E« mit einem Exponent. Dieser Exponent besteht ebenfalls aus einer ganzen Zahl.

Beispiele für zulässige Zahlen sind

1   0   1986   0.1   +22.3   -1E-4   1.5E8

Typische fehlerhafte Zahlen sind:

1.           (nach dem Punkt muß eine Ziffer folgen)
.1           (es muß eine Null vor dem Punkt stehen)
3,4          (ein Komma ist nicht zulässig)
3,000,000.00 (auch nicht hier)

In Pascal unterscheidet man also zwei Typen von Zahlen: Es gibt reelle und ganze Zahlen. Reelle Zahlen sind dadurch gekennzeichet, daß sie Nachkommastellen und / oder einen Skalierungsfaktor (Exponent) besitzen. Der Skalierungsfaktor gibt an, um wie viele Stellen der Dezimalpunkt verschoben wird. Daher bezeichnen die folgenden Ziffernfolgen den gleichen Wert:

1.0 = 1E0 = 10E-1 = 100E-2 = 0.1E+1 = 0.01E+2

Eine Stringkonstante besteht in Pascal 2.0 aus einer Folge von Zeichen, die in Hochkommata oder Anführungszeichen eingeschlossen ist.>

'Dies ist eine Stringkonstante'
"Dies ist ebenfalls ein String"
''
'Sonderzeichen: "!$&/(?'
"klappt's?"
Um ein Anführungszeichen in einem String anzugeben, muß man den String mit Hochkommata einschließen. Außerdem können in Pascal 2.0 nicht druckbare Sonderzeichen in eine Stringkonstante aufgenommen werden, indem man den dezimale ASCII-Code des Zeichens hinter dem Zeichen »#« angibt. Das Klingelzeichen (bell) hat z.B. den ASCII-Code 7:

'Telefon ' #7 #7 #7 " klingelt!"

Stringkonstanten, die man so hintereinanderstellt, werden in Pascal 2.0 zu einem String zusammengefaßt. Damit können insbesondere Strings definiert werden, die länger als eine Quelltextzeile sind.

Das im report definierte Standard-Pascal ist im Bezug auf Stringkonstanten restriktiver: Dort muß ein String mit Hochkommata eingeschlossen werden. Des weiteren darf ein String nicht leer sein, das Zeilenende nicht überschreiten und keine Kontrollzeichen enthalten. Zur Nennung eines Hochkommas muß dieses im String doppelt vorhanden sein.

In Pascal werden folgende Sonderzeichen verwendet:

+ Addition, Vereinigung von Mengen
- Subtraktion, Differenz von Mengen
* Multiplikation, Schnitt von Mengen
/ Division
:= Zuweisung
= gleich
<> ungleich
>= größer oder gleich
<= kleiner oder gleich
( ) Klammern
[ ] Index- und Mengenklammern
(* *) Kommentarklammern
^ Pfeil (Dereferenzieroperator)
.. Auslassungspunkte
, . ; : Satzzeichen

Einige Symbole in der Liste bestehen aus zwei Sonderzeichen. Zwischen den beiden Zeichen darf dann kein Leerzeichen stehen:

:=    (dies ist ein Symbol)
: =   (dies sind zwei Symbole)

Die reservierten Wortsymbole von Pascal sind in der folgenden Liste aufgeführt. Sie dürfen von Ihnen nicht als Namen verwendet werden. Ihre Bedeutung wird in den weiteren Kapiteln erklärt:

AND    FILE     NOT       TO
ARRAY  FOR      OF        TYPE
BEGIN  FORWARD  OR        UNTIL
CASE   FUNCTION PACKED    VAR
CONST  GOTO     PROCEDURE WHILE
DIV    IF       PROGRAM   WITH
DO     IN       RECORD
DOWNTO LABEL    REPEAT
ELSE   MOD      SET
END    NIL      THEN

Im Gegensatz zu BASIC dürfen Namen Wortsymbole enthalten:

FORMEL  EINGABE  ENDE

sind also gültige Namen, obwohl sie die Zeichenfolgen FOR, OR, IN und END enthalten.

Da die Größe eines übersetzen Programmes (Objektprogramm) nicht von der Formatierung des Quelltextes abhängig ist, spart man nicht wie in BASIC mit Leerzeichen zwischen den Symbolen. Vielmehr versucht man durch das Layout (Einrückung, Kommentare, sinnvolle Variablennamen) die Struktur des Programmes zu unterstreichen. Leerzeichen sind jedoch nur dann syntaktisch erforderlich, wenn durch ihr Fehlen aus zwei Symbolen eines würde:

IF X = 6 * Y THEN

In diesem Beispiel sind nur zwischen IF und X, sowie zwischen Y und THEN Leerzeichen notwendig.

Kommentare können an jeder Stelle des Programmes eingefügt werden, an der auch ein Leerzeichen stehen darf. Kommentare können beliebige Texte enthalten. Da auf dem C-128 keine geschweiften Klammern (»{« und »}«) darstellbar sind, werden Kommentarklammern durch »(*« und »*)« gebildet:

(* Dies ist ein Kommentar, der sich
   über mehrere Zeilen erstreckt *)

Wie dieses Beispiel zeigt, können Kommentare auch länger als eine Quelltextzeile werden. Natürlich darf ein Kommentar nicht die schließende Klammer »*)« enthalten.

Viele Compiler kennen auch aktive Kommentare, die den Compilationsvorgang steuern. In Pascal 2.0 beginnt ein aktiver Kommentar mit einem Dollarzeichen. Die Wirkung aller aktiven Kommentare ist in der Dokumentation beschrieben.

(*$R+  Code für Bereichstests erzeugen *)

Inhaltsverzeichnis