Turbo-Pascal


Bild 1: Einschaltmeldung

Standard-Pascal, von N. Wirth im Jahr 1970 eingeführt, fand aufgrund seiner Leistungsfähigkeit, der leichten Erlernbarkeit und vor allem wegen des strukturierten Aufbaus Verwendung in der Ausbildung. Aufgrund der weiten Verbreitung von Pascal entstand der Anspruch, diese Sprache auch auf den Ende der 70er Jahre aufkommenden Kleincomputern einzusetzen. So wurde eine auf diesen Anwendungsbereich bezogene Pascal-Version entwickelt, das sogenannte UCSD-Pascal. Während mit Standard-Pascal im wesentlichen mit Lochkarten gearbeitet wurde und Dateien auf Magnetbändern angelegt waren, hat USCD-Pascal einen erweiterten Befehlssatz, auch speziell zum unmittelbaren Zugriff auf Dateien, die auf Magnetplatten bzw. Disketten gespeichert sind. Aber ein noch gewichtigerer Unterschied ist, daß UCSD-Pascal ein vollständiges Betriebssystem ist, bestehend aus Compiler, Linker, Texteditor, Utilities, verschiedenen Assemblern und einem System zur Wartung von Dateien. Da Editieren, Compilieren und Binden getrennt durchgeführt werden mußte, war neben dem Zeitfaktor ein relativ großer Arbeitsspeicher notwendig. Mit der 1985 erschienenen Version von Turbo-Pascal 3.0 der Fa. Borland Inc. wurden mehrere Vorzüge miteinander vereint.

Sie ist mit etwa 200,— sehr preiswert (UCSD-P. ca. 800-1000 DM), ein wesentlicher Vorteil aber liegt bei dem geringen Speicherbedarf von ca. 34 KB auf der Diskette. Der Befehlssatz liegt nicht über dem der bisher bekannten Pascal-Versionen, hier wurde vielmehr auf eine Effizienz der Befehle wert gelegt, die sich in einer äußerst bequemen Handhabung bemerkbar macht.

Turbo-Pascal ist menügesteuert und hat keinen expliziten Compiler oder Binder wie andere Pascal-Versionen, das heißt, es ist nicht möglich, Teile eines Quelltextes getrennt zu übersetzen und bei Bedarf mit anderen Programmen zu binden. Es gibt aber die Möglichkeit vollständige Programme mit den Standard-Prozeduren Chain und Execute zu koppeln. Dies mag man als Nachteil sehen, der jedoch wegen der Schnelligkeit des Turbo-Pascal Compilers in Vergessenheit gerät. Durch diese Menüsteuerung ist Turbo-Pascal um bis zu < < < 100 > > >mal schneller als gewöhnliche Pascal-Versionen beim Erzeugen von lauffähigen Programmen.

Unter CP/M ruft man Turbo-Pascal mit "TURBO” auf. Darauf erscheint das Eingangsmenü und fragt, ob zu Fehlermeldungen ein Kommentar angezeigt werden soll (Bild 1).

Wenn mit Y geantwortet wird, werden bei auftretenden Fehlern nicht nur der Fehlercode sondern auch ein dementsprechender selbstklärender englischer Text ausgegeben. Nun wird das Hauptmenü angezeigt, das alle notwendigen Optionen zur Steuerung beinhaltet.

Hauptmenü

Hier nun eine kurze Erklärung der zur Verfügung stehenden Befehle:

LOGGED DRIVE:
Bezeichnet das zur Zeit angemeldete Laufwerk (das kann natürlich auch eine RAMDISK sein).

ACTIVE DIRECTORY:
Ist nur unter MS-DOS von Bedeutung. Dort kann man Unterverzeichnisse auf der Diskette anlegen.

WORK FILE:
Hier ist die zu bearbeitende Datei einzugeben, die, nachdem das Laufwerk angegeben wurde, geladen wird. Dasselbe gilt auch für das Neuanlegen einer Datei.

MAIN FILE:
Ist anzugeben wenn ein Programm über mehrere Dateien verteilt wurde.

COMPILE:
Compiliert ein Programm.

RUN:
Ausführung des Programms.

SAVE:
Sichert die Datei auf dem angemeldeten Laufwerk unter dem bereits angegebenen Namen (Work File).

DIR:
Zeigt den Inhalt des angemeldeten Laufwerkes.

QUIT:
Beendet Turbo-Pascal.

EXECUTE:
Lädt das angegebene Codefile (.COM) und führt es aus.

OPTIONs:
Hier können Compiler-Direktiven gewählt werden [Compilen im Speicher, Compilen auf Diskette (direkt aus CP/M aufrufbar)].

