Home

Dokumentation KCPASCAL

image

Contents

1. Das soll Sie davor warnen ine neue Datei in den Speicher zu laden und damit diejenige an der Si gerade arbeiten zu berschreiben und zu zerst ren Antworten Sie J zur Speicherung und N zur L schung Der neu Nam der Arbeitsdatei erscheint im Men nach der n chsten Aktualisierung d h wenn Sie lt SPACE gt eingeben 1 2 2 Das Edit Kommando Das E Kommando ruft den integrierten Editor auf um die Datei die als Arbeitsdatei bezeichnet wurde ditieren zu k nnen Wenn keine Arbeitsdatei angegeben ist werden Si aufgefordert dies zu tun Das Men verschwindet und der Editor ist aktiviert 1 2 3 Das Compile Kommando Das C Kommando aktiviert den Compiler Die Compilierung kann jederzeit durch Dr cken einer Taste unterbrochen werden Die Compilierung ndet ntweder mit einem Programm das im Arbeits speicher verbleibt oder mit einer COM Datei Diese Wahl k nnen Sie im Optionen Men des Compilers treffen Die Voreinstellung bel t das Programm im Arbeitsspeicher 1 2 4 Das Run Kommando Falls schon ein compiliertes Programm im Speicher ist wird dieses aktiviert Wenn nicht findet die Compilierung automatisch statt 1 2 5 Das Save Kommando Das S Kommando sichert die aktuelle Arbeitsdatei auf Kassette 1 2 6 Das Quit Kommando Das Q Kommando wird benutzt um das KCPASCAL System zu verlassen Wenn die Arbeitsdatei nach dem Laden bearbeitet wurde werden Sie gefragt ob Sie
2. Weitere Besonderheiten 84 17 9 4 Die Funktion BiosHL Syntax BiosHL Func Param Diese Funktion entspricht der Funktion Bios jedoch wird das Ergebnis ber das Registerpaar HL ausgegeben 17 10 Benutzergeschriebene I O Treiber I O Treiber sind zu definieren um mit externen Ger ten kommunizieren zu k nnen Die folgenden Parameter sind Teil von KCPASCAL und werden durch die Standard I1 O Treiber benutzt obwohl sie nicht als Standardprozeduren oder funktionen zur Verf gung stehen function ConSt boolean function ConIn Char procedure ConOut Ch Char procedure LstOut Ch Char procedure AuxOut Ch Char function AuxIn Char procedure UsrOut ch Char function Ustin Char Die Routine ConSt wird durch die Funktion KeyPressed aufgerufen Die ConIn und ConOut Routinen k nnen von den CON TRM und KBD Ger ten benutzt werden Die LstOut Routine wird von dem LST Ger t benutzt Die AuxOut und AuxIn Routinen werden von dem AUX Ger t UsrIn und UsrOut von dem USR Ger t benutzt Laut Voreinstellung benutzen dies Treiber di ntsprechenden BIOS Eingangspunkt des Betriebssystems d h ConSt benutzt CONST ConIn benutzt CONIN ConOut benutzt CONOUT LstOut benutzt LIST AuxOut benutzt PUNCH AuxIn benutzt READER UsrOut benutzt CONOUT und UsrIn benutzt CONIN Dies kann jedoch vom Programmierer ver ndert werden indem er eine der folgenden Standardvariablen der Adresse in
3. Beispiel Mem WsCursor 2 Mem WsCursor 1 S1B Mem WsCursor 2 Ord m IOByte Mem 3 Mem Adar tOffset Mem Addr 17 5 2 Port Array Das Port Array wird benutzt um die Datenports der CPU anzusprechen Jedes Element des Arrays repr sentiert einen Daten Port deren Indizes den Port Nummern ntsprechen Falls Daten Ports durch 8 Bit Adresse angew hlt werden ist der Index vom Typ Byte Wenn ein Wert einer Kompo nente von Port zugewiesen ist wird er an den spezifischen Port aus gegeben Wenn auf eine Komponente von Port in einem Ausdruck Bezug genommen wird wird ihr Wert von dem spezifischen Port eingegeben Der Gebrauch des Port Arrays ist beschr nkt auf Zuweisung und Bezugnahme in Ausdr cken d h Komponenten von Port k nnen nicht als Variablen parameter f r Prozeduren und Funktionen dienen Weiterhin sind Operationen die auf das ganze Port Array Bezug nehmen nicht erlaubt Bezugnahme ohne Index 17 6 Array Subscript Optimierung Der X Compilerbefehl erlaubt es dem Programmierer zu w hlen ob die Array Subscription eher hinsichtlich der Ausf hrungszeit oder der Code gr e optimiert wird Der voreingestellte Modus ist aktiv d h X was Optimierung der Ausf hrungszeit zur Folge hat Wenn der passive Modus gew hlt wird d h X wird die Codegr e minimiert 17 7 with Anweisungen Die voreingestellte Tiefe der Schachtelung von With Anweisungen ist 2
4. Der I Befehl gefolgt von einem Dateinamen weist den Compiler an die Datei mit dem angegebenen Namen in die Compilierung aufzunehmen ANHANG 92 C 2 5 R Index Bereichspr fung Voreinstellung R Der R Befehl kontrolliert di Indexpr fung zur Laufzeit Im Aktivmodus R werden alle Feldindizierungsoperationen darauf gepr ft ob sie innerhalb der definierten Grenzen sind ebenfalls all Zuweisungen zu Skalaren und Teilbereichsvariablen Im Passivmodus SR werden kein Pr fungen unternommen und Indexfehler k nnen ein Programm dann durch einanderbringen Bei der Programmentwicklung empfiehlt es sich diesen Befehl zu benutzen Wenn s dann fehlerfrei ist wird die Ausf hrung beschleunigt indem der Passivmodus Voreinstellung eingestellt wird C 2 6 V Parametertyppr fung Voreinstellung V Der V Compilerbefehl kontrolliert die Typenpr fung von Strings die als var Parameter bergeben werden Im Aktivmodus SV wird strenge Typenpr fung durchgef hrt d h die L nge der aktuellen und formalen Parameter mu bereinstimmen Im Passivmodus V erlaubt der Compiler die bergabe von aktuellen Parametern auch dann wenn sie nicht zu der L nge der formalen Parameter passen C 2 7 U Benutzerunterbrechung Voreinstellung U Der U Compilerbefehl kontrolliert Programmunterbrechungen durch den Benutzer Im Aktivmodus U kann der Benutzer das Programm jederzeit bei de
5. Variablen dieses Typs k nnen nicht ein oder ausgegeben werden Dateien m ssen var Parameter sein Dateikomponenten d rfen keine Dateien sein Ung ltige Ordnung von Feldern Mengengrundtyp au erhalb des zul ssigen Bereichs Der Grundtyp einer Menge mu ein Skalar mit nicht mehr als 256 m glichen Werten sein oder ein Teilbereich mit den Grenzen 0 255 Unerlaubtes GOTO Ein goto kann nicht auf ein Label innerhalb einer FOR Schleife von au erhalb dieser FOR Schleife hinweisen abel nicht innerhalb des gegenw rtigen Blocks Ein goto kann nicht auf ein Label au erhalb des gegenw rtigen Blocks hinweisen ANHANG 96 73 Undefinierte FORWARD Prozedur en Ein Unterprogramm wird foreward deklariert aber es ist kein Block vorgekommen 74 INLINE Fehler T5 Unerlaubter Gebrauch von ABSOLUTE 1 Nur Bezeichner k nnen vor dem Doppelpunkt in einer absolute Variablendeklaration auftreten 2 Absolute darf in einem Record nicht verwendet werden 76 Overlays k nnen nicht FORWARD deklariert werden FORWARD kann nicht in Verbindung mit Overlays verwendet werden 77 Im Direktmodus sind Overlays nicht erlaubt Overlays k nnen nur von Programmen verwendet werden die auf ein Datei compiliert sind 90 Datei nicht gefunden Die angegebene Include Datei existiert nicht 91 Unerwartetes Ende der Quell Ihr Programm kann nicht richtig enden Das Programm mehr begin
6. Low set of a z CONST UpperCase Up A 2 Vocals ILOW Ta et ti O p tyty Deliniter ser of Char tiat eto au F 14 Ein und Ausgabe 14 1 Logische Ger teeinheiten Folgende Ger teeinheiten sind m glich CON Konsole Console Der Output wird ber das Betriebssystem an das Ausgabeger t gegeben gew hnlich an den Bildschirm der Input erfolgt ber das Eingabeger t gew hnlich die Tastatur Typisierte Konstanten 57 TRM Terminal Der Output wird normalerweise an den Bildschirm gesendet Input wird blicherweise von der Tastatur aufgenommen Es findet ein Echo der ingegebenen Zeichen statt solange es keine Kontrollzeichen sind Das einzige Kontrollzeichen mit Echo ist ein Carriage ENTER CR Dessen Echo ist CR LF Carriage Return Line Feed KBD Tastatur Keyboard blicherweise steht KBD f r Tastatur Der Input hat kein Echo LST Lister blicherweise wird damit der Drucker bezeichnet AUX Alternative Auxiliary RDR und PUN USR Benutzer User Output wird an die Output Routin des Benutzers g sendet Input kommt von seiner Input Routine 14 2 Standarddateien KCPASCAL bietet eine Anzahl vordeklarierter Textdateien die f r die Bearbeitung vorbereitet sind Input Die Inputdatei erster Ordnung Diese Datei ist entweder dem CON Ger t zugeordnet oder dem TRM Ger t weitere Er l uterun
7. wWorkDay Current WorkDay Current 1 Beachten Sie da hnlich wie bei Arrays eine Zuweisung zwischen ganzen Records des gleichen Typs m glich ist Da jed inzeln Komponente beliebigen Typs sein kann sind deshalb folgende Konstruktionen der Ineinanderschachtelung m glich type Name record FamilyName string 32 ChristianNane array l 3 of string 16 end Rate record NormalRate OverTime NigthTime Weekend Integer end Date record Days 1 431 Arrays 48 Month Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec fear 1900 19993 end Person record ID Name Time Date end record Individual Person Cost Rate end Wages VarSalary Fee Wages Nach diesem Beispiel w ren folgende Zuweisungen m glich Salary Fee Salary Cost Overtime 950 Salary Individual Time Fee Individual Time Salary Individual ID FamilyName Smith 11 2 with Anweisung Der oben beschriebene Gebrauch von Records f hrt manchmal zu relativ langen Anweisungen Es w re einfacher wenn man auf di inzelnen Felder in einem Record wie auf einfache Variablen zugreifen k nnte Dies ist die Funktion der with Anweisung Si r ffnet inen Record so da die Feldbezeichner wie Variablenbezeichner benutzt werden k nnen Eine with Anweisung besteht aus dem reservierten Wort with gefolgt von einer Auflistung der Recordvariablen die mit Kommas getrennt sind Darau
8. zur Vereinfachung komplizierter Tests aber man kann ihn wie folgt sehr Mengen 53 if Ch T j or CH U or Ch R or Ch e B Jor icch e dt kann auch klarer ausgedr ckt werden ch in rry UTR TB Und der Test if Che gt and CH ei then s he folgenderma en besser aus 1E Ch in 9 722 then 12 3 Mengenzuweisungen Werte die von Mengenausdr cken kommen werden den Mengenvariablen mittels des Zuweisungsoperators zugewiesen Beispiele type ASCII set SE 0 127 var NoPrint Print AllChars ASCII begin AllChars 0 127 Nerrint e 0 31 Print AllChars Noprint end Typisierte Konstanten 54 13 Typisierte Konstanten Typisierte Konstanten sind eine Besonderheit von KCPASCAL Sie k nnen genauso benutzt werden wie eine Variable des gleichen Typs Typisierte Konstanten k nnen also als initialisierte Variablen benutzt werden da der Wert einer typisierten Konstanten definiert ist w hrend der Wert einer Variablen undefiniert ist solang si keinen Wert zuweisen wenn sie tats chlich als Konstante verwendet werden sollen Die Benutzung von typisierten Konstanten verkleinert den Code wenn si oft im Programm gebraucht werden da sie nur einmal im Programmcode auftauchen w hrend eine untypisierte Konstante jedesmal wenn sie benutzt wird im Programm angegeben werden mu Typisierte Konstanten sind wie nicht typisiert sieh Seite 48 de
9. 3rdRoot illegal da eine Zahl am Anfang steht Two Words illegal da kein Leerzeichen enthalten sein darf Da KCPASCAL nicht zwischen Gro und Kleinschreibung unterscheidet hat die Verwendung von Gro und Kleinbuchstaben wie z B bei BirthDate keine Auswirkung Diese wird jedoch empfohlen da sie die Lesbarkeit erh ht SehrLangerBezeichner ist leichter f r das menschliche Auge zu lesen als SEHRLANGERBEZEICHNER Die vermischte Verwendung von Gro und Kleinschreibung wird im gesamten Handbuch f r Bezeichner gebraucht 4 2 Zahlen Zahlen sind Konstanten vom Typ integer oder real Integer Konstanten sind ganze Zahlen die in dezimaler oder hexadezimaler Notation ausgedr ckt sind Hexadezimale Konstanten werden dadurch identifiziert da ihnen ein Dollarzeichen voransteht S ABC ist in hexadezimal Konstante Der dezimale Integer Bereich ist 32768 bis 32767 und der hexadezimal Integer Bereich ist 0000 bis FFFF Beispiele 1 12345 1 123 SABC S123G illegal da G keine legale hexadezimale Zahl ist 4 2345 illegal da eine ganze Zahl keine Stelle hinter dem Komma haben kann Der Bereich reeller Zahlen hat eine Mantisse von 1E 38 bis 1E 38 die 11 signifikante Stellen aufweist Sie k nnen Exponentenschreibweis ver wenden wobei der Buchstabe E dem Exponentialfaktor vorausgeht und bedeutet 10mal die Potenz von Eine Integer Konstante ist berall er laubt
10. I O Modusauswahl Der B Befehl kontrolliert die Auswahl des Ein Ausgabemodus Wenn der Modus aktiv ist SB ist das CON Ger t Konsole den Standarddateien Input und Output zugewiesen d h dem voreingestellten Eingabe Ausgabe kanal Im Passivmodus SB wird das TRM Ger t Terminal benutzt Dieser Befehl ist f r das ganze Programm g ltig und kann nicht innerhalb des Programms umdefiniert werden C 2 2 C Control S und Control C Der C Befehl steuert die Interpretation der Kontrollzeichen w hrend der Ein Ausgabe durch die Konsole Im Aktivmodus SC unterbricht ein CTRL C als Antwort auf eine Read oder Readln Anweisung die Programmausf hrung und CTRL S schaltet die Bildschirmausgabe an und aus Im Passivmodus SC werden Kontrollzeichen nicht interpretiert Der Aktivmodus verlangsamt die Bildschirmausgabe etwas falls Ihnen die Ausgabegeschwindigkeit wichtig ist m ten Si diesen Befehl ausschalten Dieser Befehl ist f r das ganze Programm g ltig und kann nicht w hrend des Programms umdefiniert werden C 2 3 I Eingabe Ausgabefehler Handhabung Voreinstellung I Der I Befehl kontrolliert die Ein Ausgabefehler Handhabung Im Aktiv modus I t werden alle Ein Ausgabe Operationen auf Fehler gepr ft Im Passivmodus I liegt es in der Verantwortung des Programmmierers I O Fehler sind durch die Standardfunktion IOresult zu pr fen C 2 4 I Includedateien
11. im Kopf der Typ des Ergebnisses der Funktion definiert sein mu Dies geschieht indem ein Doppelpunkt und ein Typ hinzugef gt wird function KeyHit Boolean function Compute Var Value Sample Real function Power X Y Real Real Der Ergebnistyp einer Funktion mu skalar z B Integer Real Boolean Char deklarierter skalarer Typ oder Teilbereich sein vom Typ String oder ein Zeigertyp sein Der Deklarierungsteil einer Funktion ist identisch mit dem einer Prozedur Der Anwendungsteil einer Funktion ist eine zusammengesetzt Anweisung wie auf Seite 57 beschrieben Innerhalb des Anweisungsteiles mu mindestens in Anweisung enthalten sein die dem Funktionsbezeichner einen Wert zuweist Die zuletzt ausgef hrte Zuweisung bestimmt das Ergeb nis der Funktion Wenn die Funktionsbezeichnung innerhalb des Anweisungsteils selbst steht wird die Funktion rekursiv aufgerufen Nur f r CP M 80 Benutzer Beachten Sie da der A Compilerbefehl passiv sein mu SA Zur Rekursion siehe Anhang C Das folgende Beispiel zeigt den Gebrauch einer Funktion zur Berechnung der Summe einer Zeile aus ganzen Zahlen von I bis J function RowSum I J Integer Integer function SimpleRowSum S Integer Integer begin SimpleRowSum S S 1 div 2 end begin RowSum SimpleRowSum J SimpleRowSum I 1 end Die Funktion SimpleRowSum ist in die Funktion RowSum eingebettet SimpleRowSum ist dah
12. 7 55 8 4 berpr fung der Variablengr e Die Erzeugung von Code der berpr fungen der Wertebereiche von Variablen zul t wird mit dem Compilerbefehl R kontrolliert Die Voreinstellung ist r d h da keine berpr fungen stattfinden Wenn einer skalaren Variablen oder inem ihrer Teilbereich in Wert zugewiesen wird wird dieser auf seine Gr e gepr ft solange der Compilerbefehl aktiv ist SR Es wird empfohlen diese Option solange aktiv zu lassen solange noch Fehler im Programm sind Skalare Datentypen und deren Teilbereich Beispiel program RangeCheck type Digit Dia Var Dig1 D2g2 Dig3 aigit begin Digl1 5 gulctig Dig2 Digl1 3 gultig da Digli 3 ea Dig3 47 ung ltig aber ohne Fehlermeldung SR Dig3 55 ung ltig ergibt einen Laufzeitfehler SR Digs 167 ung ltig aber ohne Fehlermeldung end 39 Strings 40 9 Strings KCPASCAL bietet Ihnen den Datentyp String um Zeichenketten zu verarbeiten Zeichenketten sind eine Aneinanderreihung von Zeichen Der Datentyp String ist strukturiert und in vielen dem Array Abschnitt 10 sehr hnlich Es gibt allerdings einen gro en Unterschied die Anzahl der Zeichen in einem String bzw dessen L nge kann dynamisch zwischen 0 und iner oberen Grenze variieren w hrend die Anzahl der Elemente in einem Array feststeht 9 1 Definition des Strings Die Definition des Dat
13. Der W Befehl kann verwendet werden diesen Wert zwischen 1 und 9 zu ver ndern F r jeden Block ben tigen With Anweisungen zwei Bytes Speicher pro Schachtelungsniveau Der m glichst sparsame Gebrauch der Schachtelung beeinflu t stark die Gr e des Datenbereichs in Programmen mit vielen Unterprogrammen 17 8 Hinweise zu Zeigern 17 8 1 MemAvail Die Standardfunktion MemAvail kann immer benutzt werden um den Platz auf dem Heap zu ermitteln Das Ergebnis ist eine ganze Zahl Falls mehr als 32767 Bytes zur Verf gung stehen gibt MemAvail eine negative Zahl aus Die korrekte Zahl der freien Bytes wird dann berechnet indem man zu 65536 0 MemAail addiert Achten Sie auf die Verwendung reeller Konstanten um ein reelles Ergebnis zu erzeugen falls das Ergebnis gr er als Maxint ist Das Speichermanagement wird ausf hrlicher auf Seite 288 beschrieben Weitere Besonderheiten 83 17 8 2 Zeiger auf ganze Zahlen Die Standardfunktionen Ord und Ptr erlauben diese Kontrolle ber die in inem Zeiger enthaltene Adresse Ord gibt di in einem Zeigerargument enthaltene Adresse als ganze Zahl aus Ptr wandelt sein ganzzahliges Argument in einen Zeiger um der mit allen Zeigertypen kompatibel ist 17 9 Betriebssystem Funktionsaufrufe Um BDOS und BIOS Routinen aufzurufen hat KCPASCAL die zwei Standard prozeduren Bdos Bios und die vier Standardfunktionen Bdos BdosHL Bios und BiosHL Details ber
14. R Real Real R Real Real Integer ANHANG 88 A 3 Skalarfunktionen funktion Odd I Integer Boolean Pred X scalar scalar Succ X scalar scalar A 4 Transferfunktionen funktion Chr I Integer Char Ord X scalar scalar Round R real Integer Trunc R Real Integer A 5 Stringprozeduren und funktionen Die Str Prozedur benutzt nichtstandardisierte Syntax f r ihre numerischen Parameter procedure Delete var S string Pos Len Integer Insert S string var D string Pos Integer Str I Integer var S string Str R Real var S string Val S string var R Real var P Integer Val S string var I P Integer function Concat S1 S2 Sn string string Copy S string Pos Len Integer string Length S string Integer Pos Pattern Source string Integer A 6 Heap Kontrollprozeduren und funktionen procedure Dispose var P pointer FreeMem var P pointer I Integer GetMen var P pointer I Integer Mark var P pointer New var P pointer Release var P pointer function MaxAvail Integer MemAvail Integer Ord P pointer Integer Ptr I Integer pointer A 7 Bildschirmbezogene Prozeduren procedure CtrScr GotoXY X Y Integer ANHANG 89 A 8 Verschiedenartige weitere Prozeduren und Funktionen procedure Bdos func param Integer nur CP M 80 Bios func param Integer nur CP M 80
15. Thu Fri Sat Sun Var Wworkhour array 1 8 of Integer Week larrayl Ils T Of Day type Players Playerl Player2 Player3 Player4 Hand One Two Pair TwoPair Three Straight Flush FullHouse Four StraigthFlush RSF LegalBild 1 200 Bid array Players of LegalBid Var Player array Players of Hand Pot Bid Auf eine Arraykonstante greift man zu indem ein Index in eckigen Klammern an den Variablenbezeichner des Arrays geh ngt wird Player Player3 FullHouse Pot Player3 100 Player Player4 Flush Pot Player4 50 Da eine Zuweisung zwischen zwei beliebigen Variablen erlaubt ist solange sie vom gleichen Datentyp sind k nnen ganze Arrays mit einer einzigen Zuweisungsanordnung kopiert werden Der Compilerbefehl R kontrolliert bei der Codegenerierung ob die Arrays im zul ssigen Bereich liegen Nach Voreinstellung ist er inaktiv R verursacht eine berpr fung aller Indexausdr cke auf die Einhaltung der Grenzen ihres Indextyps 10 2 Multidimensionale Arrays Die Komponenten eines Arrays k nnen beliebigen Datentyps sein d h da die Komponenten auch Arrays sein k nnen Eine solche Struktur nennt man multidimensionales Array Arrays 46 Beispiel type Card Two Three FourFive Six Seven Eigth Nine Ten Knigth Queen King Ace Suit Hearts Spade Clubs Diamomds Alllards array Suit of array L 13 OE Car
16. ltige Stringl nge Die L nge eines Strings mu im Bereich 255 liegen Stringkonstantenl nge pa t nicht zum Typ ng ltiger Teilbereichsgrundtyp G ltige Grundtypen sind alle Skalartypen au er real Untere Grenze obere Grenz Der ordinale Wert der oberen Grenze mu gr er oder gleich dem ordinalen Wert der unteren Grenze sein Reserviertes Wort Diese d rfen nicht als Bezeichner verwendet werden Unerlaubte Zuweisung Stringkonstante geht ber die Zeile hinaus Stringkonstanten d rfen sich nicht ber die Zeile hinaus erstrecken Fehler bei einer Integer Konstanten Eine Integer Konstante stimmt nicht mit der in Abschnitt 4 2 beschriebenen Syntax berein oder ist nicht innerhalb des Integer Bereichs 32768 32767 Ganze reelle Zahlen sollten von einem Dezimalpunkt und einer Null abgeschlossen werden z B 123456789 0 Fehler bei einer Real Konstanten Die Syntax der Real Konstanten ist auf Seite 43 definiert nerlaubtes Zeichen in einem Bezeichner ateien und Zeiger sind hier nicht erlaubt trukturierte Variablen sind hier nicht erlaubt Textdateien sind hier nicht erlaubt Textdateien und untypisierte Dateien sind hier nicht erlaubt Untypisierte Dateien sind hier nicht erlaubt Variablen dieses Typs k nnen nicht ein oder ausgegeben werden U Konstanten sind hier nicht erlaubt D S Eingabe Ausgabe ist hier nicht erlaubt
17. werden Strings 43 9 5 Stringfunktionen Folgende Standardstringfunktionen sind in KCPASCAL anwendbar 9 5 1 Copy Syntax Copy St Fos Num Copy gibt einen Teilstring eines Strings St aus der eine bestimmte Anzahl Num von Zeichen enth lt gez hlt von der Position Pos St ist ein Stringausdruck Pos und Num sind integer Ausdr cke Wenn der Wert von Pos die L nge des Strings bersteigt wird ein leerer Teilstring aus gegeben Wenn versucht wird Zeichen jenseits des Endes des Strings zu erhalten d h der Wert von Pos Num bersteigt die L nge des Strings werden nur noch die innerhalb eines Strings befindlichen Zeichen ausge geben Wenn Pos au erhalb des Bereiches 0 255 ist erfolgt eine Laufzeitfehlermeldung Wenn St den Wert ABCDEFG hat gilt Copy St 3 2 gibt den Wert CD aus Copy St 4 10 gibt den Wert DEFG aus Copy St 4 2 gibt den Wert DE aus 9 5 2 Concat Syntax Concat St 5E2 3 EN Die Funktion Concat gibt einen Gesamtstring aus der aus beliebig vielen Einzelstrings in der angegebenen Ordnung St1l StN zusammengesetzt wird Ist das Ergebnis gr er als 255 wird eine Laufzeitfehlermeldung ausgegeben Wie auf Seite 68 schon besprochen wurde kann der Operator das Gleiche und unter Umst nden sogar auf einfachere Art und Weise Concat wurde in KCPASCAL aufgenommen um die Kompatibilit t zu erhalten Wenn St1 den Wert KC und St2 den Wert ist am
18. Beispiel ist ein Programm da eine Prozedur benutzt und einen Parameter an die Prozedur bergibt Wenn der aktuelle Parameter der an die Prozedur bergeben wird in manchen F llen eine Konstante ist ein einfacher Ausdruck mu der formale Parameter ein Wertparameter sein program Box Var I Integer procedure DrawBox X1 Y1 X2 Y2 Integer Var LeInteger begin GOOXT X1 Y1 for I X1 t X2 d writet 1 Gott Aly TIEI for I Yli 1 to Y2 do begin GOtCOXY X1 1 Writet 1 GOLoXY X2 1 sWritet jg end Prozeduren und Funktionen 70 G toxY Al YA for Ii XL ta X2 do Write t end of procedure DrawBox begin Glrsecr for Iz 1 te b do Dry 1T 2 T72 10 1 4 T z DrawBox 1 1 80 253 3 end oft sollen di Ver nderungen bei den formalen Parametern in einer Prozedur auch die aktuellen Parameter betreffen In solchen F llen werden Variablenparamater verwendet wie im folgenden Beispiel procedure Switch Var A B Integer Var Imp Integer begin Tmp A A B B Tnp end Wenn diese Prozedur durch die Anweisung SwitchfI J aufgerufen wird werden di Wert von I und J vertauscht Wenn der Prozedurkopf in Switch wie folgt deklariert war procedure Switch A B Integer d h mit einem Wertparameter dann w rde die Anweisung Switch I J I und J vertauschen 16 2 2 Standardprozeduren KCPASCAL kennt eine Reihe von Standardprozeduren Diese sind S
19. CurMonth Process bearbeite dieses Beispiel mit der Process Prozedur end SampleMonth Anweisung 36 7 2 3 3 Repeat Anweisung Der Ausdruck der di Wiederholung kontrolliert mu vom Typ boolean sein Di Sequenz der Anweisung zwischen den reservierten W rtern repeat und until wird so oft wiederholt bis der Ausdruck wahr wird Im Unterschied zur while Anweisung wird di repeat Anweisung immer mindestens einmal ausgef hrt da erst am Ende der Schleife die Abbruch bedingung abgefragt wird Beispiel repeat Write M Delete this item Y N Read Answer until UpCase Answer in Y N Skalare Datentypen und deren Teilbereich 37 8 Skalare Datentypen und deren Teilbereiche Der skalare Datentyp ist bei Pascal der grundlegende Datentyp Er bildet eine endliche linear angeordnete Reihe von Werten Obwohl der Standard datentyp Real auch als skalarer Datentyp betrachtet wird f llt er nicht unter dies Definition Deshalb k nnen real Zahlen nicht immer im gleichen Zusammenhang wie andere skalare Datentypen verwendet werden 8 1 Skalare Datentypen Neben den skalaren Standardtypen Integer Real Boolean Char und Byte unterst tzt Pascal auch vom Benutzer definierte skalare Datentypen Die Definition eines skalaren Datentyps werden durch Bezeichner repr sentiert die deren Konstanten sind Beispiele Type Operator Plus Minus Multi Divide Day Men Tue
20. Delay mS Integer FillChar var dest length Integer data Char FillChar var dest length Integer data byte Halt Move var source dest length Integer Randomize function Addr var Variable Integer Addr lt function identifier gt Integer Addr lt procedure identifier gt Integer Bdos Func Param Integer Byte BdosHL Func Param Integer Integer Bios Func Param Integer Byte BiosHL Func Param Integer Integer Hi I Integer Integer IOresult Boolean KeyPressed Boolean Lo I Integer Integer ParamCount Integer ParamStr N Integer String Random Range Integer Integer Random Real SizeOf var Variable Integer SizeoOf lt type identifier gt Integer Swap I Integer Integer UpCase Ch Char Char B Zusammenfassung der Operatoren Die folgend Tabell gibt eine bersicht ber alle Operatoren von KCPASCAL Die Operatoren sind nach abnehmender Wichtigkeit gruppiert Wo der Typ des Operanden als Integer Real angegeben ist ist das Ergebnis wie folgt Operand Ergebnis Integer Integer integer Real Real Real Real Integer Real Operator wirkung Type des Operanden S Ergebnistyp monadisch Zeichenidentit t Integer Real wie Operand monadisch Zeichenumkehrung Integer Real wie Operand not Negation Integer Boolean wie Operand k Multiplikation Integer Real Integer Real Schnittmenge jeder Mengentyp wie Operand div Division Integer Real Real IntegerDivision Integer Integer mod Modulus
21. Klammern stehen und mit Kommas getrennt sind Beispiele program Circles program Accountant Input Output program Writer Input Printer 5 2 Deklarierungsteil Der Deklarierungsteil eines Blocks deklariert alle Bezeichner die im Anweisungsteil dieses Blocks und m glicherweise anderer Bl cke innerhalb von diesem benutzt werden Der Deklarierungsteil ist in f nf unterschiedliche Abschnitte eingeteilt 1 abel Deklarierungsteil 2 Konstanten Definitionsteil 3 Typen Definitionsteil 4 5 Variablen Deklarationsteil Prozeduren Funktionen Deklarationsteil w hrend Standard Pascal vorschreibt da jeder Abschnitt entweder garnicht oder einmal vorkommen darf und nur in der obigen Reihenfolge erlaubt KCPASCAL da jeder dieser Abschnitte beliebig oft und in jeder Reihenfolge im Deklarierungsteil auftreten darf 5 2 1 Label Deklarationsteil Jede Anweisung kann mit einem vorangestellten Label versehen werden was es erm glicht mittels einer goto Anweisung direkt zu dieser Anweisung zu verzweigen Ein Label besteht aus einem Labelnamen dem ein Komma folgt Vor Gebrauch mu es in einem Label Deklarationsteil deklariert werden Das reservierte Wort label steht am Anfang dieses Teils Es folgt eine Liste der Labelbezeichner die mit Kommas untereinander getrennt sind und von einem Semikolon abgeschlossen werden Programmkopf und Programmblock 27 Bei
22. Parameter Typen usw spezifiziert Beispiel program catch22 var x Integer function Up Var I Integer Integer forward function Down Var I Integer Integer begin T 1 div 23Writsiln lT ir I lt gt 1 then Ip DT end function Up begin while I mod 2 lt gt 0 do begin Tt 1 341 Writeln T end I Down I end begin Write Enter any integer Readln X X Up X Write Ok Program stopped again end Wenn dieses Programm ausgef hrt wird und man z B 6 eingibt erh lt man als Ergebnis Ok Proaram stopped Aaaain Prozeduren und Funktionen 78 program Gateh222 Var Inkeger begin Write Enter any integer Readln X while X lt gt 1 do begin if X mod 2 then X X div 2 else X X 3 1 Writeln X end Write Ok Program stopped again end Vielleicht interessiert es Sie da dieses kleine und sehr einfache Programm nicht darauf gepr ft werden kann ob es wirklich f r jede ganze Zahl stoppt Weitere Besonderheiten 79 17 Weitere Besonderheiten Dieser Anhang beschreibt zus tzliche Eigenschaften von KCPASCAL 1 F r den ffizienten Gebrauch von KCPASCAL unbedingt n tige Informationen 2 Die restlichen Abschnitt beschreiben Einzelheiten die nur f r erfahrene Programmierer interessant sind z B den Aufruf von Assemblerroutinen technische Aspekte des Compilers usw 17 1 Compiler Optionen Das O Kommando w
23. Prozedurale Parameter Prozeduren und Funktionen k nnen nicht als Parameter bergeben werden E Compiler Fehlermeldungen Es folgt eine Liste von Fehlermeldungen die Sie vom Compiler bekommen k nnen Wenn ein Fehler auftritt gibt der Compiler mindestens immer die Fehlernummer aus Erkl rende Texte werden nur ausgegeben wenn Sie di Fehlermeldungsdatei auf der KCPASCAL Kassett geladen haben Antwort Y auf di rste Frage beim Start von KCPASCAL Viele Fehlermeldungen erkl ren sich selbst aber einige ben tigen weiter Erl uterungen wie sie im folgenden gegeben werden 01 erwartet 02 erwartet 03 erwartet 04 erwartet 05 erwartet 06 erwartet 07 erwartet 08 erwartet 09 erwartet 10 erwartet 1 erwartet 2 BEGIN erwartet 13 DO erwartet 14 END erwartet 5 OF 6 D 7 erwartet PROCEDURE oder FUNCTION erwartet 1 HEN erwartet 18 TO oder DOWNTO erwartet 20 Bool scher Begriff erwartet 21 Datei Variable erwartet 22 Integer Konstante erwartet 23 Integer Ausdruck erwartet 24 Integer Variable erwartet 25 Integer oder reell Konstante erwartet 26 Integer oder reeller Ausdruck erwartet 27 Integer oder reelle Variable erwartet 28 Zeiger Variable erwartet 29 Record Variable erwartet 30 Einfacher Typ erwartet Einfache Typen si
24. Speicherplatz und Zeit f r eine zus tzliche Kopie der ganzen Datenstruktur ben tigen 16 1 1 Lockerung der Parametertyp berpr fung Im Normalfall m ssen bei der Benutzung von Variablenparametern die formalen und aktuellen Parameter exakt bereinstimmen Unterprogramme die Variablenparameter des Typs String verwenden laufen nur mit Strings von genau der L nge wie sie im Unterprogramm definiert ist Diese Einschr nkung kann durch den V Compilerbefehl aufgehoben werden Der voreingestellte aktive Status V di Typenpr fung lockert und es erlaubt aktuelle Parameter jeglicher Stringl nge zu bergeben unge achtet der L nge der formalen Parameter Beispiel program Encoder Eu type WorkString string 255 Var Linel string 80 Line2 string 100 procedure Encode Var LineToEncode WorkString Var I integer Prozeduren und Funktionen 68 begin for I 1 to Length LineToEncode do LineToEncode I Chr Ord LineToEncode I 30 end begin Linel This is a secret message Encode Linel Line2 Here is another longer secret message Encode Line2 end 16 1 2 Nicht typisierte Variablenparameter Wenn der Typ des formalen Parameters nicht definiert ist d h die Typendefinition in dem Parameterteil des Unterprogrammkopfes nicht aufgelistet ist dann wird dieser Parameter nichttypisiert genannt Deshalb kann der entsprechende aktuelle Parame
25. StrLen an derselben Adresse starten soll wie die Variable Str und da das rst Byt iner Stringvariablen die L nge des Strings festlegt enth lt StrLen die L ng von Str Beachten Sie da nur in Bezeichner in einer absoluten Deklarierung angegeben werden kann d h das Konstrukt Identl1 Ident2 Integer absolute 8000 ist unzul ssig Weitere Details ber die Platzzuweisung f r Variablen finden Sie auf den Seiten 278 und 288 17 4 Addr Funktion Syntax Addr Name Gibt di Speicheradresse des ersten Bytes des Typen der Variablen der Prozedur oder Funktion mit dem Bezeichner name aus Wenn name ein Feld Array ist kann er vorgemerkt werden wenn name ein Record ist k nnen bestimmte Felder ausgew hlt werden Der ausgegebene Wert ist integer 17 5 Vordefinierte Arrays KCPASCAL bietet zwei vordefinierte Arrays vom Typ Byte Mem und Port die als direkter Zugang zum CPU Speicher und zu den Datenports benutzt werden k nnen 17 5 1 Mem Array Das vordefinierte Array Mem wird benutzt um auf Speicher zuzugreifen Jede Komponente des Arrays ist ein Byte Die Indizes entsprechen den Adressen im Speicher Der Index ist integer Wenn ein Wert einer Kompo nente von Mem zugewiesen wird wird er an der durch den Indexausdruck gegebenen Adress gespeichert Wenn das Feld Mem in einem Ausdruck benutzt wird wird das Byte der im Index angegebenen Adresse verwendet Weitere Besonderheiten 82
26. Typendefinition eigene Datentypen erzeugen Das reservierte Wort type steht am Anfang des Typendefinitionsteils Es folgen ine oder mehrer Zuweisungen die durch Semikolons getrennt werden Jede Typzuweisung besteht aus einem Typbezeichner auf den ein Gleichheitszeichen und ein Typ folgen Beispiel type Number Integer Day mon tue wed thu fri sat sun List array 1 10 of real Weiter Beispiel f r Typendefinitionen finden sich in den folgenden Abschnitten Programmkopf und Programmblock 28 5 2 4 Variablen Deklarationsteil Jede Variable di in einem Programm auftaucht mu vor ihrer Verwendung deklariert werden Die Deklarierung mu textlich einer Verwendung der Variablen vorausgehen d h die Variable mu dem Compiler bekannt sein bevor sie benutzt werden kann Eine Variablendeklarierung besteht aus dem reservierten Wort var darauf folgen ein oder mehrere Bezeichner die durch Kommas getrennt sind und dann jeweils ein Doppelpunkt und eine type Angab Der Geltungsbereich dieser Bezeichner ist der Block in dem sie definiert sind und jeder weitere Block innerhalb dieses Blocks Beachten Sie da jeder Block innerhalb eines anderen Blocks eine andere Variable definieren kann die denselben Bezeichner verwendet Diese Variable wird als lokal zu dem Block bezeichnet in dem sie definiert ist und in jedem weiteren Block innerhalb dieses Blocks D
27. Zeilen des Bildschirms bewegen sich nach unten und CONTR Z rollt nach oben die Zeilen des Bildschirmes bewegen sich nach oben Zeichen nach links CONTR S Bewegt den Cursor ein Zeichen nach links ohn dieses Zeichen zu ver ndern lt BACKSPACE gt kann die gleiche Funktion bernehmen Das Kommando f hrt den Cursor nicht ber das Zeilenende hinaus d h wenn der Cursor den linken Rand des Bildschirmes erreicht hat stoppt er Zeichen nach rechts CONTR D Bewegt den Cursor ein Zeichen nach rechts ohn dieses Zeichen zu ver ndern Das Kommando f hrt den Cursor nicht in die n chste Zeile d h wenn der Cursor den rechten Rand des Bildschirms erreicht beginnt der Text spaltenweise nach links auszuwandern bis der Cursor die Spalte 128 den u ersten rechten Rand erreicht wo er stoppt Wort nach links CONTR A Bewegt den Cursor zum Wortbeginn nach links Ein Wort ist als eine Sequenz von Zeichen definiert die von den Zeichen lt space gt lt gt 0 S begrenzt wird Dieses Kommando gilt ber das Zeichenende hinaus Wort nach rechts CONTR F Bewegt den Cursor zum Wortbeginn nach rechts Zur Definition von Wort siehe oben F hrt den Cursor auch in die n chste Zeile Zeile nach oben CONTR E Bewegt den Cursor um eine Zeile nach oben Wenn er die oberst Zeil erreicht hat rollt der Bildschirm um eine Zeile nach unten Die Benutzung von KCPASCAL 13 Zeile nach unten CONTR X Bewegt den Cursor
28. als end Angaben 92 Es kann keine Overlaydatei gebildet werden 97 Zuviele geschachtelte WITHs Benutzen Sie den W Compilerbefehl um die maximale Zahl von WITH Anweisungen zu erh hen Voreinstellung ist 2 98 Speicher berlauf Sie versuchen mehr Speicherplatz f r Variablen zur Verf gung zu stellen als vorhanden ist 99 Compiler berlauf Es ist nicht gen gend Speicherplatz vorhanden um das Programm zu compilieren Dieser Fehler kann auch auftreten wenn freier Speicherplatz dazusein scheint dieser ist jedoch vom Stack und der Symboltafel bei der Compilierung belegt Teilen Si Ihr Quelle in kleinere Segmente auf und benutzen Sie Include Dateien F Laufzeit Fehlermeldungen Schwere Laufzeitfehler bewirken einen Programmabbruch und eine Anzeig folgender Fehlermeldung Run time error NN PC addr Program aborted wobei NN die Nummer des Laufzeitfehlers ist und addr die Adresse im Programmcode bei der der Fehler aufgetreten ist Die Bedeutung der Nummern wird im folgenden erkl rt Beachten Sie da alle Zahle hexadezimal sind 01 Gleitkomma berlauf 02 Sie haben versucht durch Null zu dividieren 03 Sqrt Argumentfehler Sie haben versucht die Wurzel aus einer negativen Zahl zu ziehen d h Sie haben die Sqrt Funktion aufgerufen und als Argument eine negative Zahl eingegeben 04 Ln Argumentfehler Sie haben die Ln Funktion aufgerufen und als Argument N
29. d h gel scht Schlie lich k nnen Sie noch unter folgenden Optionen w hlen B Suchen und Ersetzen r ckw rts d h von der aktuellen Cursor position bis zum Beginn des Textes G Suche im gesamten Text unabh ngig von der Cursorposition n n steht f r eine beliebige Integerzahl Suche und ersetze n mal die n chsten vorkommenden im Suchstring definierten Zeichenkombi nationen von der aktuellen Cursorposition an N Ersetze ohne Nachfrage d h die Frage Replace Y N Ersetzen Ja Nein entf llt U Ignoriere Gro und Kleinschreibung W Suche und ersetze nur ganze W rter Zeichenfolgen die in W rtern eingebettet sind werden ignoriert Beispiele N10 Suche und ersetze die n chsten 10 Kombinationen ohne nachzufragen GWU Finde und ersetze nur ganze W rter im gesamten Text Ignoriert Gro und Kleinschreibung Beenden Si di Wahl der Optionen mit lt ENTER gt dann wird die Suche ingeleitet Wenn die Zeichenfolge gefunden ist befindet sich der Cursor an deren Ende und Sie werden gefragt ob eine Ersetzung gew nscht wird Replace Y N die Frag rscheint in der Statuszeile aber nur wenn die Option N nicht gew hlt wurde Sie k nnen an dieser Stelle die gesamt Operation abbrechen indem Sie das Abbruch Kommando CONTR U eingeben Mit CONTR L k nnen Sie die Operation wiederholen Wiederholen der letzten Suche CONTR L Diese Ko
30. den Variablen die definiert werden sollen den Typ zuweist Eine neue Variable vom Typ PersonRecord wird also folgenderma en definiert New FirstPerson Zeiger Typen 62 mit dem Ergebnis da FirstPerson auf einen dynamisch zugeordneten Record vom Typ PersonRecord weist Zuweisungen zwischen Zeigervariablen k nnen vorgenommen werden solange die Zeiger vom gleichen Typ sind Zeiger vom gleichen Typ k nnen auch mit den logischen Operatoren und lt gt untereinander verglichen werden wobei sich als Ergebnis ein Bool scher Wahrheitswert ergibt true bzw false Die Funktion nil ist mit allen Typen von Zeigern kompatibel nil zeigt auf keine dynamische Variable und kann Zeigervariablen zugewiesen werden um die Abwesenheit eines brauchbaren Zeigers anzuzeigen nil kann auch in Vergleichen benutzt werden Variable die durch die Standardprozedur New definiert wurden werden in einer stapelartigen Struktur heap genannt abgelegt Das KCPASCAL System kontrolliert den Heap indem es einen Heapzeiger erh lt der bei Beginn eines Programms auf di Adress des rsten freien Bytes im Speicher initialisiert wird Bei jedem Aufruf von New wird der Heapzeiger an die Spitze des freien Speichers gesetzt entsprechend der Anzahl der Bytes die der Gr e der neuen dynamischen Variablen entspricht 15 3 Mark und Release Wenn eine dynamische Variable nicht l nger ben tigt wird benutz
31. diese Routinen finden Sie im Benutzerhandbuch des Betriebs systems 17 9 1 Prozedur und Funktion Bdos Syntax Bdos Func Param Die Prozedur Bdos wird verwendet um BDOS Routinen aufzurufen Func und Param sind Integer Ausdr cke Func bezeichnet die Nummer der aufgerufenen Routine und wird ins C Register geladen Param ist optional und bezeichnet einen Parameter der in das Registerpaar DE geladen wird BDOS wird auf Adresse 5 aufgerufen Die Funktion Bdos wird wie die Prozedur aufgerufen und gibt einen Integer Wert aus der dem Wert entspricht der durch das BDOS in das A Register ausgegeben wird 17 9 2 Die Funktion BdosHL Syntax BdosHL Func Param Diese Funktion entspricht Bdos die gerade besprochen wurde jedoch wird der Wert ber das Registerpaar HL ausgegeben 17 9 3 Prozedur und Funktion Bios Syntax Bios Func Param Die Prozedur Bios wird benutzt um die BIOS Routinen aufzurufen Func und Param sind Integer Ausdr cke Func bezeichnet die Nummer der aufgerufenen Routine 0 steht f r die Routine WBOOT 1 f r CONST usw Die Adresse der aufgerufenen Routinen ist Func 3 plus die WBOOT Adresse di in den Adressen 1 und 2 enthalten ist Param ist optional und bezeichnet einen Parameter der vor dem Aufruf in das Registerpaar BC geladen wird Die Funktion Bios wird wie die Prozedur aufgerufen und gibt einen Integer Wert aus der dem Wert entspricht der vom BIOS in das A Register ausgegeben wird
32. diesem Fall das Schreiben von Programmen sehr vereinfachen Der KCPASCAL Editor erlaubt bis zu 45 Editier Kommandos die den Cursor bewegen durch den Text bl ttern Textstrings finden und ersetzen usw Die Kommandos k nnen in vier Gruppen unterteilt werden Kommandos zur Cursorsteuerung Kommandos zum Einf gen und L schen Blockkommandos Weitere Kommandos Jede dieser Gruppen enth lt in sich zusammenh ngende Kommandos die in den folgenden Abschnitten einzeln besprochen werden Die folgende Tabell gibt einen berblick ber die vorhandenen Kommandos Cursorsteuerungs Kommandos RO Zeichen links E Oberer Bildschirmrand DB Zeichen rechts Dateianfang A wort links Dateiende CE Wort rechts Zeile links SE Zeile nach oben Zeile rechts W Rollen nach unten Blockanfang ZA Rollen nach unten Blockende R Seite nach oben P Letzte Cursorposition SG Seite nach unten Einf ge und L schkommandos Einf gen Modus an aus Wort rechts l schen N Zeile einf gen Zeichen unter dem Cursor l schen L schen bis Zeilenende Zeile l schen lt DEL gt Zeichen links l schen Block Kommandos Verschiedene Kommandos KB lockanfang markieren KD Ende des Editierens KK lockende markieren I Tabulator SKT inzelnes Wort markieren QI Auto Tab an aus SKC lock kopieren OL Zeile sichern KV lock bewegen OF Suchen SKY lock l schen QA Suchen Tauschen KR lock von Kassette les
33. einer selbst definierten Treiberprozedur oder Treiberfunkktion zuweist Variable enth lt Adresse der ConStPtr ConSt Funktion ConInPtr ConIn Funktion ConOutPtr ConOut Prozedur LstOutPtr LstOut Prozedur AuxOutPtr AuxQOut Prozedur AuxInPtr AuxIn Funktion UsrOutPtr UsrOut Prozedur UsrInPtr UsrIn Funktion Eine vom Benutzer definierte Treiberprozedur oder Treiberfunktion mu den oben gegebenen Definitionen entsprechen d h ein ConSt Treiber mu eine Bool sche Funktion sein ein ConIn Treiber mu eine Char Funktion sein usw 17 11 Externe Unterprogramme Das reservierte Wort external wird benutzt um externe Prozeduren und Funktionen zu deklarieren typischerweise in Assembler geschrieben Prozeduren und Funktionen Ein externes Unterprogramm hat keinen Block d h keinen Deklarierungs und Anweisungsteil Es wird nur der Unterprogrammkopf spezifiziert unmittelbar gefolgt von dem reservierten Wort external und einer Weitere Besonderheiten 85 ganzzahligen Konstanten di di Speicheradress des Unterprogramms definiert Parameter k nnen an externe Unterprogramme bergeben werden Die Syntax ist genau dieselbe wie bei normalen Prozedur und Funktionsaufrufen procedure Plot X Y Integer external F003 procedure QuickSort VarList PartNo external D000 17 12 Inline Maschinencode Assembler KCPASCAL enth lt inline Anweisungen di inen sehr bequemen Weg biet
34. else Time WorldWar2 Writeln We are at war end 7 2 3 Wiederholte Anweisungen 7 2 3 1 For Anweisung Die for Anweisung Laufanweisung oder Z hlschleife zeigt an da die Teilanweisung wiederholt ausgef hrt werden soll Die ansteigenden Werte werden einer Variablen zugewiesen die Kontrollvariable genannt wird Die Werte k nnen aufsteigend to oder absteigend downto bis zu dem endg ltigen Wert sein Die Kontrollvariable der anf ngliche Wert und der endg ltige Wert m ssen alle vom selben Typ sein G ltige Typen sind alle einfachen Typen d h alle skalaren Typen au er Real Wenn bei Verwendung der to Klausel der anf ngliche Wert gr er als der endg ltige Wert ist oder bei Verwendung der downto Klausel der anf ngliche Wert kleiner als der endg ltige Wert ist wird der Anweisungsteil nicht ausgef hrt Beispiele for I 2 to 100 do if A I gt Max then Max A I for I 1 to NoOfLines do begin Readln Line if Length Line lt Limit then ShortLines ShortLines 1 else Longlines Longlines 1 end 7 2 3 2 While Anweisung Der Ausdruck der di Wiederholung kontrolliert mu vom Typ boolean sein Die Anweisung wird so lange wiederholt solange der Ausdruck true wahr ist Ist der Wert schon zu Beginn false falsch wird die Anweisung berhaupt nicht ausgef hrt Beispiele while Size gt 1 do Size Sqrt Size while ThisMonth do begin ThisMonth
35. mit Reset vorbereitet wurde 3 Sie versuchen auf das logische Ger t KBD Tastatur zu schreiben KBD ist jedoch ein reines Eingabeger t Datei nicht offen Sie versuchen mit BlockRead oder BlockWrite ine Datei zu bear beiten ohne vorheriges Reset oder Rewrit Fehler im numerischen Format Der String der von einer Textdatei in eine numerische Variable eingelesen wurde entspricht nicht dem richtigen numerischen Format siehe Abschnitt 4 2 Operation auf einem logischen Ger t nicht zugelassen Sie versuchen ine Datei di inem logischen Ger t zugeordnet ist mit einer der nachfolgenden Operationen zu bearbeiten Erase Rename Execute oder Chain Im Direktmodus nicht zugelassen Programme k nnen nicht mit Execute oder Chain von einem Programm aufgerufen werden das im Direktmodus l uft d h ein Programm das mit der Compileroption Memory mit dem Run Befehl aufgerufen wurde Zuordnung als Standarddatei nicht zul ssig Unpassende Recordl nge Die Recordl ng iner Dateivariablen entspricht nicht der Datei der Sie sie zuzuordnen versuchen Unerwartetes end of fil 1 Beim Lesen von einer Textdatei wurde das physikalische Datei ende vor dem EOF Zeichen erreicht 2 Es wurde versucht bei einer fest definierten Datei ber das end of file hinauszulesen Kassettenschreibfehler Beim Versuch eine Datei zu vergr ern ist die Kassette voll geworden Dies kann bei den Ausgabeoperationen Write Writeln BlockWrite und Flush auftreten aber
36. schnellsten hat ergibt Concat Stl PASCAL St2 den Wert KCPASCAL ist am schnellsten 9 5 3 Length Syntax Length St Gibt die L nge des Stringausdruckes Str aus d h die Anzahl der darin enthaltenen Zeichen Das Ergebnis ist integer Wenn St den Wert 123456789 hat ergibt Length St den Wert 9 9 5 4 Pos Syntax Pos Obj Target Diese Funktion durchsucht den String Target nach dem ersten Vorkommen des Stringausdruckes Obj Das Ergebnis ist integer und bezeichnet di Strings 44 Position im Stringausdruck Target die das erste Zeichen von Obj innehat Die Position des rsten Zeichens im String ist RE ER Zeichenkombination nicht gefunden liefert Pos den Wert 0 Wenn St den Wert ABCDEFG hat ergibt Pos DE St den Wert 4 Pos H St den Wert 0 wird die Arrays 45 10 Arrays Ein Array ist ein strukturierter Datentyp mit einer festgesetzten Anzahl von Komponenten die alle vom gleichen Typ sind dem Grundtyp Auf jede Komponente kann mit Indizes zugegriffen werden Indizes sind integer Ausdr cke di in eckige Klammern hinter den Arraybezeichnern stehen Ihr Datentyp wird Indextyp genannt 10 1 Arraydefinition Die Definition eines Arrays besteht aus dem ersten reservierten Wort array dem der Indextyp in eckigen Klammern folgt Danach steht das reservierte Wort of gefolgt vom Grundtyp Beispiele type Day Mon Tue Wed
37. und addr die Programmadresse bei der der Fehler aufgetreten ist Wenn die automatische I O Fehlerroutine nicht in Betrieb ist SI wird das Programm bei Auftreten eines I O Fehlers nicht unterbrochen Stattdessen werden alle weiteren I O Anweisungen erst dann ausgef hrt wenn das Ergebnis der I O Operation mit Hilfe der Standardfunktion IOresult berpr ft worden ist Wenn versucht wird in I O Operation auszuf hren ohne da nach inem Fehler IOresult aufgerufen wurde kann dies einen Programmstillstand zur Folge haben Es folgt eine Erl uterung aller Laufzeit Fehlernummern Beachten Sie da es sich dabei um hexadezimale Zahlen handelt 01 Datei ist nicht vorhanden Sie haben bei Reset Erase Rename Execute oder Chain eine Datei spezifiziert die nicht vorhanden ist 02 Lesen der Datei nicht m glich 1 Sie versuchen von einer Datei zu lesen mit Read oder Readln ohne vorheriges Reset oder Rewrit 2 Sie versuchen von iner Textdatei zu lesen die mit Rewrite vorbereitet aber noch leer ist 3 Sie versuchen vom logischen Ger t LST Drucker inzulesen LST ist jedoch ein reines Ausgabeger t ANHANG 98 03 04 10 20 21 22 90 91 FO Fl F2 FF Ausgabe in die Datei nicht m glich 1 Sie versuchen in eine Datei zu schreiben mit Write oder Writeln ohne vorheriges Rest oder Rewrit 2 Sie versuchen in eine Textdatei zu schreiben die
38. und zum Lesen aufbereitet worden sind 14 4 Readlin Prozedur Readln Varl Var2 y VarN Nach einem Readln wird das folgende Read oder Readln am Anfang der n chsten Zeile zu lesen beginnen 14 5 Write Prozedur Mit der Write Prozedur k nnen Zeichen Strings Bool sche Werte und zahlen ausgegeben werden Die Syntax der Write Anweisung ist wie folgt Write Varl Var2 VarN Dabei sind Varl Var2 VarN Variable vom Typ Char String Boolean Integer oder Real denen wahlweise in Komma oder ein ganzzahliger Ausdruck folgen soll mit denen die Gr e des Ausgabefeldes bestimmt wird Es werden die Variablen zur Standarddatei Output ausgegeben gew hnlich dem Bildschirm Das Format der Write Parameter h ngt vom Variablentyp ab es folgt eine Beschreibung der unterschiedlichen Formate ihrer Bedeutung und ihrer Symbole l m n bezeichnet Ausdr cke vom Typ Integer R bezeichnet Ausdr cke vom Typ Real ch bezeichnet Ausdr cke vom Typ Char S bezeichnet Ausdr cke vom Typ String und B bezeichnet Ausdr cke vom Typ Boolean Ch Das Zeichen Ch wird ausgegeben Typisierte Konstanten 59 Chiri Das Zeichen Ch wird in einem n Zeichen langen Feld rechtsb ndig plaziert Das restliche Feld wird mit Leerzeichen aufgef llt S Der String wird ausgegeben Arrays von Zeichen k nnen eben falls ausgegeben werden wenn sie mit Strings kompatibel sind S n Der String S wird in einem n S
39. wo eine real Konstante stehen kann Trennungszeichen sind inner halb von Zahlen nicht erlaubt besser 10 hoch Exponentialfaktor Grundlegende Sprachelemente 24 Beispiele 1 1234 5678 0 072 1EO 2E 5 1 23456 780 1E 12 i zul ssig aber es ist keine reelle sondern eine ganze Zahl 4 3 Strings Eine Stringkonstante ist eine Sequenz von Zeichen die mit einfachen Anf hrungszeichen eingefa t sind Dies ist eine String Konstante Ein einzelnes Anf hrungszeichen kann in einem String stehen indem es doppelt geschrieben wird Strings die nur in inziges Zeichen enthalten gelten als Standardtyp Char Ein String ist mit einem array of Char derselben L nge kompatibel Alle Stringkonstanten sind mit allen String Typen kompatibel Beispiele KCPASCAL You l1l see TERT Wie man an Beispiel 2 und 3 sieht wird ein einzelnes Anf hrungszeichen in einem String als zwei aufeinanderfolgend Anf hrungszeichen geschrieben Die vier aufeinanderfolgenden Anf hrungszeichen im Beispiel 3 stellen einen String dar der ein einzelnes Anf hrungszeichen enth lt 4 3 1 Kontrollzeichen Mit KCPASCAL k nnen Sie auch Kontrollzeichen n Strings einbetten Es werden zwei Notationen f r Kontrollzeichen unterst tzt 1 Das Symbol gefolgt von einer Integer Konstanten im Bereich 0 255 bezeichnet ein Zeichen des entsprechenden ASCII Werts 2 Das Sym
40. 0 p g Writeln Maze 0 0 1 1 Writeln Maze 0 1l t 29 Writeln Maze 0 1 1 3 Writeln Maze 1 0 4 Writeln Maze 1 0 1 5 writeln Maze l l p Gry Writeln Maze l 1 1 7 end 13 2 3 Record Konstanten Die Definition zeichner iner Record Konstanten besteht aus einem Konstantenbe einem Doppelpunkt definierten Recordtypen Darauf folgt dem in Gl und Typenbezeichner eines zuvor ichheitszeichen und der Wert Typisierte Konstanten 56 der Konstanten Der Wert wird durch eine Liste von Feldkonstanten ausgedr ckt die in runden Klammern stehen Die einzelnen Komponenten sind durch Kommas getrennt Beispiel type Point record X Y Z integer end OS CPM80 CPM86 MSDOS UNIX UL CCP SomethingElse MenueMaster Computer record OperatingSystem array 1 4 of OS UserInterface UI end CONSE Origo Point X r0 7Y 0 720 SuperComp Computer OperatingSystems CPM80 CPM86 MSDOS UNIX UserInterface MenueMaster Planel array 1 3 of Point KIEL SVEIF I ARE DET 7 Zu DEI TE I Ze I I Die Feldkonstanten m ssen in der gleichen Ordnung angegeben werden di mit Kommas voneinander getrennt sind und in eckigen Klammern stehen Ein Element mu eine Konstante oder ein Ausdruck eines Bereiches sein der aus zwei Konstanten die mit zwei aufeinanderfolgenden Punkten getrennt sind besteht Beispiel type Up set of A Z2
41. 4 und 101 3 Zeigerfunktionen beschrieben auf Seite 120 und 125 16 3 2 1 Arithmetische Funktionen 16 3 2 1 1 Abs Syntax Abs Num Gibt den absoluten Wert von Num aus Das Argument mu entweder reell oder integer sein und das Ergebnis ist vom selben Typ wie das Argument 16 3 2 1 2 ArcTan Syntax ArcTan Num Gibt den Winkel dessen Tangente Num ist im Bogenma an Das Argument X mu entweder real oder integer sein das Ergebnis ist real 16 3 2 1 3 Cos Syntax Cos Num Gibt den Cosinus von Num aus Das Ergebnis wird im Bogenma ausgedr ckt und es mu entweder integer oder real sein Das Ergebnis ist real Prozeduren und Funktionen 74 16 3 2 1 4 Exp Syntax Exp Num Gibt den Exponenten von Num d h e25num26 aus Das Argument Num mu ntweder integer oder real sein das Ergebnis ist real 16 3 2 1 5 Frac Syntax Frac Num Gibt den Bruchteil von Num aus d h Frac Num Num Int Num Das Argument mu entweder integer oder real sein das Ergebnis ist real 16 3 2 1 6 Int Syntax Int Num Gibt den ganzzahligen Teil von Num an und zwar die gr te ganze Zahl kleiner gleich Null falls Num gt 0 oder di kleinst ganze Zahl gr er gleich Num wenn Num lt O Das Argument Num mu entweder integer oder real sein das Ergebnis ist real 16 3 2 1 7 Ln Syntax Ln Num Gibt den nat rlichen Logarithmus von Num aus Das Argument Num mu ntweder inte
42. Besonderheiten 80 17 1 2 Start Adresse Start address gibt die Adresse hexadezimal des ersten Bytes des Codes an Das ist normalerweise die Endadresse der Pascal Library plus eins kann aber auch auf eine h here Adresse ge ndert werden falls man Platz reservieren will z B f r absolute Variablen di in Reih von verketteten Programmen gemeinsam sind Wenn Sie ein S ingeben werden Sie veranla t eine neue Startadresse einzugeben Falls Sie nur lt ENTER gt dr cken wird der kleinst Wert angenommen Setzen Sie die Startadresse nicht niedriger als den minimalen Wert da der Code dann Teile der Pascal Library berschreibt 17 1 3 End Adresse End address gibt die h chste f r das Programm verf gbare Adresse an hexadezimal Der Wert in Klammern zeigt die Spitze der TPA auf ihrem Computer Wenn Sie TEY ingeben werden Si aufgefordert in Endadresse inzugeben Wenn Sie lt ENTER gt dr cken wird der voreingestellt Wert bernommen 17 1 4 Finden von Laufzeitfehlern Wenn Sie ein im Speicher compiliertes Programm laufen lassen und es tritt ein Laufzeitfehler auf wird der Editor aufgerufen und der Fehler automatisch angezeigt Dies ist nat rlich nicht m glich wenn das Programm in einer COM oder CHN Datei steht Laufzeitfehlermeldungen zeigen den Fehlercode und den Wert des Programmz hlers zur Zeit des Fehlers an z B Run time e
43. HANG 87 Anhang A Zusammenfassung der Standardprozeduren und Standardfunktionen Dieser Anhang listet alle in KCPASCAL verf gbaren Standardprozeduren und funktionen auf und beschreibt ihre Syntax ihre Parameter und ihre Typen Die folgenden Symbole bezeichnen Elemente verschiedenen Typs type beliebiger Typ string beliebiger Stringtyp file beliebiger Dateityp scalar beliebiger Skalartyp pointer beliebiger Zeigertyp Wo keine Parametertypspezifikation vorhanden ist bedeutet das da die Prozedur oder die Funktion Variablenparameter beliebigen Typs akzeptiert A 1l Ein Ausgabeprozeduren und funktionen Die folgenden Prozeduren benutzen in ihrer Parameterliste nicht die Standardsyntax procedure Read var F file of type var v type Read var F text var I Integer Read var F text var R Real Read var F text var C Char Read var F itext var S string Readln var F text Write var F file of type var v type Write var F text var I Integer Write var F text var R Real Write var F text var B Boolean Write var F text var C Chat Write var F text var S string writeln var F text A 2 Arithmetische Funktionen funktio Abs I Abs R ArcTa n Integer Integer Real Real n r Real Real Cos R Exp R Frac Int R Ln R Sin Sqr Sqr Sqrt Real Real Real Real R Real Real Real Real f Real Real R Real Real I Integer
44. Integer Integer and arithmet und Integer Integer logisches und Boolean Boolean shl Shift nach links Integer Integer shr Shift nach rechts Integer Integer ANHANG 90 Addition Integer Real Integer Real Verkettung string string Mengenvereinigung jeder Mengentyp wie Operand F Subtraktion Integer Real Integer Real Mengenschnitt jeder Mengentyp wie Operand or arithmet oder Integer Integer logisches oder Boolean Boolean xor arithmet exoder Integer Integer logische exoder Boolean Boolean Operator Wirkung Type des Operanden Ergebnistyp Gleichheit jeder Skalartyp Boolean Gleichheit String Boolean Gleichheit jeder Mengentyp Boolean Gleichheit jeder Zeigertyp Boolean lt gt Ungleichheit jeder Skalartyp Boolean Ungleichheit String Boolean Ungleichheit jeder Mengentyp Boolean Ungleichheit jeder Zeigertyp Boolean gt gr er oder gleich jeder Skalartyp Boolean gr er oder gleich String Boolean Mengeneinschlu jeder Mengentyp Boolean lt kleiner oder gleich jeder Skalartyp Boolean kleiner oder gleich String Boolean Mengeneinschlu jeder Mengentyp Boolean gt gr er als jeder Skalartyp Boolean gr er als String Boolean lt kleiner als jeder Skalartyp Boolean kleiner als String Boolean in Mitglied einer Menge siehe unten Boolean Der erste Operand des in Operators kann von beliebigem Skalartyp sein der zweite Operand mu ein
45. KCPASCAL PASCAL STECKMODUL DOKUMENTATION als Manuskript gedruckt Auf der Grundlage des TURBO PASCAL Handbuches von Borland Inc USA Betreuer Entwickler und Bearbeiter PROF H K ROTH DIPL ING M STURM DIPL ING R BERGMANN DIPL ING W TISCHER in elektronisch lesbare Form gebracht von Ulrich Zander 2006 Achtung Das Original hat viele Grammatik und Rechtschreibfehler die teilweise von mir ge ndert wurden Volker Pohlers hat die Sachfehler korrigiert Inhaltsverzeichnis Einf hrung Pascal KCPASCAL 1 Die Benutzung von KCPASCAL 1 1 Start von KCPASCAL 1 2 Das Hauptmen N Die Wahl der Arbeitsdatei CP FF Orr WWWWWBK NNNNNN oa BUNEN JN COU BUWUNE L36 1 53 1 3 5 8 Reservi Das Edit Kommando Das Compile Kommando Das Run Kommando Das Save Kommando Das Quit Kommando Die Compiler Option ASCAL Editor Die Statuszeile Die Editier Kommandos Eine Bemerkung zu den Kontrollzeichen Bevor Sie anfangen Wie Sie wieder aufh ren k nnen Cursorsteuerungs Kommandos 1 3 5 1 Kommandos f r Grundbewegungen 1 3 5 2 Kommandos f r erweiterte Bewegungen Einf ge und L sch Kommandos Block Kommandos Weitere Editier Kommandos rundlegende Sprachelemente 1 Grundsymbole rte W rter Begrenz Byte Real UDA wN Char Boolean er 2 3 Standardbezeichner 4 5 Programmzeilen kalare Standardtypen 1 Integer 2 Zahlen 3 Strings 4 31 4 4 Ko
46. Release HeapTop end Zeiger Typen 64 15 5 Dispose Anstelle von Mark Release kann die Dispose Prozedur von Standard Pascal benutzt werden um Speicherplatz im Heap zur ckzugewinnen Beachten Sie da Dispose und Releas verschieden Arten der Heapver waltung verwenden und diese nie zugleich benutzt werden d rfen Ein Programm kann entweder Dispose oder Mark Release verwenden um den Heap zu verwalten Diese zu mischen verursacht unvorhersagbare Ergebnisse Die Syntax ist Dispose Var wobei Var eine Zeigervariable ist Dispose erlaubt es einen dynamischen Speicher der von iner spezi fischen Zeigervariablen genutzt wird f r in neuerlich Verwendung zur ckzugewinnen Im Gegensatz dazu setzen Mark und Release den ganzen Heap von der spezifischen Zeigervariablen an abw rts frei Nehmen wir an Si haben in Reih von Variablen die dem Heap zugewiesen wurden Das folgende Bild zeigt den Inhalt des Heap und die Wirkung von Dispose Var und Mark Var3 Release Var3 Heap Nach Nach Dispose Mark Release HiMem Bild 15 1 Gebrauch von Dispose Nach der Anwendung von Dispose auf eine Zeigervariable kann der Heap aus einer Reihe von benutzten Speicherelementen und dazwischenliegenden freien Speicherbereichen bestehen Darauffolgende Aufrufe von New verwenden diese wenn die neue Zeigervariable an die Stelle pa t 15 6 GetMem Die Standardprozedur GetMem wird benutzt um auf dem H
47. St ist wird kein Buchstabe gel scht Wenn versucht wird Buchstaben zu l schen die sich die sich jenseits des rechten Endes des Strings befinden d h Pos und Num sind gr er als die L nge des Strings werden nur Buchstaben innerhalb des Strings gel scht Wenn Pos au erhalb des Bereiches 0 255 ist wird eine Laufzeitfehlermeldung ausgegeben Wenn St den Wert ABCDEFG hat dann nimmt St unter den folgenden Bedingungen nachstehende Werte an Delete ST 2 4 ergibt den Wert AFG Delete St 2 10 ergibt den Wert A 9 4 2 Einf gen Syntax Insert Obj Target Pos Insert f gt den String Obj in den String Target an der Position Pos ein Obj ist eine Stringvariable und Pos ist eine integer Zahl Wenn Pos gr er als die L nge der Stringvariablen ist dann wird der String ausdruck an Target angef gt Wenn das Ergebnis gr er als die angegebene Maximall nge von Target ist verschwinden die berz hligen Buchstaben und Target enth lt lediglich die am weitesten links stehenden Buchstaben Ist Pos au erhalb des Bereiches 0 255 wird eine Laufzeitfehlermeldung ausgegeben Strings 42 Wenn St den Wert ABCDEFG hat dann gibt Insert XX St 3 St den Wert ABXXCDEFG 9 4 3 Str syntax Strivalus 3E Die Prozedur Str wandelt den numerischen Wert Value in einen String um und speichert das Ergebnis als St ab Value ist ein Schreibparameter des Typs integer oder real St ist e
48. VS Standard Pascal D a Anhang OO0O0000 1 NINA 0 PwMN Dynamische Variablen Rekursion Get und Put Goto Anweisung Page Prozedur Gepackte Variablen Prozedurale Parameter Compiler Fehlermeldung Anhang F Laufzeit Fehlermeldungen Anhang G Fehlermeldungen 92 92 92 92 92 93 93 93 93 93 93 93 93 94 94 96 97 Die Benutzung von KCPASCAL 6 Einf hrung Vor Ihnen liegt das Handbuch f r das Programm KCPASCAL in der Form wie es auf dem KC 85 1 oder KC 87 l uft Obwohl darin viel Beispiel beschrieben werden ist es nicht als Lehr oder Textbuch gedacht und deshalb sollten Sie wenigstens Grundkenntnisse von Pascal besitzen Pascal ist eine allgemein anwendbare High Level Programmiersprache die von Professor Nikolaus Wirth der Techn Universit t Z rich entwickelt und nach Blaise Pascal dem ber hmten Philosophen und Mathematiker aus dem 17 Jahrhundert benannt wurde Diese 1971 ver ffentlichte Programmiersprache sollte mittels des strukturierten Programmierens eine systematische Ann herung an die Arbeit mit Computern erlauben Seitdem wird Pascal auf fast allen Computern in fast allen Anwendungsbereichen genutzt Heute ist Pascal eine der meist benutzten High Level Programmiersprachen sowohl im Lehr als auch im professionellen Programmbereich KCPASCAL ist eng an das Standard PASCAL von N Wirth angelehnt wie es in dem Pasca
49. Wed Thu Fri Sat Bin Month Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec carad Club Diamond Harrt Spade Variablen des Datentyps Card k nnen eine der vier oben angegebenen Wert annehmen Mit dem skalaren Standardtyp Boolean sind Sie schon vertraut Er wird folgenderma en definiert type Boolean False True Die Operatoren lt gt lt gt lt und gt k nnen allen skalaren Datentypen beigeordnet werden unter der Bedingung da beide Operanden vom gleichen Datentyp sind als Ausnahme k nnen Real und Integer Zahlen gemischt werden Die Operanden werden in der Reihenfolg ihres Auftretens verglichen so gilt f r den Typen Card aus obigem Beispiel Club lt Diamond lt Heart lt Spade Drei Standardfunktionen sind vorhanden die mit den skalaren Datentypen arbeiten Succ Diamond der Nachfolge successor von Diamond Heart Pred Diamond der Vorg nger predecessor von Diamond Club Ord Diamond die Platznummer ordinal number von Diamond 1 Das erste Element des Datentyps hat immer die Ordnungszahl bzw Platz nummer 0 Der Datentyp des Ergebnisses von Succ und Pred entspricht dem Datentyp des jeweiligen Arguments von Ord ist es immer eine Integer zahl 8 2 Teilbereiche skalarer Datentypen Ein Datentyp kann auch als Teilbereich eines bereits definierten skalaren Typs definiert werden Diese werden als Teilbereiche skalarer D
50. as Komplement zweier Mengen das relative Komplement geschrieben A B ist di Meng der Element der zuerst angegebenen Menge die nicht auch in der zweiten Meng nthalten ist Die Differenz von 1 3 5 7 und 2 3 4 ist 1 5 7 12 1 Mengendefinition Obwohl es in der Mathematik keine Beschr nkungen gibt welche Elemente in iner Meng sein k nnen hat Pascal doch einige Restriktionen Die Element iner Menge m ssen alle vom gleichen Typ dem Grundtyp sein und dieser mu ein einfacher Datentyp sein d h jeder skalare Datentyp au er dem reellen Einer Menge steht das reservierte Wort set of voran gefolgt von einem einfachen Datentyp Beispiele type DaysOfMonth set of 0 31 WorkWeek set of Mon Fri Letter set of A 2 Additive Colors set of Red Green Blue Charakters set of Char Bei KCPASCAL k nnen maximal 256 Elemente in einer Menge enthalten sein und die Ordinalwerte des Grundtyps m ssen zwischen 0 und 255 liegen Mengen 12 2 Mengenausdr cke 52 Die Wert iner Menge k nnen mit den Werten iner anderen Menge ber Mengenausdr ck iner Rechenoperation unterliegen Mengenausdr cke be stehen aus Mengenkonstanten Mengenvariablen den Angaben der Menge und den Mengenoperationen 12 2 1 Angabe der Menge Die Mengenangabe besteht aus einem oder mehreren durch Kommas getrennten und in eckigen Klammern stehenden Elementbes
51. atentypen bezeichnet Die Definition bestimmt lediglich den niedrigsten und den h chsten Wert dieses Teilbereichs Skalare Datentypen und deren Teilbereich 38 Die erste Konstante bestimmt die untere Grenze und darf nicht gr er als die zweite sein di di obere Grenze bildet Ein Teilbereich des Typs Real ist nicht erlaubt Bespiele type HemiSpher North South West East World East West CompassRange Qes 360r Upper A 2 Lower Nat ste Degree Celc Fahr Ream Kelv Wine Red White Rose Sparkling Der Datentyp World ist ein Teilbereich des skalaren Datentyps Hemisphere Der Teilbereich von CompassRange ist integer und der dazugeh rige skalare Typ von Upper und Lower ist Char Sie kennen bereits den standardisierten Teilbereich des Datentyps Byte der wie folgt definiert ist type Byte 0 2553 Ein Teilbereich besitzt alle Attribute seines zugeordneten skalaren Datentyps und ist lediglich durch di Meng seiner m glichen Werte begrenzt 8 3 Umwandlung von Datentypen Mit der Funktion Ord k nnen skalare Datentypen dem Wert iner integer Zahl zugeordnet werden Standard Pascal unterst tzt diese Umwandlung nicht in die umgekehrte Richtung d h eine integer Zahl l t sich nicht in einen skalaren Wert umwandeln Integer Heart 2 Month 10 Nov Hemisphere 2 East Upper 14 0 Degree 3 Kelv Char 78 N Integer
52. auch Read Readln und Close k nnen diesen Fehler verursachen wenn Sie den Schreibpuffer zum berlaufen bringen Verzeichnis ist vol Sie versuchen ine neue Datei zu erstellen aber es ist ein Platz mehr im Verzeichnis Dateigr en berschreitung Sie versuchen auf einer definierten Datei auf einen Record ber 65535 hinaus zu schreiben Datei verschwunden Es wurde ein Versuch unternommen in Datei zu schlie en die nicht mehr im Verzeichnis vorhanden ist z B weil di Kassett gewechselt wurde III 12 12L0 171 134 88
53. bol gefolgt von einem Zeichen bezeichnet das entsprechend Kontrollzeichen Beispiele 10 ASCII 10 dezimal Zeilen Vorschub 1B ASCII 1B hex Escape G Control G Bell Klingel ls Contr l L Formular Vorschub i Control Escape Sequenzen von Kontrollzeichen k nnen zu Strings verkettet werden indem sie ohne Trennungszeichen zwischen den inzelnen Zeichen geschrieben werden 3 10 27 U20 AGnGGG Die obigen Strings enthalten zwei drei und vier Zeichen Grundlegende Sprachelemente 25 Kontrollzeichen k nnen auch mit Textstrings gemischt sein Waiting for input G G G Please wake up 27 U This is another line of text M J Diese Strings enthalten jeweils 37 3 und 31 Zeichen 4 4 Kommentare Kommentare k nnen berall im Programm eingef gt werden wo ein Begrenzer erlaubt ist Ein Kommentar ist durch die Symbole und bzw von geschweiften Klammern begrenzt Beispiele Dies ist ein Konmentar Dies ist ebenfalls ein Kommentar Geschweifte Klammern d rfen nicht geschachtelt werden ebenfalls nicht Es d rfen aber geschweifte Klammern in geschachtelt sein und umgekehrt 4 5 Compilerbefehle Eine Reihe der Eigenschaften des KCPASCAL Compilers wird durch Compiler befehl gesteuert Ein Compilerbefehl wird als Kommentar mit einer speziellen Syntax eingef hrt Das bedeutet da berall da wo ein Kommentar erlaubt ist auch ein Compilerbefehl stehen kan
54. buchstabens ausgef hrt wird Das Men verschwindet zwar wenn Sie mit dem System arbeiten aber es l t sich leicht wieder auf den Bildschirm holen Geben Si inen unerlaubten Befehl ein z B lt ENTER gt oder lt SPACE gt Die folgenden Abschnitte beschreiben jedes Kommando im Detail 1 2 Das Hauptmen 1 2 1 Die Wahl der Arbeitsdatei Das W Kommando wird zur Auswahl der zu bearbeitenden Datei benutzt Nach seiner Eingabe erscheint auf dem Bildschirm Workfilename Sie antworten mit einem legalen Dateinamen d h mit einem Namen der aus 1 bis 8 Buchstaben optional einem Punkt und m glicherweise dem Dateityp max 3 Buchstaben besteht FILENAME TYP Wenn Si inen Namen ohne Punkt und Dateityp eingeben wird automatisch der Typ PAS generiert Es ist m glich einen Dateinamen ohne Typ anzugeben indem hinter den Namen nur der Punkt gesetzt wird Beispiele PROGRAM wird zu PROGRAM PAS PROGRAM wird nicht ver ndert PROGRAM FIL wird nicht ver ndert Die Dateitypen BAK und COM sollten vermieden werden da KCPASCAL diesen Die Benutzung von KCPASCAL 8 Namen zu einem bestimmten Zweck verwendet Nachdem die Arbeitsdatei angegeben wurde kann sie von der Kassette ingelesen werden Wenn nicht erscheint als Meldung Neu Wenn Si in soeben ditiert Datei noch nicht abgespeichert haben erscheint die Meldung workfile FILENAME TYP sichern J N
55. chirm vollgeschrieben haben wird di oberst Zeil nach oben weggeschoben 1 3 1 Die Statuszeile Di oberst Zeil auf dem Bildschirm ist die Statuszeile Sie enth lt folgende Informationen Bild 1 5 Statuszeile des Editors an Zeigt die Nummer der Zeil an in der sich der Cursor befindet vom oberen Bildschirmrand her gez hlt sn Zeigt die Nummer der Spalte an in der der Cursor steht von der linken Seite her gez hlt Einf Hier wird angezeigt da die Zeichen die ber die Tastatur eingegeben werden an der Cursorposition eingef gt werden Der bereits existierend Text rechts vom Cursor wird entsprechend der L nge des neuen Textes nach rechts verschoben Wenn Sie das Kommando Einf aus CONTR V nach Voreinstellung eingeben erscheint stattdessen Ueb berschreiben Nun wird der Text an der Cursorposition berschrieben und nicht nach rechts verschoben Tab Gibt an da die automatische Tabulierfunktion eingeschaltet ist Mit dem Kommando auto Tab ein aus CONTR Q CONTR I nach Voreinstellung kann ein Die Benutzung von KCPASCAL 10 oder ausgeschaltet werden FILENAME TYP Name und Typ der Datei di ditiert werden soll 1 3 2 Editier Kommandos Wie schon erw hnt wird der Text wie auf einer Schreibmaschine geschrieben Da Sie aber auf einem Computer arbeiten werden Ihnen einig Editierm glichkeiten geboten die die Textbearbeitung und in
56. d Var Deck AllCards Ein multidimensionales Array kann auch einfacher definiert werden type Alltards array Suit 1 13 of Card Eine hnliche Kurzform kann bei der Wahl der Arraykomponenten gew hlt werden Deck Hearts 10 entspricht DeckHearts 10 Es ist nat rlich auch m glich multidimensionale Arrays in der Form von vordefinierten Arraytypen zu benutzen Beispiel type Pupils string 10 Class arsayl l1 30 0f Pupils School array 1 100 of class var JP Vacant Integer ClassA ClassB Class NewTownSchool 5cho l Nach diesen Definitionen sind alle folgenden Zuweisungen m glich 10 3 Zeichenarrays Zeichenarrays sind Arrays mit einem Index und Komponenten des skalaren Standardtyps Char Zeichenarrays k nnen als String mit konstanter L nge gedacht werden Bei KCPASCAL k nnen Zeichenarrays an Stringausdr cken teilnehmen In diesem Fall wird das Array in einen String der gleichen L nge umgewandelt So k nnen Arrays auf die gleiche Art und Weise wie Strings verglichen und behandelt und Stringkonstanten k nnen Zeichenarrays zugewiesen werden solange si di gleiche L nge haben Stringvariable und Werte aus Stringausdr cken k nnen nicht den Zeichenarrays zugewiesen werden 10 4 Vordefinierte Arrays KCPASCAL bietet zwei vordefinierte Arrays vom Type Byte Mem und Port die als direkter Zugang zum CPU Speicher und zu den Daten Ports benutzt werden k nnen Diese
57. dardprozeduren 176 2 2 1 CLrSer 2 Delay GotoXY Exit Halt Randomize Move FillChar NNNVNNNNDN DNDDNDDNDDNDDIMID DDDNDDNDNDNDIM oO ION B Ww 16 Funktionen 16 3 1 Funktionsdeklarierung 16 3 2 Standardfunktionen 16 3 2 1 Arithmetische Funktionen 16 3 2 1 1 Abs 6 3 2 1 2 ArcTan 6 32 be E08 6 3 2 1 4 Exp 6 3 2 bao Prae 6 3 2 1 6 Int 6 3 2 1 un 6 3 2 1 8 Sin 6332 1 99 SAE 16 3 2 1220 SIE 16 3 2 2 Skalare Funktionen 6 3 2 2 1 Pred 6 3222 S CE 6 3 2 2 3 Odd 54 54 54 54 35 Se 56 56 56 57 58 58 58 59 59 61 61 61 62 62 64 64 65 65 66 66 67 68 68 69 70 70 70 71 goi 71 71 71 71 7 72 73 73 3 73 73 74 74 74 74 74 74 74 TES TS J5 TS 16 4 17 Weit 16 3 2 3 Transfer Funktionen 16 32 31 Chr 16 3 2 3 2 Ord 16 3 2 3 3 Round 16 3 2 3 4 Trunc 16 3 2 4 Weitere Standardfunktionen 6 3 2 4s1 Hi 6 3 2 4 2 KeyPressed 6 3 2 4 3 Lo 6 3 2 4 4 Random 6 3 2 4 5 Random Num 6 3 2 4 6 Sizeof 6 3 2 4 7 Swap 16 3 2 4 8 UpCase Forward Referenzen re Besonderheiten u I Es 1 17 BP WM Lr 17 17 8 No 17 9 Compiler Optionen 17 1 1 Memory Com File CHN Fil 17 1 2 Startadresse 17 1 3 Endadresse 17 1 4 Finden von Laufzeitfehlern Standardbezeichner Absolute Variablen Addr Funktion Vordefinierte Arrays 17 5 1 Mem Array 17 5 2 Port Array Array Subscript Optimierung with Anweisung H
58. des Textes und zur letzten Cursorposition zu gelangen Diese Kommandos rfordern di Eingab zweier Zeichen CONTR O und dann eines der folgenden Kontrollzeichen CONTR S D E X R und C Die ersten vier wurden schon vorher besprochen d h CONTR Q R bewegt den Cursor zum Beginn CONTR Q C zum Ende des Textes CONTR Q S zum u ersten linken Ende und CONTR QO D zum u ersten rechten Ende der Zeile CONTR Q E bewegt den Cursor an den oberen Rand des Bildschirms CONTR Q X an den unteren Rand des Bildschirms Die Benutzung von KCPASCAL 14 CONTR Q zusammen mit einem B K oder P erm glicht es Ihnen innerhalb der Datei weit zu springen Blockanfang CONTR OQ B Bewegt den Cursor an die Stelle der Blockanfangs Markierung die mit CONTR K K gesetzt wurde deshalb das O B Blockende CONTR QO K Bewegt den Cursor an die Stelle der Blockende Markierung die mit CONTR K K gesetzt wurde deshalb das O K Letzte Cursorposition CONTR O P Bewegt den Cursor an seine vorherige Position P soll an Position erinnern Beispielsweise um den Cursor nach einem Sichern oder nach einem Suchen Tauschen auf seine letzte Position zur ck zu bewegen 1 3 6 Einf ge und L sch Kommandos Einf ge Modus an aus CONTR V Wenn Si Text ingeben k nnen Sie zwischen zwei Eingabemodi w hlen Einf gen und berschreiben Der bei Aufruf des Editors voreingestellte Einf gemodus erlaubt es Ihne
59. e da reelle Konstanten verwendet werden m ssen um ein reelles Ergebnis zu erhalten falls das Ergebnis gr er als MaxInt ist Prozeduren und Funktionen 66 16 Prozeduren und Funktionen Ein Pascalprogramm besteht aus einem oder mehreren Bl cken die wieder in Bl cke unterteilt sein k nnen usw Ein solcher Block ist eine Prozedur ein anderer eine Funktion gemeinhin Unterprogramm genannt Eine Prozedur ist also ein eigenst ndiger Teil im Programm und kann mittels einer Prozeduranweisung aufgerufen werden siehe Seite 56 Eine Funktion ist dem ziemlich hnlich aber si berechnet inen Wert wenn ihr Bezeichner w hrend der Ausf hrung erreicht wird siehe Seite 54 und gibt diesen dann aus 16 1 Parameter Werte k nnen in Prozeduren und Funktionen durch Parameter bergeben werden Dies erlaubt ein Unterprogramm mit verschiedenen Werten zu fahren und damit auch unterschiedliche Ergebnisse zu bekommen Die Prozeduranweisung oder die Funktionsbezeichnung die das Unterprogramm aufruft kann eine Liste von Parametern enthalten die aktuellen Parameter Diese werden an die formalen Parameter die im Kopf des Unterprogramms bestimmt sind bergeben Die Reihenfolge der bergabe entspricht der Reihenfolge der Parameterliste Pascal unterst tzt zwei verschiedene Methoden der Parameter bergabe ber den Wert und ber die Referenz einer Ver nderung der f
60. e Menge dieses Type sein C Zusammenfassung der Compilerbefehle Einige der Eigenschaften des KCPASCAL Compilers werden durch Compilerbefehle kontrolliert Ein Compilerbefehl wird als Kommentar mit spezieller Syntax eingef hrt was bedeutet da berall wo ein Kommentar erlaubt ist auch ein Compilerbefehl erlaubt ist Ein Compilerbefehl besteht aus einer geschweiften Klammer auf unmittel bar gefolgt von einem Compilerbefehlsbuchstaben oder iner Liste von Compilerbefehlsbuchstaben die durch Kommas getrennt sind Ein Compilerbefehl wird schlie lich mit iner geschweiften Klammer abgeschlossen Beispiele I I INCLUDE FIL B R V SU ANHANG 91 Beachten Sie da keine Zwischenr ume vor und nach dem Dollarzeichen erlaubt sind Ein Zeichen nach einem Befehl zeigt an da die damit verbundene Eigenschaft in Kraft gesetzt wird aktiv und ein Zeichen zeigt da sie au er Kraft gesetzt ist passiv C 1 ACHTUNG Alle Compilerbefehl haben voreingestellt Werte Dies wurden so gew hlt da die Ausf hrungsgeschwindigkeit und die Codegr e optimiert wird Das bringt mit sich da z B die Erzeugung von Code f r rekursive Prozeduren und Indexpr fung au er Kraft gesetzt wurden Pr fen Sie im Zweifelsfall also ob ihre Programme die ben tigten Compilerbefehls instellungen enthalten C 2 Allgemeine Compilerbefehle C 2 1 B
61. eap einen bestimmten Platzbedarf zu reservieren Im Gegensatz zu New wo soviel Platz zugewiesen wird wie es der Typ ben tigt auf dessen Argument gezeigt wird erlaubt GetMem dem Programmierer die Gr e des zugewiesenen Platzes zu kontrollieren GetMem wird mit zwei Parametern aufgerufen GetMem PVar I PVar ist eine beliebige Zeigervariable und I ist ein Integer Ausdruck der die Anzahl der Bytes angibt f r die Platz ben tigt wird Zeiger Typen 65 15 7 FreeMem Syntax FreeMenm Die FreeMem Standardprozedur wird gebraucht um einen ganzen Block auf dem Heap wieder freizumachen Es ist also das Gegenst ck zu dGetMen FreeMem wird mit zwei Parametern aufgerufen FreeMem PVar I wobei PVar eine beliebige Zeigervariable ist und I ein Integer Ausdruck der die Zahl der Bytes angibt die wieder freizumachen sind Diese Zahl mu exakt der Zahl von Bytes entsprechen die vorher durch GetMem dieser Variablen zugewiesen worden sind 15 8 MaxAvail Die MaxAvail Standardfunktion gibt die Gr e des gr ten zusammen h ngenden freien Platzes an die auf dem Heap besteht Bei 16 Bit Systemen steht dieser Platz in Paragraphen pro 16 Bytes bei 8 Bit Systemen in Bytes Das Ergebnis ist eine ganze Zahl und wenn mehr als 32767 Paragraphen Bytes verf gbar sind gibt MaxAvail eine negative Zahl aus Die korrekte Zahl freier Paragraphen Bytes wird dann durch 65536 0 MaxAvail berechnet Beachten Si
62. eine Zeile nach unten Wenn der Cursor die unterste Zeile erreicht hat rollt der Bildschirm um eine Zeile nach oben Aufw rts rollen CONTR W Rollt den Cursor gegen den Anfang der Datei jeweils um eine Zeile d h der ganze Bildschirminhalt rollt nach unten Der Cursor bleibt auf der Zeile bis diese das untere Ende des Bildschirms erreicht Abw rts rollen CONTR Z Rollt den Cursor gegen das Ende der Datei jeweils um eine Zeile d h der ganze Bildschirminhalt rollt nach oben Der Cursor bleibt auf der Zeile bis diese den oberen Rand des Bildschirms erreicht Seite nach oben CONTR R Bewegt den Cursor um eine Seite nach oben mit einer berlappung von einer Zeile d h er bewegt sich um eine Bildschirmseite abz glich einer Zeile im Text zur ck Seite nach unten CONTR C Bewegt den Cursor um eine Seite nach unten mit einer berlappung von einer Zeile d h er bewegt sich um eine Bildschirmseite abz glich einer Zeile im Text nach vorn 1 3 5 2 Kommandos f r erweiterte Bewegungen Die eben besprochenen Kommandos rlauben es Ihnen sich frei im Text zu bewegen sie sind leicht zu erlernen und zu verstehen Wenn Si inig Zeit damit arbeiten merken Sie wi infach es ist Wenn Si si beherrschen werden Si den Cursor auch einmal schneller bewegen wollen Der Editor von KCPASCAL stellt 5 Kommandos zur Verf gung di s erlauben sehr schnell zu den u eren Enden der Zeilen
63. einer beliebigen Zahl von Anweisungen die mit Semikolons getrennt sind und von den reservierten W rtern begin und end eingeschlossen werden Die einzelnen Anweisungen der zusammengesetzten Anweisung werden in der Reihenfolge in der si geschrieben sind ausgef hrt Beispiel if Small Big then begin Tmp lt Small Small Big Big Tmp end 7 2 2 Bedingte Anweisung 7 2 2 1 If Anweisung Die if Anweisung Entscheidung spezifiziert da eine Anweisung nur dann ausgef hrt wird wenn eine bestimmte Bedingung Boolean Ausdruck erf llt wahr ist Wenn sie nicht erf llt falsch ist dann wird entweder kein Anweisung oder die Anweisung die auf das reservierte Wort else folgt ausgef hrt Beachten Sie da else kein Semikolon vorangehen darf Die syntaktische Zweideutigkeit die aus folgendem Konstrukt besteht if exprl then if expr2 then stmtl else stmt2 wird beseitigt indem das Konstrukt folgenderma en interpretiert wird Anweisung 34 if exprl then begin if expr2 then stmtl else stmt2 end d h der else Klauselteil geh rt generell zur letzten if Anweisung die keinen else Teil hat Beispiele if Interest gt 25 then Usury s true else TakeLoan OK if Entry lt 0 or Entry gt 100 then begin Write Range is 1 to 1000 please r ntersT Read Entry end 7 2 2 2 Case Anweisung Die case Anweisung Auswahl besteht aus eine
64. em Doppelpunkt und dem Typenbezeichner eines zuvor definierten Typisierte Konstanten 93 Arraytyps dem ein mit Kommas getrennte und in Klammern stehend von Konstanten ausgedr ckt meng Beispiel type Status Active Passive Waiting StrinRep array Status of string 7 const Stat StringRep active passive waiting Dieses Beispiel definiert di Array Konstante Stat die z B Werte des skalaren Datentyps Status in di ntsprechenden Strings umwandelt Die Komponenten von Stat sind Stat Active active Stat Passive passive Stat Waiting waiting Der Typ einer Komponente ist beliebig Ausgeschlossen sind lediglich File und Pointer Array Konstanten aus Zeichen k nnen entweder als einfache Zeichen oder als Strings bestimmt werden Also kann folgende Definition const Digits array s2 Gf Char TEE een auch einfacher ausgedr ckt werden const Digits array 0 9 of Char 11234567890 3 13 2 2 Multidimensionale Array Konstanten Multidimensionale Array Konstanten werden definiert indem die Konstanten jeder einzelnen Definition als eigenst ndige Mengen in Klammern ausge geben werden Die am weitesten innen stehenden Konstanten korrespondieren dabei zu den am weitesten rechts stehenden Dimensionen Beispiel type Cube array 0 1 0 1 0 1 of integer canst Maz amp rcube 160 1 r337 4ra 6r TII begin writeln Maze 0
65. en Maschinencode Assembler direkt in den Programmtext einzuf gen Eine inline Anweisung besteht aus dem reservierten Wort inline gefolgt von iner oder mehreren Konstanten Variablenbezeichnern oder Kommandoz hler referenzen die durch Schr gstriche getrennt und in Klammern einge schlossen sind Ein Codeelement ist aus einem oder mehreren Datenelementen aufgebaut die durch oder Zeichen getrennt sind Ein Datenelement ist entweder ine integer Konstante ein Funktionsbezeichner oder ein Kommandoz hler wert Ein Kommandoz hlerwert wird als Stern geschrieben Beispiel inline 10 23 5 count 1 sort 2 Diese inline Anweisung erzeugt drei Bytes Code 34 44 und 00 Jedes Codeelement erzeugt ein Byte oder ein Wort zwei Bytes Code Der Wert eines Bytes oder Wortes wird durch Addition oder Subtraktion der Werte des Datenelementes je nach Trennungszeichen rrechnet Der Wert eines Variablenbezeichners ist di Adress oder der Offset der Variablen Der Wert ines Prozedur oder Funktionsbezeichners ist die Adress oder der Offset des Kommandoz hlers d h die Adresse an der das n chste Byte Cod rzeugt wird Ein Codeelement erzeugt ein Byte Code wenn es nur aus einer integer Konstanten besteht und wenn der Wert innerhalb des 8 Bit Bereiches 0 255 liegt Wenn der Wert au erhalb des 8 Bit Bereiches liegt oder das Codeelement sich auf ei
66. en L Letztes Suchen wiederholen KW lock auf Kassette speichern KH lock verdecken zeigen uuuuuwm w w Tabelle 1 2 Editier Kommandos In so einem Fall lernt man am besten indem man arbeitet Starten Sie Die Benutzung von KCPASCAL 11 KCPASCAL bestimmen Si ines der Programmbeispiele als Arbeitsdatei und geben Sie E ein um editieren zu k nnen Dann probieren Si di Kommandos aus so wie Sie sie lesen Jede der folgenden Beschreibungen besteht aus einer Kopfzeile die das Kommando bezeichnet gefolgt von der Angabe der Tasten die das Kommando ausf hren 1 3 3 Eine Bemerkung zu den Kontrollzeichen Alle Kommandos sind so angelegt da die Kontrollzeichen verwenden Ein Kontrollzeichen ist ein spezielles Zeichen das von Ihrer Tastatur erzeugt wird indem Si di lt CONTR gt Tast gleichzeitig mit einem Buchstaben von A bis Z dr cken Die CONTR Taste arbeitet wie die lt SHIFT gt Taste Wenn Sie lt SHIFT gt und ein A gleichzeitig dr cken erscheint auf dem Bildschirm ein A Wenn Sie die lt CONTR gt Taste und A dr cken rhalten Si in Kontroll A CONTR A 1 3 4 Bevor Sie anfangen Wie Sie wieder aufh ren k nnen Das Kommando mit dem Sie den Editor verlassen und wieder in das Hauptmen zur ckkehren k nnen ist CONTR K D Dieses Kommando sichert aber nicht automatisch die Datei Dies mu vom Men aus mit dem Save Kommando geschehen 1 3 5 Cursors
67. ente 22 3 1 Integer ganze Zahlen Integer sind ganze Zahlen die bei KCPASCAL auf einen Bereich von 32768 bis 32767 begrenzt sind Ganze Zahlen belegen zwei Bytes im Speicher 3 2 Byte Der Typ Byte ist ein Teilbereich des Typs Integer mit den Grenzen 0 und 255 Bytes sind deshalb mit dem Typ Integer kompatibel d h wann immer ein Wert vom Typ Byte erwartet wird kann ein integer Wert angegeben werden und umgekehrt au er bei der b rgabe von Parametern Weiterhin k nnen Byte und Integer in Ausdr cken gemischt werden und Byte Variable k nnen integer Wert zugewiesen bekommen Eine Variable vom Typ Byte belegt ein Byte im Speicher 3 3 Real reelle Zahlen Der Bereich reeller Zahlen Datentyp real ist 1E 38 bis 1E 38 mit einer Mantisse mit bis zu 11 signifikanten Stellen Reell Zahlen belegen 6 Bytes im Speicher Bei einer arithmetischen Operation mit reellen Zahlen verursacht ein berlauf einen Programmstop und die Anzeige eines Ausf hrungsfehlers Eine Unterschreitung der Bereichsgrenze f hrt zu einem Ergebnis von Null Obwohl der Typ real zu den skalaren Standardtypen geh rt sollte folgender Unterschied zwischen dem Typ real und anderen skalaren Typen beachtet werden 1 Die Funktionen Pred und Succ d rfen kein reellzahligen Argumente enthalten 2 Der Typ real darf nicht bei der Indexierung von Arrays verwendet werden 3 Der Typ real kann nicht
68. entyps String mu die obere Grenze der Anzahl der enthaltenen Zeichen d h die Maximalmenge angeben Die Definition besteht aus dem reservierten wort string dem in eckigen Klammern die Maximall nge folgt Diese mu eine integer Konstante zwischen 1 und 255 sein Strings haben kein voreingestellt L nge d h sie mu immer genau bestimmt werden Beispiel type FileName string 14 ScreenLine string 80 Stringvariablen besetzen den Speicher in der definierten Maximall nge und zus tzlich ein Byte f r die aktuelle L nge der Variablen Di inzelnen Zeichen eines Strings sind mit 1 beginnend ber di gesamt L nge durchnumeriert 9 2 Stringausdruck Strings werden mittels Stringausdr cken bearbeitet Diese besteht aus Stringkonstanten Stringvariablen Funktionsbezeichnern und Operatoren Das Pluszeichen kann Strings verbinden Die Funktion Concat siehe Seite 71 macht das Gleiche aber der Operator ist oft einfacher zu handhaben Sollte die L nge des entstehenden Strings gr er als 255 sein wird eine Laufzeitfehlermeldung ausgegeben Beispiel KCPASCAL Pascal KCPASCAL ee TET t a 123 456 TR TB C4 tp ABEND Die relationalen Operatoren lt gt gt lt gt lt haben in geringer Prereferenz als der Verbindungsoperator Wenn die relationalen Operatoren bei Stringoperanden angewendet werden ist das Ergebnis vom Typ Boolean T
69. er Ausf hrungsteil definiert die Aktion die vom Programm oder Unterprogramm ausgef hrt werden soll als Folge von Anweisungen engl statements Jede Anweisung spezifiziert einen Teil der Aktion In diesem Sinne ist Pascal eine sequentielle Programmiersprache Anweisungen werden zeitlich sequentiell abgearbeitet nie zugleich Der Anweisungsteil ist durch Semikolons getrennt Anweisungen k nnen einfach oder strukturiert sein 7 1 Einfache Anweisungen Einfach Anweisungen nthalten kein anderen Anweisungen Einfache Anweisungen sind die Zuweisungs Prozedur goto und leere Anweisung 7 1 1 Zuweisungsanweisung Die grundlegendst aller Anweisungen ist die Zuweisungsanweisung Sie wird verwendet um anzugeben da ein bestimmter Wert iner bestimmten Variablen zugewiesen werden soll Eine Zuweisung besteht aus einem Variablenbezeichner dem der Zuweisungsoperator und ein Ausdruck folgen Zuweisungen sind zu Variablen beliebigen Typs au er Dateien m glich solange die Variable und der Ausdruck vom selben Typ sind Als Ausnahme davon kann bei einer Real Variablen der Ausdruck Integer sein Beispiele Angle Angle Pi Actessok False Entry Answer Password SpherVol 4 PL R R 7 1 2 Prozedur Anweisung Die Prozedur Anweisung dient dazu eine zuvor vom Benutzer definierte oder eine vordefinierte Standardprozedur zu aktivieren Die Anweisung besteht aus eine
70. er nur innerhalb des Bereichs von RowSum verf gbar Das folgende Programm ist das klassische Demonstrationsbeispiel f r den Gebrauch einer rekursiven Funktion zur Berechnung des Faktors einer ganzen Zahl SA program Factorial Var Number Integer function Factorial Value Integer Real begin if Value 0 then Factorial 1 else Factorial Value Factorial Value 1l end begin Read Number Writeln Number Factorial Number end Prozeduren und Funktionen 73 Beachten Sie da der Typ der in der Definition des Funktionstyps benutzt wird zuvor als Typbezeichner spezifiziert sein mu Deshalb ist function LowCase Line UserLine string 80 nicht zul ssig Stattdessen sollte ein Typenbezeichner mit dem Typ string80 verbunden sein und dann dazu benutzt werden den Ergebnistyp der Funktion zu definieren z B type Stro string 86 function LowCase Line UserLine Str80 Wegen der Implementation der Standardprozeduren Write und Writeln darf eine Funktion die die Standardprozeduren Read Readln Write und Writeln benutzt nie durch einen Ausdruck innerhalb einer Write oder Writeln Anweisung aufgerufen werden Dies gilt auch f r die Standardprozeduren Str und Val 16 3 2 Standardfunktionen Die folgenden Standardfunktionen sind in KCPASCAL implementiert 1 String Behandlungsfunktionen beschrieben auf Seite 71 ff 2 Datei Handhabungsfunktionen beschrieben auf Seite 9
71. erschiede werden im folgenden beschrieben Beachten Sie da die Erweiterungen die KCPASCAL anbietet hier nicht erl utert sind D 1 Dynamische Variablen Dynamische Variablen und Zeiger benutzen die Standardprozeduren New Mark und Release statt der New und Dispose Prozeduren di von Standard Pascal vorgeschlagen werden Diese Abweichung vom Standard ist vor allem weit ffizienter bez glich der Ausf hrungsgeschwindigkeit und des be n tigten Codes au erdem bietet sie Kompatibilit t mit anderen weitver breiteten Pascalcompilern z B UCSD Pascal D 2 Rekursion Wegen der Art wie lokale Variablen w hrend der Rekursion behandelt werden darf eine zu einem Unterprogramm lokale Variable nicht als var Parameter in rekursive Aufrufe bergeben werden D 3 Get und Put Die Standardprozeduren Get und Put sind nicht implementiert Dateiarbeit ist nicht m glich D 4 Goto Anweisungen Eine Goto Anweisung darf den aktuellen Block nicht verlassen D 5S Page Prozedur Die Standardprozedur Page ist nicht implementiert da das CP M Betriebs system kein Seitenvorschubzeichen definiert D 6 Gepackte Variablen Das reservierte Wort packed hat in KCPASCAL keine Wirkung aber es ist dennoch erlaubt weil Packung automatisch vorgenommen wird wo immer es m glich ist Aus demselben Grund sind die Standardprozeduren von Pack und Unpack nicht implementiert ANHANG 94 D 7
72. es Cursors Der Block der kopiert wurde bleibt unver ndert der neue Block besitzt ebenfalls die Markierungen Verschieben eines Blockes CONTR K V Dieses Kommando verschiebt den markierten Block an di Stell des Cursors Die urspr ngliche Stelle ist daraufhin leer Der Block besitzt an seiner neuen Position noch die Markierungen L schen eines Blocks CONTR K Y Dieses Kommando l scht einen markierten Block Dieser Vorgang ist nicht r ckg ngig zu machen seien Sie also vorsichtig Die Benutzung von KCPASCAL 16 Lesen eines Blockes aus einer Datei CONTR K R Dieses Kommando liest in Datei von Kassette und f gt sie an der aktuellen Cursorposition in den Text ein Der ingelesen Block ist markiert Wenn dieses Kommando gegeben wird werden Sie aufgefordert den Namen der inzulesenden Datei anzugeben Jeder legal Dateiname ist m glich PAS wird automatisch dazugeschrieben Eine Datei ohne Typenbezeichnung hat nach dem Namen einen Punkt Schreiben eines Blockes in eine Datei CONTR K W Dieses Kommando speichert einen markierten Block als Datei ab Der Block wird unver ndert gelassen die Markierungen verbleiben an ihrer Stelle Wenn dieses Kommando eingegeben wird werden Sie nach dem Namen der Datei gefragt 1 3 8 Weitere Editier Kommandos Beenden des Editierens CONTR K D Dieses Kommando beendet das Editieren und f hrt zum Hauptmen zur ck Das Editieren fand ausschlie lic
73. esetzten h herwertigen Byte aus Das Ergebnis ist integer 16 3 2 4 4 Random Gibt eine Zufallszahl gr er oder gleich Null und kleiner Eins aus Der Typ ist real 16 3 2 4 5 Random Num Syntax Random Num Gibt eine Zufallszahl gr er oder gleich Null und kleiner als Num aus Num und die Zufallszahl sind beide integer 16 3 2 4 6 Sizeof Syntax SizeOf Name Gibt die Zahl der durch die Variable oder den Typ Name im Speicher belegten Bytes aus Das Ergebnis ist integer Prozeduren und Funktionen 77 16 3 2 4 7 Swap Syntax Swap Num Die Swap Funktion Austauschfunktion tauscht die nieder und h herwertigen Bytes des ganzzahligen Arguments Num aus und gibt den Ergebniswert als ganze Zahl aus Beispiel Swap 1234 ergibt 3412 Werte im Hex Code 16 3 2 4 8 UpCase Syntax UpCase ch Gibt das gro geschriebene quivalent des Arguments ch an das vom Typ Char sein mu Falls kein gro geschriebenes quivalentes Zeichen existiert wird das Argument unver ndert ausgegeben 16 4 Forward Referenzen Ein Unterprogramm ist forward deklariert indem sein Kopf getrennt vom Block spezifiziert ist Dieser separate Unterprogrammkopf ist exakt wie der normale Kopf er wird nur mit dem reservierten Wort forward abgeschlossen Der Block folgt sp ter innerhalb desselben Deklarierungs teils Beachten Sie da der Block von einer Kopie des Kopfes eingeleitet wird die nur den Namen und keine
74. f folgt das reservierte Wort do und eine Anweisung Innerhalb einer with Anweisung ist in Feld lediglich durch den Feldbezeichner bestimmt und nicht durch den Variablenbezeichner des Records with Salary do begin Individual NewEmployer Cost StandardRates end Records k nnen innerhalb einer with Anweisung geschachtelt werden d h da Records wie folgt er ffnet werden k nnen with Salary Individual ID do begin FamilyName Smith ChristianNamesl James end Dies entspricht with Salary do with Individual do with ID do Arrays 49 11 3 Varianten variant records Die Syntax eines Records erlaubt auch die Verwendung von Varianten d h von alternativen Strukturen bei denen sich die Recordfelder aus einer unterschiedlichen Anzahl und unterschiedlichen Typen von Komponenten zusammensetzen Das h ngt gew hnlich vom Wert eines Variantenmarkier feldes engl tag field ab Ein Variantenvorteil besteht aus dem Variantenmarkierfeld eines zuvor definierten Typs dessen Wert die jeweilige Variante bestimmt Ihm folgen Labels die jedem m glichen Wert des Variantenmarkierfeldes entsprechen Jedes Label steht einer Auflistung der Felder voran die entsprechenden Variantentyp definiert Angenommen es sei folgender Typ gegeben Origin Citizen Alien Hinzu kommen die Datentypen Name und Date Nachstehender Record erlaubt nun dem Feld Citi
75. finiert mit dem Unterschied da die Definition nicht nur den Wert sondern auch den Typ angibt In der Definition folgen dem Bezeichner der typisierten Konstanten ein Doppelpunkt und der Bezeichner des Datentyps Danach steht ein Gleichheitszeichen und die aktuelle Konstante 13 1 Unstrukturierte typisierte Konstanten Eine unstrukturierte typisierte Konstante ist wie ein skalarer Datentyp definiert const NumberOfCars Integer 1267 Interest Real 12 67 Heading string 7 SECTION Xon Char p Im Unterschied zu nicht typisierten k nnen typisierte Konstanten anstelle von Variablen als Variablenparameter einer Prozedur oder Funktion stehen Da eine typisierte Konstante in Wirklichkeit eine Variable mit konstantem Wert ist kann sie nicht in der Definition anderer Konstanten oder Typen verwendet werden Sind Min und Max typisierte Konstanten ist folgender Konstrukt nicht zul ssig const Min Integer 0 Max Integer 30 type Range array Min Max of integer 13 2 Strukturierte typisierte Konstanten Strukturierte Konstanten umfassen Array Konstanten Record Konstanten und Mengenkonstanten Sie werden oft f r initialisierte Tafeln und Mengen im Testbereich f r Umwandlungen und f r Mappingfunktionen benutzt Die folgenden Abschnitte beschreiben jeden einzelnen Typ im Detail 13 2 1 Array Konstanten Die Definition einer Array Konstanten besteht aus dem Konstantenbezeich ner ein
76. fung vorgenommen Ein I O Fehler ruft dann keinen Programmabbruch hervor jedoch werden alle weiteren I O Operationen unterbunden bis die Standardfunktion lOresult aufgerufen wird Diese Funktion stellt den Zustand vor Auftreten des Fehlers wieder her und Eingabe Ausgabe kann wieder stattfinden Es obliegt dem Pro grammierer den I O Fehler zu beheben Antwortet IOresult mit einer Null zeigt dies den fehlerfreien Ablauf einer Operation an Jede andere Antwort bedeutet da die letzt I O Operation fehlerhaft war Im Anhang I sind all Fehlermeldungen und ihre Codes aufgelistet Beachten Sie da Typisierte Konstanten 6 bei Aufruf von IOresult der Zustand vor Auftreten des Fehlers hergestell 0 Lt wird Erneute Aufrufe von lOresult werden solange die Antwort Nu erzeugen bis der n chste I O Fehler auftritt L1 Zeiger Typen 61 15 Zeiger Typen Pointer Die bisher diskutieren Variablen waren statischer Natur d h ihre Form und Gr e ist vorbestimmt und wird w hrend der gesamten Bearbeitung des Abschnitts f r den sie definiert wurden aufrechterhalten Oft erfordern Programme jedoch eine Datenstruktur die w hrend der Bearbeitung in Form und Gr e ver nderlich sein sollte Diesem Zweck dienen dynamische Variablen Sie k nnen bei Bedarf aufgerufen werden und entfallen wenn sie nicht mehr ben tigt werden Diese dynamischen Variablen werden nicht wie die statische
77. gen siehe unten Output Die Outputdatei erster Ordnung Diese Datei ist entweder dem CON Ger t oder dem TRM Ger t zugeordnet weiter Er l uterungen siehe unten Con Der Konsole zugeordnet CON Trm Dem Terminal zugeordnet TRM Kba Der Tastatur zugeordnet KBD Lst Dem Ausgabeger t Drucker zugeordnet LST Aux Alternativ verwendbar AUX Usr Dem Benutzer zugeordnet USR Wenn Eingaben nicht automatisch auf dem Bildschirm angezeigt werden sollen sollten sie von der Standarddatei KBD aus gemacht werden Read kbd var Da die Standarddateien Input und Output sehr h ufig benutzt werden werden sie durch die Voreinstellung automatisch gew hlt falls kein Datentyp definiert wird Die folgende Tabelle zeigt die Textdateioperationen und ihre Entsprechungen Write Ch Write Output Ch Read Ch Read Input Ch Writeln Writeln Output Readln Readln Input Typisierte Konstanten 58 14 3 Read Prozedur Di Read Prozedur rm glicht die Eingabe von Buchstaben Strings und Zahlen Die Syntax der Raed Anweisung ist Read Varl Var es WarN oder Read FilVar Varl Vak se VarN wobei Varl Var2 VarN Variable vom Typ Char Strings Integer oder Real sind Im ersten Fall sind die Variablen Eingaben von der Standard datei Input gew hnlich der Tastatur im zweiten Fall sind die Variablen Eingaben von einer Textdatei die vorher zum FilVar erkl rt
78. ger oder real sein das Ergebnis ist real 16 3 2 1 8 Sin Syntax Sin Num Gibt den Sinus von Num aus Das Argument wird im Bogenma ausgedr ckt es mu entweder integer oder real sein das Ergebnis ist real 16 3 2 1 9 Sqr Syntax Sqr Num Gibt das Quadrat von Num Num Num aus Das Argument Num mu entweder integer oder real sein das Ergebnis ist vom selben Typ wie das Argument 16 3 2 1 10 Sqrt Syntax Sqrt Num Gibt die Wurzel von Num aus Das Argument Num mu entweder integer oder real sein Prozeduren und Funktionen 75 16 3 2 2 Skalar Funktionen 16 3 2 2 1 Pred Syntax Pred Num Gibt den Vorg nger von Num aus falls dieser existiert Num ist ein beliebiger skalarer Typ 16 3 2 2 2 Succ Syntax Succ Num Gibt den Nachfolger von Num aus falls dieser existiert Num ist ein beliebiger skalarer Typ 16 3 2 2 3 Odd Syntax Odd Num Gibt den Bool schen Wahrheitswert True an wenn Num eine ungerade Zahl ist und False wenn Num eine gerade Zahl ist Num mu integer sein 16 3 2 3 Transfer Funktionen Die Transfer Funktionen werden gebraucht um di Wert ines skalaren Typen in die eines anderen umzurechnen Zus tzlich zu den folgenden Funktionen dient auch die auf Seite 65 beschriebene retype M glichkeit zu diesem Zweck 16 3 2 3 1 Chr Syntax Chr Num Gibt das Zeichen mit dem ordinalen Wert der durch den ganzzahligen Ausdruck Num gegeben ist an Be
79. h im Arbeitsspeicher statt Um nun die ditierte Datei abzuspeichern mu entweder das Kommando Save aus dem Hauptmen verwendet werden oder es geschieht automatisch in Verbindung mit einer Compilierung oder der Definition einer neuen Arbeitsdatei Tabulierung TAB CONTR I Der Editor von KCPASCAL hat kein festgesetzten Tabulatorpositionen Stattdessen werden die Tabulierungen automatisch zu Beginn jedes Wortes auf der Zeile ber dem Cursor gesetzt Dies ist besonders n tzlich beim Editieren von Programmen wo Sie oft Spalten zueinander in Beziehung stehender Punkte aufbauen wollen z B die Deklarierung von Variablen und hnliches Denken Si daran da Pascal Ihnen erlaubt besonders sch ne Q P I uelltexte zu schreiben Tun Sie es nicht aus Purismus sondern um Ihre rogramme leichtverst ndlich und bersichtlich zu gestalten Das hilft hnen falls Sie diese nach einiger Zeit ver ndern m ssen Automatische Tabulierung an aus CONTR QO I Die Einrichtung f r automatische Tabulierung falls sie eingeschaltet ist wiederholt die Spalten der vorhergehenden Zeile d h wenn Sie ein lt ENTER gt ingeben geht der Cursor nicht zum Zeilenanfang sondern zur rsten benutzten Spalte der dar berstehenden Zeile Wenn Si ine ander Spalte w nschen benutzen Si lediglich eines der Kommandos zur Cursorsteuerung links rechts Wenn die automatische Tabulierung eingesc
80. haltet ist erscheint in der Statuszeile des Editors Tab ansonsten wird nichts angezeigt In der Voreinstellung ist die Tabulierungsfunktion aktiv Zeilensicherung CONTR O L Dieses Kommando erlaubt alle nderungen in einer Zeile r ckg ngig zu machen Unabh ngig von der Art der Anderung wird diese Zeile in ihrem Die Benutzung von KCPASCAL 17 urspr nglichen Zustand erscheinen falls sie in der Zeile geblieben sind Aus diesem Grund ist bei Verwendung des L sch Kommandos CONTR Y delete line di Zeil unwiderruflich verloren Wenn Si ines Tages auf der CONTR Y Taste einschlafen hilft nur eine lange Arbeitspause Finden CONTR O F Dieses Kommando gibt Ihnen die M glichkeit einen String von max 30 Zeichen zu suchen Wenn Si s eingeben wird die Statuszeile gel scht und Sie werden aufgefordert einen Suchstring einzugeben Machen Sie dies und dr cken Sie anschlie end lt ENTER gt Der Suchstring kann alle Zeichen auch Kontrollzeichen enthalten Kontrollzeichen werden in den Suchstring mittels des CONTR P Pr fix eingegeben Wenn Sie z B ein CONTR A eingeben wollen dr cken Sie die lt CONTR gt Taste und gleichzeitig erst P dann A Um in den String das Kommando lt ENTER gt einzugeben tippen Sie CONTR M CONTR J Beachten Sie da CONTR A eine besondere Bedeutung hat es steht f r jedes Zeichen und dient damit quasi als Joker in Suchstrings Suchstrings k nnen
81. hlt das folgende Men an in dem Si inige vorein gestellte Werte des Compilers sehen und ver ndern k nnen Es ist auch beim Finden von Laufzeitfehlern in Programmen die in Objketcode Dateien compiliert sind hilfreich compile Memory Com File command line Parameter Find run time error Quit Bild 17 1 Optionen Men 17 1 1 Memory Com Datei Die drei Befehle M C und H steuern die Verarbeitungsart der Quelle und die Abfrage des erzeugten Objekt Codes durch den Compiler Memory Arbeitsspeicher ist der voreingestellte Modus Der Code wird im Speicher erzeugt und behalten Das Programm kann dann direkt vom Speicher aus durch den Run Befehl ausgef hrt werden Com File wird durch Eingabe C gew hlt und durch den Pfeil angezeigt Der Code wird im Falle der Aktivierung auf eine Datei mit demselben Namen wi die Arbeitsdatei oder Hauptdatei falls angegeben als COM File geschrieben Diese Datei enth lt den Objekt Code und die Pascal runtime library Programme die auf diese Weise compiliert werden k nnen gr er sein als im Speicher compilierte Programme da der Objekt Code selbst keinen Speicherplatz w hrend der Compilierung braucht und bei einer niedrigen Adresse beginnt Wenn der Com Modus gew hlt wird erweitert sich das Men um folgende zwei Zeilen Start adress XXXX min YYYY End address XXXX max YYYY Bild 17 2 Start und Endadressen Weitere
82. hol letzt Suchfunktion CONTR L kann die Suche wiederholt werden Suchen und Ersetzen CONTR Q A Das Suchen und Ersetzen Kommando erlaubt Ihnen ine Zeichenkombination von max 30 Zeichen zu suchen und durch eine Kombination mit ebenfalls bis zu 30 Zeichen zu ersetzen Wenn Sie das Kommando eingeben wird die Die Benutzung von KCPASCAL 18 Statuszeile gel scht und Sie werden aufgefordert den Suchstring einzu geben Machen Sie dies und dr cken Sie lt ENTER gt Zur Eingabe von Kontrollzeichen m ssen Sie den CONTR P Pr fix voranstellen z B Sie geben CONTR A ein indem Sie die lt CONTR gt Taste und gleichzeitig erst P und dann A dr cken Das Editieren des Strings und der Abbruch der Operation entsprechen dem beim Finden Kommando beschriebenen Vorgehen Suchstrings k nnen mit den Kommandos Zeichen links Zeichen rechts Wort links und Wort rechts editiert werden Wort rechts bringt den vorherigen Suchstring zur ck der dann editiert werden kann Die Suche wird mit dem Abbruch Kommando CONTR U abgebrochen Wenn der Suchstring bestimmt ist werden Sie aufgefordert den String inzugeben der diesen ersetzen soll Bis zu 30 Zeichen sind m glich Die Eingabe von Kontrollzeichen und das Editieren geht wie oben beschrieben Beachten Si aber da CONTR A kein besonder Bedeutung in einem Suchstring hat Wenn Sie nur lt ENTER gt eingeben wird der gefundene String durch nichts ersetzt
83. ie Variable die auf dem u eren Level deklariert wurde die globale Variable wird unzug nglich Beispiel var Result Intermediate SubTotal Real Te Jyp Xy i Integer Accepted Valid Boolean Period Day Buffer array 0 127 of Byte 5 2 5 Prozedur und Funktions Deklarationsteil Eine Prozedurdeklarierung dient dazu eine Prozedur innerhalb einer gegenw rtigen Prozedur oder eines Programms zu definieren siehe Seit 131 Eine Prozedur wird von einer Prozedur Anweisung aktiviert siehe Seite 56 Nach Abschlu der Prozedur geht die Programmausf hrung mit der Anweisung weiter die unmittelbar auf die aufrufende Anweisung folgt Eine Funktionsdeklarierung dient dazu einen Programmteil zu definieren der einen Wert berechnet und ausgibt siehe Seite 137 Eine Funktion wird aktiviert wenn ihr Bezeichner engl designator als ein Teil eines Ausdrucks angetroffen wird siehe Seite 54 5 3 Anweisungsteil Der Anweisungsteil ist der letzte Teil eines Blocks Er spezifiziert die vom Programm auszuf hrenden Aktionen Der Anweisungsteil hat die Form einer zusammengesetzten Anweisung der ein Absatz oder ein Semikolon folgt Eine zusammengesetzte Anweisung besteht aus dem reservierten Wort begin es folgt eine Liste von Anweisungen getrennt durch Semikolons und wird durch das reservierte Wort end abgeschlossen Ausdr cke 29 6 Ausdr cke Ausdr cke engl expressions s
84. ind algorithmische Konstrukte die Regeln f r die Berechnung von Werten angeben Sie bestehen aus Operanden d h Variablen Konstanten und Funktionsbezeichnern die mittels Operatoren kombiniert werden Dieser Abschnitt beschreibt wie Ausdr cke aus den skalaren Standardtypen Integer Real Boolean und Char gebildet werden Ausdr cke die die deklarierten skalaren Typen String Typen und Set Typen enthalten werden auf den Seiten 63 67 und 86 in dieser Reihenfolge beschrieben 6 1 Operatoren Operatoren fallen in f nf Kategorien die hier nach ihrer Priorit t geordnet sind 1 Monadisches Minus Minus mit nur einem Operanden 2 Not Operator 3 Multiplikations Operator div mod and shl shr 4 Additions Operatoren or und xor 5 Relationale Operatoren lt gt lt gt lt gt und in Folgen von Operatoren derselben Priorit t werden von links nach rechts berechnet Ausdr cke in Klammern werden zuerst berechnet unabh ngig von vorausgehenden oder nachfolgenden Operatoren Wenn beide Operanden eines Multiplikations oder Additionsoperators vom Typ Integer sind dann ist das Ergebnis ebenfalls Integer Wenn einer oder beide der Operanden vom Typ Real ist sind ist auch das Ergebnis vom Typ Real 6 1 1 Monadisches Minus Das monadische Minus bezeichnet eine Negation seines Operanden dieser kann vom Typ Real oder Integer sein 6 1 2 Not Operator Der
85. ine Stringvariable Schreibparameter sind Ausdr cke mit speziellen Formatierbefehlen siehe Seite 111 Wenn I den Wert 1234 hat gilt Str I 5 St St erh lt den Wert 1234 Wenn X den Wert 2 5E4 hat gilt Str X 10 0 St St erh lt den Wert 2500 Achtung Eine Funktion di di Str Prozedur benutzt darf nie durch einen Ausdruck in einer Write oder Writeln Anweisung aufgerufen werden 9 4 4 Val syntax Val st Var Code Val wandelt den Stringausdruck St in einen integer oder real Wert in Var St mu ein String sein der einen numerischen Wert ausdr ckt ntsprechend den Regeln bei numerischen Konstanten siehe Seite 43 Weder davor noch danach sind Leerzeichen erlaubt Var mu eine integer oder Real Variable sein und Cod ine integer Variable sein Wenn kein Fehler gefunden werden wird die Variable Code auf 0 gesetzt Ansonsten wird Code auf des erste fehlerhafte Zeichen gesetzt und der Wert von Var ist undefiniert Wenn St den Wert 234 hat gilt Val St I Result I erh lt den Wert 234 und Result 0 Wenn St den Wert 12x hat gilt Val St I Result I ist undefiniert und Result hat den Wert 3 Wenn St den Wert 2 5E4 hat und X eine real Variable ist gilt Val St X Result X hat den Wert 2500 und Result 0 CP M 80 Benutzer ine Funktion die die Var Prozedur benutzt darf nie durch einen Ausdruck in einer Write oder Writeln Anweisung aufgerufen
86. inweise zu Zeigern 17 8 1 MemAvail 17 8 2 Zeiger und ganze Zahlen Betriebssystem Funktionsaufrufe 17 9 1 Prozedur und Funktion Bdos 17 9 2 Die Funktion BdosHL 17 9 3 Prozedur und Funktion Bios 17 9 4 Die Funktion BiosHL 17 10 Benutzergeschriebene 1 O Treiber 17 11 Externe Unterprogramme 17 12 Inline Maschinencod Assembler Anhang A Anhang B Anhang C usammenfassung der Standardprozeduren und Funktionen 1 Ein Ausgabeprozeduren und funktionen Arithmetische Funktionen Skalare Funktionen Transferfunktionen Stringprozeduren und funktionen Heap Kontrollprozeduren und funktionen Bildschirmprozeduren und funktionen 8 Weitere Prozeduren und Funktionen NINA U PwWwMN Z A A A A A A A A Zusammenfassung der Operatoren Zusammenfassung der Compilerbefehle C 1 Achtung C 2 Allgemeine Compilerbefehle C 2 1 B I O Modusauswahl E 2 52 C NECSNHELOL S Und Controrl C C 2 3 I I O Fehlerbehandlung C 2 4 I Include Dateien LS 75 75 9 16 16 16 76 76 76 76 76 76 76 77 19 19 79 80 80 80 80 81 81 81 81 82 82 82 82 82 83 83 83 83 83 84 84 84 85 87 87 87 87 88 88 88 88 88 89 90 91 91 91 91 91 91 C 2 5 R Indexbereichspr fung E32 or MV Var Parametertyppr fung Er 227 U Benutzer Interrupt C 2 8 A Absoluter Code C 2 9 W Schachtelung von With Anweisungen C 2 10 X Arrayoptimierung Anhang D KCPASCAL
87. ispiel Chr 65 gibt das Zeichen A aus 16 3 2 3 2 Ord Syntax Ord Var Gibt die ordinal Zahl des Wertes von Var in der durch den Typ Var definierten Meng an Ord Var ist gleichbedeutend mit Integer Var siehe Seite 56 Var kann beliebigen skalaren Typs sein au er real das Ergebnis ist integer 16 3 2 3 3 Round Syntax Round Num Rundet den Wert von Num wie folgt Wenn Num gt 0 dann ist Round Num runc Num 0 5 und wenn Num lt 0 dann ist Round Num Trunc Num 0 5 Num mu real sein das Ergebnis ist integer Prozeduren und Funktionen 76 16 3 2 3 4 Trunc Syntax Trunc Num Gibt die gr te ganze Zahl kleiner gleich Num an falls Num gt 0 oder die kleinste ganze Zahl gr er gleich Num falls Num lt 0 Num mu real sein und das Ergebnis ist integer 16 3 2 4 Verschiedenartige Standardfunktionen 16 3 2 4 1 Hi Syntax Hi I Das niederwertigste Byte des Ergebnisses enth lt das h herwertigere Byt des Wertes des ganzzahligen Ausdrucks I Das h herwertig Byt des Ergebnisses ist Null Das Ergebnis ist integer 16 3 2 4 2 KeyPressed Syntax KeyPressed Gibt den Bool schen Wahrheitswert True aus falls eine Taste gedr ckt wurde Das Ergebnis erh lt man indem man ber das Betriebssystem den Status der Konsole abfragt 16 3 2 4 3 Lo Syntax Lo I Gibt das niederwertigere Byte des Wertes des ganzzahligen Ausdrucks I mit dem auf Null g
88. l User Manual an Report beschrieben wird Hinzu kommen einige Erweiterungen Absolute Adressierung der Variablen Bit Byte Manipulierung Direkter Zugriff auf die CPU und die Datenports Dynamische Strings Freie Anordnung der Sektionen innerhalb des Deklarationsteils Volle Unterst tzung des Betriebssystems Erzeugung von In line Maschinencode Logische Operationen bei ganzen Zahlen Strukturierte Konstanten Typenwandlungs Funktionen Dazu kommen viele neue Standardprozeduren und funktionen die die Hand habbarkeit von KCPASCAL erh hen In der vorliegenden Version ist Dateiarbeit mit Kassette nicht m glich 1 Die Benutzung von KCPASCAL Dieses Kapitel behandelt den Gebrauch von KCPASCAL insbesondere den integrierten Editor 1 1 Start von KCPASCAL Geben Sie das Kommando KCPASCAL auf Ihrem KC 87 ein Das System antwortet mit der folgenden Meldung KC Pascal V NNXX c W Tischer D Poenigk 1987 Bild 1 1 Einschaltmeldung Die Benutzung von KCPASCAL 7 Daraufhin erscheint das Hauptmen von KCPASCAL Work file Edit Compile Run Save Quit compiler Options Text 0 bytes 0500 0500 Frei 12615 bytes 0502 3648 gt Bild 1 2 Haupt Men Das Men zeigt Ihnen die verf gbaren Kommandos wenn Sie mit KCPASCAL arbeiten Das Kommando wird ausgef hrt wenn Si den ntsprechenden Gro buchstaben eingeben Dr cken Sie nicht lt ENTER gt da das Kommando sofort nach Eingabe des Gro
89. le ist nicht mehr rekonstruierbar Sie sollten bei der Anwendung dieses Kommandos also vorsichtig sein L schen bis zum Zeilenende CONTR QO Y L scht die Zeile von der Cursorposition bis zum Zeilenende 1 3 7 Block Kommandos Ein Textblock ist einfach ine Meng Text von inem Zeichen bis zu mehreren Seiten Ein Block wird durch eine Anfangsmarkierung Begin Block vor dem ersten Zeichen und einer Endemarkierung End Block nach dem letzten Zeichen des gew nschten Textblocks gekennzeichnet So markiert kann er nun kopiert bewegt gel scht oder abgespeichert werden Es existiert auch ein Kommando das eine auf einer Kassette befindliche Datei als Block in den Text l dt Au erdem gibt es ein spezielles Kommando das ein einzelnes Wort als Block kennzeichnet Blockanfangs Markierung CONTR K B Diese Kommando markiert den Beginn des Blocks Die Markierung selbst wird auf dem Bildschirm nicht dargestellt Blockende Markierung CONTR K K Dieses Kommando markiert das Ende des Blocks Entsprechend der Markierung f r den Blockanfang ist sie nicht sichtbar Markierung eines einzelnen Wortes CONTR K T Dieses Kommando markiert in inzelnes Wort als Block und ersetzt die Blockanfang endemarkierung die f r ein einzelnes Wort zu umst ndlich w re Kopieren eines Blockes CONTR K C Dieses Kommando kopiert den vorher markierten Block und plaziert ihn beginnend an der Position d
90. m Ausdruck dem Sortierer und einer Liste von Anweisungen denen jeweils case Label vom Typ des Sortierers vorausgehen Sie gibt an da die Anweisung deren Label dem aktuellen Wert des Sortierers entspricht ausgef hrt werden soll Wenn kein case Label den Wert des Sortierers enth lt dann werden entweder keine oder wahlweise die Anweisungen die dem reservierten Wort else folgen ausgef hrt Di lse Klausel ist eine Erweiterung von Standard Pascal Ein case Label besteht aus einer beliebigen Zahl von Konstanten oder Teilbereichen die durch Kommas getrennt sind und denen ein Semikolon folgt Ein Teilbereich wird als zwei Konstanten geschrieben die von dem Teilbereichs Begenzer getrennt werden Der Typ der Konstanten mu gleich dem Typ des Sortierers sein Die Anweisung die dem case Label folgt wird ausgef hrt wenn der Wert des Sortierers gleich einer der Konstanten ist oder in einem der Teilbereiche liegt G ltige Sortierer Typen sind alle einfachen Typen alle skalaren Typen au er reellen Zahlen Beispiele case Operator of 2 Result Answer Result t 2 Result Answer Result x T 2 Result Answer Result x Result Answer Result end Anweisung 33 case Year of Min 1939 begin Time PreWorldWar2 Writeln The world at peace end 1946 Max begin Time PostWorldWar2 Writeln Building a new world end
91. m Prozedurbezeichner wahlweise gefolgt von einer Parameterliste Diese Parameterliste ist eine Liste von Variablen oder Ausdr cken die durch Kommas getrennt und in Klammern eingeschlossen sind Wenn bei der Ausf hrung des Programms die Prozedur Anweisung erreicht wird wird die Kontrolle auf die Prozedur bertragen die Wert m glicher Parameter werden ebenfalls auf die Prozedur bertragen Wenn die Prozedur beendet ist geht die Programmausf hrung mit der Anweisung weiter die auf die Prozeduranweisung folgt Beispiele Find Name Adresse Sort Adresse UpperCase Text UpdateCustFile CustRecord Anweisung 33 7 1 3 Goto Anweisung Eine goto Anweisung besteht aus dem reservierten Wort goto auf das ein abelbezeichner folgt Sie dient dazu die weitere Verarbeitung an die Stelle im Programmtext zu bergeben die durch das Label markiert ist 7 1 4 Leere Anweisung Eine leere Anweisung besteht aus keinen Symbolen und hat keine Wirkung Sie darf vorkommen wo immer die Syntax von Pascal eine Anweisung verlangt aber keine Aktion stattfinden soll 7 2 Strukturierte Anweisungen 7 2 1 Zusammengesetzte Anweisung Eine zusammengesetzte Anweisung engl compound statment wird benutzt wenn in einer Situation mehr als eine Anweisung ausgef hrt werden soll in der die Pascal Syntax nur die Spezifikation einer Anweisung erlaubt Sie besteht aus
92. mit den Kommandos Zeichen links Zeichen rechts Wort links und Wort rechts editiert werden Wort rechts bringt den vorherigen Suchstring zur ck der dann editiert werden kann Die Suche kann mit dem Abbruch Kommando CONTR U abgebrochen werden Wenn Sie einen Suchstring angegeben haben werden Si nach den Suchoptionen gefragt Die folgenden Optionen sind verf gbar B Suche von der Cursorposition r ckw rts bis zum Beginn des Textes G Suche im gesamten Text unabh ngig von der Grundposition n n steht f r eine beliebige Zahl die Sie w hlen k nnen Suche nach dem n ten Vorkommen des Suchstrings gez hlt von der aktuellen Cursorposition U Ignorieren von Gro und Kleinschreibung d h Gro und Klein buchstaben werden gleich behandelt W Suche nach ganzen W rtern Zeichenfolgen die in W rtern eingebettet sind werden ignoriert Beispiele W Wenn der Suchstring Zeit ist wird nur das Wort Zeit gesucht Das Wort Zeitgeist w rde ignoriert werden BU Suche r ckw rts unabh ngig von Gro und Kleinschreibung Bei dem Suchstring Block werden auch blocken und BLOCKADE gefunden 125 Suche das 125 Vorkommen des Suchstrings Nach der Eingabe der Optionen tippen Sie lt ENTER gt und die Suche beginnt Wenn im Text eine Textfolge existiert die dem Suchstring entspricht stellt sich der Cursor an das Ende der Kombination Mit dem Kommando f r Wieder
93. mmando wiederholt das letzte Suchen und Ersetzen Kommando so als ob es ganz neu eingegeben worden w re Kontrollzeichen Pr fix CONTR P Der Editor von KCPASCAL erlaubt Ihnen Kontrollzeichen in eine Datei einzugeben indem Sie bei der Eingabe das Pr fix CONTR P voranstellen Die Benutzung von KCPASCAL 19 Wenn Si in einen Text in Kontrollzeichen eingeben wollen m ssen Sie zuerst CONTR P und dann das gew nschte Kontrollzeichen eingeben Abbruch CONTR U Das Kommando CONTR U erlaubt Ihnen den Abbruch jeder Operation wenn eine Eingabe m glich ist Z B bei der Abfrage Austauschen J N des Suchen und Ersetzen Kommandos benso bei der Eingabe eines Suchstrings Dateinamens Block lesen schreiben oder Grundlegende Sprachelemente 20 2 Grundlegende Sprachelemente 2 1 Grundlegende Symbole Das wesentliche Vokabular von KCPASCAL besteht aus Symbolen die in Buchstaben Zahlen und Spezialsymbol ingeteilt werden k nnen Buchstaben A bis Z a bis z und Unterstreichung zahlen 123456789 Spezialsymbole lt gt Zwischen Gro und Kleinschreibung wird keine Unterscheidung getroffen Bestimmte Operatoren und Begrenzer werden aus zwei Spezialsymbolen gebildet Zuweisungs Operator Relationaler Operator lt gt lt gt Teilbereichs Begrenzer Klammern und k nnen anstatt und verwendet werden Kommentare und k nnen ansta
94. mment 4 5 Compile Benutzerdefinierte Sprachelemente 4 1 Bezeichner 4 4 Kontrollzeichen are rbefehle 5 Programmkopf und Programmblock 5 1 Programmkopf 5 2 Deklari erungsteil Label Deklarierungsteil 5 3 Anweisungsteil Konstanten Definitionsteil Typen Definitionsteil Variablen Deklarierungsteil Prozeduren und Funktionen Deklarierungsteil NND SU PWwWHHHHOVCO OO OO OO DO WO ISIN N 21 22 22 22 22 22 23 23 23 24 24 25 25 26 26 26 26 27 27 28 28 28 6 1 8 9 10 EL 12 Ausdr cke 6 1 Operatoren 6 1 1 Monadisches Minus 6 1 2 Not Operator 6 1 3 Multiplikations Operatoren 6 1 4 Additions Operatoren 6 1 5 Relationale Operatoren 6 2 Funktionsbezeichner Anweisungen 7 1 Einfache Anweisungen 7 1 1 Zuweisungs Anweisung 7 1 2 Prozedur Anweisung 7 1 3 Goto Anweisung 7 1 4 Leere Anweisung 7 2 Strukturierte Anweisungen 7 2 1 Zusammengesetzte Anweisung 7 2 2 Bedingte Anweisung 7 2 2 1 If Anweisung 7 2 2 2 Case Anweisung 7 2 3 Wiederholende Anweisungen 7 2 3 1 For Anweisung 7 2 3 2 While Anweisung 7 2 3 3 Repeat Anweisung Skalare Datentypen und deren Teilbereich 8 1 Skalare Typen 8 2 Teilbereichstypen 8 3 Typenumwandlung 8 4 Bereichspr fung Strings 9 1 Strintyp Definition 9 2 String Ausdr cke 9 3 String Zuordnung 9 4 String Prozeduren 9 4 1 Delete 9 4 2 Insert 94 53 SEE 9 4 4 Val 9 5 Stringfunktionen 9 5 1 Copy 9 5 2 C
95. n Ein Compilerbefehl besteht aus einer ffnenden geschweiften Klammer oder gefolgt von einem Dollarzeichen unmittelbar darauf folgt ein Compilerbefehlsbuchstabe oder eine Liste von Compilerbefehlsbuchstaben die durch Kommas getrennt sind Der Compilerbefehl wird durch eine schlie ende geschweifte Klammer bzw abgeschlossen Die Syntax des Befehls oder der Liste von Befehlen ist unterschiedlich Sie ist in den ntsprechenden Kapiteln beschrieben eine Zusammenfassung der Compilerbefehle befindet sich in Anhang 3 Beispiele SR B V X Beachten Sie da vor und nach dem Dollarzeichen keine Leerzeichen erlaubt sind Programmkopf und Programmblock 26 5 Programmkopf und Programmblock Ein Pascal Programm besteht aus einem Programmkopf gefolgt von einem Programmblock Der Programmblock ist weiter unterteilt in einen Deklarierungsteil in dem alle im Programm vorkommenden Objekte definiert werden und einen Ausf hrungsteil in dem die Aktionen spezifiziert werden die mit diesen Objekten ausgef hrt werden sollen Beide werden im folgenden genau beschrieben 5 1 Programmkopf Bei KCPASCAL ist der Programmkopf nur optional und hat keine Bedeutung f r das Programm Wenn vorhanden gibt er dem Programm einen Namen und listet wahlweise die Parameter auf durch die das Programm mit der Umgebung kommuniziert Die Liste besteht aus einer Reihe von Bezeichnern die in
96. n Integer Integer Integer Integer Typ des Operanden Ergebnistyp Real Real Integer Integer Real Integer Real Real Real Real Integer Real Integer Integer Integer Integer Boolean Boolean oder Integer Integer Boolean Boolean 30 Integer Char und Byt Der Operanden der Typen Integer Ergebnistyp ist immer Boolean Real und Byte d h True oder Ausdr cke 31 False wahr oder unwahr ist gleich lt gt ungleich gt gr er als lt kleiner als gt gr er gleich lt kleiner gleich Beispiele a b ist wahr falls a gleich b a sr D ist wahr falls a ungleich b a gt bp ist wahr falls a gr er b asp ist wahr falls a kleiner b a gt ist wahr falls a gr er gleich b a lt b ist wahr falls a kleiner gleich b 6 2 Funktionsbezeichnung Die Funktionsbezeichnung engl function designator ist ein Funktionsbezeichner dem wahlweise eine Parameterliste folgt die eine oder mehrere Variable oder Ausdr cke die durch Kommas getrennt sind und von Klammern umschlossen werden nth lt Das Auftreten einer Funktionsbezeichnung aktiviert die Funktion mit diesem Namen Wenn eine Funktion keine vordefinierte Standardfunktion ist mu sie vor der Aktivierung erst deklariert werden Beispiele Round PlotPos Writeln pi Sqr R Max X lt 25 and 2 gt Sart Y Volume Radius Heigth Anweisung 32 7 Anweisungen D
97. n in bestehenden Text neuen Text einzuf gen Der bestehende Text rechts vom Cursor wird dabei weiter nach rechts verschoben Der Modus berschreiben kann gew hlt werden wenn Sie den alten Text durch einen neuen ersetzen wollen Die neu eingegebenen Zeichen ersetzen dabei die die sich gerade unter dem Cursor befinden Zwischen den Modi schalten Sie mit der Eingabe lt CONTR gt V hin und her Der aktuelle Modus wird in der Statuszeile am oberen Bildschirmrand angezeigt Linkes Zeichen l schen lt DEL gt Bewegt den Cursor um eine Stelle nach links und l scht das dort befindliche Zeichen Jedes Zeichen rechts vom Cursor rutscht gleichzeitig um eine Stelle nach links Zeichen unter Cursor l schen CONTR G L scht das Zeichen unter dem Cursor und bewegt alle Zeichen rechts davon um eine Stelle nach links Es k nnen nur Zeichen innerhalb der Zeile gel scht werden Rechtes Wort l schen CONTR T L scht das Wort rechts vom Cursor befindet sich rechts vom Cursor kein zeichen mehr in der Zeile so werden di Weiterschaltung lt ENTER gt und anschlie end die W rter der n chsten Zeile gel scht Die Benutzung von KCPASCAL 15 Zeile einf gen CONTR N F gt an der Cursorposition in neu Zeil in ohne den Cursor zu bewegen Zeile l schen CONTR Y L scht die Zeile in der sich der Cursor befindet und bewegt alle Zeilen darunter um eine Zeile nach oben Eine gel schte Zei
98. n mittels einer Variablendeklarierung aufgerufen und sie lassen sich nicht ber einen Bezeichner direkt zitieren Stattdessen wird eine besondere Variable die die Speicheradresse der Variablen enth lt benutzt um auf die Variable zu zeigen Diese besondere Variable hei t Zeigervariable 15 1 Definition der Zeigervariablen Ein Zeigertyp wird durch das Zeigersymbol definiert dem der Typenbezeichner der dynamischen Variablen folgt der durch eine Zeiger variable dieses Typs zitiert werden kann Im Folgenden wird gezeigt wie Records mit verwandten Zeigern angelegt werden k nnen Der Typ PersonPointer ist definiert als Zeiger von Variablen des Typs PersonRecord type PersonPointer PersonRecord PersonRecord record Name string 50 Jobs sering 50 Next PersonPointer end Var FirstPerson LastPerson NewPerson PersonPointer Die Variablen NextPerson LastPerson und NewPerson sind jene Zeigervariablen die auf Records vom Typ PersonRecord zeigen k nnen Wie man sieht kann sich die Typenbezeichnung in einer Definition vom Typ Zeiger auf eine Bezeichnung beziehen die noch nicht definiert wurde 15 2 Zuordnung von Variablen NEW Bevor irgendwelche von diesen Zeigervariablen benutzt werden mu man nat rlich einige Variablen haben auf die man zeigen kann Neue Variablen egal von welchem Typ werden mit der Standardprozedur New be zeichnet Diese Prozedur hat einen Parameter der
99. nd alle skalaren Typen au er Real 31 Einfacher Ausdruck erwartet 32 Stringkonstante erwartet 33 Stringausdruck erwartet 34 Stringvariable erwartet 35 Textdatei erwartet 36 Typenbezeichner erwartet 37 Untypisierte Datei erwartet 40 Undefiniertes Label Eine Anweisung weist auf ein undefiniertes Label hin 41 Unbekannter Bezeichner oder Syntaxfehler Unbekannt Label Konstante Type Variable Feldbezeichner oder Syntaxfehler in der Anweisung 42 Undefinierter Zeigertyp in vorhergehenden Typdefinitionen Eine vorhergehende Zeigertypdefinition enth lt einen Verweis auf inen unbekannten Typenbezeichner ANHANG 95 43 44 45 46 47 48 49 50 ol 52 53 54 99 56 SH 58 60 61 62 63 64 65 66 67 68 69 70 71 72 Doppelter Bezeichner oder doppeltes Label Dieser Bezeichner oder dieses Label wurde schon in dem laufenden Block verwendet Unpassende Typen 1 Inkompatibler Typ einer Variablen oder eines Ausdrucks in einem Zuweisungsstatement 2 Inkompatibler Typ von aktuellem und formalem Parameter in einem Unterprogrammaufruf 3 Typ des Ausdrucks ist inkompatibel mit dem Indextyp in der Arrayzuweisung 4 Die Typen von Operanden in einem Ausdruck sind nicht kompatibel Konstante au erhalb der Grenze Konstanten und CASE Selektortyp passen nicht zusammen Typ des Operanden pa t nicht zum Typ z B A div 2 Ung ltiger Ergebnistyp G ltige Typen sind alle Skalar String und Zeigertypen Ung
100. nen Variablen Prozedur oder Funktions bezeichner bezieht oder das Codeelement einen Kommandoz hlerwert enth lt wird ein Wort Code das niedrigste Byte steht zuerst erzeugt Die Zeichen lt und gt k nnen verwendet werden um di oben beschrieben automatische Gr enwahl zu berschreiben Wenn das Codeelement mit dem Zeichen lt beginnt wird nur das wenigst signifikante Byte des Werts codiert auch wenn es sich um inen 16 Bit Wert handelt Wenn das Codeelement mit dem Zeichen gt beginnt wird immer eine Wort codiert auch wenn das niedrigste Byte 0 ist Das folgende Beispiel einer inline Anweisung generiert den Maschinencode der alle Zeichen in ihrem Stringargument in Gro buchstaben umwandelt Type Str String 259 procedure UpperCase Var Strg str SA begin inline S2A strg LD HL Strg Weitere Besonderheiten 86 s04 INC B s05 Lli DEC B SCA 20 JP ALa s23 INC HL 7E LD A HL SFE S61 CP tat DA 9 JP El 3 SFE STB CP at D2 14 JP NELLI D6 207 SUB 20H 277 LD HL A PCa 20 7 JP L1 L2 EQU S end Inline Anweisungen k nnen innerhalb des Anweisungsteils eines Blockes jederzeit mit anderen Anweisungen gemischt werden und sie k nnen all Register der CPU benutzen Beachten Sie da der Inhalt eines Stackzeiger Registers SP am Ein und Ausgang einer inline Routine der gleiche sein mu AN
101. nerhalb des Bereichs der vom Benutzer festgelegten Prozedur 16 2 1 Prozedurdeklarierung Die Prozedurdeklarierung besteht aus einem Prozedurkopf gefolgt von einem Block der aus inem Deklarierungsteil und einem Anweisungsteil besteht Der Prozedurkopf besteht aus dem reservierten Wort procedure gefolgt von einem Bezeichner f r den Namen der Prozedur Wahlweise gefolgt von einer formalen Parameterliste wie auf Seite 127 beschrieben Beispiele procedure LogOn procedure Position X Y Integer procedure Compute Var Data Matrix Scale Real Der Deklarierungsteil einer Prozedur hat die gleiche Form wie der eines Programms Alle Bezeichner die in der formalen Parameterliste und dem Deklarierungsteil deklariert sind beziehen auf di jeweilige Prozedur und die darin eingebundenen Prozeduren Au erhalb dieses Bezugsrahmens ist der Bezeichner nicht bekannt Eine Prozedur kann sich auf jede Konstante Variable Prozedur oder Funktion beziehen die in einem anderen Block steht Der Anweisungsteil spezifiziert die auszuf hrende Aktion wenn die Prozedur aufgerufen wird und hat die Form einer gesamten Befehlszeile siehe Seite 57 Wenn der Prozedurbezeichner innerhalb des Anwendungs teils selbst benutzt wird wird die Prozedur rekursiv ausgef hrt nur CP M 80 Benutzer Beachten Sie da der A Compilerbefehl A passiv sein mu Rekursion siehe auch Anhang C Das n chste
102. not Operator negiert kehrt den logischen Wert seines Boolschen Operanden um not True False not False True KCPASCAL erlaubt auch die Anwendung des not Operators auch auf einen integer Operanden in diesem Fall findet eine bitweise Negation statt Beispiele notO 1 not 15 14 not 32345 SDCBA Ausdr cke 6 1 3 Multiplikations Operatoren Operator wirkung u Multiplikation Multiplikation Multiplikation Division Division Division div Integer Division mod Modulus and arithmet und and logisches und shl verschieben links shr verschieben rechts Beispiele 12 34 408 123 74 30 75 123 diy 4 30 12 med 5 2 True und False False 12 and 22 4 2 8hl 7 256 256 SHE 7 2 6 1 4 Additions Operatoren Operator Wirkung Addition Addition Addition Subtraktion Subtraktion Subtraktion or arithmet oder or logisches oder xor arithmet exclusiv xor log exclusiv oder Beispiele 123 456 579 456 123 0 333 0 True or False True 12 or 22 30 True xor False True 12 xor 22 26 6 1 5 Relationale Operatoren Relational Real Boolean k nnen gemischt werden Operatoren gelten f r alle skalaren Standardtypen Typ des Operanden Ergebnistyp Real Real Integer Integer Real Integer Real Real Integer Real Integer Real Real Real Integer Integer Integer Integer Integer Integer Boolean Boolea
103. nt im Unterschied zu solchen mit Variantenmarkierfeld discriminated unions Die freien Verbindungen werden nicht mehr h ufig angewandt und unerfahrene Programmierer sollten sie meiden Mengen 51 12 Mengen Eine Menge set ist eine Zusammenfassung mehrerer Objekt des selben Typs die als Ganzes gedacht werden Jedes einzelne Objekt einer solchen Menge wird Element member element genannt Einige Beispiele 1 Alle integer Zahlen zwischen 1 und 100 2 Alle Buchstaben des Alphabets 3 Alle Konsonanten des Alphabets Zwei Mengen sind nur dann gleich wenn auch ihre Elemente die gleichen sind Es gibt in ihnen keine Rangordnung do da die Mengen 1 3 5 1 5 3 und 5 3 1 gleich sind Wenn die Element iner Menge auch die Meng iner anderen sind gilt di rst Meng als in der zweiten nthalten Bei obigem Beispiel 3 in 2 enthalten Mit Mengen kann man auf drei verschiedene Arten rechnen hnlich der Addition der Subtraktion und der Multiplikation mit Zahlen Die Vereinigung union sum zweier Mengen A und B geschrieben A B ist die Menge deren Element ntweder in A oder in B enthalten sind Die Vereinigung von 1 3 4 5 7 und 2 3 4 ist 1 2 3 4 5 7 Der Durchschnitt intersection product zweier Mengen A und B geschrieben A B ist die Menge die in den beiden Mengen gemeinsam ist Der Durchschnitt von 1 3 4 5 7 und 2 3 4 ist 3 4 Die Differenz oder d
104. oncat 9 5 3 Length 9 5 4 Pos Arraytyp 10 1 Arraydefinition 10 2 Multidimensionale Arrays 10 3 Zeichenarrays 10 4 Vordefinierte Arrays Recordtyp 11 1 Recorddefinition 11 2 WHITH Anweisung 11 3 Varianten Records Mengentyp 12 1 Mengen Typdefinition 12 2 Mengen Ausdr cke 12 2 1 Angabe der Menge 12 2 2 Mengen Operatoren 12 3 Mengen Zuweisung 29 29 29 29 29 30 30 31 32 32 32 32 33 33 33 33 33 33 34 33 35 35 35 ST SSH SSH SSH Sort SG Sr St SER SSH Seen SSR Sr SS DWWWWOWOPNDDNDHHHTHOOO DB BB B Nana On un OONN 13 14 15 16 Typisierte Konstanten 13 1 13 2 Ein 14 14 14 14 14 14 14 JOOU NDH Zeiger Typen 1551 Las 1B 15 19 15 Los LS ou gt WM Unstrukturierte typisierte Konstanten Strukturierte typisierte Konstanten 13 2 1 Array Konstanten 13 2 2 Multidimensionale Array Konstanten 13 2 3 Record Konstanten 13 2 4 Mengen Konstanten und Ausgabe Logische Ger teeinheiten Standarddateien Read Prozedur ReadLn Prozedur Write Prozedur WriteLln Prozedur I O Fehlerroutinen Definition einer Zeigervariablen Zuordnung von Variablen New Mark und Release Die Benutzung von Zeigern Dispose GetMem FreeMem MaxAvail Prozeduren und Funktionen 16 1 16 2 16 3 Parameter 16 1 1 Lockerung der Parametertyp berpr fung 16 1 2 Nichttypisierte Variablenparameter Prozeduren 16 2 1 Prozedurdeklarierung 16 2 2 Stan
105. ormalen Parameter Dabei ist die Wirkung auf die aktuellen Parameter jeweils unterschiedlich Wenn Parameter ber den Wert bergeben werden ntspricht der formale Parameter einer logischen Variablen im Unterprogramm und Ver nderungen der formalen Parameter haben keine Auswirkung auf aktuelle Parameter Der aktuelle Parameter kann jeder beliebige Ausdruck sein der vom selben Typ ist wi der ntsprechend formale Parameter einschlie lich einer Variablen Solche Parameter hei en Wertparameter und werden wie im folgenden Beispiel im Unterprogramm deklariert Dieses und das n chste Beispiel zeigen Prozedur berschriften Funktions berschriften unter scheiden sich etwas davon und sind auf Seite 137 beschrieben procedure Example Numl Num2 Number Strl Str2 Txt Number und Txt sind vorher definiert Typen ZB integer oder string 255 und Numl Num2 Strl und Str2 sind formale Parameter an di der Wert der aktuellen Parameter bergeben wird Die Typen von formalen und aktuellen Parametern m ssen bereinstimmen Beachten Sie da der Typ des Parameters im Parameterteil so wie ein vorher definierter Typenbezeichner angegeben werden mu Deshalb ist die Angabe procedure Select Model array 1 500 of integer nicht erlaubt Stattdessen sollte der gew nschte Typ in der type Definition des Blocks definiert werden und der Typenbezeichner sollte dann in der Parametere
106. r Ausf hrung unterbrechen indem er CTRL C eingibt Im Passivmodus hat diese Eingabe keine Wirkung Die Aktivierung dieses Befehls ver mindert die Ausf hrungsgeschwindigkeit betr chtlich C 2 8 A Absoluter Code Voreinstellung At Der A Befehl kontrolliert die Erzeugung von absoluten d h nicht rekursivem Code Im Aktivmodus A wird absoluter Code erzeugt Im Passivmodus A erzeugt der Compiler einen Code der rekursive Aufrufe erlaubt Dieser Code ben tigt mehr Speicher und ist langsamer in der Ausf hrung C 2 9 W Schachtelung von With Anweisungen Voreinstellung W2 Der W Befehl kontrolliert das Niveau der Schachtelung von With Anweisungen d h der Zahl von Records die innerhalb eines Blocks ge ffnet werden k nnen Das W mu unmittelbar von einer Ziffer zwischen 1 und 9 gefolgt sein F r weitere Hinweise siehe Seite 81 ANHANG 93 C 2 10 X Arrayoptimierung Voreinstellung X Der X Befehl kontrolliert die Arrayoptimierung Im Aktivmodus X ist die Codererzeugung auf maximale Geschwindigkeit hin optimiert Im Passivmodus X minimiert der Compiler stattdessen die Codegr e Dies wird auf Seite 75 weiter erl utert D KCPASCAL VS Standard Pascal Die KCPASCAL Sprache folgt sehr weitgehend Standard Pascal wie es von Jensen und Wirth in ihrem User Manual and Report definiert ist Die vorhandenen kleineren Abweichungen sind aus Gr nden der Effizienz eingef hrt Diese Unt
107. rkl rung benutzt werden Prozeduren und Funktionen 67 type Range array 1 500 of integer procedure Select Model Range Wenn ein Parameter durch Bezugnahme bergeben wird entspricht der formale Parameter tats chlich w hrend der Ausf hrung des Unterprogramms dem aktuellen Parameter Jede Ver nderung des formalen Parameters gilt folglich auch f r den aktuellen Parameter der deshalb eine Variable sein mu Parameter die durch Bezugnahm bergeben werden werden Variablenparameter genannt und wie folgt deklariert procedure Example Var Numl Num2 Number Wertparameter und Variablenparameter k nnen in derselben Prozedur gemischt werden entsprechend folgende Beispiel procedure Example Var Numl Num2 Number Strl Str2 Txt in dem Numi und Num2 Variablenparameter sind und Stri und Str2 Wert parameter Alle Adre berechnungen werden zum Zeitpunkt des Prozeduraufrufs durch gef hrt Wenn eine Variable eine Komponente eines Arrays ist werden deshalb ihre Indices berpr ft wenn das Unterprogramm aufgerufen ist Beachten Sie da Dateiparameter immer als Variablenparameter deklariert werden m ssen Wenn eine gro e Datenstruktur wie etwa ein Array an ein Unterprogramm als ein Parameter bergeben werden soll spart die Benutzung eines Variablenparameters Zeit und Speicherplatz da dann nur die Adresse des aktuellen Parameters an das Unterprogramm bergeben wird Ein Wertparameter w rde
108. rror 0 1PC 1B56 Program aborted Bild 17 3 Laufzeit Fehlermeldung Um die Stelle in der Quelle zu finden an der der Fehler auftrat m ssen Sie den F Befehl im Optionsmen eingeben Wenn die Bereitschaftsmeldung f r die Adresse da ist geben Sie die von der Fehlermeldung angegebene Adresse ein Enter PC 1B56 Bild 17 4 Finden eines Laufzeitfehlers Die Stelle in der Quelle wird jetzt gefunden und genauso ausgegeben als ob der Fehler w hrend eines Programmablaufs im Speicher aufgetreten w re 17 2 Standardbezeichner Es gibt folgende Standardbezeichner Bios Bdos RecurPtr BiosHl BdosHl StackPtr Weitere Besonderheiten 81 17 3 Absolute Variablen Variablen k nnen deklariert werden so da sie an bestimmten Speicheradressen stehen Sie hei en dann absolute Variablen Dies geschieht indem man bei der Variablendeklarierung das reservierte Wort absolute hinzuf gt und eine Adresse als ganzzahlige Konstante angibt Absolute kann auch genutzt werden um eine Variable an die Spitze einer anderen Variablen zu deklarieren d h da die Variable an derselben Adresse wie die andere Variable starten soll Wenn absolute vor dem Variablen oder Parameter Bezeichner steht startet die neue Variable an der Adresse dieser Variablen oder dieses Parameters Beispiel Var Str Stringz StrLen Byte absolute Str Die obige Deklarierung gibt an da die Variable
109. rstPerson Next end FirstPerson Name kann als FirstPerson s Name gelesen werden d h als das Feld Name auf das im Record mit FirstPerson gezeigt wird Folgende Beispiele demonstrieren den Gebrauch von Zeigern um eine Liste von Namen und gew nschten Berufen zu erstellen Die Namen und gew nschten Berufe werden solange gelesen bis in Leerzeichen ingegeben wird Danach wird die Liste ausgedruckt Anschlie end ist der benutzte Speicherplatz wieder frei Die Zeigervariable HeapTop wird nur zur Auf nahme und zum Speichern des Anfangswertes gebraucht Ihre Definition als Integer Zeiger auf Integer ist deshalb rein willk rlich procedure Jobs type PersonZeiger PersonRecord Pers onRecard record Name string 50 Job string 50 Next PersonZeiger end Var HeapTop Integer FirstPerson LastPerson NewPerson PersonZeiger Name string 50 begin FirstPerson nil Mark HeapTop repeat Write Enter name Readln Name if Name lt gt t chen begin New NewPerson NewPerson Name Name Write Enter profession Readln NewPerson Job Writeln if FirstPerson nil then FirstPerson NewPerson else LastPerson Next NewPerson LastPerson NewPerson LastPerson Next nil end until Name Writeln while FirstPerson lt gt nil do with FirstPerson do begin Writeln Name is a Job FirstPerson Next end
110. rue oder False Beim Vergleich zweier Strings werden di inzelnen Buchstaben von links nach rechts miteinander verglichen Wenn die Strings verschiedene L ngen haben und der k rzere bis hin zum letzten Buchstaben den am Anfang stehenden Zeichen des l ngeren Strings entspricht dann wird der k rzere als der kleiner rkannt Strings sind nur dann gleich wenn sie sich sowohl im Inhalt als auch in der L nge entsprechen Strings 41 Beispiel A lt B wahr TA gt B falsch Tare IAT falsch KCPASCAL KCPASCAL wahr KCPASCAL KCPASCAL wahr Pascal Compiler lt Pascal compiler wahr 9 3 Stringzuordnung Der Zuordnungsoperator weist den Wert ines Stringausdruckes einer Stringvariablen zu Beispiel Age fiftieth Line Many happy ENTERs on your Age birthday Wenn di angegebene Maximall nge der Stringvariablen berschritten wird werden die berz hligen Buchstaben verschluckt Das hei t wenn die obig Variable mit string 5 deklariert wurde wird die Variable nach der Zuweisung nur die f nf Buchstaben die links stehen enthalten fifti 9 4 Stringprozeduren Die folgenden Standardstringprozeduren sind in KCPASCAL verf gbar 9 4 1 L schen Syntax Delete St Pos Num Delete l scht aus einer Stringvariablen St eine bestimmte Anzahl Num von Buchstaben beginnend bei der Position Pos Pos und Num sind Integer Ausdr cke Wenn Pos gr er als die L nge von
111. sie abspeichern wollen bevor Sie beenden 1 2 7 Compiler Optionen Das O Kommando w hlt ein Men an in dem Si inen berblick ber einige voreingestellte Werte des Compilers erhalten und diese ndern k nnen Die Benutzung von KCPASCAL 9 Au erdem bietet es eine hilfreiche Funktion zur Auffindung von Laufzeit fehlern in Programmen 1 3 Der PASCAL Editor Der integrierte Editor ist ein Bildschirmeditor der speziell zur Programmtexterstellung geschaffen wurde Falls Sie mit dem Textprogramm TP vertraut sind ben tigen Si kein weiter Einf hrung in die Handhabung des Editors da die Standardfunktionen exakt denen von TP entsprechen Es gibt inig kleinere Unterschiede Der KCPASCAL Editor besitzt dar berhinaus einige Erweiterungen Diese werden im Kapitel 1 4 besprochen Die Benutzung des Editors ist sehr einfach Wenn Si ine Arbeitsdatei definiert haben und E eingeben verschwindet das Men und der Editor ist aktiviert Wenn die Arbeitsdatei auf Kassette ist kann sie geladen werden und di rste Seite des Textes erscheint Wenn es eine neue Datei ist ist der Bildschirm ab der Statuszeile leer Sie verlassen den Editor und kehren durch Dr cken von CONTR K D zum Men zur ck Mehr dar ber erfahren Sie sp ter Der Text wird wie auf einer Schreibmaschine auf der Tastatur eingegeben Um eine Zeile zu beenden dr cken Sie lt ENTER gt Wenn Sie Ihren Bilds
112. spiel label 10 Fehler 999 Abbruch w hrend Standard Pascal die Label auf Zahlen mit h chstens vier Stellen einschr nkt erlaubt KCPASCAL sowohl Zahlen als auch Bezeichner als Label zu verwenden 5 2 2 Konstanten Definitionsteil Der Konstanten Definitionsteil f hrt Bezeichner als Synonyme f r die Konstantenwerte ein Das reservierte Wort const steht am Anfang des Konstanten Definitionsteils es folgt eine liste der Konstantenzu weisungen die durch Semikolons getrennt sind Jede Konstantenzuweisung besteht aus inem Bezeichner auf den ein Gleichheitszeichen und eine Konstante folgen Konstanten sind entweder Strings oder Zahlen Beispiel const Limit 255 Max 1024 Passwort SESAM CursHome V Die folgenden Konstanten sind in KCPASCAL vordefiniert d h auf sie kann ohne vorherige Definition Bezug genommen werden Name Typ und Wert Pi Real 3 1415926536E 00 False Boolean der Wahrheitswert falsch True Boolean der Wahrheitswert wahr Maxint Integer 32767 wie in Kapitel 13 beschrieben kann ein Konstanten Definitionsteil auch typisierte Konstanten definieren 5 2 3 Typen Definitionsteil Ein Datentyp kann in Pascal entweder direkt in dem Variablen Deklarationsteil beschrieben sein oder es kann durch einen Typenbe zeichner auf ihn Bezug genommen werden Es stehen mehrere Standardtypen zur Verf gung weiterhin kann ein Programmierer durch die Verwendung der
113. sse kurz vor dem Ende end des Blocks zeigt 16 2 2 5 Halt Syntax Halt Beendet die Programmausf hrung und f hrt zum Betriebssystem zur ck 16 2 2 6 Randomize Syntax Randomize Startet den Zufallsgenerator mit einer Zufallszahl 16 2 2 7 Move Syntax Move Varl Var2 Num F hrt direkt im Speicher eine Kopi iner Anzahl Bytes aus Varl und Var2 sind zwei Variablen beliebigen Typs Num ist en ganzzahliger Ausdruck Die Prozedur kopiert einen Block von Num Bytes beginnend beim ersten Byte von Varl auf das erste Byte von Var2 Es gibt keine moveright und moveleft Prozeduren da Move automatisch m gliche berlappungen w hrend des Move Prozesses handhabt 16 2 2 8 FillChar Syntax FillChar Var Num Value F llt inen Speicherbereich mit inem gegebenen Wert Var ist eine Variable beliebigen Typs Num ist ein ganzzahliger Ausdruck und Value ein Ausdruck vom Typ Byte oder Char Num Bytes beginnend beim ersten durch Var belegten Byte werden mit dem Wert Value aufgef llt 16 3 Funktionen Wie Prozeduren sind Funktionen entweder standardisiert vordeklariert oder vom Programmierer deklariert Prozeduren und Funktionen 72 16 3 1 Funktionsdeklarierung Eine Funktionsdeklarierung besteht aus einem Kopf und einem Block der aus einem Deklarationsteil gefolgt von einem Anweisungsteil besteht Der Funktionskopf entspricht dem Prozedurkopf au er da
114. t man die Standardprozeduren Mark und Release um den diesen Variablen zugewiesenen Speicherplatz wieder freizumachen Die Mark Prozedur weist den Wert des Heapzeigers einer Variablen zu Die Syntax eines Aufrufs von Mark ist Mark Var Dabei ist Var eine Zeigervariable Die Release Prozedur setzt den Heap zeiger an die in ihren Argumenten enthaltene Adresse Die Syntax lautet Release Var wobei Var eine Zeigervariable ist die zuvor durch Mark gesetzt wird Release entfernt dann alle dynamischen Variablen oberhalb dieser Adresse kann aber nicht den durch Variablen benutzten Platz in der Mitte des Heap freimachen Wenn Sie das tun m chten sollten Sie anstatt von Mark Release Dispose verwenden Seite 124 Die Standardfunktion MemAvail kann jederzeit benutzt werden um den auf dem Heap verf gbaren Platz zu bestimmen F r weitere Hinweise siehe Kapitel 20 21 und 22 15 4 Die Benutzung von Zeigern Angenommen wir haben die Prozedur New benutzt um eine Serie von Records des Typs PersonRecord zu schaffen wie im Beispiel auf der folgenden Seite und da das Feld Next in jedem Record auf das n chste PersonRecord deutet dann gehen die folgenden Anweisungen die Liste durch und geben den Inhalt jedes Records aus FirstPerson zeigt auf die erste Person in der Liste while FirstPerson lt gt nil do with FirstPerson do Zeiger Typen 63 begin Writeln Name is a Job Fi
115. tellen langen Feld rechtsb ndig plaziert Das restliche Feld wird mit Leerzeichen aufgef llt B Abh ngig vom Wert von B wird entweder das Wort TRUE oder das Wort FALSE ausgegeben B n Abh ngig vom Wert von B wird entweder das Wort TRUE oder das Wort FALSE in einem Feld rechtsb ndig plaziert das n Zeichen umfa t Ten Die Dezimaldarstellung des Wertes von i wird in einem Feld rechtsb ndig plaziert das n Zeichen umfa t R n m Die Dezimaldarstellung des Wertes von R wird ausgegeben und in einem n Stellen langen Feld rechtsb ndig plaziert wobei das Festkommaformat mit m Stellen nach dem Dezimalpunkt verwandt wird m mu im Wertebereich von 0 bis 24 liegen andernfalls wird das Gleitkommaformat verwandt Um die Feldgr e n zu f llen gehen der Zahl entsprechend viele Leerzeichen voraus 14 6 Writeln Prozedur Die Writeln Prozedur entspricht der Write Prozedur mit der Ausnahme da nach dem letzten Wert eine CR LF Sequenz ausgegeben wird Writeln 14 7 I O Fehlerroutinen Der I Compilerbefehl wird benutzt um die Art der I O berwachung einzu stellen Voreingestellt ist in I d h da jede I O Operation sofort nach der Ausf hrung berpr ft wird I O Fehler verursachen dann einen Programmabbruch und es erscheint Fehlermeldung die die Art des Fehlers anzeigt Wenn die automatische I O berwachung nicht aktiviert ist d h bei SI wird keine Laufzeitpr
116. ter beliebigen Typs sein Der untypisierte formale Parameter selbst ist nicht kompatibel mit den anderen Typen und er kann deshalb nur dann benutzt werden wenn der Datentyp keine Rolle spielt z B als Parameter zu Addr BlockRead Write FillChar oder Move oder als die Adressenspezifikation einer absoluten Variablen Die SwitchVar Prozedur im folgenden Beispiel demonstriert den Gebrauch von nichttypisierten Parametern Es wird der Inhalt von Al nach A2 und der Inhalt von A2 nach Al bewegt procedure SwitchVar Var Alp A2p Size Integer type A array 1 MaxInt of Byte Var Al A absolute Alp A2 A absolute A2p InprbBrte Count Integer begin for Count 1 t Size d begin Tmp Al Count Al Count A2 Count A2 Count Tmp end end Angenommen die Angaben lauten type Matrix array 1 30 1 28 0f Reali Var TestMatrix BestMatrix Matrix dann kann man SwitchVar verwenden um die Werte zwischen den beiden Matrizen zu vertauschen SwitchVar TestMatrix BestMatrix SizeOf Matrix Prozeduren und Funktionen 69 16 2 Prozeduren Eine Prozedur kann entweder vordeklariert oder standardisiert oder vom Programmierer deklariert sein Vordeklarierte Prozeduren sind Teile des KCPASCAL Systems und k nnen weitere Angaben aufgerufen werden Eine vom Benutzer festgelegte Prozedur kann den Namen einer Standardprozedur tragen aber dann wird diese Standardprozedur unbrauchbar in
117. teuerungs Kommandos 1 3 5 1 Kommandos der Grundbewegungen Das Erste was man ber einen Editor wissen mu ist wie man den Cursor auf dem Bildschirm bewegt Der KCPASCAL Editor benutzt dazu eine Gruppe spezieller Kontrollzeichen namentlich die Kontrollzeichen A S D F E R X und E X T Die Lage der vier Buchstaben zeigt schon optisch an da CONTR E den Cursor nach oben CONTR X nach unten CONTR S nach links und CONTR D nach rechts bewegt Versuchen Sie nun den Cursor mit diesen vier Steuerzeichen auf dem Bildschirm hin und herzubewegen Da die Tastatur Wiederhol Tasten hat k nnen Sie durch anhaltendes Dr cken der CONTR und einer der vier anderen Tasten den Cursor sehr schnell ber den Bildschirm bewegen Nun schauen wir uns einige Erweiterungen zu diesen Bewegungen an Die Benutzung von KCPASCAL L2 Die Lage von CONTR R neben CONTR E impliziert da damit der Cursor nach oben bewegt wird nur nicht um eine Zeile sondern um eine ganze Seit Entsprechend bewegt CONTR C den Cursor um eine ganze Seite nach unten Entsprechendes gilt f r CONTR A und CONTR F CONTR A bewegt den Cursor um ein ganzes Wort nach links CONTR F um ein ganzes Wort nach rechts Die beiden letzten Grundbewegungen steuern den Cursor nicht nur auf dem Bildschirm sondern lassen den ganzen Bildschirm in der Datei nach oben oder unten rollen CONTR W rollt in der Datei nach oben die
118. timmungen Eine Elementbestimmung ist ein Ausdruck vom gleichen Datentyp wie der Grundtyp der Meng Oder es ist ein Bereich der durch zwei solche Aus dr cke zwischen denen zwei aufeinanderfolgende Punkt stehen bestimmt wird Beispiele tT tut R B O wen Messa Lises A 3 er ror 1 3 410 12 Das letzte Beispiel zeigt ine re Menge die da sie keine Ausdr cke enth lt die ihren Grundtyp angeben w rde zu allen Mengentypen kompatibel ist Die Menge 1 5 ist quivalent zu der Menge 1 2 3 4 5 Wenn X gt Y dann steht X Z f r eine leere Meng 12 2 2 Mengenoperatoren Di den drei verschiedenen Klassen von Operatoren an Regeln der Mengenbildung geben den Vorrang der Mengenoperatoren nach 1O Durchschnitt der Mengen 2 Vereinigung der Mengen Differenz der Mengen 3 lt gt Test auf Gleichheit der Mengen lt gt Test auf Ungleichheit der Mengen gt Inklusion enth lt ist wahr wenn der zweite Operand im ersten enthalten ist lt Inklusion ist enthalten ist wahr wenn der rst Operand im zweiten enthalten ist IN Test auf Mitgliedschaft in einer Meng Der zweite Operand ist eine Menge und der erste Operand ein Ausdruck des gleichen Typs wie der Grundtyp der Menge Das Ergebnis ist wahr true wenn der rst in Element des zweiten ist Operand Es gibt keinen Operator f r die Exklusion programmieren A B Mengenausdr cke k nnen hilfreich sein
119. tring Handhabungsprozeduren Datei Handhabungsprozeduren Prozeduren f r die Zuweisung von dynamischen Variablen Eingabe und Ausgabeprozeduren AWN 16 2 2 1 ClrScr Syntax ClrScr L scht den Bildschirm und plaziert den Cursor in die linke obere Eck Beachten Sie da manche Bildschirme auch di Videoeigenschaften zur cksetzen wenn der Schirm gel scht wird was m glicherweise vom Benutzer gesetzte Eigenschaften ver ndern kann 16 2 2 2 Delay Verz gerung Syntax Delay Time Die Prozedur Delay rzeugt in Schleife di ungef hr soviele Millisekunden l uft wie im Argument Time das eine ganze Zahl sein mu angegeben ist Di xakt Zeit kann in unterschiedlichen Betriebs umgebungen verschieden sein Prozeduren und Funktionen 71 16 2 2 3 GotoXY Syntax GotoXY Xpos Ypos Bewegt den Cursor auf die Position die durch die ganzzahligen Ausdr cke Xpos vertikaler Wert oder Spalteneinteilung und Ypos horizontaler Wert oder Zeileneinteilung angegeben werden Die obere linke Ecke ist die Position 1 1 home position 16 2 2 4 Exit Syntax Exit Verl t den gegenw rtigen Block Wenn Exit in einem Unterprogramm ausge f hrt wird bewirkt dies das Verlassen des Unterprogramms Wenn Exit in dem Anweisungsteil ausgef hrt wird verursacht es den Abbruch des Programms Ein Aufruf von Exit kann mit einer goto Anweisung verglichen werden die auf eine Adre
120. tt und verwendet werden 2 2 Reservierte W rter Reservierte W rter sind ein integraler Bestandteil von KCPASCAL und k nnen nicht neu definiert werden Sie k nnen also nicht als vom Nutzer definierte Bezeichner verwendet werden Die reservierten W rter sind absolute external nil shl and not shr array forward string begin for of then case function or type const goto packed to div inline procedure until do TE program var downto in record while else label repeat with end mod set xor Im gesamten Handbuch sind di reservierten W rter fett gedruckt Die Stern zeigen reserviert W rter an die in Standard Pascal nicht definiert sind 2 3 Standardbezeichner KCPASCAL hat folgende Standard Bezeichner von vordefinierten Typen Konstanten Variablen Prozeduren und Funktionen Jeder dieser Bezeichner kann neu definiert werden was aber bedeutet da ihre M glichkeiten eingeschr nkt werden Solch Ver nderungen k nnen auch leicht zur Verwirrung f hren Die folgenden Standard Bezeichner sind deshalb am besten in ihrer urspr nglichen Definition zu belassen Grundlegende Sprachelemente 21 Addr Delay Length Release ArcTan Delete Ln EOF Lo Aux EOLN AuxInPtr Erase Lst Round AuxOutPtr Execute LstOutPtr Exit Mark sin Exp MaxInt Sizeof Boolean False Mem Buflen MemAvail Byte Move Sqr Chain FillChar New Sqrt Char Flush Str Chr Frac Odd Succ GetMem Ord Swap ClrEOL Goto
121. ull oder ine negative Zahl eingegeben d h versucht den Logarithmus von Null oder einer negativen Zahl zu ermitteln ANHANG 97 10 String L ngenfehler 1 Eine Verkettung von Strings ergab einen String von mehr als 255 Zeichen 2 Nur Strings von der L nge 1 k nnen in Buchstabenzeichen um gewandelt werden 11 Ung ltiger Stringindex Der Stringindex liegt bei Copy Delet oder Insert Prozeduren nicht zwischen 1 und 255 90 Index au erhalb des zul ssigen Bereichs Der Index eines Arrays liegt nicht im zul ssigen Bereich 91 Skalar oder Teilbereich au erhalb des zul ssigen Bereichs Sie haben einem Skalar oder Teilbereich einen Wert zugeordnet der nicht im zul ssigen Bereich liegt 92 Au erhalb des Integer Bereiches Sie haben bei Trunc oder Round einen ganzzahligen Wert eingegeben der au erhalb des integeren Bereiches von 32767 32767 liegt FF Heap Stackkollision Si haben di Standardprozedur New oder in rekursives Unter programm aufgerufen aber es ist nicht gen gend freier Speicherplatz vorhanden G I O Fehlermeldungen Ein Fehler w hrend einer Ein Ausgabeoperation ist ein I O Fehler Wenn die LI O Fehlerroutine in Betrieb ist der I Compilerbefehl aktiviert ist verursacht ein 1I O Fehler in Programmunterbrechung und die Anzeige der folgenden Fehlermeldung I O error NN PC addr Program aborted wobei NN di I O Fehlernummer ist
122. verwendet werden um den Grundtyp einer Menge zu definieren 4 Der Typ real kann nicht in kontrollierenden for und case Anweisun gen verwendet werden 5 Teilbereiche des Typs real sind nicht erlaubt 3 4 Boolean Bool sche Wahrheitswerte Ein Bool scher Wahrheitswert kann einen der beiden logischen Werte wahr oder falsch die durch die Standardbezeichner True bzw False bezeichnet sind annehmen Diese sind so definiert da True lt False ist Eine Boolean Variable belegt ein Byte im Speicher 3 5 Char alphanumerische Zeichen Ein Char alphanumerischer Wert entspricht einem Zeichen aus der ASCII Zeichenmenge Di Zeichen sind entsprechend ihrem ASCII Wert geordnet z B A gt B Die ordinalen ASCII Werte der Zeichen reichen von 0 bis 255 Eine Char Variable belegt ein Byte im Speicher Grundlegende Sprachelemente 23 4 Benutzerdefinierte Sprachelemente 4 1 Bezeichner Bezeichner engl Identifier werden verwendet um Labels Konstanten Typen Variablen Prozeduren und Funktionen zu bezeichnen Ein Bezeichner besteht aus einem Buchstaben oder iner Unterstreichung gefolgt von beliebigen Kombinationen von Buchstaben Zahlen oder Unterstreichungen Ein Bezeichner wird in der L nge nur von der L nge der Zeile die maximal 127 Zeichen betragen kann begrenzt und alle Zeichen sind signifikant Beispiele KCPASCAL square persons counteg BirthDate
123. werden im Kapitel 11 besprochen Arrays 47 11 Recordtyp Satzart Ein Record ist eine Datenstruktur die aus einer festgelegten Zahl von Komponenten besteht Der Zusammenschlu mehrerer Felder als Record wird auch Verbund genannt Die Felder k nnen aus verschiedenen Datentypen bestehen und jedes wird mit inem Feldbezeichner field identifier benannt Dieser dient der Feldselektion in einem Record 11 1 Definition des Records Die Definition des Datentyps Record besteht aus dem reservierten Wort record dem eine Auflistung der einzelnen Felder field list folgt Danach steht das reservierte Wort end Die Felderauflistung ist eine Folge von S tzen record sections die durch Strichpunkte getrennt werden Jeder Satz besteht aus einem oder mehreren Bezeichnern gefolgt von einem Doppelpunkt und einem Datentyp bezeichner So bestimmt jeder Satz den Typ und den Bezeichner f r ein oder mehrere Felder Beispiele type DaysoOfMonth record Day 1 2134 Month Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec tear 1900 1999 end Var Birth Date workDay array 1l 2 date Day Month und Year sind Feldbezeichner Ein Feldbezeichner ist nur f r den Record spezifisch in dem er definiert wurde Ein Feld wird durch den Variablenbezeichner und den Feldbezeichner beid durch einen Punkt getrennt angesprochen Beispiele Birth Month Jun Birth Year 1950
124. xXY Output Text e1lrScer Halt Pi Trm Con HeapPtr Port True ConInPtr Hi Pos Trunc ConOutPtr IOresult Pred UpCase Concat Input PET Usr ConstPtr Insline Random UsrInPtr Copy Insert Randomize UsrOutPtr Cos Int Read Val Integer ReadLn Write Kba Real WriteLn DelLine KeyPressed Im gesamten Handbuch werden die Standard Bezeichner wie auch alle anderen Bezeichner mit Klein und Gro buchstaben geschrieben Im Text werden sie kursiv gedruckt 2 4 Begrenzer Sprachelemente m ssen wenigstens von einem der folgenden unterbrochen werden Leerzeichen neue Zeile oder Kommentar Begrenzer 2 5 Programmzeilen Programmzeilen k nnen maximal 127 Zeichen lang sein dar ber hinaus gehende Zeichen werden vom Compiler ignoriert Aus diesem Grund erlaubt der KCPASCAL Editor auch nur 127 Zeichen in einer Zeil 3 Skalare Standardtypen Ein Datentyp definiert die Art der Werte di ine Variable annehmen kann Jede Variable in einem Programm darf einem und nur einem Datentyp zugeordnet sein Obwohl Datentypen in KCPASCAL sehr komplex sein k nnen werden sie alle aus einfachen unstrukturierten Typen aufgebaut Ein einfacher Typ kann entweder vom Programmierer definiert sein er wird dann deklarierter skalarer Typ genannt oder er ist einer der skalaren Standardtypen integer real boolean char oder byte s folgt eine Beschreibung dieser f nf skalaren Standardtypen oO Di Grundlegende Sprachelem
125. zenShip verschiedene Strukturen anzunehmen je nachdem ob der Wert des Feldes Citizen oder Alien ist type Person record PersonName Name BirthDate Date case CitizenShip Origin of Citizen BirthPlace Name Alien CountryOfOriginal Name DateOfEnty Date PermittedUntil Date P rt fEntry Name end In dieser Variantendefinition ist das Variantenmarkierfeld ein eigenes Feld das wie jedes andere Feld behandelt werden kann Ist Passenger eine Variable des Typs Person sind folgende Anweisungen durchaus m glich Passenger CitizenShip Citizen with Passenger PersonName do if CitizenShip Alien then writeln FamilyName Der feststehend Teil ines Records d h der Teil der die normalen Felder beinhaltet mu immer dem Variantenteil voranstehen Im obigen Teil sind PersonName und BirthDat di feststehenden Felder Ein Record kann nur einen einzigen Variantenteil haben Auf jeden Fall mu eine Variante Klemmern haben auch wenn nichts darin steht Der Programmierer mu darauf achten da die Variantenmarkierfelder tats chlich vorhanden sind In KCPASCAL kann n mlich auch auf das Feld Date Of Entry zugegriffen werden wenn der Wert des Variantenmarkierungs feldes nicht Alien ist Es ist sogar m glich alle Feldbezeichner wegzulassen und nur die Bezeichner der Datentypen anzugeben Arrays 50 Derartige Rekordvarianten werden frei Verbindungen free unions genan

Download Pdf Manuals

image

Related Search

Related Contents

Dell Force10 Z9000 Quick Start Manual  Symantec.cloud_Service  Kramer Galil 6-CO User Manual  Yhueuer uyw5 eyu eue yeueyue  Samsung Samsung S3350 User Manual    MANUALE DI MONTAGGIO/UTENTE - Migros  QUICK PLAY FLASH - Quickstart Guide - v1.4  WINconnect User Manual  波形解析ソフトウェア ∼ 取扱説明書 ∼ 第 3.0 版 2010 年 06  

Copyright © All rights reserved.
Failed to retrieve file