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 >
Text File  |  1993-09-18  |  198KB  |  7,540 lines

  1. ≡≡ITG-PASCAL
  2.  
  3. Igel-GrafikStandard-Grafik ITG-Pascal-Grafik
  4. Operatorenmathematische·FunktionenStandard-Bezeichner
  5. Standard-ProzedurenITG-Pascal-ProzedurenStandard-Funktionen
  6. ITG-Pascal-Funktionenparallele·Prozesse    Konstante
  7. TypenFehler-HilfeDebugger
  8. EditorSynonymeFischertechnik·LEGO
  9. Allgemeines
  10.  
  11. ≡≡ALLGEMEINES
  12.  
  13. ITG-PascalistzumgrößtenTeilTurbo-Pascal-kompatibel
  14. (Version4.0-6.0),enthältaberEinschränkungenundviele
  15. Erweiterungen,dieSchülerndasProgrammierenundFehlersuchen
  16. erleichtern.
  17.  
  18. BezeichnerausStandard-PascaloderausTurbo-Pascal
  19. tragendieüblichenNamen,Erweiterungensindmitdeutschen
  20. Namenversehen.DabeisindauchdiedeutschenSonderzeichen
  21. (ä,ö,ü,Ä,Ö,Ü,ß)zugelassen.
  22.  
  23.  
  24. ITG-PascalbestehtauseinemInterpreter,mitdemeinTeilder
  25. Pascal-AnweisungenimGrafik-undimTextmodusdirektausgeführt
  26. werdenkannundeinemCompiler/Interpreter,derPascal-Programme
  27. übersetztundausführt.
  28.  
  29. AlleAnweisungen,dieimDirektmodusausgeführtwerden,könnenauf
  30. WunschimEditormitprotokolliertwerden.Dabeiwerdensie
  31. automatischzueinemlauffähigenProgrammergänzt,dasverändert
  32. oderergänzt,gestartetundabgespeichertwerdenkann.
  33.  
  34.  
  35. ITG-PascalenthältindervorliegendenVersiondreiverschiedene
  36. Koordinaten-Systeme:
  37.  
  38. 1)denTextschirmmit1≤x≤80und1≤y≤25,wobeiderlinke
  39. obereEckpunktdieKoordinatenx=1undy=1hat.
  40.  
  41. 2)dieStandardgrafikmit-320≤x≤320undyMin≤y≤yMax,
  42. wobeiyMinundyMaxvonderGrafikkarteabhängen,wieunter
  43. GetMaxYbeschrieben.
  44. Dabeigilt:yMin=-GetMaxY/2
  45. yMax=GetMaxY/2.
  46. DerUrsprungdesKoordinatensystemsliegtinderMittedes
  47. Bildschirms.Diepositivey-Achsezeigtnachoben!
  48.  
  49.  
  50. 3)dieIgelgrafikmit-320≤x≤320und-240≤y≤240füralle
  51. Grafikkarten.GegebenenfallserfolgteineKorrekturin
  52. y-Richtung.
  53. AuchhierliegtderUrsprungdesKoordinatensystemsinderMitte
  54. desBildschirms.Diepositivey-Achsezeigtnachoben!Winkel
  55. werdenzurpositivenx-AchseimmathematischpositivenUmlaufsinn
  56. (entgegendemUrzeigersinn)gemessen.
  57.  
  58.  
  59. Debug-AnweisungenwerdenimQuelltexteingefügt(s.auchDebugger),
  60. wobeidieInformationennachjederQuelltextzeileaufdemBildschirm
  61. ausgegebenwerdenundzusätzlichineinemzweitenEditor-Fenster
  62. mitprotokolliertwerden,damitsiespäterinRuheangesehenwerden
  63. können.
  64.  
  65. ≡≡Synonyme
  66.  
  67. AufbauderSynonym-Datei'ITG.SYN':
  68. KommentarewerdenwieinPascaleingefügt.DasersteWortgibtden
  69. altenBezeichner,daszweitedenneuenzusätzlichenan.
  70. ProZeileistnureinWortpaarzugelassen.Kommentaredürfenniein
  71. einerZeileVORBezeichnernstehen.Kommentar-KlammerndürfenNICHT
  72. inKommentarenstehen.
  73.  
  74. Beispiele:
  75.  
  76.  
  77. ACHTUNG:EshandeltsichhiernurumBeispiele!
  78. ===============DiegültigenSynonymeentnehmenSiebitteIhrer
  79. Datei'ITG.SYN'!
  80.  
  81. INTEGERGANZZAHL(*HieristeinKommentarzulässig*)
  82. REALKOMMAZAHL
  83. INCERHÖHE
  84. REPEATWIEDERHOLE
  85. UNTILBIS
  86.  
  87. ≡≡Operatoren
  88.  
  89. +Addition 2+5=7
  90. -Subtraktion    5-2=3
  91. *Multiplikation2*5=10
  92. /Division 2/5=0.4
  93. DIVGanzzahl-Division7DIV5=1(=1Rest2)
  94. MODDivisionsrest7MOD5=2(=1Rest2)
  95. ^Potenz2^3=8(=2*2*2)
  96.  
  97. ≡≡Standard-Bezeichner
  98.  
  99. ANDARRAYBEGINCASECONSTDISPOSE
  100. DIVDODOWNTOELSEENDEXIT
  101. FORWARDFILEFORFUNCTIONGOTOHALT
  102. IF ININCLUDELABELMODNEW
  103. NILNOTOFORPACKEDPROCEDURE
  104. PROGRAMRECORDREPEATSETTHENTO
  105. TYPEUNTILUSESVARWHILEWITH
  106. XOR
  107.  
  108. ≡≡AND
  109.  
  110. MitANDkanneinerseitsgeprüftwerden,obzweiodermehrWahrheitswerte
  111. gleichzeitigerfülltsind,andererseitskanneinebitweiseVerknüpfung
  112. zweierodermehrererINTEGER-Werteerfolgen.
  113.  
  114. VerknüpfungvonWahrheitswerten(BOOLEAN):
  115.  
  116. a│b│aANDb
  117. ───────┼───────────┼───────────
  118. FALSE│FALSE│FALSE
  119. FALSE│TRUE│FALSE
  120. TRUE│FALSE│FALSE
  121. TRUE│TRUE│TRUE
  122.  
  123.  
  124. VerknüpfungvonINTEGER-Werten
  125.  
  126. │dezimal│binärFürjezweiuntereinanderstehende
  127. ─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
  128. a│13│1101VerknüpfungnachderobigenTabelle
  129. b│11│1011fürWahrheitswertedurchgeführt,wobei
  130. ─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
  131. aANDb│9│1001ersetzensind.
  132.  
  133. ≡≡ARRAY
  134.  
  135. DurchARRAYwirdeinFeldmiteinerbestimmtenAnzahlgleichartiger
  136. Elementedeklariert.
  137.  
  138. Primzahl:ARRAY[1..50]OFINTEGER;
  139.  
  140. stellt50SpeicherplätzefürINTEGER-VariablenzuVerfügung,dieüber
  141. denBezeichnerPrimzahlundihrenIndexangesprochenwerdenkönnen.
  142.  
  143. Primzahl[1]:=2;
  144. Primzahl[2]:=3;
  145.  
  146. stellengültigeAnweisungendar,
  147.  
  148.  
  149. Primzahl:=2;
  150.  
  151. istnichtmöglich,weilnichtersichtlichist,welchemFeldelementdie
  152. 2zugewiesenwerdensoll.
  153.  
  154. Primzahl[51]:=101;
  155.  
  156. istebenfallsnichtmöglich,dalautDeklarationkeinFeldelementmitdem
  157. Index51einzurichtenwar.
  158.  
  159. ≡≡BEGIN
  160.  
  161. BEGINundENDklammernimmerFolgenvonAnweisungenein,dieunterden
  162. jeweiligenVoraussetzungennacheinanderabzuarbeitensind.BEGINundEND
  163. tretenjeweilsPAARWEISEauf.
  164.  
  165. DurchBEGINwerdenfolgendeProgrammabschnitteeingeleitet:
  166. 1)dasHauptprogramm
  167. 2)jedeProgrammrumpfeinerProzedur(PROCEDURE)/Funktion
  168. (FUNCTION)
  169. 3)dieAnweisungsfolge,dienacheinerIF-Abfrage
  170. abzuarbeitenist
  171. 4)dieAnweisungsfolge,dienacheinerELSE-Anweisung
  172. abzuarbeitenist
  173.  
  174.  
  175. 5)dieAnweisungsfolge,dienacheinerWHILE-Abfrage
  176. abzuarbeitenist
  177. 6)dieAnweisungsfolge,dienacheinerFallunterscheidungineiner
  178. CASE-Anweisungabzuarbeitenist
  179.  
  180. IndenFällen3-6kanndasBEGINentfallen,wennjeweilsnurEINE
  181. Anweisungausgeführtwerdensoll.
  182.  
  183. ≡≡CASE
  184.  
  185. DieCASE-StrukturdientzumbedingtenAbarbeiteneinzelnerProgramm-
  186. abschnittenachbestimmtenFallunterscheidungenundersetztunübersicht-
  187. lichereverschachtelteIF-Anweisungen.
  188.  
  189. SeiceineCHAR-Variable,dievorderCASE-Strukturmitmehreren
  190. verschiedenenWertenbelegtwerdenkann.
  191.  
  192. CASEcOF
  193. "A":BEGIN...END;
  194. "B":BEGIN...END;
  195. .
  196. .
  197. ELSEBEGIN...END;
  198. END;
  199.  
  200.  
  201. DieeinzelnenFällewerdennachKONSTANTENvorherbekanntenWertenunter-
  202. schieden.DerInhaltderVariablencdarffürdieFallunterscheidung
  203. nichtmitdemInhalteineranderenCHAR-Variablenverglichenwerden.
  204.  
  205. IndervorliegendenVersionvonITG-PASCALMUßdieELSE-Anweisungmit
  206. aufgeführtwerden.
  207.  
  208. ≡≡CONST
  209.  
  210. MitCONSTwerdenKonstantedeklariert,diefürdiegesamteLaufzeitdes
  211. ProgrammsdenselbenWertbehaltenundnichtdurcheineWertzuweisung
  212. verändertwerdenkönnen.
  213.  
  214. CONST
  215. AnzahlDerWochentage=7;
  216.  
  217. AnweisungenderForm
  218.  
  219. FORn:=1TOAnzahlDerWochentageDO...oder
  220. n:=AnzahlDerWochentage;
  221.  
  222. sindmöglich,Wertzuweisungenwie
  223.  
  224. AnzahlDerWochentage:=5;
  225.  
  226. sindnichtmöglich.
  227.  
  228. ≡≡DISPOSE
  229.  
  230. DISPOSEgibtdenSpeicherplatz,deneineZeigervariable(dynamische
  231. Variable)belegte,wiederfrei.DerWertdesZeigersistanschließend
  232. NIL.
  233.  
  234. Beispiel:
  235.  
  236. NEW(Zeigertyp);PlatzfüreineZeigervariableaufdemHeap
  237. .anfordern.ErstdanndürfenZuweisungen
  238. .vorgenommenwerden.
  239. DISPOSE(Zeigertyp);WennderInhaltderZeigervariablennichtmehr
  240. benötigtwird,wirdderPlatzaufdemHeap
  241. wiederfreigegeben.
  242.  
  243. ≡≡DIV
  244.  
  245. DIVGanzzahl-Division7DIV5=1(=1Rest2)
  246.  
  247. ≡≡DO
  248.  
  249. DOisteinTeildesSchleifenkopfesderWHILE-DO-Schleifeundein
  250. TeilderWITH-DO-Anweisung.
  251.  
  252. ≡≡DOWNTO
  253.  
  254. DOWNTOisteinTeildesSchleifenkopfesderabwärtszählendenFOR-TO-
  255. Schleife.
  256.  
  257. ≡≡ELSE
  258.  
  259. ELSEisteinTeilederIF-THEN-ELSE-undderCASE-OF-Anweisungen.
  260.  
  261. ≡≡END
  262.  
  263. sieheBEGIN
  264.  
  265. ≡≡EXIT
  266.  
  267. MitderAnweisungEXITwirderreicht,daßdieAnweisungenzwischenEXIT
  268. unddemEndederProzedur,derFunktionoderdemProgramm,wennEXITim
  269. Hauptprogrammausgeführtwird,übersprungenwerden.
  270.  
  271. PROCEDURESuche(Text:STRING);
  272. VAR
  273. n:INTEGER;
  274. BEGIN
  275. FORn:=1TOAnzahlDerStringsDOBEGIN
  276. IFEintrag[n]=TextTHENBEGIN
  277. Write(Text,"istdas",n,".teElementimArrayEintrag.");
  278. EXIT;
  279. END;
  280. END;
  281. Write(Text,"imArrayEintragnichtgefunden.");
  282. END;
  283.  
  284.  
  285. DievorletzteZeilewirdnurausgeführt,wenndieSucheerfolgloswar,
  286. sonstwirdderErfolggemeldetunddieAusführungderFOR-TO-Schleife
  287. undderProzedurSuchewirdsofortbeendet.
  288.  
  289. ≡≡FORWARD
  290.  
  291. WennsichmehrereProzeduren(PROCEDURE)oderFunktionen(FUNCTION)
  292. gegenseitigaufrufen,führteszuProblemen,weileineProzedur,die
  293. voneineranderenaufgerufenwird,vorherdeklariertseinmuß.Der
  294. CompilermeldetindiesemFalleinenFehler,weilernichtweiß,ob
  295. essichumeineProzedurodereineFunktionhandeltundwelcheParameter
  296. ihrübergebenwerdenmüssen.
  297.  
  298. Beispiel:
  299.  
  300.  
  301. FUNCTIONf1(x:INTEGER):INTEGER;
  302. BEGIN
  303. IFn>1THEN
  304. f1:=n*f2(n-2)Aufrufvonf2!!!
  305. ELSEf1:=1;
  306. END;
  307.  
  308. FUNCTIONf2(x:INTEGER):INTEGER;
  309. BEGIN
  310. IFn>1THEN
  311. f2:=SQR(n)*f1(n-1)Aufrufvonf1!!!
  312. ELSEf2:=1;
  313. END;
  314.  
  315.  
  316. DaderCompilerzuerstnurdenProzedur-/Funktionskopfbenötigt,um
  317. dieParameterübergabeprüfenzukönnen,reichtesnurdenKopfhinzu-
  318. schreiben.DamitanschließendnichtdieDeklarationderProzedur/
  319. Funktionerwartetwird,wirddemCompilerdurchFORWARDmitgeteilt,daß
  320. essichnurumdenKopfhandeltundderRestspäterfolgt.Dazuist
  321. derProzedur-/FunktionskopfGENAUSOhinzuschreibenwiebeider
  322. endgültigenDeklaration,esistnur"FORWARD;"anzufügen.Ansonsten
  323. müssenbeideKöpfeZEICHENFÜRZEICHENübereinstimmen.
  324.  
  325.  
  326. FUNCTIONf2(x:INTEGER):INTEGER;FORWARD;jetztistallesNötige
  327. bekannt
  328. FUNCTIONf1(x:INTEGER):INTEGER;
  329. BEGIN
  330. IFn>1THEN
  331. f1:=n*f2(n-2)Aufrufvonf2!!!
  332. ELSEf1:=1;
  333. END;
  334.  
  335. FUNCTIONf2(x:INTEGER):INTEGER;
  336. BEGIN
  337. IFn>1THEN
  338. f2:=SQR(n)*f1(n-1)Aufrufvonf1!!!
  339. ELSEf2:=1;
  340. END;
  341.  
  342. ≡≡FILE
  343.  
  344. DurchFILE-OFwirddieStruktureinerDateivereinbart.
  345.  
  346. Beispiel:
  347.  
  348. TYPE
  349. DatenEinerPerson=RECORD
  350. Vorname,Nachname,Wohnort,Straße:STRING[20];
  351. PLZ,HausNr,Tel:INTEGER;
  352. END;
  353. VAR
  354. Person:DatenEinerPerson;
  355. PersonenDatei:FILEOFDatenEinerPerson;
  356.  
  357.  
  358. DieStrukturunddieGrößederDatei"PersonenDatei"werdenbeim
  359. SchreibenvonDatenineineDateisogewählt,daßdieDateiein
  360. direktesAbbildderVariablen"Person"aufderDiskette/Festplatte
  361. zufindenist.AufdieseWeiselassensichdieDatenleichtwieder
  362. ineineVariablevomTyp"DatenEinerPerson"einlesen.
  363.  
  364. SchreibenineineDatei:
  365.  
  366. Write(PersonenDatei,Person);vorheröffnen,dannschließen
  367.  
  368. LesenauseinerDatei:
  369.  
  370. Read(PersonenDatei,Person);
  371.  
  372. ≡≡FOR
  373.  
  374. DurchFORwirdderKopfeinerWiederholschleifeeingeleitet,beiderein
  375. ZählerbeijedemDurchgangautomatischimGegensatzzurWHILE-DO-und
  376. REPEAT-UNTIL-SchleifeumEinsheraufoderherabgesetztwird.Der
  377. ZählermußvomTypINTEGERsein.
  378.  
  379. Beispiele:
  380.  
  381. aufwärtszählendeSchleife:
  382.  
  383. FORn:=1TO5DO...nureineAnweisunginderSchleife
  384.  
  385. FORn:=1TO5DOBEGIN
  386. ...mehrereAnweisungeninderSchleife
  387. END;
  388.  
  389.  
  390. BeimStartderFOR-TO-SchleifewirdderInhaltdesSchleifenzählersn
  391. auf1gesetztundeswirdgeprüft,obderInhaltdesSchleifenzähler
  392. kleinerodergleichderoberenGrenze(zwischenTOundDO)ist.Wenndas
  393. derFallist,dannwerdenalleAnweisungeninnerhalbderSchleifemitdem
  394. Wertn=1durchlaufen.AmEndederSchleifewirdderSchleifenzählerum
  395. 1erhöhtunddievorherigenSchrittewerdensolangewiederholt,bisder
  396. SchleifenzählergrößeralsdieobereGrenzeist(n>5).Danachwirddas
  397. ProgrammmitderAnweisungfortgesetzt,diedirektnachderSchleife
  398. steht.nnimmtalsonacheinanderdieWerte1,2,3,4und5an.
  399.  
  400.  
  401. abwärtszählendeSchleife:
  402.  
  403. FORn:=5DOWNTO1DO...wieoben,aberTOwirddurchDOWNTO
  404. ersetzt
  405. FORn:=5DOWNTO1DOBEGIN
  406. ...
  407. END;
  408.  
  409. EswerdendieselbenSchrittewiebeideraufwärtszählendenSchleife
  410. durchgeführt,nurnnimmtnacheinanderdieWerte5,4,3,2und1an.
  411.  
  412. ≡≡FUNCTION
  413.  
  414. EineFunktion(FUNCTION)isteineFolgevonAnweisungen,diedurch
  415. AufrufdesFunktions-Namens(undÜbergabevonParametern,soweitnötig)
  416. rechtsvoneinerWertzuweisunggestartetwird.DieStruktureinerFunktion
  417. unterscheidetsichnurimFunktions-KopfundderArtderWertrückgabe
  418. voneinemProgramm(PROGRAM)odereinerProzedur(PROCEDURE),
  419. ansonstengeltendiegleichenRegelnwieunterPROCEDUREausgeführt.
  420.  
  421. möglicherAufbaueinerFunktion:
  422.  
  423.  
  424. FUNCTIONQuadrat(x:REAL):REAL;DerFunktionwirdeinParametervom
  425. BEGINTypREALübergeben.DerWertdieses
  426. Quadrat:=x*x;ParametersstehtinderVariablenx
  427. END;zurVerfügung.DieAngabe":REAL"
  428. bedeutet,daßderFunktionswertvom
  429. TypREAList.DieseAngabeistnötig,damitderFunktionswerteinerREAL-
  430. Variablenzugewiesenwerdenkann.DurchdieAngabe"Quadrat:=..."
  431. weißderCompiler,daßanderStelleimProgramm,ander"Quadrat(x)"
  432. steht,derWertvon"x*x"einzusetzenist.
  433.  
  434.  
  435. FürdieÜbergabevonParamterngeltendieselbenRegelnwieunter
  436. PROCEDUREangegeben.
  437.  
  438. BeispielezumAufrufderFunktionQuadrat(yistvomTypREAL):
  439.  
  440. richtig:
  441. y:=Quadrat(x);
  442. y:=Quadrat(3.2);
  443. y:=Quadrat(a);AufdenInhaltvonawirdinderFunktionunter
  444. derVariablenxzugegriffen.
  445. Write(Quadrat(z));DerFunktionswertläßtsichüberalleinsetzen,
  446. woaucheineREAL-Konstanteverwendetwerdenkann.
  447.  
  448.  
  449. falsch:
  450. n:=Quadrat(x);nistvomTypINTEGER
  451. Read(Quadrat(x));ReadarbeitetmitVariablen-Parametern,wieunter
  452. PROCEDUREimdrittenBeispielangegeben.
  453.  
  454. ≡≡GOTO
  455.  
  456. GOTOstehtinITG-PASCALnichtzurVerfügung.
  457.  
  458. DamitITG-PASCALdiestrukturierteProgrammierungerlerntwerdensoll,
  459. stehendieBezeichnerGOTOundLABELnichtzurVerfügung.Durcheine
  460. entsprechendeProgrammstrukturkannIMMERaufdieseAnweisungen
  461. verzichtetwerden.
  462.  
  463. ≡≡HALT
  464.  
  465. MitderAnweisungHALTwirddieAusführungdesProgrammsSOFORTBEENDET.
  466.  
  467. PROCEDURESuche(Text:STRING);
  468. VAR
  469. n:INTEGER;
  470. BEGIN
  471. FORn:=1TOAnzahlDerStringsDOBEGIN
  472. IFEintrag[n]=TextTHENBEGIN
  473. WriteLn(Text,"istdas",n,".teElementimArrayEintrag.");
  474. WriteLn("BeendedieProgrammausführung.");
  475. HALT;
  476. END;
  477. END;
  478. Write(Text,"imArrayEintragnichtgefunden.");
  479. END;
  480.  
  481.  
  482. DievorletzteZeilewirdnurausgeführt,wenndieSucheerfolgloswar,
  483. sonstwirdderErfolggemeldetunddieAusführungdesProgrammswird
  484. sofortbeendet.
  485.  
  486. ≡≡IF
  487.  
  488. DurchdieIF-THEN-ELSE-AnweisungwirdeinebedingteProgramm-
  489. ausführungerreicht,d.h.,daßeineFolgevonAnweisungennurunter
  490. bestimmtenVoraussetzungenausgeführtwird.
  491.  
  492. Beispiel:
  493.  
  494. IFx<2.5THENBEGINxistvomTypINTEGERoderREAL
  495. .DieAnweisungenzwischenBEGINundENDwerden
  496. .ausgeführt,wennx<2.5ist,sonstwirddas
  497. END;ProgrammhinterENDfortgesetzt.
  498.  
  499.  
  500. IFx<2.5THENBEGIN
  501. .DieseAnweisungenwerdennurfürx<2.5
  502. .ausgeführt,
  503. END
  504. ELSEBEGIN
  505. .andernfalls(d.h.fürx>=2.5)werdendiese
  506. .Anweisungenausgeführt.
  507. END;InbeidenFällengehtesdannnachdemEND
  508. weiter.
  509.  
  510. ≡≡ IN
  511.  
  512. InITG-PASCAListdieeinzigezurVerfügungstehendeSET-Anweisung
  513. ...cIN["A..C","D","X"]...,mitdergeprüftwerdenkann,obder
  514. WerteinerCHAR-VariablenineinerMengevonZeichenenthaltenist.Das
  515. ErgebnisisteinWahrheitswert.
  516.  
  517. Fürc="B"oderc="D"istcIN["A..C","D","X"]TRUE,
  518. fürc="b"oderc="F"istcIN["A..C","D","X"]FALSE.
  519.  
  520. ≡≡INCLUDE
  521.  
  522. MitderAnweisungINCLUDE[Pfad\]DateinamekannimDeklarationsteil
  523. einesProgrammsodereinerProzedur/FunktionderQuelltexteiner
  524. DateiindasProgrammandervorgesehenenStelleeingebundenwerden,
  525. ohnedaßderQuelltextderDateiimEditorvorhandenist.DiePfad-
  526. angabekannentfallen,wenndieDateiimaktuellenVerzeichniszu
  527. findenist.EskannauchdieSyntaxvonTURBO-PASCALmit
  528. {$I[Pfad\]Dateiname}verwendetwerden.
  529.  
  530. Beispiel:
  531. INCLUDEC:\ITG\BSP\PRG1.INC,C:\ITG\BSP\PRG2.INC;
  532.  
  533. oder
  534.  
  535. {$IC:\ITG\BSP\PRG1.INC}
  536. {$IC:\ITG\BSP\PRG2.INC}
  537.  
  538. ≡≡LABEL
  539.  
  540. LABELstehtinITG-PASCALnichtzurVerfügung.
  541.  
  542. DamitITG-PASCALdiestrukturierteProgrammierungerlerntwerdensoll,
  543. stehendieBezeichnerGOTOundLABELnichtzurVerfügung.Durcheine
  544. entsprechendeProgrammstrukturkannIMMERaufdieseAnweisungen
  545. verzichtetwerden.
  546.  
  547. ≡≡MOD
  548.  
  549. MODDivisionsrest7MOD5=2(=1Rest2)
  550.  
  551. ≡≡NEW
  552.  
  553. NEWfordertSpeicherplatzaufdemHeapfüreineZeigervariablean.
  554.  
  555. Beispiel:
  556.  
  557. NEW(Zeigertyp);PlatzfüreineZeigervariableaufdemHeap
  558. .anfordern.ErstdanndürfenZuweisungen
  559. .vorgenommenwerden.
  560. DISPOSE(Zeigertyp);WennderInhaltderZeigervariablennichtmehr
  561. benötigtwird,wirdderPlatzaufdemHeap
  562. wiederfreigegeben.
  563.  
  564. ≡≡NIL
  565.  
  566. NIListderWerteinesnichtmitNEWinitialisiertenZeigers.Wennder
  567. WerteinesZeigersNIList,darfaufKEINENFALLindieVariable
  568. geschriebenwerden,aufdiederZeigerzeigt,weilsonsteinRechner-
  569. absturzerfolgenkann.
  570.  
  571. c:^CHAR;czeigtaufeineCHAR-Variable
  572.  
  573. IFc<>NILTHENc^:="A";sicherstellen,daßcinitialisiertwurde,
  574. dannerstinc^hineinschreiben
  575.  
  576. ≡≡NOT
  577.  
  578. MitNOTkanneinerseitseinWahrheitswertnegiertwerden,andererseits
  579. kanneinebitweiseUmkehrderZifferneinerZahlimBinärsystemerfolgen.
  580.  
  581. VerknüpfungvonWahrheitswerten(BOOLEAN):
  582.  
  583. a│NOTa
  584. ───────┼───────────
  585. FALSE│TRUE
  586. TRUE│FALSE
  587.  
  588.  
  589. VerknüpfungvonINTEGER-Werten
  590.  
  591. │dezimal│binärFürjedeZifferimBinärsystemwird
  592. ─────────┼───────────┼─────────eineUmkehrungnachderobigenTabelle
  593. a│13│00001101fürWahrheitswertedurchgeführt,wobei
  594. ─────────┼───────────┼─────────0durchFALSEund1durchTRUEzu
  595. NOTa│-14│11110010ersetzensind.
  596.  
  597. DiesesmerkwürdigerscheinendeErgebniskommtdadurchzustande,daßdas
  598. führende(linke)BitalsVorzeichen(0:+/1:-)interpretiertwird
  599. unddaßinfolgenderWeisegezähltwird:
  600.  
  601. 0,1,2...32768,-32767,-32766,...,-2,-1
  602.  
  603. ≡≡OF
  604.  
  605. OFwirdinderCASE-OF-StrukturundbeiderFestlegungeines
  606. DateitypsmitFILE-OFverwendet.
  607.  
  608. ≡≡OR
  609.  
  610. MitORkanneinerseitsgeprüftwerden,obvonzweiodermehrWahrheits-
  611. wertenmindestenseinererfülltist,andererseitskanneinebitweise
  612. VerknüpfungzweierodermehrererINTEGER-Werteerfolgen.
  613.  
  614. VerknüpfungvonWahrheitswerten(BOOLEAN):
  615.  
  616. a│b│aORb
  617. ───────┼───────────┼───────────
  618. FALSE│FALSE│FALSE
  619. FALSE│TRUE│TRUE
  620. TRUE│FALSE│TRUE
  621. TRUE│TRUE│TRUE
  622.  
  623.  
  624. VerknüpfungvonINTEGER-Werten
  625.  
  626. │dezimal│binärFürjezweiuntereinanderstehende
  627. ─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
  628. a│5│0101VerknüpfungnachderobigenTabelle
  629. b│9│1001fürWahrheitswertedurchgeführt,wobei
  630. ─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
  631. aORb│13│1101ersetzensind.
  632.  
  633. ≡≡PACKED
  634.  
  635. PACKEDstehtinITG-PASCALnichtzurVerfügung.
  636.  
  637. ≡≡PROCEDURE
  638.  
  639. EineProzedur(PROCEDURE)isteineFolgevonAnweisungen,diedurch
  640. AngabedesProzedur-Namens(undÜbergabevonParametern,soweitnötig)
  641. gestartetwird.DieStruktureinerProzedurunterscheidetsichnur
  642. imProzedur-KopfvoneinemProgramm(PROGRAM),ansonstengeltendie
  643. gleichenRegelnwieunterPROGRAMausgeführt.
  644.  
  645. möglicheProzedurköpfe:
  646.  
  647. PROCEDUREName;
  648. .weiterwiebeieinemProgramm
  649. .
  650.  
  651. DieProzedurbenötigtkeineParameter.DerAufruferfolgteinfachdurch
  652. Hinschreibenvon"Name"imAnweisungsteildesProgramms,einerProzedur
  653. (eineranderenoderdieser)odereinerFunktion,wenndieProgramm-
  654. ausführungdieseStelleerreicht.
  655.  
  656.  
  657. PROCEDUREName(x,y:INTEGER;r:REAL);
  658. .
  659. .
  660.  
  661. DerProzedursinddreiParameterzuübergeben,dieinderReiehenfolge
  662. denVariablenx,yundrzugewiesenwerden.
  663.  
  664. Beispiele:
  665.  
  666. richtig:
  667. Name(3,5,4.9);x=3,y=5,r=4.9
  668. Name(3,5,9);x=3,y=5,r=9(.0)
  669.  
  670. falsch:
  671. Name(3);
  672. zweiParameterzuwenig
  673. Name(4.9,3,5);xkannnichtdenWert4.9annehmen!
  674.  
  675.  
  676. PROCEDUREName(x,y:INTEGER;VARa:INTEGER);
  677. .
  678. .
  679.  
  680. DerProzedursinddreiParameterzuübergeben,dieinderReiehenfolge
  681. denVariablenx,yundazugewiesenwerden.WenninnerhalbderProzedur
  682. NamedieInhaltevonxundyverändertwerden,merktdasdieaufrufende
  683. Prozedurnicht.WennderWertvonaverändertwird,wirdauchderWert
  684. derVariablenverändert,diealsdritterParameterübergebenwurde.
  685. Darausergibtsich,daßalsdritterParametereineVariableverwendet
  686. werdenmuß!
  687.  
  688. Beispiele:
  689.  
  690. richtig:
  691. Name(3,5,n);x=3,y=5,a=n(nistINTEGER-Variable)
  692.  
  693.  
  694. falsch:
  695. Name(3);
  696. zweiParameterzuwenig
  697. Name(4.9,3,n);xkannnichtdenWert4.9annehmen!
  698. Name(3,5,9);derdritteParameterMUßeineVariablesein
  699.  
  700. ≡≡PROGRAM
  701.  
  702. JedesPASCAL-ProgrammbeginntmitdemBezeichnerPROGRAMundeinem
  703. Programmnamen.DaranschließensichjenachBedarfTyp-,Konstanten-,
  704. Variablen-,Prozedure-undFunktions-Deklarationenan.Anschließend
  705. folgendieAnweisungendesHauptprogramms,dievonBEGINundEND
  706. eingeschlossensind.DasEndedesProgrammsistdurcheinenPunkt"."
  707. zukennzeichnen.
  708.  
  709. DaskleinstmöglicheProgramm:
  710.  
  711. PROGRAMEinName;
  712. BEGIN
  713. END.
  714.  
  715.  
  716. StandardaufbaueinesProgramms:
  717.  
  718. PROGRAMEinName;
  719. CONSTDieKonstanten-,Typ-,Variablen-,Prozedur-
  720. .....undFunktions-Deklarationendürfenindiesem
  721. TYPEAbschnitt,demDeklarationteil,biszumBEGIN
  722. .....desHauptprogrammsinbeliebigerAnzahlund
  723. VARReihenfolgeerfolgen.Esistaberdaraufzu
  724. .....achten,daßalles,woraufzugegriffenwird,
  725. PROCEDURE.....VORdererstenVerwendungzudeklarierenist!
  726. .....DadurchergebensichoftZwängefüreinebestimmte
  727. FUNCTION.....    ReihenfolgederDeklarationen.
  728. .....
  729. BEGINMitdiesemBEGINfängtdasHauptprogramman.
  730. .....DieersteAnweisungwirdbeimProgrammstartausge-
  731. END.führt.EndedesProgrammsmit"END.".
  732.  
  733. ≡≡RECORD
  734.  
  735. DieProgrammiersprachePASCALerlaubtes,aufbauendaufdenvordefierten
  736. DatentypeneigeneneueDatenstrukturenundTypenzudefinieren.Diese
  737. DeklararationwirddurchTYPEeingeleitet(sieheauchVAR).Die
  738. StrukturdesDatentypsistindieBezeichnerRECORDundEND
  739. einzuklammern.
  740.  
  741. TYPE
  742. DatenEinerPerson=RECORD
  743. Vorname,Nachname,Wohnort,Straße:STRING[20];
  744. PLZ,HausNr,Tel:INTEGER;
  745. END;
  746. VAR
  747. Person:DatenEinerPerson;
  748.  
  749. DieVariable"Person"enthältdannautomatischdie7aufgeführtenFelder,
  750. aufdieüberPerson.Feldbezeichnungzugegriffenwerdenkann.Innerhalb
  751. einerWITH-DO-AnweisungkannSchreibarbeiteingespartwerden.
  752.  
  753.  
  754. DerVorteileinerDatenstrukturist,daßalleFelderdieserVariablen
  755. festmiteinanderverbundensind(mansprichtdeshalbauchvoneinem
  756. VERBUND)unddaßProgrammfehlerleichtervermiedenwerdenkönnen,durch
  757. dieTeilemehreregleichartigerVariablendurcheinandergeratenkönnen.
  758.  
  759.  
  760. Beispiele:
  761.  
  762. Person.Vorname:="Egon";
  763. Person.Nachname:="Müller";
  764.  
  765. WITHPersonDOBEGIN
  766. Vorname:="Egon";
  767. Nachname:="Müller";
  768. END;
  769.  
  770. DamitsindderVariablen"Person"VornameundNachnamezugewiesen
  771. worden.
  772.  
  773. ≡≡REPEAT
  774.  
  775. DieREPEAT-UNTIL-SchleifeisteineSchleife,beiderNACHAusführung
  776. derAnweisungenzwischenREPEATundUNTILgeprüftwird,obdieAnweis-
  777. ungsfolgenocheinmalausgeführtwird.DasistdannderFall,wenndie
  778. BedingunghinterUNTIL(Abbruchbedingung)NICHTERFÜLLTist.Innerhalb
  779. derSchleifeistdaraufzuachten,daßdieAbbruchbedingungirgendwann
  780. erfülltwird,dadasProgrammdieSchleifesonstunendlichoftdurch-
  781. läuft.
  782.  
  783. DieSchleifewirdAUFJEDENFALLeinmaldurchlaufen,weildiePrüfung
  784. erstamEndedurchgeführtwird.(s.auchWHILE-DO-Schleife)
  785.  
  786. Beispiel:
  787.  
  788.  
  789. x:=-1.5;    xeinendefiniertenWertzuweisen
  790. REPEAT
  791. .Anweisungsfolge,diefürx-Wertezwischen-1.5und
  792. .1.5ausgeführtwerdensoll
  793. x:=x+0.1;xerhöhen,damitdieAbbruchbedingungerfülltwird
  794. UNTILx>1.5;nichtx=1.6wegenmöglicherRundungsfehler
  795. xnimmtdenWert1.6nichtunbedingtGENAUan,dann
  796. gibteseineEndlos-Schleife!
  797.  
  798. ≡≡SET
  799.  
  800. SETstehtinITG-PASCALnichtzurVerfügung.
  801.  
  802. InITG-PASCAListdieeinzigezurVerfügungstehendeSET-Anweisung
  803. ...c IN["A..C","D","X"]...,mitdergeprüftwerdenkann,obder
  804. WerteinerCHAR-VariablenineinerMengevonZeichenenthaltenist.
  805.  
  806. ≡≡THEN
  807.  
  808. THENisteinTeilderIF-THEN-ELSE-Anweisung.
  809.  
  810. ≡≡TO
  811.  
  812. TOisteinTeildesSchleifenkopfesderaufwärtszählendenFOR-TO-
  813. Schleife.
  814.  
  815. ≡≡TYPE
  816.  
  817. DieProgrammiersprachePASCALerlaubtes,aufbauendaufdenvordefierten
  818. DatentypeneigeneneueDatenstrukturenundTypenzudefinieren.Diese
  819. DeklararationwirddurchTYPEeingeleitet(sieheauchVAR).
  820.  
  821. TYPE
  822. Wochentage=(Mo,Di,Mi,Do,Fr,Sa,So);
  823.     EinerVariablenvomTypWochentagekannnureinerdieser7Werte
  824.     zugewiesenwerden.
  825. DatenEinerPerson=RECORD
  826. Vorname,Nachname,Wohnort,Straße:STRING[20];
  827. PLZ,HausNr,Tel:INTEGER;
  828. END;
  829.     EineVariablevomTypDatenEinerPersonenthältdannautomatisch
  830.     die7aufgeführtenFelder,aufdieüberVariablenname.Feldbezeich-
  831.     nungzugegriffenwerdenkann.
  832.  
  833. ≡≡UNTIL
  834.  
  835. UNTIListeinTeilderREPEAT-UNTIL-Schleife.
  836.  
  837. ≡≡USES
  838.  
  839. USESwirdindervorliegendenVersionvonITG-PASCALnichtbenötigt.
  840.  
  841. MitUSESwerdeninTURBO-PASCALUNITseingebunden,derenQuelltextnicht
  842. unbedingtzurVerfügungstehenmuß.AufdieseWeisewirddasArbeiten
  843. mitfertigenProgramm-Bibliothekensehrerleichtert.
  844.  
  845. InITG-PASCALsindbereitsumfangreicheBibliothekenenthalten,sodaß
  846. UNITsfürnichtsodringendwieinTURBO-PASCALbenötigtwerden.
  847.  
  848. ≡≡VAR
  849.  
  850. InPASCAL-ProgrammenmußVORdererstenVerwendungeinerVariablen
  851. bekanntsein,umwelchenTypessichhandelnsoll.DieseInformation
  852. entnimmtderCompilerderVariablen-Deklaration,diedurchVAReinge-
  853. leitetwird.
  854.  
  855. VAR
  856. m,n:INTEGER;
  857. x:REAL;
  858.  
  859. oder
  860.  
  861. VAR
  862. m:INTEGER;
  863. n:INTEGER;
  864. x:REAL;
  865.  
  866.  
  867. oder
  868.  
  869. VARm:INTEGER;
  870. VARn:INTEGER;
  871. VARx:REAL;
  872.  
  873. ≡≡WHILE
  874.  
  875. DieWHILE-DO-SchleifeisteineSchleife,beiderVORAusführung
  876. derAnweisungenzwischenWHILEunddemdazugehörigenENDgeprüftwird,
  877. obdieAnweisungsfolgenochausgeführtwird.DasistdannderFall,wenn
  878. dieBedingunghinterWHILE(Abbruchbedingung)ERFÜLLTist.Innerhalb
  879. derSchleifeistdaraufzuachten,daßdieAbbruchbedingungirgendwann
  880. erfülltwird,dadasProgrammdieSchleifesonstunendlichoftdurch-
  881. läuft.
  882.  
  883. DieSchleifewirdNICHTUNBEDINGTdurchlaufen,weildiePrüfungschon
  884. vordererstenAusführungdurchgeführtwird.
  885.  
  886. Beispiel:
  887.  
  888.  
  889. x:=-1.5;xeinendefiniertenWertzuweisen
  890. WHILEx<=1.5DOBEGIN
  891. .Anweisungsfolge,diefürx-Wertezwischen
  892. .-1.5und1.5ausgeführtwerdensoll
  893. x:=x+0.1;
  894. xerhöhen,damitdieAbbruchbedingungerfüllt
  895. END;wird
  896.  
  897. ≡≡WITH
  898.  
  899. WITHdientdemvereinfachtenZugriffaufVariableneinesRECORD's.Damit
  900. istbeimZugriffaufumfangreichereRECORD-VariablenwenigerSchreib-
  901. arbeitnötig.
  902.  
  903. Beispiel:
  904.  
  905. TYPE
  906. PunktTyp=RECORD
  907. x,y:REAL;
  908. END;
  909. VAR
  910. P:PunktTyp;
  911.  
  912. 
  913. statt
  914.  
  915. P.x:=1.3;
  916. P.y:=7.4;
  917.  
  918. kanngeschriebenwerden
  919.  
  920. WITHPDOBEGIN
  921. x:=1.3;
  922. y:=7.4;
  923. END;
  924.  
  925. ≡≡XOR
  926.  
  927. MitXORkanneinerseitsgeprüftwerden,obvonzweiWahrheitswerten
  928. genaueinererfülltist,andererseitskanneinebitweiseVerknüpfung
  929. zweierINTEGER-Werteerfolgen.
  930.  
  931. VerknüpfungvonWahrheitswerten(BOOLEAN):
  932.  
  933. a│b│aXORb
  934. ───────┼───────────┼───────────
  935. FALSE│FALSE│FALSE
  936. FALSE│TRUE│TRUE
  937. TRUE│FALSE│TRUE
  938. TRUE│TRUE│FALSE
  939.  
  940.  
  941. VerknüpfungvonINTEGER-Werten
  942.  
  943. │dezimal│binärFürjezweiuntereinanderstehende
  944. ─────────┼───────────┼────────ZiffernimBinärsystemwirdeine
  945. a│13│1101VerknüpfungnachderobigenTabelle
  946. b│11│1011fürWahrheitswertedurchgeführt,wobei
  947. ─────────┼───────────┼────────0durchFALSEund1durchTRUEzu
  948. aXORb│6│0110ersetzensind.
  949.  
  950. ≡≡Konstante
  951.  
  952. Blau CRDunkelblau
  953. DunkelgelbDunkelgrauDunkelgrün
  954. DunkelkobaltDunkelrotDunkelviolett
  955. ESCEuler FALSE
  956. Gelb Grau Grün
  957. Kobalt
  958. LSTPi
  959. RotSchwarz    StrgBildAb2
  960. StrgBildAuf2TRUE Violett
  961. Weiß
  962.  
  963. ≡≡Blau
  964.  
  965. BlauisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchrift
  966. oderblaueGrafikerzeugt.IhrZahlenwertist9.
  967.  
  968. ≡≡CR
  969.  
  970. CRisteineCHAR-Konstante,derenWertbeimDrückenderRETURN-Taste
  971. andasProgrammübergebenwird.
  972.  
  973. ≡≡Dunkelblau
  974.  
  975. DunkelblauisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchrift
  976. oderdunkelblaueGrafikerzeugt.IhrZahlenwertist1.
  977.  
  978. ≡≡Dunkelgelb
  979.  
  980. DunkelgelbisteineINTEGER-Konstante,dieaufVGA-KartengelbeSchrift
  981. oderdunkelgelbeGrafikerzeugt.IhrZahlenwertist6.
  982.  
  983. ≡≡Dunkelgrau
  984.  
  985. DunkelgrauisteineINTEGER-Konstante,dieaufVGA-KartengraueSchrift
  986. oderdunkelgraueGrafikerzeugt.IhrZahlenwertist8.
  987.  
  988. ≡≡Dunkelgrün
  989.  
  990. DunkelgrünisteineINTEGER-Konstante,dieaufVGA-KartengrüneSchrift
  991. oderdunkelgrüneGrafikerzeugt.IhrZahlenwertist2.
  992.  
  993. ≡≡Dunkelkobalt
  994.  
  995. DunkelkobaltisteineINTEGER-Konstante,dieaufVGA-Kartenblaue
  996. SchriftoderdunkelblaueGrafikerzeugt.IhrZahlenwertist3.
  997.  
  998. ≡≡Dunkelrot
  999.  
  1000. DunkelrotisteineINTEGER-Konstante,dieaufVGA-KartenroteSchrift
  1001. oderdunkelroteGrafikerzeugt.IhrZahlenwertist4.
  1002.  
  1003. ≡≡Dunkelviolett
  1004.  
  1005. DunkelviolettisteineINTEGER-Konstante,dieaufVGA-Kartenviolette
  1006. SchriftoderdunkelvioletteGrafikerzeugt.IhrZahlenwertist5.
  1007.  
  1008. ≡≡ESC
  1009.  
  1010. ESCisteineCHAR-Konstante,derenWertbeimDrückenderESC-Tastean
  1011. dasProgrammübergebenwird.
  1012.  
  1013. ≡≡Euler
  1014.  
  1015. DieKonstanteEuleristdieEulerscheZahle=2.718281828...Die
  1016. AbkürzungekannfürdieEulerscheZahlnichtverwendetwerden,weil
  1017. einPASCALfürdieExponentialschreibweiseeinerreellenZahlverwendet
  1018. wird(z.B.5.4e-3).
  1019.  
  1020. ≡≡FALSE
  1021.  
  1022. FALSE(Falsch)istderWahrheitswerteinerAussage.FALSEkannnureiner
  1023. VariablendesTypsBOOLEANzugeordnetwerden.
  1024.  
  1025. Beispiel:
  1026. VAR
  1027. IstWahr:BOOLEAN;
  1028. BEGIN
  1029. IstWahr:=FALSE;
  1030. IFIstWahr=FALSETHENBEGINFürIstWahr=FALSEkannauch
  1031.  
  1032. TueDasEine;NOTIstWahrgeschriebenwerden.
  1033. END
  1034. ELSEBEGIN
  1035.  
  1036. TueDasAndere;
  1037. END;
  1038. END;
  1039.  
  1040. ≡≡Gelb
  1041.  
  1042. GelbisteineINTEGER-Konstante,dieaufVGA-KartengelbeSchriftoder
  1043. gelbeGrafikerzeugt.IhrZahlenwertist14.
  1044.  
  1045. ≡≡Grau
  1046.  
  1047. GrauisteineINTEGER-Konstante,dieaufVGA-KartengraueSchriftoder
  1048. graueGrafikerzeugt.IhrZahlenwertist7.
  1049. AufCGA-undHerkules-Kartenwirddaserreicht,indemniemalszwei
  1050. waagerechtodersenkrechtnebeneinanderliegendePunkteinderselben
  1051. Farbegezeichnetwerden.EinPunkthatjeweilsdieFarbeWeißund
  1052. seinevierNachbarnhabendieFarbeSchwarz.
  1053.  
  1054. ≡≡Grün
  1055.  
  1056. GrünisteineINTEGER-Konstante,dieaufVGA-KartengrüneSchriftoder
  1057. grüneGrafikerzeugt.IhrZahlenwertist10.
  1058.  
  1059. ≡≡Kobalt
  1060.  
  1061. KobaltisteineINTEGER-Konstante,dieaufVGA-KartenblaueSchriftoder
  1062. blaueGrafikerzeugt.IhrZahlenwertist11.
  1063.  
  1064. ≡≡LST
  1065.  
  1066. LSTisteineKonstantedesDateitypsTEXT.Siedientdazu,WRITE-
  1067. AnweisungenaufdenDruckerumzulenken.
  1068. InITG-PASCALkönnenstattdessenauchdieAnweisungenAusgabeAufDrucker
  1069. undAusgabeAufBildschirmzurUmlenkungderAusgabeverwendetwerden.
  1070. DadurchkönnenimUnterschiedzuTURBO-PASCALmitderselbenAnweisungs-
  1071. folgeInformationensowohlaufdenBildschirmalsauchaufdenDrucker
  1072. ausgegebenwerden.
  1073.  
  1074.  
  1075. Beispiele:
  1076. TURBO-PASCALundITG-PASCAL:
  1077.     WriteLn(LST,'DieserTexterscheintaufdemDrucker.');
  1078. WriteLn('DieserTexterscheintaufdemBildschirm.');
  1079.  
  1080. alternativinITG-PASCAL:
  1081. AusgabeAufDrucker;
  1082. WriteLn("DieserTexterscheintaufdemDrucker.");
  1083. AusgabeAufBildschirm;
  1084. WriteLn("DieserTexterscheintaufdemBildschirm.");
  1085.  
  1086. ≡≡Pi
  1087.  
  1088. DieKonstantePIistdieKreiszahlπ=3.141592654...
  1089.  
  1090.  
  1091. ≡≡Rot
  1092.  
  1093. RotisteineINTEGER-Konstante,dieaufVGA-KartenroteSchriftoder
  1094. roteGrafikerzeugt.IhrZahlenwertist12.
  1095.  
  1096. ≡≡Schwarz
  1097.  
  1098. SchwarzisteineINTEGER-Konstante,dieaufCGA-,Herkules-undVGA-
  1099. KartenschwarzeSchriftoderschwarzeGrafikerzeugt.IhrZahlenwert
  1100. ist0.
  1101.  
  1102. ≡≡StrgBildAb2
  1103.  
  1104. StrgBildAb2isteineCHAR-Konstante,derenWertbeimDrückender
  1105. TastenkombinationStrg-Bild-Ab(Ctrl-PgDn)alszweitesZeichenandas
  1106. Programmübergebenwird.MitdieserTastenkombinationkanndieProzedur
  1107. LiesEingabenbeendetwerden,umaufdenfolgendenDatensatzzuwechseln.
  1108.  
  1109. Beispiel:
  1110. TYPE
  1111. EinEintrag=RECORD
  1112.  
  1113. Nachname,Vorname,Ort,Straße:STRING[20];
  1114.  
  1115. Plz,HausNr,Vorwahl,TelNr:LONGINT;
  1116. END;
  1117. CONST
  1118. Anzahl=3;
  1119. VAR
  1120. TelefonListe:ARRAY[1..Anzahl]OFEinEintrag;
  1121. n:INTEGER;
  1122.  
  1123.  
  1124. BEGIN
  1125. n:=1;
  1126. REPEAT
  1127.  
  1128. WITHTelefonListe[n]DOBEGIN
  1129. EingabeFeld(1,3,"Name:",Nachname);
  1130. EingabeFeld(1,4,"Vorname:",Vorname);
  1131. EingabeFeld(1,5,"Plz:",Plz);
  1132. EingabeFeld(25,5,"Ort:",Ort);
  1133. EingabeFeld(1,6,"Straße:",Straße);
  1134. EingabeFeld(35,6,"Nr.:",HausNr);
  1135. EingabeFeld(1,7,"Vorwahl:",Vorwahl);
  1136. EingabeFeld(30,7,"Telefon-Nr:",TelNr);
  1137. LiesEingaben;
  1138.  
  1139. END;
  1140.  
  1141.  
  1142.  
  1143. CASELetzteTasteOF
  1144. CR,StrgBildAb2:nächstenDatensatzbearbeiten
  1145. n:=n+1;
  1146. ESC:
  1147. n:=Anzahl+1;
  1148. StrgBildAuf2:
  1149. vorigenDatensatznocheinmal
  1150. IFn>1THENBEGINbearbeiten
  1151. n:=n-1;
  1152. END;
  1153.  
  1154. END;
  1155. UNTILn>Anzahl;
  1156. END;
  1157.  
  1158. ≡≡StrgBildAuf2
  1159.  
  1160. StrgBildAuf2isteineCHAR-Konstante,derenWertbeimDrückender
  1161. TastenkombinationStrg-Bild-Auf(Ctrl-PgUp)alszweitesZeichenandas
  1162. Programmübergebenwird.MitdieserTastenkombinationkanndieProzedur
  1163. LiesEingabenbeendetwerden,umaufdenvorangegangenenDatensatzzu
  1164. wechseln.
  1165.  
  1166. Beispiel:
  1167. TYPE
  1168. EinEintrag=RECORD
  1169.  
  1170. Nachname,Vorname,Ort,Straße:STRING[20];
  1171.  
  1172. Plz,HausNr,Vorwahl,TelNr:LONGINT;
  1173. END;
  1174. CONST
  1175. Anzahl=3;
  1176. VAR
  1177. TelefonListe:ARRAY[1..Anzahl]OFEinEintrag;
  1178. n:INTEGER;
  1179.  
  1180.  
  1181. BEGIN
  1182. n:=1;
  1183. REPEAT
  1184.  
  1185. WITHTelefonListe[n]DOBEGIN
  1186. EingabeFeld(1,3,"Name:",Nachname);
  1187. EingabeFeld(1,4,"Vorname:",Vorname);
  1188. EingabeFeld(1,5,"Plz:",Plz);
  1189. EingabeFeld(25,5,"Ort:",Ort);
  1190. EingabeFeld(1,6,"Straße:",Straße);
  1191. EingabeFeld(35,6,"Nr.:",HausNr);
  1192. EingabeFeld(1,7,"Vorwahl:",Vorwahl);
  1193. EingabeFeld(30,7,"Telefon-Nr:",TelNr);
  1194. LiesEingaben;
  1195.  
  1196. END;
  1197.  
  1198.  
  1199.  
  1200. CASELetzteTasteOF
  1201. CR,StrgBildAb2:nächstenDatensatzbearbeiten
  1202. n:=n+1;
  1203. ESC:
  1204. n:=Anzahl+1;
  1205. StrgBildAuf2:
  1206. vorigenDatensatznocheinmal
  1207. IFn>1THENBEGINbearbeiten
  1208. n:=n-1;
  1209. END;
  1210.  
  1211. END;
  1212. UNTILn>Anzahl;
  1213. END;
  1214.  
  1215. ≡≡TRUE
  1216.  
  1217. TRUE(Wahr)istderWahrheitswerteinerAussage.TRUEkannnureiner
  1218. VariablendesTypsBOOLEANzugeordnetwerden.
  1219.  
  1220. Beispiel:
  1221. VAR
  1222. IstWahr:BOOLEAN;
  1223. BEGIN
  1224. IstWahr:=TRUE;
  1225. IFIstWahr=TRUETHENBEGIN    FürIstWahr=TRUEkannauch
  1226.     TueDasEine;            IstWahrgeschriebenwerden.
  1227. END
  1228. ELSEBEGIN
  1229.  
  1230. TueDasAndere;
  1231. END;
  1232. END;
  1233.  
  1234. ≡≡Violett
  1235.  
  1236. ViolettisteineINTEGER-Konstante,dieaufVGA-KartenvioletteSchrift
  1237. odervioletteGrafikerzeugt.IhrZahlenwertist13.
  1238.  
  1239. ≡≡Weiß
  1240.  
  1241. WeißisteineINTEGER-Konstante,dieaufCGA-,Herkules-undVGA-Karten
  1242. weißeSchriftoderweißeGrafikerzeugt.IhrZahlenwertist15.
  1243.  
  1244. ≡≡Typen
  1245.  
  1246. CHARSTRINGBOOLEANBYTEINTEGER
  1247. WORDLONGINTREALDOUBLEEXTENDED
  1248. FILE TEXTSIGNAL
  1249.  
  1250. ITG-PASCALunterscheidetnur8verschiedeneDatentypenvoneinander.
  1251. 1)CHAR:einzelnerBuchstabe
  1252. 2)STRING:Zeichenkette,eineAneinanderfügungvonBuchstaben
  1253. 3)BOOLEAN:Aussagetyp,WAHRoderFALSCH
  1254. 4)LONGINT:ganzeZahlenimBereichvon-2147483648bis2147483647
  1255. 5)EXTENDED:DezimalzahlenmiteinemBetragvon3.4*10^-4932bis
  1256. 1,1*10^4932
  1257. 6)FILE:Datei-VariablebeliebigenTyps
  1258. 7) TEXT:Datei-VariablefürStrings(Zeichenketten)
  1259. 8)SIGNAL:SynchronisationvonProzessen
  1260.  
  1261. ≡≡CHAR
  1262.  
  1263. CHAR:einzelnerBuchstabe
  1264.  
  1265. Beispiel:
  1266. VAR
  1267. c:CHAR;Deklaration
  1268. BEGIN
  1269. c:="b";erlaubteZuweisung,chatjetztdenWert"b"
  1270. c:="ABC";falsch!ckannnurEINENBuchstabenaufnehmen
  1271. c:=65;falsch!ckannkeineZahlenwerteannehmen
  1272. c:=CHR(65);cwirdderWert"A"zugewiesen
  1273. .(65.BuchstabederASCII-Tabelle)
  1274. .
  1275. END;
  1276.  
  1277. ≡≡STRING
  1278.  
  1279. STRING:Zeichenkette,eineAneinanderfügungvonBuchstaben
  1280. BeiderDeklarationsolltediebenötigteZeichenzahl
  1281. angegebenwerden,weilalleREAD-Anweisungenein
  1282. EingabefensterentsprechendderDeklarationslänge
  1283. öffnen.
  1284.  
  1285. Deklarations-Beispiele:
  1286. s255:STRING;255Zeichen
  1287. s10:STRING[10];10Zeichen
  1288. s:STRING[Max];mit1<=Max<=255
  1289. ≡≡BOOLEAN
  1290.  
  1291. BOOLEAN:Aussagetyp,WAHRoderFALSCH
  1292.  
  1293. ≡≡BYTE
  1294.  
  1295. sieheLONGINT
  1296.  
  1297. ≡≡INTEGER
  1298.  
  1299. sieheLONGINT
  1300.  
  1301. ≡≡WORD
  1302.  
  1303. sieheLONGINT
  1304.  
  1305. ≡≡LONGINT
  1306.  
  1307. LONGINT:ganzeZahlenimBereichvon-2147483648bis2147483647
  1308. DieDatentypenBYTE,INTEGERundWORDwerdenintern
  1309. imDatenformatLONGINTverwaltetundkönnendeshalb
  1310. WerteindemselbenBereichwieLONGINT-Variablen
  1311. annehmen.
  1312.  
  1313. ≡≡REAL
  1314.  
  1315. sieheEXTENDED
  1316.  
  1317. ≡≡DOUBLE
  1318.  
  1319. sieheEXTENDED
  1320.  
  1321. ≡≡EXTENDED
  1322.  
  1323. EXTENDED:DezimalzahlenmiteinemBetragvon3.4*10^-4932bis
  1324. 1.1*10^4932miteinerGenauigkeitvon19bis20Stellen
  1325. DieDatentypenREALundDOUBLEwerdeninternim
  1326. DatenformatEXTENDEDverwaltetundkönnendeshalb
  1327. WerteindemselbenBereichwieEXTENDED-Variablen
  1328. annehmen.
  1329.  
  1330. ≡≡FILE
  1331.  
  1332. FILE:Datei-VariablebeliebigenTyps
  1333. ImUnterschiedzuTURBO-PASCALkönneneinerDatei-
  1334. VariablenbeliebigeDatentypenaußerFILE-und TEXT-
  1335. Typenzugeordnetwerden,ohnedaßeinespezielle
  1336. Deklarationerfolgenmuß.AufdieseWeisekönnenin
  1337. einerDateibeliebigvieleVariablennacheinander
  1338. abgespeichertwerden.DieOperationenREADundWRITEin
  1339. ITG-PASCALentsprechendannBLOCKREADUNDBLOCKWRITEin
  1340. TURBO-PASCAL.DasLesenundSchreibentypisierterDateien
  1341. entsprichtdemvonTURBO-PASCAL.
  1342.  
  1343. ≡≡ TEXT
  1344.  
  1345. TEXT:Datei-VariablefürStrings(Zeichenketten)
  1346. InITG-PASCALkönnennurdieAnweisungen
  1347. READLN(TextDatei,Zeichenkette)und
  1348. WRITELN(TextDatei,Zeichenkette)verwendetwerden.
  1349. READ,WRITEundChar-Variablendürfennichtverwendet
  1350. werden.
  1351.  
  1352. ≡≡SIGNAL
  1353.  
  1354. SIGNAL:SynchronisationvonProzessen
  1355. WennzweiProzesse,diegleichzeitigausgeführtwerden,auf
  1356. ZwischenergebnissedesjeweilsanderenProzessesangewiesen
  1357. sind,kanneinerderProzessedurchWarteAufSignal(SignalVar)
  1358. zumWartenveranlaßtwerden,bisderandereProzeßdurch
  1359. SendeSignal(SignalVar)mitteilt,daßdieZwischenergebnisse
  1360. bereitgestelltsind.
  1361.  
  1362. ≡≡Igel-Grafik
  1363.  
  1364. DreheAuf GeheNach Hinten
  1365. IgelWinkel
  1366. IgelZeigen
  1367. LinkerBogen
  1368.  LinksMaßstabMitIgel
  1369. MitStift OhneIgel OhneStift
  1370. RechterBogen RechtsStiftFarbe
  1371. Ursprung VorneWoIgelX
  1372. WoIgelY
  1373.  
  1374. ≡≡DreheAuf
  1375.  
  1376. DreheAufrichtetdenIgelaufeinenabsolutenWinkelaus,der
  1377. vonderpositivenx-AchseausgegendenUhrzeigersinnim
  1378. mathematischpositivenUmlaufsinninWinkelgradgemessenwird.
  1379.  
  1380. Deklaration:
  1381. PROCEDUREDreheAuf(AbsoluterWinkel:REAL);
  1382.  
  1383. Beispiel:
  1384. DreheAuf(90);DerIgelzeigtnachoben.
  1385. DreheAuf(180);DerIgelzeigtnachlinks.
  1386. (Drehungum180°entgegendemUhrzeiger-
  1387. sinnvonderpositivenx-Achseaus)
  1388. DreheAuf(-180);AuchhierzeigtderIgelnachlinks.
  1389. (Drehungum180°imUhrzeigersinnvon
  1390. derpositivenx-Achseaus)
  1391.  
  1392. ≡≡GeheNach
  1393.  
  1394. DerIgelwirdinseinemKoordinatensystem,dessenUrsprungder
  1395. MittelpunktdesGrafikfenstersist,dessenpositivex-Achsenach
  1396. rechtsunddessenpositivey-Achsenachobenzeigt,zudenangegebenen
  1397. Koordinatenbewegt,ohnedaßerdabeizeichnet.
  1398. DieMaximalwertesindinx-Richtung-320und320undiny-Richtung-240
  1399. und240füralleGrafikkarten.
  1400. EsgibtzweiweitereKoordinatensystemefürGrafikohneIgel(s.auch
  1401. MoveTo,WeltGeheNach)undfürdenTextcursor(s.auchGotoXY).
  1402.  
  1403.  
  1404. Deklaration:
  1405. PROCEDUREGeheNach(xPos,yPos:INTEGER);
  1406.  
  1407. Beispiel:
  1408. GeheNach(0,0);bewegtdenIgelaufdenUrsprung
  1409. seinesKoordinatensystems.
  1410. GeheNach(200,100);bewegtdenIgelvomUrsprungseines
  1411. Koordinatensystemsausgesehenum
  1412. 200Schrittenachrechtsundum
  1413. 100nachoben.
  1414.  
  1415. ≡≡Hinten
  1416.  
  1417. DurchdieAnweisungHinten(x)wirdderIgelxSchritte
  1418. rückwärtsbewegt.WenndieBewegungmitStifterfolgt,
  1419. istseineSpuranschließendsichtbar.
  1420.  
  1421. Deklaration:
  1422. PROCEDUREHinten(Schritte:REAL);
  1423.  
  1424. Beispiel:
  1425. Hinten(50);bewegtdenIgel50Schritterückwärts.
  1426.  
  1427. ≡≡IgelWinkel
  1428.  
  1429. DieFunktionIgelWinkelliefertdenWinkelzwischender
  1430. Bewegungsrichtungvorwärtsundderpositivenx-Achseim
  1431. mathematischpositivenUmaufsinngemessen.
  1432.  
  1433. Deklaration:
  1434. FUNCTIONIgelWinkel:REAL;
  1435.  
  1436. Beispiel:
  1437. DreheAuf(100);
  1438. Write(IgelWinkel);drucktdenWert100fürden
  1439. Winkelaus.
  1440.  
  1441. ≡≡IgelZeigen
  1442.  
  1443. DieFunktionIgelZeigenergibtdenWertwahr(TRUE),wennder
  1444. IgelnachjederIgelbewegunggezeichnetwerdensoll.
  1445. AndernfallsergibtsiedenWertfalsch(FALSE).
  1446.  
  1447. Deklaration:
  1448. FUNCTIONIgelZeigen:BOOLEAN;
  1449.  
  1450. Beispiel:
  1451. MitIgel;
  1452. Write(IgelZeigen);drucktTRUE,
  1453. OhneIgel;
  1454. Write(IgelZeigen);drucktFALSEaus.
  1455.  
  1456. ≡≡LinkerBogen
  1457.  
  1458. MitLinkerBogenbeschreibtderIgeleinen Bogenvonseiner
  1459. augenblicklichenPositionundRichtungausnachlinksund
  1460. hinterläßtdabeieineSpur,wenndieBewegungmitStift
  1461. erfolgt.
  1462.  
  1463. Deklaration:
  1464. PROCEDURELinkerBogen(Radius,Winkel:REAL);
  1465.  
  1466. Beispiel:
  1467. LinkerBogen(100,45);DerIgelbeschreibteinen Bogennach
  1468. linksmiteinemRadiusvon100
  1469. SchrittenundeinemWinkelvon45°.
  1470.  
  1471. ≡≡ Links
  1472.  
  1473. Links(x)veranlaßtdenIgel,sichausseiner
  1474. augenblicklichenRichtungumxGradnachlinks
  1475. zudrehen.
  1476.  
  1477. Deklaration:
  1478. PROCEDURELinks(Winkel:REAL);
  1479.  
  1480. Beispiel:
  1481. DreheAuf(0);DerIgelzeigtnachrechts.
  1482. Links(90);DerIgelzeigtnachoben.
  1483.  
  1484. ≡≡Maßstab
  1485.  
  1486. MitderAnweisungMaßstabwirdfestgelegt,mitwelchemFaktor
  1487. dieinGeheNach,VorneundHintenübergebenenWertemultipli-
  1488. ziertwerden.
  1489. Damitistesz.B.möglich,imHefteinDreieckzukonstruieren
  1490. unddenIgeldiesesDreieckaufdemBildschirmzeichnenzulassen,
  1491. ohnejedeeinzelneStreckeandieSchrittzahlaufdemBildschirm
  1492. anzupassen.
  1493.  
  1494. Deklaration:
  1495. PROCEDUREMaßstab(MaßstabsFaktor:REAL);
  1496.  
  1497. Beispiel:
  1498. Maßstab(1);
  1499. Vorne(100);Igel1*100Schrittevorwärtsbewegen
  1500. Maßstab(50);
  1501. Vorne(1.5);Igelum1.5*50=75Schrittevorwärtsbewegen
  1502.  
  1503. ≡≡MitIgel
  1504.  
  1505. NachderAnweisungMitIgelistderIgelsichtbarundwird
  1506. jeweilsnacheinerBewegungneugezeichnetbisdieAnweisung
  1507. OhneIgelausgeführtwird.DurchdieFunktionIgelZeigenläßt
  1508. sichfeststellen,obderIgelgezeigtwird.
  1509.  
  1510. Deklaration:
  1511. PROCEDUREMitIgel;
  1512.  
  1513. Beispiel:
  1514. MitIgel;Igelzeigen.
  1515. Vorne(100);Igelwegwischen,100Schrittevorwärtsbewegen
  1516. undneuzeichnen.
  1517. OhneIgel;Igelwegwischenundnichtwiederneuzeichnen.
  1518. Vorne(100);Igelum100Schrittevorwärtsbewegen,ohneihn
  1519. zuzeichnen.EsistnurseineSpursichtbar.
  1520.  
  1521. ≡≡MitStift
  1522.  
  1523. DurchMitStiftwirdfestgelegt,daßdieSpurdesIgelsgezeichnet
  1524. werdensoll.
  1525.  
  1526. Deklaration:
  1527. PROCEDUREMitStift;
  1528.  
  1529. Beispiel:
  1530. OhneIgel;Igelnichtzeigen.
  1531. MitStift;Stiftabsenken.
  1532. Vorne(100);Igel100SchrittevorwärtsbewegenundseineSpur
  1533. zeichnen.
  1534. OhneStift;Stiftanheben.
  1535. Vorne(100);DerIgelhinterläßtkeineSpur.
  1536.  
  1537. ≡≡OhneIgel
  1538.  
  1539. NachderAnweisungOhneIgelistderIgelnichtsichtbar.Es
  1540. wirdaberseineSpurgezeichnet,wenndieBewegungmitStift
  1541. erfolgt.DurchdieFunktionIgelZeigenläßtsichfeststellen,
  1542. obderIgelgezeigtwird.
  1543.  
  1544. Deklaration:
  1545. PROCEDUREOhneIgel;
  1546.  
  1547. Beispiel:
  1548. MitIgel;Igelzeigen.
  1549. Vorne(100);Igelwegwischen,100Schrittevorwärtsbewegen
  1550. undneuzeichnen.
  1551. OhneIgel;Igelwegwischenundnichtwiederneuzeichnen.
  1552. Vorne(100);Igelum100Schrittevorwärtsbewegen,ohneihn
  1553. zuzeichnen.EsistnurseineSpursichtbar.
  1554.  
  1555. ≡≡OhneStift
  1556.  
  1557. DurchOhneStiftwirdfestgelegt,daßdieSpurdesIgelsnicht
  1558. gezeichnetwerdensoll.
  1559.  
  1560. Deklaration:
  1561. PROCEDUREOhneStift;
  1562.  
  1563. Beispiel:
  1564. OhneIgel;Igelnichtzeigen.
  1565. MitStift;Stiftabsenken.
  1566. Vorne(100);Igel100SchrittevorwärtsbewegenundseineSpur
  1567. zeichnen.
  1568. OhneStift;Stiftanheben.
  1569. Vorne(100);DerIgelhinterläßtkeineSpur.
  1570.  
  1571. ≡≡RechterBogen
  1572.  
  1573. MitRechterBogenbeschreibtderIgeleinen Bogenvonseiner
  1574. augenblicklichenPositionundRichtungausnachrechtsund
  1575. hinterläßtdabeieineSpur,wenndieBewegungmitStift
  1576. erfolgt.
  1577.  
  1578. Deklaration:
  1579. PROCEDURERechterBogen(Radius,Winkel:REAL);
  1580.  
  1581. Beispiel:
  1582. RechterBogen(100,45);DerIgelbeschreibteinen Bogennach
  1583. rechtsmiteinemRadiusvon100
  1584. SchrittenundeinemWinkelvon45°.
  1585.  
  1586. ≡≡ Rechts
  1587.  
  1588. Rechts(x)veranlaßtdenIgel,sichausseiner
  1589. augenblicklichenRichtungumxGradnachrechts
  1590. zudrehen.
  1591.  
  1592. Deklaration:
  1593. PROCEDURERechts(Winkel:REAL);
  1594.  
  1595. Beispiel:
  1596. DreheAuf(0);DerIgelzeigtnachrechts.
  1597. Rechts(90);DerIgelzeigtnachunten.
  1598.  
  1599. ≡≡Ursprung
  1600.  
  1601. DieAnweisungUrsprungentsprichtderAnweisungGeheNach(0,0)
  1602. undbewegtdenIgelzumUrsprungseinesKoordinatensystems.Er
  1603. zeigtdabeinachoben.SeinWinkelzurpositivenx-Achsebeträgt
  1604. dann90°.EineBeschreibungdesKoordinatensystemsistunter
  1605. GeheNachzufinden.
  1606.  
  1607. Deklaration:
  1608. PROCEDUREUrsprung;
  1609.  
  1610. Beispiel:
  1611. Ursprung;plaziertdenIgelmittenimGrafikfenster.
  1612.  
  1613. ≡≡Vorne
  1614.  
  1615. DurchdieAnweisungVorne(x)wirdderIgelxSchritte
  1616. vorwärtsbewegt.WenndieBewegungmitStifterfolgt,
  1617. istseineSpuranschließendsichtbar.
  1618.  
  1619. Deklaration:
  1620. PROCEDUREVorne(Schritte:REAL);
  1621.  
  1622. Beispiel:
  1623. Vorne(50);bewegtdenIgel50Schrittevorwärts.
  1624.  
  1625. ≡≡WoIgelX
  1626.  
  1627. DurchdieFunktionWoIgelXläßtsichdiex-Koordinatedes
  1628. AufenthaltsortesdesIgelsinseinemKoordinatensystem
  1629. feststellen.
  1630.  
  1631. Deklaration:
  1632. FUNCTIONWoIgelX:INTEGER;
  1633.  
  1634. Beispiel:
  1635. GeheNach(200,100);
  1636. Write(WoIgelX);drucktdenWert200.
  1637.  
  1638. ≡≡WoIgelY
  1639.  
  1640. DurchdieFunktionWoIgelYläßtsichdiey-Koordinatedes
  1641. AufenthaltsortesdesIgelsinseinemKoordinatensystem
  1642. feststellen.
  1643.  
  1644. Deklaration:
  1645. FUNCTIONWoIgelY:INTEGER;
  1646.  
  1647. Beispiel:
  1648. GeheNach(200,100);
  1649. Write(WoIgelY);drucktdenWert100.
  1650.  
  1651. ≡≡Standard-Grafik
  1652.  
  1653. CircleGetMaxXGetMaxY
  1654. GetXGetYLine
  1655. LineToMoveTo
  1656.  
  1657. ≡≡Circle
  1658.  
  1659. CirclezeichneteinenKreisaufdemBildschirm.DabeiCGA-und
  1660. Hercules-KartenderAbstandzweierbenachbarterBildpunkteinx-
  1661. undiny-Richtungverschiedenist,werdendiey-Koordinatenmit
  1662. einemKorrekturfaktormultipliziert.(s.auchyKorrekturFaktor)
  1663.  
  1664. Deklaration:
  1665. PROCEDURECircle(xm,ym,Radius);
  1666.  
  1667. Beispiel:
  1668. Circle(50,100,30);zeichneteinenKreismitdemMittelpunkt
  1669. M(50/100)unddemRadiusr=30,derinx-
  1670. Richtung30Bildpunktenentspricht.
  1671.  
  1672. ≡≡GetMaxX
  1673.  
  1674. GetMaxXgibtdieAnzahlderBildpunkteminuseinsinx-
  1675. RichtungaufdemGrafikschirman.ITG-PASCALverwendet
  1676. füralleGrafikkarteneinheitlich640Punkteinx-Richtung.
  1677.  
  1678. Deklaration:
  1679. FUNCTIONGetMaxX:INTEGER;
  1680.  
  1681. Beispiel:
  1682. Write(GetMaxX);druckt639=640-1füralleGrafik-
  1683. kartenaus.
  1684.  
  1685. ≡≡GetMaxY
  1686.  
  1687. GetMaxYgibtdieAnzahlderBildpunkteminuseinsiny-
  1688. RichtungaufdemGrafikschirman.
  1689.  
  1690. Deklaration:
  1691. FUNCTIONGetMaxY:INTEGER;
  1692.  
  1693. Beispiel:
  1694. Write(GetMaxY);druckt
  1695. 199=200-1fürCGA-Karten
  1696. 347=348-1fürHerculeskarten
  1697. 349=350-1fürEGA-Karten
  1698. 479=480-1fürVGA-Karten
  1699.  
  1700. ≡≡GetX
  1701.  
  1702. GetXliefertdiex-KoordinatedesGrafik-Cursorszurück.
  1703.  
  1704. Deklaration:
  1705. FUNCTIONGetX:INTEGER;
  1706.  
  1707. Beispiel:
  1708. MoveTo(100,50);
  1709. Write(GetX);druckt100aus.
  1710. LineTo(-200,40);
  1711. Write(GetX);druckt-200aus.
  1712.  
  1713. ≡≡GetY
  1714.  
  1715. GetYliefertdiey-KoordinatedesGrafik-Cursorszurück.
  1716.  
  1717. Deklaration:
  1718. FUNCTIONGetY:INTEGER;
  1719.  
  1720. Beispiel:
  1721. MoveTo(100,50);
  1722. Write(GetY);druckt50aus.
  1723. LineTo(-200,40);
  1724. Write(GetY);druckt40aus.
  1725.  
  1726. ≡≡Line
  1727.  
  1728. Line(x1,y1,x2,y2)zeichneteineStreckezwischenzweiPunkten
  1729. P1(x1/y1)undP2(x2/y2)aufdemGrafikschirm.DerUrsprungdes
  1730. KoordinatensystemsliegtinderMittedesBildschirmfensters.
  1731. DieLagedesGrafik-Cursorswirdnichtbeeinflußt.
  1732.  
  1733. Deklaration:
  1734. PROCEDURELine(x1,y1,x2,y2:INTEGER);
  1735.  
  1736. Beispiel:
  1737. Line(-100,-30,50,80);zeichnetdieStreckemitden
  1738. EndpunktenP1(-100/-30)und
  1739. P2(50/80).
  1740.  
  1741. ≡≡LineTo
  1742.  
  1743. LineTo(x,y)verbindetdenPunkt,aufdemsichderGrafik-
  1744. Cursorbefindet,mitdem PunktP(x/y).Anschließendwirdder
  1745. Grafik-CursoraufdenPunktP(x/y)gesetzt.(s.auchMoveTo)
  1746.  
  1747. Deklaration:
  1748. LineTo(x,y:INTEGER);
  1749.  
  1750. Beispiel:
  1751. MoveTo(-100,-30);setztdenGrafik-CursoraufP(-100/-30).
  1752. LineTo(50,80);verbindetP(-100/-30)mitQ(50/80)und
  1753. setztdenGrafik-CursoraufQ(50/80).
  1754. [ErgibtdasgleichewieLine(-100,-30,50,80)]
  1755. LineTo(0,70);verbindetQ(50/80)mitR(0/70).
  1756.  
  1757. ≡≡MoveTo
  1758.  
  1759. ITG-PASCALhatvierverschiedeneCursorfürText,Standard-Grafik,
  1760. Igel-GrafikundWeltkoordinaten.
  1761. MoveTobewegtdenGrafik-CursoraneineneuePosition.Esentspricht
  1762. denAnweisungenGeheNachfürdenIgelundGotoXYfürdenText-Cursor.
  1763.  
  1764. Deklaration:
  1765. MoveTo(x,y:INTEGER);
  1766.  
  1767. Beispiel:
  1768. MoveTo(-100,-30);setztdenGrafik-CursoraufP(-100/-30).
  1769. LineTo(50,80);verbindetP(-100/-30)mitQ(50/80)und
  1770. setztdenGrafik-CursoraufQ(50/80).
  1771. MoveTo(-15,-45);setztdenGrafik-CursoraufR(-15/-45).
  1772. LineTo(0,70);verbindetR(-15/-45)mitS(0/70).
  1773.  
  1774. ≡≡ITG-Pascal-Grafik
  1775.  
  1776.  BogenDefiniereWelt    DruckeBildschirm
  1777. FärbenFunktionsGraf    FunktionstermFehler
  1778. GrafGotoXY GrafikFenster    GrafikKorrekturAus
  1779. GrafikKorrekturEinGrafikSchirm
  1780. GrafWrite
  1781. KreisMitWeltRaster    OhneweltRaster
  1782. PapierFarbe  PunktSetzeFontWerte
  1783. StiftFarbe StreckeTextSchirm
  1784. WähleFontWeltGeheNach
  1785. WeltPunkt
  1786. WeltStrecke WeltStreckeNachWischen
  1787. WoGrafikXWoGrafikYyKorrekturFaktor
  1788.  
  1789. ≡≡ Bogen
  1790.  
  1791. MitBogenwirdeinKreisbogengezeichnet.
  1792.  
  1793. Deklaration:
  1794. PROCEDUREBogen(xm,ym,Radius,AnfangsWinkel,DrehWinkel:INTEGER);
  1795.  
  1796. Beispiel:
  1797. Bogen(0,0,100,45,90);zeichneteinenBogen,deraufeinemKreis
  1798. mitdemMittelpunktM(0/0)liegtunddes-
  1799. senRadiusr=100ist,beginnendbeidem
  1800. Winkelα=45°zurpositivenx-Achse,wobei
  1801. dasEndedesBogensbeiß=45°+90°=135°
  1802. liegt.
  1803.  
  1804. ≡≡DefiniereWelt
  1805.  
  1806. MitDefiniereWeltwirdeinKoordinatensystemgezeichnet,indemmitden
  1807. Welt-ProzedurenWeltPunkt,WeltStrecke,WeltGeheNachundWeltStreckeNach
  1808. orientiertandenKoordinatendesSystemsgezeichnetwird.Diegeforder-
  1809. tenGrenzendesSystemswerdenalsMinimumangesehen.ITG-PASCALzeichnet
  1810. daskleinsteKoordinatensystem,dasgrößeristalsdasgeforderte,wobei
  1811. daraufgeachtetwird,daßderRasterabstandaufdenAchsengleichmäßig
  1812. ist.AufCGA-,Herkules-undEGA-KartenmußdazuvorherderSchalter
  1813. yKorrekturAusgesetztwerden.AndernfallsergibtsichfürdasRasterin
  1814. y-RichtungkeinegleichmäßigeEinteilung.WennkeinRastergezeichnet
  1815. werdensoll,istVORHERdieAnweisungOhneWeltRasterauszuführen.
  1816.  
  1817. Deklaration:
  1818. PROCEDUREDefiniereWelt(LinkeGrenze,UntereGrenze,RechteGrenze,
  1819. ObereGrenze:REAL);
  1820.  
  1821. Beispiel:
  1822.  
  1823.  
  1824. yKorrekturAus;gleichmäßigesRaster
  1825. MitWeltRaster;Punktrasterzeichnen,wenneine
  1826.  Weltdefiniertwird
  1827. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  1828.  -5,0<=x<=10,0und
  1829.  -2,5<=y<=4,5definieren
  1830.  undzeichnen
  1831. WeltStrecke(-3,-2.2,7.3,3.4);StreckemitdenEndpunkten
  1832.  P(-3/-2,2)undQ(7,3/3,4)zeichnen
  1833.  
  1834. ≡≡DruckeBildschirm
  1835.  
  1836. MitDruckeBildschirmwirdderInhaltdesBildschirmsowohlimTextmodus
  1837. alsauchimGrafikmodusmitdemDruckergedruckt.WeilbeieinemDrucker
  1838. dasLängenverhältnisvonStreckeninx-undy-Richtungandersistals
  1839. aufdemBildschirm,erscheinenKreisealsEllipsenundQuadrateals
  1840. Rechtecke.
  1841.  
  1842. Deklaration:
  1843. PROCEDUREDruckeBildschirm;
  1844.  
  1845. Beispiel:
  1846. GrafikSchirm;
  1847. ZeichneIrgendetwas;HierkanneinebeliebigeZeichnungerstellt
  1848. werden.
  1849. DruckeBildschirm;DieZeichnungwirdgedruckt.
  1850. TextSchirm;
  1851. SchreibeIrgendetwas;HierkannbelieberTextgeschriebenwerden.
  1852. DruckeBildschirm;DerTextwirdgedruckt.
  1853.  
  1854. ≡≡Färben
  1855.  
  1856. Färben(x,y,Farbe)färbteinenBereichbeginnendim PunktP(x/y)in
  1857. derFarbeFarbeein,dervoneinerLiniebegrenztist,dienicht
  1858. diePapierfarbehat.AlsFarbensindschwarz,grauundweiß
  1859. zugelassen.
  1860.  
  1861. Deklaration:
  1862. PROCEDUREFärben(x,y,Farbe:INTEGER);
  1863.  
  1864. Beispiel:
  1865.  
  1866.  
  1867. PapierFarbe(Schwarz);
  1868. StiftFarbe(Weiß);
  1869. Kreis(100,50,30);
  1870. Färben(100,50,Grau);WeilderPunktP(100/50)innerhalbdes
  1871. Kreisesliegt,wirdderKreisgrauausge-
  1872. füllt.FüreinenPunktaufdemKreis
  1873. geschiehtnichts,füreinenPunktaußerhalb
  1874. desKreiseswirdderBereichaußerhalbgrau
  1875. gefärbt.
  1876.  
  1877. ≡≡FunktionsGraf
  1878.  
  1879. FunktionsGrafzeichnetdenGrafeneinerFunktioninnerhalbderangegebenen
  1880. Grenzen.Dabeiwirdversucht,einegleichmäßigeEinteilungderAchsenzu
  1881. erhalten.DertatsächlichgezeichneteAusschnittistetwasgrößerals
  1882. angegeben.ZumZeichnenwirdeinVerfahrenbenutzt,dasproBildpunktzwei
  1883. bisdreiFunktionswerteberechnet,damitauchinungünstigenFällen
  1884. einvernünftigerFunktionsgrafentsteht.
  1885.  
  1886. ACHTUNG:DieunabhängigeVariableistmit"x"festgelegt!
  1887.  
  1888. Deklaration:
  1889. PROCEDUREFunktionsGraf(FunktionsTerm:STRING;
  1890. LinkeGrenze,UntereGrenze,RechteGrenze,
  1891. ObereGrenze:REAL);
  1892.  
  1893. Beispiel:
  1894.  
  1895.  
  1896. GrafikKorrekturAus;gleichmäßigesRasterin
  1897. y-Richtung
  1898. FunktionsGraf("sin(x)",-5,-1.5,5,1.5);GrafderSinus-Funktion
  1899. für-5<=x<=5und
  1900. -1.5<=y<=1.5
  1901.  
  1902. FunktionsGraf("sin(2x)",-5,-2,5,2);richtig:2*x!
  1903. Write(FunktionstermFehler);ergibtdenWert6,weil
  1904. das6.Zeichenfehler-
  1905. haftist.
  1906.  
  1907. ≡≡FunktionstermFehler
  1908.  
  1909. WenndenProzedurenFunktionsGrafoderDefiniereFunktionstermein
  1910. fehlerhafterFunktionstermübergebenwurde,ergibtdieFunktion
  1911. FunktionstermFehlerdieStelle,anderderFehlerauftrat,ansonsten
  1912. ergibtsieNull.
  1913.  
  1914. Deklaration:
  1915. FUNCTIONFunktionstermFehler:INTEGER;
  1916.  
  1917. Beispiel:
  1918. FunktionsGraf("sin(2x)",-5,-2,5,2);richtig:2*x!
  1919. Write(FunktionstermFehler);ergibtdenWert6,weildas
  1920. 6.Zeichenfehlerhaftist.
  1921.  
  1922. ≡≡GrafGotoXY
  1923.  
  1924. GrafGotoXY(x,y)setztdenGrafikcursoraufden PunktP(x/y).Fürdie
  1925. KoordinatengeltendieWertedesKoordinatensystemsimGrafikmodus.
  1926. DerMittelpunktdesBildschirmshatdieKoordinaten(0/0).Diex-Werte
  1927. nehmennachrechtsbis320,nachlinksbis-320zu,diey-Wertenachoben
  1928. jenachGrafikkartebis240,nachuntenbis-240.
  1929.  
  1930. Deklaration:
  1931. PROCEDUREGrafGotoXY(x,y:WORD);
  1932.  
  1933. Beispiel:
  1934. GrafGotoXY(0,0);linkerobererEckpunkt
  1935. GrafGotoXY(-320,240);linkerobererEckpunkt
  1936.  
  1937. ≡≡GrafikFenster
  1938.  
  1939. WennnureinbestimmterBereichdesGrafikschirmsfüreineZeichnung
  1940. verwendetwerdensoll,kannderübrigeBereichgesperrtwerden.Dazu
  1941. dientdieAnweisungGrafikFenster(x1,y1,x2,y2),mitdereinRechteck
  1942. mitbildschirmparallelenSeitenmitdemlinkenoberenEckpunktP(x1/y1)
  1943. unddemrechtenunterenEckpunktQ(x2/y2)alsZeichenflächedefiniert
  1944. wird.DerUrsprungdesKoordinatensystemsliegtinnerhalbdieses
  1945. FenstersautomatischimMittelpunktdesFensters.
  1946.  
  1947. Deklaration:
  1948. GrafikFenster(x1,y1,x2,y2:INTEGER);
  1949.  
  1950.  
  1951. Beispiel:
  1952. GrafikFenster(50,20,500,220);öffneteinFenstermitx-Werten
  1953.     zwischen-225und225undy-Werten
  1954.     zwischen-100und100.Dielinke
  1955.     obereEckeistinx-Richtung50
  1956.     Punkte,iny-Richtung20Punktevon
  1957.     demlinkenoberenEckpunktdes
  1958.     Bildschirmsentfernt.
  1959.  
  1960. ≡≡GrafikKorrekturAus
  1961.  
  1962. GrafikKorrekturAusbewirkt,daßPunkt-undStrecken-Zeichnungennicht
  1963. mehrdenBildschirmverzerrungenbeiCGA-,Hercules-undEGA-Karten
  1964. angepaßtwerden.Deshalbstimmendiey-KoordinatenfürStandardgrafik
  1965. undfürIgelgrafikbeiausgeschalteterKoorekturnichtmehrüberein.
  1966.  
  1967. Deklaration:
  1968. PROCEDUREGrafikKorrekturAus;
  1969.  
  1970. Beispiel:
  1971.  
  1972.  
  1973. GrafikKorrekturEin;    Korrekturiny-Richtungeinschalten
  1974. Circle(-105,0,100);Kreisschlagen
  1975. Line(-105,0,-105,100);StreckevomKreismittelpunktsenkrecht
  1976. nachobenzeichnen.WegenderKorrektur
  1977. endetsieaufderKreislinie.
  1978. GrafikKorrekturAus;    Korrekturiny-Richtungausschalten
  1979. Circle(105,0,100);Kreisschlagen
  1980. Line(105,0,105,100);StreckevomKreismittelpunktsenkrecht
  1981. nachobenzeichnen.Wegenderausge-
  1982. schaltetenKorrekturendetsienicht
  1983. aufderKreislinie.
  1984.  
  1985. ≡≡GrafikKorrekturEin
  1986.  
  1987. GrafikKorrekturEinbewirkt,daßPunkt-undStrecken-Zeichnungen
  1988. denBildschirmverzerrungenangepaßtwerden.Deshalbstimmendie
  1989. y-KoordinatenfürStandardgrafikundfürIgelgrafikjetztbeiallen
  1990. Grafikkartenüberein.
  1991.  
  1992. Deklaration:
  1993. PROCEDUREGrafikKorrekturEin;
  1994.  
  1995. Beispiel:
  1996.  
  1997.  
  1998. GrafikKorrekturEin;    Korrekturiny-Richtungeinschalten
  1999. Circle(-105,0,100);Kreisschlagen
  2000. Line(-105,0,-105,100);StreckevomKreismittelpunktsenkrecht
  2001. nachobenzeichnen.WegenderKorrektur
  2002. endetsieaufderKreislinie.
  2003. GrafikKorrekturAus;    Korrekturiny-Richtungausschalten
  2004. Circle(105,0,100);Kreisschlagen
  2005. Line(105,0,105,100);StreckevomKreismittelpunktsenkrecht
  2006. nachobenzeichnen.Wegenderausge-
  2007. schaltetenKorrekturendetsienicht
  2008. aufderKreislinie.
  2009.  
  2010. ≡≡GrafikSchirm
  2011.  
  2012. MitderAnweisungGrafikSchirmwirdausdemTextmodusindenGrafik-
  2013. modusgewechselt.ITG-PASCALerkenntdievorhandeneGrafikkarte
  2014. automatisch.GrafikanweisungenwerdennurimGrafikmodusausgeführt,
  2015. sonstbrichtdasProgrammmitderFehlermeldung"Programmwegen
  2016. GrafikanweisungimTextmodusinZeilexxxbeendet."ab.
  2017.  
  2018. Deklaration:
  2019. PROCEDUREGrafikSchirm;
  2020.  
  2021. Beispiel:
  2022.  
  2023.  
  2024. GrafikSchirm;ZeichnenimGrafikmodusermöglichen.
  2025. Strecke(0,0,100,100);EineStreckewirdgezeichnet.
  2026. WriteLn("imGrafikmodus");AufdemGrafikschirmwird
  2027. "imGrafikmodus"gedruckt.
  2028. TextSchirm;ZurückindenTextmodus.
  2029. WriteLn("imTextmodus");AufdemTextschirmwird"imTextmodus"
  2030. gedruckt.DieTextausgabeerfolgthier
  2031. wesentlichschnelleralsimGrafikmodus.
  2032.  
  2033. ≡≡GrafWrite
  2034.  
  2035. MitGrafWriteerfolgtdieTextausgabeaufdemGrafikschirmandenmit
  2036. GrafGotoXYdefiniertenKoordinatendesGrafikschirms.Esgeltendie
  2037. selbenBedingungenwiebeiderWrite-AnweisungimTextmodus.
  2038. ACHTUNG:VordererstenVerwendungvonGrafWritemußmit"WähleFont"
  2039. ========einZeichensatzgeladenwerden,sonstbrichtdasProgramm
  2040. miteinerFehlermeldungab.
  2041.  
  2042. Deklaration:
  2043. PROCEDUREGrafWrite(v:VariableBeliebigenTyps);
  2044.  
  2045. Beispiel:
  2046.  
  2047.  
  2048. GrafikSchirm;SchreibenimGrafikmodusermöglichen.
  2049. WähleFont("LITT");    Zeichensatzladen
  2050. SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
  2051. GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
  2052.  
  2053. ≡≡Kreis
  2054.  
  2055. KreiszeichneteinenKreisaufdemBildschirm.DabeiCGA-,Hercules-
  2056. undEGA-KartenderAbstandzweierbenachbarterBildpunkteinx-
  2057. undiny-Richtungverschiedenist,werdendiey-Koordinatenmit
  2058. einemKorrekturfaktormultipliziert.(s.auchyKorrekturFaktor)
  2059.  
  2060. Deklaration:
  2061. PROCEDUREKreis(xm,ym,Radius);
  2062.  
  2063. Beispiel:
  2064. Kreis(50,100,30);zeichneteinenKreismitdemMittelpunkt
  2065. M(50/100)unddemRadiusr=30,derinx-
  2066. Richtung30Bildpunktenentspricht.
  2067.  
  2068. ≡≡MitWeltRaster
  2069.  
  2070. MitWeltRasterbewirkt,daßindemmitDefiniereweltdefinierten
  2071. KoordinatensystemeinPunktrastergezeichnetwird.DasRasterkann
  2072. vorderDefinitionderWeltmitOhneWeltRasterunterdrücktwerden.
  2073. StandardeinstellungistMitWeltRaster.
  2074.  
  2075. Deklaration:
  2076. PROCEDUREMitWeltRaster;
  2077.  
  2078. Beispiel:
  2079. yKorrekturAus;gleichmäßigesRaster
  2080. MitWeltRaster;einPunktrasterzeichnen,wenn
  2081.  eineWeltdefiniertwird
  2082. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2083.  -5,0<=x<=10,0und
  2084.  -2,5<=y<=4,5definieren
  2085.  undzeichnen
  2086.  
  2087. ≡≡OhneWeltRaster
  2088.  
  2089. OhneWeltRasterbewirkt,daßindemmitDefiniereweltdefinierten
  2090. KoordinatensystemkeinPunktrastergezeichnetwird.
  2091. StandardeinstellungistMitWeltRaster.
  2092.  
  2093. Deklaration:
  2094. PROCEDUREOhneWeltRaster;
  2095.  
  2096. Beispiel:
  2097. yKorrekturAus;gleichmäßigesRaster
  2098. OhneWeltRaster;keinPunktrasterzeichnen,wenn
  2099.  eineWeltdefiniertwird
  2100. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2101.  -5,0<=x<=10,0und
  2102.  -2,5<=y<=4,5definieren
  2103.  undzeichnen
  2104.  
  2105. ≡≡PapierFarbe
  2106.  
  2107. MitPapierFarbewirddieFarbedesHintergrundesfüralleGrafikanwei-
  2108. sungenfestgesetzt.DerHintergrundwirdabererstdurchdieAnweisung
  2109. WischenindergewähltenFarbedargestellt.ZurVerfügungstehendie
  2110. FarbenSchwarz,GrauundWeiß.AndereWertesindnichtzugelassen.
  2111.  
  2112. Deklaration:
  2113. PROCEDUREPapierFarbe(Farbe:INTEGER);
  2114.  
  2115. Beispiel:
  2116. PapierFarbe(Schwarz);
  2117. Wischen;DerHintergrunderscheintschwarz.
  2118. PapierFarbe(Grau);
  2119. Wischen;DerHintergrunderscheintgrau.
  2120. PapierFarbe(Weiß);
  2121. Wischen;DerHintergrunderscheintweiß.
  2122.  
  2123. ≡≡ Punkt
  2124.  
  2125. MitderAnweisungPunkt(x,y)wirdderPunktP(x/y)aufdem
  2126. Grafikschirmgezeichnet.DerUrsprungdesAchsenkreuzesliegt
  2127. inderMittedesGrafikfensters.
  2128.  
  2129. Deklaration:
  2130. PROCEDUREPunkt(x,y:INTEGER);
  2131.  
  2132. Beispiel:
  2133. Punkt(100,50);zeichnetdenPunktP(100/50).
  2134.  
  2135. ≡≡SetzeFontWerte
  2136.  
  2137. NachdemmitWähleFonteinVektor-Zeichensatzgeladenwurde,kannmit
  2138. SetzeFontWertesowohldieGrößederBuchstabeninbeidenRichtungenals
  2139. auchdieSchreibrichtungverändertwerden.DieRichtungwirdalsWinkel
  2140. gegendenUhrzeigersinnzurpositivenx-AchseinGradgemessen.
  2141.  
  2142. Deklaration:
  2143. PROCEDURESetzeFontWerte(xGröße,yGröße,Richtung:REAL);
  2144.  
  2145. Beispiel:
  2146. GrafikSchirm;SchreibenimGrafikmodusermöglichen.
  2147. WähleFont("LITT");    Zeichensatzladen
  2148. SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
  2149. GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
  2150.  
  2151. ≡≡StiftFarbe
  2152.  
  2153. MitStiftFarbewirddieFarbedesZeichenstiftesfüralleGrafik-
  2154. anweisungenfestgesetzt,diekeineFarbealsParameterenthalten.
  2155. ZurVerfügungstehendieFarbenSchwarz,GrauundWeiß.Andere
  2156. Wertesindnichtzugelassen.
  2157.  
  2158. Deklaration:
  2159. PROCEDUREStiftFarbe(Farbe:INTEGER);
  2160.  
  2161. Beispiel:
  2162. StiftFarbe(Grau);ZeichenfarbeGraufestlegen.
  2163. Strecke(0,0,100,50);Weilnichtjeder Punktgezeichnet
  2164. wird,erscheintdieStreckeinihrer
  2165. Farbenichtsointensiv,alsograu.
  2166.  
  2167. ≡≡Strecke
  2168.  
  2169. Strecke(x1,y1,x2,y2)zeichneteineStreckezwischenzweiPunkten
  2170. P1(x1/y1)undP2(x2/y2)aufdemGrafikschirm.DerUrsprungdes
  2171. KoordinatensystemsliegtinderMittedesBildschirmfensters.
  2172.  
  2173. Deklaration:
  2174. PROCEDUREStrecke(x1,y1,x2,y2:INTEGER);
  2175.  
  2176. Beispiel:
  2177. Strecke(-100,-30,50,80);zeichnetdieStreckemitden
  2178. EndpunktenP1(-100/-30)und
  2179. P2(50/80).
  2180.  
  2181. ≡≡TextSchirm
  2182.  
  2183. MitderAnweisungTextSchirmwirdausdemGrafikmoduszurückinden
  2184. Textmodusgewechselt.
  2185.  
  2186. Deklaration:
  2187. PROCEDURETextSchirm;
  2188.  
  2189. Beispiel:
  2190. GrafikSchirm;ZeichnenimGrafikmodusermöglichen.
  2191. Strecke(0,0,100,100);EineStreckewirdgezeichnet.
  2192. WriteLn("imGrafikmodus");AufdemGrafikschirmwird
  2193. "imGrafikmodus"gedruckt.
  2194. TextSchirm;ZurückindenTextmodus.
  2195. WriteLn("imTextmodus");AufdemTextschirmwird"imTextmodus"
  2196. gedruckt.DieTextausgabeerfolgthier
  2197. wesentlichschnelleralsimGrafikmodus.
  2198.  
  2199.  
  2200. ≡≡WähleFont
  2201.  
  2202. BevoraufdemGrafikschirmmitGrafWritegeschriebenwerdenkann,muß
  2203. mitWähleFonteinVektor-ZeichensatznachBORLAND-Standardgeladen
  2204. wordensein.MitgeliefertwerdendieZeichensätze"LITT.CHR","GOTH.CHR",
  2205. "SANS.CHR"und"TRIP.CHR".WeitereZeichensätzesindvonderFirmaBORLAND
  2206. oderimBereichShareware/PublicDomainzubekommen.
  2207. NachdemerfolgreichenLadeneinesZeichensatzeswerdenautomatisch
  2208. StandardwertemitSetzeFontWerte(1,1,0)gesetzt.
  2209.  
  2210. Deklaration:
  2211. PROCEDUREWähleFont(FontName:STRING);
  2212.  
  2213. Beispiel:
  2214. GrafikSchirm;SchreibenimGrafikmodusermöglichen.
  2215. WähleFont("LITT");    Zeichensatzladen
  2216. SetzeFontWerte(2,2,90);mitdoppelterSchriftgrößesenkrecht
  2217. GrafWrite("senkrecht");nachoben"senkrecht"schreiben.
  2218.  
  2219. ≡≡WeltGeheNach
  2220.  
  2221. WeltGeheNachsetztdenWeltcursoraufdieangegebenenKoordinatendesmit
  2222. DefiniereWeltdefiniertenKoordinatensystems.MitWeltStreckeNachwird
  2223. dieser Punktmiteinemzweitenverbunden.
  2224.  
  2225. Deklaration:
  2226. PROCEDUREWeltGeheNach(x,y:REAL);
  2227.  
  2228. Beispiel:
  2229. yKorrekturAus;gleichmäßigesRaster
  2230. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2231.  -5,0<=x<=10,0und
  2232.  -2,5<=y<=4,5definieren
  2233.  undzeichnen
  2234. WeltGeheNach(-3,-2.2,7.3,3.4);WeltcursoraufP(-3/-2,2)setzen
  2235.  
  2236.  
  2237. ≡≡WeltPunkt
  2238.  
  2239. WeltPunktzeichneteinen PunktindemmitDefiniereweltdefinierten
  2240. Koordinatensystem.
  2241.  
  2242. Deklaration:
  2243. PROCEDUREWeltPunkt(x,y:REAL);
  2244.  
  2245. Beispiel:
  2246. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2247.  -5,0<=x<=10,0und
  2248.  -2,5<=y<=4,5definieren
  2249.  undzeichnen
  2250. WeltPunkt(-3,-2.2);zeichnetdenPunktP(-3/-2,2)
  2251.  
  2252. ≡≡WeltStrecke
  2253.  
  2254. WeltStreckeverbindetdiebeidenmitihrenx-undy-Koordinaten
  2255. angegebenenPunkteindemmitDefiniereWeltdefiniertenKoordinatensystem.
  2256.  
  2257. Deklaration:
  2258. PROCEDUREWeltStrecke(x1,y1,x2,y2:REAL);
  2259.  
  2260. Beispiel:
  2261. yKorrekturAus;gleichmäßigesRaster
  2262. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2263.  -5,0<=x<=10,0und
  2264.  -2,5<=y<=4,5definieren
  2265.  undzeichnen
  2266. WeltStrecke(-3,-2.2,7.3,3.4);StreckemitdenEndpunkten
  2267.  P(-3/-2,2)undQ(7,3/3,4)zeichnen
  2268.  
  2269. ≡≡WeltStreckeNach
  2270.  
  2271. WeltStreckeNachverbindetdenangegebenen PunktmitdemPunktindemmit
  2272. DefiniereWeltdefiniertenKoordinatensystem,aufdemsichderWeltcursor
  2273. befindet.DerWeltcursorwirdanschließendaufdenangegebenenPunkt
  2274. gesetzt.
  2275.  
  2276. Deklaration:
  2277. PROCEDUREWeltStreckeNach(x,y:REAL);
  2278.  
  2279. Beispiel:
  2280.  
  2281.  
  2282. yKorrekturAus;gleichmäßigesRaster
  2283. DefiniereWelt(-5,-2.5,10,4.5);Koordinatensystemmit
  2284.  -5,0<=x<=10,0und
  2285.  -2,5<=y<=4,5definieren
  2286.  undzeichnen
  2287. WeltGeheNach(-3,-2.2); WeltcursoraufP(-3/-2,2)setzen
  2288. WeltStreckeNach(7.3,3.4);    P(-3/-2,2)undQ(7,3/3,4)
  2289.  verbinden
  2290. WeltStreckeNach(-1.3,0.4);Q(7,3/3,4)undR(-1,3/0,4)
  2291.  verbinden
  2292.  
  2293. ≡≡Wischen
  2294.  
  2295. MitWischenwirddasaktiveGrafikfenstergelöscht.DieFarbe
  2296. desHintergrundeskannvorhermitPapierFarbeeingestellt
  2297. werden.
  2298.  
  2299. Deklaration:
  2300. PROCEDUREWischen;
  2301.  
  2302. Beispiel:
  2303. PapierFarbe(Schwarz);
  2304. Wischen;DerHintergrunderscheintschwarz.
  2305. PapierFarbe(Grau);
  2306. Wischen;DerHintergrunderscheintgrau.
  2307. PapierFarbe(Weiß);
  2308. Wischen;DerHintergrunderscheintweiß.
  2309.  
  2310. ≡≡WoGrafikX
  2311.  
  2312. WoGrafikXliefertdiex-KoordinatedesGrafik-Cursorszurück.
  2313.  
  2314. Deklaration:
  2315. FUNCTIONWoGrafikX:INTEGER;
  2316.  
  2317. Beispiel:
  2318. MoveTo(100,50);
  2319. Write(WoGrafikX);druckt100aus.
  2320. LineTo(-200,40);
  2321. Write(WoGrafikX);druckt-200aus.
  2322.  
  2323. ≡≡WoGrafikY
  2324.  
  2325. WoGrafikYliefertdiey-KoordinatedesGrafik-Cursorszurück.
  2326.  
  2327. Deklaration:
  2328. FUNCTIONWoGrafikY:INTEGER;
  2329.  
  2330. Beispiel:
  2331. MoveTo(100,50);
  2332. Write(WoGrafikY);druckt50aus.
  2333. LineTo(-200,40);
  2334. Write(WoGrafikY);druckt40aus.
  2335.  
  2336. ≡≡yKorrekturFaktor
  2337.  
  2338. BeiCGA-,Hercules-undEGA-GrafikkartenstimmendieAbständezweier
  2339. benachbarterPunkteinx-undy-RichtungaufdemMonitornichtüber-
  2340. ein.OhneKorrekturwürdeeinKreiswieeineEllipseundeinQuadrat
  2341. wieeinRechteckaussehen.Umsoetwaszuvermeiden,werdendie
  2342. Streckeniny-RichtungverkürztumeinenFaktor,dessenWertdie
  2343. FunktionyKorrekturFaktorzurückliefert.
  2344.  
  2345. Deklaration:
  2346. FUNCTIONyKorrekturFaktor:REAL;
  2347.  
  2348. Beispiel:
  2349. Write(yKorrekturFaktor);druckt
  2350. 0.42fürCGA-Karten
  2351. 0.64fürHercules-Karten
  2352. 0.73fürEGA-Karten
  2353. 1.00fürVGA-Karten
  2354.  
  2355. ≡≡mathematische·Funktionen
  2356.  
  2357. ABSARCCOSARCCOTARCSINARCTANBOGENMAß
  2358. COSCOTEXP GRADLGLN
  2359. SIGNSINSQRSQRTTAN
  2360.  
  2361. ≡≡ABS
  2362.  
  2363. MitABS(x)wirdderBetrageinerZahlbestimmt.
  2364.  
  2365. Deklaration:
  2366. FUNCTIONABS(Zahl:REAL):REAL;
  2367.  
  2368. Beispiel:
  2369. ABS(-3.5)=3.5;ABS(-2)=2;ABS(4.7)=4.7
  2370.  
  2371. ≡≡ARCCOS
  2372.  
  2373. α=ArcCos(x)istdieUmkehrfunktionzux=Cos(α).
  2374. α=ArcCos(x)istderWinkelα,fürdengiltx=Cos(α).
  2375.  
  2376. Deklaration:
  2377. FUNCTIONArcCos(Winkel:REAL):REAL;
  2378.  
  2379. Beispiel:
  2380. inGrad:ArcCos(0.5)=60°
  2381. imBogenmaß:ArcCos(0.5)=1.047
  2382.  
  2383. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2384. festgelegt,obdieBerechnungmitWinkelninGrad
  2385. oderimBogenmaßdurchgeführtwird.
  2386.  
  2387. ≡≡ARCCOT
  2388.  
  2389. α=ArcCot(x)istdieUmkehrfunktionzux=Cot(α).
  2390. α=ArcCot(x)istderWinkelα,fürdengiltx=Cot(α).
  2391.  
  2392. Deklaration:
  2393. FUNCTIONArcCot(Winkel:REAL):REAL;
  2394.  
  2395. Beispiel:
  2396. inGrad:ArcCot(0.5)=63.435°
  2397. imBogenmaß:ArcCot(0.5)=1.107
  2398.  
  2399. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2400. festgelegt,obdieBerechnungmitWinkelninGrad
  2401. oderimBogenmaßdurchgeführtwird.
  2402.  
  2403. ≡≡ARCSIN
  2404.  
  2405. α=ArcSin(x)istdieUmkehrfunktionzux=Sin(α).
  2406. α=ArcSin(x)istderWinkelα,fürdengiltx=Sin(α).
  2407.  
  2408. Deklaration:
  2409. FUNCTIONArcSin(Winkel:REAL):REAL;
  2410.  
  2411. Beispiel:
  2412. inGrad:ArcSin(0.5)=30°
  2413. imBogenmaß:ArcSin(0.5)=0.524
  2414.  
  2415. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2416. festgelegt,obdieBerechnungmitWinkelninGrad
  2417. oderimBogenmaßdurchgeführtwird.
  2418.  
  2419. ≡≡ARCTAN
  2420.  
  2421. α=ArcTan(x)istdieUmkehrfunktionzux=Tan(α).
  2422. α=ArcTan(x)istderWinkelα,fürdengiltx=Tan(α).
  2423.  
  2424. Deklaration:
  2425. FUNCTIONArcTan(Winkel:REAL):REAL;
  2426.  
  2427. Beispiel:
  2428. inGrad:ArcTan(0.5)=26.565°
  2429. imBogenmaß:ArcTan(0.5)=0.464
  2430.  
  2431. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2432. festgelegt,obdieBerechnungmitWinkelninGrad
  2433. oderimBogenmaßdurchgeführtwird.
  2434.  
  2435. ≡≡BOGENMAß
  2436.  
  2437. DieFunktiony=Bogenmaß(α)ergibtdasBogenmaßdes
  2438. Winkelsα,derinGradgegebenist.
  2439.  
  2440. Deklaration:
  2441. FUNCTIONBogenmaß(WinkelInGrad:REAL):REAL;
  2442.  
  2443. Beispiel:
  2444. Bogenmaß(60°)=π/3
  2445. Bogenmaß(Grad(π/3))=π/3
  2446.  
  2447. ≡≡COS
  2448.  
  2449. DerCos(α)istdieLängederAnkatheteeinesrechtwinkligen
  2450. DreiecksmitderHypotenusenlänge1.Ergibtfürbeliebige
  2451. rechtwinkligeDreieckedasVerhältnisvonAnkathetezu
  2452. Hypotenusean.
  2453.  
  2454. Deklaration:
  2455. FUNCTIONCos(Winkel:REAL):REAL;
  2456.  
  2457. Beispiel:
  2458. inGrad:Cos(60°)=0.5
  2459. imBogenmaß:Cos(π/3)=0.5
  2460.  
  2461. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2462. festgelegt,obdieBerechnungmitWinkelninGrad
  2463. oderimBogenmaßdurchgeführtwird.
  2464.  
  2465. ≡≡COT
  2466.  
  2467. DieFunktiony=Cot(α)gibtineinemrechtwinkligenDreieck
  2468. dasSeitenverhältnisvonAnkathetezuGegenkathetean.
  2469.  
  2470. Deklaration:
  2471. FUNCTIONCot(Winkel:REAL):REAL;
  2472.  
  2473. Beispiel:
  2474. inGrad:Cot(60°)=0.577
  2475. imBogenmaß:Cot(π/3)=0.577
  2476.  
  2477. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2478. festgelegt,obdieBerechnungmitWinkelninGrad
  2479. oderimBogenmaßdurchgeführtwird.
  2480.  
  2481. ≡≡EXP
  2482.  
  2483. y=Exp(x)=e^xistdieExponentialfunktionmitderBasise.
  2484. ebezeichnetdieEulerscheZahl2.718281828....
  2485.  
  2486. Deklaration:
  2487. FUNCTIONExp(x:REAL):REAL;
  2488.  
  2489. Beispiel:
  2490. Exp(1)=2.71828
  2491. Exp(-4.1)=0.0167
  2492. Exp(Ln(4))=4
  2493.  
  2494. ≡≡ GRAD
  2495.  
  2496. α=Grad(x)ergibtdenzudemBogenxdesEinheitskreises
  2497. gehörendenWinkelα,rechnetalsodenWinkelximBogenmaß
  2498. inGradum.
  2499.  
  2500. Deklaration:
  2501. FUNCTIONGrad(WinkelImBogenmaß:REAL):REAL;
  2502.  
  2503. Beispiel:
  2504. Grad(π/3)=60°
  2505. Grad( Bogenmaß(60°))=60°
  2506.  
  2507. ≡≡LG
  2508.  
  2509. y=Lg(x)istderLogarithmusvonxzurBasis10,auchdekadischer
  2510. Logarithmusgenannt.Lg(x)istdieUmkehrfunktionzu10^xund
  2511. nurfürx>0definiert.
  2512.  
  2513. Deklaration:
  2514. FUNCTIONLg(x:REAL):REAL;
  2515.  
  2516. Beispiel:
  2517. Lg(0.5)=-0.301
  2518. Lg(3.3)=0.519
  2519. Lg(10)=1
  2520. Lg(10^5.7)=5.7
  2521. Lg(-2)istnichtdefiniert
  2522.  
  2523. ≡≡LN
  2524.  
  2525. y=Ln(x)istderLogarithmusvonxzurBasise,auchnatürlicher
  2526. Logarithmusgenannt.Ln(x)istdieUmkehrfunktionzuExp(x)und
  2527. nurfürx>0definiert.
  2528.  
  2529. Deklaration:
  2530. FUNCTIONLn(x:REAL):REAL;
  2531.  
  2532. Beispiel:
  2533. Ln(0.5)=-0.693
  2534. Ln(3.3)=1.194
  2535. Ln(e)=1
  2536. Ln(Exp(5.7))=5.7
  2537. Ln(-2)istnichtdefiniert
  2538.  
  2539. ≡≡SIGN
  2540.  
  2541. DieSignumfunktiony=Sign(x)istdefiniertals:
  2542. 1,wennx>0
  2543. 0,wennx=0
  2544. -1,wennx<0
  2545.  
  2546. Deklaration:
  2547. FUNCTIONSign(x:REAL):INTEGER;
  2548.  
  2549. Beispiel:
  2550. Sign(3.5)=1
  2551. Sign(0)=0
  2552. Sign(-4)=-1
  2553.  
  2554. ≡≡SIN
  2555.  
  2556. DerSin(α)istdieLängederGegenkatheteeinesrechtwinkligen
  2557. DreiecksmitderHypotenusenlänge1.Ergibtfürbeliebige
  2558. rechtwinkligeDreieckedasVerhältnisvonGegenkathetezu
  2559. Hypotenusean.
  2560.  
  2561. Deklaration:
  2562. FUNCTIONSin(Winkel:REAL):REAL;
  2563.  
  2564. Beispiel:
  2565. inGrad:Sin(60°)=0.866
  2566. imBogenmaß:Sin(π/3)=0.866
  2567.  
  2568. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2569. festgelegt,obdieBerechnungmitWinkelninGrad
  2570. oderimBogenmaßdurchgeführtwird.
  2571.  
  2572. ≡≡SQR
  2573.  
  2574. y=Sqr(x)=x^2istdasQuadratderZahlx.Sqrstehtfürdie
  2575. englischeAbkürzungvonQuadrat"Square".
  2576.  
  2577. Deklaration:
  2578. FUNCTIONSqr(x:REAL):REAL;
  2579.  
  2580. Beispiel:
  2581. Sqr(2)=4
  2582. Sqr(Sqrt(2))=2
  2583.  
  2584. ≡≡SQRT
  2585.  
  2586. y=Sqrt(x)istdiepositiveZahly,derenQuadratx
  2587. ergibt.SqrtistalsodieWurzelfunktion.y=Sqrt(x)
  2588. istdieUmkehrfunktionzuy=Sqr(x).Sqrtstehtfür
  2589. dieenglischeAbkürzungvonWurzel"SquareRoot".
  2590. Sqrt(x)istdefiniertfürx≥0.
  2591.  
  2592. Deklaration:
  2593. FUNCTIONSqrt(x:REAL):REAL;
  2594.  
  2595. Beispiel:
  2596. Sqrt(4)=2
  2597. Sqrt(Sqr(2))=2
  2598. Sqrt(-4)istnichtdefiniert.
  2599.  
  2600. ≡≡TAN
  2601.  
  2602. DieFunktiony=Tan(α)gibtineinemrechtwinkligenDreieck
  2603. dasSeitenverhältnisvonGegenkathetezuAnkathetean.
  2604.  
  2605. Deklaration:
  2606. FUNCTIONTan(Winkel:REAL):REAL;
  2607.  
  2608. Beispiel:
  2609. inGrad:Tan(60°)=1.732
  2610. imBogenmaß:Tan(π/3)=1.732
  2611.  
  2612. DurchdieSchalter"InGrad"und"ImBogenmaß"wird
  2613. festgelegt,obdieBerechnungmitWinkelninGrad
  2614. oderimBogenmaßdurchgeführtwird.
  2615.  
  2616. ≡≡Standard-Funktionen
  2617.  
  2618. ABS ARCTAN    CHR COPY COS
  2619. EOF EXP FilePosFileSizeFRAC
  2620. GetMaxXGetMaxYIORESULTINT KeyPressed
  2621. LNLENGTH    ODD ORD POS
  2622. PRED Random    ReadKeyROUND
  2623. SIN
  2624. SQR SQRT STR SUCC TRUNC
  2625. UpCase    WhereX    WhereY
  2626.  
  2627. ≡≡CHR
  2628.  
  2629. MitderFunktionCHRwirdeineTyp-UmwandlungeinerINTEGER-Zahl
  2630. ausdemBereich0..255ineinenBuchstabendurchgeführt.
  2631.  
  2632. Deklaration:
  2633. FUNCTIONCHR(OrdnungsZahl:INTEGER):CHAR;
  2634.  
  2635. Beispiel:
  2636. Write(CHR(65));druckt"A",weil"A"denASCII-Code65hat.
  2637. Write(CHR(ORD("B")));druckt"B".
  2638.  
  2639. ≡≡COPY
  2640.  
  2641. Copy(ZeichenKette,Anfang,Anzahl)liefertalsFunktionswertden
  2642. TeilvonZeichenKettezurück,derbeidemBuchstabenindexAnfang
  2643. beginntundAnzahlZeichenumfaßt.
  2644.  
  2645. Deklaration:
  2646. FUNCTIONCopy(ZeichenKette:STRING;
  2647. Anfang,Anzahl:INTEGER):STRING;
  2648.  
  2649. Beispiel:
  2650. Write(Copy("abcdefgh",3,4));druckt"cdef".
  2651. Write(Copy("abcdefgh",7,9));druckt"gh".WennamEndeder
  2652.     ZeichenkettewenigerBuchstaben
  2653.     vorhandensindalsinAnzahlan-
  2654.     gegeben,werdennurdienoch
  2655.     vorhandenenzurückgegeben.
  2656.  
  2657. ≡≡FilePos
  2658.  
  2659. FilePos(Dateivariable)gibtdenIndexdesDatensatzesaus,andessenEnde
  2660. derLesezeigerinderDateiDateivariablesteht.
  2661.  
  2662. Deklaration:
  2663. FUNCTIONFilePos(f:FILEOFDatenstruktur):WORD;
  2664.  
  2665. Beispiel:
  2666. TYPE
  2667.     DatenStruktur=RECORD
  2668. x:INTEGER;
  2669. s:STRING[20];
  2670.     END;
  2671.  
  2672.  
  2673. VAR
  2674.     Daten:DatenStruktur;
  2675.     f:FILEOFDatenStruktur;
  2676. BEGIN
  2677.     Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
  2678.     Reset(f);undzumLesenöffnen
  2679.     Seek(f,3);ZeigeraufdasEndedes3.Datensatzes
  2680.     Read(f,Daten);    4.Datensatzlesen!!!!
  2681.     Write(FilePos(f));drucktdenWert4aus!!!
  2682.     Close(f);Dateischließen
  2683. END;
  2684.  
  2685. ≡≡FileSize
  2686.  
  2687. FileSize(Dateivariable)gibtan,wievieleDatensätzeineinerDatei
  2688. enthaltensind.
  2689.  
  2690. Deklaration:
  2691. FUNCTIONFileSize(f:FILEOFDatenstruktur):WORD;
  2692.  
  2693. Beispiel:
  2694. TYPE
  2695.     DatenStruktur=RECORD
  2696. x:INTEGER;
  2697. s:STRING[20];
  2698.     END;
  2699.  
  2700.  
  2701. VAR
  2702.     Daten:DatenStruktur;
  2703.     f:FILEOFDatenStruktur;
  2704. BEGIN
  2705.     Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
  2706.     Reset(f);undzumLesenöffnen
  2707.     Write(FileSize(f));drucktaus,wievieleRecordsdesTyps
  2708. DatenStrukturinderDateiTEST.DAT
  2709. enthaltensind
  2710.     Close(f);Dateischließen
  2711. END;
  2712.  
  2713. ≡≡FRAC
  2714.  
  2715. MitFracwirdderNachkommateileinerVariabledesTypsREAL
  2716. bestimmtundalsFunktionswertzurückgegeben.
  2717.  
  2718. Deklaration:
  2719. FUNCTIONFrac(DezimalZahl:REAL):REAL;
  2720.  
  2721. Beispiel:
  2722. Write(Frac(2.561));druckt0.561aus.
  2723.  
  2724. ≡≡EOF
  2725.  
  2726. MitEOF(Datei)kannfestgestelltwerden,obbeimLeseneinerDatei
  2727. dasEndeerreichtwurde.IndiesemFallergibtEOF(Datei)denWert
  2728. WAHR(TRUE).DieDateidarfdabeivomTypFILEodervomTyp TEXTsein.
  2729.  
  2730. Deklaration:
  2731. FUNCTIONEOF(t: TEXT):BOOLEAN;
  2732. FUNCTIONEOF(f:FILE):BOOLEAN;
  2733.  
  2734.  
  2735. Beispiel:
  2736. VAR
  2737.     t: TEXT;
  2738.     s:STRING;
  2739. BEGIN
  2740.     Assign(t,'ITG.HLP');Dateiöffnen
  2741.     Reset(t);LesemarkeaufdenAnfangsetzen
  2742.     WHILENOTEOF(t)DOBEGINsolangeesnochweiterenTextgibt,
  2743. ReadLn(t,s); diesenausderDateilesenund
  2744. WriteLn(s);aufdemBildschirmausgeben
  2745.     END;
  2746.     Close(t);Dateischließen
  2747. END;
  2748.  
  2749. ≡≡IORESULT
  2750.  
  2751. WennDatensätzevonderDiskette/Festplattegelesenoderaufder
  2752. Diskette/Festplattegeschriebenwerden,kannmiteinemanschließenden
  2753. AufrufvonIOResultgeprüftwerden,obderLese-/Schreibvorgangfehler-
  2754. freiverlaufenistodernicht.
  2755. IOResultergibtnachfehlerfreienLese-/SchreibzugriffendenWert0,
  2756. sonsteinenWert>0.
  2757.  
  2758. Deklaration:
  2759. FUNCTIONIOResult:INTEGER;
  2760.  
  2761. Beispiel:
  2762. Write(Datei,Datensatz);
  2763. IFIOResult=0THENBEGIN
  2764. Write("keinFehler2);
  2765. END
  2766. ELSEBEGIN
  2767. Write("FehlerbeimSchreibendesDatensatzes");
  2768. END;
  2769. ≡≡INT
  2770.  
  2771. MitIntwirdderVorkommateileinerVariablendesTypsREAL
  2772. bestimmtundalsFunktionswertzurückgegeben.
  2773.  
  2774. Deklaration:
  2775. FUNCTIONInt(DezimalZahl:REAL):REAL;
  2776.  
  2777. Beispiel:
  2778. Write(Int(12.561));druckt12.000aus.
  2779.  
  2780. ≡≡KeyPressed
  2781.  
  2782. MitderFunktionKeyPressedwirdfestgestellt,obvordemZeitpunkt
  2783. desAufrufseineTastegedrücktwurde,dienochnichtdurcheine
  2784. Read-Anweisungeingelesenwurde.
  2785.  
  2786. Deklaration:
  2787. FUNCTIONKeyPressed:BOOLEAN;
  2788.  
  2789. Beispiel:
  2790. Read(c);AllevorhandenenTastendrückeeinlesen.
  2791. GrafikSchirm;
  2792. REPEAT
  2793.     ZeichneIrgendEtwas;SolangedieZeichnungwiederholen,bis
  2794. UNTILKeyPressed;einebeliebigeTastegedrücktwird.
  2795.  
  2796. ≡≡LENGTH
  2797.  
  2798. Length(ZeichenKette)ergibtdieAnzahlderBuchstaben(Länge)
  2799. vonZeichenKette.
  2800.  
  2801. Deklaration:
  2802. FUNCTIONLength(ZeichenKette:STRING):INTEGER;
  2803.  
  2804. Beispiel:
  2805. Write(Length("abcdefgh"));drucktdenWert8aus.
  2806. Write(Length(""));
  2807. ergibt0,weildieZeichenkette
  2808. leerist.
  2809.  
  2810. ≡≡ODD
  2811.  
  2812. Odd(GanzeZahl)prüft,obGanzeZahlgeradeistodernicht.Eshandelt
  2813. sichumeineAussage.DerFunktionswertistdemnachvomTypBOOLEAN.
  2814.  
  2815. Deklaration:
  2816. FUNCTIONOdd(GanzeZahl:INTEGER):BOOLEAN;
  2817.  
  2818. Beispiel:
  2819. IFOdd(GanzeZufallsZahl(100))THENBEGIN
  2820.     Write("Zufallszahlistgerade.");
  2821. END
  2822. ELSEBEGIN
  2823.     Write("Zufallszahlistungerade.");
  2824. END;
  2825.  
  2826. ≡≡ORD
  2827.  
  2828. DieFunktionOrd(Variable)(Ordnung)liefertbeieinemAufzählungstyp
  2829. dieStelle,anderVariableindiesemTypdefiniertist,wobeidie
  2830. erstevorkommendeVariableimmerdieOrdnung0hat.
  2831.  
  2832. Deklaration:
  2833. FUNCTIONOrd(Variable:Aufzählungstyp):INTEGER;
  2834.  
  2835. Beispiel:
  2836. Ord("A");ergibt65,weilderBuchstabe"A"
  2837. 
  2838. an66.(!)Stelleinder
  2839. 
  2840. ASCII-Tabellesteht.
  2841. TYPE
  2842.     Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
  2843. Ord(Schwarz);ergibt0.
  2844. Ord(Grau);ergibt1.
  2845. Ord(Weiß);ergibt2.
  2846.  
  2847. ≡≡POS
  2848.  
  2849. Pos(TeilZeichenKette,ZeichenKette)ergibtdieStelle,ander
  2850. TeilZeichenKetteinZeichenKettebeginnt.WennTeilZeichenKette
  2851. nichtinZeichenKetteenthaltenist,istderFunktionswert0.
  2852.  
  2853. Deklaration:
  2854. FUNCTIONPos(TeilZeichenKette,ZeichenKette:STRING):INTEGER;
  2855.  
  2856. Beispiel:
  2857. Pos("c","abcdefgh");ist3.
  2858. Pos("def","abcdefgh");ist4.
  2859. Pos("B","abcdefgh");ist0,weil"B"nichtin"abcdefgh"
  2860. vorkommt.
  2861.  
  2862. ≡≡PRED
  2863.  
  2864. Pred(Variable)ergibtdenVorgängervonVariable,wennessichum
  2865. einenAufzählungstyphandelt.(s.auchOrd,Succ)
  2866.  
  2867. Deklaration:
  2868. FUNCTIONPred(Variable:Aufzählungstyp):Aufzählungstyp;
  2869.  
  2870. Beispiel:
  2871. Pred(3);ist2.
  2872. Pred("B");ist"A",weil"A"inderASCII-
  2873. 
  2874. TabellederVorgängervon"B"
  2875. 
  2876. ist.
  2877. TYPE
  2878.     Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
  2879. Pred(Schwarz);istnichtdefiniert.
  2880. Pred(Grau);ergibtSchwarz.
  2881. Pred(Weiß);ergibtGrau.
  2882.  
  2883. ≡≡Random
  2884.  
  2885. Random(ObereGrenze)erzeugteineganzeZufallszahlzwischen0und
  2886. ObereGrenze-1!DerWertfürObereGrenzemußzwischen0und32768
  2887. liegen.
  2888.  
  2889. Deklaration:
  2890. FUNCTIONRandom(ObereGrenze:WORD):WORD;
  2891.  
  2892. Beispiel:
  2893. Write(Random(100));druckteineZufallszahlzwischen0und99!
  2894.  
  2895. ≡≡ReadKey
  2896.  
  2897. MitReadKeywirdeineTastegelesen,ohnedaßdieEingabemit
  2898. derRETURN-(ENTER-)Tasteabgeschlossenwerdenmuß.
  2899.  
  2900. Deklaration:
  2901. FUNCTIONReadKey:CHAR;
  2902.  
  2903. Beispiel:
  2904. Write("nocheinmal(j/n):");Meldungausgeben.
  2905. REPEATSolangedasEinlesenvon
  2906.     CharVariable:=UpCase(ReadKey);Zeichenwiederholen,bis
  2907. UNTIL(CharVariable="J")
  2908. derGroßbuchstabeder
  2909.  
  2910. OR(CharVariable="N");    gedrücktenTaste"J"oder
  2911.  "N"ist.
  2912.  
  2913. ≡≡ROUND
  2914.  
  2915. DurchRoundwirdeineVariabledesTypsREALineineVariabledes
  2916. TypsINTEGERumgewandelt.DabeiwirdimGegensatzzuTruncauf-
  2917. oderabgerundet.
  2918.  
  2919. Deklaration:
  2920. FUNCTIONRound(RealVariable:REAL):INTEGER;
  2921.  
  2922. Beispiel:
  2923. Round(3.2);ergibt3.
  2924. Round(3.8);ergibt4.
  2925. Round(-3.2);ergibt-3.
  2926. Round(-3.8);ergibt-4.
  2927.  
  2928. ≡≡SUCC
  2929.  
  2930. Succ(Variable)ergibtdenNachfolgervonVariable,wennessichum
  2931. einenAufzählungstyphandelt.(s.auchOrd,Pred)
  2932.  
  2933. Deklaration:
  2934. FUNCTIONSucc(Variable:Aufzählungstyp):Aufzählungstyp;
  2935.  
  2936. Beispiel:
  2937. Succ(3);ist4.
  2938. Succ("B");ist"C",weil"C"inderASCII-
  2939. 
  2940. TabellederNachfolgervon"B"
  2941. 
  2942. ist.
  2943. TYPE
  2944.     Farbe=(Schwarz,Grau,Weiß);AufzählungstypFarbedefinieren.
  2945. Succ(Schwarz);ergibtGrau.
  2946. Succ(Grau);ergibtWeiß.
  2947. Succ(Weiß);istnichtdefiniert.
  2948.  
  2949. ≡≡TRUNC
  2950.  
  2951. DurchTruncwirdeineVariabledesTypsREALineineVariabledes
  2952. TypsINTEGERumgewandelt.DabeiwirdimGegensatzzuRoundnicht
  2953. auf-oderabgerundet.
  2954.  
  2955. Deklaration:
  2956. FUNCTIONTrunc(RealVariable:REAL):INTEGER;
  2957.  
  2958. Beispiel:
  2959. Trunc(3.2);ergibt3.
  2960. Trunc(3.8);ergibt3.
  2961. Trunc(-3.2);ergibt-3.
  2962. Trunc(-3.8);ergibt-3.
  2963.  
  2964. ≡≡UpCase
  2965.  
  2966. UpCase(Buchstabe)ergibtalsFunktionsergebnisdenGroßbuchstaben
  2967. vonBuchstabe.DieUmwandlungwirdauchfüralledeutschenSonder-
  2968. zeichen(ä,ö,ü)durchgeführt.
  2969.  
  2970. Deklaration:
  2971. FUNCTIONUpCase(Buchstabe:CHAR):CHAR;
  2972.  
  2973. Beispiel:
  2974. Write(UpCase("a"));druckt"A".
  2975. Write(UpCase("A"));druckt"A".
  2976. Write(UpCase("ö"));druckt"Ö".
  2977.  
  2978. ≡≡WhereX
  2979.  
  2980. Diex-KoordinatedesCursorsimTextschirmwirddurchdieFunktion
  2981. WhereXausgelesen.BeimvollenTextschirmhatderlinkeRanddie
  2982. x-Koordinate1undderrechtediex-Koordinate80.
  2983.  
  2984. Deklaration:
  2985. FUNCTIONWhereX:INTEGER;
  2986.  
  2987. Beispiel:
  2988. GotoXY(5,3);setztdenCursoraufden PunktP(5/3).
  2989. Write(WhereX);drucktdenWert5aus.
  2990.  
  2991. ≡≡WhereY
  2992.  
  2993. Diey-KoordinatedesCursorsimTextschirmwirddurchdieFunktion
  2994. WhereYausgelesen.BeimvollenTextschirmhatderobereRanddie
  2995. y-Koordinate1undderunterediey-Koordinate25.
  2996.  
  2997. Deklaration:
  2998. FUNCTIONWhereY:INTEGER;
  2999.  
  3000. Beispiel:
  3001. GotoXY(5,3);setztdenCursoraufden PunktP(5/3).
  3002. Write(WhereY);drucktdenWert3aus.
  3003.  
  3004. ≡≡ITG-Pascal-Funktionen
  3005.  
  3006. ARCCOSARCCOTARCSIN
  3007. Bogenmaß Buchstabe COT
  3008. DezimalZufallszahlEsGibtDatei    FunktionsWert
  3009. GanzeZufallsZahl GradIgelWinkel
  3010. IgelZeigen
  3011. LetzteTaste    LiesPort
  3012. SIGNStopZeit TAN
  3013. WeltPixelDX    WeltPixelDY    WeltXMax
  3014. WeltXMin WeltYMax WeltYMin
  3015. WoGrafikX WoGrafikY WoIgelX
  3016. WoIgelYyKorrekturFaktor
  3017.  
  3018. ≡≡Buchstabe
  3019.  
  3020. DieFunktion(Zeichenkette,nterBuchstabe)liefertdenn.Buchstaben
  3021. inderZeichenkettezurück.Dabeimuß1≤n≤AnzahlderBuchstaben
  3022. inderZeichenkettesein.
  3023.  
  3024. Deklaration:
  3025. FUNCTIONBuchstabe(Zeichenkette:STRING;
  3026. nterBuchstabe:INTEGER):CHAR;
  3027.  
  3028. Beispiel:
  3029. Write(Buchstabe("abcdefg",3));druckt"c"aus.
  3030.  
  3031. ≡≡DezimalZufallszahl
  3032.  
  3033. DezimalZufallszahl(ObereSchranke)ergibteineZufallszahlxdesTyps
  3034. REAL,wobei0≤x<ObereSchrankegilt.DerWert0kannangenommen
  3035. werden,derWertObereSchrankewirdnieangenommen.
  3036.  
  3037. Deklaration:
  3038. FUNCTIONDezimalZufallszahl(ObereSchranke:REAL):REAL;
  3039.  
  3040. Beispiel:
  3041. Write(DezimalZufallszahl(4.5));druckteineZahlxmit
  3042.     0≤x<4.5!(sieheauch
  3043.     GanzeZufallszahl)
  3044.  
  3045. ≡≡EsGibtDatei
  3046.  
  3047. DieFunktionEsGibtDatei(Dateiname)dientdazu,zuprüfen,
  3048. obeineDateimitdemDateinamenaufderDiskette/Festplatte
  3049. existiert.SieliefertdenWertWAHR,wenneseinesolche
  3050. Dateigibt,sonstdenWertFALSCH.DerTypderDatei
  3051. (Textdateioderandere)läßtsichnichtfeststellen.
  3052.  
  3053. Deklaration:
  3054. FUNCTIONEsGibtDatei(DateiName:STRING):BOOLEAN;
  3055.  
  3056. Beispiel:
  3057. Write(EsGibtDatei("ITG.HLP"));drucktWAHRaus,wennesdie
  3058.     DateiITG.HLPimaktuellen
  3059.     Verzeichnisgibt,sonstFALSCH
  3060.  
  3061. ≡≡FunktionsWert
  3062.  
  3063. WennmitDefiniereFunktionstermeinFunktionstermfestgelegtwurde,
  3064. kannmitFunktionWerteinWertaneinerStelleberechnetwerden.
  3065.  
  3066. Deklaration:
  3067. FUNCTIONFunktionsWert(x:REAL):REAL;
  3068.  
  3069. Beispiel:
  3070. DefiniereFunktionsterm("5*x");zuerstFunktionstermfestlegen
  3071. FORn:=1TO5DOBEGIN
  3072.     WriteLn(FunktionsWert(n));understdannFunktionswerte
  3073. END;berechnen
  3074.  
  3075. ≡≡GanzeZufallsZahl
  3076.  
  3077. GanzeZufallszahl(ObereSchranke)ergibteineZufallszahlxdesTyps
  3078. INTEGER,wobei0≤x<ObereSchrankegilt.DerWert0kannangenommen
  3079. werden,derWertObereSchrankewirdnieangenommen.
  3080.  
  3081. Deklaration:
  3082. FUNCTIONGanzeZufallszahl(ObereSchranke:INTEGER):INTEGER;
  3083.  
  3084. Beispiel:
  3085. Write(GanzeZufallszahl(5));druckteinederZahlen0..4!
  3086.  
  3087. ≡≡LetzteTaste
  3088.  
  3089. DieFunktionLetzteTasteliefertdenBuchstabenderTaste,diezuletzt
  3090. gedrücktwurde.DamitkannnachRead-,Auswahl-undLiesEingaben-
  3091. Anweisungenfestgestelltwerden,obdieAnweisungenz.B.mitderESC-
  3092. Tasteabgebrochenwurden.
  3093.  
  3094. Deklaration:
  3095. FUNCTIONLetzteTaste:CHAR;
  3096.  
  3097. Beispiele:
  3098.  
  3099.  
  3100. 1)
  3101.     VARc1,c2:CHAR;
  3102.  
  3103.     c1:=ReadKey;
  3104.     c2:=LetzteTaste;c1undc2sindgleich,weilLetzteTaste
  3105. dasLeseneinesZeichenwiederholt.
  3106.  
  3107. 2)
  3108.     REPEAT
  3109. EingabeFeld(...);
  3110. LiesEingaben; WurdeLiesEingabenmitderESC-Taste
  3111.     UNTILLetzteTaste=ESC;beendet?WennjaAbbrechen,sonst
  3112. wiederholen.
  3113.  
  3114. ≡≡LiesPort
  3115.  
  3116. MitLiesPort(WelcherPort)kanndermomentaneWert,deramPort
  3117. WelcherPortanliegt,gelesenwerden.MitdieserFunktionkann
  3118. z.B.derDruckerstatusoderderTimerdesComputersabgefragt
  3119. werdenodereskönnenMeßwertevoneinemInterfaceeingelesen
  3120. werden.
  3121. ACHTUNG:VorderBenutzungdieserFunktionmußeinegenaue
  3122. InformationüberdieentsprechendeHardwareerfolgen,
  3123. dieabgefragtwerdensoll.
  3124.  
  3125. Deklaration:
  3126. FUNCTIONLiesPort(WelcherPort:INTEGER):INTEGER;
  3127.  
  3128. Beispiel:
  3129. Write(LiesPort(nnn));drucktdenWert,deram(Drucker-)
  3130. Portanliegt(,wennnnnderim
  3131. ComputerverwendeteDrucker-Port
  3132. ist).
  3133.  
  3134. ≡≡StopZeit
  3135.  
  3136. DieFunktionStopZeitliefertdieZeitdifferenzinSekundenzwischendem
  3137. letztenAufrufderProzedurStarteStopUhrbzw.demProgrammstart,wenn
  3138. StarteStopUhrumProgrammnichtaufgerufenwurde.DieAuflösungbeträgt
  3139. 1/100SekundenmiteinerGenauigkeitvonca.5/100Sekunden,diedurch
  3140. denimComputereingebautenTimerundDOSbedingtist.
  3141.  
  3142. Deklaration:
  3143. FUNCTIONStopZeit:REAL;
  3144.  
  3145. Beispiel:
  3146. StarteStopUhr;Stopuhrauf0setzen
  3147. TueIrgendetwas;
  3148. Write(StopZeit);ZeitdauerinSekundenanzeigen,diefür
  3149. TueIrgendetwasbenötigtwurden.
  3150.  
  3151. ≡≡WeltPixelDX
  3152.  
  3153. WeltPixelDXliefertdieDifferenzderx-Koordinatenzweierbenachbarter
  3154. BildpunkteineinemmitDefiniereWeltdefiniertenKoordiantensystem.
  3155.  
  3156. Deklaration:
  3157. FUNKTIONWeltPixelDX:REAL;
  3158.  
  3159. Beispiel:
  3160. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3161. WriteLn(WeltPixelDX);    drucktdieDifferenzderx-Koordinaten
  3162. zweierbenachbarterBildpunkte
  3163.  
  3164. ≡≡WeltPixelDY
  3165.  
  3166. WeltPixelDYliefertdieDifferenzdery-Koordinatenzweierbenachbarter
  3167. BildpunkteineinemmitDefiniereWeltdefiniertenKoordiantensystem.
  3168.  
  3169. Deklaration:
  3170. FUNKTIONWeltPixelDY:REAL;
  3171.  
  3172. Beispiel:
  3173. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3174. WriteLn(WeltPixelDY);    drucktdieDifferenzdery-Koordinaten
  3175. zweierbenachbarterBildpunkte
  3176.  
  3177. ≡≡WeltXMax
  3178.  
  3179. WeltXMaxliefertdiex-KoordinatedesäußerstenrechtenBildpunktesin
  3180. einemmitDefiniereWeltdefiniertenKoordiantensystem.DerWertist
  3181. meistensgrößeralsderbeiDefiniereWeltfürdiesenWertübergebene
  3182. Parameter,daITG-PASCALdasKoordiantensystemimmersoanlegt,daß
  3183. gleicheIntervallbreitenaufeinerAchseauchimmergleichviele
  3184. Bildpunkteenthalten.
  3185.  
  3186. Deklaration:
  3187. FUNKTIONWeltXMax:REAL;
  3188.  
  3189. Beispiel:
  3190. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3191. WriteLn(WeltXMax); drucktdenWertderx-Koordinatedes
  3192. äußerstenrechtenBildpunktesdes
  3193. Koordinatensystems.DerWertistetwas
  3194. größerals5.
  3195.  
  3196. ≡≡WeltXMin
  3197.  
  3198. WeltXMinliefertdiex-KoordinatedesäußerstenlinkenBildpunktesin
  3199. einemmitDefiniereWeltdefiniertenKoordiantensystem.DerWertist
  3200. meistenskleineralsderbeiDefiniereWeltfürdiesenWertübergebene
  3201. Parameter,daITG-PASCALdasKoordiantensystemimmersoanlegt,daß
  3202. gleicheIntervallbreitenaufeinerAchseauchimmergleichviele
  3203. Bildpunkteenthalten.
  3204.  
  3205. Deklaration:
  3206. FUNKTIONWeltXMin:REAL;
  3207.  
  3208. Beispiel:
  3209. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3210. WriteLn(WeltXMin); drucktdenWertderx-Koordinatedes
  3211. äußerstenlinkenBildpunktesdes
  3212. Koordinatensystems.DerWertistetwas
  3213. kleinerals5.
  3214.  
  3215. ≡≡WeltYMax
  3216.  
  3217. WeltYMaxliefertdiey-KoordinatedesoberstenBildpunktesineinemmit
  3218. DefiniereWeltdefiniertenKoordiantensystem.DerWertistmeistensgrößer
  3219. alsderbeiDefiniereWeltfürdiesenWertübergebeneParameter,da
  3220. ITG-PASCALdasKoordiantensystemimmersoanlegt,daßgleicheIntervall-
  3221. breitenaufeinerAchseauchimmergleichvieleBildpunkteenthalten.
  3222.  
  3223. Deklaration:
  3224. FUNKTIONWeltYMax:REAL;
  3225.  
  3226. Beispiel:
  3227. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3228. WriteLn(WeltYMax); drucktdenWertdery-Koordinatedes
  3229. oberstenBildpunktesdesKoordinaten-
  3230. systems.DerWertistetwasgrößer
  3231. als5.
  3232.  
  3233. ≡≡WeltYMin
  3234.  
  3235. WeltYMinliefertdiey-KoordinatedesunterstenBildpunktesineinem
  3236. mitDefiniereWeltdefiniertenKoordiantensystem.DerWertistmeistens
  3237. kleineralsderbeiDefiniereWeltfürdiesenWertübergebeneParameter,
  3238. daITG-PASCALdasKoordiantensystemimmersoanlegt,daßgleiche
  3239. IntervallbreitenaufeinerAchseauchimmergleichvieleBildpunkte
  3240. enthalten.
  3241.  
  3242. Deklaration:
  3243. FUNKTIONWeltYMin:REAL;
  3244.  
  3245. Beispiel:
  3246. DefiniereWelt(-3,-4,5,6);Weltdefinieren
  3247. WriteLn(WeltYMin); drucktdenWertdery-Koordinatedes
  3248. unterstenBildpunktesdesKoordinaten-
  3249. systems.DerWertistetwaskleiner
  3250. als5.
  3251.  
  3252. ≡≡Standard-Prozeduren
  3253.  
  3254. Assign    Circle    Close
  3255. ClrEol    ClrScr
  3256. DEC Delay
  3257. Delete    EXIT GotoXY
  3258. HALT HighVideoINC Insert    InversVideo
  3259. Line LineTo    LowVideoMoveTo    NoSound
  3260. Random    RandomizeREAD READLN    ReName
  3261. Reset
  3262. ReWriteSeek Sound
  3263. STR
  3264. VAL Window    WRITE
  3265. WRITELN
  3266.  
  3267. ≡≡Assign
  3268.  
  3269. AssignverbindeteineDateivariableDATEIderTypenFILEoder TEXT
  3270. miteinemDateinamenNAMEundöffnetsiefürLese-undSchreib-
  3271. zugriffe.AnschließenderfolgenalleOperationenmitDATEImitder
  3272. DateidesNamensNAME.VorderVerknüpfungmitAssignkannKEIN
  3273. ZugriffaufdieDateierfolgen!
  3274.  
  3275. Deklaration:
  3276. PROCEDUREAssign(Datei:FILE;DateiName:STRING);
  3277. PROCEDUREAssign(Datei: TEXT;DateiName:STRING);
  3278.  
  3279. Beispiel:
  3280.  
  3281.  
  3282. VAR
  3283.     Datei: TEXT;
  3284.     s:STRING;
  3285. BEGIN
  3286.     Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
  3287.     Reset(Datei);AnfangderDateisuchen
  3288.     WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
  3289. 
  3290. erreichtist,
  3291. ReadLn(Datei,s);lieseineZeileausderDatei
  3292. 
  3293. indieVariables
  3294. WriteLn(s);unddruckesaufdemBildschirm
  3295.     END;aus.
  3296.     Close(Datei);SchließedieDatei.
  3297. END;
  3298.  
  3299. ≡≡Close
  3300.  
  3301. Close(DATEI)schließtdieDatei.Anschließendkönnenkeineweiteren
  3302. OperationenmitDATEImehrerfolgen.JedeDatei,diemitAssign
  3303. geöffnetwurde,mußimLaufedesProgrammsauchmitClosegeschlossen
  3304. werden!
  3305.  
  3306. Deklaration:
  3307. PROCEDUREClose(Datei:FILE);
  3308. PROCEDUREClose(Datei: TEXT);
  3309.  
  3310. Beispiel:
  3311.  
  3312.  
  3313. VAR
  3314.     Datei: TEXT;
  3315.     s:STRING;
  3316. BEGIN
  3317.     Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
  3318.     Reset(Datei);AnfangderDateisuchen
  3319.     WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
  3320. 
  3321. erreichtist,
  3322. ReadLn(Datei,s);lieseineZeileausderDatei
  3323. 
  3324. indieVariables
  3325. WriteLn(s);unddruckesaufdemBildschirm
  3326.     END;aus.
  3327.     Close(Datei);SchließedieDatei.
  3328. END;
  3329.  
  3330. ≡≡ClrEol
  3331.  
  3332. ClrEollöschtdasEndeeinerTextzeileabderaugenblicklichen
  3333. Cursorposition.DieCursorpositionwirddabeinichtverändert.
  3334.  
  3335. Deklaration:
  3336. PROCEDUREClrEol;
  3337.  
  3338. Beispiel:
  3339. HighVideo;Bildschirmattributaufhellsetzen
  3340. GotoXY(30,5);Cursoraufdas30.Zeichender5.Zeilesetzen
  3341. ClrEol;    dieletzten50Zeichender5.ZeilemitLeerzeichen
  3342. auffüllenunddasAttribut"hell"verwendenundden
  3343. Cursoraufdem30.Zeichender5.Zeilelassen
  3344. InversVideo;Bildschirmattributaufinverssetzen
  3345. GotoXY(10,8);Cursoraufdas10.Zeichender8.Zeilesetzen
  3346. ClrEol;    dieletzten70Zeichender8.ZeilemitLeerzeichen
  3347. auffüllenunddasAttribut"invers"verwendenundden
  3348. Cursoraufdem10.Zeichender8.Zeilelassen
  3349.  
  3350. ≡≡ClrScr
  3351.  
  3352. ClrScrlöschtdasaktiveTextfenster.WeilinITG-PASCALdieTextausgabe
  3353. auchimGrafikmodusmitWrite(....)erfolgenkann,löschtClrScr
  3354. denGrafikschirm-alsoauchGrafiken-,wennderGrafikmodusaktiv
  3355. ist.
  3356.  
  3357. Deklaration:
  3358. PROCEDUREClrScr;
  3359.  
  3360. Beispiel:
  3361. Write("Irgendetwas");Textschreiben
  3362. Delay(2000);2s(2000ms)warten
  3363. ClrScr;Bildschirmlöschen
  3364. Delay(2000);wiederwarten,damitdasErgebnis
  3365. betrachtetwerdenkann.
  3366.  
  3367. ≡≡DEC
  3368.  
  3369. DEC(VARIABLE,WERT)verringertVARIABLEumWERT.VARIABLEkannvom
  3370. TypCHAR,BYTE,INTEGER,WORDoderLONGINTsein.DerzweiteParameter
  3371. WERTmußnichtmitangegebenwerden.IndiesemFallerfolgteine
  3372. Verringerungum1!
  3373.  
  3374. Deklaration:
  3375. PROCEDUREDEC(VARc:CHAR;Wert:LONGINT);
  3376. PROCEDUREDEC(VARc:CHAR);
  3377. PROCEDUREDEC(VARb:BYTE;Wert:LONGINT);
  3378. PROCEDUREDEC(VARb:BYTE);
  3379. PROCEDUREDEC(VARi:INTEGER;Wert:LONGINT);
  3380. PROCEDUREDEC(VARi:INTEGER);
  3381. PROCEDUREDEC(VARw:WORD;Wert:LONGINT);
  3382. PROCEDUREDEC(VARw:WORD);
  3383. PROCEDUREDEC(VARl:LONGINT;Wert:LONGINT);
  3384. PROCEDUREDEC(VARl:LONGINT);
  3385.  
  3386.  
  3387. Beispiel:
  3388. c:='C';
  3389. DEC(c,2);chatjetztdenWert'A',weil'A'inder
  3390. ASCII-TabelledaszweiteZeichenvor'C'ist.
  3391. l:=12345;
  3392. DEC(l); lhatdenWert12344.DerzweiteParameter
  3393. wirdindiesemFallautomatischauf1gesetzt!
  3394.  
  3395. ≡≡Delay
  3396.  
  3397. Delay(nMilliSekunden)hältdieProgrammausführungfürdieangegebenen
  3398. Millisekundenan.
  3399.  
  3400. Deklaration:
  3401. PROCEDUREDelay(MilliSekunden:WORD);
  3402.  
  3403. Beispiel:
  3404. WriteLn('ersterText');
  3405. Delay(3000);wartet3s(3000ms)
  3406. WriteLn('zweiterText');
  3407. Delay(1500);wartet1,5s(1500ms)
  3408. WriteLn('dritterText');
  3409.  
  3410. ≡≡Delete
  3411.  
  3412. Delete(ZEICHENKETTE,AB,ANZAHL)löschtinZEICHENKETTEabdemAB.ten
  3413. ZeichenANZAHLvonZeichen.
  3414.  
  3415. Deklaration:
  3416. PROCEDUREDelete(VARZeichenkette:STRING;Ab,Anzahl:WORD);
  3417.  
  3418. Beispiel:
  3419. Zeichenkette:='ABCDEFGH';Wertzuweisung
  3420. Delete(Zeichenkette,4,2);InderZeichenkettewirdder4.
  3421. Buchstabe(hier'D')gesucht.
  3422. EinschließlichdiesesBuchstabens
  3423. werden2Buchstaben(hier'D'und'E')
  3424. gelöscht.
  3425. WriteLn(Zeichenkette);Druckt'ABCFGH'aufdenBildschirm.
  3426.  
  3427. ≡≡EXIT
  3428.  
  3429. MitderAnweisungEXITerreichtman,daßdieAusführungeinerProzedur
  3430. oderFunktionsofortabgebrochenwird.ImHauptprogrammsollteHALT
  3431. verwendetwerden.
  3432.  
  3433. Deklaration:
  3434. PROCEDUREEXIT;
  3435.  
  3436.  
  3437. Beispiel:
  3438. PROCEDUREExitTest(n:INTEGER);
  3439. BEGIN
  3440. IFn>10THENBEGIN wennn>10,dann
  3441.  
  3442. WriteLn("n>10"); Textausgebenund
  3443.  
  3444. EXIT;dieProzedursofortverlassen
  3445. END
  3446. ELSEBEGIN
  3447.  
  3448. WriteLn("n<=10");
  3449. sonstTextausgeben
  3450. END;
  3451. .unddenRestderProzedur
  3452. .abarbeiten
  3453. END;
  3454.  
  3455. ≡≡GotoXY
  3456.  
  3457. GotoXY(x,y)setztdenCursoraufden PunktP(x/y).Derlinkeobere
  3458. EckpunktdesBildschirmshatdieKoordinaten(1/1).Diex-Werte
  3459. nehmennachrechtsbis80zu,diey-Wertenachuntenbis25.
  3460.  
  3461. Deklaration:
  3462. PROCEDUREGotoXY(x,y:WORD);
  3463.  
  3464. Beispiel:
  3465. GotoXY(1,1);linkerobererEckpunkt
  3466. GotoXY(1,25);linkeruntererEckpunkt
  3467. GotoXY(80,1);rechterobererEckpunkt
  3468. GotoXY(80,25);rechteruntererEckpunkt
  3469.  
  3470. ≡≡HALT
  3471.  
  3472. HALTbeendetdieProgrammausführungsofort.
  3473.  
  3474. Deklaration:
  3475. PROCEDUREHalt;
  3476.  
  3477. Beispiel:
  3478. x:=Random(100)-50;Zufallszahlzwischen-50
  3479.  und49!erzeugen
  3480. IFx<0THENBEGINfürx<0ist√xnicht
  3481.     WriteLn("x<0!");definiert,deshalbdie
  3482.     HALT;Programmausführungabbrechen
  3483. END
  3484. ELSEBEGIN
  3485.     WriteLn("√",x,"=",SQRT(x));sonst√xausdrucken
  3486. END;
  3487.  
  3488. ≡≡HighVideo
  3489.  
  3490. SetztdasSchreibattributaufhelleSchriftaufdunklemUntergrund.
  3491.  
  3492. Deklaration:
  3493. PROCEDUREHighVideo;
  3494.  
  3495. Beispiel:
  3496. HighVideo;helleSchriftaufdunklem
  3497. Untergrund
  3498. WriteLn("helleSchrift");
  3499. LowVideo;dunklereSchriftaufdunklem
  3500. Untergrund
  3501. WriteLn("dunklereSchrift");
  3502. InversVideo;dunkleSchriftaufhellem
  3503. Untergrund
  3504. WriteLn("inverseSchrift");
  3505.  
  3506. ≡≡INC
  3507.  
  3508. INC(VARIABLE,WERT)erhöhtVARIABLEumWERT.VARIABLEkannvom
  3509. TypCHAR,BYTE,INTEGER,WORDoderLONGINTsein.DerzweiteParameter
  3510. WERTmußnichtmitangegebenwerden.IndiesemFallerfolgteine
  3511. Erhöhungum1!
  3512.  
  3513. Deklaration:
  3514. PROCEDUREINC(VARc:CHAR;Wert:LONGINT);
  3515. PROCEDUREINC(VARc:CHAR);
  3516. PROCEDUREINC(VARb:BYTE;Wert:LONGINT);
  3517. PROCEDUREINC(VARb:BYTE);
  3518. PROCEDUREINC(VARi:INTEGER;Wert:LONGINT);
  3519. PROCEDUREINC(VARi:INTEGER);
  3520. PROCEDUREINC(VARw:WORD;Wert:LONGINT);
  3521. PROCEDUREINC(VARw:WORD);
  3522. PROCEDUREINC(VARl:LONGINT;Wert:LONGINT);
  3523. PROCEDUREINC(VARl:LONGINT);
  3524.  
  3525.  
  3526. Beispiel:
  3527. c:='C';
  3528. INC(c,2);chatjetztdenWert'E',weil'E'inder
  3529. ASCII-TabelledaszweiteZeichennach'C'ist.
  3530. l:=12345;
  3531. INC(l); lhatdenWert12346.DerzweiteParameter
  3532. wirdindiesemFallautomatischauf1gesetzt!
  3533.  
  3534. ≡≡Insert
  3535.  
  3536. MitInsertwirdeineZeichenketteineineandereZeichenketteaneiner
  3537. vorgegebenenPositioneingefügt.
  3538.  
  3539. Deklaration:
  3540. PROCEDUREInsert(Was:STRING;VARWoHinein:STRING;Wo:INTEGER);
  3541. PROCEDUREInsert(Was:CHAR;VARWoHinein:STRING;Wo:INTEGER);
  3542.  
  3543. Beispiel:
  3544.  
  3545.  
  3546. Was:="DE";
  3547. WoHinein:="ABCFGH";
  3548. Insert(Was,WoHinein,4);DerersteBuchstabederZeichenkette
  3549. Was("D")wirdals4.Buchstabe,
  3550. derzweiteausWas("E")als5.
  3551. BuchstabeinWoHineineingefügt.Die
  3552. PositionderübrigenBuchstabenaus
  3553. WoHineinverschiebtsichdadurchum
  3554. zweinachrechts.WoHineinhat
  3555. anschließenddenWert"ABCDEFGH".
  3556.  
  3557. ≡≡InversVideo
  3558.  
  3559. SetztdasSchreibattributaufdunkleSchriftaufhellemUntergrund.
  3560.  
  3561. Deklaration:
  3562. PROCEDUREHighVideo;
  3563.  
  3564. Beispiel:
  3565. HighVideo;helleSchriftaufdunklem
  3566. Untergrund
  3567. WriteLn("helleSchrift");
  3568. LowVideo;dunklereSchriftaufdunklem
  3569. Untergrund
  3570. WriteLn("dunklereSchrift");
  3571. InversVideo;dunkleSchriftaufhellem
  3572. Untergrund
  3573. WriteLn("inverseSchrift");
  3574.  
  3575. ≡≡LowVideo
  3576.  
  3577. SetztdasSchreibattributaufdunklereSchriftaufdunklemUntergrund.
  3578.  
  3579. Deklaration:
  3580. PROCEDURELowVideo;
  3581.  
  3582. Beispiel:
  3583. HighVideo;helleSchriftaufdunklem
  3584. Untergrund
  3585. WriteLn("helleSchrift");
  3586. LowVideo;dunklereSchriftaufdunklem
  3587. Untergrund
  3588. WriteLn("dunklereSchrift");
  3589. InversVideo;dunkleSchriftaufhellem
  3590. Untergrund
  3591. WriteLn("inverseSchrift");
  3592.  
  3593. ≡≡NoSound
  3594.  
  3595. NoSoundschaltetdenimComputereingebautenLautsprecherab.
  3596.  
  3597. Deklaration:
  3598. PROCEDURENoSound;
  3599.  
  3600. Beispiel:
  3601. Sound(1000);TonmitderFrequenzf=1000Hz1s(1000ms)
  3602. Delay(1000);langausgeben,
  3603. NoSound;danndieTonausgabeabschalten
  3604.  
  3605. ≡≡Randomize
  3606.  
  3607. RandomizeerzeugtdenAnfangeinerneuerFolgevonZufallszahlen.
  3608.  
  3609. Deklaration:
  3610. PROCEDURERandomize;
  3611.  
  3612. Beispiel:
  3613. Randomize; AnfangeinerneuenFolgeerzeugen
  3614. Write(Random(100));Zufallszahlzwischen0und99drucken
  3615.  
  3616. ≡≡READ
  3617.  
  3618. MitReaderfolgenEingabenüberdieTastaturoderdieDiskette/
  3619. Festplatte.DabeisindVariablenbeliebigenTyps(imUnterschied
  3620. zuTURBO-PASCALauchARRAY-undRECORD-VariablenbeiderTastatur-
  3621. Eingabe)zugelassen.FürREAL-VariablenkönnenabweichendzuTURBO-
  3622. PASCALauchTermeeingegebenwerden,dieallerdingskeineVariablen
  3623. enthaltendürfen.BeiSTRING-VariablenwirddasEingabefensterineiner
  3624. Längegeöffnet,diederDeklarationentspricht.
  3625. ImUnterschiedzuTURBO-PASCAlkönnendieVariablenmitWerten
  3626. vorbelegtwerden,diedannimEingabefelderscheinenundeditiert
  3627. werdenkönnen.DabeistehendieTasten<-,->,Home(Pos1),End(Ende),
  3628. Del(Lösch),BackSpace(<--)undIns(Einf)zurVerfügung.Wenndas
  3629. ersteZeichenkeinesdieserEditorzeichenist,wirddasEingabefenster
  3630. gelöscht.DerCursorbleibtnachderEingabedirekthinterdemletzten
  3631. eingegebenenZeichenstehen.
  3632. BeiDateiendarfmitREADnureinLesevorganginFILE-Typen
  3633. vorgenommenwerden.
  3634.  
  3635.  
  3636. Deklaration:
  3637. PROCEDURERead(VARv:VariableBeliebigenTyps);
  3638. PROCEDURERead(VARf:FILE;VARv:VariableBeliebigenTyps);
  3639.  
  3640. Beispiel:
  3641. VAR
  3642.     r:REAL;
  3643.     s:STRING[20];
  3644.     a:ARRAY[1..5]OFINTEGER;
  3645.     f:FILE;
  3646. BEGIN
  3647.  
  3648.  
  3649.     s:="abcd";
  3650.     Read(s);Eswirdein20ZeichenlangesEingabefeldgeöffnet.
  3651. Eingabe:"ABCD"BeidemerstenZeichen"A"
  3652.  wirddasEingabefenster
  3653.  gelöscht.Dannwird"A"als
  3654.  erstesZeichengeschrieben.
  3655. Eingabe:RETURN-TasteDerWertwirdunverändertüber-
  3656.  nommen.
  3657. Eingabe:-> DerCursorbewegtsichumein
  3658.  Zeichennachrechtsauf"b".
  3659.  Wennjetzt"z"gedrücktwird,
  3660.  wirddiesesZeichenander
  3661.  zweitenStelleeingefügtundes
  3662.  steht"azbcd"imEingabefeld.
  3663.  
  3664.  
  3665.     Read(r);Eingabe:1.234oder1.234E+3odersin(2*pi*100)
  3666.     Read(a);AufdemBildschirmerscheintderText"A[1]".Direkt
  3667. anschließendistdasEingabefeldgeöffnetundeskann
  3668. derersteWertbearbeitetwerden.Nach<RETURN>
  3669. erscheint"A[2]"mitdemEingabefeldusw.DieEingabe
  3670. kannmit<ESC>vorzeitigabgebrochenwerden.
  3671.  
  3672.  
  3673.     Assign(f,'DATEN.DAT');Dateiöffnen
  3674.     Reset(f);LesemarkeaufdenAnfangsetzen
  3675.     Read(f,a);dasArrayaausderDateilesen
  3676.     Close(f);Dateischließen
  3677. END;
  3678.  
  3679. ≡≡READLN
  3680.  
  3681. DieProzedurReadLnentsprichtweitgehendderProzedurRead.Esgibt
  3682. aberzweiUnterschiede:
  3683. 1)NachReadLnwirdderCursoraufdenAnfangderfolgendenZeile
  3684. gesetzt.
  3685. 2)BeiDateiendarfmitReadLnnureinLesevorgangin TEXT-Typen
  3686. vorgenommenwerden.
  3687.  
  3688. Deklaration:
  3689. PROCEDUREReadLn(VARv:VariableBeliebigenTyps);
  3690. PROCEDUREReadLn(VARt: TEXT;VARv:VariableBeliebigenTyps);
  3691.  
  3692. Beispiel:
  3693. Read(s);CursorbleibthinterdemletztenZeichenstehen
  3694. WriteLn;CursorandenAnfangdernächstenZeile
  3695. ReadLn(s);CursorandenAnfangdernächstenZeile(Kombination
  3696. ausRead(s)undWriteLn)
  3697.  
  3698. ≡≡ReName
  3699.  
  3700. ReNameändertdenNameneinerDatei.
  3701.  
  3702. Deklaration:
  3703. PROCEDUREReName(f:FILE;NeuerName:STRING);
  3704. PROCEDUREReName(t: TEXT;NeuerName:STRING);
  3705.  
  3706. Beispiel:
  3707.  
  3708.  
  3709. VAR
  3710.     Datei: TEXT;
  3711. BEGIN
  3712.     Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
  3713.     ReName(Datei,'ITG.BAK');NamenvonITG.HLPaufder
  3714. 
  3715. Diskette/Festplattein
  3716. 
  3717. ITG.BAKumändern
  3718.     Close(Datei);SchließedieDatei.
  3719. END;
  3720.  
  3721. ≡≡Reset
  3722.  
  3723. ResetsetztdieLese-/SchreibpositionineinerDateiaufdenAnfang
  3724. derDatei.
  3725.  
  3726. Deklaration:
  3727. PROCEDUREReset(f:FILE);
  3728. PROCEDUREReset(t: TEXT);
  3729.  
  3730. Beispiel:
  3731.  
  3732.  
  3733. VAR
  3734.     Datei: TEXT;
  3735.     s:STRING;
  3736. BEGIN
  3737.     Assign(Datei,'ITG.HLP');DateimitdemNamenverknüpfen
  3738.     Reset(Datei);AnfangderDateisuchen
  3739.     WHILENOTEOF(Datei)DOBEGINwenndasDateiendenochnicht
  3740. 
  3741. erreichtist,
  3742. ReadLn(Datei,s);lieseineZeileausderDatei
  3743. 
  3744. indieVariables
  3745. WriteLn(s);unddruckesaufdemBildschirm
  3746.     END;aus.
  3747.     Close(Datei);SchließedieDatei.
  3748. END;
  3749.  
  3750. ≡≡ReWrite
  3751.  
  3752. ReWritelöschtdiemitdieserDateivariablenverknüpfteDatei,
  3753. soferneineunterdiesemNamenexistiert,erzeugteineneueunter
  3754. demgleichenNamenundsetztdieLese-/Schreibpositionaufden
  3755. AnfangdieserDatei.
  3756.  
  3757. Deklaration:
  3758. PROCEDUREReWrite(f:FILE);
  3759. PROCEDUREReWrite(t: TEXT);
  3760.  
  3761. Beispiel:
  3762.  
  3763.  
  3764. VAR
  3765.     Datei: TEXT;
  3766.     s:STRING;
  3767. BEGIN
  3768.     Assign(Datei,'NEU.DAT');DateimitdemNamenverknüpfen
  3769.     ReWrite(Datei);neueDateianlegenundSchreib-
  3770.  positionaufdenAnfangsetzen
  3771.     s:="AnfangeinerneuenDatei";
  3772.     WriteLn(Datei,s);sandenAnfangderDatei
  3773.     .schreibenundgegebenenfalls
  3774.     .weitereTexteanhängen
  3775.     Close(Datei);SchließedieDatei.
  3776. END;
  3777.  
  3778. ≡≡Seek
  3779.  
  3780. Seek(Dateivariable,Position)setztdenLesezeigerinderDatei
  3781. DateivariableandasEndedesDatensatzesmitdemIndexPosition.
  3782.  
  3783. Deklaration:
  3784. PROCEDURESeek(f:FILEOFDatenstruktur;Position:WORD);
  3785.  
  3786.  
  3787. Beispiel:
  3788. TYPE
  3789.     DatenStruktur=RECORD
  3790. x:INTEGER;
  3791. s:STRING[20];
  3792.     END;
  3793. VAR
  3794.     Daten:DatenStruktur;
  3795.     f:FILEOFDatenStruktur;
  3796. BEGIN
  3797.     Assign(f,"TEST.DAT");derDateieinenNamenzuweisen
  3798.     Reset(f);undzumLesenöffnen
  3799.     Seek(f,3);ZeigeraufdasEndedes3.Datensatzes
  3800.     Read(f,Daten);    4.Datensatzlesen!!!!
  3801.     Close(f);Dateischließen
  3802. END;
  3803.  
  3804. ≡≡Sound
  3805.  
  3806. Sound(f)schaltetdenimComputereingebautenLautsprechereinund
  3807. bewirkteineTonerzeugungeinesTonesmitderFrequenzf.
  3808.  
  3809. Deklaration:
  3810. PROCEDURESound(Frequenz:WORD);
  3811.  
  3812. Beispiel:
  3813. Sound(1000);TonmitderFrequenzf=1000Hz1s(1000ms)
  3814. Delay(1000);langausgeben,
  3815. NoSound;danndieTonausgabeabschalten
  3816.  
  3817. ≡≡STR
  3818.  
  3819. STRwandelteineZahlineineZeichenketteum(UmkehrprozedurzuVAL).
  3820.  
  3821. Deklaration:
  3822. PROCEDURESTR(b:BYTE;VARs:STRING);
  3823. PROCEDURESTR(i:INTEGER;VARs:STRING);
  3824. PROCEDURESTR(w:WORD;VARs:STRING);
  3825. PROCEDURESTR(l:LONGINT;VARs:STRING);
  3826. PROCEDURESTR(r:REAL;VARs:STRING);
  3827.  
  3828. Beispiel:
  3829.  
  3830.  
  3831. VAR
  3832.     w:WORD;
  3833.     r:REAL;
  3834.     s:STRING;
  3835. BEGIN
  3836.     w:=1234;
  3837.     STR(w,s);serhältdenWert"1234"
  3838.     r:=1.234;
  3839.     STR(r,s);serhältdenWert"1.2340000000E+0000"
  3840. END;
  3841.  
  3842. ≡≡VAL
  3843.  
  3844. VALwandelteineZeichenketteineineZahlenvariableum(Umkehrprozedur
  3845. zuSTR).
  3846.  
  3847. Deklaration:
  3848. PROCEDUREVAL(s:STRING;VARb:BYTE;FehlerPos:WORD);
  3849. PROCEDUREVAL(s:STRING;VARi:INTEGER;FehlerPos:WORD);
  3850. PROCEDUREVAL(s:STRING;VARw:WORD;FehlerPos:WORD);
  3851. PROCEDUREVAL(s:STRING;VARl:LONGINT;FehlerPos:WORD);
  3852. PROCEDUREVAL(s:STRING;VARr:REAL;FehlerPos:WORD);
  3853.  
  3854. Beispiel:
  3855.  
  3856.  
  3857. VAR
  3858. w,FehlerPos:WORD
  3859. BEGIN
  3860. VAL("1234",w,FehlerPos);werhältdenWert1234,FehlerPos
  3861. ist0
  3862. VAL("12q4",w,FehlerPos);FehlerPosist3,weilander3.Stelle
  3863. derZeichenketteeinZeichensteht,das
  3864. keineZifferist
  3865. END;
  3866.  
  3867. ≡≡Window
  3868.  
  3869. WindowdefinierteinTextfensteraufdemBildschirm.Allenachfolgenden
  3870. Write-/GotoXY-AnweisungenbeziehensichaufdiesesFenster.
  3871.  
  3872. Deklaration:
  3873. PROCEDUREWindow(xMin,yMin,xMax,yMax:WORD);
  3874.  
  3875. Beispiel:
  3876. Window(10,3,60,8);definierteinenTeilausschnittdesBild-
  3877. alsTextfenster.DieKoordinatenbeziehen
  3878. sichaufdenvollenBildschirm.
  3879. GotoXY(1,1);
  3880. setztdenCursorindielinkeobereEcke
  3881. desFensters(absoluteKoordinaten(10/3)
  3882. und(60/8))
  3883. Window(1,1,80,25);
  3884.  
  3885. ≡≡WRITE
  3886.  
  3887. MitWriteerfolgenAusgabenaufdenBildschirmoderdieDiskette/
  3888. Festplatte.DabeisindVariablenbeliebigenTyps(imUnterschied
  3889. zuTURBO-PASCALauchARRAY-undRECORD-VariablenbeiderBildschirm-
  3890. Ausgabe)zugelassen.REAL-Variablenwerdensoweitwiemöglichohne
  3891. Expontialdarstellunggedruckt.DerCursorbleibtnachderAusgabe
  3892. direkthinterdemletztenausgegebenenZeichenstehen.
  3893. BeiDateiendarfmitWRITEnureinSchreibvorganginFILE-Typen
  3894. vorgenommenwerden.
  3895.  
  3896. Deklaration:
  3897. PROCEDUREWrite(v:VariableBeliebigenTyps);
  3898. PROCEDUREWrite(VARf:FILE;v:VariableBeliebigenTyps);
  3899.  
  3900. Beispiel:
  3901.  
  3902.  
  3903. VAR
  3904.     a:ARRAY[1..3]OFINTEGER;
  3905.     f:FILE;
  3906. BEGIN
  3907.     s:="abcd";
  3908.     Write(s);Eswird"abcd"gedruckt.
  3909.     Write(s:6);Eswird"abcd"gedruckt.DieAusgabeerfolgt
  3910. übermindestens6Zeichen.WenndieZeichenkette
  3911. wenigerals6Zeichenenthält,werdenvordem
  3912. erstenZeichensolangeLeerzeicheneinfügt,bis
  3913. dieZeichenkette6Zeichenenthält.Indiesem
  3914. Fallwerdenalso6-4=2Leerzeicheneingefügt.
  3915.     Write("a");druckt"a"
  3916.     Write("a":3);druckt"a"wieobenbeschrieben
  3917.  
  3918.  
  3919.     Write(1234);druckt"1234"
  3920.     Write(1234:6);druckt"1234"
  3921.     Write(pi);druckt"3.141592654"abweichendvonTURBO-PASCAL
  3922.     Write(pi:13);druckt"3.141592654"(13Zeichen)
  3923.     Write(pi:10:5)druckt"3.14159"(10Zeicheninsgesamt,davon
  3924. 5Nachkommastellen)
  3925.  
  3926.  
  3927.     a[1]:=1;
  3928.     a[2]:=2;
  3929.     a[3]:=3;
  3930.     Write(a);druckt"(A[1]=1,A[2]=2,A[3]=3)"mitAngabedes
  3931. Variablen-Namens,desFeldindexesunddesWertes
  3932. (inTURBO-PASCALnichtmöglich)
  3933.     Write(a:3);druckt"(A[1]=1,A[2]=2,A[3]=3)"und
  3934. verwendetfürdieDarstellungdesVariablen-
  3935. inhaltes3Zeichen
  3936.  
  3937.  
  3938.     Assign(f,'DATEN.DAT');Dateiöffnen
  3939.     ReWrite(f);SchreibmarkeaufdenAnfangsetzen
  3940.     Write(f,a); dasArrayaindieDateischreiben
  3941.     Close(f);Dateischließen
  3942. END;
  3943.  
  3944. ≡≡WRITELN
  3945.  
  3946. DieProzedurWriteLnentsprichtweitgehendderProzedurWrite.Esgibt
  3947. aberzweiUnterschiede:
  3948. 1)NachWriteLnwirdderCursoraufdenAnfangderfolgendenZeile
  3949. gesetzt.
  3950. 2)BeiDateiendarfmitWriteLnnureinSchreibvorgangin TEXT-Typen
  3951. vorgenommenwerden.
  3952.  
  3953. Deklaration:
  3954. PROCEDUREWriteLn(v:VariableBeliebigenTyps);
  3955. PROCEDUREWriteLn(VARt: TEXT;v:VariableBeliebigenTyps);
  3956.  
  3957. Beispiel:
  3958. Write(s);CursorbleibthinterdemletztenZeichenstehen
  3959. WriteLn;CursorandenAnfangdernächstenZeile
  3960. WriteLn(s);CursorandenAnfangdernächstenZeile(Kombination
  3961. ausWrite(s)undWriteLn)
  3962.  
  3963. ≡≡ITG-Pascal-Prozeduren
  3964.  
  3965. AusgabeAufBildschirm
  3966. AusgabeAufDiskette
  3967. AusgabeAufDruckerAuswahl
  3968. AuswahlFeld Bogen
  3969. BreakPointDatenAufDiskette
  3970. DatenVonDisketteDebugEin
  3971. DebugAusDefiniereFunktionsterm
  3972. DreheAufDruckeBildschirm
  3973. EingabeFeldEingabeVonTastatur
  3974. EingabeVonDiskette EinzelschrittEin
  3975. EinzelschrittAusErsetzeBuchstaben
  3976. FärbenFügeBuchstabenEin
  3977. GeheNachGrafikFenster
  3978. GrafikSchirmHinten
  3979. InGradImBogenmaß
  3980. KreisLiesEingaben
  3981. LinkerBogen Links
  3982. LöscheBuchstabenMenü
  3983.  
  3984.  
  3985. MitCursorMitIgel
  3986. MitProtokollMitStift
  3987. NeueZufallsZahlenFolgeÖffneAusgabeDatei
  3988. ÖffneEingabeDateiÖffneFenster
  3989. OhneCursorOhneIgel
  3990. OhneProtokollOhneStift
  3991. PapierFarbePause
  3992.  PunktRechterBogen
  3993.  RechtsSchließeAusgabeDatei
  3994. SchließeEingabeDatei
  3995. SchließeFenster
  3996. SchreibPortStarteStopUhr
  3997. StiftFarbeStrecke
  3998. TextSchirmTon
  3999. UrsprungVertausche
  4000. VorneWähleDatei
  4001. Wischen
  4002.  
  4003. ≡≡AusgabeAufBildschirm
  4004.  
  4005. WenndieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
  4006. Bildschirmerfolgt,mitAusgabeAufDruckeraufdenDruckerodermit
  4007. AusgabeAufDisketteaufdieDisketteumgelenktwurde,kannsiemit
  4008. AusgabeAufBildschirmwiederaufdenBildschirmzurückgelenktwerden.
  4009.  
  4010. Deklaration:
  4011. PROCEDUREAusgabeAufBildschirm;
  4012.  
  4013. Beispiel:
  4014. AusgabeAufDrucker;
  4015. WriteLn("DieseAusgabeerfolgtaufdenDrucker!");
  4016. AusgabeAufBildschirm;
  4017. WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
  4018.  
  4019. ≡≡AusgabeAufDiskette
  4020.  
  4021. MitAusgabeAufDiskettewirddieAusgabe,diemitWrite/WriteLn
  4022. normalerweiseaufdenBildschirmerfolgt,aufdieDiskette/
  4023. Festplatteumgelenkt.ZuvormußabereineAusgabedateimit
  4024. ÖffneAusgabeDatei(DateiName)geöffnetwerden!
  4025.  
  4026. Deklaration:
  4027. PROCEDUREAusgabeAufDiskette;
  4028.  
  4029. Beispiel:
  4030. ÖffneAusgabeDatei("AUSGABE.TXT");
  4031. AusgabeAufDiskette;
  4032. WriteLn("DieseAusgabeerfolgtaufDiskette!");
  4033. AusgabeAufBildschirm;
  4034. WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
  4035. SchließeAusgabeDatei;
  4036.  
  4037. ≡≡AusgabeAufDrucker
  4038.  
  4039. MitAusgabeAufDruckerwirddieAusgabe,diemitWrite/WriteLn
  4040. normalerweiseaufdenBildschirmerfolgt,aufdenDruckerumgelenkt.
  4041.  
  4042. Deklaration:
  4043. PROCEDUREAusgabeAufDrucker;
  4044.  
  4045. Beispiel:
  4046. AusgabeAufDrucker;
  4047. WriteLn("DieseAusgabeerfolgtaufdenDrucker!");
  4048. AusgabeAufBildschirm;
  4049. WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
  4050.  
  4051. ≡≡Auswahl
  4052.  
  4053. MitAuswahlkanneineWahlauseinerListevonDatenerfolgen,diemit
  4054. AuswahlFeldvorherdefiniertwurden.InderVariablenIndexwirddabei
  4055. zurückgegeben,alswievieltesElementdasmitRETURNangewählteinder
  4056. Listeeingetragenwurde.WenndieAuswahlmitESCabgebrochenwird,ist
  4057. Index=0!BeimVerlassenderAuswahlwirddieAnzahlderAuswahlelemente
  4058. automatischaufNullgesetzt.
  4059. DerlinkeobereEckpunktdesAuswahlfensterhatdieKoordinatenP(x/y).
  4060.  
  4061. Deklaration:
  4062. PROCEDUREAuswahl(x,y:INTEGER;VARIndex:INTEGER);
  4063.  
  4064. Beispiel:
  4065. VAR
  4066.     Liste:ARRAY[1..60]OFSTRING[20];
  4067.     n,Wahl:INTEGER;
  4068.  
  4069.  
  4070. BEGIN
  4071.     FORn:=1TO60DOBEGIN
  4072. Str(n:5,Liste[n]);
  4073. AuswahlFeld(Liste[n]);ElementealsSTRINGindie
  4074.     END;Auswahllisteeintragen
  4075.     ÖffneFenster(1,1,80,25,OhneRahmen);altenBildschirminhalt
  4076. speichern
  4077.     Auswahl(10,3,Wahl);linkenoberenEckpunktder
  4078. AuswahlaufP(10/3)setzen
  4079. unddasMenüaufrufenWahl
  4080. enthältdenIndexdes
  4081. gewähltenListenelementes
  4082.     SchließeFenster;altenBildschirmwieder-
  4083. herstellen
  4084.  
  4085.  
  4086.     IFWahl>0THENBEGIN
  4087. WriteLn(Liste[Wahl]);
  4088.     END
  4089.     ELSEBEGIN
  4090. WriteLn("Auswahlwurdemit<ESC>abgebrochen");
  4091.     END;
  4092. END.
  4093.  
  4094. ≡≡AuswahlFeld
  4095.  
  4096. AuswahlFeldfügteinerListe,ausdereinElementausgewähltwerden
  4097. soll,einElementhinzu.DerText,derindemAuswahlmenüerscheinen
  4098. soll,mußderProzedurAuswahlFeldalsSTRINGübergebenwerden.
  4099.  
  4100. Deklaration:
  4101. PROCEDUREAuswahlFeld(DatenText:STRING[40]);
  4102.  
  4103. Beispiel:
  4104. VAR
  4105.     Liste:ARRAY[1..60]OFSTRING[20];
  4106.     n,Wahl:INTEGER;
  4107.  
  4108.  
  4109. BEGIN
  4110.     FORn:=1TO60DOBEGIN
  4111. Str(n:5,Liste[n]);
  4112. AuswahlFeld(Liste[n]);ElementealsSTRINGindie
  4113.     END;Auswahllisteeintragen
  4114.     ÖffneFenster(1,1,80,25,OhneRahmen);altenBildschirminhalt
  4115. speichern
  4116.     Auswahl(10,3,Wahl);linkenoberenEckpunktder
  4117. AuswahlaufP(10/3)setzen
  4118. unddasMenüaufrufenWahl
  4119. enthältdenIndexdes
  4120. gewähltenListenelementes
  4121.     SchließeFenster;altenBildschirmwieder-
  4122. herstellen
  4123.  
  4124.  
  4125.     IFWahl>0THENBEGIN
  4126. WriteLn(Liste[Wahl]);
  4127.     END
  4128.     ELSEBEGIN
  4129. WriteLn("Auswahlwurdemit<ESC>abgebrochen");
  4130.     END;
  4131. END.
  4132.  
  4133. ≡≡DatenAufDiskette
  4134.  
  4135. MitderAnweisungDatenAufDiskettekannderInhalteinerbeliebigen
  4136. Variablen,dieallerdingskeineDateivariable( TEXToderFILE)sein
  4137. darf,unterdemangegebenenDateinamenaufDiskettegespeichertwerden.
  4138.  
  4139. Deklaration:
  4140. PROCEDUREDatenAufDiskette(DateiName:STRING;
  4141. v:VariableBeliebigenTyps);
  4142.  
  4143. Beispiel:
  4144.  
  4145.  
  4146. TYPE
  4147.     DatenSatz=RECORDDatenstrukturdefinieren
  4148. Firma:STRING[40];
  4149. Ort:STRING[20];
  4150. Plz:WORD;
  4151.     END;
  4152. VAR
  4153.     d:DatenSatz;Variabledeklarieren
  4154. BEGIN
  4155.     d.Firma:="SoftwareVertrieb";VariablemitWerten
  4156.     d.Ort:="Kiel";belegen
  4157.     d.Plz:=2300;undunterdemNamen
  4158.     DatenAufDiskette("FIRMEN.DAT",d);"FIRMEN.DAT"abspeichern
  4159. END;
  4160.  
  4161. ≡≡DatenVonDiskette
  4162.  
  4163. MitderAnweisungDatenVonDiskettekannderInhalteinerbeliebigen
  4164. Variablen,dieallerdingskeineDateivariable( TEXToderFILE)sein
  4165. darf,unterdemangegebenenDateinamenvonDiskettegelesenwerden.
  4166.  
  4167. Deklaration:
  4168. PROCEDUREDatenVonDiskette(DateiName:STRING;
  4169. VARv:VariableBeliebigenTyps);
  4170.  
  4171. Beispiel:
  4172. TYPE
  4173.     DatenSatz=RECORDDatenstrukturdefinieren
  4174. Firma:STRING[40];
  4175. Ort:STRING[20];
  4176. Plz:WORD;
  4177.     END;
  4178.  
  4179.  
  4180. VAR
  4181.     d:DatenSatz;Variabledeklarieren
  4182. BEGIN
  4183.     IFEsGibtDatei("FIRMEN.DAT")THENBEGINgibtesdieDatei
  4184. "FIRMEN.DAT"?
  4185. DatenVonDiskette("FIRMEN.DAT",d);wennjavonDiskette
  4186. indieVariabledlesen
  4187. WriteLn(d);undausdrucken
  4188.     END
  4189.     ELSEBEGIN
  4190. WriteLn("FIRMEN.DATnichtgefunden");sonstFehlermeldung
  4191.     END;
  4192. END;
  4193.  
  4194. ≡≡DefiniereFunktionsTerm
  4195.  
  4196. WennmitDefiniereFunktionstermeinFunktionstermfestgelegtwurde,
  4197. kannmitFunktionWerteinWertaneinerStelleberechnetwerden.
  4198.  
  4199. Deklaration:
  4200. PROCEDUREDefiniereFunktionsterm(Term:STRING);
  4201.  
  4202. Beispiel:
  4203. DefiniereFunktionsterm("5*x");    zuerstFunktionstermfestlegen
  4204. IFFunktionstermFehler=0THENBEGINkeinFehlerenthalten?
  4205.     FORn:=1TO5DOBEGIN
  4206. WriteLn(FunktionsWert(n));    erstdannFunktionswerte
  4207.     END;berechnen
  4208. END;
  4209.  
  4210.  
  4211. ≡≡DruckeBildschirm
  4212.  
  4213. MitDruckeBildschirmwirdderInhaltdesText-oderdesGrafikschirms
  4214. ausgedruckt.
  4215.  
  4216. Deklaration:
  4217. PROCEDUREDruckeBildschirm;
  4218.  
  4219. Beispiel:
  4220. Grafikschirm;    indenGrafikmodusschalten
  4221. ZeichneIrgendEtwas;Grafikerstellen
  4222. DruckeBildschirm;undausdrucken
  4223.  
  4224. ≡≡EingabeFeld
  4225.  
  4226. MitEingabeFeldwirdeinFeldeinerBildschirmmaskezurEingabeeines
  4227. Datensatzesdefiniert.WennallegewünschtenFelderdefiniertwurden,
  4228. wirddasEinlesenmitLiesEingabenausgeführt.DabeikannmitdenTasten
  4229. "Auf(CrsUp)","Ab(CrsDn)","Pos1(Home)"und"Ende(End)"zwischenden
  4230. Eingabefeldernbeliebigoftgewechseltwerden.DieEingabewirdbeendet,
  4231. wennindemzuletztdefiniertenFelddieRETURN-Tastegedrücktwirdoder
  4232. ineinembeliebigenFelddieESC-TasteodereinederTastenkombinationen
  4233. Ctrl-Bild-Auf(Ctrl-PgUp)oderCtrl-Bild-Ab(Ctrl-PgDn)gedrücktwird.
  4234.  
  4235.  
  4236. Deklaration:
  4237. PROCEDUREEingabeFeld(x,y:INTEGER;
  4238. Erklärung:STRING;
  4239. VARv:EinfacheVariable);
  4240.  
  4241. EinfacheVariableistvomTypCHAR,STRING,BYTE,INTEGER,WORD,
  4242. LONGINT,REAL,DOUBLE,EXTENDED
  4243. oderBOOLEAN
  4244.  
  4245. Beispiel:
  4246.  
  4247.  
  4248. VAR
  4249.     r:REAL;
  4250.     i:INTEGER;
  4251.     s:STRING[20];
  4252. BEGIN
  4253.     r:=1.234; BelegungderVariablenmitStartwerten,
  4254.     i:=500;dieeditiertwerdensollen
  4255.     Name:="Irgendwer";
  4256.  
  4257.  
  4258.     REPEAT
  4259. EingabeFeld(5,3,"Dezimalzahl:",r);
  4260. EingabeFeld(2,6,"ganzeZahlzwischen0und1000:",i);
  4261. EingabeFeld(10,15,"Name:",s);
  4262. Zuerstwirdfürallezubearbeitenden
  4263. VariableneinEingabefelddefiniert.
  4264. DieseDefinitionmußinnerhalbder
  4265. Schleifestehen,weilLiesEingaben
  4266. beimBeendenalleDefinitionenlöscht!
  4267. LiesEingaben;JetztwirdderEditorfürdieEingabe-
  4268. felderaufgerufen.
  4269.     UNTIL((0>=i)AND(i<=1000))
  4270. OR(LetzteTaste=ESC);
  4271. WurdemitESCabgebrochen?
  4272.  
  4273. ≡≡EingabeVonTastatur
  4274.  
  4275. EingabeVonTastaturaktiviertdieTastaturalsEingabemedium,wenn
  4276. irgendwannvorherimProgrammdieEingabemitEingabeVonDisketteauf
  4277. dieDisketteumgelenktwurde.BeimStarteinesProgrammserfolgtdie
  4278. EingabeautomatischüberdieTastatur,wennkeineandereAnweisung
  4279. gegebenwurde.
  4280.  
  4281. Deklaration:
  4282. PROCEDUREEingabeVonTastatur;
  4283.  
  4284. Beispiel:
  4285.  
  4286.  
  4287. VAR
  4288.     s:STRING;
  4289. BEGIN
  4290.     ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
  4291.     EingabeVonDiskette;undaktivieren
  4292.     Write("EingabevonderDiskette:");
  4293.     ReadLn(s);StringvonderDiskettelesen
  4294.     EingabeVonTastatur;Tastaturaktivieren
  4295.     Write("EingabevonderTastatur:");
  4296.     ReadLn(s);StringüberdieTastaturlesen
  4297.     SchließeEingabeDatei;Dateiwiederschließen
  4298. END;
  4299.  
  4300. ≡≡EingabeVonDiskette
  4301.  
  4302. EingabeVonDisketteaktiviertdieDisketteanstellederTastaturals
  4303. Eingabemedium,wennirgendwannvorherimProgrammmitÖffneEingabeDatei
  4304. eineDateifestgelegtwurde,ausderdieZeichengelesenwerdensollen.
  4305.  
  4306. Deklaration:
  4307. PROCEDUREEingabeVonDiskette;
  4308.  
  4309. Beispiel:
  4310.  
  4311.  
  4312. VAR
  4313.     s:STRING;
  4314. BEGIN
  4315.     ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
  4316.     EingabeVonDiskette;undaktivieren
  4317.     Write("EingabevonderDiskette:");
  4318.     ReadLn(s);StringvonderDiskettelesen
  4319.     EingabeVonTastatur;Tastaturaktivieren
  4320.     Write("EingabevonderTastatur:");
  4321.     ReadLn(s);StringüberdieTastaturlesen
  4322.     SchließeEingabeDatei;Dateiwiederschließen
  4323. END;
  4324.  
  4325. ≡≡ErsetzeBuchstaben
  4326.  
  4327. ErsetzeBuchstabenersetzteinenBuchstabeneinesStringsdurch
  4328. einenanderen.
  4329.  
  4330. Deklaration:
  4331. PROCEDUREErsetzeBuchstaben(VARZeichenkette:STRING;
  4332. WievielterBuchstabe:WORD;
  4333. DurchWelchenBuchstaben:CHAR);
  4334.  
  4335. Beispiel:
  4336. s:="abcdef";
  4337. ErsetzeBuchstaben(s,3,"x");ersetztdendrittenBuchstaben"c"
  4338. durch"x".sistdann"abxdef".
  4339.  
  4340. ≡≡FügeBuchstabenEin
  4341.  
  4342. FügeBuchstabenEinfügteinenBuchstabenodereinenStringineinen
  4343. StringabeinervorgegebenenPositionein.
  4344.  
  4345. Deklaration:
  4346. PROCEDUREFügeBuchstabenEin(WelchenBuchstaben:CHAR;
  4347. VARInZeichenkette:STRING;
  4348. WievielterBuchstabe:WORD);
  4349. PROCEDUREFügeBuchstabenEin(WelcheZeichenkette:STRING;
  4350. VARInZeichenkette:STRING;
  4351. AbWelchemBuchstaben:WORD);
  4352.  
  4353. Beispiel:
  4354.  
  4355. 1)
  4356.     s:="abcdef";
  4357.     FügeBuchstabenEin("x",s,3);fügtdenBuchstaben"x"andiedritte
  4358. Stellezwischen"b"und"c"ein.
  4359. sistdann"abxcdef".
  4360.  
  4361. 2)
  4362.     s:="abcdef";
  4363.     t:="xy";
  4364.     FügeBuchstabenEin(t,s,5);fügtdieZeichenkette"xy"beginnend
  4365. anderfünftenStellezwischen"d"
  4366. und"e"ein.
  4367. sistdann"abcdxyef".
  4368.  
  4369. ≡≡InGrad
  4370.  
  4371. InGradbewirkt,daßalleBerechnungenmittrigonometrischenFunktionen
  4372. inGrad(Altgrad:α=360°fürdenVollkreis)durchgeführtwerden.
  4373.  
  4374. Deklaration:
  4375. PROCEDUREInGrad;
  4376.  
  4377. Beispiel:
  4378. InGrad;inGradrechnen
  4379. WriteLn(sin(90));ergibt1.00000..
  4380. ImBogenmaß; imBogenmaßrechnen
  4381. WriteLn(sin(pi/2));ergibt1.00000..
  4382.  
  4383. ≡≡ImBogenmaß
  4384.  
  4385. ImBogenmaßbewirkt,daßalleBerechnungenmittrigonometrischenFunktionen
  4386. imBogenmaß(α=2*pifürdenVollkreis)durchgeführtwerden.BeimStart
  4387. einesProgrammserfolgtdieBerechnungimmerinGrad,wennkeineandere
  4388. Anweisunggegebenwurde.
  4389.  
  4390. Deklaration:
  4391. PROCEDUREImBogenmaß;
  4392.  
  4393. Beispiel:
  4394. ImBogenmaß; imBogenmaßrechnen
  4395. WriteLn(sin(pi/2));ergibt1.00000..
  4396. InGrad;inGradrechnen
  4397. WriteLn(sin(90));ergibt1.00000..
  4398.  
  4399. ≡≡LiesEingaben
  4400.  
  4401. MitLiesEingabenwirddieEingabeeinesDatensatzesgestartet,der
  4402. zuvorelementweisemitEingabeFelddefiniertwurde.Dabeikannmit
  4403. denTasten"Auf(CrsUp)","Ab(CrsDn)","Pos1(Home)"und"Ende(End)"
  4404. zwischendenEingabefeldernbeliebigoftgewechseltwerden.Die
  4405. Eingabewirdbeendet,wennindemzuletztdefiniertenFelddie
  4406. RETURN-TastegedrücktwirdoderineinembeliebigenFelddie
  4407. ESC-Tastegedrücktwird.
  4408.  
  4409. Deklaration:
  4410. PROCEDURELiesEingaben;
  4411.  
  4412. Beispiel:
  4413.  
  4414.  
  4415. VAR
  4416.     r:REAL;
  4417.     i:INTEGER;
  4418.     s:STRING[20];
  4419. BEGIN
  4420.     r:=1.234; BelegungderVariablenmitStartwerten,
  4421.     i:=500;dieeditiertwerdensollen
  4422.     Name:="Irgendwer";
  4423.  
  4424.  
  4425.     REPEAT
  4426. EingabeFeld(5,3,"Dezimalzahl:",r);
  4427. EingabeFeld(2,6,"ganzeZahlzwischen0und1000:",i);
  4428. EingabeFeld(10,15,"Name:",s);
  4429. Zuerstwirdfürallezubearbeitenden
  4430. VariableneinEingabefelddefiniert.
  4431. DieseDefinitionmußinnerhalbder
  4432. Schleifestehen,weilLiesEingaben
  4433. beimBeendenalleDefinitionenlöscht!
  4434. LiesEingaben;JetztwirdderEditorfürdieEingabe-
  4435. felderaufgerufen.
  4436.     UNTIL(0<=i)AND(i<=1000);
  4437.  
  4438. ≡≡LöscheBuchstaben
  4439.  
  4440. LöscheBuchstabenlöschteinenodermehrereaufeinanderfolgende
  4441. BuchstabenbeginnendabeinervorgegebenenStelle.
  4442.  
  4443. Deklaration:
  4444. PROCEDURELöschenBuchstaben(VARZeichenkette:STRING;
  4445. WelchenBuchstaben,
  4446. WievieleBuchstaben:WORD);
  4447.  
  4448. Beispiel:
  4449. s:="abxycdef";
  4450. LöscheBuchstaben(s,3,2);löschtabdemdrittenBuchstabenzwei
  4451. Buchstaben.sistdann"abcdef".
  4452.  
  4453. ≡≡Menü
  4454.  
  4455. MenüerrichteteinPulldownmenüaneinervorgegebenenStelledes
  4456. BildschirmsmitvorgegebenenHotkeys,überdieeinMenüpunktdirekt
  4457. angewähltwerdenkann.DemalsHotkeyvorgesehenenBuchstabenwird
  4458. dasZeichen^vorangestellt.InnerhalbdesMenüskannderAnwahlbalken
  4459. auchmitdenTasten"Auf(CrsUp)","Ab(CrsDn)","Ende(End)"und
  4460. "Pos1(Home)"verschobenwerden.CRaktiviertdenmitdemBalken
  4461. unterlegtenMenüpunktundliefertalsErgebnisdenalsHotkey
  4462. vorgesehenenBuchstabenzurück.ESCbrichtdieAnwahlabundliefert
  4463. ESC(CHR(27))alsErgebnis.
  4464.  
  4465. Deklaration:
  4466. PROCEDUREMenü(x,y:WORD;
  4467. Menüpunkte:STRING;
  4468. VARAngewählt:CHAR);
  4469.  
  4470.  
  4471. Beispiel:
  4472. VAR
  4473.     c:CHAR;
  4474. BEGIN
  4475.     REPEAT
  4476. Menü(10,5,"^Laden;^Bearbeiten;^Speichern;^Ende;",c);
  4477. DasMenühatfürdenlinkenoberenEckpunktdie
  4478. Koordinaten(10/5).AlsHotkeyssind"L","B",
  4479. "S"und"E"durchdasvorangestellte"^"
  4480. definiert.DieeinzelnenMenüpunktewerdendurch
  4481. einSemikolon";"getrennt.ImMenüistbeim
  4482. StartdieobersteZeilemit"Laden"vollständig
  4483. hellunterlegt.IndenfolgendenZeilensindes
  4484. dieBuchstaben"B","S"und"E".DurchDrückender
  4485. RETURN-Tasteoderdes"L"'serhältcdenWert"L".
  4486.  
  4487.  
  4488. AufdemBildschirmerscheintdasfolgendeMenü:
  4489.  
  4490. ╔════════════╗
  4491. ║Laden║DieseZeileisthellunterlegt.
  4492. ║Bearbeiten║"B"isthellunterlegt.
  4493. ║Speichern║"S"isthellunterlegt.
  4494. ║Ende║"E"isthellunterlegt.
  4495. ╚══════CR/ESC╝
  4496.  
  4497.  
  4498. JetztwirddieVariablecausgewertetundeswerdendieeinzelnen
  4499. ProzedurenjenachInhaltvoncaufgerufen.
  4500.  
  4501. CASEcOF
  4502. "L":Laden;
  4503. "B":Bearbeiten;
  4504. "S":Speichern;
  4505. ELSEClrScr;JedermöglicheFallmußbei
  4506. CASEberücksichtigtwerden,
  4507. sonstkommteszueinem
  4508. Programm-Abbruch
  4509. END;
  4510.     UNTIL(c="E")OR(c=CHR(27));"E"oderESC-Taste
  4511.  
  4512. ≡≡MitCursor
  4513.  
  4514. InITG-PASCAListderCursornormalerweisenurinREAD-Anweisungen
  4515. sichtbar.Wennmanerreichenwill,daßderCursorauchsonstsichtbar
  4516. ist,mußmanihndurchMitCursoreinschalten.
  4517. StartvorgabeeinesProgrammsistohneCursor.
  4518.  
  4519. Deklaration:
  4520. PROCEDUREMitCursor;
  4521.  
  4522. Beispiel:
  4523.  
  4524.  
  4525. MitCursor;Cursoreinschalten
  4526. Write("GebenSieeinenBuchstabenein:");Cursorblinkthinter":"
  4527. c:=ReadKey;ZeichenüberdieTastatur
  4528. einlesen
  4529. OhneCursor;Cursorausschalten
  4530. Write("GebenSieeinenBuchstabenein:");Cursorblinktnicht
  4531. hinter":"
  4532. c:=ReadKey;Zeichenüberdie
  4533. Tastatureinlesen
  4534.  
  4535. ≡≡MitProtokoll
  4536.  
  4537. ITG-PASCALprotokolliertalleTextausgabenmitWrite-undRead-
  4538. AnweisungenineinemzweitenEditorfenstermit,soferngenügend
  4539. SpeicherplatzzurVerfügungsteht.WenndiesesProtokollzwischendurch
  4540. durchOhneProtokollabgeschaltetwurde,kannesdurchMitProtokoll
  4541. wiedereingeschaltetwerden.
  4542. StartvorgabeeinesProgrammsistmitProtokoll.
  4543.  
  4544. Deklaration:
  4545. PROCEDUREMitProtokoll;
  4546.  
  4547. Beispiel:
  4548. OhneProtokoll;
  4549. Write("DieserTextwirdnichtimzweitenEditorfenster");
  4550. WriteLn("mitprotokolliert.");
  4551. MitProtokoll;
  4552. Write("DieserTextwirdimzweitenEditorfenster");
  4553. WriteLn("mitprotokolliert.");
  4554.  
  4555. ≡≡NeueZufallsZahlenFolge
  4556.  
  4557. NeueZufallsZahlenFolgeerzeugtdenAnfangeinerneuerFolgevon
  4558. Zufallszahlen.
  4559.  
  4560. Deklaration:
  4561. PROCEDURENeueZufallsZahlenFolge;
  4562.  
  4563. Beispiel:
  4564. NeueZufallsZahlenFolge;AnfangeinerneuenFolgeerzeugen
  4565. Write(GanzeZufallsZahl(100));Zufallszahlzwischen0und99drucken
  4566.  
  4567.  
  4568. ≡≡ÖffneAusgabeDatei
  4569.  
  4570. BevordieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
  4571. Bildschirmerfolgt,mitAusgabeAufDisketteaufdieDiskette/
  4572. Festplatteumgelenktwird,mußeineAusgabedateimit
  4573. ÖffneAusgabeDatei(DateiName)geöffnetwerden!
  4574.  
  4575. Deklaration:
  4576. PROCEDUREÖffneAusgabeDatei(DateiName:STRING);
  4577.  
  4578. Beispiel:
  4579. ÖffneAusgabeDatei("AUSGABE.TXT");
  4580. AusgabeAufDiskette;
  4581. WriteLn("DieseAusgabeerfolgtaufDiskette!");
  4582. AusgabeAufBildschirm;
  4583. WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
  4584. SchließeAusgabeDatei;
  4585.  
  4586. ≡≡ÖffneEingabeDatei
  4587.  
  4588. BevordieEingabe,dienormalerweiseüberdieTastaturerfolgt,mit
  4589. EingabeVonDisketteaufdieDiskette/Festplatteumgelenktwerdenkann,
  4590. mußmitÖffneEingabeDateizumLesendeklariertwerden.
  4591.  
  4592. Deklaration:
  4593. PROCEDUREÖffneEingabeDatei(DateiName:STRING);
  4594.  
  4595. Beispiel:
  4596.  
  4597.  
  4598. VAR
  4599.     s:STRING;
  4600. BEGIN
  4601.     ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
  4602.     EingabeVonDiskette;undaktivieren
  4603.     Write("EingabevonderDiskette:");
  4604.     ReadLn(s);StringvonderDiskettelesen
  4605.     EingabeVonTastatur;Tastaturaktivieren
  4606.     Write("EingabevonderTastatur:");
  4607.     ReadLn(s);StringüberdieTastaturlesen
  4608.     SchließeEingabeDatei;Dateiwiederschließen
  4609. END;
  4610.  
  4611. ≡≡ÖffneFenster
  4612.  
  4613. ÖffneFensterspeichertdenaugenblicklichenInhaltdesTextbildschirmes
  4614. abunddefinierteinneuesTextfenster,dasmiteinemRahmenversehen
  4615. werdenkann.DerlinkeobereEckpunktdesFenstersistfürallejetzt
  4616. folgendenTextausgabender PunktP(1/1).
  4617. JedesFenster,dasgeöffnetwurde,mußauchwiedergeschlossenwerden!
  4618.  
  4619. Deklaration:
  4620. PROCEDUREÖffneFenster(xLinks,yOben,xRechts,yUnten,
  4621. MitOderOhneRahmen:INTEGER);
  4622.  
  4623.  
  4624. Esmußgelten:1<=xLinks<xRechts<=80
  4625. 1<=yOben<yUnten<=25
  4626. MitOderOhneRahmenε{MitRahmen,OhneRahmen}
  4627.  
  4628. Beispiel:
  4629.  
  4630.  
  4631. GotoXY(10,10);
  4632. Write("DieserTextverschwindetunterdemFenster");
  4633. Delay(2000);
  4634. ÖffneFenster(5,5,75,20,MitRahmen);altenBildschirminhalt
  4635. sichernundFensteröffnen
  4636. ClrScr;Fensterinhaltlöschen
  4637. GotoXY(5,5);relativeKoordinatenim
  4638. Fenster
  4639. Write("absoluteKoordinaten(10/10)");
  4640. Delay(2000);2Sekundenwarten
  4641. SchließeFenster;altenBildschirminhalt
  4642. wiederherstellenundaltes
  4643. Fensterwiederöffnen
  4644. Delay(2000);
  4645.  
  4646. ≡≡OhneCursor
  4647.  
  4648. InITG-PASCAListderCursornormalerweisenurinREAD-Anweisungen
  4649. sichtbar.Wennmanerreichenwill,daßderCursorauchsonstsichtbar
  4650. ist,mußmanihndurchMitCursoreinschalten.DurchOhneCursorwirder
  4651. wiederabgeschaltet.
  4652. StartvorgabeeinesProgrammsistohneCursor.
  4653.  
  4654. Deklaration:
  4655. PROCEDUREOhneCursor;
  4656.  
  4657. Beispiel:
  4658.  
  4659.  
  4660. MitCursor;Cursoreinschalten
  4661. Write("GebenSieeinenBuchstabenein:");Cursorstehthinter":"
  4662. c:=ReadKey;Zeichenüberdie
  4663. Tastatureinlesen
  4664. OhneCursor;Cursorausschalten
  4665. Write("GebenSieeinenBuchstabenein:");Cursorblinktnicht
  4666. hinter":"
  4667. c:=ReadKey;Zeichenüberdie
  4668. Tastatureinlesen
  4669.  
  4670. ≡≡OhneProtokoll
  4671.  
  4672. ITG-PASCALprotokolliertalleTextausgabenmitWrite-undRead-
  4673. AnweisungenineinemzweitenEditorfenstermit,soferngenügend
  4674. SpeicherplatzzurVerfügungsteht.DiesesProtokollkanndurch
  4675. OhneProtokollabgeschaltetwerden.
  4676. StartvorgabeeinesProgrammsistmitProtokoll.
  4677.  
  4678. Deklaration:
  4679. PROCEDUREOhneProtokoll;
  4680.  
  4681. Beispiel:
  4682. OhneProtokoll;
  4683. Write("DieserTextwirdnichtimzweitenEditorfenster");
  4684. WriteLn("mitprotokolliert.");
  4685. MitProtokoll;
  4686. Write("DieserTextwirdimzweitenEditorfenster");
  4687. WriteLn("mitprotokolliert.");
  4688.  
  4689. ≡≡Pause
  4690.  
  4691. PauseunterbrichteinProgrammsolange,bisdieRETURN-Tastegedrückt
  4692. wird.
  4693.  
  4694. Deklaration:
  4695. PROCEDUREPause;
  4696.  
  4697. Beispiel:
  4698. WriteLn("WeitermitderRETURN-Taste");
  4699. Pause;aufDrückenderRETURN-
  4700. Tastewarten
  4701. WriteLn("DieRETURN-Tastewurdebetätigt");
  4702.  
  4703. ≡≡SchließeAusgabeDatei
  4704.  
  4705. WenndieAusgabe,diemitWrite/WriteLnnormalerweiseaufden
  4706. Bildschirmerfolgt,mitAusgabeAufDisketteaufdieDiskette/
  4707. Festplatteumgelenktwurde,mußdieAusgabedateivordemProgrammende
  4708. mitSchließeAusgabeDateigeschlossenwerden!
  4709.  
  4710. Deklaration:
  4711. PROCEDURESchließeAusgabeDatei;
  4712.  
  4713. Beispiel:
  4714. ÖffneAusgabeDatei("AUSGABE.TXT");
  4715. AusgabeAufDiskette;
  4716. WriteLn("DieseAusgabeerfolgtaufDiskette!");
  4717. AusgabeAufBildschirm;
  4718. WriteLn("DieseAusgabeerfolgtaufdenBildschirm.");
  4719. SchließeAusgabeDatei;
  4720.  
  4721. ≡≡SchließeEingabeDatei
  4722.  
  4723. SchließeEingabeDateischließtdieDatei,diemitÖffneEingabeDatei
  4724. zumLesenvonEingabenanstellederTastaturgeöffnetwurde.
  4725.  
  4726. Deklaration:
  4727. PROCEDURESchließeEingabeDatei;
  4728.  
  4729. Beispiel:
  4730.  
  4731.  
  4732. VAR
  4733.     s:STRING;
  4734. BEGIN
  4735.     ÖffneEingabeDatei("EINGABEN.DAT");Eingabedateizuweisen
  4736.     EingabeVonDiskette;undaktivieren
  4737.     Write("EingabevonderDiskette:");
  4738.     ReadLn(s);StringvonderDiskettelesen
  4739.     EingabeVonTastatur;Tastaturaktivieren
  4740.     Write("EingabevonderTastatur:");
  4741.     ReadLn(s);StringüberdieTastaturlesen
  4742.     SchließeEingabeDatei;Dateiwiederschließen
  4743. END;
  4744.  
  4745. ≡≡SchließeFenster
  4746.  
  4747. SchließeFensterstelltdenInhaltunddieFensterkoordinatendes
  4748. Textfensterswiederher,wieesdemAufrufderProzedurÖffneFenster
  4749. vorhandenwar.EsdürfenmehrereFenstergleichzeitiggeöffnetsein.
  4750. GeschlossenwirdimmerdaszuletztgeöffneteFenster.
  4751. JedesFenster,dasgeöffnetwurde,mußauchwiedergeschlossenwerden!
  4752.  
  4753. Deklaration:
  4754. PROCEDURESchließeFenster;
  4755.  
  4756. Beispiel:
  4757.  
  4758.  
  4759. GotoXY(10,10);
  4760. Write("DieserTextverschwindetunterdemFenster");
  4761. Delay(2000);
  4762. ÖffneFenster(5,5,75,20,MitRahmen);altenBildschirminhalt
  4763. sichernundFensteröffnen
  4764. ClrScr;Fensterinhaltlöschen
  4765. GotoXY(5,5);relativeKoordinatenim
  4766. Fenster
  4767. Write("absoluteKoordinaten(10/10)");
  4768. Delay(2000);2Sekundenwarten
  4769. SchließeFenster;altenBildschirminhalt
  4770. wiederherstellenundaltes
  4771. Fensterwiederöffnen
  4772. Delay(2000);
  4773.  
  4774. ≡≡SchreibPort
  4775.  
  4776. MitSchreibPortwirdeinWertübereinenPortdesComputersandie
  4777. Peripherieausgegeben.
  4778. ACHTUNG:VorderBenutzungdieserAnweisungsolltemansichabergenau
  4779. informieren,daeinSchreibenineinenfalschenPortzu
  4780. Zerstörungenführenkann!
  4781.  
  4782. Deklaration:
  4783. PROCEDURESchreibPort(PortAdresse,Ausgabewert:WORD);
  4784.  
  4785. Beispiel:
  4786. SchreibPort(PortAdresse,Ausgabewert);schreibtdenAusgabewert
  4787. andiePortadresse
  4788.  
  4789. ≡≡StarteStopUhr
  4790.  
  4791. StarteStopUhrsetztdieZeitfüreineStopuhrauf0undstarteteine
  4792. Zeitmessung.DiewährendderProgrammausführungverstricheneZeitkann
  4793. mitderFunktionStopZeitausgelesenwerden.
  4794.  
  4795. StarteStopUhrwirdautomatischbeijedemProgrammstartaufgerufen.
  4796.  
  4797. Deklaration:
  4798. PROCEDUREStarteStopUhr;
  4799.  
  4800. Beispiel:
  4801. StarteStopUhr;Stopuhrauf0setzen
  4802. TueIrgendetwas;
  4803. Write(StopZeit);ZeitdauerinSekundenanzeigen,diefür
  4804. TueIrgendetwasbenötigtwurden.
  4805.  
  4806. ≡≡Ton
  4807.  
  4808. TonerzeugteinenTonmitvorgegebenerFrequenzundDauer.
  4809.  
  4810. Deklaration:
  4811. PROCEDURETon(Frequenz,MilliSekunden:WORD);
  4812.  
  4813. Beispiel:
  4814. Ton(440,1000);erzeugtfür1000ms(1s)einenTonder
  4815. Frequenz440Hz
  4816.  
  4817. ≡≡Vertausche
  4818.  
  4819. VertauschevertauschtdieInhaltezweierVariablenbeliebigenTyps
  4820. außerFILE-und TEXT-Variablengegeneinander.
  4821.  
  4822. Deklaration:
  4823. PROCEDUREVertausche(VARa,b:VariableBeliebigenTyps);
  4824.  
  4825. Beispiel:
  4826. a:="a"; Wertzuweisungen
  4827. b:="b";
  4828. Vertausche(a,b);jetzthatadenInhalt"b"undbdenInhalt"a"
  4829.  
  4830. ≡≡WähleDatei
  4831.  
  4832. WähleDatei(x,y,Maske,Dateiname)öffneteinAuswahlfenstermitdem
  4833. linkenoberenEckpunktP(x/y)alsBildschirmkoordinaten,indemalle
  4834. VerzeichnisseundalleDateien,diederMaskeentsprechen,angezeigt
  4835. werden.MitdenCursortastenwirdeinVerzeichnisodereinDateiname
  4836. angewählt.ImFalleeinesVerzeichnisseswirdindiesesvorübergehend
  4837. gewechselt,imFalleeinesDateinamenswirddieserandasausführende
  4838. Programmübergeben.MitderESC-TastekanndieWahlabgebrochenwerden.
  4839. DerDateinameistdannleer.DerBildschirmwirdnachVerlassendes
  4840. Menüsautomatischrestauriert.
  4841.  
  4842. Deklaration:
  4843. PROCEDUREWähleDatei(x,y:INTEGER;
  4844. Maske:STRING;
  4845. VARDateiname:STRING);
  4846.  
  4847.  
  4848. Beispiel:
  4849. VAR
  4850.  
  4851. Dateiname:STRING;
  4852. BEGIN
  4853.  
  4854. WähleDatei(10,3,"*.PAS",Dateiname);allePASCAL-Programme
  4855. anzeigen
  4856.  
  4857. IFDateiname<>""THENBEGIN
  4858. DatenVonDiskette(Dateiname,Variable);InhaltderDateian
  4859.  
  4860. END;Variableübergaben
  4861. END;
  4862.  
  4863. ≡≡Debugger
  4864.  
  4865. DebugEin
  4866. DebugAus
  4867. BreakPoint
  4868. EinzelschrittEin
  4869. EinzelschrittAus
  4870.  
  4871. ≡≡DebugEin
  4872.  
  4873. AbdiesemZeitpunktwerdenalledurcheininderDeklaration
  4874. vorangestelltes"!"markiertenVariablenmitihremWertundder
  4875. Quelltextzeileangezeigt,bisdieAnweisungDebugAusausgeführt
  4876. wird.
  4877.  
  4878. ZusätzlichzurAnzeigeaufdemBildschirmwerdenalle
  4879. InformationenineinzweitesEditor-Fenstergeschrieben,
  4880. soferngenügendSpeicherplatzzurVerfügungsteht,und
  4881. könnennachBeendigungdesProgrammsunter
  4882. "Editor/Programm-/Fehler-Ausgabeansehen"betrachtetund
  4883. gegebenenfallsauchmit"Blockschreiben"aufDiskettegespeichert
  4884. werden.
  4885.  
  4886. 2Beispiele:
  4887.  
  4888.  
  4889. 1)PROCEDUREp(!a,b:INTEGER);
  4890.  
  4891. (*nurdieVariableaistmarkiert,bnicht*)
  4892. VAR
  4893. c,!d:REAL;
  4894.  
  4895. (*nurdieVariabledistmarkiert,cnicht*)
  4896. BEGIN
  4897. c:=a^b;
  4898.  
  4899. (*keineAusgabederVariablen*)
  4900. DebugEin;
  4901.  
  4902. (*QuelltextausgabeundAusgabederVariablenwird
  4903. abhierausgeführt*)
  4904. d:=c/a;
  4905. c:=d*c;
  4906. DebugAus;
  4907.  
  4908. (*Ausgabewirdnichtmehrdurchgeführt*)
  4909. b:=a;
  4910. END;
  4911.  
  4912. 2)PROGRAMFakultät;
  4913. VAR
  4914. !n,!m:INTEGER;
  4915. FUNCTIONFak(!n:GanzeZahl):INTEGER;
  4916. VAR
  4917.  
  4918. !f:INTEGER;
  4919. (*fwirdhierbenutzt,weilFunktionsergebnisse
  4920. sonstnichtangezeigtwerden.*)
  4921. BEGIN
  4922. IFn>1THENBEGIN
  4923.  
  4924. f:=n*Fak(n-1);
  4925. END
  4926. ELSEBEGIN
  4927.  
  4928. f:=1;
  4929. END;
  4930. Fak:=f;
  4931. END;
  4932.  
  4933. BEGIN
  4934. n:=3;
  4935. Write('Berechnungvonn!n=');
  4936. ReadLn(n);
  4937. DebugEin;
  4938. (*NurwährendderrekursivenFunktionsaufrufewerden
  4939. dieInhaltederVariablenangezeigt.Dabeiistdie
  4940. Rekursionsstufezuerkennen,wieimfolgenden
  4941. Beispielfür3!gezeigtwird.*)
  4942. m:=Fak(n);
  4943. DebugAus;
  4944. WriteLn(n,'!=',m);
  4945. END.
  4946.  
  4947.  
  4948. Berechnungvonn!n=3
  4949. (*hiernormaleTextausgabemit"WRITE"*)
  4950.     IFn>1THENBEGIN
  4951. 10>F=0N=3|M=0N=3
  4952. ^GlobaleVariablenstehenimmer
  4953. amEndederListenachdem
  4954. letzten"|".
  4955.     ^LokaleVariablenführendieListevordemletzten"|"
  4956. an.DieVariablendergeradeaktivenProzedur/Funktion
  4957. stehenganzlinks,danachfolgendieVariablender
  4958. Prozedur/Funktion,ausderdiegeradeaktiveaufgerufen
  4959. wurdeusw.biszudenglobalenVariablen.
  4960. HierstehenindiesemFalldieVariablendesersten
  4961. AufrufsderFunktion"Fak".
  4962.  
  4963.  
  4964.     IFn>1THENBEGIN
  4965. 10>F=0N=2|F=0N=3|M=0N=3
  4966.  ^globaleVariablen
  4967. ^ersterAufrufvon"Fak"
  4968.     ^zweiterAufrufvon"Fak"
  4969.     f:=1;
  4970. 14>F=1N=1|F=0N=2|F=0N=3|M=0N=3
  4971. ^global
  4972.  ^ersterAufrufvon"Fak"
  4973. ^zweiterAufrufvon"Fak"
  4974.     ^dritterAufrufvon"Fak"
  4975. Jetztistn=1.DamitwerdendierekursivenAufrufebeendet
  4976. undesgehtrückwärts,wieindennächstenZeilenzusehen
  4977. ist.
  4978.  
  4979.  
  4980.     Fak:=f;
  4981. 16>F=1N=1|F=0N=2|F=0N=3|M=0N=3
  4982.     f:=n*Fak(n-1);
  4983. 11>F=2N=2|F=0N=3|M=0N=3
  4984.     Fak:=f;
  4985. 16>F=2N=2|F=0N=3|M=0N=3
  4986.     f:=n*Fak(n-1);
  4987. 11>F=6N=3|M=0N=3
  4988.     Fak:=f;
  4989. 16>F=6N=3|M=0N=3
  4990.     m:=Fak(n);
  4991. 24>M=6N=3
  4992.     3!=6
  4993.  
  4994. ≡≡DebugAus
  4995.  
  4996. SchaltetdieAusgabederInhaltedermarkiertenVariablen
  4997. undderQuelltextzeileaus.
  4998.  
  4999. EineausführlichereBeschreibungundeinBeispielsindunter
  5000. DebugEinzufinden.
  5001.  
  5002. ≡≡BreakPoint
  5003.  
  5004. AndieserStellewirdeinlaufendesProgrammunterbrochenund
  5005. eserscheintfolgendesMenüamBildschirmrand:
  5006.  
  5007. ╔═════BreakPoint════╗
  5008. ║Run║
  5009. ║Variablenzeigen║
  5010. ║weitereVariablen║
  5011. ║Variablenändern║
  5012. ║Menü-Lage    ║
  5013. ║Programm-Abbruch║
  5014. ╚═══════════════════╝
  5015.  
  5016. DieBedeutungdereinzelnenMenüpunkte:
  5017.  
  5018.  
  5019. 1)Run:
  5020. DasProgrammwirdfortgesetzt,bisesbeendetistoderbises
  5021. wiederaufdieAnweisung"BreakPoint"trifft.
  5022.  
  5023. 2)Variablenzeigen:
  5024. DerInhaltderdurch"!"markiertenVariablenundderimnächsten
  5025. Punkt"weitereVariablen"markiertenwirdangezeigt,wieunter
  5026. "DebugEin"beschrieben.
  5027.  
  5028. 3)weitereVariablen:
  5029. ZusätzlichzudeninderDeklarationmit"!"markiertenVariablen
  5030. könnenweitereineinemAuswahlfenstermit"ENTER"markiertwerden.
  5031. EbensoisteinLöschenderMarkierungmit"ENTER"möglich.
  5032. MarkierteVariablensinddurcheinvorangestelltes"√"gekennzeichnet.
  5033. DieReihenfolgederVariablenimAuswahlfensteristunter4)
  5034. beschrieben.
  5035.  
  5036.  
  5037. 4)Variablenändern:
  5038. Wennmantestenmöchte,wiedasProgrammmitanderenVariablenwerten
  5039. weiterläuft,kannsichineinemAuswahlfensterVariablenmit"ENTER"
  5040. wählen,derenInhaltanschließendineinemEditorfenstergeändert
  5041. werdenkann.
  5042. LokaleVariablenerscheinenobenimAuswahlfenster,globale
  5043. Variablenzuletzt.DabeiwirddieselbeReihenfolgewieunter
  5044. "DebugEin"beschriebeneingehalten,essindnurlinksmitobenund
  5045. rechtsmituntenzuvertauschen.
  5046.  
  5047.  
  5048. 5)Menü-Lage:
  5049. WenndiesesMenüInformationenverdeckt,kannesineineandere
  5050. Bildschirmeckeverschobenwerden.DieLagedesMenüswechseltdabei
  5051. zyklischzwischendenPositionen
  5052. linksoben,
  5053. rechtsoben,
  5054. linksuntenund
  5055. rechtsunten.
  5056.  
  5057. 6)Programm-Abbruch:
  5058. DasProgrammwirdsofortbeendet.DabeierfolgteinPost-Mortem-Dump.
  5059.  
  5060. ≡≡EinzelschrittEin
  5061.  
  5062. EinzelschrittEinbewirkt,daßjeweilsnureineProgrammzeileabgearbeitet
  5063. wird.AnschließendwartetdasProgrammaufeinenTastendruck,dannwird
  5064. dienächsteProgrammzeileabgearbeitet.
  5065.  
  5066. Beispiel:
  5067. DebugEin;InhaltdermarkiertenVariablenwird
  5068. angezeigt
  5069. EinzelschrittEin; wartejeweilsnachAusführungeiner
  5070. ProgrammzeileaufeinenTastendruck
  5071. FORn:=1TO100DOBEGIN
  5072. m:=n^2;
  5073. END;
  5074. EinzelschrittAus; setzedieProgrammausführungohneWarten
  5075. aufTastendruckfort
  5076. DebugAus;zeigedieVariableninhaltenichtmehran
  5077.  
  5078. ≡≡EinzelschrittAus
  5079.  
  5080. EinzelschrittAusbewirkt,daßnachAusführungeinerProgrammzeilenicht
  5081. mehraufeinenTastendruckgewartetwird.
  5082.  
  5083. Beispiel:
  5084. DebugEin;InhaltdermarkiertenVariablenwird
  5085. angezeigt
  5086. EinzelschrittEin; wartejeweilsnachAusführungeiner
  5087. ProgrammzeileaufeinenTastendruck
  5088. FORn:=1TO100DOBEGIN
  5089. m:=n^2;
  5090. END;
  5091. EinzelschrittAus; setzedieProgrammausführungohneWarten
  5092. aufTastendruckfort
  5093. DebugAus;zeigedieVariableninhaltenichtmehran
  5094.  
  5095. ≡≡parallele·Prozesse
  5096.  
  5097. NächsterProzeßNeuerProzeß    ProzeßEnde
  5098. SendeSignal    StarteProzesseStarteZeitscheibenVerfahren
  5099. UnterbrechungWarteAufSignal
  5100.  
  5101. MitparallelenProzessenkannEinblickgenommenwerdenindieProgramm-
  5102. ausführungvonMultitaskingsystemen,aufdenenmehrereProgramme
  5103. quasigleichzeitigvoneinemProzessorabgearbeitetwerden,und
  5104. Mehrprozessorsystemen,beidenenmehrereProzessorengleichzeitigan
  5105. einemProgrammarbeiten.DabeiistdieProzeßumschaltungunddie
  5106. ProzeßsynchronisationvonBedeutung.
  5107.  
  5108. ≡≡NächsterProzeß
  5109.  
  5110. NächsterProzeß(ProzeßIndex)dientdazu,dieweitereProgrammausführung
  5111. einembestimmtenProzeßzuübergeben.
  5112.  
  5113. Deklaration:
  5114. PROCEDURENächsterProzeß(ProzeßIndex:INTEGER);
  5115.  
  5116. Beispiel:
  5117. PROCEDUREP1;
  5118. BEGIN
  5119.     WriteLn("1.:P1");
  5120.     NächsterProzeß(2);anP2übergeben
  5121.     WriteLn("5.:P1");
  5122.     ProzeßEnde(1);P1ordnungsgemäßbeenden
  5123. END;
  5124.  
  5125.  
  5126. PROCEDUREP2;
  5127. BEGIN
  5128.     WriteLn("2.:P2");
  5129.     NächsterProzeß(3);anP3übergeben
  5130.     WriteLn("4.:P2");
  5131.     NächsterProzeß(1);anP1übergeben
  5132.     ProzeßEnde(2);P2ordnungsgemäßbeenden
  5133. END;
  5134.  
  5135. PROCEDUREP3;
  5136. BEGIN
  5137.     WriteLn("3.:P3");
  5138.     NächsterProzeß(2);anP2übergeben
  5139.     ProzeßEnde(3);P3ordnungsgemäßbeenden
  5140. END;
  5141.  
  5142.  
  5143. BEGIN
  5144.     NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
  5145.     NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
  5146.     NeuerProzeß(3,100,1,P3);Prozeßprozedurfestlegen
  5147.     StarteProzesse;erstenProzeßstarten
  5148. END.
  5149.  
  5150. AufdemBildschirmerscheint:
  5151.  
  5152. 1.:P1
  5153. 2.:P2
  5154. 3.:P3
  5155. 4.:P2
  5156. 5.:P1
  5157.  
  5158. ≡≡NeuerProzeß
  5159.  
  5160. NeuerProzeßreihteineparameterloseProzedurindieListederProzeduren
  5161. ein,zwischendenenwiebeieinemMultitaskingsystemhin-undher-
  5162. geschaltetwerdenkann.
  5163.  
  5164. Deklaration:
  5165. PROCEDURENeuerProzeß(Index,StackGröße,Priorität:INTEGER;
  5166. Prozeß:parameterloseProzedur);
  5167.  
  5168. Beispiel:
  5169.  
  5170.  
  5171. PROCEDUREP1;
  5172. BEGIN
  5173.     WriteLn("1.:P1");
  5174.     NächsterProzeß(2);anP2übergeben
  5175.     WriteLn("3.:P1");
  5176.     ProzeßEnde(1);P1ordnungsgemäßbeenden
  5177. END;
  5178.  
  5179. PROCEDUREP2;
  5180. BEGIN
  5181.     WriteLn("2.:P2");
  5182.     NächsterProzeß(1);anP1übergeben
  5183.     ProzeßEnde(2);P2ordnungsgemäßbeenden
  5184. END;
  5185.  
  5186.  
  5187. BEGIN
  5188.     NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
  5189.     NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
  5190.     StarteProzesse;Prozeßprozedurfestlegen
  5191. END.erstenProzeßstarten
  5192.  
  5193. ≡≡ProzeßEnde
  5194.  
  5195. ProzeßEndesorgtdafür,daßeinProzeßordnungsgemäßbeendetwird.Jeder
  5196. ProzeßmußentwederauseinerEndlosschleifebestehenoderdurchdie
  5197. AnweisungProzeßEndevordemErreichenderEND-Anweisungder
  5198. Prozeßprozedurbeendetwerden.
  5199.  
  5200. Deklaration:
  5201. PROCEDUREProzeßEnde(ProzeßIndex:INTEGER);
  5202.  
  5203. Beispiel:
  5204. ProzeßEnde(1);beendetdenProzeßmitdemIndex1
  5205.  
  5206. ≡≡SendeSignal
  5207.  
  5208. DurchSendeSignal(SignalVar)kanneinemanderenProzeßmitgeteiltwerden,
  5209. daßdieBearbeitungbiszueinembestimmtenPunktvorangeschrittenist.
  5210.  
  5211. Deklaration:
  5212. PROCEDURESendeSignal(VARSignalVar:SIGNAL);
  5213.  
  5214. Beispiel:
  5215. VAR
  5216.     P1Fertig,P2Fertig:SIGNAL;
  5217.     x,y:REAL;
  5218.  
  5219.  
  5220. PROCEDUREP1;
  5221. BEGIN
  5222.     x:=0.1;
  5223.     WHILEx<10DOBEGIN
  5224. SendeSignal(P1Fertig);x-Wertfertig,P2kannrechnen
  5225. WarteAufSignal(P2Fertig);warten,bisP2mitRechnungfertig
  5226. x:=x+y;undgültigery-Wertvorhanden
  5227.     END;
  5228.     ProzeßEnde(1);Prozessebeenden
  5229.     ProzeßEnde(2);
  5230. END;
  5231.  
  5232.  
  5233. PROCEDUREP2;
  5234. BEGIN
  5235.     y:=0.3;
  5236.     WHILETRUEDOBEGIN
  5237. WarteAufSignal(P1Fertig);aufgültigenx-Wertwarten
  5238. y:=y+x;
  5239. SendeSignal(P2Fertig);P1kannaufy-Wertzugreifen
  5240.     END;
  5241. END;
  5242.  
  5243. BEGIN
  5244.     NeuerProzeß(1,100,1,P1);Prozesseinitialisieren
  5245.     NeuerProzeß(2,100,1,P2);
  5246.     StarteProzesse;
  5247. END.
  5248.  
  5249. ≡≡StarteProzesse
  5250.  
  5251. StarteProzessesuchtbeginnendbeimProzeßindex1denProzeßmitder
  5252. höchstenPrioritätundstartetihn.
  5253.  
  5254. Deklaration:
  5255. PROCEDUREStarteProzesse;
  5256.  
  5257. Beispiel:
  5258.  
  5259.  
  5260. PROCEDUREP1;
  5261. BEGIN
  5262.     WriteLn("1.:P1");
  5263.     NächsterProzeß(2);anP2übergeben
  5264.     WriteLn("3.:P1");
  5265.     ProzeßEnde(1);P1ordnungsgemäßbeenden
  5266. END;
  5267.  
  5268. PROCEDUREP2;
  5269. BEGIN
  5270.     WriteLn("2.:P2");
  5271.     NächsterProzeß(1);anP1übergeben
  5272.     ProzeßEnde(2);P2ordnungsgemäßbeenden
  5273. END;
  5274.  
  5275.  
  5276. BEGIN
  5277.     NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfestlegen,
  5278.     NeuerProzeß(2,100,1,P2);StackgrößeundPrioritätfestlegen,
  5279.     StarteProzesse;Prozeßprozedurfestlegen
  5280. END.erstenProzeßstarten
  5281.  
  5282. ≡≡StarteZeitscheibenVerfahren
  5283.  
  5284. StarteZeitscheibenVerfahrenstartetalleinitialisiertenProzesseund
  5285. sorgtdafür,daßnachderAusführungeinervorgegebenenAnzahlvon
  5286. OpcodesderaktiveProzeßgewechseltwird.
  5287. ACHTUNG:EinaktiverProzeßsolltedieKontrolledannnichtmit
  5288. ========"Unterbrechung"andennächstenProzeßabgeben.
  5289.  
  5290. Deklaration:
  5291. PROCEDUREStarteZeitscheibenVerfahren(AnzahlDerOpcodes:INTEGER);
  5292.  
  5293. Beispiel:
  5294.  
  5295.  
  5296. PROCEDUREP1;
  5297.     VARn:INTEGER;
  5298. BEGIN
  5299.     FORn:=1TO1000DOBEGIN
  5300. Write(n:5);
  5301.     END;
  5302.     HALT;
  5303. END;
  5304.  
  5305.  
  5306. PROCEDUREP2;
  5307.     VARn:INTEGER;
  5308. BEGIN
  5309.     FORn:=2000TO3000DOBEGIN
  5310. Write(n:5);
  5311.     END;
  5312.     HALT;
  5313. END;
  5314.  
  5315.  
  5316. BEGIN
  5317.     NeuerProzeß(1,100,1,P1);Prozessedefinieren,Indexfest-
  5318.     NeuerProzeß(2,100,1,P2);legen,StackgrößeundPriorität
  5319.     StarteZeitscheibenVerfahren(10);festlegen,Prozeßprozedurfest-
  5320. END.legenunderstenProzeßstarten.
  5321.  NachderAusführungvon10
  5322.  OpcodeserfolgteineUmschaltung.
  5323.  
  5324. ≡≡Unterbrechung
  5325.  
  5326. UnterbrechungunterbrichtdieAusführungeinesProzessesundsuchtden
  5327. aktivenProzeßinderWarteliste,derzurZeitdiehöchstePrioritäthat.
  5328. DieserProzeßwirdfortgesetzt.SeinePrioritätwirddabeiumeins
  5329. verringert,damiterbeidernächstenUnterbrechungnichtunbedingt
  5330. wiederderProzeßmitderhöchstenPrioritätist.
  5331.  
  5332. Deklaration:
  5333. PROCEDUREUnterbrechung;
  5334.  
  5335.  
  5336. Beispiel:
  5337. PROCEDUREP1;
  5338.     VAR
  5339. n:INTEGER;
  5340. BEGIN
  5341.     FORn:=1TO1000DOBEGIN
  5342. GotoXY(10,3);
  5343. Write(n:4);
  5344. Unterbrechung;unterbrechenundaufdenProzeßmit
  5345.     END;derderzeithöchstenPriorität
  5346.     HALT;umschalten
  5347. END;
  5348.  
  5349.  
  5350. PROCEDUREP2;
  5351.     VAR
  5352. n:INTEGER;
  5353. BEGIN
  5354.     FORn:=1TO1000DOBEGIN
  5355. GotoXY(20,3);
  5356. Write(n:4);
  5357. Unterbrechung;unterbrechenundaufdenProzeßmit
  5358.     END;derderzeithöchstenPriorität
  5359.     HALT;umschalten
  5360. END;
  5361.  
  5362.  
  5363. BEGIN
  5364.     NeuerProzeß(1,100,3,P1);dadiePrioritätvonP1dreimalso
  5365.     NeuerProzeß(2,100,1,P2);hochistwiedievonP2,wirdP1auch
  5366.     StarteProzesse;dreimalsooftaufgerufenwieP2.
  5367. END.ZählständeamEnde:P1:1000,P2:333
  5368.  
  5369. ≡≡WarteAufSignal
  5370.  
  5371. DurchWarteAufSignal(SignalVar)kannsolangegewartetwerden,bisdie
  5372. BearbeitungineinemanderenProzeßbiszueinembestimmtenPunkt
  5373. vorangeschrittenist.
  5374.  
  5375. Deklaration:
  5376. PROCEDUREWarteAufSignal(VARSignalVar:SIGNAL);
  5377.  
  5378. Beispiel:
  5379. VAR
  5380.     P1Fertig,P2Fertig:SIGNAL;
  5381.     x,y:REAL;
  5382.  
  5383.  
  5384. PROCEDUREP1;
  5385. BEGIN
  5386.     x:=0.1;
  5387.     WHILEx<10DOBEGIN
  5388. SendeSignal(P1Fertig);x-Wertfertig,P2kannrechnen
  5389. WarteAufSignal(P2Fertig);warten,bisP2mitRechnungfertig
  5390. x:=x+y;undgültigery-Wertvorhanden
  5391.     END;
  5392.     ProzeßEnde(1);Prozessebeenden
  5393.     ProzeßEnde(2);
  5394. END;
  5395.  
  5396.  
  5397. PROCEDUREP2;
  5398. BEGIN
  5399.     y:=0.3;
  5400.     WHILETRUEDOBEGIN
  5401. WarteAufSignal(P1Fertig);aufgültigenx-Wertwarten
  5402. y:=y+x;
  5403. SendeSignal(P2Fertig);P1kannaufy-Wertzugreifen
  5404.     END;
  5405. END;
  5406.  
  5407. BEGIN
  5408.     NeuerProzeß(1,100,1,P1);Prozesseinitialisieren
  5409.     NeuerProzeß(2,100,1,P2);
  5410.     StarteProzesse;
  5411. END.
  5412.  
  5413. ≡≡Fischertechnik·LEGO
  5414.  
  5415.  Aus  Ein LinksDrehenRechtsDrehen
  5416. Lampe
  5417. Motor
  5418. Warte
  5419. Zustand
  5420.  
  5421. DiehieraufgeführtenKonstanten,ProzedurenundFunktionenstehen
  5422. nurdannzurVerfügung,wennITG-PASCALausdemmitgelieferten
  5423. RahmenprogrammzurAnsteuerungvonInterfacesherausgestartetwurde.
  5424.  
  5425. ACHTUNG:WennderStartnichtausdemRahmenprogrammherausgestartet
  5426. ========wurde,kommtesbeiVerwendungderhieraufgeführtenKonstanten,
  5427. ProzedurenundFunktionenzueinerFehlermeldungbeim
  5428. compilieren,obwohleinProgrammunterUmständenschonfehlerfrei
  5429. lief!
  5430.  
  5431. ≡≡ Aus
  5432.  
  5433. DieKonstanteAusdientzumAusschaltenvonLampenundMotoren.
  5434. IhrWertist0.
  5435.  
  5436. ≡≡ Ein
  5437.  
  5438. DieKonstanteEindientzumEinschaltenvonLampen.
  5439. IhrWertist1.
  5440.  
  5441. ≡≡LinksDrehen
  5442.  
  5443. DieKonstantenLinksDrehendientdazu,einenMotorgegendenUhrzeiger-
  5444. sinndrehenzulassen.IhrWertist1.
  5445.  
  5446. ≡≡RechtsDrehen
  5447.  
  5448. DieKonstantenRechtsDrehendientdazu,einenMotorimdenUhrzeigersinn
  5449. drehenzulassen.IhrWertist2.
  5450.  
  5451. ≡≡Lampe
  5452.  
  5453. MitderProzedurLampe(Nr,Ein)wirddieSpannungamAusgangmitdem
  5454. IndexNreingeschaltet.
  5455.  
  5456. Deklaration:
  5457. PROCEDURELampe(Nr,AusOderEin:WORD);
  5458.  
  5459. Beispiel:
  5460. Lampe(3,Ein);Lampe3einschaltenund
  5461. Warte(1.5);1,5Sekundenlangbrennenlassen
  5462. Lampe(3,Aus);dannwiederausschalten
  5463.  
  5464. ≡≡Motor
  5465.  
  5466. MitderProzedurMotor(Nr,Drehrichtung)wirddieSpannungamMotor-
  5467. AusgangmitdemIndexNrsoeingeschaltet,daßderMotorsichindie
  5468. angegebeneRichtungdreht.
  5469.  
  5470. Deklaration:
  5471. PROCEDUREMotor(Nr,Drehrichtung:WORD);
  5472.  
  5473. Beispiel:
  5474. Motor(3,LinksDrehen);Motor3einschaltenund1,5Sekundennach
  5475. Warte(1.5);linksdrehenlassen
  5476. Motor(3,Aus);dannwiederausschalten
  5477.  
  5478. ≡≡Warte
  5479.  
  5480. MitderProzedurWarte(Sekunden)wirddieautomatischeAbschaltungbeim
  5481. Fischer-Interfaceunterbunden,diesonstnach0,5Sekundeneintritt.
  5482.  
  5483. Deklaration:
  5484. PROCEDUREWarte(Sekunden:REAL);
  5485.  
  5486. Beispiel:
  5487. Lampe(3,Ein);Lampe3einschaltenund
  5488. Warte(1.5);1,5Sekundenlangbrennenlassen
  5489. Lampe(3,Aus);dannwiederausschalten
  5490.  
  5491. ≡≡Zustand
  5492.  
  5493. DieFunktionZustand(Nr)ergibt1,wennamDigitaleingangmitdemIndex
  5494. NreineSpannunganliegt.Sonstergibtsie0.
  5495.  
  5496. Deklaration:
  5497. FUNCTIONZustand(DigitalEingang:WORD):WORD;
  5498.  
  5499. Beispiel:
  5500. IFZustand(2)=1THENBEGIN
  5501.     WriteLn("AmDigitaleingang2liegtSpannungan.");
  5502. END
  5503. ELSEBEGIN
  5504.     WriteLn("AmDigitaleingang2liegtkeineSpannungan.");
  5505. END;
  5506.  
  5507. ≡≡Editor
  5508.  
  5509. DerEditoristsogestaltet,daßseineBedienungkompatibelzudem
  5510. TURBO-PASCAL-Editorist.AllerdingsistderUmfangderzurVerfügung
  5511. stehendenBefehleaufdasnötigebeschränkt.Zusätzlichistabernoch
  5512. einMakro-Recordervorhanden,durchdendurchDrückeneinerTastebis
  5513. zu100ZeichenaufeinmalindenProgrammtexteingefügtwerdenkönnen.
  5514.  
  5515. Pfeiltasten:CursorumeinZeichen/eineZeileindiePfeilrichtung
  5516. bewegen
  5517. <-(BackSpace):ZeichenlinksvomCursorlöschen
  5518. Entf :ZeichenunterdemCursorlöschen
  5519. Enter
  5520. :TextrechtsvomCursorineineneueZeileschreiben/
  5521. neueZeilebeginnen.DieseAngabengeltennur,wennder
  5522. Einfügenmodusaktivist.
  5523. Achtung:ImÜberschreibmodus,derandemgrößeren
  5524. CursorundderAnzeigeinderStatuszeilezuerkennen
  5525. ist,erfolgtkeinZeilenumbruch!
  5526.  
  5527.  
  5528. Einfg
  5529. :zwischenEinfügenundÜberschreibenumschalten
  5530. SowohlamCursoralsauchanderStatuszeileistder
  5531. aktivierteModusabzulesen:
  5532. CursorAnzeigeinderStatuszeile
  5533. EinfügenkleinEinfügen
  5534. ÜberschreibengroßÜberschreiben
  5535. F1:HilfezuITG-PASCAL
  5536. Strg-F1:HilfezumEditor
  5537. DieseBefehlsübersichtwirdangezeigt.
  5538. F2:SicherndesProgrammtextesaufDiskette/Festplatte
  5539. F3:LadeneinesaufDiskette/Festplattevorhandenen
  5540. Programmtextes
  5541. F9:CompilierendesProgramms
  5542. Strg-F9:StartendesProgramms
  5543. F10,ESC:VerlassendesEditors,WechselinsMenü
  5544.  
  5545.  
  5546. Strg-BildAuf:CursoraufdenTextanfangsetzen
  5547. Strg-BildAb:CursoransTextendesetzen
  5548. Strg-QF:SuchennachZeichenfolgenimText
  5549. InderoberstenBildschirmzeileerscheintdieFrage
  5550. "Suchen:".DiezusuchendeZeichenfolgeistjetzt
  5551. einzugebenundmitENTERabzuschließen.Anschließend
  5552. wirdnachdenSuchoptionengefragt"Optionen
  5553. (g/n/u/w/b):".AuchdieseEingabeistmitENTER
  5554. abzuschließen.
  5555. BedeutungderOptionen:
  5556. g:global/imganzenTextsuchen
  5557. n:nichtnachfragenbeimErsetzen
  5558. u:Groß-undKleinschreibungnichtunterscheiden
  5559. w:nurganzeWortesuchen
  5560. b:abderCursorpositionrückwärtssuchen
  5561.  
  5562.  
  5563. StandardvorgabebeimSuchenist:
  5564. -SuchenabCursorposition
  5565. -BerücksichtigenvonGroß-undKleinschreibung
  5566. -SuchenauchnachWortteilen
  5567. Strg-QA:SuchenundErsetzenvonZeichenfolgenimText
  5568. EswirdnacheinerZeichenfolgegesucht,dieanschließend
  5569. durcheineandereersetztwird.DasVorgehenentspricht
  5570. demunter"SuchennachZeichenfolgenimText"beschrie-
  5571. benen,zusätzlichwirdalszweitesdurch"Ersetzen
  5572. durch:"nachderZeichenfolgegefragt,diedieerste
  5573. ersetzensoll.
  5574.  
  5575.  
  5576. WenndieOptionnnichtgewähltwurde,wirddiegesuchte
  5577. Zeichenfolge,sofernsiegefundenwurde,aufdemBild-
  5578. schirmhervorgehobenundeserscheintinderobersten
  5579. BildschirmzeiledieFrage"Ersetzen(j/n):".Wenn"j"
  5580. oder"J"eingegebenwurde,wirdersetzt,bei"n"bzw.
  5581. "N"nicht.
  5582. Strg-L    :letztesSuchenbzw.Suchen/Ersetzenwiederholen
  5583. WennzuletztnacheinerZeichenfolgegesuchtwurde,wird
  5584. dieseSuchemitdeneingegebenenOptionenwiederholt,
  5585. andernfallswird"SuchenundErsetzen"wiederholt.
  5586. Strg-T    :WortrechtsvomCursorlöschen
  5587. Strg-KB:Blockanfangmarkieren
  5588. Strg-KK:Blockendemarkieren
  5589. EinmarkierterBlock,dessenAnfangvorseinemEnde
  5590. steht,wirddurcheineinvertierteDarstellungvon
  5591. ZeichenundHintergrundhervorgehoben.
  5592.  
  5593.  
  5594. Strg-KH:Blockmarkierungein-/ausschalten
  5595. DieHervorhebungeinesBlockswirddadurchaufgehoben
  5596. bzw.wiederausgeführt.
  5597. Strg-KC:Blockkopieren
  5598. WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
  5599. wirderandieCursorpositionkopiert.DerTextblock
  5600. bleibtanderursprünglichenPositionerhalten.
  5601. Strg-KV:Blockverschieben
  5602. WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
  5603. wirderandieCursorpositionverschoben.DerTextblock
  5604. wirdanderursprünglichenPositiongelöscht.
  5605. Strg-KY:Blocklöschen
  5606. WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
  5607. wirdergelöscht.
  5608.  
  5609.  
  5610. Strg-KP:Blockdrucken
  5611. WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
  5612. wirderaufdemDruckerausgegeben.
  5613. Strg-KW:BlockineineDateischreiben
  5614. WenneinBlockmitStrg-KBundStrg-KKmarkiertwurde,
  5615. wirderineineDateigeschrieben,nachdeminder
  5616. oberstenBildschirmzeilederDateinamenach"Block
  5617. schreiben:"eingegebenwurde.
  5618. Strg-KR:BlockauseinerDateilesen
  5619. InderoberstenBildschirmzeilewirdmit"Blocklesen:"
  5620. nachdemNameneinerTextdateigefragt,dieabder
  5621. CursorpositionindenTexteingefügtwird,wenneseine
  5622. TextdateiunterdiesemNamengibt.
  5623.  
  5624.  
  5625. ImEditorkönnenZeichenfolgenalsMakrosdefiniertwerden.Aufdiese
  5626. WeiselassensichdurchDrückeneinereinzigenTastebiszu100Zeichen
  5627. aufeinmalabderCursorpositionindenTexteinfügen.EineÜbersicht
  5628. übervorhandeneMakroserhältmandurchdieTastenkombinationAlt-F5.
  5629.  
  5630. Beispiele:
  5631. <Alt-P>:PROCEDURE
  5632. <Alt-F>:FUNCTION
  5633.  
  5634. DieseAngabenbedeuten,daßdurchDrückenderTastenkombinationAlt-P
  5635. einMakroeingefügtwird,dereinenProzedurrahmenenthält.
  5636.  
  5637. BeimStartvonITG-PASCALwirddieDateiEDIT.MACmitdenbisher
  5638. definiertenMakrosgeladen,beimVerlassenvonITG-PASCALwerden
  5639. diederzeitdefiniertenMakrosindieserDateiabgespeichert,sodaß
  5640. siebeimnächstenStartwiederzurVerfügungstehen.
  5641.  
  5642.  
  5643. DieAufnahmeeinesMakroswirddurchdieTastenkombinationCtrl-F5
  5644. gestartet.AnschließendwirddieTastenkombinationabgefragt,mitder
  5645. diesesMakrogestartetwerdensoll.Dannkönnenbiszu100Tasteneinge-
  5646. gebenwerden.DieAufnahmewirddurchCtrl-F5beendet.Jetztwirdein
  5647. Informationstextabgefragt,dermitAlt-F5angezeigtwerdenkann.(siehe
  5648. auchBeispieleoben)
  5649.  
  5650. Beispiel:
  5651. AufnahmedesProzedur-MakrosAlt-P:
  5652.  
  5653.  
  5654. 1)Ctrl-F5drückenAufnahmestarten
  5655. 2)Alt-PdrückenTastenkombinationfestlegen
  5656. 3)Textwiegewohnteingeben
  5657. PROCEDURE;DurchBewegendesCursorsaufdas
  5658. VARSemikolonhinterPROCEDUREwird
  5659. erreicht,daßderCursornachEinfügen
  5660. BEGINdesMakrosandieserStellestehen-
  5661. bleibt,damitderProzedurnameeinge-
  5662. END;gebenwerdenkann.
  5663. 4)Ctrl-F5drückenAufnahmebeenden
  5664. 5)Informationstexteingeben
  5665. <Alt-P>:PROCEDURE
  5666. aussagekräftigenTextmitTastenkombi-
  5667. nationundWirkungwählen!
  5668.  
  5669. DamitistdieAufnahmebeendet.DurchAlt-PkannderTextjetzt
  5670. beliebigofteingefügtwerden.
  5671.  
  5672.  
  5673. EinMakrowirdmitCtrl-F6gelöscht,indemimAnschlußdieMakrotaste
  5674. gedrücktwird.
  5675.  
  5676. Beispiel:
  5677. 1)Ctrl-F6    Löschenstarten
  5678. 2)Alt-P TastenkombinationAlt-PausderMakroliste
  5679. streichen
  5680.  
  5681. ≡≡Fehler-Hilfe
  5682.  
  5683. ZujederFehlermeldungdesCompilerskönnenHilfstextüberdieTaste
  5684. F1aufgerufenwerden,wennderCursoraufderFehlerpositionsteht.
  5685. EsistindervorliegendenFormnichtvorgesehen,daßdieseHilfstexte
  5686. überdasHilfesystemeinzelnangesehenwerdenkönnen.DieseMöglichkeit
  5687. kannvomAnwenderaberbeiBedarfhinzugefügtwerden.
  5688.  
  5689. ≡≡Variable·deklarieren
  5690.  
  5691. InPascalmußderTypeinerVariablenvordererstenVerwendung
  5692. festgelegtsein.DazuistwieunterProzedur·deklarierenbeschrieben
  5693. eineDeklarationvordemAnweisungsteildesProgramms,derProzedur
  5694. oderderFunktionvorzunehmen.DieDeklarationwirddurchdas
  5695. reservierteWortVAReingeleitet.DannfolgenderNamederVariablen
  5696. undihrTyp(s.auchTypen),wobeieigeneVariablentypenaufbauendauf
  5697. denStandardtypendefiniertwerdenkönnen.
  5698.  
  5699. ITG-PASCALbietetallerdingsauchdieMöglichkeit,Variablendeklarationen
  5700. vomCompilerunterdemMenüpunkt"EDITOR"indenQuelltexteinfügenzu
  5701. lassen.DieseMöglichkeitisteingebautfürWertzuweisungen,Prozeduren
  5702. mitVariablenparameternundbeiVergleichennachIF,WHILEundREPEAT.
  5703. WennderbenötigteDatentypeindeutigfeststeht,fügtITG-PASCALdie
  5704. Deklarationselbständigein,sonsterscheintderQuelltextmitder
  5705. hervorgehobendargestelltenVariablenundeinemAuswahlmenümitden
  5706. möglichenTypen.
  5707.  
  5708.  
  5709. AlleDeklarationenwerdenlokalindiejeweiligeProzedur/Funktion
  5710. oderindasProgrammeingefügt.EskönnenkeineselbstdefiniertenTypen
  5711. verwendetwerden.AusdiesenBedingungenergibtsich,daßdieauto-
  5712. matischeDeklarationnurinderAnfangsphaseeingesetztwerdensollte.
  5713.  
  5714. VAR
  5715. VariablenName:TypDerVariablen;
  5716.  
  5717. Beispiele:
  5718. VAR
  5719. Zähler:INTEGER;
  5720. Produkt,Quotient:REAL;ProduktundQuotientsindvomTypREAL
  5721.  
  5722. ≡≡Prozedur·deklarieren
  5723.  
  5724. EinPascal-Programmsollteinkleinere,überschaubareProgrammteile
  5725. aufgegliedertwerden,diedannalsProzedurenoderFunktionenzu
  5726. deklarierensind.BeiBedarfkönnenderProzedurbeliebigviele
  5727. Parameterübergebenwerden,derenVeränderunginnerhalbderProzedur
  5728. demaufrufenProgrammteilmitgeteiltwirdodernicht.DieTypender
  5729. VariablensindineinerParameterlisteanzugeben.
  5730.  
  5731. Beispiel:
  5732.  
  5733.  
  5734. PROCEDUREErhöheX(VARx:INTEGER;DerWertvonxwirdverändertund
  5735. y:INTEGER);demaufrufendenProgrammteilzurück-
  5736. geliefert.DazumußvorxVARstehen.
  5737. VARDeklarationeinerlokalenVariablen
  5738. n:INTEGER;n,dienurinnerhalbdieserProzedur
  5739. bekanntist.DieDeklarationmuß
  5740. zwischendemKopfderProzedur
  5741. (PROCEDURExyz(...);)unddemAnfang
  5742. desAnweisungsteils(BEGIN)stehen!
  5743. BEGINHierbeginntderAnweisungsteil.
  5744. n:=ABS(y);DenBetragvonybilden
  5745. INC(x,n);undzuxaddieren.DieProzedurINC
  5746. END;hatdiegleicheParameterlistewie
  5747. ErhöheX!
  5748.  
  5749. ≡≡Funktion·deklarieren
  5750.  
  5751. EineFunktionineinemPascal-ProgrammentsprichtinihrerWirkung
  5752. einermathematischenFunktion,beidereineodermehrereVariablen
  5753. ineinenFunktionstermeingesetztwerdenundeinFunktionswert
  5754. ausgerechnetwird.DieserWertwirdbeiderProgrammausführung
  5755. anstelledesFunktionsnamensundderParameterlistealsWertin
  5756. denAnweisungsteileingesetzt.
  5757.  
  5758. Beispiel:
  5759.  
  5760.  
  5761. FUNCTIONxQuadratMinus1(x:REAL):REAL;DerFunktionwirdderPara-
  5762. meterxvomTypREAL(x:REAL)
  5763. übergeben.Anschließendwird
  5764. festgelegt,daßdasErgebnis
  5765. derBerechnungebenfallsvom
  5766. TypREAList():REAL;).
  5767. BEGIN
  5768. xQuadratMinus1:=x^2-1;DasErgebnisderBerechnung
  5769. END;x^2-1wirdalsZuweisungzu
  5770. demFunktionsnamenalsFunk-
  5771. tionswertdefiniert.
  5772.  
  5773. ≡≡Fehler-Hilfe:0
  5774.  
  5775. möglicheFehlerursachen:
  5776.  
  5777. -EswirdeineVariableverwendet,dienochnichtdeklariert
  5778. wurde.
  5779. Abhilfe:Variable·deklarieren!
  5780.  
  5781. -EswirdeineProzedurodereineFunktionaufgerufen,dienicht
  5782. deklariertwurde.
  5783. Abhilfe:Prozedur·deklarierenoderFunktion·deklarieren!
  5784.  
  5785.  
  5786. -DerNamederVariablen,ProzeduroderFunktionwurdefalsch
  5787. geschriebenoderenthälteinLeerzeichen"",daßinPASCAL
  5788. dazudient,Bezeichnernamenzutrennen.
  5789.  
  5790. Beispiel:
  5791.     falsch:GrafikSchirm
  5792.     richtig:GrafikSchirm
  5793.  
  5794. Abhilfe:Schreibweisekorrigieren!
  5795.  
  5796. ≡≡Fehler-Hilfe:1
  5797.  
  5798. Fehlerursache:
  5799.  
  5800. EinVariablennamewurdeglobaloderlokalineinerProzedur/Funktion
  5801. mehrfachverwendet.
  5802.  
  5803. Beispiel:
  5804.     VAR
  5805. Zahl:REAL;
  5806. Zahl:INTEGER;
  5807.  
  5808. Abhilfe:EinederVariablenumbenennen!
  5809.  
  5810. ≡≡Fehler-Hilfe:2
  5811.  
  5812. Fehlerursache:
  5813.  
  5814. EswirdeinVariablenname,eineProzedurodereineFunktionerwartet.
  5815.  
  5816. Beispiel:
  5817.     falsch:INTEGER:=3*4;
  5818.     richtig:VAR
  5819. Zahl:INTEGER;
  5820. .
  5821. Zahl:=3*4;
  5822.  
  5823. Abhilfe:Variable·deklarierenundderenNameneinsetzen,Prozedur
  5824. oderFunktionaufrufen.
  5825.  
  5826. ≡≡Fehler-Hilfe:3
  5827.  
  5828. Fehlerursache:
  5829.  
  5830. DerProgrammkopf"PROGRAMName;"wurdeausgelassen.
  5831.  
  5832. Beispiel:
  5833.     falsch:VAR
  5834. n:INTEGER;
  5835.     richtig:PROGRAMIrgendEinName;
  5836. VAR
  5837. n:INTEGER;
  5838.  
  5839. Abhilfe:AmAnfangdesProgramms"PROGRAMProgrammName;"einfügen.
  5840.  
  5841. ≡≡Fehler-Hilfe:4
  5842.  
  5843. Fehlerursache:
  5844.  
  5845. ")"wurdevergessen.
  5846.  
  5847. Beispiel:
  5848. falsch:Write("Text";
  5849. richtig:Write("Text");
  5850.  
  5851. Abhilfe:")"einfügen.
  5852.  
  5853. ≡≡Fehler-Hilfe:5
  5854.  
  5855. Fehlerursache:
  5856.  
  5857. ":"wurdevergessenodereswurdeeinanderesZeichengeschrieben.
  5858.  
  5859. Beispiel:
  5860. falsch:VARn=INTEGER;
  5861. richtig:VARn:INTEGER;
  5862.  
  5863. Abhilfe:":"einfügen.
  5864.  
  5865. ≡≡Fehler-Hilfe:6
  5866.  
  5867. Fehlerursache:
  5868.  
  5869. DieSyntaxregelnwurdennichteingehalten.
  5870.  
  5871. Beispiel:
  5872. falsch:FORn:=1TO10DOBEGINfalscheSchachtelung
  5873. REPEAT
  5874. .
  5875. END;
  5876. UNTILm>1000;
  5877.  
  5878.  
  5879. richtig:FORn:=1TO10DOBEGIN
  5880. REPEAT
  5881. .
  5882. UNTILm>1000;
  5883. END;
  5884.  
  5885. Abhilfe:Programmstrukturuntersuchen-eventuellzurVereinfachung
  5886. denProgrammtextformatierenlassen-undkorrigieren
  5887.  
  5888. ≡≡Fehler-Hilfe:7
  5889.  
  5890. Fehlerursache:
  5891.  
  5892. EswirdeinVariablenname,eineProzedurodereineFunktionerwartet.
  5893.  
  5894. Beispiel:
  5895.     falsch:INTEGER:=3*4;
  5896.     richtig:VAR
  5897. Zahl:INTEGER;
  5898. .
  5899. Zahl:=3*4;
  5900.  
  5901. Abhilfe:Variable·deklarierenundderenNameneinsetzen,Prozedur
  5902. oderFunktionaufrufen.
  5903.  
  5904. ≡≡Fehler-Hilfe:8
  5905.  
  5906. Fehlerursache:
  5907.  
  5908. "OF"wurdevergessenodereswurdeetwasanderesgeschrieben.
  5909.  
  5910. Beispiel:
  5911. falsch:CASEnBEGIN
  5912. richtig:CASEnOF
  5913.  
  5914. Abhilfe:"OF"einfügen.
  5915.  
  5916. ≡≡Fehler-Hilfe:9
  5917.  
  5918. Fehlerursache:
  5919.  
  5920. "("wurdevergessen.
  5921.  
  5922. Beispiel:
  5923. falsch:Write"Text";
  5924. richtig:Write("Text");
  5925.  
  5926. Abhilfe:"("einfügen.
  5927.  
  5928. ≡≡Fehler-Hilfe:10
  5929.  
  5930. Fehlerursache:
  5931.  
  5932. EswirdeineARRAY-Variableerwartet.
  5933.  
  5934. Beispiel:
  5935. VAR
  5936. nArray:ARRAY[1..10]OFINTEGER;
  5937. n:INTEGER;
  5938. falsch:nArray:=n;nmußvomgleichenTypwienArraysein.
  5939. richtig:nArray[1]:=n;nArray[1]istvomTypINTEGER.
  5940.  
  5941. Abhilfe:Zuweisungkorrigieren.
  5942.  
  5943. ≡≡Fehler-Hilfe:11
  5944.  
  5945. Fehlerursache:
  5946.  
  5947. "["wurdevergessenodereswurdeetwasanderesgeschrieben.
  5948.  
  5949. Beispiel:
  5950. falsch:VARn:ARRAY1..10OFINTEGER;
  5951. richtig:VARn:ARRAY[1..10]OFINTEGER;
  5952.  
  5953. Abhilfe:"["einfügen.
  5954.  
  5955. ≡≡Fehler-Hilfe:12
  5956.  
  5957. Fehlerursache:
  5958.  
  5959. "]"wurdevergessenodereswurdeetwasanderesgeschrieben.
  5960.  
  5961. Beispiel:
  5962. falsch:VARn:ARRAY1..10OFINTEGER;
  5963. richtig:VARn:ARRAY[1..10]OFINTEGER;
  5964.  
  5965. Abhilfe:"]"einfügen.
  5966.  
  5967. ≡≡Fehler-Hilfe:13
  5968.  
  5969. Fehlerursache:
  5970.  
  5971. ".."wurdevergessenodereswurdeetwasanderesgeschrieben.
  5972.  
  5973. Beispiel:
  5974. falsch:VARn:ARRAY[1.10]OFINTEGER;
  5975. richtig:VARn:ARRAY[1..10]OFINTEGER;
  5976.  
  5977. Abhilfe:".."einfügen.
  5978.  
  5979. ≡≡Fehler-Hilfe:14
  5980.  
  5981. Fehlerursache:
  5982. -EswurdeeinSemikolonvergessen.
  5983. Abhilfe:Semikoloneinfügen!
  5984. Beispiele:
  5985.     GrafikSchirm;Prozedur-undFunktions-Aufrufemüssenmit
  5986. einemSemikolonabgeschlossenwerden.
  5987.  
  5988.     VARn:INTEGER;BeiDeklarationenwerdenverschiedeneTypen
  5989. r:REAL;durcheinSemikolongetrennt.
  5990.  
  5991.     x:=a*b+c;NachWertzuweisungeneinerVariablenmuß
  5992. einSemikolonfolgen.
  5993.  
  5994.  
  5995.     END;ENDmußeinSemikolonfolgen,wennals
  5996. nächsteseineZuweisungodereinProzedur-/
  5997. Funktions-Aufruffolgt.
  5998. ENDdarfeinSemikolonfolgen,wennein
  5999. weiteresENDfolgt,mußabernicht.
  6000. ENDdarfkeinSemikolonfolgen,wennein
  6001. ELSEfolgt!
  6002.  
  6003. ≡≡Fehler-Hilfe:15
  6004.  
  6005. Fehlerursache:
  6006.  
  6007. StatteinesFunktionsaufrufserfolgteinProzeduraufruf.
  6008.  
  6009. Beispiele:
  6010. falsch:n:=Write("....");
  6011. richtig:n:=ROUND(n^2);
  6012.  
  6013. Abhilfe:Funktionaufrufen.
  6014.  
  6015. ≡≡Fehler-Hilfe:16
  6016.  
  6017. Fehlerursache:
  6018.  
  6019. "="wurdevergessenodereswurdeetwasanderesgeschrieben.
  6020.  
  6021. Beispiele:
  6022. falsch:TYPEStr80:STRING[80];
  6023. richtig:TYPEStr80=STRING[80];
  6024. falsch:IFn:=5THENBEGIN
  6025. richtig:IFn=5THENBEGIN
  6026.  
  6027. Abhilfe:"="einfügen.
  6028.  
  6029. ≡≡Fehler-Hilfe:17
  6030.  
  6031. Fehlerursache:
  6032.  
  6033. EswurdekeineboolscheVariableundkeineAussageformverwendet.
  6034.  
  6035. Beispiel:
  6036. falsch:IFWrite("Text")THENBEGIN
  6037. richtig:IFZahl=1THENBEGIN
  6038.  
  6039. Abhilfe:BoolschenTermverwenden.
  6040.  
  6041. ≡≡Fehler-Hilfe:19
  6042.  
  6043. Fehlerursache:
  6044.  
  6045. EswurdeeineunzulässigeTypzuweisungversucht.
  6046.  
  6047. Beispiel:
  6048. VAR
  6049. s:STRING[20];
  6050. r:REAL;
  6051. i:INTEGER;
  6052. falsch:r:=s;
  6053. richtig:VAL(s,r,i);STRINGinREALumwandeln
  6054. falsch:i:=r;
  6055. richtig:i:=ROUND(r);REALinINTEGERumwandeln
  6056.  
  6057. Abhilfe:Typumwandlungverwenden.
  6058.  
  6059. ≡≡Fehler-Hilfe:21
  6060.  
  6061. Fehlerursache:
  6062.  
  6063. EinARRAYoderRECORDwurdezugroßdeklariert.
  6064.  
  6065. Beispiel:
  6066. falsch:VARn:ARRAY[1..30000]OFINTEGER;fürITG-PASCALzugroß
  6067. richtig:VARn:ARRAY[1..5000]OFINTEGER;
  6068.  
  6069. Abhilfe:ElementzahldesArrays/Recordsverringern.
  6070.  
  6071. ≡≡Fehler-Hilfe:23
  6072.  
  6073. Fehlerursache:
  6074.  
  6075. Eswurdeversucht,eineFallunterscheidungmitCASEmitArraysoder
  6076. Recordsdurchzuführen.
  6077.  
  6078. Beispiel:
  6079. VARZahlen:ARRAY[1..100]OFINTEGER;
  6080. falsch:CASEZahlenOFARRAYverwendet
  6081. richtig:CASEZahlen[1]OFINTEGERverwendet
  6082.  
  6083. Abhilfe:EinfachenDatentypzurFallunterscheidungverwenden.
  6084.  
  6085. ≡≡Fehler-Hilfe:24
  6086.  
  6087. Fehlerursache:
  6088.  
  6089. EswurdestatteinesBuchstabenetwasanderesverwendet.
  6090.  
  6091. Beispiel:
  6092. VAR
  6093. s:STRING[10];
  6094. falsch:ErsetzeBuchstaben(s,1,5);Zahlenwert5verwendet
  6095. richtig:ErsetzeBuchstaben(s,1,"5");
  6096.  
  6097. Abhilfe:BuchstabenoderCHAR-Variableverwenden.
  6098.  
  6099. ≡≡Fehler-Hilfe:25
  6100.  
  6101. Fehlerursache:
  6102.  
  6103. StatteinerKonstantenwurdeeineVariableoderetwasanderesverwendet.
  6104.  
  6105. Beispiel:
  6106. CONSTMaxZahlen=100;
  6107. VARMax:INTEGER;
  6108. falsch:VARZahlen:ARRAY[1..Max]OFINTEGER;Variableverwendet
  6109. richtig:VARZahlen:ARRAY[1..MaxZahlen]OFINTEGER;oder
  6110. VARZahlen:ARRAY[1..100]OFINTEGER;
  6111.  
  6112. Abhilfe:Konstanteverwenden.
  6113.  
  6114. ≡≡Fehler-Hilfe:26
  6115.  
  6116. Fehlerursache:
  6117.  
  6118. EswirdeineZuweisungeinesfalschenTypszueinemArray-Element
  6119. versucht.
  6120.  
  6121. Beispiel:
  6122. VARGanzeZahl:ARRAY[1..20]OFINTEGER;
  6123. falsch:GanzeZahl[1]:=1.34;
  6124. richtig:GanzeZahl[1]:=ROUND(1.34);Real-VariablenachInteger
  6125. konvertieren
  6126.  
  6127. Abhilfe:aufgleicheTypenachtenoderTyp-Konvertierungbenutzen.
  6128.  
  6129. ≡≡Fehler-Hilfe:27
  6130.  
  6131. Fehlerursache:
  6132.  
  6133. DieuntereunddieobereGrenzeeinesArraysmußdurcheineganzeZahl
  6134. definiertwerden.StattdessenwurdeeinandereTyp(RealoderString)
  6135. verwendet.
  6136.  
  6137. Beispiel:
  6138. falsch:VARZahlen:ARRAY[1.3..2.5]OFREAL;
  6139. richtig:VARZahlen:ARRAY[1..3]OFREAL;
  6140.  
  6141. Abhilfe:ganzeZahlalsGrenzeverwenden.
  6142.  
  6143. ≡≡Fehler-Hilfe:28
  6144.  
  6145. Fehlerursache:
  6146.  
  6147. EswirdeinZugriffaufeinElementeinerVariablenversucht,die
  6148. keinArrayist.
  6149.  
  6150. Beispiel:VARn:INTEGER;
  6151. falsch:n[1]:=2;
  6152. richtig:n:=2;
  6153.  
  6154. Abhilfe:Array-VariableverwendenoderIndexweglassen.
  6155.  
  6156. ≡≡Fehler-Hilfe:29
  6157.  
  6158. Fehlerursache:
  6159.  
  6160. AlsTyp-BezeichnereinesRecord-ElementeswirdeinelementarerTyp
  6161. odereinbereitsdeklarierterTyperwartet,inITG-PASCALaber
  6162. keinesfallsz.B.Prozedur-,Funktions-oderObjekt-Typen.
  6163.  
  6164. Beispiel:
  6165. falsch:TYPE
  6166. EinRecord=RECORD
  6167. EinElementDrucken:Write;Prozedur-Typistnicht
  6168. END;erlaubt
  6169.  
  6170.  
  6171. richtig:TYPE
  6172. EinRecord=RECORD
  6173. EinElement:STRING[20];einfacherTypisterlaubt
  6174. END;
  6175.  
  6176. Abhilfe:einfachenTypoderbereitsdeklariertenTypverwenden.
  6177.  
  6178. ≡≡Fehler-Hilfe:30
  6179.  
  6180. Fehlerursache:
  6181.  
  6182. DerverwendeteTypwurdenochnichtdeklariert.
  6183.  
  6184. Beispiel:
  6185. falsch:VARBeispiel:EinBeispiel;inITG-PASCALsonicht
  6186. bekannt
  6187. richtig:TYPEEinBeispiel=STRING[10];neuenTyperstdeklarieren
  6188. VARBeispiel:EinBeispiel;
  6189.  
  6190. Abhilfe:zuerstneuenTypdeklarierenoderSchreibfehlerbeseitigen.
  6191.  
  6192. ≡≡Fehler-Hilfe:31
  6193.  
  6194. Fehlerursache:
  6195.  
  6196. Eswurdeversucht,ineinerVariablen,diekeinRecord(keineDaten-
  6197. struktur)ist,aufeinRecord-Elementzuzugreifen.
  6198.  
  6199. Beispiel:
  6200. falsch:VAR
  6201. Person:ARRAY[1..2]OFSTRING[20];
  6202. Person.Nachname:="XYZ";
  6203. richtig:TYPE
  6204. Person=RECORD
  6205. Vorname,Nachname:STRING[20];
  6206. END;
  6207. Person.Nachname:="XYZ";
  6208.  
  6209. Abhilfe:JenachFalleinfacheVariableoderRecord-Variable
  6210. verwenden.
  6211.  
  6212. ≡≡Fehler-Hilfe:32
  6213.  
  6214. Fehlerursache:
  6215.  
  6216. EswurdestatteinesWahrheitswertes(BOOLEAN)etwasandereszugewiesen.
  6217.  
  6218. Beispiel:VAR
  6219. IstWahr:BOOLEAN;
  6220. n:=INTEGER;
  6221. falsch:IstWahr:=1; 1istkeinWahrheitswert
  6222. richtig:IstWahr:=TRUE;TRUEoderFALSEsind
  6223.  Wahrheitswerte
  6224. IstWahr:=(n=1);DerrechteTeilderZuweisungist
  6225.  eineAussageform,diegenaudann
  6226.  wahrist,wennn=1ist.IstWahr
  6227.  erhältdanndenWertTRUE,sonst
  6228.  denWertFALSE.
  6229. Abhilfe:Wahrheitwertverwenden.
  6230.  
  6231. ≡≡Fehler-Hilfe:33
  6232.  
  6233. Fehlerursache:
  6234.  
  6235. Eswurdeversucht,miteinerVariablen/Konstantenzurechnen,
  6236. diekeineZahlist.
  6237.  
  6238. Beispiel:
  6239. falsch:s:="1.23"/"4.56";DivisionzweierZeichenkettenist
  6240. 
  6241. nichtdefiniert.
  6242. richtig:r:=1.23/4.56;DivisionzweierDezimalzahlen
  6243.  
  6244. Abhilfe:Zahlenwerte/Zahlenvariablenverwenden.
  6245.  
  6246. ≡≡Fehler-Hilfe:34
  6247.  
  6248. Fehlerursache:
  6249.  
  6250. AlsIndexwurdeetwasanderesalseineganzeZahlverwendet.
  6251.  
  6252. Beispiel:VAR
  6253. s:STRING[20];
  6254. c:CHAR;
  6255. falsch:c:=s[1.3];WelcherBuchstabestehtander1,3.Stelle
  6256. vons?
  6257. richtig:c:=s[2];Indexmußganzzahligsein!
  6258. falsch:Write(Copy(s,1.3,1));s.o.
  6259. richtig:Write(Copy(s,2,1));
  6260.  
  6261. Abhilfe:Integer-Typverwenden.
  6262.  
  6263. ≡≡Fehler-Hilfe:35
  6264.  
  6265. Fehlerursache:
  6266.  
  6267. EswurdenTypenverwendet,dieindiesemFallnichtkompatibel
  6268. (gleichwertig)sind.
  6269.  
  6270. Beispiel:VAR
  6271. s:STRING[20];
  6272. c:CHAR;
  6273. falsch:IFs=cTHEN...STRINGSundCHARSkönnennichtdirekt
  6274. miteinanderverglichenwerden.
  6275. richtig:IFs[1]=cTHEN...s[1]istvomTypCHAR.
  6276.  
  6277. Abhilfe:KompatibleTypenverwendenoderTypkonvertierung
  6278. (Typumwandlung)verwenden.
  6279.  
  6280. ≡≡Fehler-Hilfe:36
  6281.  
  6282. Fehlerursache:
  6283.  
  6284. AneineProzedur/FunktionwurdeeinParametereinesfalschenTyps
  6285. übergeben.
  6286.  
  6287. Beispiel:PROCEDUREBeispiel(r:REAL);
  6288. falsch:Beispiel("1.5");"1.5"isteinSTRINGund
  6289. damitnichtkompatibelzum
  6290. TypREAL.
  6291. richtig:Beispiel(1.5);REAL-Parameter
  6292.  
  6293. Abhilfe:RichtigenParameter-TypverwendenoderTypkonvertieren.
  6294.  
  6295. ≡≡Fehler-Hilfe:37
  6296.  
  6297. Fehlerursache:
  6298.  
  6299. AnstelleeinerVariablenwurdeeineKonstanteverwendet.
  6300.  
  6301. Beispiel:VARs:STRING[20];
  6302. falsch:Read("XYZ");    "XYZ"isteineSTRING-Konstante
  6303. richtig:s:="XYZ";
  6304. VariablemiteinemWertbelegen
  6305. Read(s);undalsParameterübergeben
  6306.  
  6307. Abhilfe:Variableverwendenundgegebenenfallsvorhermiteinem
  6308. Wertbelegen.
  6309.  
  6310. ≡≡Fehler-Hilfe:38
  6311.  
  6312. Fehlerursache:
  6313.  
  6314. AnstelleeinerSTRING-VariablenwurdeeinandererTypverwendet.
  6315.  
  6316. Beispiel:
  6317. falsch:Write(Copy(1.234,3,2));auseinerZahlkönnenso
  6318. keineZiffernherausgezogen
  6319. werden.
  6320. richtig:Write(Copy("1.234",3,2));ergibt"23"
  6321.  
  6322. Abhilfe:STRING-KonstanteoderVariableverwenden.
  6323.  
  6324. ≡≡Fehler-Hilfe:39
  6325.  
  6326. Fehlerursache:
  6327.  
  6328. EinerProzedur/FunktionwurdenzuwenigParameterübergeben.
  6329.  
  6330. Beispiel:
  6331. falsch:Strecke(1,3);
  6332. richtig:Strecke(1,3,100,150);
  6333.  
  6334. Abhilfe:DienötigenParameterhinzufügen.
  6335.  
  6336. ≡≡Fehler-Hilfe:40
  6337.  
  6338. Fehlerursache:
  6339.  
  6340. IneinerINTEGER-KonstantenwurdenandereZeichenals0,1,..9
  6341. fürZiffernverwendet.
  6342.  
  6343. Beispiel:
  6344. falsch:1x2xkannkeineZiffersein
  6345. richtig:132
  6346.  
  6347. Abhilfe:Nur0-9alsZiffernverwenden.
  6348.  
  6349. ≡≡Fehler-Hilfe:41
  6350.  
  6351. Fehlerursache:
  6352.  
  6353. StatteineseinfachenDatentypswurdeandererTyp(z.B.File, Text)
  6354. verwendet.
  6355.  
  6356. Beispiel:VAR
  6357. File1,File2:FILE;
  6358. a:ARRAY[1..10]OFSTRING[20];
  6359. falsch:Write(File1,File2);EineDateivariablekannnichtin
  6360.     eineDateihineingeschriebenwerden.
  6361. richtig:Write(File1,a);ArrayskönnenineineDatei
  6362.     geschriebenwerden.
  6363.  
  6364. Abhilfe:EinfachenTypverwenden.
  6365.  
  6366. ≡≡Fehler-Hilfe:42
  6367.  
  6368. Fehlerursache:
  6369.  
  6370. EswurdestatteinerREAL-Variablen/KonstanteneinandererTyp
  6371. verwendet.
  6372.  
  6373. Beispiel:VAR
  6374. i:INTEGER;
  6375. r:REAL;
  6376. s:STRING;
  6377. falsch:Str(i:10:5,s);eineInteger-VariablehatkeineNach-
  6378. kommastellen.
  6379. richtig:Str(r:10:5,s);shatnachderKonvertierungdieLänge
  6380. 10,davonsind5Nachkommastellen.
  6381.  
  6382. Abhilfe:REAL-Variable/Konstanteverwenden.
  6383.  
  6384. ≡≡Fehler-Hilfe:43
  6385.  
  6386. Fehlerursache:
  6387.  
  6388. StatteinerINTEGER-Variablen/KonstantenwurdeeinandererTyp
  6389. verwendet.
  6390.  
  6391. Beispiel:
  6392. falsch:Strecke(1.5,2.3,150.3,123.7);Bildschirmpunktehaben
  6393. immerganzzahlige
  6394. Koordinaten.
  6395. richtig:Strecke(2,2,150,124);
  6396.  
  6397. Abhilfe:INTEGER-Variable/Konstanteverwenden.
  6398.  
  6399. ≡≡Fehler-Hilfe:44
  6400.  
  6401. Fehlerursache:
  6402.  
  6403. StatteinerVariablen,KonstantenoderFunktionwurdeetwasanderes
  6404. verwendet.
  6405.  
  6406. Beispiel:VARn:INTEGER;
  6407. falsch:Write(INTEGER);Typensindhiernichtzulässig
  6408. richtig:Write(n);nisteineVariable
  6409. falsch:Write(Grafikschirm);Prozedur-Aufrufesindhier
  6410. nichtzulässig
  6411. richtig:Write(EsGibtDatei("XYZ"));EsGibtDateiisteineFunktion
  6412.  
  6413. Abhilfe:Variable,KonstanteoderFunktionverwenden.
  6414.  
  6415. ≡≡Fehler-Hilfe:45
  6416.  
  6417. Fehlerursache:
  6418.  
  6419. StatteinerVariablen,dereinWertzugewiesenwerdensoll,odereines
  6420. Prozeduraufrufeswurdeetwasanderesverwendet.
  6421.  
  6422. Beispiel:VARn:INTEGER;
  6423. falsch:INTEGER:=5;einemTypkannkeinWertzugewiesen
  6424. werden
  6425. richtig:n:=5;
  6426. einerVariablenkanneinneuerWert
  6427. zugewiesenwerden
  6428.  
  6429. Abhilfe:VariableoderProzeduraufrufverwenden.
  6430.  
  6431. ≡≡Fehler-Hilfe:46
  6432.  
  6433. Fehlerursache:
  6434.  
  6435. EssollendieInhaltezweierVariablenverschiedenenTypsvertauscht
  6436. werden.
  6437.  
  6438. Beispiel:VAR
  6439. r1,r2:REAL;
  6440. n1,n2:INTEGER;
  6441. falsch:Vertausche(n1,r2);n1undr2sindverschiedeneTypen
  6442. richtig:Vertausche(r1,r2);r1undr2sindvomgleichenTyp
  6443. Vertausche(n1,n2);n1undn2sindvomgleichenTyp
  6444.  
  6445. Abhilfe:GleicheTypenverwenden.
  6446.  
  6447. ≡≡Fehler-Hilfe:47
  6448.  
  6449. Fehlerursache:
  6450.  
  6451. InderFallunterscheidungmitCASEVariableOFwurdeinnerhalbder
  6452. VergleichslisteeineKonstanteverwendet,dienichtvomgleichen
  6453. TypwieVariableist.
  6454.  
  6455. Beispiel:VARc:CHAR;
  6456. falsch:CASEcOF
  6457. 1:...;1isteineINTEGER-Konstante
  6458. "XYZ":...;"XYZ"isteineSTRING-Konstante
  6459. richtig:CASEcOF
  6460. "1":...;"1"istvomTypCHAR
  6461. "X":...;"X"istvomTypCHAR
  6462.  
  6463. Abhilfe:GleicheTypenverwenden.
  6464.  
  6465. ≡≡Fehler-Hilfe:48
  6466.  
  6467. Fehlerursache:
  6468.  
  6469. EinerVariablensolleinFunktionswertzugewiesenwerden,dernichtdem
  6470. TypderVariablenentspricht.
  6471.  
  6472. Beispiel:VAR
  6473. c:CHAR;
  6474. r:REAL;
  6475. falsch:c:=SQR(3);DieFunktionSQRgibteinenREAL-Wertzurück
  6476. richtig:r:=SQR(3);EswerdengleicheTypenbenutzt.
  6477.  
  6478. Abhilfe:GleichewertigeTypenverwenden.
  6479.  
  6480. ≡≡Fehler-Hilfe:49
  6481.  
  6482. Fehlerursache:
  6483.  
  6484. DerfreieSpeicherdesComputersisterschöpft.FürdasSpeicherneiner
  6485. STRING-KonstantenstehtkeinPlatzmehrzurVerfügung.
  6486.  
  6487. Beispiel:keinBenutzerfehler
  6488. falsch:-
  6489. richtig:-
  6490.  
  6491. Abhilfe:NichtbenötigteSTRING-KonstantenausdemProgramm
  6492. entfernen.
  6493.  
  6494. ≡≡Fehler-Hilfe:50
  6495.  
  6496. Fehlerursache:
  6497.  
  6498. StatteinerKonstantenwurdeetwasanderesverwendet.
  6499.  
  6500. Beispiel:CONSTStringLänge=20;
  6501. VARLänge:INTEGER;
  6502. falsch:VARs:STRING[Länge];LängeisteineVariable
  6503. richtig:VARs:STRING[StringLänge];StringLängeisteine
  6504. Konstante
  6505. VARs:STRING[20];
  6506.  
  6507. Abhilfe:Konstanteverwenden.
  6508.  
  6509. ≡≡Fehler-Hilfe:51
  6510.  
  6511. Fehlerursache:
  6512.  
  6513. BeieinerZuweisungwurdealsZuweisungsopeartoretwasanderesals":="
  6514. verwendet.
  6515.  
  6516. Beispiel:VARr:REAL;
  6517. falsch:r=5.4*3.1;"="darfbeiZuweisungennichtverwendet
  6518. werden
  6519. richtig:r:=5.4*3.1;Zuweisungsoperator":="verwendet
  6520.  
  6521. Abhilfe:":="verwenden.
  6522.  
  6523. ≡≡Fehler-Hilfe:52
  6524.  
  6525. Fehlerursache:
  6526.  
  6527. BeieinerIF-AnweisungwurdeetwasanderesalsTHENverwendet.
  6528.  
  6529. Beispiel:
  6530. falsch:IFr=1.3DO...falscheSyntax
  6531. richtig:IFr=1.3THEN...
  6532.  
  6533. Abhilfe:THENoderTHENBEGINverwenden.
  6534.  
  6535. ≡≡Fehler-Hilfe:53
  6536.  
  6537. Fehlerursache:
  6538.  
  6539. EineREPEAT-SchleifewurdenichtmitUNTILgeschlossen.
  6540.  
  6541. Beispiel:
  6542. falsch:REPEAT
  6543. Anweisungen;
  6544. END;falscheSyntax
  6545. richtig:REPEAT
  6546. Anweisungen;
  6547. UNTILwahreBedingung;
  6548.  
  6549. Abhilfe:UNTILverwenden.UnterUmständensindProgramm-Blöcke
  6550. nichtrichtiggeschachtelt.
  6551.  
  6552.  
  6553. Beispiel:
  6554.     FORn:=1TO100DOBEGIN
  6555. REPEAT
  6556. Anweisungen;
  6557. END;falscheSchachtelungderSchleifen
  6558.     UNTILn>100;
  6559.  
  6560. ≡≡Fehler-Hilfe:54
  6561.  
  6562. Fehlerursache:
  6563.  
  6564. IneinerFOR-TO-SchleifewurdeetwasanderesalsDOverwendet.
  6565.  
  6566. Beispiel:
  6567. falsch:FORn:=1TO100BEGIN...
  6568. richtig:FORn:=1TO100DOBEGIN...
  6569.  
  6570. Abhilfe:DOoderDOBEGINverwenden.
  6571.  
  6572. ≡≡Fehler-Hilfe:55
  6573.  
  6574. Fehlerursache:
  6575.  
  6576. IneinerFOR-TO-SchleifewurdeetwasanderesalsTOoderDOWNTO
  6577. verwendet.
  6578.  
  6579. Beispiel:
  6580. falsch:FORn:=1DO...Syntax-Fehler
  6581. richtig:FORn:=1TO100DO...inEinerschrittenaufwärts
  6582. FORn:=100DOWNTO1DO...inEinerschrittenabwärts
  6583.  
  6584. Abhilfe:TOoderDOWNTOverwenden.
  6585.  
  6586. ≡≡Fehler-Hilfe:56
  6587.  
  6588. Fehlerursache:
  6589.  
  6590. StattBEGINwurdeetwasanderesverwendet.
  6591.  
  6592. Beispiel:
  6593. falsch:PROGRAMName;
  6594. WriteLn("XYZ");BEGINfehlt
  6595. END.
  6596. richtig:PROGRAMName;
  6597. BEGIN
  6598. Write("XYZ");
  6599. END.
  6600.  
  6601. Abhilfe:BEGINeinfügen.
  6602.  
  6603. ≡≡Fehler-Hilfe:57
  6604.  
  6605. Fehlerursache:
  6606.  
  6607. ZueinemBEGINgibteskeinpassendesEND.DieUrsachekönntein
  6608. fehlerhaftenSchachtelungenliegen.
  6609.  
  6610. Beispiel:
  6611. falsch:FORn:=1TO100DOBEGIN
  6612. REPEAT
  6613. Anweisungen;
  6614. END;falscheSchachtelungderSchleifen
  6615. UNTILwahreBedingung;
  6616.  
  6617.  
  6618. richtig:FORn:=1TO100DOBEGIN
  6619. REPEAT
  6620. Anweisungen;
  6621. UNTILwahreBedingung;
  6622. END;
  6623.  
  6624. Abhilfe:ENDverwenden.GegebenenfallssinddieProgrammstrukturen
  6625. zuüberprüfen.
  6626.  
  6627. ≡≡Fehler-Hilfe:58
  6628.  
  6629. Fehlerursache:
  6630.  
  6631. StatteinesZahlenwertesodereinerVariablenwurdeetwasanderes
  6632. verwendet.
  6633.  
  6634. Beispiel:VARr:REAL;
  6635. falsch:r:=5*Write(1.3);WriteisteineProzedurunddarfin
  6636.     einemProduktnichtverwendetwerden
  6637. richtig:r:=5*r; neuerWertvonrist5*alterWert
  6638.     vonr
  6639.  
  6640. Abhilfe:ZahlenwertoderVariableverwenden.
  6641.  
  6642. ≡≡Fehler-Hilfe:59
  6643.  
  6644. Fehlerursache:
  6645.  
  6646. ZweiParametereineProzedur/Funktionwurdendurchetwasanderesals
  6647. einKommagetrennt.
  6648.  
  6649. Beispiel:
  6650. falsch:Punkt(x;y);DieProzedurPunktbenötigtx-undy-Koor-
  6651. dinate.DieTrennungerfolgtdurchein
  6652. Komma.
  6653. richtig:Punkt(x,y);
  6654.  
  6655. Abhilfe:Kommaverwenden.
  6656.  
  6657. ≡≡Fehler-Hilfe:60
  6658.  
  6659. Fehlerursache:
  6660.  
  6661. Eswurdeversucht,eineneinzelnenBuchstabeneinesSTRINGSdirekt
  6662. einzulesen.
  6663.  
  6664. Beispiel:VAR
  6665. s:STRING[20];
  6666. c:CHAR;
  6667. falsch:Read(s[5]);STRINGSkönnennurvollständiggelesenwerden
  6668. richtig:Read(s);STRINGvollständiglesen
  6669. oder:Read(c);CHARlesenundeinemBuchstabendesSTRINGS
  6670. s[5]:=c;zuweisen
  6671.  
  6672. Abhilfe:LesevorgangwieindenbeidenBeispielengezeigtje
  6673. nachAnwendungsfallprogrammieren.
  6674.  
  6675. ≡≡Fehler-Hilfe:61
  6676.  
  6677. Fehlerursache:
  6678.  
  6679. Eswurdeversucht,einARRAYsogroßzudefinieren,daßesnichtmehr
  6680. ineinDatensegmentpaßt.
  6681.  
  6682. Beispiel:
  6683. falsch:VARa:ARRAY[1..100000]OFINTEGER;DieAnzahlder
  6684. richtig:VARa:ARRAY[1..5000]OFINTEGER;zulässigenFeld-
  6685. elementeistin
  6686. ITG-PASCALstark
  6687. eingeschränkt.
  6688.  
  6689. Abhilfe:AnzahlderFeldelementeverringern.
  6690.  
  6691. ≡≡Fehler-Hilfe:62
  6692.  
  6693. Fehlerursache:
  6694.  
  6695. DasProgrammwurdenichtdurcheinabschließendes"END."beendet.
  6696.  
  6697. Beispiel:
  6698. falsch:PROGRAMMName;
  6699. BEGIN
  6700. Write("XYZ");hierfolgtkeinweitererProgrammtext
  6701. richtig:PROGRAMMName;
  6702. BEGIN
  6703. Write("XYZ");
  6704. END.
  6705.  
  6706. Abhilfe:Programmordnungsgemäßbeenden.
  6707.  
  6708. ≡≡Fehler-Hilfe:63
  6709.  
  6710. Fehlerursache:
  6711.  
  6712. DasEndeeinerSTRING-KonstantenwurdenichtmehrinderZeilegefunden,
  6713. inderderAnfangderSTRING-Konstantenstand.
  6714.  
  6715. Beispiel:
  6716. falsch:Write("xyzDieAnführungsstrichemüssenin
  6717. XYZ");derselbenZeilegeöffnetundgeschlossen
  6718. werden.
  6719. richtig:Write("xyzXYZ");
  6720.  
  6721. Abhilfe:STRING-KonstanteinderlaufendenZeiledurch
  6722. Anführungsstrichebeenden.
  6723.  
  6724. ≡≡Fehler-Hilfe:64
  6725.  
  6726. Fehlerursache:
  6727.  
  6728. -EsstehteinSemikolon,wokeinesstehendarf.
  6729. Abhilfe:Semikolonentfernen!
  6730. Beispiele:
  6731.     END;ENDdarfkeinSemikolonfolgen,wennein
  6732. ELSEfolgt!
  6733.  
  6734.     VAR,CONST,TYPE,DiesenBezeichnerndarfnieein
  6735.     RECORD,BEGIN,THEN,Semikolonfolgen!
  6736.     ELSE,REPEAT,
  6737.     CASE..OF,
  6738.  
  6739. ≡≡Fehler-Hilfe:65
  6740.  
  6741. Fehlerursache:
  6742.  
  6743. IneinerProzedur/FunktionmitvariablerParameterzahlwurdedie
  6744. ParameterlistewedernachTrennungderParameterdurcheinKomma
  6745. fortgesetztnochdurch")"abgeschlossen.
  6746.  
  6747. Beispiel:
  6748. falsch:Write(x;y);ParameterwerdennichtdurcheineKomma
  6749. getrennt
  6750. richtig:Write(x,y);richtigeTrennungmiteinemKomma
  6751.  
  6752. Abhilfe:Kommaoder")"einfügen.
  6753.  
  6754. ≡≡Fehler-Hilfe:66
  6755.  
  6756. Fehlerursache:
  6757.  
  6758. EineTyp-Deklarationwurdefehlerhaftfortgesetzt.
  6759.  
  6760. Beispiel:
  6761. falsch:x=RECORD
  6762. a,b:INTEGER,UnterschiedlicheTypenwerdendurch
  6763. r:REAL;einSemikolongetrennt.
  6764. END;
  6765. richtig:x=RECORD
  6766. a,b:INTEGER;
  6767. r:REAL;
  6768. END;
  6769.  
  6770. Abhilfe:Deklarationordnungsgemäßfortsetzen.
  6771.  
  6772. ≡≡Fehler-Hilfe:67
  6773.  
  6774. Fehlerursache:
  6775.  
  6776. EineProzedur-/Funktions-Deklarartionwurdefehlerhaftbeendet.
  6777.  
  6778. Beispiel:
  6779. falsch:PROCEDUREp(x:REAL),Abschließendwirdein
  6780. richtig:PROCEDUREp(x:REAL);Semikolonerwartet.
  6781.  
  6782. falsch:FUNCTIONf(x:REAL);    Funktionsergebnissenmuß
  6783. richtig:FUNCTIONf(x:REAL):REAL;eineinfacherDatentyp
  6784. zugeordnetwerden.
  6785.  
  6786. Abhilfe:":"oder";"einfügen.
  6787.  
  6788. ≡≡Fehler-Hilfe:68
  6789.  
  6790. Fehlerursache:
  6791.  
  6792. BeieinerRead-/Write-AnweisungmiteinerDateivariablenwurdedie
  6793. DateivariablenichtalsersterParameterübergeben.
  6794.  
  6795. Beispiel:VAR
  6796. a:ARRAY[1..10]OFINTEGER;
  6797. f:FILE;
  6798. falsch:Write(a,f);DateivariablemußersterParametersein.
  6799. richtig:Write(f,a);
  6800.  
  6801. Abhilfe:DateivariablealserstenParameterübergeben.
  6802.  
  6803. ≡≡Fehler-Hilfe:69
  6804.  
  6805. Fehlerursache:
  6806.  
  6807. EineDateivariablesollmiteinemVariablentypverknüpftwerden.
  6808. DabeiwurdedieVerknüpfungnichtmitOFdurchgeführt.
  6809.  
  6810. Beispiel:
  6811.  
  6812. falsch:VAR
  6813. f:FILEIrgendeinVariablentyp;
  6814.  
  6815. richtig:VAR
  6816. f:FILEOFIrgendeinVariablentyp;
  6817.  
  6818. Abhilfe:OFundVariablentyphinterFILEeinfügen.
  6819.  
  6820. ≡≡Fehler-Hilfe:70
  6821.  
  6822. Fehlerursache:
  6823.  
  6824. UNTILwurdeverwendet,
  6825. 1)obwohlkeineREPEAT-UNTIL-Schleifegeöffnetwurde.
  6826. 2)woeinENDerwartetwird.IndiesemFallkanneinefalsche
  6827.     SchachtelungvonProgramm-Blöckenvorliegen.
  6828.  
  6829. Beispiel:
  6830.  
  6831.  
  6832. falsch:FORn:=1TO100DOBEGIN
  6833. Anweisungen;
  6834. UNTILn=100;
  6835. richtig:n:=1;
  6836. REPEAT
  6837. Anweisungen;
  6838. n:=n+1;
  6839. UNTILn>100;
  6840.  
  6841. Abhilfe:REPEAT-UNTIL-SchleifeöffnenoderBlock-Strukturüberprüfen.
  6842.  
  6843. ≡≡Fehler-Hilfe:71
  6844.  
  6845. Fehlerursache:
  6846.  
  6847. NacheinerWITH-AnweisungwurdekeineRECORD-Variableverwendet.
  6848.  
  6849. Beispiel:TYPE
  6850. EinPunkt=RECORD
  6851. x,y:REAL;
  6852. END;
  6853. VAR
  6854. x:REAL;
  6855. Punkt:EinPunkt;
  6856. falsch:WITHxDOBEGINxistkeineRECORD-Variable.
  6857. richtig:WITHPunktDOBEGINPunktisteineRECORD-Variable.
  6858.  
  6859. Abhilfe:RECORD-Variableverwenden.
  6860.  
  6861. ≡≡Fehler-Hilfe:72
  6862.  
  6863. Fehlerursache:
  6864.  
  6865. EssindzweiRECORD-VariablengleichzeitigmitWITH-Anweisungen
  6866. geöffnetworden.
  6867.  
  6868. Beispiel:TYPE
  6869. EinPunkt=RECORD
  6870. x,y:REAL;
  6871. END;
  6872. VAR
  6873. Punkt:ARRAY[1..2]OFEinPunkt;
  6874.  
  6875.  
  6876. falsch:WITHPunkt[1]DOBEGIN
  6877. WITHPunkt[2]DOBEGINIstPunkt[1].x:=Punkt[2].x
  6878. x:=x;oderPunkt[2].x:=Punkt[1].x
  6879. END;gemeint?WegenderDoppeldeutig-
  6880. END;keitisteineSchachtelungnicht
  6881. erlaubt.
  6882. richtig:WITHPunkt[1]DOBEGIN
  6883. Punkt[2].x:=x;eindeutigeAnweisung
  6884. END;
  6885.  
  6886. Abhilfe:NureineWITH-AnweisungöffnenunddieandereRECORD-
  6887. Variablevollständigausschreiben.
  6888.  
  6889. ≡≡Fehler-Hilfe:73
  6890.  
  6891. Fehlerursache:
  6892.  
  6893. IneinerDateibearbeitungs-AnweisungwurdeeinandererVariablentyp
  6894. verwendet.
  6895.  
  6896. Beispiel:VAR
  6897. f:FILE;
  6898. r:REAL;
  6899. falsch:Rename(r);NurDateienkönnenumbenanntwerden.
  6900. richtig:Rename(f);
  6901.  
  6902. Abhilfe:Datei-Variableverwenden.
  6903.  
  6904. ≡≡Fehler-Hilfe:74
  6905.  
  6906. Fehlerursache:
  6907.  
  6908. InderProzedurEingabeFeldkönnenkeineARRAY-,RECORD-undDatei-
  6909. VariablenzumLesenineinerEingabemaskeübergebenwerden.
  6910.  
  6911. Beispiel:VAR
  6912. a:ARRAY[1..10]OFINTEGER;
  6913. falsch:EingabeFeld(x,y,Text,a);Statteineskompletten
  6914. richtig:EingabeFeld(x,y,Text,a[1]);ARRAYSkönnennureinzelne
  6915. ElementeüberEingabe-
  6916. maskeneingelesenwerden.
  6917.  
  6918. Abhilfe:EinfachenDatentypverwenden.
  6919.  
  6920. ≡≡Fehler-Hilfe:75
  6921.  
  6922. Fehlerursache:
  6923.  
  6924. StatteinerCHAR-VariablenwurdeeinandererTypverwendet.
  6925.  
  6926. Beispiel:VAR
  6927. s:STRING;
  6928. Wahl:CHAR;
  6929. falsch:Menü(x,y,MenüPunkte,s);HieristalsvierterPara-
  6930. richtig:Menü(x,y,MenüPunkte,Wahl);meternureineCHAR-Variable
  6931. erlaubt.
  6932.  
  6933. Abhilfe:CHAR-Variableverwenden.
  6934.  
  6935. ≡≡Fehler-Hilfe:76
  6936.  
  6937. Fehlerursache:
  6938.  
  6939. StatteinesZahlenwertes(REAL-oderINTEGER-Konstante/Variable)
  6940. wurdeetwasanderesverwendet.
  6941.  
  6942. Beispiel:
  6943. falsch:WeltPunkt("x","y");HierwerdenZahlenwertefürdie
  6944. richtig:WeltPunkt(1.3,4);Koordinatenerwartet.
  6945.  
  6946. Abhilfe:REAL-oderINTEGER-Konstante/Variableverwenden.
  6947.  
  6948. ≡≡Fehler-Hilfe:77
  6949.  
  6950. Fehlerursache:
  6951.  
  6952. NachderAnweisungWrite/WriteLnwurdewedereineKlammergeöffnet
  6953. nocheinSemikolongesetzt.
  6954.  
  6955. Beispiel:
  6956. falsch:Write"XYZ";ParametergehöreninKlammern
  6957. richtig:Write("XYZ");
  6958.  
  6959. Abhilfe:WennetwasmitWriteausgegebenwerdensoll,mußeine
  6960. Klammergeöffnetwerden,sonstisteinSemikolonzusetzen.
  6961.  
  6962. ≡≡Fehler-Hilfe:78
  6963.  
  6964. Fehlerursache:
  6965.  
  6966. DieParameterlisteineineProzedur-/Funktions-Deklarationwurde
  6967. falschfortgesetzt.
  6968.  
  6969. Beispiel:
  6970. falsch:PROCEDUREW(x:INTEGER,DieTrennungverschiedener
  6971. r:REAL);Parametertypenmußdurchein
  6972. richtig:PROCEDUREW(x:INTEGER;Semikolonerfolgen.
  6973. r:REAL);
  6974.  
  6975. Abhilfe:SemikolonverwendenoderweiterenVariablennameneinfügen.
  6976.  
  6977. ≡≡Fehler-Hilfe:79
  6978.  
  6979. Fehlerursache:
  6980.  
  6981. IneinerCASE-oder...IN[...]-AnweisungwurdenKonstantenfalschen
  6982. TypesoderunzulässigenWertebereichsverwendet.EsdürfennurCHAR-
  6983. KonstantenoderINTEGER-KonstantendesBereichs0..255verwendet
  6984. werden.
  6985.  
  6986. Beispiel:
  6987. falsch:UNTILZahlIN[1000..2000];unzulässigerBereich
  6988. richtig:UNTILZahlIN[100..255];
  6989.  
  6990. Abhilfe:KonstanteinnerhalbdeserlaubtenBereichsverwenden.
  6991.  
  6992. ≡≡Fehler-Hilfe:80
  6993.  
  6994. Fehlerursache:
  6995.  
  6996. ZumLesenoderSchreibeneinerDateivariablendesTypsFILEwurden
  6997. READLNoderWRITELNverwendet.EssindnurREADoderWRITEerlaubt.
  6998.  
  6999. Beispiel:VARRec:IrgendEinRecord;
  7000. falsch:WriteLn(FileVariable,Rec);
  7001. richtig:Write(FileVariable,Rec);
  7002.  
  7003. Abhilfe:READoderWRITEverwenden.
  7004.  
  7005. ≡≡Fehler-Hilfe:81
  7006.  
  7007. Fehlerursache:
  7008.  
  7009. ZumLesenoderSchreibeneinerDateivariablendesTyps TEXTwurden
  7010. READoderWRITEverwendet.EssindnurREADLNoderWRITELNerlaubt.
  7011.  
  7012. Beispiel:VARs:STRING;
  7013. falsch:Write(TextDatei,s);
  7014. richtig:WriteLn(TextDatei,s);
  7015.  
  7016. Abhilfe:READLNoderWRITELNverwenden.
  7017.  
  7018. ≡≡Fehler-Hilfe:82
  7019.  
  7020. Fehlerursache:
  7021.  
  7022. DieRahmenprozedureinesProzesseswurdefehlerhaftdeklariert.
  7023.  
  7024. Beispiel:
  7025. falsch:PROCEDUREProzeß1(n:INTEGER);
  7026. FUNCTIONProzeß2(x:REAL):REAL;
  7027. richtig:PROCEDUREProzeß1;
  7028. .
  7029. .
  7030. NeuerProzeß(1,100,3,Prozeß1);
  7031.  
  7032. Abhilfe:ProzedurohneParameterverwenden.
  7033.  
  7034. ≡≡Fehler-Hilfe:83
  7035.  
  7036. Fehlerursache:
  7037.  
  7038. ZurSynchronisationvonProzessenwurdeeineVariableeinesanderen
  7039. TypsalsdesTypsSIGNALverwendet.
  7040.  
  7041. Beispiel:
  7042. falsch:VARb:BOOLEAN;
  7043. SendeSignal(b);
  7044. richtig:VARs:SIGNAL;
  7045. SendeSignal(s);
  7046.  
  7047. Abhilfe:VariabledesTypsSIGNALverwenden.
  7048.  
  7049. ≡≡Fehler-Hilfe:84
  7050.  
  7051. Fehlerursache:
  7052.  
  7053. FürdieZählvariableeinerFOR-TO-SchleifewurdeeinandererTypals
  7054. INTEGER,CHARoderBOOLEANverwendet.
  7055.  
  7056. Beispiel:
  7057. falsch:VARr:REAL;
  7058. FORr:=1TO10DOWrite(r);
  7059. richtig:VARn:INTEGER;
  7060. FORn:=1TO10DOWrite(n);
  7061.  
  7062. Abhilfe:VariablederTypenINTEGER,CHARoderBOOLEANverwenden.
  7063.  
  7064. ≡≡Fehler-Hilfe:85
  7065.  
  7066. Fehlerursache:
  7067.  
  7068. DieautomatischeVariablen-DeklarationkannnurbeiWertzuweisungen
  7069. undbeiProzedurenmitParameterndurchgeführtwerden,beidenen
  7070. Wertzuweisungenerfolgen.
  7071.  
  7072. Beispiel:
  7073. falsch:IFr=1.5THEN....
  7074. Write(s);
  7075. richtig:r:=2.3;
  7076. Read(s);
  7077.  
  7078. Abhilfe:JEDEVariablesolltevorihrererstenVerwendungmiteinem
  7079. Wertbelegtwerden!
  7080.  
  7081. ≡≡Fehler-Hilfe:86
  7082.  
  7083. Fehlerursache:
  7084.  
  7085. EinProzedur-/FunktionskopfwurdemitFORWARDdeklariert,dieendgültige
  7086. Deklarationfehltaber.
  7087.  
  7088. Beispiel:
  7089. falsch:PROCEDUREp(x:INTEGER);FORWARD;
  7090. EswirdkeineProzedurpdeklariert.
  7091. richtig:PROCEDUREp(x:INTEGER);FORWARD;
  7092. ..
  7093. PROCEDUREp(x:INTEGER);
  7094. BEGIN
  7095. ..
  7096. END;
  7097.  
  7098. Abhilfe:ProzedurimAnschlußnocheinmalvollständigdeklarieren.
  7099.  
  7100. ≡≡Fehler-Hilfe:87
  7101.  
  7102. Fehlerursache:
  7103.  
  7104. DieProzedur-/FunktionsköpfeeinerFORWARD-deklariertenProzedur/
  7105. FunktionundihrerendgültigenDeklarationstimmennichtvollständig
  7106. überein.
  7107.  
  7108. Beispiel:
  7109. falsch:PROCEDUREp(x:INTEGER);FORWARD;
  7110. PROCEDUREp(y:INTEGER); yinxumbenennen
  7111. PROCEDUREp(x,y:INTEGER);Parameterzahlstimmt
  7112. nichtüberein
  7113. PROCEDUREp(x:REAL);Parametertypstimmt
  7114. nichtüberein
  7115. richtig:PROCEDUREp(x:INTEGER);FORWARD;
  7116. PROCEDUREp(x:INTEGER);
  7117.  
  7118. Abhilfe:EinenderbeidenProzedur-/Funktionsköpfekorrigieren.
  7119.  
  7120. ≡≡Fehler-Hilfe:88
  7121.  
  7122. Fehlerursache:
  7123.  
  7124. BeieinerForward-DeklarationwurdeeinZeigeraufeinenanderenTyp
  7125. alsaufeinenRECORDdeklariert.
  7126.  
  7127. Beispiel:TYPE
  7128. KnotenZeiger=^EinKnoten;
  7129. falsch:EinKnoten=ARRAY[1.100]OFSTRING;keinRECORD
  7130.  
  7131. richtig:EinKnoten=RECORD
  7132. Inhalt:STRING;
  7133. Next:KnotenZeiger;
  7134. END;
  7135.  
  7136. Abhilfe:RECORD-Typdeklarieren.
  7137.  
  7138. ≡≡Fehler-Hilfe:89
  7139.  
  7140. Fehlerursache:
  7141.  
  7142. EinerForward-DeklarationeinesZeigerMUSSalsNÄCHSTESderRECORD
  7143. folgen,aufdenderZeigerdeklariertwurde.
  7144.  
  7145. Beispiel:TYPE
  7146. KnotenZeiger=^EinKnoten;
  7147. falsch:Zahlenliste=RECORDEinKnotenMUSSdeklariert
  7148. Zahl:REAL;werden
  7149. Next:KnotenZeiger;
  7150. END;
  7151.  
  7152.  
  7153. richtig:EinKnoten=RECORD
  7154. Inhalt:STRING;
  7155. Next:KnotenZeiger;
  7156. END;
  7157.  
  7158. Abhilfe:HierRECORDmitBezeichnerdesZeigertypsdeklarieren.
  7159.  
  7160. ≡≡Fehler-Hilfe:90
  7161.  
  7162. Fehlerursache:
  7163.  
  7164. InITG-PASCALkönnennur3INCLUDE-Dateiengleichzeitiggeöffnetsein.
  7165. InnerhalbeinerINCLUDE-DateiwurdeeineweitereINCLUDE-Datei
  7166. verwendet,usw.AufdieseWeisewurdedieSchachtelungstiefevon3
  7167. überschritten.
  7168.  
  7169. Abhilfe:SchachtelungstiefevonINCLUDE-Dateienauf3begrenzen.
  7170.  
  7171. ≡≡Fehler-Hilfe:91
  7172.  
  7173. Fehlerursache:
  7174.  
  7175. EswurdeeineINCLUDE-Dateiangegeben,dienichtimaktuellen
  7176. Verzeichnis/indemangegebenenVerzeichnisvorhandenist.
  7177.  
  7178. Abhilfe:RichtigenDateinamenmitrichtigemVerzeichnisverwenden.
  7179.  
  7180. ≡≡Fehler-Hilfe:92
  7181.  
  7182. Fehlerursache:
  7183.  
  7184. FürdenZugriffaufdenInhalteinerZeigervariablenmuß"^"hinter
  7185. demVariablennamenverwendetwerden.
  7186.  
  7187. Beispiel:TYPE
  7188. EinePerson=RECORD
  7189. Vorname,Name:STRING[20];
  7190. END;
  7191. VAR
  7192. Person:^EinePerson;
  7193.  
  7194. falsch:Person.Name:="XYZ";^fehltnachPerson
  7195.  
  7196. richtig:Person^.Name:="XYZ";
  7197.  
  7198. Abhilfe:^einfügen.
  7199.  
  7200. ≡≡Fehler-Hilfe:93
  7201.  
  7202. Fehlerursache:
  7203.  
  7204. Eswurdeversucht,NEWoderDISPOSEmiteinerstatischenVariablen
  7205. aufzurufen.
  7206.  
  7207. Beispiel:TYPE
  7208. EinePerson=RECORD
  7209. Vorname,Name:STRING[20];
  7210. END;
  7211. VAR
  7212. dynPerson:^EinePerson;dynamischeVariable/
  7213. Zeigervariable
  7214. statPerson:EinePerson;statischeVariable
  7215.  
  7216.  
  7217. falsch:NEW(statPerson);keinedynamischeVariable
  7218.  
  7219. richtig:NEW(dynPerson);
  7220.  
  7221. Abhilfe:NEWoderDISPOSEnurmitdynamischenVariablenaufrufen.
  7222.  
  7223. ≡≡Fehler-Hilfe:94
  7224.  
  7225. Fehlerursache:
  7226.  
  7227. InITG-PASCALsindnurZeigervariablenaufArraysundRecords
  7228. implementiert.Eswurdeversucht,eineZeigervariableaufeinen
  7229. anderenDatentypzudeklarieren.
  7230.  
  7231. Beispiel:
  7232. falsch:VAR
  7233. Zeiger:^REAL; keinARRAYoderRECORD
  7234.  
  7235. richtig:TYPE
  7236. RealArray=ARRAY[0..10]OFREAL;
  7237. VAR
  7238. Zeiger:^RealArray;ZeigeraufeinARRAY
  7239.  
  7240. Abhilfe:GeeignetesARRAYodergeeignetenRECORDmitZeigervariablen
  7241. daraufdeklarieren.
  7242.  
  7243. ≡≡Fehler-Hilfe:99
  7244.  
  7245. Fehlerursache:
  7246.  
  7247. DieAnweisungistinITG-PASCAL(noch)nichtimplementiert.
  7248.  
  7249. Abhilfe:
  7250. VerwendenSieandereAnweisungen.
  7251.  
  7252. ≡≡Fehler-Hilfe:101
  7253.  
  7254. Fehlerursache:
  7255. DieTabellefürBezeichner(Konstanten-,Variablen-,Typ-,Prozedur-
  7256. undFunktions-Deklarationen)istvoll.
  7257.  
  7258. Abhilfe:
  7259. VersuchenSie,dieAnzahlderBezeichnerzuverringern.
  7260.  
  7261. ≡≡Fehler-Hilfe:102
  7262.  
  7263. Fehlerursache:
  7264.  
  7265. DieTabellefürdieParameterlistenderProzeduren/Funktionen
  7266. istvoll.
  7267.  
  7268. Abhilfe:
  7269. VersuchenSie,einigederdeklariertenProzeduren/Funktionen
  7270. zustreichen.
  7271.  
  7272. ≡≡Fehler-Hilfe:103
  7273.  
  7274. Fehlerursache:
  7275.  
  7276. DieTabellefürdieDeklarationvonReal-Konstantenistvoll.
  7277.  
  7278. Abhilfe:
  7279. ErsetzenSieeinigederReal-KonstantendurchVariablen,denen
  7280. SiebeimProgramm-StartWertezuweisen.
  7281.  
  7282. ≡≡Fehler-Hilfe:104
  7283.  
  7284. Fehlerursache:
  7285.  
  7286. DieTabellefürArray-Deklarationenistvoll.
  7287.  
  7288. Abhilfe:
  7289. VersuchenSie,einigederdeklariertenArrayszustreichen.
  7290.  
  7291. ≡≡Fehler-Hilfe:105
  7292.  
  7293. Fehlerursache:
  7294.  
  7295. EssindzuvieleProzedur-/Funktions-Deklarationenineinander
  7296. geschachtelt.
  7297.  
  7298. Abhilfe:
  7299. ÄndernSiedie(inneren)Deklarationenwiefolgtab:
  7300.  
  7301.  
  7302. PROCEDUREa;
  7303. PROCEDUREb;
  7304. BEGIN
  7305. END;
  7306.  
  7307. BEGIN
  7308.  
  7309. END;
  7310.  
  7311. ersetzendurch
  7312.  
  7313.  
  7314.  
  7315. PROCEDUREb;
  7316.  
  7317. BEGIN
  7318.  
  7319. END;
  7320.  
  7321. PROCEDUREa;
  7322.  
  7323. BEGIN
  7324.  
  7325. END;
  7326.  
  7327. ≡≡Fehler-Hilfe:106
  7328.  
  7329. Fehlerursache:
  7330.  
  7331. DieTabellefürdenProgramm-Codeistvoll.
  7332.  
  7333. Abhilfe:
  7334. VersuchenSie,denProgrammumfangdurchStreichennicht
  7335. benötigterProgrammteilezuverringern.
  7336.  
  7337. ≡≡Fehler-Hilfe:107
  7338.  
  7339. Fehlerursache:
  7340.  
  7341. DieTabellefürString-Einträgeistvoll.
  7342.  
  7343. Abhilfe:
  7344. VersuchenSie,mitwenigerString-Deklarationenauszukommen.
  7345.  
  7346. ≡≡Fehler-Hilfe:108
  7347.  
  7348. Fehlerursache:
  7349.  
  7350. DieTabellefürEingabefelderistvoll.
  7351.  
  7352. Abhilfe:
  7353. TeilenSiedieEingabederVariablenaufundverwendenSie
  7354. zwischendurchdieProzedurLiesEingaben.
  7355.  
  7356. ≡≡Fehler-Hilfe:152
  7357.  
  7358. Fehlerursache:
  7359.  
  7360. MengensindinITG-PASCAL(noch)nichtimplementiert.
  7361.  
  7362. Abhilfe:
  7363. VersuchenSie,SETdurchandereAnweisungenzuersetzen.
  7364.  
  7365. ≡≡Fehler-Hilfe:153
  7366.  
  7367. Fehlerursache:
  7368.  
  7369. Zeiger(Pointer)sindinITG-PASCAL(noch)nichtimplementiert.
  7370.  
  7371. Abhilfe:
  7372. VersuchenSie,statischeVariablenzubenutzen.
  7373.  
  7374. ≡≡Fehler-Hilfe:154
  7375.  
  7376. Fehlerursache:
  7377.  
  7378. LABELwirdinITG-PASCALnichtimplementiert.
  7379.  
  7380. Abhilfe:
  7381. VerwendenSiestrukturierteSchleifen.
  7382.  
  7383. ≡≡Fehler-Hilfe:155
  7384.  
  7385. Fehlerursache:
  7386.  
  7387. GOTOwirdinITG-PASCALnichtimplementiert.
  7388.  
  7389. Abhilfe:
  7390. VerwendenSiestrukturierteSchleifen.
  7391.  
  7392. ≡≡ITG-PASCAL-Hilfe-Ende
  7393.