home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best of German Only 2
/
romside_best_of_german_only_2.iso
/
dos
/
lernbild
/
itg
/
entpack.exe
/
ITG.HLP
< prev
next >
Wrap
Text File
|
1993-09-18
|
198KB
|
7,540 lines
≡≡ITG-PASCAL
Igel-GrafikStandard-GrafikITG-Pascal-Grafik
Operatorenmathematische·FunktionenStandard-Bezeichner
Standard-ProzedurenITG-Pascal-ProzedurenStandard-Funktionen
ITG-Pascal-Funktionenparallele·Prozesse Konstante
TypenFehler-HilfeDebugger
EditorSynonymeFischertechnik·LEGO
Allgemeines
≡≡ALLGEMEINES
ITG-PascalistzumgrößtenTeilTurbo-Pascal-kompatibel
(Version4.0-6.0),enthältaberEinschränkungenundviele
Erweiterungen,dieSchülerndasProgrammierenundFehlersuchen
erleichtern.
BezeichnerausStandard-PascaloderausTurbo-Pascal
tragendieüblichenNamen,Erweiterungensindmitdeutschen
Namenversehen.DabeisindauchdiedeutschenSonderzeichen
(ä,ö,ü,Ä,Ö,Ü,ß)zugelassen.
≡
ITG-PascalbestehtauseinemInterpreter,mitdemeinTeilder
Pascal-AnweisungenimGrafik-undimTextmodusdirektausgeführt
werdenkannundeinemCompiler/Interpreter,derPascal-Programme
übersetztundausführt.
AlleAnweisungen,dieimDirektmodusausgeführtwerden,könnenauf
WunschimEditormitprotokolliertwerden.Dabeiwerdensie
automatischzueinemlauffähigenProgrammergänzt,dasverändert
oderergänzt,gestartetundabgespeichertwerdenkann.
≡
ITG-PascalenthältindervorliegendenVersiondreiverschiedene
Koordinaten-Systeme:
1)denTextschirmmit1≤x≤80und1≤y≤25,wobeiderlinke
obereEckpunktdieKoordinatenx=1undy=1hat.
2)dieStandardgrafikmit-320≤x≤320undyMin≤y≤yMax,
wobeiyMinundyMaxvonderGrafikkarteabhängen,wieunter
GetMaxYbeschrieben.
Dabeigilt:yMin=-GetMaxY/2
yMax=GetMaxY/2.
DerUrsprungdesKoordinatensystemsliegtinderMittedes
Bildschirms.Diepositivey-Achsezeigtnachoben!
≡
3)dieIgelgrafikmit-320≤x≤320und-240≤y≤240füralle
Grafikkarten.GegebenenfallserfolgteineKorrekturin
y-Richtung.
AuchhierliegtderUrsprungdesKoordinatensystemsinderMitte
desBildschirms.Diepositivey-Achsezeigtnachoben!Winkel
werdenzurpositivenx-AchseimmathematischpositivenUmlaufsinn
(entgegendemUrzeigersinn)gemessen.
≡
Debug-AnweisungenwerdenimQuelltexteingefügt(s.auchDebugger),
wobeidieInformationennachjederQuelltextzeileaufdemBildschirm
ausgegebenwerdenundzusätzlichineinemzweitenEditor-Fenster
mitprotokolliertwerden,damitsiespäterinRuheangesehenwerden
können.
≡≡Synonyme
AufbauderSynonym-Datei'ITG.SYN':
KommentarewerdenwieinPascaleingefügt.DasersteWortgibtden
altenBezeichner,daszweitedenneuenzusätzlichenan.
ProZeileistnureinWortpaarzugelassen.Kommentaredürfenniein
einerZeileVORBezeichnernstehen.Kommentar-KlammerndürfenNICHT
inKommentarenstehen.
Beispiele:
≡
ACHTUNG:EshandeltsichhiernurumBeispiele!
===============DiegültigenSynonymeentnehmenSiebitteIhrer
Datei'ITG.SYN'!
INTEGERGANZZAHL(*HieristeinKommentarzulässig*)
REALKOMMAZAHL
INCERHÖHE
REPEATWIEDERHOLE
UNTILBIS
≡≡Operatoren
+Addition2+5=7
-Subtraktion 5-2=3
*Multiplikation2*5=10
/Division2/5=0.4
DIVGanzzahl-Division7DIV5=1(=1Rest2)
MODDivisionsrest7MOD5=2(=1Rest2)
^Potenz2^3=8(=2*2*2)
≡≡Standard-Bezeichner
ANDARRAYBEGINCASECONSTDISPOSE
DIVDODOWNTOELSEENDEXIT
FORWARDFILEFORFUNCTIONGOTOHALT
IF ININCLUDELABELMODNEW
NILNOTOFORPACKEDPROCEDURE
PROGRAMRECORDREPEATSETTHENTO
TYPEUNTILUSESVARWHILEWITH
XOR
≡≡AND
MitANDkanneinerseitsgeprüftwerden,obzweiodermehrWahrheitswerte
gleichzeitigerfülltsind,andererseitskanneinebitweiseVerknüpfung
zweierodermehrererINTEGER-Werteerfolgen.
VerknüpfungvonWahrheitswerten(BOOLEAN):
a│b│aANDb
───────┼───────────┼───────────
FALSE│FALSE│FALSE
FALSE│TRUE│FALSE
TRUE│FALSE│FALSE
TRUE│TRUE│TRUE
≡
VerknüpfungvonINTEGER-Werten
│dezimal│binärFürjezweiuntereinanderstehende
─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
a│13│1101VerknüpfungnachderobigenTabelle
b│11│1011fürWahrheitswertedurchgeführt,wobei
─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
aANDb│9│1001ersetzensind.
≡≡ARRAY
DurchARRAYwirdeinFeldmiteinerbestimmtenAnzahlgleichartiger
Elementedeklariert.
Primzahl:ARRAY[1..50]OFINTEGER;
stellt50SpeicherplätzefürINTEGER-VariablenzuVerfügung,dieüber
denBezeichnerPrimzahlundihrenIndexangesprochenwerdenkönnen.
Primzahl[1]:=2;
Primzahl[2]:=3;
stellengültigeAnweisungendar,
≡
Primzahl:=2;
istnichtmöglich,weilnichtersichtlichist,welchemFeldelementdie
2zugewiesenwerdensoll.
Primzahl[51]:=101;
istebenfallsnichtmöglich,dalautDeklarationkeinFeldelementmitdem
Index51einzurichtenwar.
≡≡BEGIN
BEGINundENDklammernimmerFolgenvonAnweisungenein,dieunterden
jeweiligenVoraussetzungennacheinanderabzuarbeitensind.BEGINundEND
tretenjeweilsPAARWEISEauf.
DurchBEGINwerdenfolgendeProgrammabschnitteeingeleitet:
1)dasHauptprogramm
2)jedeProgrammrumpfeinerProzedur(PROCEDURE)/Funktion
(FUNCTION)
3)dieAnweisungsfolge,dienacheinerIF-Abfrage
abzuarbeitenist
4)dieAnweisungsfolge,dienacheinerELSE-Anweisung
abzuarbeitenist
≡
5)dieAnweisungsfolge,dienacheinerWHILE-Abfrage
abzuarbeitenist
6)dieAnweisungsfolge,dienacheinerFallunterscheidungineiner
CASE-Anweisungabzuarbeitenist
IndenFällen3-6kanndasBEGINentfallen,wennjeweilsnurEINE
Anweisungausgeführtwerdensoll.
≡≡CASE
DieCASE-StrukturdientzumbedingtenAbarbeiteneinzelnerProgramm-
abschnittenachbestimmtenFallunterscheidungenundersetztunübersicht-
lichereverschachtelteIF-Anweisungen.
SeiceineCHAR-Variable,dievorderCASE-Strukturmitmehreren
verschiedenenWertenbelegtwerdenkann.
CASEcOF
"A":BEGIN...END;
"B":BEGIN...END;
.
.
ELSEBEGIN...END;
END;
≡
DieeinzelnenFällewerdennachKONSTANTENvorherbekanntenWertenunter-
schieden.DerInhaltderVariablencdarffürdieFallunterscheidung
nichtmitdemInhalteineranderenCHAR-Variablenverglichenwerden.
IndervorliegendenVersionvonITG-PASCALMUßdieELSE-Anweisungmit
aufgeführtwerden.
≡≡CONST
MitCONSTwerdenKonstantedeklariert,diefürdiegesamteLaufzeitdes
ProgrammsdenselbenWertbehaltenundnichtdurcheineWertzuweisung
verändertwerdenkönnen.
CONST
AnzahlDerWochentage=7;
AnweisungenderForm
FORn:=1TOAnzahlDerWochentageDO...oder
n:=AnzahlDerWochentage;
sindmöglich,Wertzuweisungenwie
AnzahlDerWochentage:=5;
sindnichtmöglich.
≡≡DISPOSE
DISPOSEgibtdenSpeicherplatz,deneineZeigervariable(dynamische
Variable)belegte,wiederfrei.DerWertdesZeigersistanschließend
NIL.
Beispiel:
NEW(Zeigertyp);PlatzfüreineZeigervariableaufdemHeap
.anfordern.ErstdanndürfenZuweisungen
.vorgenommenwerden.
DISPOSE(Zeigertyp);WennderInhaltderZeigervariablennichtmehr
benötigtwird,wirdderPlatzaufdemHeap
wiederfreigegeben.
≡≡DIV
DIVGanzzahl-Division7DIV5=1(=1Rest2)
≡≡DO
DOisteinTeildesSchleifenkopfesderWHILE-DO-Schleifeundein
TeilderWITH-DO-Anweisung.
≡≡DOWNTO
DOWNTOisteinTeildesSchleifenkopfesderabwärtszählendenFOR-TO-
Schleife.
≡≡ELSE
ELSEisteinTeilederIF-THEN-ELSE-undderCASE-OF-Anweisungen.
≡≡END
sieheBEGIN
≡≡EXIT
MitderAnweisungEXITwirderreicht,daßdieAnweisungenzwischenEXIT
unddemEndederProzedur,derFunktionoderdemProgramm,wennEXITim
Hauptprogrammausgeführtwird,übersprungenwerden.
PROCEDURESuche(Text:STRING);
VAR
n:INTEGER;
BEGIN
FORn:=1TOAnzahlDerStringsDOBEGIN
IFEintrag[n]=TextTHENBEGIN
Write(Text,"istdas",n,".teElementimArrayEintrag.");
EXIT;
END;
END;
Write(Text,"imArrayEintragnichtgefunden.");
END;
≡
DievorletzteZeilewirdnurausgeführt,wenndieSucheerfolgloswar,
sonstwirdderErfolggemeldetunddieAusführungderFOR-TO-Schleife
undderProzedurSuchewirdsofortbeendet.
≡≡FORWARD
WennsichmehrereProzeduren(PROCEDURE)oderFunktionen(FUNCTION)
gegenseitigaufrufen,führteszuProblemen,weileineProzedur,die
voneineranderenaufgerufenwird,vorherdeklariertseinmuß.Der
CompilermeldetindiesemFalleinenFehler,weilernichtweiß,ob
essichumeineProzedurodereineFunktionhandeltundwelcheParameter
ihrübergebenwerdenmüssen.
Beispiel:
≡
FUNCTIONf1(x:INTEGER):INTEGER;
BEGIN
IFn>1THEN
f1:=n*f2(n-2)Aufrufvonf2!!!
ELSEf1:=1;
END;
FUNCTIONf2(x:INTEGER):INTEGER;
BEGIN
IFn>1THEN
f2:=SQR(n)*f1(n-1)Aufrufvonf1!!!
ELSEf2:=1;
END;
≡
DaderCompilerzuerstnurdenProzedur-/Funktionskopfbenötigt,um
dieParameterübergabeprüfenzukönnen,reichtesnurdenKopfhinzu-
schreiben.DamitanschließendnichtdieDeklarationderProzedur/
Funktionerwartetwird,wirddemCompilerdurchFORWARDmitgeteilt,daß
essichnurumdenKopfhandeltundderRestspäterfolgt.Dazuist
derProzedur-/FunktionskopfGENAUSOhinzuschreibenwiebeider
endgültigenDeklaration,esistnur"FORWARD;"anzufügen.Ansonsten
müssenbeideKöpfeZEICHENFÜRZEICHENübereinstimmen.
≡
FUNCTIONf2(x:INTEGER):INTEGER;FORWARD;jetztistallesNötige
bekannt
FUNCTIONf1(x:INTEGER):INTEGER;
BEGIN
IFn>1THEN
f1:=n*f2(n-2)Aufrufvonf2!!!
ELSEf1:=1;
END;
FUNCTIONf2(x:INTEGER):INTEGER;
BEGIN
IFn>1THEN
f2:=SQR(n)*f1(n-1)Aufrufvonf1!!!
ELSEf2:=1;
END;
≡≡FILE
DurchFILE-OFwirddieStruktureinerDateivereinbart.
Beispiel:
TYPE
DatenEinerPerson=RECORD
Vorname,Nachname,Wohnort,Straße:STRING[20];
PLZ,HausNr,Tel:INTEGER;
END;
VAR
Person:DatenEinerPerson;
PersonenDatei:FILEOFDatenEinerPerson;
≡
DieStrukturunddieGrößederDatei"PersonenDatei"werdenbeim
SchreibenvonDatenineineDateisogewählt,daßdieDateiein
direktesAbbildderVariablen"Person"aufderDiskette/Festplatte
zufindenist.AufdieseWeiselassensichdieDatenleichtwieder
ineineVariablevomTyp"DatenEinerPerson"einlesen.
SchreibenineineDatei:
Write(PersonenDatei,Person);vorheröffnen,dannschließen
LesenauseinerDatei:
Read(PersonenDatei,Person);
≡≡FOR
DurchFORwirdderKopfeinerWiederholschleifeeingeleitet,beiderein
ZählerbeijedemDurchgangautomatischimGegensatzzurWHILE-DO-und
REPEAT-UNTIL-SchleifeumEinsheraufoderherabgesetztwird.Der
ZählermußvomTypINTEGERsein.
Beispiele:
aufwärtszählendeSchleife:
FORn:=1TO5DO...nureineAnweisunginderSchleife
FORn:=1TO5DOBEGIN
...mehrereAnweisungeninderSchleife
END;
≡
BeimStartderFOR-TO-SchleifewirdderInhaltdesSchleifenzählersn
auf1gesetztundeswirdgeprüft,obderInhaltdesSchleifenzähler
kleinerodergleichderoberenGrenze(zwischenTOundDO)ist.Wenndas
derFallist,dannwerdenalleAnweisungeninnerhalbderSchleifemitdem
Wertn=1durchlaufen.AmEndederSchleifewirdderSchleifenzählerum
1erhöhtunddievorherigenSchrittewerdensolangewiederholt,bisder
SchleifenzählergrößeralsdieobereGrenzeist(n>5).Danachwirddas
ProgrammmitderAnweisungfortgesetzt,diedirektnachderSchleife
steht.nnimmtalsonacheinanderdieWerte1,2,3,4und5an.
≡
abwärtszählendeSchleife:
FORn:=5DOWNTO1DO...wieoben,aberTOwirddurchDOWNTO
ersetzt
FORn:=5DOWNTO1DOBEGIN
...
END;
EswerdendieselbenSchrittewiebeideraufwärtszählendenSchleife
durchgeführt,nurnnimmtnacheinanderdieWerte5,4,3,2und1an.
≡≡FUNCTION
EineFunktion(FUNCTION)isteineFolgevonAnweisungen,diedurch
AufrufdesFunktions-Namens(undÜbergabevonParametern,soweitnötig)
rechtsvoneinerWertzuweisunggestartetwird.DieStruktureinerFunktion
unterscheidetsichnurimFunktions-KopfundderArtderWertrückgabe
voneinemProgramm(PROGRAM)odereinerProzedur(PROCEDURE),
ansonstengeltendiegleichenRegelnwieunterPROCEDUREausgeführt.
möglicherAufbaueinerFunktion:
≡
FUNCTIONQuadrat(x:REAL):REAL;DerFunktionwirdeinParametervom
BEGINTypREALübergeben.DerWertdieses
Quadrat:=x*x;ParametersstehtinderVariablenx
END;zurVerfügung.DieAngabe":REAL"
bedeutet,daßderFunktionswertvom
TypREAList.DieseAngabeistnötig,damitderFunktionswerteinerREAL-
Variablenzugewiesenwerdenkann.DurchdieAngabe"Quadrat:=..."
weißderCompiler,daßanderStelleimProgramm,ander"Quadrat(x)"
steht,derWertvon"x*x"einzusetzenist.
≡
FürdieÜbergabevonParamterngeltendieselbenRegelnwieunter
PROCEDUREangegeben.
BeispielezumAufrufderFunktionQuadrat(yistvomTypREAL):
richtig:
y:=Quadrat(x);
y:=Quadrat(3.2);
y:=Quadrat(a);AufdenInhaltvonawirdinderFunktionunter
derVariablenxzugegriffen.
Write(Quadrat(z));DerFunktionswertläßtsichüberalleinsetzen,
woaucheineREAL-Konstanteverwendetwerdenkann.
≡
falsch:
n:=Quadrat(x);nistvomTypINTEGER
Read(Quadrat(x));ReadarbeitetmitVariablen-Parametern,wieunter
PROCEDUREimdrittenBeispielangegeben.
≡≡GOTO
GOTOstehtinITG-PASCALnichtzurVerfügung.
DamitITG-PASCALdiestrukturierteProgrammierungerlerntwerdensoll,
stehendieBezeichnerGOTOundLABELnichtzurVerfügung.Durcheine
entsprechendeProgrammstrukturkannIMMERaufdieseAnweisungen
verzichtetwerden.
≡≡HALT
MitderAnweisungHALTwirddieAusführungdesProgrammsSOFORTBEENDET.
PROCEDURESuche(Text:STRING);
VAR
n:INTEGER;
BEGIN
FORn:=1TOAnzahlDerStringsDOBEGIN
IFEintrag[n]=TextTHENBEGIN
WriteLn(Text,"istdas",n,".teElementimArrayEintrag.");
WriteLn("BeendedieProgrammausführung.");
HALT;
END;
END;
Write(Text,"imArrayEintragnichtgefunden.");
END;
≡
DievorletzteZeilewirdnurausgeführt,wenndieSucheerfolgloswar,
sonstwirdderErfolggemeldetunddieAusführungdesProgrammswird
sofortbeendet.
≡≡IF
DurchdieIF-THEN-ELSE-AnweisungwirdeinebedingteProgramm-
ausführungerreicht,d.h.,daßeineFolgevonAnweisungennurunter
bestimmtenVoraussetzungenausgeführtwird.
Beispiel:
IFx<2.5THENBEGINxistvomTypINTEGERoderREAL
.DieAnweisungenzwischenBEGINundENDwerden
.ausgeführt,wennx<2.5ist,sonstwirddas
END;ProgrammhinterENDfortgesetzt.
≡
IFx<2.5THENBEGIN
.DieseAnweisungenwerdennurfürx<2.5
.ausgeführt,
END
ELSEBEGIN
.andernfalls(d.h.fürx>=2.5)werdendiese
.Anweisungenausgeführt.
END;InbeidenFällengehtesdannnachdemEND
weiter.
≡≡ IN
InITG-PASCAListdieeinzigezurVerfügungstehendeSET-Anweisung
...cIN["A..C","D","X"]...,mitdergeprüftwerdenkann,obder
WerteinerCHAR-VariablenineinerMengevonZeichenenthaltenist.Das
ErgebnisisteinWahrheitswert.
Fürc="B"oderc="D"istcIN["A..C","D","X"]TRUE,
fürc="b"oderc="F"istcIN["A..C","D","X"]FALSE.
≡≡INCLUDE
MitderAnweisungINCLUDE[Pfad\]DateinamekannimDeklarationsteil
einesProgrammsodereinerProzedur/FunktionderQuelltexteiner
DateiindasProgrammandervorgesehenenStelleeingebundenwerden,
ohnedaßderQuelltextderDateiimEditorvorhandenist.DiePfad-
angabekannentfallen,wenndieDateiimaktuellenVerzeichniszu
findenist.EskannauchdieSyntaxvonTURBO-PASCALmit
{$I[Pfad\]Dateiname}verwendetwerden.
Beispiel:
INCLUDEC:\ITG\BSP\PRG1.INC,C:\ITG\BSP\PRG2.INC;
oder
{$IC:\ITG\BSP\PRG1.INC}
{$IC:\ITG\BSP\PRG2.INC}
≡≡LABEL
LABELstehtinITG-PASCALnichtzurVerfügung.
DamitITG-PASCALdiestrukturierteProgrammierungerlerntwerdensoll,
stehendieBezeichnerGOTOundLABELnichtzurVerfügung.Durcheine
entsprechendeProgrammstrukturkannIMMERaufdieseAnweisungen
verzichtetwerden.
≡≡MOD
MODDivisionsrest7MOD5=2(=1Rest2)
≡≡NEW
NEWfordertSpeicherplatzaufdemHeapfüreineZeigervariablean.
Beispiel:
NEW(Zeigertyp);PlatzfüreineZeigervariableaufdemHeap
.anfordern.ErstdanndürfenZuweisungen
.vorgenommenwerden.
DISPOSE(Zeigertyp);WennderInhaltderZeigervariablennichtmehr
benötigtwird,wirdderPlatzaufdemHeap
wiederfreigegeben.
≡≡NIL
NIListderWerteinesnichtmitNEWinitialisiertenZeigers.Wennder
WerteinesZeigersNIList,darfaufKEINENFALLindieVariable
geschriebenwerden,aufdiederZeigerzeigt,weilsonsteinRechner-
absturzerfolgenkann.
c:^CHAR;czeigtaufeineCHAR-Variable
IFc<>NILTHENc^:="A";sicherstellen,daßcinitialisiertwurde,
dannerstinc^hineinschreiben
≡≡NOT
MitNOTkanneinerseitseinWahrheitswertnegiertwerden,andererseits
kanneinebitweiseUmkehrderZifferneinerZahlimBinärsystemerfolgen.
VerknüpfungvonWahrheitswerten(BOOLEAN):
a│NOTa
───────┼───────────
FALSE│TRUE
TRUE│FALSE
≡
VerknüpfungvonINTEGER-Werten
│dezimal│binärFürjedeZifferimBinärsystemwird
─────────┼───────────┼─────────eineUmkehrungnachderobigenTabelle
a│13│00001101fürWahrheitswertedurchgeführt,wobei
─────────┼───────────┼─────────0durchFALSEund1durchTRUEzu
NOTa│-14│11110010ersetzensind.
DiesesmerkwürdigerscheinendeErgebniskommtdadurchzustande,daßdas
führende(linke)BitalsVorzeichen(0:+/1:-)interpretiertwird
unddaßinfolgenderWeisegezähltwird:
0,1,2...32768,-32767,-32766,...,-2,-1
≡≡OF
OFwirdinderCASE-OF-StrukturundbeiderFestlegungeines
DateitypsmitFILE-OFverwendet.
≡≡OR
MitORkanneinerseitsgeprüftwerden,obvonzweiodermehrWahrheits-
wertenmindestenseinererfülltist,andererseitskanneinebitweise
VerknüpfungzweierodermehrererINTEGER-Werteerfolgen.
VerknüpfungvonWahrheitswerten(BOOLEAN):
a│b│aORb
───────┼───────────┼───────────
FALSE│FALSE│FALSE
FALSE│TRUE│TRUE
TRUE│FALSE│TRUE
TRUE│TRUE│TRUE
≡
VerknüpfungvonINTEGER-Werten
│dezimal│binärFürjezweiuntereinanderstehende
─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
a│5│0101VerknüpfungnachderobigenTabelle
b│9│1001fürWahrheitswertedurchgeführt,wobei
─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
aORb│13│1101ersetzensind.
≡≡PACKED
PACKEDstehtinITG-PASCALnichtzurVerfügung.
≡≡PROCEDURE
EineProzedur(PROCEDURE)isteineFolgevonAnweisungen,diedurch
AngabedesProzedur-Namens(undÜbergabevonParametern,soweitnötig)
gestartetwird.DieStruktureinerProzedurunterscheidetsichnur
imProzedur-KopfvoneinemProgramm(PROGRAM),ansonstengeltendie
gleichenRegelnwieunterPROGRAMausgeführt.
möglicheProzedurköpfe:
PROCEDUREName;
.weiterwiebeieinemProgramm
.
DieProzedurbenötigtkeineParameter.DerAufruferfolgteinfachdurch
Hinschreibenvon"Name"imAnweisungsteildesProgramms,einerProzedur
(eineranderenoderdieser)odereinerFunktion,wenndieProgramm-
ausführungdieseStelleerreicht.
≡
PROCEDUREName(x,y:INTEGER;r:REAL);
.
.
DerProzedursinddreiParameterzuübergeben,dieinderReiehenfolge
denVariablenx,yundrzugewiesenwerden.
Beispiele:
richtig:
Name(3,5,4.9);x=3,y=5,r=4.9
Name(3,5,9);x=3,y=5,r=9(.0)
falsch:
Name(3);
zweiParameterzuwenig
Name(4.9,3,5);xkannnichtdenWert4.9annehmen!
≡
PROCEDUREName(x,y:INTEGER;VARa:INTEGER);
.
.
DerProzedursinddreiParameterzuübergeben,dieinderReiehenfolge
denVariablenx,yundazugewiesenwerden.WenninnerhalbderProzedur
NamedieInhaltevonxundyverändertwerden,merktdasdieaufrufende
Prozedurnicht.WennderWertvonaverändertwird,wirdauchderWert
derVariablenverändert,diealsdritterParameterübergebenwurde.
Darausergibtsich,daßalsdritterParametereineVariableverwendet
werdenmuß!
Beispiele:
richtig:
Name(3,5,n);x=3,y=5,a=n(nistINTEGER-Variable)
≡
falsch:
Name(3);
zweiParameterzuwenig
Name(4.9,3,n);xkannnichtdenWert4.9annehmen!
Name(3,5,9);derdritteParameterMUßeineVariablesein
≡≡PROGRAM
JedesPASCAL-ProgrammbeginntmitdemBezeichnerPROGRAMundeinem
Programmnamen.DaranschließensichjenachBedarfTyp-,Konstanten-,
Variablen-,Prozedure-undFunktions-Deklarationenan.Anschließend
folgendieAnweisungendesHauptprogramms,dievonBEGINundEND
eingeschlossensind.DasEndedesProgrammsistdurcheinenPunkt"."
zukennzeichnen.
DaskleinstmöglicheProgramm:
PROGRAMEinName;
BEGIN
END.
≡
StandardaufbaueinesProgramms:
PROGRAMEinName;
CONSTDieKonstanten-,Typ-,Variablen-,Prozedur-
.....undFunktions-Deklarationendürfenindiesem
TYPEAbschnitt,demDeklarationteil,biszumBEGIN
.....desHauptprogrammsinbeliebigerAnzahlund
VARReihenfolgeerfolgen.Esistaberdaraufzu
.....achten,daßalles,woraufzugegriffenwird,
PROCEDURE.....VORdererstenVerwendungzudeklarierenist!
.....DadurchergebensichoftZwängefüreinebestimmte
FUNCTION..... ReihenfolgederDeklarationen.
.....
BEGINMitdiesemBEGINfängtdasHauptprogramman.
.....DieersteAnweisungwirdbeimProgrammstartausge-
END.führt.EndedesProgrammsmit"END.".
≡≡RECORD
DieProgrammiersprachePASCALerlaubtes,aufbauendaufdenvordefierten
DatentypeneigeneneueDatenstrukturenundTypenzudefinieren.Diese
DeklararationwirddurchTYPEeingeleitet(sieheauchVAR).Die
StrukturdesDatentypsistindieBezeichnerRECORDundEND
einzuklammern.
TYPE
DatenEinerPerson=RECORD
Vorname,Nachname,Wohnort,Straße:STRING[20];
PLZ,HausNr,Tel:INTEGER;
END;
VAR
Person:DatenEinerPerson;
DieVariable"Person"enthältdannautomatischdie7aufgeführtenFelder,
aufdieüberPerson.Feldbezeichnungzugegriffenwerdenkann.Innerhalb
einerWITH-DO-AnweisungkannSchreibarbeiteingespartwerden.
≡
DerVorteileinerDatenstrukturist,daßalleFelderdieserVariablen
festmiteinanderverbundensind(mansprichtdeshalbauchvoneinem
VERBUND)unddaßProgrammfehlerleichtervermiedenwerdenkönnen,durch
dieTeilemehreregleichartigerVariablendurcheinandergeratenkönnen.
≡
Beispiele:
Person.Vorname:="Egon";
Person.Nachname:="Müller";
WITHPersonDOBEGIN
Vorname:="Egon";
Nachname:="Müller";
END;
DamitsindderVariablen"Person"VornameundNachnamezugewiesen
worden.
≡≡REPEAT
DieREPEAT-UNTIL-SchleifeisteineSchleife,beiderNACHAusführung
derAnweisungenzwischenREPEATundUNTILgeprüftwird,obdieAnweis-
ungsfolgenocheinmalausgeführtwird.DasistdannderFall,wenndie
BedingunghinterUNTIL(Abbruchbedingung)NICHTERFÜLLTist.Innerhalb
derSchleifeistdaraufzuachten,daßdieAbbruchbedingungirgendwann
erfülltwird,dadasProgrammdieSchleifesonstunendlichoftdurch-
läuft.
DieSchleifewirdAUFJEDENFALLeinmaldurchlaufen,weildiePrüfung
erstamEndedurchgeführtwird.(s.auchWHILE-DO-Schleife)
Beispiel:
≡
x:=-1.5; xeinendefiniertenWertzuweisen
REPEAT
.Anweisungsfolge,diefürx-Wertezwischen-1.5und
.1.5ausgeführtwerdensoll
x:=x+0.1;xerhöhen,damitdieAbbruchbedingungerfülltwird
UNTILx>1.5;nichtx=1.6wegenmöglicherRundungsfehler
xnimmtdenWert1.6nichtunbedingtGENAUan,dann
gibteseineEndlos-Schleife!
≡≡SET
SETstehtinITG-PASCALnichtzurVerfügung.
InITG-PASCAListdieeinzigezurVerfügungstehendeSET-Anweisung
...c IN["A..C","D","X"]...,mitdergeprüftwerdenkann,obder
WerteinerCHAR-VariablenineinerMengevonZeichenenthaltenist.
≡≡THEN
THENisteinTeilderIF-THEN-ELSE-Anweisung.
≡≡TO
TOisteinTeildesSchleifenkopfesderaufwärtszählendenFOR-TO-
Schleife.
≡≡TYPE
DieProgrammiersprachePASCALerlaubtes,aufbauendaufdenvordefierten
DatentypeneigeneneueDatenstrukturenundTypenzudefinieren.Diese
DeklararationwirddurchTYPEeingeleitet(sieheauchVAR).
TYPE
Wochentage=(Mo,Di,Mi,Do,Fr,Sa,So);
EinerVariablenvomTypWochentagekannnureinerdieser7Werte
zugewiesenwerden.
DatenEinerPerson=RECORD
Vorname,Nachname,Wohnort,Straße:STRING[20];
PLZ,HausNr,Tel:INTEGER;
END;
EineVariablevomTypDatenEinerPersonenthältdannautomatisch
die7aufgeführtenFelder,aufdieüberVariablenname.Feldbezeich-
nungzugegriffenwerdenkann.
≡≡UNTIL
UNTIListeinTeilderREPEAT-UNTIL-Schleife.
≡≡USES
USESwirdindervorliegendenVersionvonITG-PASCALnichtbenötigt.
MitUSESwerdeninTURBO-PASCALUNITseingebunden,derenQuelltextnicht
unbedingtzurVerfügungstehenmuß.AufdieseWeisewirddasArbeiten
mitfertigenProgramm-Bibliothekensehrerleichtert.
InITG-PASCALsindbereitsumfangreicheBibliothekenenthalten,sodaß
UNITsfürnichtsodringendwieinTURBO-PASCALbenötigtwerden.
≡≡VAR
InPASCAL-ProgrammenmußVORdererstenVerwendungeinerVariablen
bekanntsein,umwelchenTypessichhandelnsoll.DieseInformation
entnimmtderCompilerderVariablen-Deklaration,diedurchVAReinge-
leitetwird.
VAR
m,n:INTEGER;
x:REAL;
oder
VAR
m:INTEGER;
n:INTEGER;
x:REAL;
≡
oder
VARm:INTEGER;
VARn:INTEGER;
VARx:REAL;
≡≡WHILE
DieWHILE-DO-SchleifeisteineSchleife,beiderVORAusführung
derAnweisungenzwischenWHILEunddemdazugehörigenENDgeprüftwird,
obdieAnweisungsfolgenochausgeführtwird.DasistdannderFall,wenn
dieBedingunghinterWHILE(Abbruchbedingung)ERFÜLLTist.Innerhalb
derSchleifeistdaraufzuachten,daßdieAbbruchbedingungirgendwann
erfülltwird,dadasProgrammdieSchleifesonstunendlichoftdurch-
läuft.
DieSchleifewirdNICHTUNBEDINGTdurchlaufen,weildiePrüfungschon
vordererstenAusführungdurchgeführtwird.
Beispiel:
≡
x:=-1.5;xeinendefiniertenWertzuweisen
WHILEx<=1.5DOBEGIN
.Anweisungsfolge,diefürx-Wertezwischen
.-1.5und1.5ausgeführtwerdensoll
x:=x+0.1;
xerhöhen,damitdieAbbruchbedingungerfüllt
END;wird
≡≡WITH
WITHdientdemvereinfachtenZugriffaufVariableneinesRECORD's.Damit
istbeimZugriffaufumfangreichereRECORD-VariablenwenigerSchreib-
arbeitnötig.
Beispiel:
TYPE
PunktTyp=RECORD
x,y:REAL;
END;
VAR
P:PunktTyp;
≡
statt
P.x:=1.3;
P.y:=7.4;
kanngeschriebenwerden
WITHPDOBEGIN
x:=1.3;
y:=7.4;
END;
≡≡XOR
MitXORkanneinerseitsgeprüftwerden,obvonzweiWahrheitswerten
genaueinererfülltist,andererseitskanneinebitweiseVerknüpfung
zweierINTEGER-Werteerfolgen.
VerknüpfungvonWahrheitswerten(BOOLEAN):
a│b│aXORb
───────┼───────────┼───────────
FALSE│FALSE│FALSE
FALSE│TRUE│TRUE
TRUE│FALSE│TRUE
TRUE│TRUE│FALSE
≡
VerknüpfungvonINTEGER-Werten
│dezimal│binärFürjezweiuntereinanderstehende
─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
a│13│1101VerknüpfungnachderobigenTabelle
b│11│1011fürWahrheitswertedurchgeführt,wobei
─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
aXORb│6│0110ersetzensind.
≡≡Konstante
BlauCRDunkelblau
DunkelgelbDunkelgrauDunkelgrün
DunkelkobaltDunkelrotDunkelviolett
ESCEulerFALSE
GelbGrauGrün
Kobalt
LSTPi
RotSchwarz StrgBildAb2
StrgBildAuf2TRUEViolett
Weiß
≡≡Blau
BlauisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchrift
oderblaueGrafikerzeugt.IhrZahlenwertist9.
≡≡CR
CRisteineCHAR-Konstante,derenWertbeimDrückenderRETURN-Taste
andasProgrammübergebenwird.
≡≡Dunkelblau
DunkelblauisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchrift
oderdunkelblaueGrafikerzeugt.IhrZahlenwertist1.
≡≡Dunkelgelb
DunkelgelbisteineINTEGER-Konstante,dieaufVGA-KartengelbeSchrift
oderdunkelgelbeGrafikerzeugt.IhrZahlenwertist6.
≡≡Dunkelgrau
DunkelgrauisteineINTEGER-Konstante,dieaufVGA-KartengraueSchrift
oderdunkelgraueGrafikerzeugt.IhrZahlenwertist8.
≡≡Dunkelgrün
DunkelgrünisteineINTEGER-Konstante,dieaufVGA-KartengrüneSchrift
oderdunkelgrüneGrafikerzeugt.IhrZahlenwertist2.
≡≡Dunkelkobalt
DunkelkobaltisteineINTEGER-Konstante,dieaufVGA-Kartenblaue
SchriftoderdunkelblaueGrafikerzeugt.IhrZahlenwertist3.
≡≡Dunkelrot
DunkelrotisteineINTEGER-Konstante,dieaufVGA-KartenroteSchrift
oderdunkelroteGrafikerzeugt.IhrZahlenwertist4.
≡≡Dunkelviolett
DunkelviolettisteineINTEGER-Konstante,dieaufVGA-Kartenviolette
SchriftoderdunkelvioletteGrafikerzeugt.IhrZahlenwertist5.
≡≡ESC
ESCisteineCHAR-Konstante,derenWertbeimDrückenderESC-Tastean
dasProgrammübergebenwird.
≡≡Euler
DieKonstanteEuleristdieEulerscheZahle=2.718281828...Die
AbkürzungekannfürdieEulerscheZahlnichtverwendetwerden,weil
einPASCALfürdieExponentialschreibweiseeinerreellenZahlverwendet
wird(z.B.5.4e-3).
≡≡FALSE
FALSE(Falsch)istderWahrheitswerteinerAussage.FALSEkannnureiner
VariablendesTypsBOOLEANzugeordnetwerden.
Beispiel:
VAR
IstWahr:BOOLEAN;
BEGIN
IstWahr:=FALSE;
IFIstWahr=FALSETHENBEGINFürIstWahr=FALSEkannauch
TueDasEine;NOTIstWahrgeschriebenwerden.
END
ELSEBEGIN
TueDasAndere;
END;
END;
≡≡Gelb
GelbisteineINTEGER-Konstante,dieaufVGA-KartengelbeSchriftoder
gelbeGrafikerzeugt.IhrZahlenwertist14.
≡≡Grau
GrauisteineINTEGER-Konstante,dieaufVGA-KartengraueSchriftoder
graueGrafikerzeugt.IhrZahlenwertist7.
AufCGA-undHerkules-Kartenwirddaserreicht,indemniemalszwei
waagerechtodersenkrechtnebeneinanderliegendePunkteinderselben
Farbegezeichnetwerden.EinPunkthatjeweilsdieFarbeWeißund
seinevierNachbarnhabendieFarbeSchwarz.
≡≡Grün
GrünisteineINTEGER-Konstante,dieaufVGA-KartengrüneSchriftoder
grüneGrafikerzeugt.IhrZahlenwertist10.
≡≡Kobalt
KobaltisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchriftoder
blaueGrafikerzeugt.IhrZahlenwertist11.
≡≡LST
LSTisteineKonstantedesDateitypsTEXT.Siedientdazu,WRITE-
AnweisungenaufdenDruckerumzulenken.
InITG-PASCALkönnenstattdessenauchdieAnweisungenAusgabeAufDrucker
undAusgabeAufBildschirmzurUmlenkungderAusgabeverwendetwerden.
DadurchkönnenimUnterschiedzuTURBO-PASCALmitderselbenAnweisungs-
folgeInformationensowohlaufdenBildschirmalsauchaufdenDrucker
ausgegebenwerden.
≡
Beispiele:
TURBO-PASCALundITG-PASCAL:
WriteLn(LST,'DieserTexterscheintaufdemDrucker.');
WriteLn('DieserTexterscheintaufdemBildschirm.');
alternativinITG-PASCAL:
AusgabeAufDrucker;
WriteLn("DieserTexterscheintaufdemDrucker.");
AusgabeAufBildschirm;
WriteLn("DieserTexterscheintaufdemBildschirm.");
≡≡Pi
DieKonstantePIistdieKreiszahlπ=3.141592654...
≡≡Rot
RotisteineINTEGER-Konstante,dieaufVGA-KartenroteSchriftoder
roteGrafikerzeugt.IhrZahlenwertist12.
≡≡Schwarz
SchwarzisteineINTEGER-Konstante,dieaufCGA-,Herkules-undVGA-
KartenschwarzeSchriftoderschwarzeGrafikerzeugt.IhrZahlenwert
ist0.
≡≡StrgBildAb2
StrgBildAb2isteineCHAR-Konstante,derenWertbeimDrückender
TastenkombinationStrg-Bild-Ab(Ctrl-PgDn)alszweitesZeichenandas
Programmübergebenwird.MitdieserTastenkombinationkanndieProzedur
LiesEingabenbeendetwerden,umaufdenfolgendenDatensatzzuwechseln.
Beispiel:
TYPE
EinEintrag=RECORD
Nachname,Vorname,Ort,Straße:STRING[20];
Plz,HausNr,Vorwahl,TelNr:LONGINT;
END;
CONST
Anzahl=3;
VAR
TelefonListe:ARRAY[1..Anzahl]OFEinEintrag;
n:INTEGER;
≡
BEGIN
n:=1;
REPEAT
WITHTelefonListe[n]DOBEGIN
EingabeFeld(1,3,"Name:",Nachname);
EingabeFeld(1,4,"Vorname:",Vorname);
EingabeFeld(1,5,"Plz:",Plz);
EingabeFeld(25,5,"Ort:",Ort);
EingabeFeld(1,6,"Straße:",Straße);
EingabeFeld(35,6,"Nr.:",HausNr);
EingabeFeld(1,7,"Vorwahl:",Vorwahl);
EingabeFeld(30,7,"Telefon-Nr:",TelNr);
LiesEingaben;
END;
≡
CASELetzteTasteOF
CR,StrgBildAb2:nächstenDatensatzbearbeiten
n:=n+1;
ESC:
n:=Anzahl+1;
StrgBildAuf2:
vorigenDatensatznocheinmal
IFn>1THENBEGINbearbeiten
n:=n-1;
END;
END;
UNTILn>Anzahl;
END;
≡≡StrgBildAuf2
StrgBildAuf2isteineCHAR-Konstante,derenWertbeimDrückender
TastenkombinationStrg-Bild-Auf(Ctrl-PgUp)alszweitesZeichenandas
Programmübergebenwird.MitdieserTastenkombinationkanndieProzedur
LiesEingabenbeendetwerden,umaufdenvorangegangenenDatensatzzu
wechseln.
Beispiel:
TYPE
EinEintrag=RECORD
Nachname,Vorname,Ort,Straße:STRING[20];
Plz,HausNr,Vorwahl,TelNr:LONGINT;
END;
CONST
Anzahl=3;
VAR
TelefonListe:ARRAY[1..Anzahl]OFEinEintrag;
n:INTEGER;
≡
BEGIN
n:=1;
REPEAT
WITHTelefonListe[n]DOBEGIN
EingabeFeld(1,3,"Name:",Nachname);
EingabeFeld(1,4,"Vorname:",Vorname);
EingabeFeld(1,5,"Plz:",Plz);
EingabeFeld(25,5,"Ort:",Ort);
EingabeFeld(1,6,"Straße:",Straße);
EingabeFeld(35,6,"Nr.:",HausNr);
EingabeFeld(1,7,"Vorwahl:",Vorwahl);
EingabeFeld(30,7,"Telefon-Nr:",TelNr);
LiesEingaben;
END;
≡
CASELetzteTasteOF
CR,StrgBildAb2:nächstenDatensatzbearbeiten
n:=n+1;
ESC:
n:=Anzahl+1;
StrgBildAuf2:
vorigenDatensatznocheinmal
IFn>1THENBEGINbearbeiten
n:=n-1;
END;
END;
UNTILn>Anzahl;
END;
≡≡TRUE
TRUE(Wahr)istderWahrheitswerteinerAussage.TRUEkannnureiner
VariablendesTypsBOOLEANzugeordnetwerden.
Beispiel:
VAR
IstWahr:BOOLEAN;
BEGIN
IstWahr:=TRUE;
IFIstWahr=TRUETHENBEGIN FürIstWahr=TRUEkannauch
TueDasEine; IstWahrgeschriebenwerden.
END
ELSEBEGIN
TueDasAndere;
END;
END;
≡≡Violett
ViolettisteineINTEGER-Konstante,dieaufVGA-KartenvioletteSchrift
odervioletteGrafikerzeugt.IhrZahlenwertist13.
≡≡Weiß
WeißisteineINTEGER-Konstante,dieaufCGA-,Herkules-undVGA-Karten
weißeSchriftoderweißeGrafikerzeugt.IhrZahlenwertist15.
≡≡Typen
CHARSTRINGBOOLEANBYTEINTEGER
WORDLONGINTREALDOUBLEEXTENDED
FILE TEXTSIGNAL
ITG-PASCALunterscheidetnur8verschiedeneDatentypenvoneinander.
1)CHAR:einzelnerBuchstabe
2)STRING:Zeichenkette,eineAneinanderfügungvonBuchstaben
3)BOOLEAN:Aussagetyp,WAHRoderFALSCH
4)LONGINT:ganzeZahlenimBereichvon-2147483648bis2147483647
5)EXTENDED:DezimalzahlenmiteinemBetragvon3.4*10^-4932bis
1,1*10^4932
6)FILE:Datei-VariablebeliebigenTyps
7) TEXT:Datei-VariablefürStrings(Zeichenketten)
8)SIGNAL:SynchronisationvonProzessen
≡≡CHAR
CHAR:einzelnerBuchstabe
Beispiel:
VAR
c:CHAR;Deklaration
BEGIN
c:="b";erlaubteZuweisung,chatjetztdenWert"b"
c:="ABC";falsch!ckannnurEINENBuchstabenaufnehmen
c:=65;falsch!ckannkeineZahlenwerteannehmen
c:=CHR(65);cwirdderWert"A"zugewiesen
.(65.BuchstabederASCII-Tabelle)
.
END;
≡≡STRING
STRING:Zeichenkette,eineAneinanderfügungvonBuchstaben
BeiderDeklarationsolltediebenötigteZeichenzahl
angegebenwerden,weilalleREAD-Anweisungenein
EingabefensterentsprechendderDeklarationslänge
öffnen.
Deklarations-Beispiele:
s255:STRING;255Zeichen
s10:STRING[10];10Zeichen
s:STRING[Max];mit1<=Max<=255
≡≡BOOLEAN
BOOLEAN:Aussagetyp,WAHRoderFALSCH
≡≡BYTE
sieheLONGINT
≡≡INTEGER
sieheLONGINT
≡≡WORD
sieheLONGINT
≡≡LONGINT
LONGINT:ganzeZahlenimBereichvon-2147483648bis2147483647
DieDatentypenBYTE,INTEGERundWORDwerdenintern
imDatenformatLONGINTverwaltetundkönnendeshalb
WerteindemselbenBereichwieLONGINT-Variablen
annehmen.
≡≡REAL
sieheEXTENDED
≡≡DOUBLE
sieheEXTENDED
≡≡EXTENDED
EXTENDED:DezimalzahlenmiteinemBetragvon3.4*10^-4932bis
1.1*10^4932miteinerGenauigkeitvon19bis20Stellen
DieDatentypenREALundDOUBLEwerdeninternim
DatenformatEXTENDEDverwaltetundkönnendeshalb
WerteindemselbenBereichwieEXTENDED-Variablen
annehmen.
≡≡FILE
FILE:Datei-VariablebeliebigenTyps
ImUnterschiedzuTURBO-PASCALkönneneinerDatei-
VariablenbeliebigeDatentypenaußerFILE-und TEXT-
Typenzugeordnetwerden,ohnedaßeinespezielle
Deklarationerfolgenmuß.AufdieseWeisekönnenin
einerDateibeliebigvieleVariablennacheinander
abgespeichertwerden.DieOperationenREADundWRITEin
ITG-PASCALentsprechendannBLOCKREADUNDBLOCKWRITEin
TURBO-PASCAL.DasLesenundSchreibentypisierterDateien
entsprichtdemvonTURBO-PASCAL.
≡≡ TEXT
TEXT:Datei-VariablefürStrings(Zeichenketten)
InITG-PASCALkönnennurdieAnweisungen
READLN(TextDatei,Zeichenkette)und
WRITELN(TextDatei,Zeichenkette)verwendetwerden.
READ,WRITEundChar-Variablendürfennichtverwendet
werden.
≡≡SIGNAL
SIGNAL:SynchronisationvonProzessen
WennzweiProzesse,diegleichzeitigausgeführtwerden,auf
ZwischenergebnissedesjeweilsanderenProzessesangewiesen
sind,kanneinerderProzessedurchWarteAufSignal(SignalVar)
zumWartenveranlaßtwerden,bisderandereProzeßdurch
SendeSignal(SignalVar)mitteilt,daßdieZwischenergebnisse
bereitgestelltsind.
≡≡Igel-Grafik
DreheAufGeheNachHinten
IgelWinkel
IgelZeigen
LinkerBogen
LinksMaßstabMitIgel
MitStiftOhneIgelOhneStift
RechterBogen RechtsStiftFarbe
UrsprungVorneWoIgelX
WoIgelY
≡≡DreheAuf
DreheAufrichtetdenIgelaufeinenabsolutenWinkelaus,der
vonderpositivenx-AchseausgegendenUhrzeigersinnim
mathematischpositivenUmlaufsinninWinkelgradgemessenwird.
Deklaration:
PROCEDUREDreheAuf(AbsoluterWinkel:REAL);
Beispiel:
DreheAuf(90);DerIgelzeigtnachoben.
DreheAuf(180);DerIgelzeigtnachlinks.
(Drehungum180°entgegendemUhrzeiger-
sinnvonderpositivenx-Achseaus)
DreheAuf(-180);AuchhierzeigtderIgelnachlinks.
(Drehungum180°imUhrzeigersinnvon
derpositivenx-Achseaus)
≡≡GeheNach
DerIgelwirdinseinemKoordinatensystem,dessenUrsprungder
MittelpunktdesGrafikfenstersist,dessenpositivex-Achsenach
rechtsunddessenpositivey-Achsenachobenzeigt,zudenangegebenen
Koordinatenbewegt,ohnedaßerdabeizeichnet.
DieMaximalwertesindinx-Richtung-320und320undiny-Richtung-240
und240füralleGrafikkarten.
EsgibtzweiweitereKoordinatensystemefürGrafikohneIgel(s.auch
MoveTo,WeltGeheNach)undfürdenTextcursor(s.auchGotoXY).
≡
Deklaration:
PROCEDUREGeheNach(xPos,yPos:INTEGER);
Beispiel:
GeheNach(0,0);bewegtdenIgelaufdenUrsprung
seinesKoordinatensystems.
GeheNach(200,100);bewegtdenIgelvomUrsprungseines
Koordinatensystemsausgesehenum
200Schrittenachrechtsundum
100nachoben.
≡≡Hinten
DurchdieAnweisungHinten(x)wirdderIgelxSchritte
rückwärtsbewegt.WenndieBewegungmitStifterfolgt,
istseineSpuranschließendsichtbar.
Deklaration:
PROCEDUREHinten(Schritte:REAL);
Beispiel:
Hinten(50);bewegtdenIgel50Schritterückwärts.
≡≡IgelWinkel
DieFunktionIgelWinkelliefertdenWinkelzwischender
Bewegungsrichtungvorwärtsundderpositivenx-Achseim
mathematischpositivenUmaufsinngemessen.
Deklaration:
FUNCTIONIgelWinkel:REAL;
Beispiel:
DreheAuf(100);
Write(IgelWinkel);drucktdenWert100fürden
Winkelaus.
≡≡IgelZeigen
DieFunktionIgelZeigenergibtdenWertwahr(TRUE),wennder
IgelnachjederIgelbewegunggezeichnetwerdensoll.
AndernfallsergibtsiedenWertfalsch(FALSE).
Deklaration:
FUNCTIONIgelZeigen:BOOLEAN;
Beispiel:
MitIgel;
Write(IgelZeigen);drucktTRUE,
OhneIgel;
Write(IgelZeigen);drucktFALSEaus.
≡≡LinkerBogen
MitLinkerBogenbeschreibtderIgeleinen Bogenvonseiner
augenblicklichenPositionundRichtungausnachlinksund
hinterläßtdabeieineSpur,wenndieBewegungmitStift
erfolgt.
Deklaration:
PROCEDURELinkerBogen(Radius,Winkel:REAL);
Beispiel:
LinkerBogen(100,45);DerIgelbeschreibteinen Bogennach
linksmiteinemRadiusvon100
SchrittenundeinemWinkelvon45°.
≡≡ Links
Links(x)veranlaßtdenIgel,sichausseiner
augenblicklichenRichtungumxGradnachlinks
zudrehen.
Deklaration:
PROCEDURELinks(Winkel:REAL);
Beispiel:
DreheAuf(0);DerIgelzeigtnachrechts.
Links(90);DerIgelzeigtnachoben.
≡≡Maßstab
MitderAnweisungMaßstabwirdfestgelegt,mitwelchemFaktor
dieinGeheNach,VorneundHintenübergebenenWertemultipli-
ziertwerden.
Damitistesz.B.möglich,imHefteinDreieckzukonstruieren
unddenIgeldiesesDreieckaufdemBildschirmzeichnenzulassen,
ohnejedeeinzelneStreckeandieSchrittzahlaufdemBildschirm
anzupassen.
Deklaration:
PROCEDUREMaßstab(MaßstabsFaktor:REAL);
Beispiel:
Maßstab(1);
Vorne(100);Igel1*100Schrittevorwärtsbewegen
Maßstab(50);
Vorne(1.5);Igelum1.5*50=75Schrittevorwärtsbewegen
≡≡MitIgel
NachderAnweisungMitIgelistderIgelsichtbarundwird
jeweilsnacheinerBewegungneugezeichnetbisdieAnweisung
OhneIgelausgeführtwird.DurchdieFunktionIgelZeigenläßt
sichfeststellen,obderIgelgezeigtwird.
Deklaration:
PROCEDUREMitIgel;
Beispiel:
MitIgel;Igelzeigen.
Vorne(100);Igelwegwischen,100Schrittevorwärtsbewegen
undneuzeichnen.
OhneIgel;Igelwegwischenundnichtwiederneuzeichnen.
Vorne(100);Igelum100Schrittevorwärtsbewegen,ohneihn
zuzeichnen.EsistnurseineSpursichtbar.
≡≡MitStift
DurchMitStiftwirdfestgelegt,daßdieSpurdesIgelsgezeichnet
werdensoll.
Deklaration:
PROCEDUREMitStift;
Beispiel:
OhneIgel;Igelnichtzeigen.
MitStift;Stiftabsenken.
Vorne(100);Igel100SchrittevorwärtsbewegenundseineSpur
zeichnen.
OhneStift;Stiftanheben.
Vorne(100);DerIgelhinterläßtkeineSpur.
≡≡OhneIgel
NachderAnweisungOhneIgelistderIgelnichtsichtbar.Es
wirdaberseineSpurgezeichnet,wenndieBewegungmitStift
erfolgt.DurchdieFunktionIgelZeigenläßtsichfeststellen,
obderIgelgezeigtwird.
Deklaration:
PROCEDUREOhneIgel;
Beispiel:
MitIgel;Igelzeigen.
Vorne(100);Igelwegwischen,100Schrittevorwärtsbewegen
undneuzeichnen.
OhneIgel;Igelwegwischenundnichtwiederneuzeichnen.
Vorne(100);Igelum100Schrittevorwärtsbewegen,ohneihn
zuzeichnen.EsistnurseineSpursichtbar.
≡≡OhneStift
DurchOhneStiftwirdfestgelegt,daßdieSpurdesIgelsnicht
gezeichnetwerdensoll.
Deklaration:
PROCEDUREOhneStift;
Beispiel:
OhneIgel;Igelnichtzeigen.
MitStift;Stiftabsenken.
Vorne(100);Igel100SchrittevorwärtsbewegenundseineSpur
zeichnen.
OhneStift;Stiftanheben.
Vorne(100);DerIgelhinterläßtkeineSpur.
≡≡RechterBogen
MitRechterBogenbeschreibtderIgeleinen Bogenvonseiner
augenblicklichenPositionundRichtungausnachrechtsund
hinterläßtdabeieineSpur,wenndieBewegungmitStift
erfolgt.
Deklaration:
PROCEDURERechterBogen(Radius,Winkel:REAL);
Beispiel:
RechterBogen(100,45);DerIgelbeschreibteinen Bogennach
rechtsmiteinemRadiusvon100
SchrittenundeinemWinkelvon45°.
≡≡ Rechts
Rechts(x)veranlaßtdenIgel,sichausseiner
augenblicklichenRichtungumxGradnachrechts
zudrehen.
Deklaration:
PROCEDURERechts(Winkel:REAL);
Beispiel:
DreheAuf(0);DerIgelzeigtnachrechts.
Rechts(90);DerIgelzeigtnachunten.
≡≡Ursprung
DieAnweisungUrsprungentsprichtderAnweisungGeheNach(0,0)
undbewegtdenIgelzumUrsprungseinesKoordinatensystems.Er
zeigtdabeinachoben.SeinWinkelzurpositivenx-Achsebeträgt
dann90°.EineBeschreibungdesKoordinatensystemsistunter
GeheNachzufinden.
Deklaration:
PROCEDUREUrsprung;
Beispiel:
Ursprung;plaziertdenIgelmittenimGrafikfenster.
≡≡Vorne
DurchdieAnweisungVorne(x)wirdderIgelxSchritte
vorwärtsbewegt.WenndieBewegungmitStifterfolgt,
istseineSpuranschließendsichtbar.
Deklaration:
PROCEDUREVorne(Schritte:REAL);
Beispiel:
Vorne(50);bewegtdenIgel50Schrittevorwärts.
≡≡WoIgelX
DurchdieFunktionWoIgelXläßtsichdiex-Koordinatedes
AufenthaltsortesdesIgelsinseinemKoordinatensystem
feststellen.
Deklaration:
FUNCTIONWoIgelX:INTEGER;
Beispiel:
GeheNach(200,100);
Write(WoIgelX);drucktdenWert200.
≡≡WoIgelY
DurchdieFunktionWoIgelYläßtsichdiey-Koordinatedes
AufenthaltsortesdesIgelsinseinemKoordinatensystem
feststellen.
Deklaration:
FUNCTIONWoIgelY:INTEGER;
Beispiel:
GeheNach(200,100);
Write(WoIgelY);drucktdenWert100.
≡≡Standard-Grafik
CircleGetMaxXGetMaxY
GetXGetYLine
LineToMoveTo
≡≡Circle
CirclezeichneteinenKreisaufdemBildschirm.DabeiCGA-und
Hercules-KartenderAbstandzweierbenachbarterBildpunkteinx-
undiny-Richtungverschiedenist,werdendiey-Koordinatenmit
einemKorrekturfaktormultipliziert.(s.auchyKorrekturFaktor)
Deklaration:
PROCEDURECircle(xm,ym,Radius);
Beispiel:
Circle(50,100,30);zeichneteinenKreismitdemMittelpunkt
M(50/100)unddemRadiusr=30,derinx-
Richtung30Bildpunktenentspricht.
≡≡GetMaxX
GetMaxXgibtdieAnzahlderBildpunkteminuseinsinx-
RichtungaufdemGrafikschirman.ITG-PASCALverwendet
füralleGrafikkarteneinheitlich640Punkteinx-Richtung.
Deklaration:
FUNCTIONGetMaxX:INTEGER;
Beispiel:
Write(GetMaxX);druckt639=640-1füralleGrafik-
kartenaus.
≡≡GetMaxY
GetMaxYgibtdieAnzahlderBildpunkteminuseinsiny-
RichtungaufdemGrafikschirman.
Deklaration:
FUNCTIONGetMaxY:INTEGER;
Beispiel:
Write(GetMaxY);druckt
199=200-1fürCGA-Karten
347=348-1fürHerculeskarten
349=350-1fürEGA-Karten
479=480-1fürVGA-Karten
≡≡GetX
GetXliefertdiex-KoordinatedesGrafik-Cursorszurück.
Deklaration:
FUNCTIONGetX:INTEGER;
Beispiel:
MoveTo(100,50);
Write(GetX);druckt100aus.
LineTo(-200,40);
Write(GetX);druckt-200aus.
≡≡GetY
GetYliefertdiey-KoordinatedesGrafik-Cursorszurück.
Deklaration:
FUNCTIONGetY:INTEGER;
Beispiel:
MoveTo(100,50);
Write(GetY);druckt50aus.
LineTo(-200,40);
Write(GetY);druckt40aus.
≡≡Line
Line(x1,y1,x2,y2)zeichneteineStreckezwischenzweiPunkten
P1(x1/y1)undP2(x2/y2)aufdemGrafikschirm.DerUrsprungdes
KoordinatensystemsliegtinderMittedesBildschirmfensters.
DieLagedesGrafik-Cursorswirdnichtbeeinflußt.
Deklaration:
PROCEDURELine(x1,y1,x2,y2:INTEGER);
Beispiel:
Line(-100,-30,50,80);zeichnetdieStreckemitden
EndpunktenP1(-100/-30)und
P2(50/80).
≡≡LineTo
LineTo(x,y)verbindetdenPunkt,aufdemsichderGrafik-
Cursorbefindet,mitdem PunktP(x/y).Anschließendwirdder
Grafik-CursoraufdenPunktP(x/y)gesetzt.(s.auchMoveTo)
Deklaration:
LineTo(x,y:INTEGER);
Beispiel:
MoveTo(-100,-30);setztdenGrafik-CursoraufP(-100/-30).
LineTo(50,80);verbindetP(-100/-30)mitQ(50/80)und
setztdenGrafik-CursoraufQ(50/80).
[ErgibtdasgleichewieLine(-100,-30,50,80)]
LineTo(0,70);verbindetQ(50/80)mitR(0/70).
≡≡MoveTo
ITG-PASCALhatvierverschiedeneCursorfürText,Standard-Grafik,
Igel-GrafikundWeltkoordinaten.
MoveTobewegtdenGrafik-CursoraneineneuePosition.Esentspricht
denAnweisungenGeheNachfürdenIgelundGotoXYfürdenText-Cursor.
Deklaration:
MoveTo(x,y:INTEGER);
Beispiel:
MoveTo(-100,-30);setztdenGrafik-CursoraufP(-100/-30).
LineTo(50,80);verbindetP(-100/-30)mitQ(50/80)und
setztdenGrafik-CursoraufQ(50/80).
MoveTo(-15,-45);setztdenGrafik-CursoraufR(-15/-45).
LineTo(0,70);verbindetR(-15/-45)mitS(0/70).
≡≡ITG-Pascal-Grafik
BogenDefiniereWelt DruckeBildschirm
FärbenFunktionsGraf FunktionstermFehler
GrafGotoXYGrafikFenster GrafikKorrekturAus
GrafikKorrekturEinGrafikSchirm
GrafWrite
KreisMitWeltRaster OhneweltRaster
PapierFarbe PunktSetzeFontWerte
StiftFarbeStreckeTextSchirm
WähleFontWeltGeheNach
WeltPunkt
WeltStreckeWeltStreckeNachWischen
WoGrafikXWoGrafikYyKorrekturFaktor
≡≡ Bogen
MitBogenwirdeinKreisbogengezeichnet.
Deklaration:
PROCEDUREBogen(xm,ym,Radius,AnfangsWinkel,DrehWinkel:INTEGER);
Beispiel:
Bogen(0,0,100,45,90);zeichneteinenBogen,deraufeinemKreis
mitdemMittelpunktM(0/0)liegtunddes-
senRadiusr=100ist,beginnendbeidem
Winkelα=45°zurpositivenx-Achse,wobei
dasEndedesBogensbeiß=45°+90°=135°
liegt.
≡≡DefiniereWelt
MitDefiniereWeltwirdeinKoordinatensystemgezeichnet,indemmitden
Welt-ProzedurenWeltPunkt,WeltStrecke,WeltGeheNachundWeltStreckeNach
orientiertandenKoordinatendesSystemsgezeichnetwird.Diegeforder-
tenGrenzendesSystemswerdenalsMinimumangesehen.ITG-PASCALzeichnet
daskleinsteKoordinatensystem,dasgrößeristalsdasgeforderte,wobei
daraufgeachtetwird,daßderRasterabstandaufdenAchsengleichmäßig
ist.AufCGA-,Herkules-undEGA-KartenmußdazuvorherderSchalter
yKorrekturAusgesetztwerden.AndernfallsergibtsichfürdasRasterin
y-RichtungkeinegleichmäßigeEinteilung.WennkeinRastergezeichnet
werdensoll,istVORHERdieAnweisungOhneWeltRasterauszuführen.
Deklaration:
PROCEDUREDefiniereWelt(LinkeGrenze,UntereGrenze,RechteGrenze,
ObereGrenze:REAL);
Beispiel:
≡
yKorrekturAus;gleichmäßigesRaster
MitWeltRaster;Punktrasterzeichnen,wenneine
Weltdefiniertwird
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
WeltStrecke(-3,-2.2,7.3,3.4);StreckemitdenEndpunkten
P(-3/-2,2)undQ(7,3/3,4)zeichnen
≡≡DruckeBildschirm
MitDruckeBildschirmwirdderInhaltdesBildschirmsowohlimTextmodus
alsauchimGrafikmodusmitdemDruckergedruckt.WeilbeieinemDrucker
dasLängenverhältnisvonStreckeninx-undy-Richtungandersistals
aufdemBildschirm,erscheinenKreisealsEllipsenundQuadrateals
Rechtecke.
Deklaration:
PROCEDUREDruckeBildschirm;
Beispiel:
GrafikSchirm;
ZeichneIrgendetwas;HierkanneinebeliebigeZeichnungerstellt
werden.
DruckeBildschirm;DieZeichnungwirdgedruckt.
TextSchirm;
SchreibeIrgendetwas;HierkannbelieberTextgeschriebenwerden.
DruckeBildschirm;DerTextwirdgedruckt.
≡≡Färben
Färben(x,y,Farbe)färbteinenBereichbeginnendim PunktP(x/y)in
derFarbeFarbeein,dervoneinerLiniebegrenztist,dienicht
diePapierfarbehat.AlsFarbensindschwarz,grauundweiß
zugelassen.
Deklaration:
PROCEDUREFärben(x,y,Farbe:INTEGER);
Beispiel:
≡
PapierFarbe(Schwarz);
StiftFarbe(Weiß);
Kreis(100,50,30);
Färben(100,50,Grau);WeilderPunktP(100/50)innerhalbdes
Kreisesliegt,wirdderKreisgrauausge-
füllt.FüreinenPunktaufdemKreis
geschiehtnichts,füreinenPunktaußerhalb
desKreiseswirdderBereichaußerhalbgrau
gefärbt.
≡≡FunktionsGraf
FunktionsGrafzeichnetdenGrafeneinerFunktioninnerhalbderangegebenen
Grenzen.Dabeiwirdversucht,einegleichmäßigeEinteilungderAchsenzu
erhalten.DertatsächlichgezeichneteAusschnittistetwasgrößerals
angegeben.ZumZeichnenwirdeinVerfahrenbenutzt,dasproBildpunktzwei
bisdreiFunktionswerteberechnet,damitauchinungünstigenFällen
einvernünftigerFunktionsgrafentsteht.
ACHTUNG:DieunabhängigeVariableistmit"x"festgelegt!
Deklaration:
PROCEDUREFunktionsGraf(FunktionsTerm:STRING;
LinkeGrenze,UntereGrenze,RechteGrenze,
ObereGrenze:REAL);
Beispiel:
≡
GrafikKorrekturAus;gleichmäßigesRasterin
y-Richtung
FunktionsGraf("sin(x)",-5,-1.5,5,1.5);GrafderSinus-Funktion
für-5<=x<=5und
-1.5<=y<=1.5
FunktionsGraf("sin(2x)",-5,-2,5,2);richtig:2*x!
Write(FunktionstermFehler);ergibtdenWert6,weil
das6.Zeichenfehler-
haftist.
≡≡FunktionstermFehler
WenndenProzedurenFunktionsGrafoderDefiniereFunktionstermein
fehlerhafterFunktionstermübergebenwurde,ergibtdieFunktion
FunktionstermFehlerdieStelle,anderderFehlerauftrat,ansonsten
ergibtsieNull.
Deklaration:
FUNCTIONFunktionstermFehler:INTEGER;
Beispiel:
FunktionsGraf("sin(2x)",-5,-2,5,2);richtig:2*x!
Write(FunktionstermFehler);ergibtdenWert6,weildas
6.Zeichenfehlerhaftist.
≡≡GrafGotoXY
GrafGotoXY(x,y)setztdenGrafikcursoraufden PunktP(x/y).Fürdie
KoordinatengeltendieWertedesKoordinatensystemsimGrafikmodus.
DerMittelpunktdesBildschirmshatdieKoordinaten(0/0).Diex-Werte
nehmennachrechtsbis320,nachlinksbis-320zu,diey-Wertenachoben
jenachGrafikkartebis240,nachuntenbis-240.
Deklaration:
PROCEDUREGrafGotoXY(x,y:WORD);
Beispiel:
GrafGotoXY(0,0);linkerobererEckpunkt
GrafGotoXY(-320,240);linkerobererEckpunkt
≡≡GrafikFenster
WennnureinbestimmterBereichdesGrafikschirmsfüreineZeichnung
verwendetwerdensoll,kannderübrigeBereichgesperrtwerden.Dazu
dientdieAnweisungGrafikFenster(x1,y1,x2,y2),mitdereinRechteck
mitbildschirmparallelenSeitenmitdemlinkenoberenEckpunktP(x1/y1)
unddemrechtenunterenEckpunktQ(x2/y2)alsZeichenflächedefiniert
wird.DerUrsprungdesKoordinatensystemsliegtinnerhalbdieses
FenstersautomatischimMittelpunktdesFensters.
Deklaration:
GrafikFenster(x1,y1,x2,y2:INTEGER);
≡
Beispiel:
GrafikFenster(50,20,500,220);öffneteinFenstermitx-Werten
zwischen-225und225undy-Werten
zwischen-100und100.Dielinke
obereEckeistinx-Richtung50
Punkte,iny-Richtung20Punktevon
demlinkenoberenEckpunktdes
Bildschirmsentfernt.
≡≡GrafikKorrekturAus
GrafikKorrekturAusbewirkt,daßPunkt-undStrecken-Zeichnungennicht
mehrdenBildschirmverzerrungenbeiCGA-,Hercules-undEGA-Karten
angepaßtwerden.Deshalbstimmendiey-KoordinatenfürStandardgrafik
undfürIgelgrafikbeiausgeschalteterKoorekturnichtmehrüberein.
Deklaration:
PROCEDUREGrafikKorrekturAus;
Beispiel:
≡
GrafikKorrekturEin; Korrekturiny-Richtungeinschalten
Circle(-105,0,100);Kreisschlagen
Line(-105,0,-105,100);StreckevomKreismittelpunktsenkrecht
nachobenzeichnen.WegenderKorrektur
endetsieaufderKreislinie.
GrafikKorrekturAus; Korrekturiny-Richtungausschalten
Circle(105,0,100);Kreisschlagen
Line(105,0,105,100);StreckevomKreismittelpunktsenkrecht
nachobenzeichnen.Wegenderausge-
schaltetenKorrekturendetsienicht
aufderKreislinie.
≡≡GrafikKorrekturEin
GrafikKorrekturEinbewirkt,daßPunkt-undStrecken-Zeichnungen
denBildschirmverzerrungenangepaßtwerden.Deshalbstimmendie
y-KoordinatenfürStandardgrafikundfürIgelgrafikjetztbeiallen
Grafikkartenüberein.
Deklaration:
PROCEDUREGrafikKorrekturEin;
Beispiel:
≡
GrafikKorrekturEin; Korrekturiny-Richtungeinschalten
Circle(-105,0,100);Kreisschlagen
Line(-105,0,-105,100);StreckevomKreismittelpunktsenkrecht
nachobenzeichnen.WegenderKorrektur
endetsieaufderKreislinie.
GrafikKorrekturAus; Korrekturiny-Richtungausschalten
Circle(105,0,100);Kreisschlagen
Line(105,0,105,100);StreckevomKreismittelpunktsenkrecht
nachobenzeichnen.Wegenderausge-
schaltetenKorrekturendetsienicht
aufderKreislinie.
≡≡GrafikSchirm
MitderAnweisungGrafikSchirmwirdausdemTextmodusindenGrafik-
modusgewechselt.ITG-PASCALerkenntdievorhandeneGrafikkarte
automatisch.GrafikanweisungenwerdennurimGrafikmodusausgeführt,
sonstbrichtdasProgrammmitderFehlermeldung"Programmwegen
GrafikanweisungimTextmodusinZeilexxxbeendet."ab.
Deklaration:
PROCEDUREGrafikSchirm;
Beispiel:
≡
GrafikSchirm;ZeichnenimGrafikmodusermöglichen.
Strecke(0,0,100,100);EineStreckewirdgezeichnet.
WriteLn("imGrafikmodus");AufdemGrafikschirmwird
"imGrafikmodus"gedruckt.
TextSchirm;ZurückindenTextmodus.
WriteLn("imTextmodus");AufdemTextschirmwird"imTextmodus"
gedruckt.DieTextausgabeerfolgthier
wesentlichschnelleralsimGrafikmodus.
≡≡GrafWrite
MitGrafWriteerfolgtdieTextausgabeaufdemGrafikschirmandenmit
GrafGotoXYdefiniertenKoordinatendesGrafikschirms.Esgeltendie
selbenBedingungenwiebeiderWrite-AnweisungimTextmodus.
ACHTUNG:VordererstenVerwendungvonGrafWritemußmit"WähleFont"
========einZeichensatzgeladenwerden,sonstbrichtdasProgramm
miteinerFehlermeldungab.
Deklaration:
PROCEDUREGrafWrite(v:VariableBeliebigenTyps);
Beispiel:
≡
GrafikSchirm;SchreibenimGrafikmodusermöglichen.
WähleFont("LITT"); Zeichensatzladen
SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
≡≡Kreis
KreiszeichneteinenKreisaufdemBildschirm.DabeiCGA-,Hercules-
undEGA-KartenderAbstandzweierbenachbarterBildpunkteinx-
undiny-Richtungverschiedenist,werdendiey-Koordinatenmit
einemKorrekturfaktormultipliziert.(s.auchyKorrekturFaktor)
Deklaration:
PROCEDUREKreis(xm,ym,Radius);
Beispiel:
Kreis(50,100,30);zeichneteinenKreismitdemMittelpunkt
M(50/100)unddemRadiusr=30,derinx-
Richtung30Bildpunktenentspricht.
≡≡MitWeltRaster
MitWeltRasterbewirkt,daßindemmitDefiniereweltdefinierten
KoordinatensystemeinPunktrastergezeichnetwird.DasRasterkann
vorderDefinitionderWeltmitOhneWeltRasterunterdrücktwerden.
StandardeinstellungistMitWeltRaster.
Deklaration:
PROCEDUREMitWeltRaster;
Beispiel:
yKorrekturAus;gleichmäßigesRaster
MitWeltRaster;einPunktrasterzeichnen,wenn
eineWeltdefiniertwird
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
≡≡OhneWeltRaster
OhneWeltRasterbewirkt,daßindemmitDefiniereweltdefinierten
KoordinatensystemkeinPunktrastergezeichnetwird.
StandardeinstellungistMitWeltRaster.
Deklaration:
PROCEDUREOhneWeltRaster;
Beispiel:
yKorrekturAus;gleichmäßigesRaster
OhneWeltRaster;keinPunktrasterzeichnen,wenn
eineWeltdefiniertwird
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
≡≡PapierFarbe
MitPapierFarbewirddieFarbedesHintergrundesfüralleGrafikanwei-
sungenfestgesetzt.DerHintergrundwirdabererstdurchdieAnweisung
WischenindergewähltenFarbedargestellt.ZurVerfügungstehendie
FarbenSchwarz,GrauundWeiß.AndereWertesindnichtzugelassen.
Deklaration:
PROCEDUREPapierFarbe(Farbe:INTEGER);
Beispiel:
PapierFarbe(Schwarz);
Wischen;DerHintergrunderscheintschwarz.
PapierFarbe(Grau);
Wischen;DerHintergrunderscheintgrau.
PapierFarbe(Weiß);
Wischen;DerHintergrunderscheintweiß.
≡≡ Punkt
MitderAnweisungPunkt(x,y)wirdderPunktP(x/y)aufdem
Grafikschirmgezeichnet.DerUrsprungdesAchsenkreuzesliegt
inderMittedesGrafikfensters.
Deklaration:
PROCEDUREPunkt(x,y:INTEGER);
Beispiel:
Punkt(100,50);zeichnetdenPunktP(100/50).
≡≡SetzeFontWerte
NachdemmitWähleFonteinVektor-Zeichensatzgeladenwurde,kannmit
SetzeFontWertesowohldieGrößederBuchstabeninbeidenRichtungenals
auchdieSchreibrichtungverändertwerden.DieRichtungwirdalsWinkel
gegendenUhrzeigersinnzurpositivenx-AchseinGradgemessen.
Deklaration:
PROCEDURESetzeFontWerte(xGröße,yGröße,Richtung:REAL);
Beispiel:
GrafikSchirm;SchreibenimGrafikmodusermöglichen.
WähleFont("LITT"); Zeichensatzladen
SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
≡≡StiftFarbe
MitStiftFarbewirddieFarbedesZeichenstiftesfüralleGrafik-
anweisungenfestgesetzt,diekeineFarbealsParameterenthalten.
ZurVerfügungstehendieFarbenSchwarz,GrauundWeiß.Andere
Wertesindnichtzugelassen.
Deklaration:
PROCEDUREStiftFarbe(Farbe:INTEGER);
Beispiel:
StiftFarbe(Grau);ZeichenfarbeGraufestlegen.
Strecke(0,0,100,50);Weilnichtjeder Punktgezeichnet
wird,erscheintdieStreckeinihrer
Farbenichtsointensiv,alsograu.
≡≡Strecke
Strecke(x1,y1,x2,y2)zeichneteineStreckezwischenzweiPunkten
P1(x1/y1)undP2(x2/y2)aufdemGrafikschirm.DerUrsprungdes
KoordinatensystemsliegtinderMittedesBildschirmfensters.
Deklaration:
PROCEDUREStrecke(x1,y1,x2,y2:INTEGER);
Beispiel:
Strecke(-100,-30,50,80);zeichnetdieStreckemitden
EndpunktenP1(-100/-30)und
P2(50/80).
≡≡TextSchirm
MitderAnweisungTextSchirmwirdausdemGrafikmoduszurückinden
Textmodusgewechselt.
Deklaration:
PROCEDURETextSchirm;
Beispiel:
GrafikSchirm;ZeichnenimGrafikmodusermöglichen.
Strecke(0,0,100,100);EineStreckewirdgezeichnet.
WriteLn("imGrafikmodus");AufdemGrafikschirmwird
"imGrafikmodus"gedruckt.
TextSchirm;ZurückindenTextmodus.
WriteLn("imTextmodus");AufdemTextschirmwird"imTextmodus"
gedruckt.DieTextausgabeerfolgthier
wesentlichschnelleralsimGrafikmodus.
≡≡WähleFont
BevoraufdemGrafikschirmmitGrafWritegeschriebenwerdenkann,muß
mitWähleFonteinVektor-ZeichensatznachBORLAND-Standardgeladen
wordensein.MitgeliefertwerdendieZeichensätze"LITT.CHR","GOTH.CHR",
"SANS.CHR"und"TRIP.CHR".WeitereZeichensätzesindvonderFirmaBORLAND
oderimBereichShareware/PublicDomainzubekommen.
NachdemerfolgreichenLadeneinesZeichensatzeswerdenautomatisch
StandardwertemitSetzeFontWerte(1,1,0)gesetzt.
Deklaration:
PROCEDUREWähleFont(FontName:STRING);
Beispiel:
GrafikSchirm;SchreibenimGrafikmodusermöglichen.
WähleFont("LITT"); Zeichensatzladen
SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
≡≡WeltGeheNach
WeltGeheNachsetztdenWeltcursoraufdieangegebenenKoordinatendesmit
DefiniereWeltdefiniertenKoordinatensystems.MitWeltStreckeNachwird
dieser Punktmiteinemzweitenverbunden.
Deklaration:
PROCEDUREWeltGeheNach(x,y:REAL);
Beispiel:
yKorrekturAus;gleichmäßigesRaster
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
WeltGeheNach(-3,-2.2,7.3,3.4);WeltcursoraufP(-3/-2,2)setzen
≡≡WeltPunkt
WeltPunktzeichneteinen PunktindemmitDefiniereweltdefinierten
Koordinatensystem.
Deklaration:
PROCEDUREWeltPunkt(x,y:REAL);
Beispiel:
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
WeltPunkt(-3,-2.2);zeichnetdenPunktP(-3/-2,2)
≡≡WeltStrecke
WeltStreckeverbindetdiebeidenmitihrenx-undy-Koordinaten
angegebenenPunkteindemmitDefiniereWeltdefiniertenKoordinatensystem.
Deklaration:
PROCEDUREWeltStrecke(x1,y1,x2,y2:REAL);
Beispiel:
yKorrekturAus;gleichmäßigesRaster
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
WeltStrecke(-3,-2.2,7.3,3.4);StreckemitdenEndpunkten
P(-3/-2,2)undQ(7,3/3,4)zeichnen
≡≡WeltStreckeNach
WeltStreckeNachverbindetdenangegebenen PunktmitdemPunktindemmit
DefiniereWeltdefiniertenKoordinatensystem,aufdemsichderWeltcursor
befindet.DerWeltcursorwirdanschließendaufdenangegebenenPunkt
gesetzt.
Deklaration:
PROCEDUREWeltStreckeNach(x,y:REAL);
Beispiel:
≡
yKorrekturAus;gleichmäßigesRaster
DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
-5,0<=x<=10,0und
-2,5<=y<=4,5definieren
undzeichnen
WeltGeheNach(-3,-2.2);WeltcursoraufP(-3/-2,2)setzen
WeltStreckeNach(7.3,3.4); P(-3/-2,2)undQ(7,3/3,4)
verbinden
WeltStreckeNach(-1.3,0.4);Q(7,3/3,4)undR(-1,3/0,4)
verbinden
≡≡Wischen
MitWischenwirddasaktiveGrafikfenstergelöscht.DieFarbe
desHintergrundeskannvorhermitPapierFarbeeingestellt
werden.
Deklaration:
PROCEDUREWischen;
Beispiel:
PapierFarbe(Schwarz);
Wischen;DerHintergrunderscheintschwarz.
PapierFarbe(Grau);
Wischen;DerHintergrunderscheintgrau.
PapierFarbe(Weiß);
Wischen;DerHintergrunderscheintweiß.
≡≡WoGrafikX
WoGrafikXliefertdiex-KoordinatedesGrafik-Cursorszurück.
Deklaration:
FUNCTIONWoGrafikX:INTEGER;
Beispiel:
MoveTo(100,50);
Write(WoGrafikX);druckt100aus.
LineTo(-200,40);
Write(WoGrafikX);druckt-200aus.
≡≡WoGrafikY
WoGrafikYliefertdiey-KoordinatedesGrafik-Cursorszurück.
Deklaration:
FUNCTIONWoGrafikY:INTEGER;
Beispiel:
MoveTo(100,50);
Write(WoGrafikY);druckt50aus.
LineTo(-200,40);
Write(WoGrafikY);druckt40aus.
≡≡yKorrekturFaktor
BeiCGA-,Hercules-undEGA-GrafikkartenstimmendieAbständezweier
benachbarterPunkteinx-undy-RichtungaufdemMonitornichtüber-
ein.OhneKorrekturwürdeeinKreiswieeineEllipseundeinQuadrat
wieeinRechteckaussehen.Umsoetwaszuvermeiden,werdendie
Streckeniny-RichtungverkürztumeinenFaktor,dessenWertdie
FunktionyKorrekturFaktorzurückliefert.
Deklaration:
FUNCTIONyKorrekturFaktor:REAL;
Beispiel:
Write(yKorrekturFaktor);druckt
0.42fürCGA-Karten
0.64fürHercules-Karten
0.73fürEGA-Karten
1.00fürVGA-Karten
≡≡mathematische·Funktionen
ABSARCCOSARCCOTARCSINARCTANBOGENMAß
COSCOTEXP GRADLGLN
SIGNSINSQRSQRTTAN
≡≡ABS
MitABS(x)wirdderBetrageinerZahlbestimmt.
Deklaration:
FUNCTIONABS(Zahl:REAL):REAL;
Beispiel:
ABS(-3.5)=3.5;ABS(-2)=2;ABS(4.7)=4.7
≡≡ARCCOS
α=ArcCos(x)istdieUmkehrfunktionzux=Cos(α).
α=ArcCos(x)istderWinkelα,fürdengiltx=Cos(α).
Deklaration:
FUNCTIONArcCos(Winkel:REAL):REAL;
Beispiel:
inGrad:ArcCos(0.5)=60°
imBogenmaß:ArcCos(0.5)=1.047
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡ARCCOT
α=ArcCot(x)istdieUmkehrfunktionzux=Cot(α).
α=ArcCot(x)istderWinkelα,fürdengiltx=Cot(α).
Deklaration:
FUNCTIONArcCot(Winkel:REAL):REAL;
Beispiel:
inGrad:ArcCot(0.5)=63.435°
imBogenmaß:ArcCot(0.5)=1.107
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡ARCSIN
α=ArcSin(x)istdieUmkehrfunktionzux=Sin(α).
α=ArcSin(x)istderWinkelα,fürdengiltx=Sin(α).
Deklaration:
FUNCTIONArcSin(Winkel:REAL):REAL;
Beispiel:
inGrad:ArcSin(0.5)=30°
imBogenmaß:ArcSin(0.5)=0.524
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡ARCTAN
α=ArcTan(x)istdieUmkehrfunktionzux=Tan(α).
α=ArcTan(x)istderWinkelα,fürdengiltx=Tan(α).
Deklaration:
FUNCTIONArcTan(Winkel:REAL):REAL;
Beispiel:
inGrad:ArcTan(0.5)=26.565°
imBogenmaß:ArcTan(0.5)=0.464
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡BOGENMAß
DieFunktiony=Bogenmaß(α)ergibtdasBogenmaßdes
Winkelsα,derinGradgegebenist.
Deklaration:
FUNCTIONBogenmaß(WinkelInGrad:REAL):REAL;
Beispiel:
Bogenmaß(60°)=π/3
Bogenmaß(Grad(π/3))=π/3
≡≡COS
DerCos(α)istdieLängederAnkatheteeinesrechtwinkligen
DreiecksmitderHypotenusenlänge1.Ergibtfürbeliebige
rechtwinkligeDreieckedasVerhältnisvonAnkathetezu
Hypotenusean.
Deklaration:
FUNCTIONCos(Winkel:REAL):REAL;
Beispiel:
inGrad:Cos(60°)=0.5
imBogenmaß:Cos(π/3)=0.5
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡COT
DieFunktiony=Cot(α)gibtineinemrechtwinkligenDreieck
dasSeitenverhältnisvonAnkathetezuGegenkathetean.
Deklaration:
FUNCTIONCot(Winkel:REAL):REAL;
Beispiel:
inGrad:Cot(60°)=0.577
imBogenmaß:Cot(π/3)=0.577
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡EXP
y=Exp(x)=e^xistdieExponentialfunktionmitderBasise.
ebezeichnetdieEulerscheZahl2.718281828....
Deklaration:
FUNCTIONExp(x:REAL):REAL;
Beispiel:
Exp(1)=2.71828
Exp(-4.1)=0.0167
Exp(Ln(4))=4
≡≡ GRAD
α=Grad(x)ergibtdenzudemBogenxdesEinheitskreises
gehörendenWinkelα,rechnetalsodenWinkelximBogenmaß
inGradum.
Deklaration:
FUNCTIONGrad(WinkelImBogenmaß:REAL):REAL;
Beispiel:
Grad(π/3)=60°
Grad( Bogenmaß(60°))=60°
≡≡LG
y=Lg(x)istderLogarithmusvonxzurBasis10,auchdekadischer
Logarithmusgenannt.Lg(x)istdieUmkehrfunktionzu10^xund
nurfürx>0definiert.
Deklaration:
FUNCTIONLg(x:REAL):REAL;
Beispiel:
Lg(0.5)=-0.301
Lg(3.3)=0.519
Lg(10)=1
Lg(10^5.7)=5.7
Lg(-2)istnichtdefiniert
≡≡LN
y=Ln(x)istderLogarithmusvonxzurBasise,auchnatürlicher
Logarithmusgenannt.Ln(x)istdieUmkehrfunktionzuExp(x)und
nurfürx>0definiert.
Deklaration:
FUNCTIONLn(x:REAL):REAL;
Beispiel:
Ln(0.5)=-0.693
Ln(3.3)=1.194
Ln(e)=1
Ln(Exp(5.7))=5.7
Ln(-2)istnichtdefiniert
≡≡SIGN
DieSignumfunktiony=Sign(x)istdefiniertals:
1,wennx>0
0,wennx=0
-1,wennx<0
Deklaration:
FUNCTIONSign(x:REAL):INTEGER;
Beispiel:
Sign(3.5)=1
Sign(0)=0
Sign(-4)=-1
≡≡SIN
DerSin(α)istdieLängederGegenkatheteeinesrechtwinkligen
DreiecksmitderHypotenusenlänge1.Ergibtfürbeliebige
rechtwinkligeDreieckedasVerhältnisvonGegenkathetezu
Hypotenusean.
Deklaration:
FUNCTIONSin(Winkel:REAL):REAL;
Beispiel:
inGrad:Sin(60°)=0.866
imBogenmaß:Sin(π/3)=0.866
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡SQR
y=Sqr(x)=x^2istdasQuadratderZahlx.Sqrstehtfürdie
englischeAbkürzungvonQuadrat"Square".
Deklaration:
FUNCTIONSqr(x:REAL):REAL;
Beispiel:
Sqr(2)=4
Sqr(Sqrt(2))=2
≡≡SQRT
y=Sqrt(x)istdiepositiveZahly,derenQuadratx
ergibt.SqrtistalsodieWurzelfunktion.y=Sqrt(x)
istdieUmkehrfunktionzuy=Sqr(x).Sqrtstehtfür
dieenglischeAbkürzungvonWurzel"SquareRoot".
Sqrt(x)istdefiniertfürx≥0.
Deklaration:
FUNCTIONSqrt(x:REAL):REAL;
Beispiel:
Sqrt(4)=2
Sqrt(Sqr(2))=2
Sqrt(-4)istnichtdefiniert.
≡≡TAN
DieFunktiony=Tan(α)gibtineinemrechtwinkligenDreieck
dasSeitenverhältnisvonGegenkathetezuAnkathetean.
Deklaration:
FUNCTIONTan(Winkel:REAL):REAL;
Beispiel:
inGrad:Tan(60°)=1.732
imBogenmaß:Tan(π/3)=1.732
DurchdieSchalter"InGrad"und"ImBogenmaß"wird
festgelegt,obdieBerechnungmitWinkelninGrad
oderimBogenmaßdurchgeführtwird.
≡≡Standard-Funktionen
ABSARCTAN CHRCOPYCOS
EOFEXPFilePosFileSizeFRAC
GetMaxXGetMaxYIORESULTINTKeyPressed
LNLENGTH ODDORDPOS
PREDRandom ReadKeyROUND
SIN
SQRSQRTSTRSUCCTRUNC
UpCase WhereX WhereY
≡≡CHR
MitderFunktionCHRwirdeineTyp-UmwandlungeinerINTEGER-Zahl
ausdemBereich0..255ineinenBuchstabendurchgeführt.
Deklaration:
FUNCTIONCHR(OrdnungsZahl:INTEGER):CHAR;
Beispiel:
Write(CHR(65));druckt"A",weil"A"denASCII-Code65hat.
Write(CHR(ORD("B")));druckt"B".
≡≡COPY
Copy(ZeichenKette,Anfang,Anzahl)liefertalsFunktionswertden
TeilvonZeichenKettezurück,derbeidemBuchstabenindexAnfang
beginntundAnzahlZeichenumfaßt.
Deklaration:
FUNCTIONCopy(ZeichenKette:STRING;
Anfang,Anzahl:INTEGER):STRING;
Beispiel:
Write(Copy("abcdefgh",3,4));druckt"cdef".
Write(Copy("abcdefgh",7,9));druckt"gh".WennamEndeder
ZeichenkettewenigerBuchstaben
vorhandensindalsinAnzahlan-
gegeben,werdennurdienoch
vorhandenenzurückgegeben.
≡≡FilePos
FilePos(Dateivariable)gibtdenIndexdesDatensatzesaus,andessenEnde
derLesezeigerinderDateiDateivariablesteht.
Deklaration:
FUNCTIONFilePos(f:FILEOFDatenstruktur):WORD;
Beispiel:
TYPE
DatenStruktur=RECORD
x:INTEGER;
s:STRING[20];
END;
≡
VAR
Daten:DatenStruktur;
f:FILEOFDatenStruktur;
BEGIN
Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
Reset(f);undzumLesenöffnen
Seek(f,3);ZeigeraufdasEndedes3.Datensatzes
Read(f,Daten); 4.Datensatzlesen!!!!
Write(FilePos(f));drucktdenWert4aus!!!
Close(f);Dateischließen
END;
≡≡FileSize
FileSize(Dateivariable)gibtan,wievieleDatensätzeineinerDatei
enthaltensind.
Deklaration:
FUNCTIONFileSize(f:FILEOFDatenstruktur):WORD;
Beispiel:
TYPE
DatenStruktur=RECORD
x:INTEGER;
s:STRING[20];
END;
≡
VAR
Daten:DatenStruktur;
f:FILEOFDatenStruktur;
BEGIN
Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
Reset(f);undzumLesenöffnen
Write(FileSize(f));drucktaus,wievieleRecordsdesTyps
DatenStrukturinderDateiTEST.DAT
enthaltensind
Close(f);Dateischließen
END;
≡≡FRAC
MitFracwirdderNachkommateileinerVariabledesTypsREAL
bestimmtundalsFunktionswertzurückgegeben.
Deklaration:
FUNCTIONFrac(DezimalZahl:REAL):REAL;
Beispiel:
Write(Frac(2.561));druckt0.561aus.
≡≡EOF
MitEOF(Datei)kannfestgestelltwerden,obbeimLeseneinerDatei
dasEndeerreichtwurde.IndiesemFallergibtEOF(Datei)denWert
WAHR(TRUE).DieDateidarfdabeivomTypFILEodervomTyp TEXTsein.
Deklaration:
FUNCTIONEOF(t: TEXT):BOOLEAN;
FUNCTIONEOF(f:FILE):BOOLEAN;
≡
Beispiel:
VAR
t: TEXT;
s:STRING;
BEGIN
Assign(t,'ITG.HLP');Dateiöffnen
Reset(t);LesemarkeaufdenAnfangsetzen
WHILENOTEOF(t)DOBEGINsolangeesnochweiterenTextgibt,
ReadLn(t,s);diesenausderDateilesenund
WriteLn(s);aufdemBildschirmausgeben
END;
Close(t);Dateischließen
END;
≡≡IORESULT
WennDatensätzevonderDiskette/Festplattegelesenoderaufder
Diskette/Festplattegeschriebenwerden,kannmiteinemanschließenden
AufrufvonIOResultgeprüftwerden,obderLese-/Schreibvorgangfehler-
freiverlaufenistodernicht.
IOResultergibtnachfehlerfreienLese-/SchreibzugriffendenWert0,
sonsteinenWert>0.
Deklaration:
FUNCTIONIOResult:INTEGER;
Beispiel:
Write(Datei,Datensatz);
IFIOResult=0THENBEGIN
Write("keinFehler2);
END
ELSEBEGIN
Write("FehlerbeimSchreibendesDatensatzes");
END;
≡≡INT
MitIntwirdderVorkommateileinerVariablendesTypsREAL
bestimmtundalsFunktionswertzurückgegeben.
Deklaration:
FUNCTIONInt(DezimalZahl:REAL):REAL;
Beispiel:
Write(Int(12.561));druckt12.000aus.
≡≡KeyPressed
MitderFunktionKeyPressedwirdfestgestellt,obvordemZeitpunkt
desAufrufseineTastegedrücktwurde,dienochnichtdurcheine
Read-Anweisungeingelesenwurde.
Deklaration:
FUNCTIONKeyPressed:BOOLEAN;
Beispiel:
Read(c);AllevorhandenenTastendrückeeinlesen.
GrafikSchirm;
REPEAT
ZeichneIrgendEtwas;SolangedieZeichnungwiederholen,bis
UNTILKeyPressed;einebeliebigeTastegedrücktwird.
≡≡LENGTH
Length(ZeichenKette)ergibtdieAnzahlderBuchstaben(Länge)
vonZeichenKette.
Deklaration:
FUNCTIONLength(ZeichenKette:STRING):INTEGER;
Beispiel:
Write(Length("abcdefgh"));drucktdenWert8aus.
Write(Length(""));
ergibt0,weildieZeichenkette
leerist.
≡≡ODD
Odd(GanzeZahl)prüft,obGanzeZahlgeradeistodernicht.Eshandelt
sichumeineAussage.DerFunktionswertistdemnachvomTypBOOLEAN.
Deklaration:
FUNCTIONOdd(GanzeZahl:INTEGER):BOOLEAN;
Beispiel:
IFOdd(GanzeZufallsZahl(100))THENBEGIN
Write("Zufallszahlistgerade.");
END
ELSEBEGIN
Write("Zufallszahlistungerade.");
END;
≡≡ORD
DieFunktionOrd(Variable)(Ordnung)liefertbeieinemAufzählungstyp
dieStelle,anderVariableindiesemTypdefiniertist,wobeidie
erstevorkommendeVariableimmerdieOrdnung0hat.
Deklaration:
FUNCTIONOrd(Variable:Aufzählungstyp):INTEGER;
Beispiel:
Ord("A");ergibt65,weilderBuchstabe"A"
an66.(!)Stelleinder
ASCII-Tabellesteht.
TYPE
Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
Ord(Schwarz);ergibt0.
Ord(Grau);ergibt1.
Ord(Weiß);ergibt2.
≡≡POS
Pos(TeilZeichenKette,ZeichenKette)ergibtdieStelle,ander
TeilZeichenKetteinZeichenKettebeginnt.WennTeilZeichenKette
nichtinZeichenKetteenthaltenist,istderFunktionswert0.
Deklaration:
FUNCTIONPos(TeilZeichenKette,ZeichenKette:STRING):INTEGER;
Beispiel:
Pos("c","abcdefgh");ist3.
Pos("def","abcdefgh");ist4.
Pos("B","abcdefgh");ist0,weil"B"nichtin"abcdefgh"
vorkommt.
≡≡PRED
Pred(Variable)ergibtdenVorgängervonVariable,wennessichum
einenAufzählungstyphandelt.(s.auchOrd,Succ)
Deklaration:
FUNCTIONPred(Variable:Aufzählungstyp):Aufzählungstyp;
Beispiel:
Pred(3);ist2.
Pred("B");ist"A",weil"A"inderASCII-
TabellederVorgängervon"B"
ist.
TYPE
Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
Pred(Schwarz);istnichtdefiniert.
Pred(Grau);ergibtSchwarz.
Pred(Weiß);ergibtGrau.
≡≡Random
Random(ObereGrenze)erzeugteineganzeZufallszahlzwischen0und
ObereGrenze-1!DerWertfürObereGrenzemußzwischen0und32768
liegen.
Deklaration:
FUNCTIONRandom(ObereGrenze:WORD):WORD;
Beispiel:
Write(Random(100));druckteineZufallszahlzwischen0und99!
≡≡ReadKey
MitReadKeywirdeineTastegelesen,ohnedaßdieEingabemit
derRETURN-(ENTER-)Tasteabgeschlossenwerdenmuß.
Deklaration:
FUNCTIONReadKey:CHAR;
Beispiel:
Write("nocheinmal(j/n):");Meldungausgeben.
REPEATSolangedasEinlesenvon
CharVariable:=UpCase(ReadKey);Zeichenwiederholen,bis
UNTIL(CharVariable="J")
derGroßbuchstabeder
OR(CharVariable="N"); gedrücktenTaste"J"oder
"N"ist.
≡≡ROUND
DurchRoundwirdeineVariabledesTypsREALineineVariabledes
TypsINTEGERumgewandelt.DabeiwirdimGegensatzzuTruncauf-
oderabgerundet.
Deklaration:
FUNCTIONRound(RealVariable:REAL):INTEGER;
Beispiel:
Round(3.2);ergibt3.
Round(3.8);ergibt4.
Round(-3.2);ergibt-3.
Round(-3.8);ergibt-4.
≡≡SUCC
Succ(Variable)ergibtdenNachfolgervonVariable,wennessichum
einenAufzählungstyphandelt.(s.auchOrd,Pred)
Deklaration:
FUNCTIONSucc(Variable:Aufzählungstyp):Aufzählungstyp;
Beispiel:
Succ(3);ist4.
Succ("B");ist"C",weil"C"inderASCII-
TabellederNachfolgervon"B"
ist.
TYPE
Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
Succ(Schwarz);ergibtGrau.
Succ(Grau);ergibtWeiß.
Succ(Weiß);istnichtdefiniert.
≡≡TRUNC
DurchTruncwirdeineVariabledesTypsREALineineVariabledes
TypsINTEGERumgewandelt.DabeiwirdimGegensatzzuRoundnicht
auf-oderabgerundet.
Deklaration:
FUNCTIONTrunc(RealVariable:REAL):INTEGER;
Beispiel:
Trunc(3.2);ergibt3.
Trunc(3.8);ergibt3.
Trunc(-3.2);ergibt-3.
Trunc(-3.8);ergibt-3.
≡≡UpCase
UpCase(Buchstabe)ergibtalsFunktionsergebnisdenGroßbuchstaben
vonBuchstabe.DieUmwandlungwirdauchfüralledeutschenSonder-
zeichen(ä,ö,ü)durchgeführt.
Deklaration:
FUNCTIONUpCase(Buchstabe:CHAR):CHAR;
Beispiel:
Write(UpCase("a"));druckt"A".
Write(UpCase("A"));druckt"A".
Write(UpCase("ö"));druckt"Ö".
≡≡WhereX
Diex-KoordinatedesCursorsimTextschirmwirddurchdieFunktion
WhereXausgelesen.BeimvollenTextschirmhatderlinkeRanddie
x-Koordinate1undderrechtediex-Koordinate80.
Deklaration:
FUNCTIONWhereX:INTEGER;
Beispiel:
GotoXY(5,3);setztdenCursoraufden PunktP(5/3).
Write(WhereX);drucktdenWert5aus.
≡≡WhereY
Diey-KoordinatedesCursorsimTextschirmwirddurchdieFunktion
WhereYausgelesen.BeimvollenTextschirmhatderobereRanddie
y-Koordinate1undderunterediey-Koordinate25.
Deklaration:
FUNCTIONWhereY:INTEGER;
Beispiel:
GotoXY(5,3);setztdenCursoraufden PunktP(5/3).
Write(WhereY);drucktdenWert3aus.
≡≡ITG-Pascal-Funktionen
ARCCOSARCCOTARCSIN
BogenmaßBuchstabeCOT
DezimalZufallszahlEsGibtDatei FunktionsWert
GanzeZufallsZahl GradIgelWinkel
IgelZeigen
LetzteTaste LiesPort
SIGNStopZeitTAN
WeltPixelDX WeltPixelDY WeltXMax
WeltXMinWeltYMaxWeltYMin
WoGrafikXWoGrafikYWoIgelX
WoIgelYyKorrekturFaktor
≡≡Buchstabe
DieFunktion(Zeichenkette,nterBuchstabe)liefertdenn.Buchstaben
inderZeichenkettezurück.Dabeimuß1≤n≤AnzahlderBuchstaben
inderZeichenkettesein.
Deklaration:
FUNCTIONBuchstabe(Zeichenkette:STRING;
nterBuchstabe:INTEGER):CHAR;
Beispiel:
Write(Buchstabe("abcdefg",3));druckt"c"aus.
≡≡DezimalZufallszahl
DezimalZufallszahl(ObereSchranke)ergibteineZufallszahlxdesTyps
REAL,wobei0≤x<ObereSchrankegilt.DerWert0kannangenommen
werden,derWertObereSchrankewirdnieangenommen.
Deklaration:
FUNCTIONDezimalZufallszahl(ObereSchranke:REAL):REAL;
Beispiel:
Write(DezimalZufallszahl(4.5));druckteineZahlxmit
0≤x<4.5!(sieheauch
GanzeZufallszahl)
≡≡EsGibtDatei
DieFunktionEsGibtDatei(Dateiname)dientdazu,zuprüfen,
obeineDateimitdemDateinamenaufderDiskette/Festplatte
existiert.SieliefertdenWertWAHR,wenneseinesolche
Dateigibt,sonstdenWertFALSCH.DerTypderDatei
(Textdateioderandere)läßtsichnichtfeststellen.
Deklaration:
FUNCTIONEsGibtDatei(DateiName:STRING):BOOLEAN;
Beispiel:
Write(EsGibtDatei("ITG.HLP"));drucktWAHRaus,wennesdie
DateiITG.HLPimaktuellen
Verzeichnisgibt,sonstFALSCH
≡≡FunktionsWert
WennmitDefiniereFunktionstermeinFunktionstermfestgelegtwurde,
kannmitFunktionWerteinWertaneinerStelleberechnetwerden.
Deklaration:
FUNCTIONFunktionsWert(x:REAL):REAL;
Beispiel:
DefiniereFunktionsterm("5*x");zuerstFunktionstermfestlegen
FORn:=1TO5DOBEGIN
WriteLn(FunktionsWert(n));understdannFunktionswerte
END;berechnen
≡≡GanzeZufallsZahl
GanzeZufallszahl(ObereSchranke)ergibteineZufallszahlxdesTyps
INTEGER,wobei0≤x<ObereSchrankegilt.DerWert0kannangenommen
werden,derWertObereSchrankewirdnieangenommen.
Deklaration:
FUNCTIONGanzeZufallszahl(ObereSchranke:INTEGER):INTEGER;
Beispiel:
Write(GanzeZufallszahl(5));druckteinederZahlen0..4!
≡≡LetzteTaste
DieFunktionLetzteTasteliefertdenBuchstabenderTaste,diezuletzt
gedrücktwurde.DamitkannnachRead-,Auswahl-undLiesEingaben-
Anweisungenfestgestelltwerden,obdieAnweisungenz.B.mitderESC-
Tasteabgebrochenwurden.
Deklaration:
FUNCTIONLetzteTaste:CHAR;
Beispiele:
≡
1)
VARc1,c2:CHAR;
c1:=ReadKey;
c2:=LetzteTaste;c1undc2sindgleich,weilLetzteTaste
dasLeseneinesZeichenwiederholt.
2)
REPEAT
EingabeFeld(...);
LiesEingaben;WurdeLiesEingabenmitderESC-Taste
UNTILLetzteTaste=ESC;beendet?WennjaAbbrechen,sonst
wiederholen.
≡≡LiesPort
MitLiesPort(WelcherPort)kanndermomentaneWert,deramPort
WelcherPortanliegt,gelesenwerden.MitdieserFunktionkann
z.B.derDruckerstatusoderderTimerdesComputersabgefragt
werdenodereskönnenMeßwertevoneinemInterfaceeingelesen
werden.
ACHTUNG:VorderBenutzungdieserFunktionmußeinegenaue
InformationüberdieentsprechendeHardwareerfolgen,
dieabgefragtwerdensoll.
Deklaration:
FUNCTIONLiesPort(WelcherPort:INTEGER):INTEGER;
Beispiel:
Write(LiesPort(nnn));drucktdenWert,deram(Drucker-)
Portanliegt(,wennnnnderim
ComputerverwendeteDrucker-Port
ist).
≡≡StopZeit
DieFunktionStopZeitliefertdieZeitdifferenzinSekundenzwischendem
letztenAufrufderProzedurStarteStopUhrbzw.demProgrammstart,wenn
StarteStopUhrumProgrammnichtaufgerufenwurde.DieAuflösungbeträgt
1/100SekundenmiteinerGenauigkeitvonca.5/100Sekunden,diedurch
denimComputereingebautenTimerundDOSbedingtist.
Deklaration:
FUNCTIONStopZeit:REAL;
Beispiel:
StarteStopUhr;Stopuhrauf0setzen
TueIrgendetwas;
Write(StopZeit);ZeitdauerinSekundenanzeigen,diefür
TueIrgendetwasbenötigtwurden.
≡≡WeltPixelDX
WeltPixelDXliefertdieDifferenzderx-Koordinatenzweierbenachbarter
BildpunkteineinemmitDefiniereWeltdefiniertenKoordiantensystem.
Deklaration:
FUNKTIONWeltPixelDX:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltPixelDX); drucktdieDifferenzderx-Koordinaten
zweierbenachbarterBildpunkte
≡≡WeltPixelDY
WeltPixelDYliefertdieDifferenzdery-Koordinatenzweierbenachbarter
BildpunkteineinemmitDefiniereWeltdefiniertenKoordiantensystem.
Deklaration:
FUNKTIONWeltPixelDY:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltPixelDY); drucktdieDifferenzdery-Koordinaten
zweierbenachbarterBildpunkte
≡≡WeltXMax
WeltXMaxliefertdiex-KoordinatedesäußerstenrechtenBildpunktesin
einemmitDefiniereWeltdefiniertenKoordiantensystem.DerWertist
meistensgrößeralsderbeiDefiniereWeltfürdiesenWertübergebene
Parameter,daITG-PASCALdasKoordiantensystemimmersoanlegt,daß
gleicheIntervallbreitenaufeinerAchseauchimmergleichviele
Bildpunkteenthalten.
Deklaration:
FUNKTIONWeltXMax:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltXMax);drucktdenWertderx-Koordinatedes
äußerstenrechtenBildpunktesdes
Koordinatensystems.DerWertistetwas
größerals5.
≡≡WeltXMin
WeltXMinliefertdiex-KoordinatedesäußerstenlinkenBildpunktesin
einemmitDefiniereWeltdefiniertenKoordiantensystem.DerWertist
meistenskleineralsderbeiDefiniereWeltfürdiesenWertübergebene
Parameter,daITG-PASCALdasKoordiantensystemimmersoanlegt,daß
gleicheIntervallbreitenaufeinerAchseauchimmergleichviele
Bildpunkteenthalten.
Deklaration:
FUNKTIONWeltXMin:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltXMin);drucktdenWertderx-Koordinatedes
äußerstenlinkenBildpunktesdes
Koordinatensystems.DerWertistetwas
kleinerals5.
≡≡WeltYMax
WeltYMaxliefertdiey-KoordinatedesoberstenBildpunktesineinemmit
DefiniereWeltdefiniertenKoordiantensystem.DerWertistmeistensgrößer
alsderbeiDefiniereWeltfürdiesenWertübergebeneParameter,da
ITG-PASCALdasKoordiantensystemimmersoanlegt,daßgleicheIntervall-
breitenaufeinerAchseauchimmergleichvieleBildpunkteenthalten.
Deklaration:
FUNKTIONWeltYMax:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltYMax);drucktdenWertdery-Koordinatedes
oberstenBildpunktesdesKoordinaten-
systems.DerWertistetwasgrößer
als5.
≡≡WeltYMin
WeltYMinliefertdiey-KoordinatedesunterstenBildpunktesineinem
mitDefiniereWeltdefiniertenKoordiantensystem.DerWertistmeistens
kleineralsderbeiDefiniereWeltfürdiesenWertübergebeneParameter,
daITG-PASCALdasKoordiantensystemimmersoanlegt,daßgleiche
IntervallbreitenaufeinerAchseauchimmergleichvieleBildpunkte
enthalten.
Deklaration:
FUNKTIONWeltYMin:REAL;
Beispiel:
DefiniereWelt(-3,-4,5,6);Weltdefinieren
WriteLn(WeltYMin);drucktdenWertdery-Koordinatedes
unterstenBildpunktesdesKoordinaten-
systems.DerWertistetwaskleiner
als5.
≡≡Standard-Prozeduren
Assign Circle Close
ClrEol ClrScr
DECDelay
Delete EXITGotoXY
HALTHighVideoINCInsert InversVideo
LineLineTo LowVideoMoveTo NoSound
Random RandomizeREADREADLN ReName
Reset
ReWriteSeekSound
STR
VALWindow WRITE
WRITELN
≡≡Assign
AssignverbindeteineDateivariableDATEIderTypenFILEoder TEXT
miteinemDateinamenNAMEundöffnetsiefürLese-undSchreib-
zugriffe.AnschließenderfolgenalleOperationenmitDATEImitder
DateidesNamensNAME.VorderVerknüpfungmitAssignkannKEIN
ZugriffaufdieDateierfolgen!
Deklaration:
PROCEDUREAssign(Datei:FILE;DateiName:STRING);
PROCEDUREAssign(Datei: TEXT;DateiName:STRING);
Beispiel:
≡
VAR
Datei: TEXT;
s:STRING;
BEGIN
Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
Reset(Datei);AnfangderDateisuchen
WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
erreichtist,
ReadLn(Datei,s);lieseineZeileausderDatei
indieVariables
WriteLn(s);unddruckesaufdemBildschirm
END;aus.
Close(Datei);SchließedieDatei.
END;
≡≡Close
Close(DATEI)schließtdieDatei.Anschließendkönnenkeineweiteren
OperationenmitDATEImehrerfolgen.JedeDatei,diemitAssign
geöffnetwurde,mußimLaufedesProgrammsauchmitClosegeschlossen
werden!
Deklaration:
PROCEDUREClose(Datei:FILE);
PROCEDUREClose(Datei: TEXT);
Beispiel:
≡
VAR
Datei: TEXT;
s:STRING;
BEGIN
Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
Reset(Datei);AnfangderDateisuchen
WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
erreichtist,
ReadLn(Datei,s);lieseineZeileausderDatei
indieVariables
WriteLn(s);unddruckesaufdemBildschirm
END;aus.
Close(Datei);SchließedieDatei.
END;
≡≡ClrEol
ClrEollöschtdasEndeeinerTextzeileabderaugenblicklichen
Cursorposition.DieCursorpositionwirddabeinichtverändert.
Deklaration:
PROCEDUREClrEol;
Beispiel:
HighVideo;Bildschirmattributaufhellsetzen
GotoXY(30,5);Cursoraufdas30.Zeichender5.Zeilesetzen
ClrEol; dieletzten50Zeichender5.ZeilemitLeerzeichen
auffüllenunddasAttribut"hell"verwendenundden
Cursoraufdem30.Zeichender5.Zeilelassen
InversVideo;Bildschirmattributaufinverssetzen
GotoXY(10,8);Cursoraufdas10.Zeichender8.Zeilesetzen
ClrEol; dieletzten70Zeichender8.ZeilemitLeerzeichen
auffüllenunddasAttribut"invers"verwendenundden
Cursoraufdem10.Zeichender8.Zeilelassen
≡≡ClrScr
ClrScrlöschtdasaktiveTextfenster.WeilinITG-PASCALdieTextausgabe
auchimGrafikmodusmitWrite(....)erfolgenkann,löschtClrScr
denGrafikschirm-alsoauchGrafiken-,wennderGrafikmodusaktiv
ist.
Deklaration:
PROCEDUREClrScr;
Beispiel:
Write("Irgendetwas");Textschreiben
Delay(2000);2s(2000ms)warten
ClrScr;Bildschirmlöschen
Delay(2000);wiederwarten,damitdasErgebnis
betrachtetwerdenkann.
≡≡DEC
DEC(VARIABLE,WERT)verringertVARIABLEumWERT.VARIABLEkannvom
TypCHAR,BYTE,INTEGER,WORDoderLONGINTsein.DerzweiteParameter
WERTmußnichtmitangegebenwerden.IndiesemFallerfolgteine
Verringerungum1!
Deklaration:
PROCEDUREDEC(VARc:CHAR;Wert:LONGINT);
PROCEDUREDEC(VARc:CHAR);
PROCEDUREDEC(VARb:BYTE;Wert:LONGINT);
PROCEDUREDEC(VARb:BYTE);
PROCEDUREDEC(VARi:INTEGER;Wert:LONGINT);
PROCEDUREDEC(VARi:INTEGER);
PROCEDUREDEC(VARw:WORD;Wert:LONGINT);
PROCEDUREDEC(VARw:WORD);
PROCEDUREDEC(VARl:LONGINT;Wert:LONGINT);
PROCEDUREDEC(VARl:LONGINT);
≡
Beispiel:
c:='C';
DEC(c,2);chatjetztdenWert'A',weil'A'inder
ASCII-TabelledaszweiteZeichenvor'C'ist.
l:=12345;
DEC(l);lhatdenWert12344.DerzweiteParameter
wirdindiesemFallautomatischauf1gesetzt!
≡≡Delay
Delay(nMilliSekunden)hältdieProgrammausführungfürdieangegebenen
Millisekundenan.
Deklaration:
PROCEDUREDelay(MilliSekunden:WORD);
Beispiel:
WriteLn('ersterText');
Delay(3000);wartet3s(3000ms)
WriteLn('zweiterText');
Delay(1500);wartet1,5s(1500ms)
WriteLn('dritterText');
≡≡Delete
Delete(ZEICHENKETTE,AB,ANZAHL)löschtinZEICHENKETTEabdemAB.ten
ZeichenANZAHLvonZeichen.
Deklaration:
PROCEDUREDelete(VARZeichenkette:STRING;Ab,Anzahl:WORD);
Beispiel:
Zeichenkette:='ABCDEFGH';Wertzuweisung
Delete(Zeichenkette,4,2);InderZeichenkettewirdder4.
Buchstabe(hier'D')gesucht.
EinschließlichdiesesBuchstabens
werden2Buchstaben(hier'D'und'E')
gelöscht.
WriteLn(Zeichenkette);Druckt'ABCFGH'aufdenBildschirm.
≡≡EXIT
MitderAnweisungEXITerreichtman,daßdieAusführungeinerProzedur
oderFunktionsofortabgebrochenwird.ImHauptprogrammsollteHALT
verwendetwerden.
Deklaration:
PROCEDUREEXIT;
≡
Beispiel:
PROCEDUREExitTest(n:INTEGER);
BEGIN
IFn>10THENBEGINwennn>10,dann
WriteLn("n>10");Textausgebenund
EXIT;dieProzedursofortverlassen
END
ELSEBEGIN
WriteLn("n<=10");
sonstTextausgeben
END;
.unddenRestderProzedur
.abarbeiten
END;
≡≡GotoXY
GotoXY(x,y)setztdenCursoraufden PunktP(x/y).Derlinkeobere
EckpunktdesBildschirmshatdieKoordinaten(1/1).Diex-Werte
nehmennachrechtsbis80zu,diey-Wertenachuntenbis25.
Deklaration:
PROCEDUREGotoXY(x,y:WORD);
Beispiel:
GotoXY(1,1);linkerobererEckpunkt
GotoXY(1,25);linkeruntererEckpunkt
GotoXY(80,1);rechterobererEckpunkt
GotoXY(80,25);rechteruntererEckpunkt
≡≡HALT
HALTbeendetdieProgrammausführungsofort.
Deklaration:
PROCEDUREHalt;
Beispiel:
x:=Random(100)-50;Zufallszahlzwischen-50
und49!erzeugen
IFx<0THENBEGINfürx<0ist√xnicht
WriteLn("x<0!");definiert,deshalbdie
HALT;Programmausführungabbrechen
END
ELSEBEGIN
WriteLn("√",x,"=",SQRT(x));sonst√xausdrucken
END;
≡≡HighVideo
SetztdasSchreibattributaufhelleSchriftaufdunklemUntergrund.
Deklaration:
PROCEDUREHighVideo;
Beispiel:
HighVideo;helleSchriftaufdunklem
Untergrund
WriteLn("helleSchrift");
LowVideo;dunklereSchriftaufdunklem
Untergrund
WriteLn("dunklereSchrift");
InversVideo;dunkleSchriftaufhellem
Untergrund
WriteLn("inverseSchrift");
≡≡INC
INC(VARIABLE,WERT)erhöhtVARIABLEumWERT.VARIABLEkannvom
TypCHAR,BYTE,INTEGER,WORDoderLONGINTsein.DerzweiteParameter
WERTmußnichtmitangegebenwerden.IndiesemFallerfolgteine
Erhöhungum1!
Deklaration:
PROCEDUREINC(VARc:CHAR;Wert:LONGINT);
PROCEDUREINC(VARc:CHAR);
PROCEDUREINC(VARb:BYTE;Wert:LONGINT);
PROCEDUREINC(VARb:BYTE);
PROCEDUREINC(VARi:INTEGER;Wert:LONGINT);
PROCEDUREINC(VARi:INTEGER);
PROCEDUREINC(VARw:WORD;Wert:LONGINT);
PROCEDUREINC(VARw:WORD);
PROCEDUREINC(VARl:LONGINT;Wert:LONGINT);
PROCEDUREINC(VARl:LONGINT);
≡
Beispiel:
c:='C';
INC(c,2);chatjetztdenWert'E',weil'E'inder
ASCII-TabelledaszweiteZeichennach'C'ist.
l:=12345;
INC(l);lhatdenWert12346.DerzweiteParameter
wirdindiesemFallautomatischauf1gesetzt!
≡≡Insert
MitInsertwirdeineZeichenketteineineandereZeichenketteaneiner
vorgegebenenPositioneingefügt.
Deklaration:
PROCEDUREInsert(Was:STRING;VARWoHinein:STRING;Wo:INTEGER);
PROCEDUREInsert(Was:CHAR;VARWoHinein:STRING;Wo:INTEGER);
Beispiel:
≡
Was:="DE";
WoHinein:="ABCFGH";
Insert(Was,WoHinein,4);DerersteBuchstabederZeichenkette
Was("D")wirdals4.Buchstabe,
derzweiteausWas("E")als5.
BuchstabeinWoHineineingefügt.Die
PositionderübrigenBuchstabenaus
WoHineinverschiebtsichdadurchum
zweinachrechts.WoHineinhat
anschließenddenWert"ABCDEFGH".
≡≡InversVideo
SetztdasSchreibattributaufdunkleSchriftaufhellemUntergrund.
Deklaration:
PROCEDUREHighVideo;
Beispiel:
HighVideo;helleSchriftaufdunklem
Untergrund
WriteLn("helleSchrift");
LowVideo;dunklereSchriftaufdunklem
Untergrund
WriteLn("dunklereSchrift");
InversVideo;dunkleSchriftaufhellem
Untergrund
WriteLn("inverseSchrift");
≡≡LowVideo
SetztdasSchreibattributaufdunklereSchriftaufdunklemUntergrund.
Deklaration:
PROCEDURELowVideo;
Beispiel:
HighVideo;helleSchriftaufdunklem
Untergrund
WriteLn("helleSchrift");
LowVideo;dunklereSchriftaufdunklem
Untergrund
WriteLn("dunklereSchrift");
InversVideo;dunkleSchriftaufhellem
Untergrund
WriteLn("inverseSchrift");
≡≡NoSound
NoSoundschaltetdenimComputereingebautenLautsprecherab.
Deklaration:
PROCEDURENoSound;
Beispiel:
Sound(1000);TonmitderFrequenzf=1000Hz1s(1000ms)
Delay(1000);langausgeben,
NoSound;danndieTonausgabeabschalten
≡≡Randomize
RandomizeerzeugtdenAnfangeinerneuerFolgevonZufallszahlen.
Deklaration:
PROCEDURERandomize;
Beispiel:
Randomize;AnfangeinerneuenFolgeerzeugen
Write(Random(100));Zufallszahlzwischen0und99drucken
≡≡READ
MitReaderfolgenEingabenüberdieTastaturoderdieDiskette/
Festplatte.DabeisindVariablenbeliebigenTyps(imUnterschied
zuTURBO-PASCALauchARRAY-undRECORD-VariablenbeiderTastatur-
Eingabe)zugelassen.FürREAL-VariablenkönnenabweichendzuTURBO-
PASCALauchTermeeingegebenwerden,dieallerdingskeineVariablen
enthaltendürfen.BeiSTRING-VariablenwirddasEingabefensterineiner
Längegeöffnet,diederDeklarationentspricht.
ImUnterschiedzuTURBO-PASCAlkönnendieVariablenmitWerten
vorbelegtwerden,diedannimEingabefelderscheinenundeditiert
werdenkönnen.DabeistehendieTasten<-,->,Home(Pos1),End(Ende),
Del(Lösch),BackSpace(<--)undIns(Einf)zurVerfügung.Wenndas
ersteZeichenkeinesdieserEditorzeichenist,wirddasEingabefenster
gelöscht.DerCursorbleibtnachderEingabedirekthinterdemletzten
eingegebenenZeichenstehen.
BeiDateiendarfmitREADnureinLesevorganginFILE-Typen
vorgenommenwerden.
≡
Deklaration:
PROCEDURERead(VARv:VariableBeliebigenTyps);
PROCEDURERead(VARf:FILE;VARv:VariableBeliebigenTyps);
Beispiel:
VAR
r:REAL;
s:STRING[20];
a:ARRAY[1..5]OFINTEGER;
f:FILE;
BEGIN
≡
s:="abcd";
Read(s);Eswirdein20ZeichenlangesEingabefeldgeöffnet.
Eingabe:"ABCD"BeidemerstenZeichen"A"
wirddasEingabefenster
gelöscht.Dannwird"A"als
erstesZeichengeschrieben.
Eingabe:RETURN-TasteDerWertwirdunverändertüber-
nommen.
Eingabe:->DerCursorbewegtsichumein
Zeichennachrechtsauf"b".
Wennjetzt"z"gedrücktwird,
wirddiesesZeichenander
zweitenStelleeingefügtundes
steht"azbcd"imEingabefeld.
≡
Read(r);Eingabe:1.234oder1.234E+3odersin(2*pi*100)
Read(a);AufdemBildschirmerscheintderText"A[1]".Direkt
anschließendistdasEingabefeldgeöffnetundeskann
derersteWertbearbeitetwerden.Nach<RETURN>
erscheint"A[2]"mitdemEingabefeldusw.DieEingabe
kannmit<ESC>vorzeitigabgebrochenwerden.
≡
Assign(f,'DATEN.DAT');Dateiöffnen
Reset(f);LesemarkeaufdenAnfangsetzen
Read(f,a);dasArrayaausderDateilesen
Close(f);Dateischließen
END;
≡≡READLN
DieProzedurReadLnentsprichtweitgehendderProzedurRead.Esgibt
aberzweiUnterschiede:
1)NachReadLnwirdderCursoraufdenAnfangderfolgendenZeile
gesetzt.
2)BeiDateiendarfmitReadLnnureinLesevorgangin TEXT-Typen
vorgenommenwerden.
Deklaration:
PROCEDUREReadLn(VARv:VariableBeliebigenTyps);
PROCEDUREReadLn(VARt: TEXT;VARv:VariableBeliebigenTyps);
Beispiel:
Read(s);CursorbleibthinterdemletztenZeichenstehen
WriteLn;CursorandenAnfangdernächstenZeile
ReadLn(s);CursorandenAnfangdernächstenZeile(Kombination
ausRead(s)undWriteLn)
≡≡ReName
ReNameändertdenNameneinerDatei.
Deklaration:
PROCEDUREReName(f:FILE;NeuerName:STRING);
PROCEDUREReName(t: TEXT;NeuerName:STRING);
Beispiel:
≡
VAR
Datei: TEXT;
BEGIN
Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
ReName(Datei,'ITG.BAK');NamenvonITG.HLPaufder
Diskette/Festplattein
ITG.BAKumändern
Close(Datei);SchließedieDatei.
END;
≡≡Reset
ResetsetztdieLese-/SchreibpositionineinerDateiaufdenAnfang
derDatei.
Deklaration:
PROCEDUREReset(f:FILE);
PROCEDUREReset(t: TEXT);
Beispiel:
≡
VAR
Datei: TEXT;
s:STRING;
BEGIN
Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
Reset(Datei);AnfangderDateisuchen
WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
erreichtist,
ReadLn(Datei,s);lieseineZeileausderDatei
indieVariables
WriteLn(s);unddruckesaufdemBildschirm
END;aus.
Close(Datei);SchließedieDatei.
END;
≡≡ReWrite
ReWritelöschtdiemitdieserDateivariablenverknüpfteDatei,
soferneineunterdiesemNamenexistiert,erzeugteineneueunter
demgleichenNamenundsetztdieLese-/Schreibpositionaufden
AnfangdieserDatei.
Deklaration:
PROCEDUREReWrite(f:FILE);
PROCEDUREReWrite(t: TEXT);
Beispiel:
≡
VAR
Datei: TEXT;
s:STRING;
BEGIN
Assign(Datei,'NEU.DAT');DateimitdemNamenverknüpfen
ReWrite(Datei);neueDateianlegenundSchreib-
positionaufdenAnfangsetzen
s:="AnfangeinerneuenDatei";
WriteLn(Datei,s);sandenAnfangderDatei
.schreibenundgegebenenfalls
.weitereTexteanhängen
Close(Datei);SchließedieDatei.
END;
≡≡Seek
Seek(Dateivariable,Position)setztdenLesezeigerinderDatei
DateivariableandasEndedesDatensatzesmitdemIndexPosition.
Deklaration:
PROCEDURESeek(f:FILEOFDatenstruktur;Position:WORD);
≡
Beispiel:
TYPE
DatenStruktur=RECORD
x:INTEGER;
s:STRING[20];
END;
VAR
Daten:DatenStruktur;
f:FILEOFDatenStruktur;
BEGIN
Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
Reset(f);undzumLesenöffnen
Seek(f,3);ZeigeraufdasEndedes3.Datensatzes
Read(f,Daten); 4.Datensatzlesen!!!!
Close(f);Dateischließen
END;
≡≡Sound
Sound(f)schaltetdenimComputereingebautenLautsprechereinund
bewirkteineTonerzeugungeinesTonesmitderFrequenzf.
Deklaration:
PROCEDURESound(Frequenz:WORD);
Beispiel:
Sound(1000);TonmitderFrequenzf=1000Hz1s(1000ms)
Delay(1000);langausgeben,
NoSound;danndieTonausgabeabschalten
≡≡STR
STRwandelteineZahlineineZeichenketteum(UmkehrprozedurzuVAL).
Deklaration:
PROCEDURESTR(b:BYTE;VARs:STRING);
PROCEDURESTR(i:INTEGER;VARs:STRING);
PROCEDURESTR(w:WORD;VARs:STRING);
PROCEDURESTR(l:LONGINT;VARs:STRING);
PROCEDURESTR(r:REAL;VARs:STRING);
Beispiel:
≡
VAR
w:WORD;
r:REAL;
s:STRING;
BEGIN
w:=1234;
STR(w,s);serhältdenWert"1234"
r:=1.234;
STR(r,s);serhältdenWert"1.2340000000E+0000"
END;
≡≡VAL
VALwandelteineZeichenketteineineZahlenvariableum(Umkehrprozedur
zuSTR).
Deklaration:
PROCEDUREVAL(s:STRING;VARb:BYTE;FehlerPos:WORD);
PROCEDUREVAL(s:STRING;VARi:INTEGER;FehlerPos:WORD);
PROCEDUREVAL(s:STRING;VARw:WORD;FehlerPos:WORD);
PROCEDUREVAL(s:STRING;VARl:LONGINT;FehlerPos:WORD);
PROCEDUREVAL(s:STRING;VARr:REAL;FehlerPos:WORD);
Beispiel:
≡
VAR
w,FehlerPos:WORD
BEGIN
VAL("1234",w,FehlerPos);werhältdenWert1234,FehlerPos
ist0
VAL("12q4",w,FehlerPos);FehlerPosist3,weilander3.Stelle
derZeichenketteeinZeichensteht,das
keineZifferist
END;
≡≡Window
WindowdefinierteinTextfensteraufdemBildschirm.Allenachfolgenden
Write-/GotoXY-AnweisungenbeziehensichaufdiesesFenster.
Deklaration:
PROCEDUREWindow(xMin,yMin,xMax,yMax:WORD);
Beispiel:
Window(10,3,60,8);definierteinenTeilausschnittdesBild-
alsTextfenster.DieKoordinatenbeziehen
sichaufdenvollenBildschirm.
GotoXY(1,1);
setztdenCursorindielinkeobereEcke
desFensters(absoluteKoordinaten(10/3)
und(60/8))
Window(1,1,80,25);
≡≡WRITE
MitWriteerfolgenAusgabenaufdenBildschirmoderdieDiskette/
Festplatte.DabeisindVariablenbeliebigenTyps(imUnterschied
zuTURBO-PASCALauchARRAY-undRECORD-VariablenbeiderBildschirm-
Ausgabe)zugelassen.REAL-Variablenwerdensoweitwiemöglichohne
Expontialdarstellunggedruckt.DerCursorbleibtnachderAusgabe
direkthinterdemletztenausgegebenenZeichenstehen.
BeiDateiendarfmitWRITEnureinSchreibvorganginFILE-Typen
vorgenommenwerden.
Deklaration:
PROCEDUREWrite(v:VariableBeliebigenTyps);
PROCEDUREWrite(VARf:FILE;v:VariableBeliebigenTyps);
Beispiel:
≡
VAR
a:ARRAY[1..3]OFINTEGER;
f:FILE;
BEGIN
s:="abcd";
Write(s);Eswird"abcd"gedruckt.
Write(s:6);Eswird"abcd"gedruckt.DieAusgabeerfolgt
übermindestens6Zeichen.WenndieZeichenkette
wenigerals6Zeichenenthält,werdenvordem
erstenZeichensolangeLeerzeicheneinfügt,bis
dieZeichenkette6Zeichenenthält.Indiesem
Fallwerdenalso6-4=2Leerzeicheneingefügt.
Write("a");druckt"a"
Write("a":3);druckt"a"wieobenbeschrieben
≡
Write(1234);druckt"1234"
Write(1234:6);druckt"1234"
Write(pi);druckt"3.141592654"abweichendvonTURBO-PASCAL
Write(pi:13);druckt"3.141592654"(13Zeichen)
Write(pi:10:5)druckt"3.14159"(10Zeicheninsgesamt,davon
5Nachkommastellen)
≡
a[1]:=1;
a[2]:=2;
a[3]:=3;
Write(a);druckt"(A[1]=1,A[2]=2,A[3]=3)"mitAngabedes
Variablen-Namens,desFeldindexesunddesWertes
(inTURBO-PASCALnichtmöglich)
Write(a:3);druckt"(A[1]=1,A[2]=2,A[3]=3)"und
verwendetfürdieDarstellungdesVariablen-
inhaltes3Zeichen
≡
Assign(f,'DATEN.DAT');Dateiöffnen
ReWrite(f);SchreibmarkeaufdenAnfangsetzen
Write(f,a);dasArrayaindieDateischreiben
Close(f);Dateischließen
END;
≡≡WRITELN
DieProzedurWriteLnentsprichtweitgehendderProzedurWrite.Esgibt
aberzweiUnterschiede:
1)NachWriteLnwirdderCursoraufdenAnfangderfolgendenZeile
gesetzt.
2)BeiDateiendarfmitWriteLnnureinSchreibvorgangin TEXT-Typen
vorgenommenwerden.
Deklaration:
PROCEDUREWriteLn(v:VariableBeliebigenTyps);
PROCEDUREWriteLn(VARt: TEXT;v:VariableBeliebigenTyps);
Beispiel:
Write(s);CursorbleibthinterdemletztenZeichenstehen
WriteLn;CursorandenAnfangdernächstenZeile
WriteLn(s);CursorandenAnfangdernächstenZeile(Kombination
ausWrite(s)undWriteLn)
≡≡ITG-Pascal-Prozeduren
AusgabeAufBildschirm
AusgabeAufDiskette
AusgabeAufDruckerAuswahl
AuswahlFeld Bogen
BreakPointDatenAufDiskette
DatenVonDisketteDebugEin
DebugAusDefiniereFunktionsterm
DreheAufDruckeBildschirm
EingabeFeldEingabeVonTastatur
EingabeVonDisketteEinzelschrittEin
EinzelschrittAusErsetzeBuchstaben
FärbenFügeBuchstabenEin
GeheNachGrafikFenster
GrafikSchirmHinten
InGradImBogenmaß
KreisLiesEingaben
LinkerBogen Links
LöscheBuchstabenMenü
≡
MitCursorMitIgel
MitProtokollMitStift
NeueZufallsZahlenFolgeÖffneAusgabeDatei
ÖffneEingabeDateiÖffneFenster
OhneCursorOhneIgel
OhneProtokollOhneStift
PapierFarbePause
PunktRechterBogen
RechtsSchließeAusgabeDatei
SchließeEingabeDatei
SchließeFenster
SchreibPortStarteStopUhr
StiftFarbeStrecke
TextSchirmTon
UrsprungVertausche
VorneWähleDatei
Wischen
≡≡AusgabeAufBildschirm
WenndieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
Bildschirmerfolgt,mitAusgabeAufDruckeraufdenDruckerodermit
AusgabeAufDisketteaufdieDisketteumgelenktwurde,kannsiemit
AusgabeAufBildschirmwiederaufdenBildschirmzurückgelenktwerden.
Deklaration:
PROCEDUREAusgabeAufBildschirm;
Beispiel:
AusgabeAufDrucker;
WriteLn("DieseAusgabeerfolgtaufdenDrucker!");
AusgabeAufBildschirm;
WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
≡≡AusgabeAufDiskette
MitAusgabeAufDiskettewirddieAusgabe,diemitWrite/WriteLn
normalerweiseaufdenBildschirmerfolgt,aufdieDiskette/
Festplatteumgelenkt.ZuvormußabereineAusgabedateimit
ÖffneAusgabeDatei(DateiName)geöffnetwerden!
Deklaration:
PROCEDUREAusgabeAufDiskette;
Beispiel:
ÖffneAusgabeDatei("AUSGABE.TXT");
AusgabeAufDiskette;
WriteLn("DieseAusgabeerfolgtaufDiskette!");
AusgabeAufBildschirm;
WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
SchließeAusgabeDatei;
≡≡AusgabeAufDrucker
MitAusgabeAufDruckerwirddieAusgabe,diemitWrite/WriteLn
normalerweiseaufdenBildschirmerfolgt,aufdenDruckerumgelenkt.
Deklaration:
PROCEDUREAusgabeAufDrucker;
Beispiel:
AusgabeAufDrucker;
WriteLn("DieseAusgabeerfolgtaufdenDrucker!");
AusgabeAufBildschirm;
WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
≡≡Auswahl
MitAuswahlkanneineWahlauseinerListevonDatenerfolgen,diemit
AuswahlFeldvorherdefiniertwurden.InderVariablenIndexwirddabei
zurückgegeben,alswievieltesElementdasmitRETURNangewählteinder
Listeeingetragenwurde.WenndieAuswahlmitESCabgebrochenwird,ist
Index=0!BeimVerlassenderAuswahlwirddieAnzahlderAuswahlelemente
automatischaufNullgesetzt.
DerlinkeobereEckpunktdesAuswahlfensterhatdieKoordinatenP(x/y).
Deklaration:
PROCEDUREAuswahl(x,y:INTEGER;VARIndex:INTEGER);
Beispiel:
VAR
Liste:ARRAY[1..60]OFSTRING[20];
n,Wahl:INTEGER;
≡
BEGIN
FORn:=1TO60DOBEGIN
Str(n:5,Liste[n]);
AuswahlFeld(Liste[n]);ElementealsSTRINGindie
END;Auswahllisteeintragen
ÖffneFenster(1,1,80,25,OhneRahmen);altenBildschirminhalt
speichern
Auswahl(10,3,Wahl);linkenoberenEckpunktder
AuswahlaufP(10/3)setzen
unddasMenüaufrufenWahl
enthältdenIndexdes
gewähltenListenelementes
SchließeFenster;altenBildschirmwieder-
herstellen
≡
IFWahl>0THENBEGIN
WriteLn(Liste[Wahl]);
END
ELSEBEGIN
WriteLn("Auswahlwurdemit<ESC>abgebrochen");
END;
END.
≡≡AuswahlFeld
AuswahlFeldfügteinerListe,ausdereinElementausgewähltwerden
soll,einElementhinzu.DerText,derindemAuswahlmenüerscheinen
soll,mußderProzedurAuswahlFeldalsSTRINGübergebenwerden.
Deklaration:
PROCEDUREAuswahlFeld(DatenText:STRING[40]);
Beispiel:
VAR
Liste:ARRAY[1..60]OFSTRING[20];
n,Wahl:INTEGER;
≡
BEGIN
FORn:=1TO60DOBEGIN
Str(n:5,Liste[n]);
AuswahlFeld(Liste[n]);ElementealsSTRINGindie
END;Auswahllisteeintragen
ÖffneFenster(1,1,80,25,OhneRahmen);altenBildschirminhalt
speichern
Auswahl(10,3,Wahl);linkenoberenEckpunktder
AuswahlaufP(10/3)setzen
unddasMenüaufrufenWahl
enthältdenIndexdes
gewähltenListenelementes
SchließeFenster;altenBildschirmwieder-
herstellen
≡
IFWahl>0THENBEGIN
WriteLn(Liste[Wahl]);
END
ELSEBEGIN
WriteLn("Auswahlwurdemit<ESC>abgebrochen");
END;
END.
≡≡DatenAufDiskette
MitderAnweisungDatenAufDiskettekannderInhalteinerbeliebigen
Variablen,dieallerdingskeineDateivariable( TEXToderFILE)sein
darf,unterdemangegebenenDateinamenaufDiskettegespeichertwerden.
Deklaration:
PROCEDUREDatenAufDiskette(DateiName:STRING;
v:VariableBeliebigenTyps);
Beispiel:
≡
TYPE
DatenSatz=RECORDDatenstrukturdefinieren
Firma:STRING[40];
Ort:STRING[20];
Plz:WORD;
END;
VAR
d:DatenSatz;Variabledeklarieren
BEGIN
d.Firma:="SoftwareVertrieb";VariablemitWerten
d.Ort:="Kiel";belegen
d.Plz:=2300;undunterdemNamen
DatenAufDiskette("FIRMEN.DAT",d);"FIRMEN.DAT"abspeichern
END;
≡≡DatenVonDiskette
MitderAnweisungDatenVonDiskettekannderInhalteinerbeliebigen
Variablen,dieallerdingskeineDateivariable( TEXToderFILE)sein
darf,unterdemangegebenenDateinamenvonDiskettegelesenwerden.
Deklaration:
PROCEDUREDatenVonDiskette(DateiName:STRING;
VARv:VariableBeliebigenTyps);
Beispiel:
TYPE
DatenSatz=RECORDDatenstrukturdefinieren
Firma:STRING[40];
Ort:STRING[20];
Plz:WORD;
END;
≡
VAR
d:DatenSatz;Variabledeklarieren
BEGIN
IFEsGibtDatei("FIRMEN.DAT")THENBEGINgibtesdieDatei
"FIRMEN.DAT"?
DatenVonDiskette("FIRMEN.DAT",d);wennjavonDiskette
indieVariabledlesen
WriteLn(d);undausdrucken
END
ELSEBEGIN
WriteLn("FIRMEN.DATnichtgefunden");sonstFehlermeldung
END;
END;
≡≡DefiniereFunktionsTerm
WennmitDefiniereFunktionstermeinFunktionstermfestgelegtwurde,
kannmitFunktionWerteinWertaneinerStelleberechnetwerden.
Deklaration:
PROCEDUREDefiniereFunktionsterm(Term:STRING);
Beispiel:
DefiniereFunktionsterm("5*x"); zuerstFunktionstermfestlegen
IFFunktionstermFehler=0THENBEGINkeinFehlerenthalten?
FORn:=1TO5DOBEGIN
WriteLn(FunktionsWert(n)); erstdannFunktionswerte
END;berechnen
END;
≡≡DruckeBildschirm
MitDruckeBildschirmwirdderInhaltdesText-oderdesGrafikschirms
ausgedruckt.
Deklaration:
PROCEDUREDruckeBildschirm;
Beispiel:
Grafikschirm; indenGrafikmodusschalten
ZeichneIrgendEtwas;Grafikerstellen
DruckeBildschirm;undausdrucken
≡≡EingabeFeld
MitEingabeFeldwirdeinFeldeinerBildschirmmaskezurEingabeeines
Datensatzesdefiniert.WennallegewünschtenFelderdefiniertwurden,
wirddasEinlesenmitLiesEingabenausgeführt.DabeikannmitdenTasten
"Auf(CrsUp)","Ab(CrsDn)","Pos1(Home)"und"Ende(End)"zwischenden
Eingabefeldernbeliebigoftgewechseltwerden.DieEingabewirdbeendet,
wennindemzuletztdefiniertenFelddieRETURN-Tastegedrücktwirdoder
ineinembeliebigenFelddieESC-TasteodereinederTastenkombinationen
Ctrl-Bild-Auf(Ctrl-PgUp)oderCtrl-Bild-Ab(Ctrl-PgDn)gedrücktwird.
≡
Deklaration:
PROCEDUREEingabeFeld(x,y:INTEGER;
Erklärung:STRING;
VARv:EinfacheVariable);
EinfacheVariableistvomTypCHAR,STRING,BYTE,INTEGER,WORD,
LONGINT,REAL,DOUBLE,EXTENDED
oderBOOLEAN
Beispiel:
≡
VAR
r:REAL;
i:INTEGER;
s:STRING[20];
BEGIN
r:=1.234;BelegungderVariablenmitStartwerten,
i:=500;dieeditiertwerdensollen
Name:="Irgendwer";
≡
REPEAT
EingabeFeld(5,3,"Dezimalzahl:",r);
EingabeFeld(2,6,"ganzeZahlzwischen0und1000:",i);
EingabeFeld(10,15,"Name:",s);
Zuerstwirdfürallezubearbeitenden
VariableneinEingabefelddefiniert.
DieseDefinitionmußinnerhalbder
Schleifestehen,weilLiesEingaben
beimBeendenalleDefinitionenlöscht!
LiesEingaben;JetztwirdderEditorfürdieEingabe-
felderaufgerufen.
UNTIL((0>=i)AND(i<=1000))
OR(LetzteTaste=ESC);
WurdemitESCabgebrochen?
≡≡EingabeVonTastatur
EingabeVonTastaturaktiviertdieTastaturalsEingabemedium,wenn
irgendwannvorherimProgrammdieEingabemitEingabeVonDisketteauf
dieDisketteumgelenktwurde.BeimStarteinesProgrammserfolgtdie
EingabeautomatischüberdieTastatur,wennkeineandereAnweisung
gegebenwurde.
Deklaration:
PROCEDUREEingabeVonTastatur;
Beispiel:
≡
VAR
s:STRING;
BEGIN
ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
EingabeVonDiskette;undaktivieren
Write("EingabevonderDiskette:");
ReadLn(s);StringvonderDiskettelesen
EingabeVonTastatur;Tastaturaktivieren
Write("EingabevonderTastatur:");
ReadLn(s);StringüberdieTastaturlesen
SchließeEingabeDatei;Dateiwiederschließen
END;
≡≡EingabeVonDiskette
EingabeVonDisketteaktiviertdieDisketteanstellederTastaturals
Eingabemedium,wennirgendwannvorherimProgrammmitÖffneEingabeDatei
eineDateifestgelegtwurde,ausderdieZeichengelesenwerdensollen.
Deklaration:
PROCEDUREEingabeVonDiskette;
Beispiel:
≡
VAR
s:STRING;
BEGIN
ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
EingabeVonDiskette;undaktivieren
Write("EingabevonderDiskette:");
ReadLn(s);StringvonderDiskettelesen
EingabeVonTastatur;Tastaturaktivieren
Write("EingabevonderTastatur:");
ReadLn(s);StringüberdieTastaturlesen
SchließeEingabeDatei;Dateiwiederschließen
END;
≡≡ErsetzeBuchstaben
ErsetzeBuchstabenersetzteinenBuchstabeneinesStringsdurch
einenanderen.
Deklaration:
PROCEDUREErsetzeBuchstaben(VARZeichenkette:STRING;
WievielterBuchstabe:WORD;
DurchWelchenBuchstaben:CHAR);
Beispiel:
s:="abcdef";
ErsetzeBuchstaben(s,3,"x");ersetztdendrittenBuchstaben"c"
durch"x".sistdann"abxdef".
≡≡FügeBuchstabenEin
FügeBuchstabenEinfügteinenBuchstabenodereinenStringineinen
StringabeinervorgegebenenPositionein.
Deklaration:
PROCEDUREFügeBuchstabenEin(WelchenBuchstaben:CHAR;
VARInZeichenkette:STRING;
WievielterBuchstabe:WORD);
PROCEDUREFügeBuchstabenEin(WelcheZeichenkette:STRING;
VARInZeichenkette:STRING;
AbWelchemBuchstaben:WORD);
Beispiel:
≡
1)
s:="abcdef";
FügeBuchstabenEin("x",s,3);fügtdenBuchstaben"x"andiedritte
Stellezwischen"b"und"c"ein.
sistdann"abxcdef".
2)
s:="abcdef";
t:="xy";
FügeBuchstabenEin(t,s,5);fügtdieZeichenkette"xy"beginnend
anderfünftenStellezwischen"d"
und"e"ein.
sistdann"abcdxyef".
≡≡InGrad
InGradbewirkt,daßalleBerechnungenmittrigonometrischenFunktionen
inGrad(Altgrad:α=360°fürdenVollkreis)durchgeführtwerden.
Deklaration:
PROCEDUREInGrad;
Beispiel:
InGrad;inGradrechnen
WriteLn(sin(90));ergibt1.00000..
ImBogenmaß;imBogenmaßrechnen
WriteLn(sin(pi/2));ergibt1.00000..
≡≡ImBogenmaß
ImBogenmaßbewirkt,daßalleBerechnungenmittrigonometrischenFunktionen
imBogenmaß(α=2*pifürdenVollkreis)durchgeführtwerden.BeimStart
einesProgrammserfolgtdieBerechnungimmerinGrad,wennkeineandere
Anweisunggegebenwurde.
Deklaration:
PROCEDUREImBogenmaß;
Beispiel:
ImBogenmaß;imBogenmaßrechnen
WriteLn(sin(pi/2));ergibt1.00000..
InGrad;inGradrechnen
WriteLn(sin(90));ergibt1.00000..
≡≡LiesEingaben
MitLiesEingabenwirddieEingabeeinesDatensatzesgestartet,der
zuvorelementweisemitEingabeFelddefiniertwurde.Dabeikannmit
denTasten"Auf(CrsUp)","Ab(CrsDn)","Pos1(Home)"und"Ende(End)"
zwischendenEingabefeldernbeliebigoftgewechseltwerden.Die
Eingabewirdbeendet,wennindemzuletztdefiniertenFelddie
RETURN-TastegedrücktwirdoderineinembeliebigenFelddie
ESC-Tastegedrücktwird.
Deklaration:
PROCEDURELiesEingaben;
Beispiel:
≡
VAR
r:REAL;
i:INTEGER;
s:STRING[20];
BEGIN
r:=1.234;BelegungderVariablenmitStartwerten,
i:=500;dieeditiertwerdensollen
Name:="Irgendwer";
≡
REPEAT
EingabeFeld(5,3,"Dezimalzahl:",r);
EingabeFeld(2,6,"ganzeZahlzwischen0und1000:",i);
EingabeFeld(10,15,"Name:",s);
Zuerstwirdfürallezubearbeitenden
VariableneinEingabefelddefiniert.
DieseDefinitionmußinnerhalbder
Schleifestehen,weilLiesEingaben
beimBeendenalleDefinitionenlöscht!
LiesEingaben;JetztwirdderEditorfürdieEingabe-
felderaufgerufen.
UNTIL(0<=i)AND(i<=1000);
≡≡LöscheBuchstaben
LöscheBuchstabenlöschteinenodermehrereaufeinanderfolgende
BuchstabenbeginnendabeinervorgegebenenStelle.
Deklaration:
PROCEDURELöschenBuchstaben(VARZeichenkette:STRING;
WelchenBuchstaben,
WievieleBuchstaben:WORD);
Beispiel:
s:="abxycdef";
LöscheBuchstaben(s,3,2);löschtabdemdrittenBuchstabenzwei
Buchstaben.sistdann"abcdef".
≡≡Menü
MenüerrichteteinPulldownmenüaneinervorgegebenenStelledes
BildschirmsmitvorgegebenenHotkeys,überdieeinMenüpunktdirekt
angewähltwerdenkann.DemalsHotkeyvorgesehenenBuchstabenwird
dasZeichen^vorangestellt.InnerhalbdesMenüskannderAnwahlbalken
auchmitdenTasten"Auf(CrsUp)","Ab(CrsDn)","Ende(End)"und
"Pos1(Home)"verschobenwerden.CRaktiviertdenmitdemBalken
unterlegtenMenüpunktundliefertalsErgebnisdenalsHotkey
vorgesehenenBuchstabenzurück.ESCbrichtdieAnwahlabundliefert
ESC(CHR(27))alsErgebnis.
Deklaration:
PROCEDUREMenü(x,y:WORD;
Menüpunkte:STRING;
VARAngewählt:CHAR);
≡
Beispiel:
VAR
c:CHAR;
BEGIN
REPEAT
Menü(10,5,"^Laden;^Bearbeiten;^Speichern;^Ende;",c);
DasMenühatfürdenlinkenoberenEckpunktdie
Koordinaten(10/5).AlsHotkeyssind"L","B",
"S"und"E"durchdasvorangestellte"^"
definiert.DieeinzelnenMenüpunktewerdendurch
einSemikolon";"getrennt.ImMenüistbeim
StartdieobersteZeilemit"Laden"vollständig
hellunterlegt.IndenfolgendenZeilensindes
dieBuchstaben"B","S"und"E".DurchDrückender
RETURN-Tasteoderdes"L"'serhältcdenWert"L".
≡
AufdemBildschirmerscheintdasfolgendeMenü:
╔════════════╗
║Laden║DieseZeileisthellunterlegt.
║Bearbeiten║"B"isthellunterlegt.
║Speichern║"S"isthellunterlegt.
║Ende║"E"isthellunterlegt.
╚══════CR/ESC╝
≡
JetztwirddieVariablecausgewertetundeswerdendieeinzelnen
ProzedurenjenachInhaltvoncaufgerufen.
CASEcOF
"L":Laden;
"B":Bearbeiten;
"S":Speichern;
ELSEClrScr;JedermöglicheFallmußbei
CASEberücksichtigtwerden,
sonstkommteszueinem
Programm-Abbruch
END;
UNTIL(c="E")OR(c=CHR(27));"E"oderESC-Taste
≡≡MitCursor
InITG-PASCAListderCursornormalerweisenurinREAD-Anweisungen
sichtbar.Wennmanerreichenwill,daßderCursorauchsonstsichtbar
ist,mußmanihndurchMitCursoreinschalten.
StartvorgabeeinesProgrammsistohneCursor.
Deklaration:
PROCEDUREMitCursor;
Beispiel:
≡
MitCursor;Cursoreinschalten
Write("GebenSieeinenBuchstabenein:");Cursorblinkthinter":"
c:=ReadKey;ZeichenüberdieTastatur
einlesen
OhneCursor;Cursorausschalten
Write("GebenSieeinenBuchstabenein:");Cursorblinktnicht
hinter":"
c:=ReadKey;Zeichenüberdie
Tastatureinlesen
≡≡MitProtokoll
ITG-PASCALprotokolliertalleTextausgabenmitWrite-undRead-
AnweisungenineinemzweitenEditorfenstermit,soferngenügend
SpeicherplatzzurVerfügungsteht.WenndiesesProtokollzwischendurch
durchOhneProtokollabgeschaltetwurde,kannesdurchMitProtokoll
wiedereingeschaltetwerden.
StartvorgabeeinesProgrammsistmitProtokoll.
Deklaration:
PROCEDUREMitProtokoll;
Beispiel:
OhneProtokoll;
Write("DieserTextwirdnichtimzweitenEditorfenster");
WriteLn("mitprotokolliert.");
MitProtokoll;
Write("DieserTextwirdimzweitenEditorfenster");
WriteLn("mitprotokolliert.");
≡≡NeueZufallsZahlenFolge
NeueZufallsZahlenFolgeerzeugtdenAnfangeinerneuerFolgevon
Zufallszahlen.
Deklaration:
PROCEDURENeueZufallsZahlenFolge;
Beispiel:
NeueZufallsZahlenFolge;AnfangeinerneuenFolgeerzeugen
Write(GanzeZufallsZahl(100));Zufallszahlzwischen0und99drucken
≡≡ÖffneAusgabeDatei
BevordieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
Bildschirmerfolgt,mitAusgabeAufDisketteaufdieDiskette/
Festplatteumgelenktwird,mußeineAusgabedateimit
ÖffneAusgabeDatei(DateiName)geöffnetwerden!
Deklaration:
PROCEDUREÖffneAusgabeDatei(DateiName:STRING);
Beispiel:
ÖffneAusgabeDatei("AUSGABE.TXT");
AusgabeAufDiskette;
WriteLn("DieseAusgabeerfolgtaufDiskette!");
AusgabeAufBildschirm;
WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
SchließeAusgabeDatei;
≡≡ÖffneEingabeDatei
BevordieEingabe,dienormalerweiseüberdieTastaturerfolgt,mit
EingabeVonDisketteaufdieDiskette/Festplatteumgelenktwerdenkann,
mußmitÖffneEingabeDateizumLesendeklariertwerden.
Deklaration:
PROCEDUREÖffneEingabeDatei(DateiName:STRING);
Beispiel:
≡
VAR
s:STRING;
BEGIN
ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
EingabeVonDiskette;undaktivieren
Write("EingabevonderDiskette:");
ReadLn(s);StringvonderDiskettelesen
EingabeVonTastatur;Tastaturaktivieren
Write("EingabevonderTastatur:");
ReadLn(s);StringüberdieTastaturlesen
SchließeEingabeDatei;Dateiwiederschließen
END;
≡≡ÖffneFenster
ÖffneFensterspeichertdenaugenblicklichenInhaltdesTextbildschirmes
abunddefinierteinneuesTextfenster,dasmiteinemRahmenversehen
werdenkann.DerlinkeobereEckpunktdesFenstersistfürallejetzt
folgendenTextausgabender PunktP(1/1).
JedesFenster,dasgeöffnetwurde,mußauchwiedergeschlossenwerden!
Deklaration:
PROCEDUREÖffneFenster(xLinks,yOben,xRechts,yUnten,
MitOderOhneRahmen:INTEGER);
Esmußgelten:1<=xLinks<xRechts<=80
1<=yOben<yUnten<=25
MitOderOhneRahmenε{MitRahmen,OhneRahmen}
Beispiel:
≡
GotoXY(10,10);
Write("DieserTextverschwindetunterdemFenster");
Delay(2000);
ÖffneFenster(5,5,75,20,MitRahmen);altenBildschirminhalt
sichernundFensteröffnen
ClrScr;Fensterinhaltlöschen
GotoXY(5,5);relativeKoordinatenim
Fenster
Write("absoluteKoordinaten(10/10)");
Delay(2000);2Sekundenwarten
SchließeFenster;altenBildschirminhalt
wiederherstellenundaltes
Fensterwiederöffnen
Delay(2000);
≡≡OhneCursor
InITG-PASCAListderCursornormalerweisenurinREAD-Anweisungen
sichtbar.Wennmanerreichenwill,daßderCursorauchsonstsichtbar
ist,mußmanihndurchMitCursoreinschalten.DurchOhneCursorwirder
wiederabgeschaltet.
StartvorgabeeinesProgrammsistohneCursor.
Deklaration:
PROCEDUREOhneCursor;
Beispiel:
≡
MitCursor;Cursoreinschalten
Write("GebenSieeinenBuchstabenein:");Cursorstehthinter":"
c:=ReadKey;Zeichenüberdie
Tastatureinlesen
OhneCursor;Cursorausschalten
Write("GebenSieeinenBuchstabenein:");Cursorblinktnicht
hinter":"
c:=ReadKey;Zeichenüberdie
Tastatureinlesen
≡≡OhneProtokoll
ITG-PASCALprotokolliertalleTextausgabenmitWrite-undRead-
AnweisungenineinemzweitenEditorfenstermit,soferngenügend
SpeicherplatzzurVerfügungsteht.DiesesProtokollkanndurch
OhneProtokollabgeschaltetwerden.
StartvorgabeeinesProgrammsistmitProtokoll.
Deklaration:
PROCEDUREOhneProtokoll;
Beispiel:
OhneProtokoll;
Write("DieserTextwirdnichtimzweitenEditorfenster");
WriteLn("mitprotokolliert.");
MitProtokoll;
Write("DieserTextwirdimzweitenEditorfenster");
WriteLn("mitprotokolliert.");
≡≡Pause
PauseunterbrichteinProgrammsolange,bisdieRETURN-Tastegedrückt
wird.
Deklaration:
PROCEDUREPause;
Beispiel:
WriteLn("WeitermitderRETURN-Taste");
Pause;aufDrückenderRETURN-
Tastewarten
WriteLn("DieRETURN-Tastewurdebetätigt");
≡≡SchließeAusgabeDatei
WenndieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
Bildschirmerfolgt,mitAusgabeAufDisketteaufdieDiskette/
Festplatteumgelenktwurde,mußdieAusgabedateivordemProgrammende
mitSchließeAusgabeDateigeschlossenwerden!
Deklaration:
PROCEDURESchließeAusgabeDatei;
Beispiel:
ÖffneAusgabeDatei("AUSGABE.TXT");
AusgabeAufDiskette;
WriteLn("DieseAusgabeerfolgtaufDiskette!");
AusgabeAufBildschirm;
WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
SchließeAusgabeDatei;
≡≡SchließeEingabeDatei
SchließeEingabeDateischließtdieDatei,diemitÖffneEingabeDatei
zumLesenvonEingabenanstellederTastaturgeöffnetwurde.
Deklaration:
PROCEDURESchließeEingabeDatei;
Beispiel:
≡
VAR
s:STRING;
BEGIN
ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
EingabeVonDiskette;undaktivieren
Write("EingabevonderDiskette:");
ReadLn(s);StringvonderDiskettelesen
EingabeVonTastatur;Tastaturaktivieren
Write("EingabevonderTastatur:");
ReadLn(s);StringüberdieTastaturlesen
SchließeEingabeDatei;Dateiwiederschließen
END;
≡≡SchließeFenster
SchließeFensterstelltdenInhaltunddieFensterkoordinatendes
Textfensterswiederher,wieesdemAufrufderProzedurÖffneFenster
vorhandenwar.EsdürfenmehrereFenstergleichzeitiggeöffnetsein.
GeschlossenwirdimmerdaszuletztgeöffneteFenster.
JedesFenster,dasgeöffnetwurde,mußauchwiedergeschlossenwerden!
Deklaration:
PROCEDURESchließeFenster;
Beispiel:
≡
GotoXY(10,10);
Write("DieserTextverschwindetunterdemFenster");
Delay(2000);
ÖffneFenster(5,5,75,20,MitRahmen);altenBildschirminhalt
sichernundFensteröffnen
ClrScr;Fensterinhaltlöschen
GotoXY(5,5);relativeKoordinatenim
Fenster
Write("absoluteKoordinaten(10/10)");
Delay(2000);2Sekundenwarten
SchließeFenster;altenBildschirminhalt
wiederherstellenundaltes
Fensterwiederöffnen
Delay(2000);
≡≡SchreibPort
MitSchreibPortwirdeinWertübereinenPortdesComputersandie
Peripherieausgegeben.
ACHTUNG:VorderBenutzungdieserAnweisungsolltemansichabergenau
informieren,daeinSchreibenineinenfalschenPortzu
Zerstörungenführenkann!
Deklaration:
PROCEDURESchreibPort(PortAdresse,Ausgabewert:WORD);
Beispiel:
SchreibPort(PortAdresse,Ausgabewert);schreibtdenAusgabewert
andiePortadresse
≡≡StarteStopUhr
StarteStopUhrsetztdieZeitfüreineStopuhrauf0undstarteteine
Zeitmessung.DiewährendderProgrammausführungverstricheneZeitkann
mitderFunktionStopZeitausgelesenwerden.
StarteStopUhrwirdautomatischbeijedemProgrammstartaufgerufen.
Deklaration:
PROCEDUREStarteStopUhr;
Beispiel:
StarteStopUhr;Stopuhrauf0setzen
TueIrgendetwas;
Write(StopZeit);ZeitdauerinSekundenanzeigen,diefür
TueIrgendetwasbenötigtwurden.
≡≡Ton
TonerzeugteinenTonmitvorgegebenerFrequenzundDauer.
Deklaration:
PROCEDURETon(Frequenz,MilliSekunden:WORD);
Beispiel:
Ton(440,1000);erzeugtfür1000ms(1s)einenTonder
Frequenz440Hz
≡≡Vertausche
VertauschevertauschtdieInhaltezweierVariablenbeliebigenTyps
außerFILE-und TEXT-Variablengegeneinander.
Deklaration:
PROCEDUREVertausche(VARa,b:VariableBeliebigenTyps);
Beispiel:
a:="a";Wertzuweisungen
b:="b";
Vertausche(a,b);jetzthatadenInhalt"b"undbdenInhalt"a"
≡≡WähleDatei
WähleDatei(x,y,Maske,Dateiname)öffneteinAuswahlfenstermitdem
linkenoberenEckpunktP(x/y)alsBildschirmkoordinaten,indemalle
VerzeichnisseundalleDateien,diederMaskeentsprechen,angezeigt
werden.MitdenCursortastenwirdeinVerzeichnisodereinDateiname
angewählt.ImFalleeinesVerzeichnisseswirdindiesesvorübergehend
gewechselt,imFalleeinesDateinamenswirddieserandasausführende
Programmübergeben.MitderESC-TastekanndieWahlabgebrochenwerden.
DerDateinameistdannleer.DerBildschirmwirdnachVerlassendes
Menüsautomatischrestauriert.
Deklaration:
PROCEDUREWähleDatei(x,y:INTEGER;
Maske:STRING;
VARDateiname:STRING);
≡
Beispiel:
VAR
Dateiname:STRING;
BEGIN
WähleDatei(10,3,"*.PAS",Dateiname);allePASCAL-Programme
anzeigen
IFDateiname<>""THENBEGIN
DatenVonDiskette(Dateiname,Variable);InhaltderDateian
END;Variableübergaben
END;
≡≡Debugger
DebugEin
DebugAus
BreakPoint
EinzelschrittEin
EinzelschrittAus
≡≡DebugEin
AbdiesemZeitpunktwerdenalledurcheininderDeklaration
vorangestelltes"!"markiertenVariablenmitihremWertundder
Quelltextzeileangezeigt,bisdieAnweisungDebugAusausgeführt
wird.
ZusätzlichzurAnzeigeaufdemBildschirmwerdenalle
InformationenineinzweitesEditor-Fenstergeschrieben,
soferngenügendSpeicherplatzzurVerfügungsteht,und
könnennachBeendigungdesProgrammsunter
"Editor/Programm-/Fehler-Ausgabeansehen"betrachtetund
gegebenenfallsauchmit"Blockschreiben"aufDiskettegespeichert
werden.
2Beispiele:
≡
1)PROCEDUREp(!a,b:INTEGER);
(*nurdieVariableaistmarkiert,bnicht*)
VAR
c,!d:REAL;
(*nurdieVariabledistmarkiert,cnicht*)
BEGIN
c:=a^b;
(*keineAusgabederVariablen*)
DebugEin;
(*QuelltextausgabeundAusgabederVariablenwird
abhierausgeführt*)
d:=c/a;
c:=d*c;
DebugAus;
(*Ausgabewirdnichtmehrdurchgeführt*)
b:=a;
END;
≡
2)PROGRAMFakultät;
VAR
!n,!m:INTEGER;
FUNCTIONFak(!n:GanzeZahl):INTEGER;
VAR
!f:INTEGER;
(*fwirdhierbenutzt,weilFunktionsergebnisse
sonstnichtangezeigtwerden.*)
BEGIN
IFn>1THENBEGIN
f:=n*Fak(n-1);
END
ELSEBEGIN
f:=1;
END;
Fak:=f;
END;
≡
BEGIN
n:=3;
Write('Berechnungvonn!n=');
ReadLn(n);
DebugEin;
(*NurwährendderrekursivenFunktionsaufrufewerden
dieInhaltederVariablenangezeigt.Dabeiistdie
Rekursionsstufezuerkennen,wieimfolgenden
Beispielfür3!gezeigtwird.*)
m:=Fak(n);
DebugAus;
WriteLn(n,'!=',m);
END.
≡
Berechnungvonn!n=3
(*hiernormaleTextausgabemit"WRITE"*)
IFn>1THENBEGIN
10>F=0N=3|M=0N=3
^GlobaleVariablenstehenimmer
amEndederListenachdem
letzten"|".
^LokaleVariablenführendieListevordemletzten"|"
an.DieVariablendergeradeaktivenProzedur/Funktion
stehenganzlinks,danachfolgendieVariablender
Prozedur/Funktion,ausderdiegeradeaktiveaufgerufen
wurdeusw.biszudenglobalenVariablen.
HierstehenindiesemFalldieVariablendesersten
AufrufsderFunktion"Fak".
≡
IFn>1THENBEGIN
10>F=0N=2|F=0N=3|M=0N=3
^globaleVariablen
^ersterAufrufvon"Fak"
^zweiterAufrufvon"Fak"
f:=1;
14>F=1N=1|F=0N=2|F=0N=3|M=0N=3
^global
^ersterAufrufvon"Fak"
^zweiterAufrufvon"Fak"
^dritterAufrufvon"Fak"
Jetztistn=1.DamitwerdendierekursivenAufrufebeendet
undesgehtrückwärts,wieindennächstenZeilenzusehen
ist.
≡
Fak:=f;
16>F=1N=1|F=0N=2|F=0N=3|M=0N=3
f:=n*Fak(n-1);
11>F=2N=2|F=0N=3|M=0N=3
Fak:=f;
16>F=2N=2|F=0N=3|M=0N=3
f:=n*Fak(n-1);
11>F=6N=3|M=0N=3
Fak:=f;
16>F=6N=3|M=0N=3
m:=Fak(n);
24>M=6N=3
3!=6
≡≡DebugAus
SchaltetdieAusgabederInhaltedermarkiertenVariablen
undderQuelltextzeileaus.
EineausführlichereBeschreibungundeinBeispielsindunter
DebugEinzufinden.
≡≡BreakPoint
AndieserStellewirdeinlaufendesProgrammunterbrochenund
eserscheintfolgendesMenüamBildschirmrand:
╔═════BreakPoint════╗
║Run║
║Variablenzeigen║
║weitereVariablen║
║Variablenändern║
║Menü-Lage ║
║Programm-Abbruch║
╚═══════════════════╝
DieBedeutungdereinzelnenMenüpunkte:
≡
1)Run:
DasProgrammwirdfortgesetzt,bisesbeendetistoderbises
wiederaufdieAnweisung"BreakPoint"trifft.
2)Variablenzeigen:
DerInhaltderdurch"!"markiertenVariablenundderimnächsten
Punkt"weitereVariablen"markiertenwirdangezeigt,wieunter
"DebugEin"beschrieben.
3)weitereVariablen:
ZusätzlichzudeninderDeklarationmit"!"markiertenVariablen
könnenweitereineinemAuswahlfenstermit"ENTER"markiertwerden.
EbensoisteinLöschenderMarkierungmit"ENTER"möglich.
MarkierteVariablensinddurcheinvorangestelltes"√"gekennzeichnet.
DieReihenfolgederVariablenimAuswahlfensteristunter4)
beschrieben.
≡
4)Variablenändern:
Wennmantestenmöchte,wiedasProgrammmitanderenVariablenwerten
weiterläuft,kannsichineinemAuswahlfensterVariablenmit"ENTER"
wählen,derenInhaltanschließendineinemEditorfenstergeändert
werdenkann.
LokaleVariablenerscheinenobenimAuswahlfenster,globale
Variablenzuletzt.DabeiwirddieselbeReihenfolgewieunter
"DebugEin"beschriebeneingehalten,essindnurlinksmitobenund
rechtsmituntenzuvertauschen.
≡
5)Menü-Lage:
WenndiesesMenüInformationenverdeckt,kannesineineandere
Bildschirmeckeverschobenwerden.DieLagedesMenüswechseltdabei
zyklischzwischendenPositionen
linksoben,
rechtsoben,
linksuntenund
rechtsunten.
6)Programm-Abbruch:
DasProgrammwirdsofortbeendet.DabeierfolgteinPost-Mortem-Dump.
≡≡EinzelschrittEin
EinzelschrittEinbewirkt,daßjeweilsnureineProgrammzeileabgearbeitet
wird.AnschließendwartetdasProgrammaufeinenTastendruck,dannwird
dienächsteProgrammzeileabgearbeitet.
Beispiel:
DebugEin;InhaltdermarkiertenVariablenwird
angezeigt
EinzelschrittEin;wartejeweilsnachAusführungeiner
ProgrammzeileaufeinenTastendruck
FORn:=1TO100DOBEGIN
m:=n^2;
END;
EinzelschrittAus;setzedieProgrammausführungohneWarten
aufTastendruckfort
DebugAus;zeigedieVariableninhaltenichtmehran
≡≡EinzelschrittAus
EinzelschrittAusbewirkt,daßnachAusführungeinerProgrammzeilenicht
mehraufeinenTastendruckgewartetwird.
Beispiel:
DebugEin;InhaltdermarkiertenVariablenwird
angezeigt
EinzelschrittEin;wartejeweilsnachAusführungeiner
ProgrammzeileaufeinenTastendruck
FORn:=1TO100DOBEGIN
m:=n^2;
END;
EinzelschrittAus;setzedieProgrammausführungohneWarten
aufTastendruckfort
DebugAus;zeigedieVariableninhaltenichtmehran
≡≡parallele·Prozesse
NächsterProzeßNeuerProzeß ProzeßEnde
SendeSignal StarteProzesseStarteZeitscheibenVerfahren
UnterbrechungWarteAufSignal
MitparallelenProzessenkannEinblickgenommenwerdenindieProgramm-
ausführungvonMultitaskingsystemen,aufdenenmehrereProgramme
quasigleichzeitigvoneinemProzessorabgearbeitetwerden,und
Mehrprozessorsystemen,beidenenmehrereProzessorengleichzeitigan
einemProgrammarbeiten.DabeiistdieProzeßumschaltungunddie
ProzeßsynchronisationvonBedeutung.
≡≡NächsterProzeß
NächsterProzeß(ProzeßIndex)dientdazu,dieweitereProgrammausführung
einembestimmtenProzeßzuübergeben.
Deklaration:
PROCEDURENächsterProzeß(ProzeßIndex:INTEGER);
Beispiel:
PROCEDUREP1;
BEGIN
WriteLn("1.:P1");
NächsterProzeß(2);anP2übergeben
WriteLn("5.:P1");
ProzeßEnde(1);P1ordnungsgemäßbeenden
END;
≡
PROCEDUREP2;
BEGIN
WriteLn("2.:P2");
NächsterProzeß(3);anP3übergeben
WriteLn("4.:P2");
NächsterProzeß(1);anP1übergeben
ProzeßEnde(2);P2ordnungsgemäßbeenden
END;
PROCEDUREP3;
BEGIN
WriteLn("3.:P3");
NächsterProzeß(2);anP2übergeben
ProzeßEnde(3);P3ordnungsgemäßbeenden
END;
≡
BEGIN
NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
NeuerProzeß(3,100,1,P3);Prozeßprozedurfestlegen
StarteProzesse;erstenProzeßstarten
END.
AufdemBildschirmerscheint:
1.:P1
2.:P2
3.:P3
4.:P2
5.:P1
≡≡NeuerProzeß
NeuerProzeßreihteineparameterloseProzedurindieListederProzeduren
ein,zwischendenenwiebeieinemMultitaskingsystemhin-undher-
geschaltetwerdenkann.
Deklaration:
PROCEDURENeuerProzeß(Index,StackGröße,Priorität:INTEGER;
Prozeß:parameterloseProzedur);
Beispiel:
≡
PROCEDUREP1;
BEGIN
WriteLn("1.:P1");
NächsterProzeß(2);anP2übergeben
WriteLn("3.:P1");
ProzeßEnde(1);P1ordnungsgemäßbeenden
END;
PROCEDUREP2;
BEGIN
WriteLn("2.:P2");
NächsterProzeß(1);anP1übergeben
ProzeßEnde(2);P2ordnungsgemäßbeenden
END;
≡
BEGIN
NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
StarteProzesse;Prozeßprozedurfestlegen
END.erstenProzeßstarten
≡≡ProzeßEnde
ProzeßEndesorgtdafür,daßeinProzeßordnungsgemäßbeendetwird.Jeder
ProzeßmußentwederauseinerEndlosschleifebestehenoderdurchdie
AnweisungProzeßEndevordemErreichenderEND-Anweisungder
Prozeßprozedurbeendetwerden.
Deklaration:
PROCEDUREProzeßEnde(ProzeßIndex:INTEGER);
Beispiel:
ProzeßEnde(1);beendetdenProzeßmitdemIndex1
≡≡SendeSignal
DurchSendeSignal(SignalVar)kanneinemanderenProzeßmitgeteiltwerden,
daßdieBearbeitungbiszueinembestimmtenPunktvorangeschrittenist.
Deklaration:
PROCEDURESendeSignal(VARSignalVar:SIGNAL);
Beispiel:
VAR
P1Fertig,P2Fertig:SIGNAL;
x,y:REAL;
≡
PROCEDUREP1;
BEGIN
x:=0.1;
WHILEx<10DOBEGIN
SendeSignal(P1Fertig);x-Wertfertig,P2kannrechnen
WarteAufSignal(P2Fertig);warten,bisP2mitRechnungfertig
x:=x+y;undgültigery-Wertvorhanden
END;
ProzeßEnde(1);Prozessebeenden
ProzeßEnde(2);
END;
≡
PROCEDUREP2;
BEGIN
y:=0.3;
WHILETRUEDOBEGIN
WarteAufSignal(P1Fertig);aufgültigenx-Wertwarten
y:=y+x;
SendeSignal(P2Fertig);P1kannaufy-Wertzugreifen
END;
END;
BEGIN
NeuerProzeß(1,100,1,P1);Prozesseinitialisieren
NeuerProzeß(2,100,1,P2);
StarteProzesse;
END.
≡≡StarteProzesse
StarteProzessesuchtbeginnendbeimProzeßindex1denProzeßmitder
höchstenPrioritätundstartetihn.
Deklaration:
PROCEDUREStarteProzesse;
Beispiel:
≡
PROCEDUREP1;
BEGIN
WriteLn("1.:P1");
NächsterProzeß(2);anP2übergeben
WriteLn("3.:P1");
ProzeßEnde(1);P1ordnungsgemäßbeenden
END;
PROCEDUREP2;
BEGIN
WriteLn("2.:P2");
NächsterProzeß(1);anP1übergeben
ProzeßEnde(2);P2ordnungsgemäßbeenden
END;
≡
BEGIN
NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
StarteProzesse;Prozeßprozedurfestlegen
END.erstenProzeßstarten
≡≡StarteZeitscheibenVerfahren
StarteZeitscheibenVerfahrenstartetalleinitialisiertenProzesseund
sorgtdafür,daßnachderAusführungeinervorgegebenenAnzahlvon
OpcodesderaktiveProzeßgewechseltwird.
ACHTUNG:EinaktiverProzeßsolltedieKontrolledannnichtmit
========"Unterbrechung"andennächstenProzeßabgeben.
Deklaration:
PROCEDUREStarteZeitscheibenVerfahren(AnzahlDerOpcodes:INTEGER);
Beispiel:
≡
PROCEDUREP1;
VARn:INTEGER;
BEGIN
FORn:=1TO1000DOBEGIN
Write(n:5);
END;
HALT;
END;
≡
PROCEDUREP2;
VARn:INTEGER;
BEGIN
FORn:=2000TO3000DOBEGIN
Write(n:5);
END;
HALT;
END;
≡
BEGIN
NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfest-
NeuerProzeß(2,100,1,P2);legen,StackgrößeundPriorität
StarteZeitscheibenVerfahren(10);festlegen,Prozeßprozedurfest-
END.legenunderstenProzeßstarten.
NachderAusführungvon10
OpcodeserfolgteineUmschaltung.
≡≡Unterbrechung
UnterbrechungunterbrichtdieAusführungeinesProzessesundsuchtden
aktivenProzeßinderWarteliste,derzurZeitdiehöchstePrioritäthat.
DieserProzeßwirdfortgesetzt.SeinePrioritätwirddabeiumeins
verringert,damiterbeidernächstenUnterbrechungnichtunbedingt
wiederderProzeßmitderhöchstenPrioritätist.
Deklaration:
PROCEDUREUnterbrechung;
≡
Beispiel:
PROCEDUREP1;
VAR
n:INTEGER;
BEGIN
FORn:=1TO1000DOBEGIN
GotoXY(10,3);
Write(n:4);
Unterbrechung;unterbrechenundaufdenProzeßmit
END;derderzeithöchstenPriorität
HALT;umschalten
END;
≡
PROCEDUREP2;
VAR
n:INTEGER;
BEGIN
FORn:=1TO1000DOBEGIN
GotoXY(20,3);
Write(n:4);
Unterbrechung;unterbrechenundaufdenProzeßmit
END;derderzeithöchstenPriorität
HALT;umschalten
END;
≡
BEGIN
NeuerProzeß(1,100,3,P1);dadiePrioritätvonP1dreimalso
NeuerProzeß(2,100,1,P2);hochistwiedievonP2,wirdP1auch
StarteProzesse;dreimalsooftaufgerufenwieP2.
END.ZählständeamEnde:P1:1000,P2:333
≡≡WarteAufSignal
DurchWarteAufSignal(SignalVar)kannsolangegewartetwerden,bisdie
BearbeitungineinemanderenProzeßbiszueinembestimmtenPunkt
vorangeschrittenist.
Deklaration:
PROCEDUREWarteAufSignal(VARSignalVar:SIGNAL);
Beispiel:
VAR
P1Fertig,P2Fertig:SIGNAL;
x,y:REAL;
≡
PROCEDUREP1;
BEGIN
x:=0.1;
WHILEx<10DOBEGIN
SendeSignal(P1Fertig);x-Wertfertig,P2kannrechnen
WarteAufSignal(P2Fertig);warten,bisP2mitRechnungfertig
x:=x+y;undgültigery-Wertvorhanden
END;
ProzeßEnde(1);Prozessebeenden
ProzeßEnde(2);
END;
≡
PROCEDUREP2;
BEGIN
y:=0.3;
WHILETRUEDOBEGIN
WarteAufSignal(P1Fertig);aufgültigenx-Wertwarten
y:=y+x;
SendeSignal(P2Fertig);P1kannaufy-Wertzugreifen
END;
END;
BEGIN
NeuerProzeß(1,100,1,P1);Prozesseinitialisieren
NeuerProzeß(2,100,1,P2);
StarteProzesse;
END.
≡≡Fischertechnik·LEGO
Aus EinLinksDrehenRechtsDrehen
Lampe
Motor
Warte
Zustand
DiehieraufgeführtenKonstanten,ProzedurenundFunktionenstehen
nurdannzurVerfügung,wennITG-PASCALausdemmitgelieferten
RahmenprogrammzurAnsteuerungvonInterfacesherausgestartetwurde.
ACHTUNG:WennderStartnichtausdemRahmenprogrammherausgestartet
========wurde,kommtesbeiVerwendungderhieraufgeführtenKonstanten,
ProzedurenundFunktionenzueinerFehlermeldungbeim
compilieren,obwohleinProgrammunterUmständenschonfehlerfrei
lief!
≡≡ Aus
DieKonstanteAusdientzumAusschaltenvonLampenundMotoren.
IhrWertist0.
≡≡ Ein
DieKonstanteEindientzumEinschaltenvonLampen.
IhrWertist1.
≡≡LinksDrehen
DieKonstantenLinksDrehendientdazu,einenMotorgegendenUhrzeiger-
sinndrehenzulassen.IhrWertist1.
≡≡RechtsDrehen
DieKonstantenRechtsDrehendientdazu,einenMotorimdenUhrzeigersinn
drehenzulassen.IhrWertist2.
≡≡Lampe
MitderProzedurLampe(Nr,Ein)wirddieSpannungamAusgangmitdem
IndexNreingeschaltet.
Deklaration:
PROCEDURELampe(Nr,AusOderEin:WORD);
Beispiel:
Lampe(3,Ein);Lampe3einschaltenund
Warte(1.5);1,5Sekundenlangbrennenlassen
Lampe(3,Aus);dannwiederausschalten
≡≡Motor
MitderProzedurMotor(Nr,Drehrichtung)wirddieSpannungamMotor-
AusgangmitdemIndexNrsoeingeschaltet,daßderMotorsichindie
angegebeneRichtungdreht.
Deklaration:
PROCEDUREMotor(Nr,Drehrichtung:WORD);
Beispiel:
Motor(3,LinksDrehen);Motor3einschaltenund1,5Sekundennach
Warte(1.5);linksdrehenlassen
Motor(3,Aus);dannwiederausschalten
≡≡Warte
MitderProzedurWarte(Sekunden)wirddieautomatischeAbschaltungbeim
Fischer-Interfaceunterbunden,diesonstnach0,5Sekundeneintritt.
Deklaration:
PROCEDUREWarte(Sekunden:REAL);
Beispiel:
Lampe(3,Ein);Lampe3einschaltenund
Warte(1.5);1,5Sekundenlangbrennenlassen
Lampe(3,Aus);dannwiederausschalten
≡≡Zustand
DieFunktionZustand(Nr)ergibt1,wennamDigitaleingangmitdemIndex
NreineSpannunganliegt.Sonstergibtsie0.
Deklaration:
FUNCTIONZustand(DigitalEingang:WORD):WORD;
Beispiel:
IFZustand(2)=1THENBEGIN
WriteLn("AmDigitaleingang2liegtSpannungan.");
END
ELSEBEGIN
WriteLn("AmDigitaleingang2liegtkeineSpannungan.");
END;
≡≡Editor
DerEditoristsogestaltet,daßseineBedienungkompatibelzudem
TURBO-PASCAL-Editorist.AllerdingsistderUmfangderzurVerfügung
stehendenBefehleaufdasnötigebeschränkt.Zusätzlichistabernoch
einMakro-Recordervorhanden,durchdendurchDrückeneinerTastebis
zu100ZeichenaufeinmalindenProgrammtexteingefügtwerdenkönnen.
Pfeiltasten:CursorumeinZeichen/eineZeileindiePfeilrichtung
bewegen
<-(BackSpace):ZeichenlinksvomCursorlöschen
Entf:ZeichenunterdemCursorlöschen
Enter
:TextrechtsvomCursorineineneueZeileschreiben/
neueZeilebeginnen.DieseAngabengeltennur,wennder
Einfügenmodusaktivist.
Achtung:ImÜberschreibmodus,derandemgrößeren
CursorundderAnzeigeinderStatuszeilezuerkennen
ist,erfolgtkeinZeilenumbruch!
≡
Einfg
:zwischenEinfügenundÜberschreibenumschalten
SowohlamCursoralsauchanderStatuszeileistder
aktivierteModusabzulesen:
CursorAnzeigeinderStatuszeile
EinfügenkleinEinfügen
ÜberschreibengroßÜberschreiben
F1:HilfezuITG-PASCAL
Strg-F1:HilfezumEditor
DieseBefehlsübersichtwirdangezeigt.
F2:SicherndesProgrammtextesaufDiskette/Festplatte
F3:LadeneinesaufDiskette/Festplattevorhandenen
Programmtextes
F9:CompilierendesProgramms
Strg-F9:StartendesProgramms
F10,ESC:VerlassendesEditors,WechselinsMenü
≡
Strg-BildAuf:CursoraufdenTextanfangsetzen
Strg-BildAb:CursoransTextendesetzen
Strg-QF:SuchennachZeichenfolgenimText
InderoberstenBildschirmzeileerscheintdieFrage
"Suchen:".DiezusuchendeZeichenfolgeistjetzt
einzugebenundmitENTERabzuschließen.Anschließend
wirdnachdenSuchoptionengefragt"Optionen
(g/n/u/w/b):".AuchdieseEingabeistmitENTER
abzuschließen.
BedeutungderOptionen:
g:global/imganzenTextsuchen
n:nichtnachfragenbeimErsetzen
u:Groß-undKleinschreibungnichtunterscheiden
w:nurganzeWortesuchen
b:abderCursorpositionrückwärtssuchen
≡
StandardvorgabebeimSuchenist:
-SuchenabCursorposition
-BerücksichtigenvonGroß-undKleinschreibung
-SuchenauchnachWortteilen
Strg-QA:SuchenundErsetzenvonZeichenfolgenimText
EswirdnacheinerZeichenfolgegesucht,dieanschließend
durcheineandereersetztwird.DasVorgehenentspricht
demunter"SuchennachZeichenfolgenimText"beschrie-
benen,zusätzlichwirdalszweitesdurch"Ersetzen
durch:"nachderZeichenfolgegefragt,diedieerste
ersetzensoll.
≡
WenndieOptionnnichtgewähltwurde,wirddiegesuchte
Zeichenfolge,sofernsiegefundenwurde,aufdemBild-
schirmhervorgehobenundeserscheintinderobersten
BildschirmzeiledieFrage"Ersetzen(j/n):".Wenn"j"
oder"J"eingegebenwurde,wirdersetzt,bei"n"bzw.
"N"nicht.
Strg-L :letztesSuchenbzw.Suchen/Ersetzenwiederholen
WennzuletztnacheinerZeichenfolgegesuchtwurde,wird
dieseSuchemitdeneingegebenenOptionenwiederholt,
andernfallswird"SuchenundErsetzen"wiederholt.
Strg-T :WortrechtsvomCursorlöschen
Strg-KB:Blockanfangmarkieren
Strg-KK:Blockendemarkieren
EinmarkierterBlock,dessenAnfangvorseinemEnde
steht,wirddurcheineinvertierteDarstellungvon
ZeichenundHintergrundhervorgehoben.
≡
Strg-KH:Blockmarkierungein-/ausschalten
DieHervorhebungeinesBlockswirddadurchaufgehoben
bzw.wiederausgeführt.
Strg-KC:Blockkopieren
WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
wirderandieCursorpositionkopiert.DerTextblock
bleibtanderursprünglichenPositionerhalten.
Strg-KV:Blockverschieben
WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
wirderandieCursorpositionverschoben.DerTextblock
wirdanderursprünglichenPositiongelöscht.
Strg-KY:Blocklöschen
WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
wirdergelöscht.
≡
Strg-KP:Blockdrucken
WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
wirderaufdemDruckerausgegeben.
Strg-KW:BlockineineDateischreiben
WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
wirderineineDateigeschrieben,nachdeminder
oberstenBildschirmzeilederDateinamenach"Block
schreiben:"eingegebenwurde.
Strg-KR:BlockauseinerDateilesen
InderoberstenBildschirmzeilewirdmit"Blocklesen:"
nachdemNameneinerTextdateigefragt,dieabder
CursorpositionindenTexteingefügtwird,wenneseine
TextdateiunterdiesemNamengibt.
≡
ImEditorkönnenZeichenfolgenalsMakrosdefiniertwerden.Aufdiese
WeiselassensichdurchDrückeneinereinzigenTastebiszu100Zeichen
aufeinmalabderCursorpositionindenTexteinfügen.EineÜbersicht
übervorhandeneMakroserhältmandurchdieTastenkombinationAlt-F5.
Beispiele:
<Alt-P>:PROCEDURE
<Alt-F>:FUNCTION
DieseAngabenbedeuten,daßdurchDrückenderTastenkombinationAlt-P
einMakroeingefügtwird,dereinenProzedurrahmenenthält.
BeimStartvonITG-PASCALwirddieDateiEDIT.MACmitdenbisher
definiertenMakrosgeladen,beimVerlassenvonITG-PASCALwerden
diederzeitdefiniertenMakrosindieserDateiabgespeichert,sodaß
siebeimnächstenStartwiederzurVerfügungstehen.
≡
DieAufnahmeeinesMakroswirddurchdieTastenkombinationCtrl-F5
gestartet.AnschließendwirddieTastenkombinationabgefragt,mitder
diesesMakrogestartetwerdensoll.Dannkönnenbiszu100Tasteneinge-
gebenwerden.DieAufnahmewirddurchCtrl-F5beendet.Jetztwirdein
Informationstextabgefragt,dermitAlt-F5angezeigtwerdenkann.(siehe
auchBeispieleoben)
Beispiel:
AufnahmedesProzedur-MakrosAlt-P:
≡
1)Ctrl-F5drückenAufnahmestarten
2)Alt-PdrückenTastenkombinationfestlegen
3)Textwiegewohnteingeben
PROCEDURE;DurchBewegendesCursorsaufdas
VARSemikolonhinterPROCEDUREwird
erreicht,daßderCursornachEinfügen
BEGINdesMakrosandieserStellestehen-
bleibt,damitderProzedurnameeinge-
END;gebenwerdenkann.
4)Ctrl-F5drückenAufnahmebeenden
5)Informationstexteingeben
<Alt-P>:PROCEDURE
aussagekräftigenTextmitTastenkombi-
nationundWirkungwählen!
DamitistdieAufnahmebeendet.DurchAlt-PkannderTextjetzt
beliebigofteingefügtwerden.
≡
EinMakrowirdmitCtrl-F6gelöscht,indemimAnschlußdieMakrotaste
gedrücktwird.
Beispiel:
1)Ctrl-F6 Löschenstarten
2)Alt-PTastenkombinationAlt-PausderMakroliste
streichen
≡≡Fehler-Hilfe
ZujederFehlermeldungdesCompilerskönnenHilfstextüberdieTaste
F1aufgerufenwerden,wennderCursoraufderFehlerpositionsteht.
EsistindervorliegendenFormnichtvorgesehen,daßdieseHilfstexte
überdasHilfesystemeinzelnangesehenwerdenkönnen.DieseMöglichkeit
kannvomAnwenderaberbeiBedarfhinzugefügtwerden.
≡≡Variable·deklarieren
InPascalmußderTypeinerVariablenvordererstenVerwendung
festgelegtsein.DazuistwieunterProzedur·deklarierenbeschrieben
eineDeklarationvordemAnweisungsteildesProgramms,derProzedur
oderderFunktionvorzunehmen.DieDeklarationwirddurchdas
reservierteWortVAReingeleitet.DannfolgenderNamederVariablen
undihrTyp(s.auchTypen),wobeieigeneVariablentypenaufbauendauf
denStandardtypendefiniertwerdenkönnen.
ITG-PASCALbietetallerdingsauchdieMöglichkeit,Variablendeklarationen
vomCompilerunterdemMenüpunkt"EDITOR"indenQuelltexteinfügenzu
lassen.DieseMöglichkeitisteingebautfürWertzuweisungen,Prozeduren
mitVariablenparameternundbeiVergleichennachIF,WHILEundREPEAT.
WennderbenötigteDatentypeindeutigfeststeht,fügtITG-PASCALdie
Deklarationselbständigein,sonsterscheintderQuelltextmitder
hervorgehobendargestelltenVariablenundeinemAuswahlmenümitden
möglichenTypen.
≡
AlleDeklarationenwerdenlokalindiejeweiligeProzedur/Funktion
oderindasProgrammeingefügt.EskönnenkeineselbstdefiniertenTypen
verwendetwerden.AusdiesenBedingungenergibtsich,daßdieauto-
matischeDeklarationnurinderAnfangsphaseeingesetztwerdensollte.
VAR
VariablenName:TypDerVariablen;
Beispiele:
VAR
Zähler:INTEGER;
Produkt,Quotient:REAL;ProduktundQuotientsindvomTypREAL
≡≡Prozedur·deklarieren
EinPascal-Programmsollteinkleinere,überschaubareProgrammteile
aufgegliedertwerden,diedannalsProzedurenoderFunktionenzu
deklarierensind.BeiBedarfkönnenderProzedurbeliebigviele
Parameterübergebenwerden,derenVeränderunginnerhalbderProzedur
demaufrufenProgrammteilmitgeteiltwirdodernicht.DieTypender
VariablensindineinerParameterlisteanzugeben.
Beispiel:
≡
PROCEDUREErhöheX(VARx:INTEGER;DerWertvonxwirdverändertund
y:INTEGER);demaufrufendenProgrammteilzurück-
geliefert.DazumußvorxVARstehen.
VARDeklarationeinerlokalenVariablen
n:INTEGER;n,dienurinnerhalbdieserProzedur
bekanntist.DieDeklarationmuß
zwischendemKopfderProzedur
(PROCEDURExyz(...);)unddemAnfang
desAnweisungsteils(BEGIN)stehen!
BEGINHierbeginntderAnweisungsteil.
n:=ABS(y);DenBetragvonybilden
INC(x,n);undzuxaddieren.DieProzedurINC
END;hatdiegleicheParameterlistewie
ErhöheX!
≡≡Funktion·deklarieren
EineFunktionineinemPascal-ProgrammentsprichtinihrerWirkung
einermathematischenFunktion,beidereineodermehrereVariablen
ineinenFunktionstermeingesetztwerdenundeinFunktionswert
ausgerechnetwird.DieserWertwirdbeiderProgrammausführung
anstelledesFunktionsnamensundderParameterlistealsWertin
denAnweisungsteileingesetzt.
Beispiel:
≡
FUNCTIONxQuadratMinus1(x:REAL):REAL;DerFunktionwirdderPara-
meterxvomTypREAL(x:REAL)
übergeben.Anschließendwird
festgelegt,daßdasErgebnis
derBerechnungebenfallsvom
TypREAList():REAL;).
BEGIN
xQuadratMinus1:=x^2-1;DasErgebnisderBerechnung
END;x^2-1wirdalsZuweisungzu
demFunktionsnamenalsFunk-
tionswertdefiniert.
≡≡Fehler-Hilfe:0
möglicheFehlerursachen:
-EswirdeineVariableverwendet,dienochnichtdeklariert
wurde.
Abhilfe:Variable·deklarieren!
-EswirdeineProzedurodereineFunktionaufgerufen,dienicht
deklariertwurde.
Abhilfe:Prozedur·deklarierenoderFunktion·deklarieren!
≡
-DerNamederVariablen,ProzeduroderFunktionwurdefalsch
geschriebenoderenthälteinLeerzeichen"",daßinPASCAL
dazudient,Bezeichnernamenzutrennen.
Beispiel:
falsch:GrafikSchirm
richtig:GrafikSchirm
Abhilfe:Schreibweisekorrigieren!
≡≡Fehler-Hilfe:1
Fehlerursache:
EinVariablennamewurdeglobaloderlokalineinerProzedur/Funktion
mehrfachverwendet.
Beispiel:
VAR
Zahl:REAL;
Zahl:INTEGER;
Abhilfe:EinederVariablenumbenennen!
≡≡Fehler-Hilfe:2
Fehlerursache:
EswirdeinVariablenname,eineProzedurodereineFunktionerwartet.
Beispiel:
falsch:INTEGER:=3*4;
richtig:VAR
Zahl:INTEGER;
.
Zahl:=3*4;
Abhilfe:Variable·deklarierenundderenNameneinsetzen,Prozedur
oderFunktionaufrufen.
≡≡Fehler-Hilfe:3
Fehlerursache:
DerProgrammkopf"PROGRAMName;"wurdeausgelassen.
Beispiel:
falsch:VAR
n:INTEGER;
richtig:PROGRAMIrgendEinName;
VAR
n:INTEGER;
Abhilfe:AmAnfangdesProgramms"PROGRAMProgrammName;"einfügen.
≡≡Fehler-Hilfe:4
Fehlerursache:
")"wurdevergessen.
Beispiel:
falsch:Write("Text";
richtig:Write("Text");
Abhilfe:")"einfügen.
≡≡Fehler-Hilfe:5
Fehlerursache:
":"wurdevergessenodereswurdeeinanderesZeichengeschrieben.
Beispiel:
falsch:VARn=INTEGER;
richtig:VARn:INTEGER;
Abhilfe:":"einfügen.
≡≡Fehler-Hilfe:6
Fehlerursache:
DieSyntaxregelnwurdennichteingehalten.
Beispiel:
falsch:FORn:=1TO10DOBEGINfalscheSchachtelung
REPEAT
.
END;
UNTILm>1000;
≡
richtig:FORn:=1TO10DOBEGIN
REPEAT
.
UNTILm>1000;
END;
Abhilfe:Programmstrukturuntersuchen-eventuellzurVereinfachung
denProgrammtextformatierenlassen-undkorrigieren
≡≡Fehler-Hilfe:7
Fehlerursache:
EswirdeinVariablenname,eineProzedurodereineFunktionerwartet.
Beispiel:
falsch:INTEGER:=3*4;
richtig:VAR
Zahl:INTEGER;
.
Zahl:=3*4;
Abhilfe:Variable·deklarierenundderenNameneinsetzen,Prozedur
oderFunktionaufrufen.
≡≡Fehler-Hilfe:8
Fehlerursache:
"OF"wurdevergessenodereswurdeetwasanderesgeschrieben.
Beispiel:
falsch:CASEnBEGIN
richtig:CASEnOF
Abhilfe:"OF"einfügen.
≡≡Fehler-Hilfe:9
Fehlerursache:
"("wurdevergessen.
Beispiel:
falsch:Write"Text";
richtig:Write("Text");
Abhilfe:"("einfügen.
≡≡Fehler-Hilfe:10
Fehlerursache:
EswirdeineARRAY-Variableerwartet.
Beispiel:
VAR
nArray:ARRAY[1..10]OFINTEGER;
n:INTEGER;
falsch:nArray:=n;nmußvomgleichenTypwienArraysein.
richtig:nArray[1]:=n;nArray[1]istvomTypINTEGER.
Abhilfe:Zuweisungkorrigieren.
≡≡Fehler-Hilfe:11
Fehlerursache:
"["wurdevergessenodereswurdeetwasanderesgeschrieben.
Beispiel:
falsch:VARn:ARRAY1..10OFINTEGER;
richtig:VARn:ARRAY[1..10]OFINTEGER;
Abhilfe:"["einfügen.
≡≡Fehler-Hilfe:12
Fehlerursache:
"]"wurdevergessenodereswurdeetwasanderesgeschrieben.
Beispiel:
falsch:VARn:ARRAY1..10OFINTEGER;
richtig:VARn:ARRAY[1..10]OFINTEGER;
Abhilfe:"]"einfügen.
≡≡Fehler-Hilfe:13
Fehlerursache:
".."wurdevergessenodereswurdeetwasanderesgeschrieben.
Beispiel:
falsch:VARn:ARRAY[1.10]OFINTEGER;
richtig:VARn:ARRAY[1..10]OFINTEGER;
Abhilfe:".."einfügen.
≡≡Fehler-Hilfe:14
Fehlerursache:
-EswurdeeinSemikolonvergessen.
Abhilfe:Semikoloneinfügen!
Beispiele:
GrafikSchirm;Prozedur-undFunktions-Aufrufemüssenmit
einemSemikolonabgeschlossenwerden.
VARn:INTEGER;BeiDeklarationenwerdenverschiedeneTypen
r:REAL;durcheinSemikolongetrennt.
x:=a*b+c;NachWertzuweisungeneinerVariablenmuß
einSemikolonfolgen.
≡
END;ENDmußeinSemikolonfolgen,wennals
nächsteseineZuweisungodereinProzedur-/
Funktions-Aufruffolgt.
ENDdarfeinSemikolonfolgen,wennein
weiteresENDfolgt,mußabernicht.
ENDdarfkeinSemikolonfolgen,wennein
ELSEfolgt!
≡≡Fehler-Hilfe:15
Fehlerursache:
StatteinesFunktionsaufrufserfolgteinProzeduraufruf.
Beispiele:
falsch:n:=Write("....");
richtig:n:=ROUND(n^2);
Abhilfe:Funktionaufrufen.
≡≡Fehler-Hilfe:16
Fehlerursache:
"="wurdevergessenodereswurdeetwasanderesgeschrieben.
Beispiele:
falsch:TYPEStr80:STRING[80];
richtig:TYPEStr80=STRING[80];
falsch:IFn:=5THENBEGIN
richtig:IFn=5THENBEGIN
Abhilfe:"="einfügen.
≡≡Fehler-Hilfe:17
Fehlerursache:
EswurdekeineboolscheVariableundkeineAussageformverwendet.
Beispiel:
falsch:IFWrite("Text")THENBEGIN
richtig:IFZahl=1THENBEGIN
Abhilfe:BoolschenTermverwenden.
≡≡Fehler-Hilfe:19
Fehlerursache:
EswurdeeineunzulässigeTypzuweisungversucht.
Beispiel:
VAR
s:STRING[20];
r:REAL;
i:INTEGER;
falsch:r:=s;
richtig:VAL(s,r,i);STRINGinREALumwandeln
falsch:i:=r;
richtig:i:=ROUND(r);REALinINTEGERumwandeln
Abhilfe:Typumwandlungverwenden.
≡≡Fehler-Hilfe:21
Fehlerursache:
EinARRAYoderRECORDwurdezugroßdeklariert.
Beispiel:
falsch:VARn:ARRAY[1..30000]OFINTEGER;fürITG-PASCALzugroß
richtig:VARn:ARRAY[1..5000]OFINTEGER;
Abhilfe:ElementzahldesArrays/Recordsverringern.
≡≡Fehler-Hilfe:23
Fehlerursache:
Eswurdeversucht,eineFallunterscheidungmitCASEmitArraysoder
Recordsdurchzuführen.
Beispiel:
VARZahlen:ARRAY[1..100]OFINTEGER;
falsch:CASEZahlenOFARRAYverwendet
richtig:CASEZahlen[1]OFINTEGERverwendet
Abhilfe:EinfachenDatentypzurFallunterscheidungverwenden.
≡≡Fehler-Hilfe:24
Fehlerursache:
EswurdestatteinesBuchstabenetwasanderesverwendet.
Beispiel:
VAR
s:STRING[10];
falsch:ErsetzeBuchstaben(s,1,5);Zahlenwert5verwendet
richtig:ErsetzeBuchstaben(s,1,"5");
Abhilfe:BuchstabenoderCHAR-Variableverwenden.
≡≡Fehler-Hilfe:25
Fehlerursache:
StatteinerKonstantenwurdeeineVariableoderetwasanderesverwendet.
Beispiel:
CONSTMaxZahlen=100;
VARMax:INTEGER;
falsch:VARZahlen:ARRAY[1..Max]OFINTEGER;Variableverwendet
richtig:VARZahlen:ARRAY[1..MaxZahlen]OFINTEGER;oder
VARZahlen:ARRAY[1..100]OFINTEGER;
Abhilfe:Konstanteverwenden.
≡≡Fehler-Hilfe:26
Fehlerursache:
EswirdeineZuweisungeinesfalschenTypszueinemArray-Element
versucht.
Beispiel:
VARGanzeZahl:ARRAY[1..20]OFINTEGER;
falsch:GanzeZahl[1]:=1.34;
richtig:GanzeZahl[1]:=ROUND(1.34);Real-VariablenachInteger
konvertieren
Abhilfe:aufgleicheTypenachtenoderTyp-Konvertierungbenutzen.
≡≡Fehler-Hilfe:27
Fehlerursache:
DieuntereunddieobereGrenzeeinesArraysmußdurcheineganzeZahl
definiertwerden.StattdessenwurdeeinandereTyp(RealoderString)
verwendet.
Beispiel:
falsch:VARZahlen:ARRAY[1.3..2.5]OFREAL;
richtig:VARZahlen:ARRAY[1..3]OFREAL;
Abhilfe:ganzeZahlalsGrenzeverwenden.
≡≡Fehler-Hilfe:28
Fehlerursache:
EswirdeinZugriffaufeinElementeinerVariablenversucht,die
keinArrayist.
Beispiel:VARn:INTEGER;
falsch:n[1]:=2;
richtig:n:=2;
Abhilfe:Array-VariableverwendenoderIndexweglassen.
≡≡Fehler-Hilfe:29
Fehlerursache:
AlsTyp-BezeichnereinesRecord-ElementeswirdeinelementarerTyp
odereinbereitsdeklarierterTyperwartet,inITG-PASCALaber
keinesfallsz.B.Prozedur-,Funktions-oderObjekt-Typen.
Beispiel:
falsch:TYPE
EinRecord=RECORD
EinElementDrucken:Write;Prozedur-Typistnicht
END;erlaubt
≡
richtig:TYPE
EinRecord=RECORD
EinElement:STRING[20];einfacherTypisterlaubt
END;
Abhilfe:einfachenTypoderbereitsdeklariertenTypverwenden.
≡≡Fehler-Hilfe:30
Fehlerursache:
DerverwendeteTypwurdenochnichtdeklariert.
Beispiel:
falsch:VARBeispiel:EinBeispiel;inITG-PASCALsonicht
bekannt
richtig:TYPEEinBeispiel=STRING[10];neuenTyperstdeklarieren
VARBeispiel:EinBeispiel;
Abhilfe:zuerstneuenTypdeklarierenoderSchreibfehlerbeseitigen.
≡≡Fehler-Hilfe:31
Fehlerursache:
Eswurdeversucht,ineinerVariablen,diekeinRecord(keineDaten-
struktur)ist,aufeinRecord-Elementzuzugreifen.
Beispiel:
falsch:VAR
Person:ARRAY[1..2]OFSTRING[20];
Person.Nachname:="XYZ";
richtig:TYPE
Person=RECORD
Vorname,Nachname:STRING[20];
END;
Person.Nachname:="XYZ";
Abhilfe:JenachFalleinfacheVariableoderRecord-Variable
verwenden.
≡≡Fehler-Hilfe:32
Fehlerursache:
EswurdestatteinesWahrheitswertes(BOOLEAN)etwasandereszugewiesen.
Beispiel:VAR
IstWahr:BOOLEAN;
n:=INTEGER;
falsch:IstWahr:=1;1istkeinWahrheitswert
richtig:IstWahr:=TRUE;TRUEoderFALSEsind
Wahrheitswerte
IstWahr:=(n=1);DerrechteTeilderZuweisungist
eineAussageform,diegenaudann
wahrist,wennn=1ist.IstWahr
erhältdanndenWertTRUE,sonst
denWertFALSE.
Abhilfe:Wahrheitwertverwenden.
≡≡Fehler-Hilfe:33
Fehlerursache:
Eswurdeversucht,miteinerVariablen/Konstantenzurechnen,
diekeineZahlist.
Beispiel:
falsch:s:="1.23"/"4.56";DivisionzweierZeichenkettenist
nichtdefiniert.
richtig:r:=1.23/4.56;DivisionzweierDezimalzahlen
Abhilfe:Zahlenwerte/Zahlenvariablenverwenden.
≡≡Fehler-Hilfe:34
Fehlerursache:
AlsIndexwurdeetwasanderesalseineganzeZahlverwendet.
Beispiel:VAR
s:STRING[20];
c:CHAR;
falsch:c:=s[1.3];WelcherBuchstabestehtander1,3.Stelle
vons?
richtig:c:=s[2];Indexmußganzzahligsein!
falsch:Write(Copy(s,1.3,1));s.o.
richtig:Write(Copy(s,2,1));
Abhilfe:Integer-Typverwenden.
≡≡Fehler-Hilfe:35
Fehlerursache:
EswurdenTypenverwendet,dieindiesemFallnichtkompatibel
(gleichwertig)sind.
Beispiel:VAR
s:STRING[20];
c:CHAR;
falsch:IFs=cTHEN...STRINGSundCHARSkönnennichtdirekt
miteinanderverglichenwerden.
richtig:IFs[1]=cTHEN...s[1]istvomTypCHAR.
Abhilfe:KompatibleTypenverwendenoderTypkonvertierung
(Typumwandlung)verwenden.
≡≡Fehler-Hilfe:36
Fehlerursache:
AneineProzedur/FunktionwurdeeinParametereinesfalschenTyps
übergeben.
Beispiel:PROCEDUREBeispiel(r:REAL);
falsch:Beispiel("1.5");"1.5"isteinSTRINGund
damitnichtkompatibelzum
TypREAL.
richtig:Beispiel(1.5);REAL-Parameter
Abhilfe:RichtigenParameter-TypverwendenoderTypkonvertieren.
≡≡Fehler-Hilfe:37
Fehlerursache:
AnstelleeinerVariablenwurdeeineKonstanteverwendet.
Beispiel:VARs:STRING[20];
falsch:Read("XYZ"); "XYZ"isteineSTRING-Konstante
richtig:s:="XYZ";
VariablemiteinemWertbelegen
Read(s);undalsParameterübergeben
Abhilfe:Variableverwendenundgegebenenfallsvorhermiteinem
Wertbelegen.
≡≡Fehler-Hilfe:38
Fehlerursache:
AnstelleeinerSTRING-VariablenwurdeeinandererTypverwendet.
Beispiel:
falsch:Write(Copy(1.234,3,2));auseinerZahlkönnenso
keineZiffernherausgezogen
werden.
richtig:Write(Copy("1.234",3,2));ergibt"23"
Abhilfe:STRING-KonstanteoderVariableverwenden.
≡≡Fehler-Hilfe:39
Fehlerursache:
EinerProzedur/FunktionwurdenzuwenigParameterübergeben.
Beispiel:
falsch:Strecke(1,3);
richtig:Strecke(1,3,100,150);
Abhilfe:DienötigenParameterhinzufügen.
≡≡Fehler-Hilfe:40
Fehlerursache:
IneinerINTEGER-KonstantenwurdenandereZeichenals0,1,..9
fürZiffernverwendet.
Beispiel:
falsch:1x2xkannkeineZiffersein
richtig:132
Abhilfe:Nur0-9alsZiffernverwenden.
≡≡Fehler-Hilfe:41
Fehlerursache:
StatteineseinfachenDatentypswurdeandererTyp(z.B.File, Text)
verwendet.
Beispiel:VAR
File1,File2:FILE;
a:ARRAY[1..10]OFSTRING[20];
falsch:Write(File1,File2);EineDateivariablekannnichtin
eineDateihineingeschriebenwerden.
richtig:Write(File1,a);ArrayskönnenineineDatei
geschriebenwerden.
Abhilfe:EinfachenTypverwenden.
≡≡Fehler-Hilfe:42
Fehlerursache:
EswurdestatteinerREAL-Variablen/KonstanteneinandererTyp
verwendet.
Beispiel:VAR
i:INTEGER;
r:REAL;
s:STRING;
falsch:Str(i:10:5,s);eineInteger-VariablehatkeineNach-
kommastellen.
richtig:Str(r:10:5,s);shatnachderKonvertierungdieLänge
10,davonsind5Nachkommastellen.
Abhilfe:REAL-Variable/Konstanteverwenden.
≡≡Fehler-Hilfe:43
Fehlerursache:
StatteinerINTEGER-Variablen/KonstantenwurdeeinandererTyp
verwendet.
Beispiel:
falsch:Strecke(1.5,2.3,150.3,123.7);Bildschirmpunktehaben
immerganzzahlige
Koordinaten.
richtig:Strecke(2,2,150,124);
Abhilfe:INTEGER-Variable/Konstanteverwenden.
≡≡Fehler-Hilfe:44
Fehlerursache:
StatteinerVariablen,KonstantenoderFunktionwurdeetwasanderes
verwendet.
Beispiel:VARn:INTEGER;
falsch:Write(INTEGER);Typensindhiernichtzulässig
richtig:Write(n);nisteineVariable
falsch:Write(Grafikschirm);Prozedur-Aufrufesindhier
nichtzulässig
richtig:Write(EsGibtDatei("XYZ"));EsGibtDateiisteineFunktion
Abhilfe:Variable,KonstanteoderFunktionverwenden.
≡≡Fehler-Hilfe:45
Fehlerursache:
StatteinerVariablen,dereinWertzugewiesenwerdensoll,odereines
Prozeduraufrufeswurdeetwasanderesverwendet.
Beispiel:VARn:INTEGER;
falsch:INTEGER:=5;einemTypkannkeinWertzugewiesen
werden
richtig:n:=5;
einerVariablenkanneinneuerWert
zugewiesenwerden
Abhilfe:VariableoderProzeduraufrufverwenden.
≡≡Fehler-Hilfe:46
Fehlerursache:
EssollendieInhaltezweierVariablenverschiedenenTypsvertauscht
werden.
Beispiel:VAR
r1,r2:REAL;
n1,n2:INTEGER;
falsch:Vertausche(n1,r2);n1undr2sindverschiedeneTypen
richtig:Vertausche(r1,r2);r1undr2sindvomgleichenTyp
Vertausche(n1,n2);n1undn2sindvomgleichenTyp
Abhilfe:GleicheTypenverwenden.
≡≡Fehler-Hilfe:47
Fehlerursache:
InderFallunterscheidungmitCASEVariableOFwurdeinnerhalbder
VergleichslisteeineKonstanteverwendet,dienichtvomgleichen
TypwieVariableist.
Beispiel:VARc:CHAR;
falsch:CASEcOF
1:...;1isteineINTEGER-Konstante
"XYZ":...;"XYZ"isteineSTRING-Konstante
richtig:CASEcOF
"1":...;"1"istvomTypCHAR
"X":...;"X"istvomTypCHAR
Abhilfe:GleicheTypenverwenden.
≡≡Fehler-Hilfe:48
Fehlerursache:
EinerVariablensolleinFunktionswertzugewiesenwerden,dernichtdem
TypderVariablenentspricht.
Beispiel:VAR
c:CHAR;
r:REAL;
falsch:c:=SQR(3);DieFunktionSQRgibteinenREAL-Wertzurück
richtig:r:=SQR(3);EswerdengleicheTypenbenutzt.
Abhilfe:GleichewertigeTypenverwenden.
≡≡Fehler-Hilfe:49
Fehlerursache:
DerfreieSpeicherdesComputersisterschöpft.FürdasSpeicherneiner
STRING-KonstantenstehtkeinPlatzmehrzurVerfügung.
Beispiel:keinBenutzerfehler
falsch:-
richtig:-
Abhilfe:NichtbenötigteSTRING-KonstantenausdemProgramm
entfernen.
≡≡Fehler-Hilfe:50
Fehlerursache:
StatteinerKonstantenwurdeetwasanderesverwendet.
Beispiel:CONSTStringLänge=20;
VARLänge:INTEGER;
falsch:VARs:STRING[Länge];LängeisteineVariable
richtig:VARs:STRING[StringLänge];StringLängeisteine
Konstante
VARs:STRING[20];
Abhilfe:Konstanteverwenden.
≡≡Fehler-Hilfe:51
Fehlerursache:
BeieinerZuweisungwurdealsZuweisungsopeartoretwasanderesals":="
verwendet.
Beispiel:VARr:REAL;
falsch:r=5.4*3.1;"="darfbeiZuweisungennichtverwendet
werden
richtig:r:=5.4*3.1;Zuweisungsoperator":="verwendet
Abhilfe:":="verwenden.
≡≡Fehler-Hilfe:52
Fehlerursache:
BeieinerIF-AnweisungwurdeetwasanderesalsTHENverwendet.
Beispiel:
falsch:IFr=1.3DO...falscheSyntax
richtig:IFr=1.3THEN...
Abhilfe:THENoderTHENBEGINverwenden.
≡≡Fehler-Hilfe:53
Fehlerursache:
EineREPEAT-SchleifewurdenichtmitUNTILgeschlossen.
Beispiel:
falsch:REPEAT
Anweisungen;
END;falscheSyntax
richtig:REPEAT
Anweisungen;
UNTILwahreBedingung;
Abhilfe:UNTILverwenden.UnterUmständensindProgramm-Blöcke
nichtrichtiggeschachtelt.
≡
Beispiel:
FORn:=1TO100DOBEGIN
REPEAT
Anweisungen;
END;falscheSchachtelungderSchleifen
UNTILn>100;
≡≡Fehler-Hilfe:54
Fehlerursache:
IneinerFOR-TO-SchleifewurdeetwasanderesalsDOverwendet.
Beispiel:
falsch:FORn:=1TO100BEGIN...
richtig:FORn:=1TO100DOBEGIN...
Abhilfe:DOoderDOBEGINverwenden.
≡≡Fehler-Hilfe:55
Fehlerursache:
IneinerFOR-TO-SchleifewurdeetwasanderesalsTOoderDOWNTO
verwendet.
Beispiel:
falsch:FORn:=1DO...Syntax-Fehler
richtig:FORn:=1TO100DO...inEinerschrittenaufwärts
FORn:=100DOWNTO1DO...inEinerschrittenabwärts
Abhilfe:TOoderDOWNTOverwenden.
≡≡Fehler-Hilfe:56
Fehlerursache:
StattBEGINwurdeetwasanderesverwendet.
Beispiel:
falsch:PROGRAMName;
WriteLn("XYZ");BEGINfehlt
END.
richtig:PROGRAMName;
BEGIN
Write("XYZ");
END.
Abhilfe:BEGINeinfügen.
≡≡Fehler-Hilfe:57
Fehlerursache:
ZueinemBEGINgibteskeinpassendesEND.DieUrsachekönntein
fehlerhaftenSchachtelungenliegen.
Beispiel:
falsch:FORn:=1TO100DOBEGIN
REPEAT
Anweisungen;
END;falscheSchachtelungderSchleifen
UNTILwahreBedingung;
≡
richtig:FORn:=1TO100DOBEGIN
REPEAT
Anweisungen;
UNTILwahreBedingung;
END;
Abhilfe:ENDverwenden.GegebenenfallssinddieProgrammstrukturen
zuüberprüfen.
≡≡Fehler-Hilfe:58
Fehlerursache:
StatteinesZahlenwertesodereinerVariablenwurdeetwasanderes
verwendet.
Beispiel:VARr:REAL;
falsch:r:=5*Write(1.3);WriteisteineProzedurunddarfin
einemProduktnichtverwendetwerden
richtig:r:=5*r;neuerWertvonrist5*alterWert
vonr
Abhilfe:ZahlenwertoderVariableverwenden.
≡≡Fehler-Hilfe:59
Fehlerursache:
ZweiParametereineProzedur/Funktionwurdendurchetwasanderesals
einKommagetrennt.
Beispiel:
falsch:Punkt(x;y);DieProzedurPunktbenötigtx-undy-Koor-
dinate.DieTrennungerfolgtdurchein
Komma.
richtig:Punkt(x,y);
Abhilfe:Kommaverwenden.
≡≡Fehler-Hilfe:60
Fehlerursache:
Eswurdeversucht,eineneinzelnenBuchstabeneinesSTRINGSdirekt
einzulesen.
Beispiel:VAR
s:STRING[20];
c:CHAR;
falsch:Read(s[5]);STRINGSkönnennurvollständiggelesenwerden
richtig:Read(s);STRINGvollständiglesen
oder:Read(c);CHARlesenundeinemBuchstabendesSTRINGS
s[5]:=c;zuweisen
Abhilfe:LesevorgangwieindenbeidenBeispielengezeigtje
nachAnwendungsfallprogrammieren.
≡≡Fehler-Hilfe:61
Fehlerursache:
Eswurdeversucht,einARRAYsogroßzudefinieren,daßesnichtmehr
ineinDatensegmentpaßt.
Beispiel:
falsch:VARa:ARRAY[1..100000]OFINTEGER;DieAnzahlder
richtig:VARa:ARRAY[1..5000]OFINTEGER;zulässigenFeld-
elementeistin
ITG-PASCALstark
eingeschränkt.
Abhilfe:AnzahlderFeldelementeverringern.
≡≡Fehler-Hilfe:62
Fehlerursache:
DasProgrammwurdenichtdurcheinabschließendes"END."beendet.
Beispiel:
falsch:PROGRAMMName;
BEGIN
Write("XYZ");hierfolgtkeinweitererProgrammtext
richtig:PROGRAMMName;
BEGIN
Write("XYZ");
END.
Abhilfe:Programmordnungsgemäßbeenden.
≡≡Fehler-Hilfe:63
Fehlerursache:
DasEndeeinerSTRING-KonstantenwurdenichtmehrinderZeilegefunden,
inderderAnfangderSTRING-Konstantenstand.
Beispiel:
falsch:Write("xyzDieAnführungsstrichemüssenin
XYZ");derselbenZeilegeöffnetundgeschlossen
werden.
richtig:Write("xyzXYZ");
Abhilfe:STRING-KonstanteinderlaufendenZeiledurch
Anführungsstrichebeenden.
≡≡Fehler-Hilfe:64
Fehlerursache:
-EsstehteinSemikolon,wokeinesstehendarf.
Abhilfe:Semikolonentfernen!
Beispiele:
END;ENDdarfkeinSemikolonfolgen,wennein
ELSEfolgt!
VAR,CONST,TYPE,DiesenBezeichnerndarfnieein
RECORD,BEGIN,THEN,Semikolonfolgen!
ELSE,REPEAT,
CASE..OF,
≡≡Fehler-Hilfe:65
Fehlerursache:
IneinerProzedur/FunktionmitvariablerParameterzahlwurdedie
ParameterlistewedernachTrennungderParameterdurcheinKomma
fortgesetztnochdurch")"abgeschlossen.
Beispiel:
falsch:Write(x;y);ParameterwerdennichtdurcheineKomma
getrennt
richtig:Write(x,y);richtigeTrennungmiteinemKomma
Abhilfe:Kommaoder")"einfügen.
≡≡Fehler-Hilfe:66
Fehlerursache:
EineTyp-Deklarationwurdefehlerhaftfortgesetzt.
Beispiel:
falsch:x=RECORD
a,b:INTEGER,UnterschiedlicheTypenwerdendurch
r:REAL;einSemikolongetrennt.
END;
richtig:x=RECORD
a,b:INTEGER;
r:REAL;
END;
Abhilfe:Deklarationordnungsgemäßfortsetzen.
≡≡Fehler-Hilfe:67
Fehlerursache:
EineProzedur-/Funktions-Deklarartionwurdefehlerhaftbeendet.
Beispiel:
falsch:PROCEDUREp(x:REAL),Abschließendwirdein
richtig:PROCEDUREp(x:REAL);Semikolonerwartet.
falsch:FUNCTIONf(x:REAL); Funktionsergebnissenmuß
richtig:FUNCTIONf(x:REAL):REAL;eineinfacherDatentyp
zugeordnetwerden.
Abhilfe:":"oder";"einfügen.
≡≡Fehler-Hilfe:68
Fehlerursache:
BeieinerRead-/Write-AnweisungmiteinerDateivariablenwurdedie
DateivariablenichtalsersterParameterübergeben.
Beispiel:VAR
a:ARRAY[1..10]OFINTEGER;
f:FILE;
falsch:Write(a,f);DateivariablemußersterParametersein.
richtig:Write(f,a);
Abhilfe:DateivariablealserstenParameterübergeben.
≡≡Fehler-Hilfe:69
Fehlerursache:
EineDateivariablesollmiteinemVariablentypverknüpftwerden.
DabeiwurdedieVerknüpfungnichtmitOFdurchgeführt.
Beispiel:
falsch:VAR
f:FILEIrgendeinVariablentyp;
richtig:VAR
f:FILEOFIrgendeinVariablentyp;
Abhilfe:OFundVariablentyphinterFILEeinfügen.
≡≡Fehler-Hilfe:70
Fehlerursache:
UNTILwurdeverwendet,
1)obwohlkeineREPEAT-UNTIL-Schleifegeöffnetwurde.
2)woeinENDerwartetwird.IndiesemFallkanneinefalsche
SchachtelungvonProgramm-Blöckenvorliegen.
Beispiel:
≡
falsch:FORn:=1TO100DOBEGIN
Anweisungen;
UNTILn=100;
richtig:n:=1;
REPEAT
Anweisungen;
n:=n+1;
UNTILn>100;
Abhilfe:REPEAT-UNTIL-SchleifeöffnenoderBlock-Strukturüberprüfen.
≡≡Fehler-Hilfe:71
Fehlerursache:
NacheinerWITH-AnweisungwurdekeineRECORD-Variableverwendet.
Beispiel:TYPE
EinPunkt=RECORD
x,y:REAL;
END;
VAR
x:REAL;
Punkt:EinPunkt;
falsch:WITHxDOBEGINxistkeineRECORD-Variable.
richtig:WITHPunktDOBEGINPunktisteineRECORD-Variable.
Abhilfe:RECORD-Variableverwenden.
≡≡Fehler-Hilfe:72
Fehlerursache:
EssindzweiRECORD-VariablengleichzeitigmitWITH-Anweisungen
geöffnetworden.
Beispiel:TYPE
EinPunkt=RECORD
x,y:REAL;
END;
VAR
Punkt:ARRAY[1..2]OFEinPunkt;
≡
falsch:WITHPunkt[1]DOBEGIN
WITHPunkt[2]DOBEGINIstPunkt[1].x:=Punkt[2].x
x:=x;oderPunkt[2].x:=Punkt[1].x
END;gemeint?WegenderDoppeldeutig-
END;keitisteineSchachtelungnicht
erlaubt.
richtig:WITHPunkt[1]DOBEGIN
Punkt[2].x:=x;eindeutigeAnweisung
END;
Abhilfe:NureineWITH-AnweisungöffnenunddieandereRECORD-
Variablevollständigausschreiben.
≡≡Fehler-Hilfe:73
Fehlerursache:
IneinerDateibearbeitungs-AnweisungwurdeeinandererVariablentyp
verwendet.
Beispiel:VAR
f:FILE;
r:REAL;
falsch:Rename(r);NurDateienkönnenumbenanntwerden.
richtig:Rename(f);
Abhilfe:Datei-Variableverwenden.
≡≡Fehler-Hilfe:74
Fehlerursache:
InderProzedurEingabeFeldkönnenkeineARRAY-,RECORD-undDatei-
VariablenzumLesenineinerEingabemaskeübergebenwerden.
Beispiel:VAR
a:ARRAY[1..10]OFINTEGER;
falsch:EingabeFeld(x,y,Text,a);Statteineskompletten
richtig:EingabeFeld(x,y,Text,a[1]);ARRAYSkönnennureinzelne
ElementeüberEingabe-
maskeneingelesenwerden.
Abhilfe:EinfachenDatentypverwenden.
≡≡Fehler-Hilfe:75
Fehlerursache:
StatteinerCHAR-VariablenwurdeeinandererTypverwendet.
Beispiel:VAR
s:STRING;
Wahl:CHAR;
falsch:Menü(x,y,MenüPunkte,s);HieristalsvierterPara-
richtig:Menü(x,y,MenüPunkte,Wahl);meternureineCHAR-Variable
erlaubt.
Abhilfe:CHAR-Variableverwenden.
≡≡Fehler-Hilfe:76
Fehlerursache:
StatteinesZahlenwertes(REAL-oderINTEGER-Konstante/Variable)
wurdeetwasanderesverwendet.
Beispiel:
falsch:WeltPunkt("x","y");HierwerdenZahlenwertefürdie
richtig:WeltPunkt(1.3,4);Koordinatenerwartet.
Abhilfe:REAL-oderINTEGER-Konstante/Variableverwenden.
≡≡Fehler-Hilfe:77
Fehlerursache:
NachderAnweisungWrite/WriteLnwurdewedereineKlammergeöffnet
nocheinSemikolongesetzt.
Beispiel:
falsch:Write"XYZ";ParametergehöreninKlammern
richtig:Write("XYZ");
Abhilfe:WennetwasmitWriteausgegebenwerdensoll,mußeine
Klammergeöffnetwerden,sonstisteinSemikolonzusetzen.
≡≡Fehler-Hilfe:78
Fehlerursache:
DieParameterlisteineineProzedur-/Funktions-Deklarationwurde
falschfortgesetzt.
Beispiel:
falsch:PROCEDUREW(x:INTEGER,DieTrennungverschiedener
r:REAL);Parametertypenmußdurchein
richtig:PROCEDUREW(x:INTEGER;Semikolonerfolgen.
r:REAL);
Abhilfe:SemikolonverwendenoderweiterenVariablennameneinfügen.
≡≡Fehler-Hilfe:79
Fehlerursache:
IneinerCASE-oder...IN[...]-AnweisungwurdenKonstantenfalschen
TypesoderunzulässigenWertebereichsverwendet.EsdürfennurCHAR-
KonstantenoderINTEGER-KonstantendesBereichs0..255verwendet
werden.
Beispiel:
falsch:UNTILZahlIN[1000..2000];unzulässigerBereich
richtig:UNTILZahlIN[100..255];
Abhilfe:KonstanteinnerhalbdeserlaubtenBereichsverwenden.
≡≡Fehler-Hilfe:80
Fehlerursache:
ZumLesenoderSchreibeneinerDateivariablendesTypsFILEwurden
READLNoderWRITELNverwendet.EssindnurREADoderWRITEerlaubt.
Beispiel:VARRec:IrgendEinRecord;
falsch:WriteLn(FileVariable,Rec);
richtig:Write(FileVariable,Rec);
Abhilfe:READoderWRITEverwenden.
≡≡Fehler-Hilfe:81
Fehlerursache:
ZumLesenoderSchreibeneinerDateivariablendesTyps TEXTwurden
READoderWRITEverwendet.EssindnurREADLNoderWRITELNerlaubt.
Beispiel:VARs:STRING;
falsch:Write(TextDatei,s);
richtig:WriteLn(TextDatei,s);
Abhilfe:READLNoderWRITELNverwenden.
≡≡Fehler-Hilfe:82
Fehlerursache:
DieRahmenprozedureinesProzesseswurdefehlerhaftdeklariert.
Beispiel:
falsch:PROCEDUREProzeß1(n:INTEGER);
FUNCTIONProzeß2(x:REAL):REAL;
richtig:PROCEDUREProzeß1;
.
.
NeuerProzeß(1,100,3,Prozeß1);
Abhilfe:ProzedurohneParameterverwenden.
≡≡Fehler-Hilfe:83
Fehlerursache:
ZurSynchronisationvonProzessenwurdeeineVariableeinesanderen
TypsalsdesTypsSIGNALverwendet.
Beispiel:
falsch:VARb:BOOLEAN;
SendeSignal(b);
richtig:VARs:SIGNAL;
SendeSignal(s);
Abhilfe:VariabledesTypsSIGNALverwenden.
≡≡Fehler-Hilfe:84
Fehlerursache:
FürdieZählvariableeinerFOR-TO-SchleifewurdeeinandererTypals
INTEGER,CHARoderBOOLEANverwendet.
Beispiel:
falsch:VARr:REAL;
FORr:=1TO10DOWrite(r);
richtig:VARn:INTEGER;
FORn:=1TO10DOWrite(n);
Abhilfe:VariablederTypenINTEGER,CHARoderBOOLEANverwenden.
≡≡Fehler-Hilfe:85
Fehlerursache:
DieautomatischeVariablen-DeklarationkannnurbeiWertzuweisungen
undbeiProzedurenmitParameterndurchgeführtwerden,beidenen
Wertzuweisungenerfolgen.
Beispiel:
falsch:IFr=1.5THEN....
Write(s);
richtig:r:=2.3;
Read(s);
Abhilfe:JEDEVariablesolltevorihrererstenVerwendungmiteinem
Wertbelegtwerden!
≡≡Fehler-Hilfe:86
Fehlerursache:
EinProzedur-/FunktionskopfwurdemitFORWARDdeklariert,dieendgültige
Deklarationfehltaber.
Beispiel:
falsch:PROCEDUREp(x:INTEGER);FORWARD;
EswirdkeineProzedurpdeklariert.
richtig:PROCEDUREp(x:INTEGER);FORWARD;
..
PROCEDUREp(x:INTEGER);
BEGIN
..
END;
Abhilfe:ProzedurimAnschlußnocheinmalvollständigdeklarieren.
≡≡Fehler-Hilfe:87
Fehlerursache:
DieProzedur-/FunktionsköpfeeinerFORWARD-deklariertenProzedur/
FunktionundihrerendgültigenDeklarationstimmennichtvollständig
überein.
Beispiel:
falsch:PROCEDUREp(x:INTEGER);FORWARD;
PROCEDUREp(y:INTEGER);yinxumbenennen
PROCEDUREp(x,y:INTEGER);Parameterzahlstimmt
nichtüberein
PROCEDUREp(x:REAL);Parametertypstimmt
nichtüberein
richtig:PROCEDUREp(x:INTEGER);FORWARD;
PROCEDUREp(x:INTEGER);
Abhilfe:EinenderbeidenProzedur-/Funktionsköpfekorrigieren.
≡≡Fehler-Hilfe:88
Fehlerursache:
BeieinerForward-DeklarationwurdeeinZeigeraufeinenanderenTyp
alsaufeinenRECORDdeklariert.
Beispiel:TYPE
KnotenZeiger=^EinKnoten;
falsch:EinKnoten=ARRAY[1.100]OFSTRING;keinRECORD
richtig:EinKnoten=RECORD
Inhalt:STRING;
Next:KnotenZeiger;
END;
Abhilfe:RECORD-Typdeklarieren.
≡≡Fehler-Hilfe:89
Fehlerursache:
EinerForward-DeklarationeinesZeigerMUSSalsNÄCHSTESderRECORD
folgen,aufdenderZeigerdeklariertwurde.
Beispiel:TYPE
KnotenZeiger=^EinKnoten;
falsch:Zahlenliste=RECORDEinKnotenMUSSdeklariert
Zahl:REAL;werden
Next:KnotenZeiger;
END;
≡
richtig:EinKnoten=RECORD
Inhalt:STRING;
Next:KnotenZeiger;
END;
Abhilfe:HierRECORDmitBezeichnerdesZeigertypsdeklarieren.
≡≡Fehler-Hilfe:90
Fehlerursache:
InITG-PASCALkönnennur3INCLUDE-Dateiengleichzeitiggeöffnetsein.
InnerhalbeinerINCLUDE-DateiwurdeeineweitereINCLUDE-Datei
verwendet,usw.AufdieseWeisewurdedieSchachtelungstiefevon3
überschritten.
Abhilfe:SchachtelungstiefevonINCLUDE-Dateienauf3begrenzen.
≡≡Fehler-Hilfe:91
Fehlerursache:
EswurdeeineINCLUDE-Dateiangegeben,dienichtimaktuellen
Verzeichnis/indemangegebenenVerzeichnisvorhandenist.
Abhilfe:RichtigenDateinamenmitrichtigemVerzeichnisverwenden.
≡≡Fehler-Hilfe:92
Fehlerursache:
FürdenZugriffaufdenInhalteinerZeigervariablenmuß"^"hinter
demVariablennamenverwendetwerden.
Beispiel:TYPE
EinePerson=RECORD
Vorname,Name:STRING[20];
END;
VAR
Person:^EinePerson;
falsch:Person.Name:="XYZ";^fehltnachPerson
richtig:Person^.Name:="XYZ";
Abhilfe:^einfügen.
≡≡Fehler-Hilfe:93
Fehlerursache:
Eswurdeversucht,NEWoderDISPOSEmiteinerstatischenVariablen
aufzurufen.
Beispiel:TYPE
EinePerson=RECORD
Vorname,Name:STRING[20];
END;
VAR
dynPerson:^EinePerson;dynamischeVariable/
Zeigervariable
statPerson:EinePerson;statischeVariable
≡
falsch:NEW(statPerson);keinedynamischeVariable
richtig:NEW(dynPerson);
Abhilfe:NEWoderDISPOSEnurmitdynamischenVariablenaufrufen.
≡≡Fehler-Hilfe:94
Fehlerursache:
InITG-PASCALsindnurZeigervariablenaufArraysundRecords
implementiert.Eswurdeversucht,eineZeigervariableaufeinen
anderenDatentypzudeklarieren.
Beispiel:
falsch:VAR
Zeiger:^REAL;keinARRAYoderRECORD
richtig:TYPE
RealArray=ARRAY[0..10]OFREAL;
VAR
Zeiger:^RealArray;ZeigeraufeinARRAY
Abhilfe:GeeignetesARRAYodergeeignetenRECORDmitZeigervariablen
daraufdeklarieren.
≡≡Fehler-Hilfe:99
Fehlerursache:
DieAnweisungistinITG-PASCAL(noch)nichtimplementiert.
Abhilfe:
VerwendenSieandereAnweisungen.
≡≡Fehler-Hilfe:101
Fehlerursache:
DieTabellefürBezeichner(Konstanten-,Variablen-,Typ-,Prozedur-
undFunktions-Deklarationen)istvoll.
Abhilfe:
VersuchenSie,dieAnzahlderBezeichnerzuverringern.
≡≡Fehler-Hilfe:102
Fehlerursache:
DieTabellefürdieParameterlistenderProzeduren/Funktionen
istvoll.
Abhilfe:
VersuchenSie,einigederdeklariertenProzeduren/Funktionen
zustreichen.
≡≡Fehler-Hilfe:103
Fehlerursache:
DieTabellefürdieDeklarationvonReal-Konstantenistvoll.
Abhilfe:
ErsetzenSieeinigederReal-KonstantendurchVariablen,denen
SiebeimProgramm-StartWertezuweisen.
≡≡Fehler-Hilfe:104
Fehlerursache:
DieTabellefürArray-Deklarationenistvoll.
Abhilfe:
VersuchenSie,einigederdeklariertenArrayszustreichen.
≡≡Fehler-Hilfe:105
Fehlerursache:
EssindzuvieleProzedur-/Funktions-Deklarationenineinander
geschachtelt.
Abhilfe:
ÄndernSiedie(inneren)Deklarationenwiefolgtab:
PROCEDUREa;
PROCEDUREb;
BEGIN
END;
BEGIN
END;
ersetzendurch
≡
PROCEDUREb;
BEGIN
END;
PROCEDUREa;
BEGIN
END;
≡≡Fehler-Hilfe:106
Fehlerursache:
DieTabellefürdenProgramm-Codeistvoll.
Abhilfe:
VersuchenSie,denProgrammumfangdurchStreichennicht
benötigterProgrammteilezuverringern.
≡≡Fehler-Hilfe:107
Fehlerursache:
DieTabellefürString-Einträgeistvoll.
Abhilfe:
VersuchenSie,mitwenigerString-Deklarationenauszukommen.
≡≡Fehler-Hilfe:108
Fehlerursache:
DieTabellefürEingabefelderistvoll.
Abhilfe:
TeilenSiedieEingabederVariablenaufundverwendenSie
zwischendurchdieProzedurLiesEingaben.
≡≡Fehler-Hilfe:152
Fehlerursache:
MengensindinITG-PASCAL(noch)nichtimplementiert.
Abhilfe:
VersuchenSie,SETdurchandereAnweisungenzuersetzen.
≡≡Fehler-Hilfe:153
Fehlerursache:
Zeiger(Pointer)sindinITG-PASCAL(noch)nichtimplementiert.
Abhilfe:
VersuchenSie,statischeVariablenzubenutzen.
≡≡Fehler-Hilfe:154
Fehlerursache:
LABELwirdinITG-PASCALnichtimplementiert.
Abhilfe:
VerwendenSiestrukturierteSchleifen.
≡≡Fehler-Hilfe:155
Fehlerursache:
GOTOwirdinITG-PASCALnichtimplementiert.
Abhilfe:
VerwendenSiestrukturierteSchleifen.
≡≡ITG-PASCAL-Hilfe-Ende