EDIT:
Ruft den bildschirmorientierten Texteditor, der auf Wordstar aufgebaut worden ist, auf. Dieser ist verständlicherweise nicht mit einem so umfangreichen Befehlssatz versehen wie Wordstar. Nähere Einzelheiten entnehme man dem Handbuch.

Turbo-Pascal ist momentan für vier Betriebssysteme erhältlich:

  1. CP/M-80
  2. CP/M-86
  3. MS-DOS
  4. PC-DOS

Dabei verfügen die Versionen für IBM und Kompatible noch über einige Grafikfunktionen. Diese fehlen den CP/M-Versionen gänzlich.

Die in diesem Bericht erwähnten Prozeduren und Funktionen sind nur Bestandteil von Turbo-Pascal ab Version 2.0 unter CP/M. Darüberhinausgehende Unterschiede zu Turbo-Pascal unter MS-DOS, sowie andere Pascal-Versionen (Standard-Pascal, UCSD) werden im wesentlichen erläutert.

Im folgenden wird auf die Besonderheiten von Turbo-Pascal aufmerksam gemacht, die ein besonders effizientes Arbeiten möglich machen:

a) Bei der Case-Anweisung ist ein Else erlaubt, das ausgeführt wird, wenn der Ausdruck nach Case einen Wert hat, der unter den Konstanten nicht vorkommt.

b) Die Standardprozeduren Write und Read wurden generell für alle Ein-und Ausgaberoutinen eingeführt, da diese eine schnellere Abarbeitung ermöglichen sowie erheblich vielseitiger und leichtverständlicher sind als GET und PUT. Hier sind keine Datenpuffervariablen nötig.

c) Ein Programm kann ohne Programmkopf beginnen.

d) Der Datentyp PACKED und UN-PACKED hat in Turbo-Pascal keine Wirkung, ist aber dennoch erlaubt, um Standard-Pascal Programme auch unter Turbo-Pascal lauffähig zu halten.

Daher gilt: Die Datentypen packed Array [] of Char und Array [] of Char werden wie der Datentyp String [] behandelt, der zudem noch Zugriff auf einige Standard-Prozeduren ermöglicht (Delete, Insert, STR, VAL, Concat, Copy, Length, Pos).

e) Bei GOTO haben außer Marken ebenso Namen Gültigkeit, allerdings beschränken sich die Sprunganweisungen auf den aktuellen Block. Häufige Anwendung finden Sprunganweisungen für den Fall, daß man bei Eintreten einer bestimmten Bedingung ans Programmende springen will. Da dies aber nicht möglich ist, gibt es zur Vereinfachung die Standardprozedur HALT. Sie bewirkt ein sofortiges Beenden des Programms.

f) Turbo-Pascal beinhaltet folgende vordefinierte Konstanten, die ohne Definition verwendet werden können.

Name	Typ		Wert
Pi		Real	3.1415926536E+00
Maxint	Integer 32767
True	Boolean Wahrheitswert true
False	Boolean Wahrheitswert false

g) Neben den Konstanten gibt es auch die sogenannten Typenkonstanten. Diese sind eigentlich Variable, die im Konstantendefinitionsteil einen Anfangswert erhalten. Sie dürfen nicht in der VAriablendefinition vereinbart werden, und können neue Werte zugewiesen bekommen.

h) In Turbo-Pascal gibt es drei Varianten von Dateien: Allgemeine Dateien, Text-Dateien und typenlose Dateien. Letztere ermöglichen Zugriffe auf Datensätze von 128 Byte Länge, die sehr schnell und speicher-effizient erfolgen. Die Prozeduren Read und Write werden durch Blockread und Blockwrite ersetzt, die jeweils 128 Byte Datensätze übertragen. Vorzugsweise zum Kopieren von Dateien eignet sich dieser Typ.

i) Die Angabe von Hexadezimalkonstanten ist zulässig, allerdings ohne Angabe von Vorzeichen.

DEZ 0...32767
entspricht HEX $0000...$7FFF

DEZ -1...-32768
entspricht HEX $FFFF...$8000

j) Zeichenketten, Konstanten des Typ Char, können außerhalb der Apostrophe auch Control-Zeichen enthalten, um bestimmte Effekte zu erzielen, z. B. Hupzeichen, Escape, Return.

Zur Angabe solcher Zeichen gibt es zwei Schreibweisen:

  1. gefolgt von dem entsprechenden Dez.-Code oder Hex.-Code des ASCII-Zeichens.

  2. gefolgt von dem Zeichen, das dem Ctrl-Zeichen entspricht.

