Turbo Pascal 7.0 für DOS

Werbung
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
C@12
2
'/-), &(.*(+ $"#
4[ZVXLU324&2:LXKZ$2;&2GPTTLXTHUU2
2
'"( $%&
+&24[MSHNL2\VT2.0&2?V\LTILX2.**02
2
#2I^2:7A6C%ELXSHN2M-X25PSK[UNYTLKPLU29TI:$22
2
22225VKLUOLPT2
2
2
2
;UZLXULZ322]]]&OLXKZ/^V[&KL(2&HZ(2&JO2
!
2
]]]&OLXKZ/I[YPULYY&KL(2&HZ(2&JO2
2
]]]&OLXKZ/\OY&KL(2&HZ2
!
!
2
$#!"
2
4SSL2 ALJOZL2 \VXILOHSZLU&2 <LPU2 CLPS2 KLY2 FLXRLY2 KHXM2 PU2
PXNLUKLPULX28VXT2!6X[JR$28VZVRVWPL$2>PJXVMPST2VKLX2LPULT2
HUKLXLU2 ELXMHOXLU"2 VOUL2 YJOXPMZSPJOL2 9LULOTPN[UN2 KLY2
XLWXVK[_PLXZ2
:LXH[YNLILXY2
VKLX2
[UZLX2
ELX]LUK[UN2
LSLRZXVUPYJOLX2 B^YZLTL2 \LXHXILPZLZ$2 \LX\PLSM)SZPNZ2 VKLX2
\LXIXLPZLZ2]LXKLU&2
2
6PLYL2 DUZLXSHNL2 ][XKL2 TPZ2 NXV'LX2 BVXNMHSZ2 LXYZLSSZ2 [UK2
NLWX-MZ&2 CXVZ_KLT2 R,UULU2 8LOSLX2 UPJOZ2 \VSSRVTTLU2 H[Y%
NLYJOSVYYLU2 ]LXKLU&2 ELXSHN$2 :LXH[YNLILX2 [UK2 4[ZVXLU2
R,UULU2M-X2MLOSLXOHMZL24UNHILU2[UK2KLXLU28VSNLU2]LKLX2
LPUL2 Q[XPYZPYJOL2 ELXHUZ]VXZ[UN2 UVJO2 PXNLUKLPUL2 :HMZ[UN2
-ILXULOTLU&2
2
6PL2 5PSK[UNYTLKPLU2 KLY2 :7A6C%ELXSHNY2 LUZOHSZLU2 =PURY2
I_]&2 ELX]LPYL2 H[M2 ;UZLXULZYLPZLU2 HUKLXLX2 4UIPLZLX&2 4[M2
;UOHSZ2 [UK2 9LYZHSZ[UN2 KPLYLX2 4UNLIVZL2 OHZ2 KLX2 :7A6C%
ELXSHN2 RLPULXSLP2 7PUMS[YY&2 :PLXM-X2 YPUK2 HSSLPUL2 KPL2 QL]LP%
SPNLU24UIPLZLX2\LXHUZ]VXZSPJO&2
2
"
Inhaltsverzeichnis
1.
2.
3.
4.
4.3.
Einführung in Turbo Pascal 7.0 ................4
Die Auswahl (Alternative)........................65
4.3.1.
Einseitige Auswahl ...................67
Zweiseitige Auswahl.................70
1.1.
Die Funktionsweise eines Computers.......4
4.3.2.
1.2.
Algorithmen und Programme ....................6
4.3.3.
Mehrstufige Auswahl ................72
1.3.
Die Programmentwicklung ........................6
4.3.4.
Mehrseitige Auswahl
(Fallauswahl)............................76
1.4.
Die Dateien von Turbo Pascal 7.0 ............7
1.5.
Einordnung der Programmiersprache
Turbo Pascal 7.0 ......................................8
1.6.
Starten von Turbo Pascal 7.0 ...................9
1.7.
Beenden von Turbo Pascal 7.0.................9
4.4.
Die Wiederholung (Iteration) ...................81
4.4.1.
Die zählergesteuerte
Wiederholung...........................82
4.4.2.
Die bedingte Wiederholung ......85
4.5.
Weitere Kontrollstrukturen ......................90
4.6.
Zusammenfassung .................................92
Grundlagen der Bedienung.....................10
2.1.
Der Arbeitsbildschirm .............................10
2.2.
Das Menü ...............................................11
2.3.
Dialogfenster ..........................................12
5.1.
Grundlagen .............................................94
2.4.
Der Editor ...............................................14
5.2.
Selbstdefinierte Prozeduren ....................95
2.5.
Quellprogramme eingeben
und bearbeiten........................................15
5.2.1.
Prozeduren mit globalen
Variablen und Konstanten ........95
2.6.
Quellprogramme speichern
und schließen .........................................18
5.2.2.
Prozeduren mit lokalen
Variablen und Konstanten .......97
2.7.
Quellprogramme laden
bzw. neu erzeugen .................................20
5.2.3.
Prozeduren mit
Wertübergabe ..........................98
5.2.4.
Prozeduren mit
Variablenübergabe ...................99
2.8.
Compilieren und Starten .........................21
2.9.
Grundlagen der Fenstertechnik ..............23
2.10.
Programmteile markieren,
kopieren, löschen und verschieben.........25
2.11.
Letzte Aktion zurücknehmen...................28
2.12.
Suchen und Ersetzen .............................28
2.13.
Quellprogramme drucken .......................31
2.14.
Zusammenfassung .................................31
5.
Prozeduren ...............................................94
5.3.
6.
Vordefinierte Prozeduren ......................103
Funktionen..............................................106
6.1.
Grundlagen ...........................................106
6.2.
Selbstdefinierte Funktionen...................107
6.2.1.
Grundlagen der Programmierung
von Turbo Pascal .....................................32
Funktionen mit globalen
Variablen und Konstanten ......107
6.2.2.
Funktionen mit lokalen
Variablen und Konstanten ......109
3.1.
Der Programmaufbau .............................32
6.2.3.
3.2.
Variablen ................................................36
Funktionen mit
Wertübergabe ........................110
3.3.
Konstanten .............................................39
6.2.4.
Funktionen mit
Variablenübergabe .................112
3.4.
Einführung wichtiger
Standard-Datentypen..............................42
3.5.
Wichtige Sprachelemente.......................47
3.6.
Ein- und Ausgabe ...................................49
3.7.
Syntaxmarkierung in Turbo Pascal .........54
3.8.
Fehlersuche und Fehlerbehebung ..........56
3.9.
Das Hilfesystem von Turbo Pascal .........58
6.3.
7.
Besonderheiten von Funktionen und
Prozeduren .............................................118
7.1.
Reihenfolgekonflikt bei der Definition
von Prozeduren und Funktionen ...........118
7.2.
Geschachtelte Prozeduren und
Funktionen ............................................120
7.3.
Rekursionen..........................................123
7.4.
Offene Parameter .................................125
Kontrollstrukturen ...................................62
4.1.
Grundlagen und
Darstellungsmöglichkeiten......................62
4.2.
Die Folge (Sequenz)...............................64
Vordefinierte Funktionen .......................115
Turbo Pascal 7.0 für DOS
8.
9.
Units
....................................................128
16. Das Arbeiten mit dem Debugger ..........192
8.1.
Grundlagen ...........................................128
16.1.
Aufgaben des Debuggers..................... 192
8.2.
Selbstdefinierte Units............................128
16.2.
Ausführen einzelner Anweisungen ....... 192
8.3.
Vordefinierte Units ................................131
16.3.
Ausführen von Anweisungsblöcken...... 193
16.4.
Überwachen von Variableninhalten ...... 194
Mehr zu den Datentypen .......................132
Anhang: Reservierte Programmierwörter ...196
9.1.
9.2.
9.3.
Weitere numerische Datentypen...........132
Selbstdefinierte Datentypen ..................135
9.2.1.
Grundlagen ............................135
9.2.2.
Aufzählbare Datentypen.........136
9.2.3.
Teilbereichstypen...................138
Strukturierte Datentypen .......................140
10. Tabellenverarbeitung ............................142
10.1.
Grundlagen der Tabellenverarbeitung...142
10.2.
Eindimensionale Tabellen .....................145
10.3.
Zweidimensionale Tabellen...................147
10.4.
Mehrdimensionale Tabellen ..................150
10.5.
Zusammenfassung ...............................153
11. Die Datenstruktur Menge ......................154
12. Die Datenstruktur Verbund ...................160
13. Dateiverarbeitung ..................................164
13.1.
Grundlagen ...........................................164
13.2.
Sequentielle Dateiverarbeitung .............167
13.3.
13.2.1.
Neue Datensätze eingeben....167
13.2.2.
Datensätze anzeigen .............170
13.2.3.
Datensätze hinzufügen...........171
13.2.4.
Datensätze suchen ................172
13.2.5.
Datensätze ändern.................174
13.2.6.
Datensätze löschen................177
Ausblick in die indizierte
Dateiverarbeitung .................................181
14. Das Prinzip der strukturierten
Programmierung ....................................184
15. Ausblick in die objektorientierte
Programmierung ....................................188
Stichwortverzeichnis.....................................198
3. Grundlagen der Programmierung unter Turbo Pascal
#53,5&11&8+'&8
645&(-*0*1*27*
)&7*27:4*2
$&5.&'0*2 82) /3267&27*2
453;*)85*2 82) +82/7.32*2
&29*.682,*2
9*57;89*.682,
+*-0*568(-*
6:27&%
".0+*+82/7.32
3.
Grundlagen
Pascal
der
3.1.
Der Programmaufbau
Programmierung
von
Turbo
Der einfachste Programmaufbau
Jedes Turbo Pascal-Programm besteht aus verschiedenen Programmteilen, die teilweise in einer vorgegebenen
Reihenfolge und nach bestimmten Regeln anzuordnen sind. Diese Regeln werden in einer Programmiersprache
als Syntax bezeichnet. Wird die Syntax nicht eingehalten, ist das Programm fehlerhaft und der Compiler kann es
nicht verarbeiten.
In seiner einfachsten Form besteht das Turbo Pascal-Programm aus einem Programmkopf und einem Anweisungsteil.
Programmkopf
PROGRAM Hallo;
Anweisungsteil
BEGIN
WriteLn ('Hallo, das ist mein erstes Programm!');
END.
Abbildung 3.1
Der einfachste Programmaufbau
3 - Grundlagen der Programmierung unter Turbo Pascal
33
Übersicht der vollständigen Programmstruktur
Programmkopf
Funktionsbibliotheken (Units)
Konstantendeklaration
Variablendeklaration
Funktionsdefinition
PROGRAM Programmname;
USES Unitname ;
1
CONST Konstantenname1; Konstantenname2
; ...
VAR Variablenname1; Variablenname2; ...
FUNCTION Funktion1;
...
2
FUNCTION Funktion2;
...
Prozedurdefinition
PROCEDURE Prozedur1;
...
3
PROCEDURE Prozedur2;
...
BEGIN
Anweisung1;
4
Anweisungsteil
Anweisung2;
...
END.
Abbildung 3.2
Die gesamte Programmstruktur
Die Programmteile
Notizen
! und " werden auch als Hauptprogramm bezeichnet.
34
Turbo Pascal 7.0 für DOS
Überblick der Elemente eines Turbo Pascal-Programms
Programmkopf
Der Programmkopf besteht aus der ersten Zeile und beginnt mit dem Schlüsselwort PROGRAM. Schlüsselwörter
sind feststehende Begriffe einer Programmiersprache. In Turbo Pascal ist es unerheblich, ob sie in Klein- oder
in Großbuchstaben geschrieben werden. Hinter dem Schlüsselwort PROGRAM folgt nach einer Leerstelle der
Name des Programms.
Der Programmname kann auch Ziffern enthalten. Er muß jedoch mit einem Buchstaben beginnen. Er darf länger sein als der Name der Programmdatei, muß aber aus einem zusammenhängenden Ausdruck bestehen. Wenn
Sie dem Programmnamen einen Ausdruck aus mehreren Wörtern geben möchten, müssen Sie diese anstatt
durch Leerschritte mit dem Unterstrich _ trennen.
B
eispiel:
PROGRAM Hallo
PROGRAM Programm_13
PROGRAM Guten_Tag
PROGRAM Berechnung_der_km_h
Funktionsbibliotheken (Units)
Eine Unit ist eine Sammlung von vordefinierten Programmelementen (Prozeduren, Funktionen, Variablen,
Konstanten und Datentypen), die nach bestimmten Aufgabengebieten in Bibliotheken gruppiert sind. Auf Units
können Sie jederzeit zugreifen. Sie können die mitgelieferten Units von Turbo Pascal verwenden und eigene
Units erstellen. Weitere Beschreibungen über Units finden Sie in Kapitel 8.
Das Schlüsselwort USES weist den Compiler an, die hinter diesem Wort aufgeführte Unit in Ihr Programm einzubinden. Wenn Sie Funktionen verwenden wollen, die in Units verwaltet werden, müssen Sie für die USESAnweisung den Namen der Unit wissen.
B
eispiel:
Um den Bildschirm zu löschen, bevor der Programmablauf beginnt, brauchen Sie die Funktion ClrScr (Abkürzung für: Clear Screen). Diese Funktion ist in einer Standard-Unit mit
dem Namen Crt abgelegt. Wenn Sie die Funktion benutzen wollen, müssen Sie folgende
Angaben vor dem Anweisungsteil vornehmen:
USES Crt;
Crt enthält Funktionen für die Ausgabe und Eingabe am Bildschirm. Dos enthält Funktionen
für die Arbeit mit Dateien. String enthält Funktionen für die Arbeit mit Zeichenketten.
Konstantendeklaration
Konstanten sind Größen, deren Werte (Zahlen, Zeichen, Zeichenketten ...) sich während des Programmablaufs
nicht ändern können. Der Teil eines Programms, in dem Variablen oder Konstanten definiert werden, heißt
Deklarationsteil oder Vereinbarungsteil. Sie haben die Möglichkeit, Konstanten im Konstantendeklarationsteil
nach dem Schlüsselwort CONST zu benennen und ihnen einen Wert zuzuweisen. Näheres zu den verschiedenen
Konstantentypen finden Sie in späteren Abschnitten.
B
eispiel:
CONST
Mehrwertsteuer = 0,15;
TageProJahr = 360;
Begruessung = 'Guten Morgen';
Den Konstanten Mehrwertsteuer, TageProJahr und Begruessung werden jeweils feste
Werte zugewiesen, die sich während des Progammlaufs nicht ändern.
Variablendeklaration
Variablen sind Größen, die während des Programmlaufs unterschiedliche Werte annehmen können. Die Variablendeklaration beginnt nach dem Schlüsselwort VAR. Eine ausführliche Beschreibung der Variablendeklaration
finden Sie in Abschnitt 3.2.
3 - Grundlagen der Programmierung unter Turbo Pascal
B
eispiel:
VAR
35
Ergebnis: Integer;
Wohnort: String;
Die Variable Ergebnis erhält den Datentyp der ganzen Zahlen (Integer), d.h. der Variablen Ergebnis können ganzzahlige Werte zugewiesen werden. Die Variable Wohnort ist ein
String-Datentyp; ihr können bis zu 255 Zeichen zugewiesen werden. Eine ausführliche Beschreibung über Datentypen finden Sie in den nächsten Abschnitten.
Funktionsdefinitionen
Wenn ein Programm sehr umfangreich ist oder Programmteile sich oft wiederholen, lohnt es sich, ein Programm in handliche Teile (Funktionen oder Prozeduren) zu zerlegen. Funktionen sind Programmteile, die beispielsweise für das Hauptprogramm eine Berechnung durchführen und das Ergebnis dem Hauptprogramm zurückliefern. Die Bedeutung von Funktionen wird in Abschnitt 6.1 ausführlich beschrieben.
B
eispiel:
Sie haben ein Programm, das Ihren durchschnittlichen Benzinverbrauch berechnet. Dann
können Sie eine Funktion VerbrauchBerechnen() schreiben, die die Berechnung durchführt. Im Anweisungsteil Ihres Programms rufen Sie die Funktion VerbrauchBerechnen()
auf. Diese berechnet den durchschnittlichen Benzinverbrauch und gibt das Ergebnis an das
Hauptprogramm zurück.
Prozedurdefinitionen
Prozeduren sind ebenfalls Programmteile. Beispielsweise sind WriteLn() und ReadLn() Standard-Prozeduren
von Turbo Pascal. Der Unterschied zwischen Prozeduren und Funktionen besteht darin, daß Funktionen ein Ergebnis für das Programm berechnen und an das Programm zurückgeben. Eine Prozedur liefert dem Programm
kein Ergebnis. Sie enthält Anweisungen, die vom Hauptprogramm ausgegliedert sind und nacheinander abgearbeitet werden, sobald sie aufgerufen wird. Die Unterschiede werden in Abschnitt 6.1 verdeutlicht.
B
eispiel:
Sie schreiben ein Programm, das Rechnungen ausgibt. Damit Sie nicht für jede Rechnung
Anweisungen wiederholt schreiben müssen, die Ihre Adresse ausgeben, können Sie einmal
eine Prozedur schreiben, die Ihre Adresse im Rechnungskopf ausgibt. Im Anweisungsteil Ihres Programms brauchen Sie nicht bei jeder Rechnung die Adresse neu einzugeben sondern
nur die Prozedur Adresse() aufzurufen.
Anweisungsteil
Der Anweisungsteil beginnt mit dem Schlüsselwort BEGIN und endet mit dem Wort END. Dazwischen liegen
alle Arbeitsschritte, die das Programm ausführen soll. Die einzelnen Arbeitsschritte werden von oben nach unten abgearbeitet. Mit Hilfe von Steueranweisungen (Kontrollkonstrukten) kann diese Arbeitsreihenfolge auch
verändert werden (siehe Kapitel 4).
Wichtig: Jede Anweisung wird mit einem Semikolon (;) abgeschlossen.
BEGIN und END sind keine Anweisungen. Deshalb steht hinter BEGIN kein Semikolon. Der Anweisungsteil wird
mit dem Schlüsselwort END gefolgt von einem Punkt (.) abgeschlossen.
B
eispiel:
BEGIN
WriteLn ('Hallo, das ist mein erstes Programm.');
WriteLn ('Das Programm demonstriert eine Ausgabe am Bildschirm.');
END.
Notizen
36
Turbo Pascal 7.0 für DOS
3.2.
Variablen
Variablen werden im Deklarationsteil mit einem Namen und einem Datentyp vereinbart. Die Reihenfolge der
Vereinbarungen können Sie selbst festlegen. Jede Variable, die Sie im Anweisungsteil benutzen, muß zuvor definiert werden.
Für jede Variable wird ein Speicherplatz im Arbeitsspeicher Ihres Computers reserviert. Der Anweisungsteil des
Programms kann diese Variablen mit Hilfe der Variablennamen ansprechen und ihnen Werte zuweisen.
Variablendeklaration
im Arbeitsspeicher
Wertzuweisung
im Arbeitsspeicher
--------10
-----------------
-------------------------
Ausgabe
am Bildschirm
10
Die Variable
Menge hat jetzt
den Wert 10
Platzhalter der
Variablen Menge
VAR Menge: Integer;
Menge := 10;
WriteLn (Menge);
Syntax der Variablendeklaration
"
"
"
"
"
"
"
Die Variablenvereinbarung wird mit dem
VAR Variablenname1: Datentyp;
Schlüsselwort VAR eingeleitet.
Variablenname2: Datentyp;
Das Schlüsselwort VAR muß nur einmal
angegeben werden.
Variablenname3, Variablenname4: Datentyp;
Anschließend folgen die Namen der Va...;
riablen.
Alle Namen eines Deklarationsteils müssen einmalig sein, damit ein eindeutiger Zugriff auf den Variableninhalt gegeben ist.
Hinter dem Variablennamen und einem Doppelpunkt wird der Datentyp angegeben, damit der Computer
weiß, wieviel Speicherplatz er für die Variable reservieren muß.
Variablen, die denselben Datentyp haben, können, durch Kommata getrennt, aufgelistet werden. Abschnitt
3.4 beschreibt wichtige Standard-Datentypen.
Jede Zeile, die mit der Datentyp-Angabe endet, wird mit einem Semikolon abgeschlossen.
B
eispiel:
!
!
VAR
Menge, Preis, Betrag : Real;
VAR
Alter : Byte;
PostLZahl : LongInteger;
Geschlecht : Char;
Gültigkeitsbereich von Variablen
Globale Variablen
Variablen, die im Hauptprogramm definiert werden, können im Hauptprogramm sowie
in Prozeduren und Funktionen angesprochen werden. Sie müssen nur einmal deklariert
werden und haben somit globale Gültigkeit.
Lokale Variablen
Variablen, die innerhalb von Prozeduren und Funktionen vereinbart werden, sind nur für
die jeweilige Prozedur oder Funktion gültig. Sie sind anderen Prozeduren und Funktionen sowie dem Anweisungsteil des Hauptprogramms nicht bekannt.
3 - Grundlagen der Programmierung unter Turbo Pascal
37
Die Verwendung von Variablen im Programm
B
!
"
#
$
%
&
'
(
)
*
eispiel:
Das Programm berechnet zwei verschiedene Beträge mit den Variablen Menge und Preis.
PROGRAM Rechnungsbetrag1_ausgeben;
USES
Crt;
VAR
Menge, Preis, Betrag : Integer;
BEGIN
ClrScr;
Menge := 10;
Preis := 22;
Betrag := Menge * Preis;
WriteLn (Betrag);
Menge := 13;
Preis := 8;
Betrag := Menge * Preis;
WriteLn (Betrag);
END.
Abbildung 3.3
Quellprogramm BETRAG1.PAS
Abbildung 3.4
Das Programm BETRAG1
Die Numerierung am rechten Rand der Beispiel-Quellprogramme ist nicht Bestandteil der Programme. Sie dient lediglich der Programmerläuterung.
!
"
#
$%
#
In diesem Programm wird das erste Mal eine Prozedur (ClrScr bei ) aufgerufen, die in einer Funktionsbibliothek (Unit) verwaltet wird. Damit Sie diese Prozedur in Ihrem Programm verwenden können,
muß vor dem Anweisungsteil die Unit definiert worden sein, die diese Prozedur enthält. Das Schlüsselwort
USES leitet die Einbindung der Unit ein. Danach folgt die Bezeichnung der Unit. Die Prozedur ClrScr ist
in der Unit Crt abgelegt, die Prozeduren und Funktionen für die Bildschirmein- und -ausgabe enthält.
Die Variablen Menge, Preis und Betrag werden hier nach dem Schlüsselwort VAR deklariert. Sie sind alle
drei vom Datentyp der ganzen Zahlen (Integer).
Die Prozedur ClrScr (Abkürzung für: Clear Screen) hat die Aufgabe, den Bildschirm zu löschen. Sie ist
in der Standard-Unit Crt abgelegt, die vor dem Anweisungsteil bei
eingebunden sein muß, damit der
Compiler den Prozeduraufruf ClrScr erkennt.
Der Zuweisungsoperator := weist den Variablen Menge und Preis absolute Werte zu, d.h. die beiden Variablen Menge und Preis, die bis jetzt lediglich einen Platzhalter darstellten und noch keine Werte besaßen, bekommen nun die Werte 10 bzw. 22 zugewiesen. Die Variable, die das Ergebnis zugewiesen bekommt, steht immer auf der linken Seite des Zuweisungsoperators. Auf der rechten Seite steht der Wert als
absoluter Wert (beispielsweise 10, 130, 'Hallo') oder als Variable, die ihren Inhalt auf die andere Variable
überträgt.
Notizen
!
38
Turbo Pascal 7.0 für DOS
Die allgemeine Syntax für diese Wertzuweisung lautet:
Variable1 := Wert
Variable2 := Variable3
absoluter Wert
neuer Inhalt
#'
neuer Inhalt
Variable2
Inhalt von
Variable3
Diese Anweisungen weichen von der gewohnten Reihenfolge einer Rechenoperationen (Menge * Preis =
Betrag) ab, da die Ergebnisvariable auf der linken Seite steht. Sie können diese Anweisung wie folgt lesen:
Der Wert der Variablen Betrag ergibt sich aus dem Wert der Variablen Menge multipliziert mit dem Wert
der Variablen Preis. Die Variable, der das Ergebnis zugewiesen wird, steht immer auf der linken Seite
des Zuweisungsoperators. Die Berechnung bzw. der Ausdruck, der angibt, wie ein Wert gebildet wird,
steht auf der rechten Seite. Allgemein lautet die Syntax einer Wertzuweisung für eine Berechnung:
Ergebnisvariable := Rechenoperation
$
%&
B
!
"
Die Prozedur WriteLn() bewirkt, daß der Wert der Variablen Betrag am Bildschirm angezeigt wird und
der Cursor danach in die nächste Zeile springt. Hinter dem Schlüsselwort WriteLn wird in runden Klammern die Variable gesetzt, deren Inhalt am Bildschirm erscheinen soll.
Die Variablen ändern ihre Werte durch Wertzuweisungen. Hier wird deutlich, daß eine Variable unterschiedliche Werte annehmen kann. Die Variablen behalten ihre Werte so lange, bis ihnen ein neuer Wert
zugewiesen wird. Die Variable Menge hat am Anfang noch keinen Wert (lediglich der Datentyp wurde
festgelegt), dann den Wert 10 und danach 13.
eispiel:
Das Programm berechnet den Betrag aus den Variablen Menge und Preis, nachdem die Werte
über die Tastatur eingegeben wurden.
PROGRAM Rechnungsbetrag2_ausgeben;
USES
Crt;
VAR
Menge, Preis, Betrag : Integer;
BEGIN
ClrScr;
WriteLn ('Bitte geben Sie die Menge ein: ');
ReadLn (Menge);
WriteLn ('Bitte geben Sie den Preis ein: ');
ReadLn (Preis);
Betrag := Menge * Preis;
WriteLn ('Ihre Rechnung beträgt: ');
WriteLn (Betrag);
END.
Abbildung 3.5
Quellprogramm BETRAG2.PAS
Abbildung 3.6
Das Programm BETRAG2
!"
ReadLn()fordert Sie zu einer Eingabe über die Tastatur auf und setzt den Cursor an den Anfang der
nächsten Zeile. Das Programm wird angehalten und wartet auf einen Eingabewert von der Tastatur, den Sie mit
RETURNTASTE
bestätigen müssen. Danach wird das Programm fortgesetzt. Hinter dem Schlüsselwort ReadLn
werden in runden Klammern die Variable oder die Variablen gesetzt, die ihre Werte vom Anwender über die Tastatur erhalten sollen.
Übung
⇒
Schreiben Sie ein Programm ADRESSE1, das Ihre Adresse am Bildschirm abfragt und anschließend am
Bildschirm ausgibt. Verwenden Sie dafür die Variablen Name, Vorname, Strasse, Plz und Ort, die den
Datentyp String (Zeichenketten) besitzen.
3 - Grundlagen der Programmierung unter Turbo Pascal
⇒
39
Schreiben Sie ein Programm FLAECHE1, das die Fläche eines Raumes berechnen kann. Verwenden Sie
dabei die Variablen Laenge, Breite und FlaecheInQm. Die Längen- und Breitenangaben sollen von der
Tastatur eingelesen und die Fläche in qm ausgegeben werden.
3.3. Konstanten
Konstanten werden im Konstantendeklarationsteil vereinbart. Die Reihenfolge der Vereinbarungen können Sie
selbst festlegen. Alle Konstanten, die Sie benutzen wollen, müssen ebenfalls wie Variablen vor dem Anweisungsteil definiert werden. Ein konstanter Wert erhält im Deklarationsteil einen Namen, der im Programm an Stelle des
Wertes verwendet werden kann.
Die Verwendung von Konstanten hat den Vorteil, daß eine Änderung eines Wertes nur im Deklarationsteil vorgenommen werden muß und nicht jedesmal, wenn der Wert innerhalb des Anweisungsteils auftritt. Beispielsweise kann der Wert Mehrwertsteuer als Konstante im Deklarationsteil mit 0.15 (= 15 %) festgelegt werden. Im Anweisungsteil wird statt des Wertes nur mit der Konstantenbezeichnung beispielsweise MwSt gerechnet. Falls sich
dieser Wert ändert, brauchen Sie ihn nur einmal im Deklarationsteil zu ändern.
Untypisierte Konstanten
Der Wert einer untypisierten Konstanten läßt sich während des Programmlaufs nicht ändern. Wenn Sie im Anweisungsteil einer untypisierten Konstanten einen anderen Wert zuweisen wollen, bricht der Compiler während
des Compiliervorgangs ab und gibt Ihnen eine Fehlermeldung aus, beispielsweise: FEHLER 113: SYNTAXFEHLER
IN BEFEHL/ANWEISUNG.
Konstantendeklaration
im Arbeitsspeicher
--------0.15
-----------------
Wertzuweisung
im Arbeitsspeicher
--------0.15
-----------------
Ausgabe
am Bildschirm
0.15
Anfangswert der
untypisierten
Konstanten MWSt
CONST MWSt = 0.15;
Notizen
MwSt := 0.13;
NICHT MÖGLICH!
WriteLn (MWSt);
40
Turbo Pascal 7.0 für DOS
Syntax der untypisierten Konstanten
!
!
!
!
!
!
Die Konstantenvereinbarung wird mit dem Schlüsselwort
CONST eingeleitet.
Das Schlüsselwort CONST muß nur einmal angegeben werden.
Anschließend folgen die Namen der Konstanten.
Alle Namen müssen einmalig sein, um einen eindeutigen
Zugriff auf den Inhalt zu bekommen.
Die Wertzuweisung erfolgt durch das Gleichheitszeichen =.
In jeder Zeile steht nach der Wertzuweisung ein Semikolon.
B
eispiel:
CONST
CONST Konstantenname1 = Wert;
Konstantenname2 = Wert;
Konstantenname3 = Wert;
...;
Grussformel = 'Mit freundlichen Grüßen';
Zinsfaktor = 1.04;
MehrwertSteuer = 0.15;
Typisierte Konstanten
Der Wert einer typisierten Konstanten ist jedoch während des Programmlaufs änderbar. Im Grunde sind typisierte
Konstanten nichts anderes als Variablen, die bereits bei der Deklaration einen Anfangswert erhalten.
Konstantendeklaration
im Arbeitsspeicher
--------999
-----------------
Wertzuweisung
im Arbeitsspeicher
--------500
-----------------
Anfangswert der
typisierten Konstanten
MaxZahl
CONST MaxZahl: Integer = 999;
Ausgabe
am Bildschirm
500
Die typisierte Konstante
Maxzahl
hat jetzt den Wert 500
MaxZahl := 500;
WriteLn (MaxZahl);
Syntax der typisierten Konstanten
!
!
Es gelten die gleichen Regeln wie bei untypiCONST Konstantenname1 : Datentyp = Wert;
sierten Konstanten.
Konstantenname2 : Datentyp = Wert;
Zusätzlich wird vor jeder Wertzuweisung nach
einem Doppelpunkt der Datentyp der KonKonstantenname3 : Datentyp = Wert;
stanten festgelegt. Diese Datentyp-Angabe
...;
zeigt damit, daß der Inhalt der Konstanten variabel ist.
Jede Zeile wird nach der Wertzuweisung durch ein Semikolon abgeschlossen.
!
B
eispiel:
CONST
MaxZahl : Integer = 9999;
MinZahl : Integer = 1;
Monat : String = 'Januar';
Typisierte Konstanten können jedoch zu Mißverständnissen mit Variablen führen, da ihre Inhalte
nicht konstant, sondern variabel sind. Aus Gründen der Genauigkeit und Klarheit, sollten Sie Ihre
Werte nur als Konstanten deklarieren, wenn Sie sicher sind, daß sie sich im Laufe des Programms
nicht ändern. Wenn Sie die Variablen mit Anfangswerten belegen müssen, dann können Sie das
auch im Anweisungsteil durch eine Wertzuweisung realisieren.
3 - Grundlagen der Programmierung unter Turbo Pascal
41
Die Verwendung von Konstanten im Programm
!
"
#
$
PROGRAM Rechnungsbetrag3_ausgeben;
USES
Crt;
CONST
Frage1 = 'Bitte geben Sie die Menge ein: ';
Frage2 = 'Bitte geben Sie den Betrag ein: ';
Ergebnis = 'Ihre Rechnung beträgt in DM ';
VAR
Menge, Preis, Betrag: Integer;
BEGIN
ClrScr;
WriteLn (Frage1);
ReadLn (Menge);
WriteLn (Frage2);
ReadLn (Preis);
Betrag := Menge * Preis;
WriteLn (Ergebnis, Betrag);
END.
Abbildung 3.7
!
Hier beginnt die Konstantendeklaration, die mit dem Schlüsselwort CONST eingeleitet wird. Die Konstanten Frage1, Frage2 und Ergebnis sind untypisierte Konstanten, die alle eine Zeichenkette als festen
Wert erhalten. Im Gegensatz zum vorherigen Beispiel sind diese Zeichenketten aus dem Anweisungsteil
herausgenommen und als untypisierte Konstanten festgesetzt worden.
Das Programm verwendet nur noch die Konstantennamen, um den Inhalt (die beiden Fragen und das Ergebnis) am Bildschirm auszugeben. Die Funktion WriteLn() erlaubt es, mehrere Variablen, Konstanten
oder beides am Bildschirm auszugeben. Die genaue Beschreibung dieser Funktion finden Sie in Abschnitt 3.6.
"#$
!
"
#
$
%
Quellprogramm BETRAG3.PAS
PROGRAM Rechnungsbetrag4_ausgeben;
USES
Crt;
CONST
Menge = 10;
Preis = 50;
Ergebnis = 'Rechnungsbetrag in DM ';
VAR
Betrag : Integer;
BEGIN
ClrScr;
Betrag := Menge * Preis;
WriteLn (Ergebnis, Betrag);
END.
Abbildung 3.8
Notizen
Quellprogramm BETRAG4.PAS
42
Turbo Pascal 7.0 für DOS
!"#Die Konstanten Menge und Preis und Ergebnis sind hier als untypisierte Konstanten festgelegt. Die
$
%
Konstanten Menge und Preis besitzen ganzzahlige Werte (Datentyp Integer), die Konstante Ergebnis
ist vom Datentyp String (Zeichen und Zeichenketten).
Hier wird eine Berechnung mit den Konstanten Menge und Preis durchgeführt. Das Ergebnis wird der
Variablen Betrag zugeordnet. Die Berechnung erfolgt mit den Werten, die im Konstantendeklarationsteil
vordefiniert wurden. Diese Anweisung stellt wieder eine Wertzuweisung dar. Sie können diese Anweisung
wie folgt lesen: Der Wert der Variablen Betrag ergibt sich aus dem Wert der Konstanten Menge multipliziert mit dem Wert der Konstanten Preis.
Die Funktion WriteLn() bewirkt, daß der Inhalt einer Konstanten und einer Variablen am Bildschirm erscheint.
Gültigkeitsbereich von Konstanten
Globale Konstanten Konstanten, die im Hauptprogramm definiert werden, können im Hauptprogramm sowie
in Prozeduren und Funktionen angesprochen werden. Sie müssen nur einmal deklariert
werden und haben somit globale Gültigkeit.
Lokale Konstanten
Konstanten, die innerhalb von Prozeduren und Funktionen vereinbart werden, sind nur
für die jeweilige Prozedur oder Funktion gültig. Sie sind anderen Prozeduren und Funktionen sowie dem Anweisungsteil des Hauptprogramms nicht bekannt.
Übung
⇒
Schreiben Sie ein Programm ADRESSE2, das Ihre Adresse am Bildschirm ausgibt. Verwenden Sie hierfür
die Konstanten Name, Vorname, Strasse, Plz, Ort.
⇒
Eine Pizzeria möchte zusätzlich zum Pizza-Angebot für jede Pizza eine Riesenpizza anbieten, an der 7
Personen essen können. Das Programm PIZZA1 berechnet den Preis einer Riesenpizza für verschiedene
Pizzasorten. Der Preis wird aus dem Preis einer kleinen Pizza berechnet und einem Nachlaß von DM 10,--.
Überlegen Sie sich, bevor Sie das Programm schreiben, welche Konstanten und Variablen im Programm
eingesetzt werden können.
3.4. Einführung wichtiger Standard-Datentypen
Der Datentyp einer Variablen oder Konstanten legt den Wertebereich und somit die Größe des Speicherplatzes in der Größenordnung Byte im Computer fest (vgl. auch Abschnitt 1.1.). Im Deklarationsteil Ihres Programms müssen Sie deshalb den Variablen und
Konstanten Datentypen zuordnen.
Numerische Datentypen
Adresse : String[60]
Farbe : Char
Preis : Real
Menge : Integer
Abbildung 3.9
Speicherreservierung
Arbeitsspeicher
im
Die folgende Tabelle zeigt zwei wichtige numerische Datentypen. Weiter numerische Datentypen sind im Abschnitt 9.1 ausführlich beschrieben.
3 - Grundlagen der Programmierung unter Turbo Pascal
43
Typ
Wertebereich
Beispiele
Real
Alle positiven und negativen reellen Zahlen, auch Dezi- 20.5 oder - 682.43
malzahlen
(Turbo Pascal kennt für Dezimalzahlen die amerikanische
Schreibweise: siehe nachfolgenden Hinweis)
455 oder - 2036
Ganzzahlige Werte
Integer
Beachten Sie, daß Turbo Pascal für Werte vom Datentyp Real die amerikanische Schreibweise
verwendet. Sie müssen also auch bei der Eingabe über die Tastatur auf diese Schreibweise achten:
z.B. deutsche Schreibweise:
4.350.299,40
amerikanische Schreibweise:
4,350,299.40
Operationen mit numerischen Daten
!
Addition:
!
Ergebnis
78
:=
:=
Zahl1 + Zahl2
50 + 28
Subtraktion:
!
Ergebnis
40
:=
:=
Zahl1 - Zahl2
55 - 15
Multiplikation:
!
Ergebnis
720
:=
:=
Zahl1 * Zahl2
80 *
9
Real-Division:
Ergebnis
5.0000000000E+00
:=
:=
Zahl1 / Zahl2
55.0 / 11.0
Sie können nur zwei numerische Werte mit dem /-Operator dividieren, die vom Datentyp Real sind. Das Ergebnis dieser Berechnung wird in einer Gleitkommaschreibweise ausgegeben. Diese Darstellung ist jedoch unübersichtlich. Deshalb haben Sie die Möglichkeit, diesen Wert in ein Ausgabeformat (vgl. Abschnitt 3.6) zu setzen.
Für numerische Werte vom Datentyp Integer gibt es einen anderen Divisionsoperator:
!
Integer-Division:
Ergebnis
12
:=
:=
Zahl1 Div Zahl2
126 Div 10
Hier wird 126 durch 10 dividiert. Das Ergebnis wäre 12,6. Bei einer Division von Integer-Werten werden die
Nachkommastellen abgeschnitten. Das Ergebnis zeigt nur die beiden Stellen vor dem Komma.
!
Divisionsrest:
Ergebnis
6
:=
:=
Zahl1 Mod Zahl2
126 Mod 10
Der mod-Operator berechnet den Divisionsrest der Zahl. Der Divisionsrest von 126 dividiert durch 10 ergibt 6.
Der Divisionsrest sind bei Integer-Werten die eigentlichen Nachkommastellen. Der Mod-Operator gilt ebenfalls
nur für Integer-Werte.
Bei Rechenoperationen gelten die üblichen mathematischen Regeln:
"
"
Punktrechnung geht vor Strichrechnung.
Die Reihenfolge der Berechnung kann durch Klammern verändert werden, beispielsweise
Die Variable Ergebnis enthält den Wert 65
Ergebnis := 7 * 10 - 5
Ergebnis := 7 * (10 - 5) Die Variable Ergebnis besitzt hier den Wert 35
Notizen
44
Turbo Pascal 7.0 für DOS
Zeichen und Zeichenketten
Typ
Wertebereich
Char
Char(acter) umfaßt ein Zeichen.
String
Beispiele
Numerische Zeichen: 0 1 2 3 4 5 ...
Alphabetische Zeichen: a b c ... A B C ...
Sonderzeichen: ! " § $ % & * + ...
Ein String ist eine Folge von Zeichen mit unter- Hallo, wie geht es Dir?
schiedlicher Länge. Ein String darf nicht größer Bitte zahlen Sie den Rechnungsbetrag.
als 255 Zeichen sein.
0 61 69 / 44 33 89
Für Zeichen und Zeichenketten gelten folgende Regeln:
!
!
!
!
!
Zeichen und Zeichenketten werden durch Apostrophe '...' begrenzt, um sie beispielsweise von Variablen
und Konstanten zu unterscheiden.
Innerhalb des Quellprogramms müssen Zeichenketten in einer Zeile stehen. Ist die Zeile zu lang, müssen
aus einer Zeichenkette zwei gemacht werden.
Eine Zeichenkette kann auch leer sein (siehe nachfolgendes Beispiel).
Ein Apostroph innerhalb einer Zeichenkette läßt sich durch zwei aufeinanderfolgende Apostrophe darstellen (siehe nachfolgendes Beispiel).
Sie haben die Möglichkeit, im Variablendeklarationsteil die Längen für Zeichenketten zu vereinbaren.
Diese werden in eckigen Klammern hinter das Wort String gesetzt. Sie können zwischen 1 und 255 Zeichen wählen. Umfaßt eine Zeichenkette mehr als 255 Zeichen, so muß sie auf mehrere String-Variablen
verteilt werden.
Wenn Sie keine Längenangabe bei String-Variablen machen, legt der Computer automatisch eine Länge von 255 Zeichen fest und stellt dementsprechend den höchsten Speicherplatz für diese
Variable zur Verfügung. Beachten Sie, daß dadurch unnötig der Arbeitsspeicher reduziert wird.
B
eispiel:
(1)
Beispiel: Konstantendeklaration
CONST Anrede1 = 'Sehr geehrte Damen und Herren!;
Anrede2 = 'Hallo wie geht''s Dir?'
Grussformel = 'Mit freundlichen Grüßen';
Platzhalter = '';
(2)
Beispiel: Variablendeklaration
VAR
(3)
Name = String[15];
Strasse = String[20];
Ort = String[20];
BriefEnde = String[20];
Beispiel: Wertzuweisung von String-Werten
BEGIN
BriefEnde := Grussformel;
END.
Die Wertzuweisung einer String-Variablen erfolgt ebenfalls durch den Zuweisungsoperator :=. Beide Variablen müssen vom Datentyp String sein. Die Variable
BriefEnde erhält den Inhalt der Variablen Grussformel.
3 - Grundlagen der Programmierung unter Turbo Pascal
45
Operationen mit Zeichen und Zeichenketten
Zwei Variablen des Datentyps Char oder String können miteinander durch den +-Operator verbunden werden.
Wenn das Ergebnis mehr als 255 Zeichen ergibt, wird es nach dem 255. Zeichen abgeschnitten.
B
eispiel:
!
!
ErgebnisString
'Turbo Pascal'
:=
:=
String1 +
'Turbo ' +
String2
'Pascal'
Alle drei Variablen müssen im Deklarationsteil als String-Datentyp definiert werden,
damit diese Verknüpfung stattfinden kann.
ErgebnisString
'TP'
:=
:=
Char1 + Char2
'T' + 'P'
Wenn zwei Variablen verknüpft werden sollen, die vom Datentyp Char sind, dann muß
die Ergebnisvariable vom Typ String sein, da diese mehr als ein Zeichen, also eine
Zeichenkette, enthält.
Beachten Sie, daß ein Leerschritt auch als ein Zeichen gewertet wird, egal ob vom Datentyp Char
oder String.
Wahrheitswerte
Typ
Wertebereich
Boolean
Die Variablen vom Datentyp Boolean wurden nach dem Mathematiker G. Boole benannt und
werden auch als logische Variablen bezeichnet. Sie werden für Lösungen logischer Probleme
und zur Abfrage von Bedingungen eingesetzt (siehe Abschnitt 4.3).
Es gibt deshalb zwei Werte:
!
!
Notizen
TRUE (wahr)
FALSE (falsch)
46
Turbo Pascal 7.0 für DOS
B
!
"
#
$
%
&
eispiel:
PROGRAM
USES
CONST
VAR
Falsch_oder_Richtig;
Crt;
Antwort = 16;
Ergebnis: Boolean;
Eingabe: Integer;
BEGIN
ClrScr;
WriteLn ('Wieviel Buchstaben hat das Wort: GEBURTSTAGSTORTE ?');
ReadLn (Eingabe);
Ergebnis := Antwort = Eingabe;
WriteLn (Ergebnis);
END.
Abbildung 3.10
!
"
#
$
%
Dieses Beispiel fordert den Anwender auf, die Anzahl der Buchstaben des Wortes Geburtstagstorte über die Tastatur einzugeben. Ist das Ergebnis richtig, erscheint am Bildschirm das Wort
TRUE. Ist die Eingabe falsch, erscheint am Bildschirm das Wort FALSE.
Quellprogramm FALSCH.PAS
Der Konstanten Antwort wird der Wert 16 zugeordnet. Dieser Wert entspricht der Buchstabenanzahl des
Wortes Geburtstagstorte.
Hier wird eine Variable Ergebnis definiert, der während des Programmlaufs einen booleschen Wert (TRUE
oder FALSE) zugeordnet wird.
Die Variable Eingabe ist ein Integer-Datentyp und soll die Tastatureingabe (Anzahl der Buchstaben)
speichern.
Der Benutzer wird zu einer Eingabe aufgefordert.
Diese Anweisung besteht aus zwei Teilen. Zuerst wird ein Vergleich durchgeführt (Antwort = Eingabe).
Das Ergebnis dieses Vergleichs (entweder wahr oder falsch) wird der Variablen Ergebnis zugewiesen. Da
die Variable Ergebnis als boolescher Wert definiert wurde, erhält sie einen der beiden logischen Werte:
TRUE oder FALSE (als Ergebnis dieses Vergleichs).
Syntax
Wertzuweisung
Beispiel
&
Boolescher Wert := Variableninhalt
= Tastatureingabe
Ergebnis
:=
Antwort
=
Eingabe
FALSE
:=
16
=
15
Der boolesche Wert TRUE oder FALSE wird am Bildschirm ausgegeben.
Die wichtigsten Operationen mit booleschen Datentypen
Boolesche
Bedeutung
Operatoren
NOT
Verneinung der
Verknüpfung
Beispiel
C
:=
TRUE :=
FALSE :=
NOT
NOT
NOT
AND
C
TRUE
FALSE
FALSE
FALSE
A
TRUE
FALSE
TRUE
FALSE
UND-Verknüpfung
:=
:=
:=
:=
:=
A
FALSE
TRUE
AND
AND
AND
AND
AND
B
TRUE
TRUE
FALSE
FALSE
Die Ergebnisvariable C erhält abhängig von den booleschen Werten der
Variablen A und B entweder den Wert TRUE oder FALSE. Nur wenn beide
Variablen A und B den Wert TRUE besitzen, ist das Ergebnis auch wahr
(TRUE).
3 - Grundlagen der Programmierung unter Turbo Pascal
OR
ODERVerknüpfung
C
TRUE
TRUE
TRUE
FALSE
:=
:=
:=
:=
:=
A
TRUE
TRUE
FALSE
FALSE
47
OR
OR
OR
OR
OR
B
TRUE
FALSE
TRUE
FALSE
Hier muß mindestens eine Variable den Wert TRUE besitzen, damit das
Ergebnis TRUE wird.
Exklusive ODERVerknüpfung
XOR
C
FALSE
TRUE
TRUE
FALSE
:=
:=
:=
:=
:=
A
TRUE
TRUE
FALSE
FALSE
XOR
XOR
XOR
XOR
XOR
B
TRUE
FALSE
TRUE
FALSE
Eine XOR-Verknüpfung bedeutet hier, daß genau eine Variable wahr, die
andere falsch sein muß, damit das Ergebnis den Wert TRUE erhält.
3.5.
Wichtige Sprachelemente
Reservierte Programmierwörter
Reservierte Programmierwörter von Turbo Pascal sind Wörter, deren Schreibweise und Bedeutung fest vorgegeben sind, d.h. sie sind Bestandteile von Turbo Pascal und können nicht neu definiert werden. Sie müssen während
der Programmierung darauf achten, daß Sie keine Bezeichner bzw. Namen für beispielsweise Konstanten, Variablen, Prozeduren oder Funktionen vergeben, die als reserviertes Programmierwort in Turbo Pascal bereits
existieren. Der Compiler würde während des Compiliervorgangs eine entsprechende Fehlermeldung ausgeben.
B
eispiel:
PROGRAM, BEGIN, END, VAR, CONST, USES, AND, OR, IF
Im Anhang finden Sie eine Auflistung aller reservierten Programmierwörter und Standard-Anweisungen.
Eine Unterscheidung zwischen Groß- und Kleinschreibung findet nicht statt. Sie können alle reservierten Wörter beispielsweise auch wie folgt schreiben:
program, begin, End, Var, Const, uses.
In den Beispiel- und Übungsprogrammen sind alle reservierten Programmierwörter in Großbuchstaben geschrieben, damit die Programme übersichtlich und einfach zu lesen sind.
Notizen
48
Turbo Pascal 7.0 für DOS
Benutzerdefinierte Namen (Bezeichner)
Alle Variablen, Konstanten, Funktionen, Prozeduren, Units und Programme müssen benannt werden. Die Bezeichnungen hierfür können Sie frei wählen. Folgende Regeln sind dabei zu beachten:
!
!
Ein Bezeichner kann beliebig lang sein. Allerdings beachtet Turbo Pascal nur die ersten 63 Zeichen.
Er muß mit einem Buchstaben oder einem Untersrich_ beginnen und darf kein Leerzeichen enthalten,
damit der Compiler dieses Wort als Bezeichner erkennt. Danach können Ziffern, Buchstaben oder Unterstriche folgen.
Es gibt keinen Unterschied zwischen Groß- und Kleinschreibung.
Die deutschen Umlaute (ä, ö, ü) und das ß sind nicht zulässig.
Reservierte Programmierwörter dürfen nicht als benutzerdefinierte Wörter verwendet werden.
!
!
!
B
eispiel:
Richtig: Rechnungsbetrag2_ausgeben, Ergebnis, GutenTag, antwort, eingabe
Falsch: Rechnungsbetrag2 ausgeben, Guten Tag, 2.Zinsprogramm
Kommentare
Kommentare dienen zur Programmerläuterung. Sie werden vom Compiler ignoriert (überlesen). Damit der
Compiler einen Kommentar erkennt, werden diese in geschweifte Klammern {...} oder in runde Klammern mit
Stern-Symbolen am Anfang und Ende (*...*) gesetzt.
!
Programmabschnitte lassen sich durch Kommentare optisch hervorheben. Dadurch wird die Lesbarkeit der
Programme erhöht und Sie finden schnell zu den einzelnen Stellen des Programms, wenn Sie Verbesserungen oder Erweiterungen vornehmen müssen.
Komplexe Anweisungen lassen sich einfach kommentieren.
Die Bedeutung von Variablen und Konstanten kann erklärt werden.
Kommentare erleichtern die Programmdokumentation. Die Dokumentation von Programmen ist ein wichtiger Teil der strukturierten Programmierung (vgl. Kapitel 14).
!
!
!
B
eispiel:
In umfangreichen Programmen ist es oft zweckmäßig, die Variablen so kurz wie möglich zu
halten, um Schreibarbeit zu sparen und übersichtliche Programmstrukturen zu bekommen. Das
folgende Beispiel ist das Programmbeispiel BETRAG5. Die Variablen des Programms wurden
gekürzt und Kommentare wurden eingefügt.
PROGRAM Rechnungsbetrag5_ausgeben;
{Die Programmdatei heißt BETRAG5.PAS}
USES
Crt;
{Die Unit Crt wird eingefügt}
CONST
ME = 10;
{ME = Menge, PR = Preis}
PR = 50;
Ausg = 'Rechnungsbetrag in DM ';
VAR
BE : Integer;
{BE = Betrag und Ergebnisvariable}
BEGIN
{Bildschirm löschen}
ClrScr;
{Berechnung durchführen}
BE := ME * PR;
{Ergebnis am Bildschirm ausgeben}
WriteLn (Ausg,BE);
END.
Abbildung 3.11
Quellprogramm BETRAG5.PAS
3 - Grundlagen der Programmierung unter Turbo Pascal
49
Übung
⇒
Schreiben Sie ein Programm GELD1, das die Höhe der Geldrückgabe berechnet und am Bildschirm ausgibt, nachdem ein zuzahlender Betrag und ein übergebener Betrag über die Tastatur eingegeben wurden.
Verwenden Sie die Variablen ZahlBetrag, GebenBetrag und RueckBetrag des Datentyps Integer sowie die Bildschirmausgaben als Konstanten:
'Wie hoch ist der zuzahlende Betrag in DM?'
'Wie hoch ist der übergebene Betrag in DM?'
'Ihr Rückgeld beträgt in DM '
⇒
Schreiben Sie ein Programm DREIECK, das die Fläche in cm² eines Dreiecks berechnet und am Bildschirm ausgibt, nachdem die Angaben in cm für die Grundlinie und für die Höhe über die Tastatur eingegeben worden sind. Die Variablen sollen vom Datentyp Integer sein.
⇒
Wie könnte ein gut kommentiertes Programm LOHN1 aussehen, das eine Lohnabrechnung eines Arbeiters
am Bildschirm ausgibt, nachdem alle notwendigen Angaben über die Tastatur erfaßt wurden?
Verwenden Sie einen konstanten Stundenlohn von DM 19,-- sowie einen Überstundenzuschlag DM 7,-- je
Stunde. Die Abrechnung soll folgende Angaben enthalten: Adresse des Arbeiters, gesamte Stundenanzahl,
davon Überstundenanzahl und auszuzahlender Lohn. Verwenden Sie für die Berechnung Integer-Datentypen. Verwenden Sie zur Darstellung der Lohnabrechnung am Bildschirm Leerzeilen.
⇒
Wie könnte ein Programm RATEN aussehen, das eine Person B zum Raten einer Zahl zwischen 1 und 10
auffordert, die zuvor von einer anderen Person A eingegeben wurde? Wird die richtige Zahl eingegeben,
soll das Programm mit TRUE antworten, andernfalls mit FALSE.
3.6.
Ein- und Ausgabe
AUSGABE
EINGABE
"
Arbeitsspeicher
530
530
Read (Betrag)
Write (Betrag)
Abbildung 3.12
Notizen
Eingabe und Ausgabe von Variablen
50
Turbo Pascal 7.0 für DOS
Die Eingabeanweisung Read() und ReadLn()
Die beiden Anweisungen Read() und ReadLn() sind Standard-Prozeduren von Turbo Pascal, mit der Daten über
die Tastatur in den Arbeitsspeicher eingegeben werden können. Häufig erfolgt diese Eingabeanweisung nach einer Ausgabeanweisung Write() oder WriteLn(), die auch in diesem Abschnitt erklärt werden. Das Programm
wartet bei einer Read()- oder ReadLn()-Anweisung auf eine Eingabe mit der Tastatur. Jede Eingabe muß mit
abgeschlossen werden. Das Betätigen der RETURNTASTE
füllt die Variable mit dem
der RETURNTASTE
eingegebenen Wert. Dann wird der Programmlauf fortgesetzt.
Read (Variable1, Variable2, ... )
Nach dem Schlüsselwort Read folgt in runden Klammern eine Liste aller Variablen, die über die Tastatur mit
Werten gefüllt werden sollen. Diese Variablen müssen vorher im Deklarationsteil definiert werden. Die Variablen können verschiedene Datentypen besitzen.
ReadLn (Variable1, Variable2, ...)
Das Schlüsselwort ReadLn setzt sich zusammen aus Read + Line und bedeutet, daß nach der Eingabe der Cursor
auf den Anfang der nächsten Zeile gesetzt werden soll. Ansonsten sind die beiden Prozeduren Read() und
ReadLn() gleich.
B
eispiel:
!
!
!
!
Read (Betrag);
Read (Preis, Menge, Artikelbezeichnung);
ReadLn (Preis, Menge);
ReadLn (Name, Vorname, Strasse, Plz, Ort);
Die Ausgabeanweisung Write() und WriteLn()
Die Write()- und WriteLn()-Anweisungen sind ebenfalls Standard-Prozeduren von Turbo Pascal und bewirken, daß Werte von Variablen und Konstanten am Bildschirm ausgegeben werden, die evtl. vorher mit den
Write()- und WriteLn()-Anweisungen gefüllt worden sind.
Write (Variable1, Variable2, ... )
Write (Konstante1, Konstante2, ...)
Write (Variable1, Konstante1, ...)
Nach dem Schlüsselwort Write folgt in runden Klammern eine Liste aller Variablen und Konstanten, die am
Bildschirm ausgegeben werden sollen. Diese müssen wiederum im Deklarationsteil vordefiniert worden sein.
WriteLn (Variable1, Variable2, ... )
WriteLn (Konstante1, Konstante2, ...)
WriteLn (Variable1, Konstante1, ...)
Das Schlüsselwort WriteLn setzt sich zusammen aus Write + Line und bedeutet, daß nach der Ausgabe der
Cursor auf den Anfang der nächsten Zeile gesetzt werden soll. Ansonsten sind die beiden Prozeduren Write()
und WriteLn() gleich.
B
eispiel:
!
!
!
!
Write (Betrag, Mwstsatz)
Write (Menge, Preis)
WriteLn (Zinssatz, Kapital)
WriteLn (Zinssatz)
3 - Grundlagen der Programmierung unter Turbo Pascal
51
Zur Syntax der Prozeduren Read(), ReadLn(), Write() und WriteLn()
!
!
!
Sie können mehrere Variablen und Konstanten mit einer dieser Prozeduren eingeben oder ausgeben.
Die Variablen und Konstanten werden innerhalb der runden Klammern mit Kommata getrennt.
Das Ausgabeformat einer Variablen oder Konstanten folgt direkt nach einem Doppelpunkt hinter der Variablen oder Konstanten. Zuerst wird die Anzahl der Stellen insgesamt angegeben. Nach einem weiteren
Doppelpunkt wird (je nach Datentyp) die Anzahl der Nachkommastellen aufgeführt.
Unterschied bei der Verwendung von Read() und ReadLn()
Wenn Sie eine Tastatureingabe mit Read() oder ReadLn() vornehmen, wird die Eingabe in einen Puffer geabgeschlossen. Danach speichert Turbo Pascal den eingegebenen Inhalt
schrieben und mit der RETURNTASTE
in den Datenspeicher der Variable.
!
!
ReadLn() überträgt den eingegebenen Inhalt aus dem Puffer in die Variable und entfernt das Zeichen für
aus dem Puffer.
Read() überträgt den eingegebenen Inhalt aus dem Puffer in die Variable und entfernt das Zeichen für die
RETURNTASTE
aus dem Puffer nicht.
die
RETURNTASTE
PUFFER
Eingabe mit readLn
ReadLn (4712)
4712
Eingabe mit read
4712
Abbildung 3.13
Die
4712
RETURN
PUFFER
Read (4712)
PUFFER
VARIABLE
=
PUFFER
VARIABLE
4712
RETURN
=
RETURN
Unterschied der ReadLn()- zur Read()-Prozedur
wird im Puffer als ein Zeichen gewertet. Wenn Sie beispielsweise eine Variable mit
RETURNTASTE
Read() lesen, die vom Datentyp Char ist, kann es vorkommen, daß der Puffer nicht leer ist, da das Zeichen für
die
RETURNTASTE
noch im Puffer enthalten ist.
Damit ihre Programme einwandfrei laufen können, verwenden Sie daher die ReadLn()-Prozedur.
Der Puffer wird dann nach jeder Übertragung des Inhalts in die Variable wieder geleert.
Die Ausgabeformatierung numerischer Datentypen
Die Prozeduren Write() und WriteLn() bewirken eine Ausgabe der Variablenwerte am Bildschirm, exakt in
der Darstellung, wie sie gespeichert wurden. Manche Darstellungen sind jedoch oft unübersichtlich. Ziel der
Ausgabeformatierung ist es, eine gut lesbare Ausgabe für den Benutzer zu erhalten.
Der Datentyp REAL
Ergebnis :=
Notizen
40.55 + 20.2
Ergebnis ohne Formatierung
Write (Ergebnis)
6.0750000000E+01
Ergebnis mit Formatierung
Write (Ergebnis:7:2)
60.75
52
Turbo Pascal 7.0 für DOS
Die Darstellung von Variablen des Datentyps Real wird am Bildschirm in der unformatierten Form als Gleitkommazahl ausgegeben, was auf den Benutzer sehr unleserlich wirken kann. Es gibt nun die Möglichkeit, der
Write-Anweisung weitere Informationen zu geben, um den Inhalt der Variablen in eine besser lesbare Ausgabeform zu bringen.
Write (RealVariable1 : Anzahl der Stellen insg. : Anzahl der Nachkommastellen, ...)
Write (
Ergebnis
:
7
:
Diese Erweiterung der Write-Anweisung bedeutet
nun, daß die Ausgabe der Variablen Ergebnis insgesamt 7 Stellen besitzt, wobei diese 7 Stellen ein
Vorzeichen, einen Dezimalpunkt und 2 Nachkommastellen beinhalten.
1
2
2
3
4
5
6
6
0 . 7 5
)
7
Nachkommastellen = 2
Dezimalpunkt
Vorkommastellen = 3
Es lassen sich auch Integer-Werte in Ausgabeformate bringen. Dabei fallen die Nachkommastellen weg, beispielsweise Write(Zahl:5).
Vorzeichen (nur bei negativen Zahlen -)
Sie können zu den Variablen- oder Konstantenwerten auch erläuternde Texte ausgeben. Diese Texte sind dann
vom Datentyp String und müssen deshalb in Apostrophe gesetzt werden (siehe nachfolgende Beispiele).
B
eispiel:
!
Write ('Das Ergebnis lautet: ', Ergebnis:7:2)
Mit dieser Anweisung wird zuerst eine Textkonstante ausgegeben. Danach folgt die
formatierte Ausgabe der Variablen Ergebnis, die 7 Stellen lang ist und 2 Nachkommastellen besitzt.
!
Write ('-----', Betrag:10:1, '-----')
Die Variable Betrag wird zwischen 2 Textkonstanten ausgegeben. Sie ist in dem Fall
10-stellig und besitzt nur eine Nachkommastelle.
!
Write ('
', Grußformel);
Hier wird eine leere Zeichenkette ausgegeben, die mehrere Leerstellen enthält. Danach
wird die Variable Grußformel ausgegeben, die ebenfalls als Wert eine Zeichenkette
enthalten kann. Der Wert ist hier jedoch nicht ersichtlich, er läßt sich durch den Variablennamen höchstens vermuten.
!
Write (Betrag:10:2, Ergebnis:8)
Es werden die zwei formatierten Variablen Betrag und Ergebnis ausgegeben, wobei
die erste Variable 10 Stellen mit 2 Nachkommastellen besitzt und die zweite Variable 8stellig ist ohne Nachkommastelle. Hier kann die Variable Ergebnis auch vom Typ Integer sein.
Die in diesem Abschnitt aufgeführten Erläuterungen und Beispiele für die Eingabe lassen sich
nicht nur mit Read() sondern auch mit ReadLn() durchführen. Das gleiche gilt für die Erläuterungen und Beispiele der Ausgabeprozeduren Write() und WriteLn().
Ein- und Ausgabeformatierung am Bildschirm mit GotoXY()
Wenn viele Werte von der Tastatur eingelesen oder eine große Anzahl von
Texten und Variablen am Bildschirm ausgegeben werden, ist es sinnvoll,
die Ein- und Ausgabe am Bildschirm leserlich aufzubereiten. Hilfreich ist
hierfür die Prozedur GotoXY(), die den Cursor, den Inhalt einer Variablen
oder eine Konstante an eine bestimmte Zeile und Spalte auf den Bildschirm
positioniert. Die Prozedur GotoXY() benötigt deshalb eine Spalten- und
Zeilenangabe auf dem Bildschirm, der in 80 Spalten und 25 Zeilen eingeteilt ist.
GotoXY (Spalte, Zeile)
80 Spalten
25 Zeilen
3 - Grundlagen der Programmierung unter Turbo Pascal
B
!
"
#
$
eispiel:
Dieses Programm ADRESSE3 gibt eine Adresse formatiert am Bildschirm aus, die vorher
über die Tastatur ebenfalls formatiert eingegeben wurde.
PROGRAM Adresse_abfragen_und_ausgeben;
USES
Crt;
VAR
Name, Strasse, Ort : String[20];
Plz : String[5];
BEGIN
ClrScr;
{Hier wird zuerst der Eingabebildschirm aufbereitet}
GotoXY (10,5);
WriteLn ('-------------- Adresse eingeben -----------------');
GotoXY (10,6);
WriteLn ('-------------------------------------------------');
GotoXY (10,8);
WriteLn ('Vorname/Name ...... :');
GotoXY (10,10);
WriteLn ('Strasse ........... :');
GotoXY (10,12);
WriteLn ('PLZ:');
GotoXY (23,12);
WriteLn ('Ort .. :');
GotoXY (35,8);
{Hier beginnen die Eingabeanweisungen}
ReadLn (Name);
GotoXY (35,10);
ReadLn (Strasse);
GotoXY (16,12);
ReadLn (Plz);
GotoXY (35,12);
ReadLn (Ort);
{Hier beginnt die Bildschirmausgabe}
ClrScr;
GotoXY (10,5);
WriteLn ('---------------- Adresse ausgeben ---------------');
GotoXY (10,6);
WriteLn ('-------------------------------------------------');
GotoXY (20,8);
WriteLn (Name);
GotoXY (20,10);
WriteLn (Strasse);
GotoXY (20,12);
WriteLn (Plz);
GotoXY (27,12);
WriteLn (Ort);
END.
Abbildung 3.14
Notizen
53
Quellprogramm ADRESSE3.PAS
54
!
"
#
$
Turbo Pascal 7.0 für DOS
Die Prozedur GotoXY() wird in der Unit Crt verwaltet. Um diese Prozedur in das Programm einzubinden, muß der Eintrag Crt hinter dem Schlüsselwort USES erfolgen.
Die Anweisung GotoXY (10,5) bewirkt, daß das erste Zeichen der nachfolgenden Konstanten-Ausgabe
in Spalte 10 und in Zeile 5 erfolgt.
Hier wird der Cursor für die nachfolgende Eingabe in Spalte 35, Zeile 8 positioniert.
Diese GotoXY()-Anweisung bewirkt, daß die nachfolgende Variable Name in Spalte 20, Zeile 8 ausgegeben wird.
Übung
⇒
Ändern Sie die Variablen des Programms PIZZA1 (vgl. Abschnitt 3.3) vom Datentyp Integer in den
Datentyp Real um, und zentrieren Sie Ein- und Ausgabe am Bildschirm. Speichern Sie das Programm
unter dem Namen PIZZA2.PAS.
⇒
Ändern Sie das Programm LOHN1 (vgl. Abschnitt 3.5) so ab, daß das Programm mit Variablen vom Datentyp Real arbeitet, und bringen Sie die Ein- und Ausgabe in eine übersichtliche Form. Speichern Sie
dieses Programm unter dem Namen LOHN2.PAS.
⇒
Schreiben Sie ein Programm, das diesen Eingangsbildschirm
der Lohnabrechnung zentriert am Bildschirm ausgibt. Legen Sie
alle notwendigen Konstanten im Deklarationsteil fest. Speichern
Sie es unter dem Namen LOHNBILD.PAS.
3.7.
**********************************
**
**
*
*
*
--- Guten Tag --*
*
*
*
Dieses Programm gibt
*
*
eine Lohnabrechnung aus.
*
*
*
**
**
**********************************
Syntaxmarkierung in Turbo Pascal
Sprachelemente farbig markieren
Wenn Sie Ihr Programm schreiben, sehen Sie, daß
Turbo Pascal verschiedene Wörter oder Anweisungen andersfarbig darstellt. Beispielsweise sind
standardmäßig benutzerdefinierte Wörter weiß und
die restlichen Sprachelemente gelb. Die unterschiedliche Markierung soll Ihnen das Auffinden
von Programmteilen erleichtern. Die Programmstruktur wird übersichtlich, und Sie erkennen oft
bei nicht einwandfreien Compiliervorgängen
Abbildung 3.15
schneller Ihre Fehler.
Aktuelle Farbe
Das Dialogfenster FARBEN
Wenn Sie auch andere Sprachelemente farblich hervorheben wollen, müssen Sie folgende Veränderungen vornehmen:
⇒
Rufen Sie den Menüpunkt OPTION - UMGEBUNG - FARBEN auf.
⇒
Wählen Sie im Listenfeld GRUPPE den Eintrag SYNTAX. Im Listenfeld ELEMENT werden alle Sprachelemente von Turbo Pascal sichtbar.
⇒
Klicken Sie mit der linken Maustaste auf das Element, das Sie farblich verändern wollen. Ein Kreis in den
beiden Farbpaletten VORDERGRUND und HINTERGRUND zeigt Ihnen die aktuelle Farbeinstellung zu dem
gewählten Element.
⇒
Um die Farbeinstellungen zu ändern, klicken Sie mit der linken Maustaste auf die gewünschte Farbe der
VORDERGRUND-Farbpalette und HINTERGRUND-Farbpalette.
Unterhalb der beiden Farbpaletten zeigt Ihnen Turbo Pascal, wie die gewählte Farbeinstellung wirkt.
⇒
Bestätigen Sie mit OK oder mit der
RETURNTASTE
.
3 - Grundlagen der Programmierung unter Turbo Pascal
55
Syntaxmarkierung ausschalten
⇒
Rufen Sie den Menüpunkt OPTION - UMGEBUNG - EDITOR auf.
⇒
Schalten Sie das Kontrollfeld TEXTFARBEN
aus.
⇒
Bestätigen Sie mit OK, oder betätigen Sie
.
die RETURNTASTE
Alle Sprachelemente Ihres Quellprogramms
besitzen nun eine einheitliche Farbe.
Abbildung 3.16
Das Dialogfenster EDITOR-EINSTELLUNGEN
Sprachelemente markiert drucken
Sie haben die Möglichkeit, die farblich markierten Sprachelemente beim Drucken hervorzuheben. Dazu muß Ihr
Quellprogramm vor dem Drucken durch das Filterprogramm PRNFLTR.EXE laufen. Diese Einstellung ist standardmäßig vorgenommen. Falls Ihre Quellprogramme nicht mit unterschiedlichen Markierungen gedruckt werden, müssen Sie folgende einmalige Einstellung vornehmen:
⇒
Wählen Sie den Menüpunkt DATEI DRUCKERINSTALLATION.
⇒
Schreiben Sie in das Eingabefeld PFAD FÜR
FILTER den Programmnamen PRNFLTR.
⇒
Aktivieren Sie das Kontrollfeld SYNTAXHERVORHEBUNG.
⇒
Bestätigen Sie mit OK, oder betätigen Sie
.
die RETURNTASTE
Dieser Menüpunkt bewirkt, daß den unterschiedliAbbildung 3.17
chen Farben der Sprachelemente beim Drucken
bestimmte Attribute (fett, kursiv oder unterstrichen) zugewiesen werden.
Das Dialogfenster DRUCKERINSTALLATION
Im Eingabefeld KOMMANDOZEILEN-PARAMETER können Sie einen anderen Drucker installieren. Informationen
dazu finden Sie in Ihrem Handbuch.
Notizen
56
Turbo Pascal 7.0 für DOS
3.8. Fehlersuche und Fehlerbehebung
Fehlerarten
Während Sie Ihr Quellprogramm schreiben und testen, treten häufig Fehler auf, beispielsweise beim Compilieren oder während der Programmausführung. Die möglichen
Fehler, die auftreten können, lassen sich in drei Gruppen gliedern.
Syntaxfehler
Laufzeitfehler
Logische Fehler
Syntaxfehler
Diese Fehler treten bereits während der Compilierung eines Quellprogramms auf, wenn Sie sich nicht an die
Syntax von Turbo Pascal halten. Ein Quellprogramm kann nicht compiliert werden, wenn es fehlerhafte Anweisungen enthält.
B
eispiel:
!
!
!
!
Sie benutzen Variablen, Konstanten oder andere Bezeichner, die Sie nicht deklariert
haben oder bereits als Programmierwörter existieren.
Sie haben Sonderzeichen (Semikolon, Punkt) vergessen, die Sie nach jeder Anweisung
setzen müssen.
Eine Variable oder ein Schlüsselwort ist falsch geschrieben.
Sie führen Rechenoperationen mit unterschiedlichen Datentypen durch, die nicht miteinander vereinbar sind.
Wenn der Compiler während des Compiliervorgangs solche Fehler erkennt, bricht er den Übersetzungslauf ab.
Der Cursor steht an der Stelle des aufgetretenen Fehlers, der am oberen oder unteren Rand des Editor-Fensters
beschrieben wird. Der eigentliche Fehler kann jedoch auch einige Zeilen weiter oben liegen. Die Fehlermeldung
hat folgenden Aufbau:
FEHLER Fehlernummer : Kurzbeschreibung des Fehlers.
Hinter der Information FEHLER folgt eine Fehlernummer. Jede
Fehlermeldung ist mit einer Nummer versehen, die das Suchen im
Hilfesystem und im Handbuch vereinfacht. Wenn Sie weitere Erläuterungen zu der Fehlermeldung haben möchten, können Sie im
Hilfesystem (siehe Abschnitt 3.9) oder im Handbuch nach der entsprechenden Nummer suchen und sich weitere Informationen anzeigen lassen. Hinter der Fehlernummer wird eine Kurzbeschreibung des Fehlers ausgegeben, die oft für die Korrektur des Fehlers
ausreichend ist. Um das Hilfesystem zu aktivieren:
⇒
Betätigen Sie die F1 -Taste, während Sie die FehlermelAbbildung 3.18
dung am Bildschirm sehen.
Fehlermeldung während des
Compilierens
Ein Hilfefenster wird geöffnet, und Sie sehen zu Ihrer Fehlermeldung eine weitere Erläuterung, die Ihnen zur Behebung dieses
Fehlers nützlich sein kann.
⇒
Nachdem Sie die Erläuterung gelesen haben, schließen Sie
das Hilfefenster wieder, indem Sie mit der linken Maustaste
auf das Schließfeld klicken oder die Tastenkombination
ALT F3 betätigen.
⇒
Nach der Korrektur Ihres Quellprogramms rufen Sie erneut
den Menüpunkt COMPILER - COMPILIEREN auf, oder Abbildung 3.19 Hilfefenster bei Fehlermeldung
betätigen Sie die Tastenkombination ALT F9 , um den
Compiliervorgang noch einmal zu starten.
Wiederholen Sie diese Schritte bis keine Syntaxfehler mehr auftreten. Nach fehlerfreier Übersetzung erscheint
dann das Statusfenster aus Abbildung 2.15.
3 - Grundlagen der Programmierung unter Turbo Pascal
57
Laufzeitfehler
Nachdem Sie alle Syntaxfehler beseitigt haben, wird das Programm durch den Menüpunkt START - AUSFÜHREN oder der Tastenkombination STRG F9 ausgeführt. Tritt während des Programmlaufs ein Fehler auf, wird
das Programm abgebrochen, bevor das logische Programmende erreicht ist. Dies bezeichnet man als Laufzeitfehler. Im Gegensatz zu Syntaxfehlern treten Laufzeitfehler nicht schon bei der Compilierung auf, sondern erst bei
der Ausführung eines Programms.
B
eispiel:
!
!
!
Sie haben ein Programm geschrieben, das eine Tabelle am Drucker ausgeben soll. Der
Drucker enthält jedoch, während Sie das Programm ausführen, kein Papier.
Das Programm möchte auf eine Datei zugreifen, die nicht existiert.
Das Programm versucht, eine Zahl durch Null zu dividieren.
Der Compiler erkennt den Fehler während des Compiliervorgangs nicht. Die Fehlermeldung wird nach dem Programmabbruch am Bildschirm angezeigt:
RUNTIME ERROR Fehlernummer AT: Befehlsadresse
Nach der Information RUNTIME ERROR (= engl. Bezeichnung für Laufzeitfehler) folgt die Fehlernummer, unter der im Hilfesystem und im
Handbuch weitere Erläuterungen zur Fehlermeldung stehen. Die Befehlsadresse gibt an, wo sich der Fehler im ausführbaren Maschinenprogramm befindet. Der Cursor steht im Quellprogramm an der Stelle des
aufgetretenen Fehlers, der am oberen rechten Rand des Editor-Fensters
beschrieben wird. Sie haben hier wiederum die Möglichkeit durch Betätigen der F1 -Taste ein Hilfefenster zu öffnen, das eine Beschreibung der
Fehlermeldung anzeigt. Ändern Sie Ihr Quellprogramm, compilieren Sie
es, und führen Sie es erneut aus. Ihre Laufzeitfehler sind behoben, wenn
das Programm bis zum normalen bzw. logischen Programmende durchgeführt wurde.
Abbildung 3.20
Logische Fehler
Fehlermeldung während der Laufzeit
Logische Fehler sind Fehler, die Turbo Pascal nicht erkennt. Diese Art von Fehlern liegt in der Strukturierung
und Logik des Programmablaufs. Sie werden nicht wie Syntaxfehler oder Laufzeitfehler am Bildschirm angezeigt. Das Programm wird fehlerfrei compiliert und ausgeführt. Die Ausführung des Programms ist jedoch anders
als es vom Programmierer geplant war, beispielsweise wenn der Programmablauf nicht dem logischen Ablauf der
Problemlösung entspricht. Um solche Fehler zu verringern, sollten Sie für jedes Programm eine systematisch
strukturierte Vorplanung durchführen, wie sie in Kapitel 14 beschrieben wird.
B
eispiel:
Sie haben ein Programm geschrieben, das zwei Zahlen multiplizieren soll, die über die Tastatur eingegeben wurden. Das Programm wird durchgeführt, liefert Ihnen aber ein falsches
Ergebnis.
Die Ursachen hierfür können in einer unzureichenden Problemanalyse liegen. Wichtig: Überprüfen Sie Ihre Programme auf logische Richtigkeit, indem Sie beispielsweise bei Rechenoperationen eine manuelle Berechnung
durchführen und das Ergebnis mit dem Computerergebnis vergleichen. Stimmen diese Ergebnisse nicht überein,
überprüfen Sie die einzelnen Programmschritte Ihres Programms.
Notizen
58
B
Turbo Pascal 7.0 für DOS
eispiel:
Folgende logische Fehlerursachen sind möglich:
Vertauschen von Variablen bei einer Wertzuweisung
!
Betrag := 20;
Wert := 34;
Betrag := Wert;
Rechnung := Betrag * 2;
Hier wird der Variablen Betrag der Inhalt der Variablen Wert zugeordnet. Der Inhalt der
Variablen Betrag ist danach 34. Die Ergebnisvariable Rechnung hat hier den Wert 68.
Betrag := 20;
Wert := 34;
Wert := Betrag;
Rechnung := Betrag * 2;
!
!
In diesem Fall ist die Wertzuweisung Betrag := Wert vertauscht worden in Wert :=
Betrag. Der Inhalt der Variablen Rechnung beträgt dann 40.
Variablen, die einen Anfangswert erhalten sollen, sind nicht oder falsch initialisiert
worden.
Die Reihenfolge der Arbeitsschritte im Anweisungsteil stimmt nicht oder es wurden
Arbeitsschritte vergessen.
Übung
Schreiben Sie das folgende fehlerhafte Programm UMSATZ1, genau so wie es hier dargestellt ist, compilieren
und testen Sie es. Versuchen Sie alle Fehler zu beheben. Denken Sie dabei nicht nur an Syntax- und Laufzeitfehler, sondern auch an logische Fehler. Dieses Programm soll den durchschnittlichen Umsatz der Regionen Nord,
Süd, West und Ost berechnen.
PROGRAM Durchschnittlicher Umsatz;
VAR Nord, Sued, West, Ost, DUmsatz : Real
Region : Integer;
BEGIN
WriteLn ('Wie hoch war der Umsatz der Region Nord in DM?');
ReadLn (Nord);
WriteLn ('Wie hoch war der Umsatz der Region Süd in DM?' );
ReadLn (Süd);
WriteLn ('Wie hoch war der Umsatz der Region West in DM? ');
ReadLn (West);
WriteLn ('Wie hoch war der Umsatz der Region Ost in DM? ');
ReadLn (Ost);
DUmsatz := Nord + Süd + West + Ost / Region;
WriteLn ('Der durchschnittliche Umsatz beträgt in DM: ,DUmsatz:8:2,);
END
3.9.
Das Hilfesystem von Turbo Pascal
Mit dem Menüpunkt ? öffnen Sie ein Menüfenster, mit dem Sie sich Hilfsinformationen zu Menüpunkten, zu
Programmierwörtern, Compiler-Befehlen, Fehlermeldungen und vieles mehr anzeigen lassen können.
3 - Grundlagen der Programmierung unter Turbo Pascal
59
Der Umgang mit dem Hilfesystem
Viele Hilfefenster besitzen farblich hervorgehobene Schlüsselwörter.
Durch einen Doppelklick auf ein Schlüsselwort oder durch Markieren
des Schlüsselwortes mit der
-Taste und anschließendem Bestätigen
RETURNTASTE
können Sie sich zusätzliche Hilfestellungen in
mit der
einem weiteren Fenster anzeigen lassen.
Mit dem Menüpunkt ? - VORHERIGES THEMA oder mit der Tastenkombination ALT F1 gelangen Sie wieder zum Hilfefenster zurück, das
Ihre zuvor gewählte Hilfestellung enthält.
Abbildung 3.21
Das Hilfemenü
Die kontextbezogene Hilfe
Innerhalb von Turbo Pascal können Sie von jeder beliebigen Stelle aus direkt Hilfestellungen zur gerade eingeleiteten Arbeit oder zum markierten Menüpunkt bzw. dem aktiven Dialogfenster anfordern. Deshalb wird diese Art
der Hilfe als kontextbezogene Hilfe bezeichnet.
⇒
Betätigen Sie hierzu die Funktionstaste F1 .
oder Klicken Sie in der Statuszeile F1 HILFE an.
Im Gegensatz zur normalen Hilfe werden die Hilfetexte bei der kontextbezogenen Hilfe in Dialogfenstern angezeigt. Die Anzeige kann hierbei über Befehlsschalftlächen gesteuert werden.
Das sprachbezogene Hilfesystem
Sie können sich zu einzelnen Begriffen (Programmierwörter, Prozeduren, Funktionen, ...), die Sie im Quellprogramm verwenden, Hilfetexte anzeigen lassen, in denen Verwendungsmöglichkeiten, Beispiele und weitere
nützliche Informationen enthalten sind.
⇒
Plazieren Sie den Cursor auf den Begriff, zu dem Sie einen Hilfetext wünschen.
⇒
Wählen Sie den Menüpunkt ? - SUCHE ÜBER SCHLÜSSELWORT, oder betätigen Sie die F1 -Taste. Es
öffnet sich ein Fenster, das Informationen zu dem Begriff enthält, auf dem sich Ihr Cursor befindet.
Falls zu diesem Begriff kein Hilfetext existiert, öffnet sich ein Fenster, das den Hilfe-Index enthält. Dort ist bereits das Stichwort markiert, das dem gesuchten Begriff am nächsten kommt. Durch Doppelklick auf das Stichwird der entsprechende Hilfewort oder durch Markieren des Stichwortes und Betätigen der RETURNTASTE
text oder eine weitere Liste mit Stichwörtern angezeigt.
Das Hilfesystem beenden
⇒
Betätigen Sie die ESC -Taste.
oder Schließen Sie das Hilfefenster durch Anklicken des Schließfeldes.
oder Klicken Sie mit der linken Maustaste auf eine Stelle außerhalb des Hilfefensters.
Notizen
60
Turbo Pascal 7.0 für DOS
Die Hilfe-Menüpunkte im Überblick
Inhalt
Es wird ein Inhaltsverzeichnis gezeigt, das einen Überblick über die Hilfethemen enthält. Durch Doppelklick auf ein Hilfethema können Sie sich nähere Informationen zu diesem Thema anzeigen lassen.
Index
Es erscheint ein Fenster mit einer Stichwortliste. Durch Doppelklick auf ein
Stichwort oder durch Markieren des Stichwortes und Betätigen der
RETURNTASTE
wird der entsprechende Hilfetext oder eine weitere Liste mit
Stichwörtern angezeigt.
Suche über Schlüsselwort
Hiermit läßt sich die kontextbezogene Hilfe aufrufen.
Vorheriges Thema
Sie gelangen wieder zu dem Hilfefenster, das Sie zuvor gewählt haben.
Hilfe verwenden
Dieser Menüpunkt gibt Ihnen Informationen zur Bedienung der Hilfefunktion.
Dateien installieren
Hier können Sie zusätzliche Hilfedateien in das Turbo Pascal-Hilfesystem hinzufügen.
Compiler-Befehle
Es wird Ihnen eine Liste mit Compiler-Befehlen angezeigt. Sie können sich zu
diesen Befehlen weitere Informationen anzeigen lassen, indem Sie den gewünschten Befehl auswählen.
Prozeduren und Funktionen Es erscheint eine Liste mit Prozeduren und Funktionen, die Sie für weitere Erläuterungen auswählen können. Dieses Hilfefenster ist jedoch nicht in jeder
Version von Turbo Pascal verfügbar.
Reservierte Wörter
Hier können Sie sich einen Index mit allen reservierten Wörtern von Turbo
Pascal anzeigen lassen. Sie haben hier auch die Möglichkeit, durch Auswählen
eines Wortes sich eine detaillierte Beschreibung anzeigen zu lassen.
Standard-Units
Hier werden Ihnen die Standard-Units angezeigt. Weitere Informationen erhalten Sie durch Auswahl einer Unit.
Sprachspezifikation
Eine Liste des gesamten Sprachumfangs können Sie sich hier anzeigen lassen.
Durch Auswahl eines Elementes werden Ihnen weitere Informationen angezeigt.
Fehlermeldungen
Hier erscheint eine Liste der Fehlermeldungen gruppiert nach den Fehlernummern, die Ihnen Turbo Pascal mit der Fehlermeldung am Bildschirm ausgibt.
Anhand der Fehlernummer können Sie sich leicht eine detaillierte Beschreibung
zu Ihrer Fehlermeldung anzeigen lassen, um mögliche Ursachen zu erkennen.
Info über Turbo Pascal
Ein Dialogfenster öffnet sich mit der Versionsnummer und Copyright-Meldung
von Turbo Pascal.
Nützliche Tastenkombinationen zum Arbeiten mit dem Hilfesystem
Zeigt die kontextbezogene Hilfestellung an.
F1
STRG
!
Umschalten
ALT
Zeigt eine sprachbezogene Hilfestellung an.
F1
F1
F1
Zeigt den Index des Hilfesystems an.
Zeigt die zuletzt gewählte Hilfestellung an.
3 - Grundlagen der Programmierung unter Turbo Pascal
Notizen
61
Herunterladen