Hierzu drei Beispiele:

#7 oder #$7 oder G für das Hupsignal
#13 oder #$0D oder M für Return

’HALLO,AUFWACHEN’
G G G'EINGABE MACHEN’

Aneinanderreihung der Ctrl-Zeichen ohne Trennzeichen.

k) Es gibt die folgenden logischen Operatoren für Werte des Typs

  1. INTEGER: NOT,AND,OR,XOR,SHL,SHR
  2. BOOLEAN: NOT,AND,OR,XOR

l) Für Programme die die Kapazität des Arbeitsspeichers sprengen, gibt es die sogenannte Overlay-Technik. Die besagt, daß Teile des Objektcodes erst bei Bedarf in den Arbeitsspeicher geladen werden, so laufen Programme, die insgesamt nicht in den Speicher passen würden.

Durch den Vorsatz O V E R L A Y wird bewirkt, daß der Compiler den Objektcode nicht in der Datei des Hauptprogrammes ablegt, sondern in einer gesonderten Overlay-Datei, aus der dann die einzelnen Overlays nachgeladen werden. Overlays können ihrerseits wieder Overlays aufrufen (allerdings nicht sich selbst). Durch Overlays können nur Prozeduren und Funktionen gekennzeichnet. Sehr speichereffiziente Technik, aber relativ zeitaufwendig, wenn sich die Overlaydatei nicht auf RAM-Disk oder Festplatte befindet.


Bild 2: Hauptmenü

Weitere Informationen zum Overlay, insbesondere der Compiler Direktive zur Erzeugung der Overlaydatei, müssen dem Handbuch entnommen werden.

m) Bei rekursiven Aufrufen dürfen lokale Variablen einem Unterprogramm nicht als VAR-Parameter übergeben werden.

n) Prozeduren und Funktionen können nicht als Parameter an Unterprogramme übergeben werden.

o) Die Standardprozedur PAGE, die einen Seitenvorschub bewirkt, ist unter CP/M nicht verfügbar.

p) Für dynamische Variablen werden die Prozeduren NEW, MARK und RELEASE verwendet. Sie bieten Kompatibilität zu anderen Pascal-Versionen.

Noch ein Wort zu den komfortablen Fehlermeldungen. Wie schon anfangs erwähnt, kann zusätzlich zu dem Fehlercode auch ein entsprechender Kommentar angezeigt werden. Damit erspart man sich ein häufiges Nachschlagen im Handbuch, besonders dann, wenn man mehrere Fehler in einem Programm hat, da der Compiler bereits beim ersten gefundenen Fehler abbricht. Das heißt, daß alle Fehler erst nach mehrmaligem Compilieren des Programmes lokalisiert werden können. Mittels der Escape-Taste kommt man bei Entdeckung des Fehlers automatisch in den Editier-Modus, in dem der Cursor schon unmittelbar an oder hinter dem Fehler steht. Durch den bequemen Übergang von Compiler in den Editier-Modus und des sehr schnellen Compilers kann man von keinem spürbaren Mangel sprechen.

Mit dem folgenden Pascal-Programm wurden der ATARI 520 ST mit Turbo-Pascal V3.0 unter CP/M und der Commodore PC10 mit Turbo-Pascal V2.0 unter MS-DOS verglichen.

Der Atari brauchte für das Compilieren und die Ausführung dieses Programmes, das die Primzahlen bis 1000 ausgibt, etwa 11 S., während der Commodore nur 3.5 S. benötigte. Diesen noch erheblichen Zeitunterschied wird man auf den Emulator zurückführen können, mit dem der CP/M Modus auf dem ATARI ST simuliert wird.

Wünschenswert wäre deshalb eine Turbo-Pascal Version speziell für 68000-Prozessoren. Eine auf den ATARI ST zugeschnittene Version könnte dann die Vorzüge der IBM-Version in Bezug auf Geschwindigkeit und Grafikmöglichkeiten noch übertreffen.

	program prim3;
	
	var i,j,U,ende:integer;
		m: array[1.. 10000] of integer;
	
	begin
	
	for i:=2 to 1000 do begin 
		m[i]: = i;
	end;
	ende:=trunc(ln(1000))+1;
	for i:=2 to 1000 do begin 
		for j:=2 to ende do begin 
			k:=i*j;m[k]:=o;
		end;
	end;
	for k:=2 to 1000 do begin
		if m[k]<>0 then write(m[k], ' ');
	end

Bild 3: Primzahlenprogramm



Aus: ST-Computer 02 / 1986, Seite 43

Links

Copyright-Bestimmungen: siehe Über diese Seite