87 s OCR
Transkript
87 s OCR
- Uživatelsk,a _, prtručka- - - ---- - ----- ------- - -- - -- -- -------- - -------- Kapi·t.ola 0 _ Úvod_ 0. 0 SWVO NA ÚVOD. ================== Pascal .ie .iazyk byl vyŠŠ:f. proaramovac{ navržen Unlversity 7.n.ri.ch . .i'lzvk Profesorem pro \~irthem Niklausem .jazvk.'l. bvla uveře.iněna v roce 197 l . Pascal s:vsternetického nříst. upu k strukturovaného prop::ramováni.. pouŽÍvat y ' soucasne jazykŮm. nejen době z Tento Technical Jazyk hvl Poimenován Podlo'l znám,l.ho matAmatika a filoz.ofa sedmnáctého stolet:Í Blaise Pascala . pro vÝuku POil~it.{. obecné ÓČely pro patH k Pascal <• nro Ílvod do prof.!ramovimí Během vÝuky, \hrthova definice hvl n av rŽen PředevŠÍm k:.:-átké doby ale • také 'I I v V se zZ~oal Pascal běž nó • 't I ne.JpouzJ.vane.lsl.m praxi. V ' proa.r~'roovnclm rozšířil D:Í.ky relativnl. snadné implementaci se Pasca l i na mikropoči.tačích niŽŠÍ tř:Í.cly (bez diskové paměti) a t.ak máte i vy možnost pracovat na mikropoči tači otmRA s překladaČem t.ohoto jazyka. Tato verze .ie .iednou z mintmálnich implementací standardn:Í.ch podnro~tramŮ má velikost 4KB. 10KB. Všechny části .ii' ~ J Ka . Blok editor 4KB a pře~tl.:;,J;;Č .isou realizovány v .iazvce symbolickÝch adres mikroprocesoru Z80. PtekladRČ >!eneru.ie abnolutní, velmi rve hl~ str.o.iov.J. kÓd . Př{kazem ' T' v edi.t.oru standardni.mi (Kapi-t.ol~ 4) podprogramy bo;e nřeloŽ~nÝ pro,~tram nahrát. spolu se do soubo r u na magnetofon a potom používat zcela samostatné . Pokud z .i i stíte chyby v Činnosti překladaČe, na jadnu z následu .iic{ ch adres: ~~ emne Daniel U Trojice 23 České Buda.iovic•3 3'1001 Cent rum pro ffilád::J?ť,, vědu a t .$chniku ÚV Sf~ř'1 sdél te .ie prosim ho nám. M. Gorkého 24 Praha 1 1164 7 m.l ROZSAH PŘÍRUČKY. ===================== Tento návod neni uČebnicÍ. Pascalu. Jste-li nováček v pro~ramov1mi v .iaz~·ce Pascal v:vhlede .ite si ne.iprve ně.i ;,ko u uČebnici Pascalu. např . literaturu uvedenou v př{loze F. Kap i t .o la 1 nbsahu .ie synt.axi a séma nt. i ku ia:>.ykél. Ka pitola 2 det.ailně popi~u ie r&~mé Předdefinované irlent,ifikátory Kapitola 3 obsahuje informace o řízeni Činnost.i P.řekladačo Kap i tol a 4 ukazuje pou~i·tf řf.Hikov.Sho vest.avěného e ditoru Příloha A obsahu.ie chybová hJ.Ašeni. Přiloh« B obsahu.ie seznam rezervovanÝch slov. Přiloha C obsahuje seznam PředdefinovanÝch iclent.ifikátor&. p;.:f.loha D obsahu.ie podrobnosti pro pro.« ramátorv. kt.eří. c htě .ií o vn i. třní pracovat i repr"''zent.ani na firovni d•~lleŽi té stro,iového kÓdu. P:Hloha E udává některé PřÍkladv pro,gramů v .iazyce Pascal. 0.2 ODLIŠNOSTI JAZYKA. ===~===~============== 2 'l'yp FILE ne nf implementován. I T:vp RECORD ne ma variabHn{ část. polo~ky záznamu, ste.inÝ identifik;Í.tor proměnnou. kontrola nemaH Dále p :H zda danÝ lokálni pro pol.o Žku přístupu záznam Identifi.kátorv pou~H.é charakter . k tuto .iako Nelze tedy použit záznamu a pro normálnÍ položkám záznamu není. prováděna položku obsahuje. Pokud tedy nap:H .klad nadefinujeme: TYPE A = RECORD R REAL END; B= P..ECORD IL.IFI: INTEGER END: VAR X : A: pot.om X. R .:le bislo typu real a X. JL a X. JH .isou typu integer. Toto umoznu .i e v podstatě vyuiH vat možností. .tzv. které :i i na k dovolu.ie 'nehlidaná' variabilni bást záznamu. Procedury a funkce nehohou bÝt předávány :iako parametry . Příkaz CASE ,je doplněn částí ELSE (ve FEL Pascalu OTHERWISE) . BázovÝ typ mnoŽiny m&že obsahovat až 256 prvk&. Řídíci proměnná cyklu FOR musí bÝt nestrukturovaná a nesmÍ to bÝt paramet-r. Příkaze!(\ GOTO lza prov&dět skok v :íen n a téže Úrovn i . Př:í. k az PROGRAM nemá Paramet.ry. ---------------------------- Kapitola 1. Syntaxe a 5e•antika. 1.1 IDENTIFIKÁTOR. ===========~====== v I ) ··' · l ~--· ___ !ČÍslice:< __ __ I ' P<>ouze prvnich znak~ 10 Iál.em.. ifikátor:v mohou být t <.ak~e slova - · -· -- --- f .i e vvznamnÝch. z velkÝch n<3bo malÝch p:Í.smen, identifikátoru slo~en:v HELLO, . identifikátory Rte zervovaná I ---- HEI.lo hello a předdefinované a .i sou iden·t i f ilcá to:ry odlišné. I bÝt mus~ z~ad!.vány velkÝmi plsmeny! :lJ. 2 CELÉ ČÍSLO BEZ ZNAI':fi~NKA. ============================ v > :Mslicel > I -- ·-- . .. 1.3 ČÍSLO BEZ ZNAMÉNKA . ======================= >+ :celé č. bezl _>: 4 znaménka l _ :_ :> l - ! > :číslice! __V>~Ei !celé Č. bez: V>l :omaménka : >V . > I I · -- - - - -·-- - I t I I -- I ,,... I .. ' t I ··---- -· - · - - I I_ t ·- I I J ""' I I ·' >:_ >:~t: ____V__>: hex I I f_ , ___ - - - - - - - --- - - - --- - - I . I !ČÍslice: L_l I I I -- -- -- · ·- · · I Celil čfsla maj{ absolu-tnf hodno'cu menši nebo rovnou 32767 _ Větš{ celá ČÍsla jsou zpracováván« .iako reálná . Man·tisa re álnÝch č{sel bitová. 23 .ie P řesno!'1t reálnÝch ČÍ sel .ie asi 7 platnÝc h míst. Ne.ivětší Nemá zobraziteln~ smysl re álne čislo pro s-pecifikaci čislic v mantise, .ie 3.4F.3R. reálnÝch č{sel ne.i!1"1enši 5.9E-39. použi.vat vÍce než VyŽadu.iete-li pÍ'esnost neuvádě .ite poČátelmí nulv . také poČÍta .i~ .iako ČÍslice. méně pÍ'esně, (zápis adres), VŠimněte si, Napfo. protože ty se 0.000123456 .ie reprezentováno než 1.23456E-4. HexadecimálnÍ ČÍslice, 7 protože dalŠÍ m:!'.sta .i sou i.~morována. č{sla se pouHva.iÍ především při práci s paměti nebo v návaznosti na programy ve stro.iovém kÓdu. Že po mus í '#' bÝt alespoň .iedna hexadecimální jinak je hlášena chyba Č. 51. 1.4 KONSTANTA BEZ 1.NAMÉNKA. =========================== --· - - -· - _ ·· ----- .. >:identifikátor konstanty: .. . I .., >: > I . ČÍslo bez znaménka I I - ·· • •• : ___ _______ _______ > l I 1 .. NIL ! ------ ---·-··---·- ·-· .. __ _____ > ~ I .I 5 :- - ___ >:- ! v >: I '· I znak I ) I I I -- ' -- ' I I I - - - - .. ··· ··- - - - · " - t I ' - - - ~ ---·- ' ' ·- ' Řetězce nesm{ obsahovat v{ce než 255 z nak~ . TVl' řetězu .ie : ARRAY [1. . Nl OF CHAR kde N .ie celé Hslo mezi · 1 az 255 vbetně. Řetě z covÝ liter.!tl nesmi obsaho..:.at z nak NEW .LINE (konec řádk:v) , jin a k ,ie vyvolán a ch:vb a b. 68 . j sou rozšířenou množinou Pou žívané znaky ASC I I s 256 prvky . Pro zachováni kompatibility se standardnÍm Pascalem nen í prázdnÝ znak r eprezentován ,j a ko ' '·· , ale musi se použit zápis CHR(0). 1. 5 KONSTANTA. ::;::;::======== ... .>: identif i kátor konstomt:v :.. .. >+ I I I t I I_ · · - -- - · - - -- - ---·-- ·- - I ··- ·- ·- ··· ·--·-- - - - • -------- -- ~ - v -·->! I .> ~ I .>l ·! >- bislo bez znaménka I I I ·- --- --- - -- ·- ·- -- ···-·--- ·- -- --'- ···· - ·•·,;_ __ ' ~ - ---- - > : '! ___v _________>: znak : ___ _____ _______: __ >~' I I I _ I I ' - -- -1 : ___ > : CHR: __ >! ( : __ > :konstanta: _ _ ,I ,I i I ,I _ ,I ' - - - -- - ' __ ~ - --- -- ~ I I ,_, I >: ) :. ____________________~ I I ,_, Nestandardni konstrukce CHR je zařazena pro deklaraci kontrolnÍch znak~ . Konstanta v závorkách musí bÝt typu Přiklad: CONST bs:CHR(10); cr=CHR(13); 6 INTEGER . 1. 6 JEDNODOCHÝ TYP. =================== ) . .. - -- - - - - - · · · - - - - - - - I I identifik~tor typu l > I .. I : ___ > l (: --··· _>:identifikátor:_ ' ' I t --I ' >l I - ------•• O •+ ' ' - I · ·· - - ' ''R • - • • o . ' I '' I --------'. '-· --·- -·· ··- ----' I ' ·· l ___ >:konstanta l __ > l .. : ____ > :konstanta : _____ __ ; I I I I f --· - I I ---- ------· f Skal.irni. typy (identifikátor , obsahovat víc než 256 prvk&. I ' - --······ identifikáto.<: , .. ..... ) .. ' nesme.11. 1. 7 TYP. ======== > __ __________ __ > l.:iednoduchv typl ) ...... I~< ' ' I I I ------- - - ------------------- -- ! : <.. : PACKED l <__ I I ; ·- - - - - - -- -- J ~ J.illiRAY! __ )!fl -- --'' _>:.1ednoduchÝl ,_, ' ' typ _>!1i >~OF ! Il !typ~>! __ I, I. ! ... --! ' ~ < 7 ___ >:oF: _ ,I ,I : ___ >:sET: I I ' ·--··- f I I '--------·- ' typl. I . - ·-- ·- - ----· _>:soupis poli:·_ l__> lRECORD! .. I . >! jednoduchÝ __ ·-·-·- ------' >!END! I I ·- ) I ' I '-- --' 1 ----------' Konstrukce s klÍČovÝm slovem PACKED .isou v syntaxi povoleny, ale nema.ii HdnÝ semantickÝ t)činek. ZákladnÍ typ mnoŽiny smÍ mít umožňu.ie až 256 prvků. naoHklad definici typu SET OF CHAR). Jsou př{pustné pole polÍ. pole mnoŽin. Dva typy ARRAY .isou zpracovávány .ie,iich definice vychází ARRAY. '!' . - - .J- z téhoŽ riásledu,i ici zá?.namv mnoŽin atd. .iako pouŽiti typy ekvivalentní, pokud rezervovaného slova N'"EJSOIJ (ani shodné kompatibilní). TYPE tablea = ARRAY[l. .100) OF INTii:GER: ARRAYfl .. 100] OF INTEGER; Proměnná typem definovaná tablea ne sml.' tableb bÝt y • v prJ.ra:;:ena = k proměnné typu tableb. I Zhora uvedené omezenl. řetězcového typu Ukazatele Definice na typy, typu však sehe sama. Např. TYPE item = RECORD value : INTEGER: next : hi tem END link 8 = hitem; neplat:ť. pro speciální pole (ARRAY OF CHAR). které muŽ.e nebyly deklarovánv. obsahov;,t proměnnou ne.is0u ty O ll dovoleny_ u kazat.el na Ukazatele na ukazatele n.;; .i sou p~{pusi-.né. Ukazatele na t,en samÝ typ .i sou Úi8dněho typu . Např . VAR Hrst link; current i tem; A Proměnné first a current .isou shodného typu. y Cot znamená, ze mohou bÝt .iedna ke druhé přičleněny, nebo srovnávány . VariabilnÍ část záznamu neni povolena. Dva typy záznam jso u ekvivalentní pouze tehd~ , kdyŽ je.iich deklarace vychází z jednoho poufiti slova RECORD. L 8 SEZUAM POLOŽEK. =================== ! : ~ <.. I I ' -·' ~ I - - -- - - - - - t I <______ _ ' I '- ' ___ __ _ ___V__ V_> : identifikáto r! __ !_>:: : _> :t:vp! . I I----·-----·- ---·---- -·-· -·- - --··-- ···--··---·--·----·-· 1 .9 PROUĚNNÁ. == === === ===== > l lden tHikát. or! _>< . ' '-·-. ) I J ___ : _ .. >:identifikátor! >! >I >: ) ~vÝraz: f I ff' I poloŽky I I ---· - -- I I I I __ t I I - ·- - · . :. ! < I ··' >!identifikátor POlo~kv! >!. >! I I -- ·--- - ) · · ·- ---- · - - . -·• I l"" I t ----- ---- - - I ------ ' -· -- - ·-·-- v Při specifikaci prvk~ mnohorozměrnÝch poli neni pro;:;ramátor nucen poufívat tutéž formu NapHklad dekl!araci . indexov~ specifikace .ie pokud odkaz~ k I y promenna jako deld.a r ovaná pÍ'i .iako ARRAY[ 1 .. 10} OF ARRAY[l .. 101 OF INTEGER . pak pro pl:·ístup k prvku {1.1) tohoto pole J.ze pouHt bu,'\ .;f1H11 nebo afl,ll . 1..10 FAKTOR. ----------------------.. ..... ···- ··· ...... > !kcnst. bez znam4mka > '>! Proménnál I - - - -- ----- I 1 - ------· - - · -- - >: _>~vÝraz~ __ >,identifikátor funkce 1 - - - - - - -----·---- I I I 1 - - - -- ) -----·I • 1 1 •• 1 --- - · . 1 ;, . -· ·-- I f I_ --- --- - - - - - ·-- __ .. __ __ --------- - - ----- - :---- -- ____>:fL _______------ . ,_, l 10 I .. '--· ) I I >: I ___ __ _·--- _____ > : NOT I ____ . __ t l [I_:_ __ t 1 I ---- I I~---> -.... ·-·-- -->: >lf aktorl I 1 ------- I >: vÝraz; ____ >: .. ; ____ __>I vÝraz L I I 1 -1 I I I '---- · I I ! _ I ·----- ' I ___V>;] l _ ___ _l I A I '-1 I '-· ~ . ~ <.. I . ' 1.11 ČLEN. ========== ___>I faktor; > v I t --- -- • : - --:faktor: I v I I I I f •• f v v !DIVl IMOD! ' l .. <__v__ ---v- -·---- -v- .v !ANDI I 1 -- - - ' v I '----- • Do ln:l. hranice mnoŽiny .ie vŽdy 0 a základniho typu mnohny _ Např. zRu.iimá 32 ba.it& .i e.ii vel i kost _i;:; rovna maximu . SET OF CHAR (mnoŽina znakŮ.) vŽdy ( .ie moŽnÝch 256 orvk~ .ieden bit pro kaŽdÝ prvek) . Podobně .ie SET OF 0 .. 10 ekvivalentni SET OF 0 .. 2fi5. 1 _12 JEDNODOCEIÝ VÝRA7. . ====================== ... ) I+ I t I I - __ I t - · I :--------v____ >: Člen: _ ____________·__________________ > v v v.. '---- · :__) :- :·-·- ; :- ~ lORI · I t " 11 ,' _ . I I -' v l_lblenl<_ V --- v I ' -· =========== > _____________ __>!jednoduchÝ vÝraz!. __ ______ _ ____ __ ___ ____ -------- ---I ... I I . • .:._ __ _ _ - -- - - - -- - - - --- - f - -------- _,,__ " _ ,_ --- ' -- - ·- o ~o : : < : ' > ' <= ' : >=: : IN: •,_ •' ----' •' - •o - '- ·· '--' I I I I 1- I• I I I I .. I I I • I-- - -- - t J ···- I -· t - - _ f • t .• .• - - - · -----------'• I I . _ I I I I t I I I _ I I f •. >!.iednoduchÝ vÝraz: I '- ··- I . I . -- - . .. . ·-- - -- IN. Použí-v áte-li I mus1 jednoduchého• vÝrazu . typ bÝt, Vv Hrnku množiny - --·· . ... .. - t .iako typ ar,;:ument . pro ste.inÝ t.voři cAločise l nv pouze operátory kterry/ .je ty-p. omezen na 0 .. 255 . MnoŽiny mohou bÝt srovnávánv u ·k azatele mohou bÝt porovnáv1tny pouze operátorY >=. = <:::, <>. a <>. 1_14 SEZNAM PARAMETRŮ. ====================== __ : _>: { :_____ ____ __ __> l identifikátor: _ >: : : : idetifikl!tor: __ :) : ,_, typu ,._ .. ,. ----:! !:VAR!_! I • . ....,,. I I ' -- - -- - --- I • - I I I ' - -----'' ~ - - - t I I - -- - -- - t <_---------·· --: I ----' I ·' 12 V Procedu ry a f unkce n emohou b ýt p aranJ81.ry. 1.15 PŘÍKA :l. . --- --- ---------------> ~celé l:o.. ?.nam.Ánka! he?. ! '.. :. V ! p I - . ~ ;' >: ldentif ik.9 tor proměnné: >I I • - l • -' I '. :< l . . __> i identif ik~tor funkce ! __ _ _ ! I ' - --- ----- ------- --- --- - .. > ~(: ____ __ >!identifikátor procedury: O I I- -,-- - -··- ~ -- -- --- - - - ·-- - --- I I V >!vÝraz~ I I I ~- I . . .. 1 l '· >; p{· Í kaz l > iBEGIN l " ; ENDl .. ! >: I I ·' I -- - i . l CASI<~ l .... l vÝl"é<::'. i l Oli' : . ., >:kon stant a l > l 1 ; " _ _____ , , ___ ___ _ __ , , _ , __I 1 t • \""' ..., ._ I. I . -- '' I t I - --- - I ' . I 1 .• I • . . I' I I I I I __ I : ____> lliHILE: __ .. > l vÝra.:. l . I I I I '---· --- - - -- - ---- I' >l DO! L_> lELSEL lpHkazl _> l .. I I I , _ -·- -- -------' >: 13 I , - ·. I I ' .. ------- ' '. >!vÝrazl . >iUNTILi _ : --· -- >! REPEAT! I I I , _ --' I A I I I . I ~--· ·-- · I I - - ---·-·- ·· ·· .. I I • I I---' I I I I - - ---- I t > l FORL >: i.dentifikátor l >i : =! >!vÝraz: ' >! DOI'I'N'l'O:. • I - I - . I I, __ _ It promenne I I I ' -·- ··· ·- ·' .' I I _ >I - . O I . I- I >lDO! I I .. - I : ___ ______ .>: GOTOl -·· ) . I ' I I ----------·'' I _ I I I ---' 1 • • ___ __ >lcelé č. bez znaménka: I . >I' I I - - - - ··-- - - -· _ ·· - _ -- -·· -· ··- - I I ·- -- · j CASE: · prázdný pHkaz CAS~ (CASE OF END) neni povolen. ELSE,' je vykonán, kdyŽ seznamu · (.'konstanta' ) . nebyl nalezen, pak ,je se selektor ('vÝraz ' ) Je-li poufit koncovÝ z nak END a • I I r1.zen~ předáno na Příkaz nenacház:í. př:Í.kaz v za CASE selc,ktor n§ sledu .iici PO END. FOR: Hd:fd ~roménná p~{kazu FOR ne sml.' bÝt st.rukt•n·ovaná a nesmi bÝt parametrem. GOTO: návěští musÍ bÝt deklarováno v tomt,éifl blok~> a na ste.iné Úrovni jako GOTO. Návěšt{ se skláda.ii z .iedné ·až btvř ČÍslic . 1.16 BLOK. ========== >i LAfíET..L... I ! ·-·-' '--- . -· 1 • .. .: -- -- -·· --- I ' ; I l _l !< _ __ : ; ~<-- -· -- · A I ------------ -- ------ I ----- ----------- --- --- ' --- I •-- ' l _____ >i CúNS'i': _____ >i id"'nt.i Hki;tor l _ .. I ; I ' - ---·-' ) I • • ··---~-- --- - --- I > ! l-: on statťta : I .. I I- I I l ; I : <__-- -- ---- ----- ~ ---------·· ----------.. -- ----- ·----· - . . . ) '-·I I- I I I ·' I - -- · · - ·· - - • --I ! , __, I I .. . ! I I I - - I __ . I . I I -· I I - --- - - -- 1 - ---- . .. ... I ,' __ _ >!i.dentiflk~to r !_ >!VAH! I I I - - _) . ' - -- ,' ' I I • I I 1 I ·' - I I :. I ·- r l I_ I -- - --- - - - -- - I • . - - · --· · - -· . -' _! sezna.n'! l __ > l PROC!WUR.l!: l ':.VP! I ' ---- :< ! .( >' . I .• I > ! ide~. t \. .llko\t.o r ! I ,, param.HtrU ; ' ' I ' I 1 ----- ' : - -····---- - ······-- - -···-- I _> ! F·ORWAIW! _ - ) I' > l F'UNC'f ION l _. : ldenJdf i.. k. _ l ,. I I se2.n_am . l ~ dent.iť .. typt( '· I ' -· ... I ) ' - -··· '-·· I I -' f -· · · - · -'' 1 . 1 7 PROGRAt1 . ============= __> l PHOGRAM: _. >i íden-tifiká t~r l >: ; l .. _> !blokl _ '' - 16 > :F:ND! _ . >I . ; ; ' _ ; ------------------ Ka~it~la 2 _ Pfoddefinované identifikátorJ. 2.1 KONSTANTY. -------------~- · --- -- - --- --- MAXINT TRUE. FALSE Nejvit~{ cel~ hislo. t.j. 32Y67 . Konstanty typu Boolean. 2.2 TYPY . ========= INTEGER REAL CHAR BOOLEAN -MAXINT .. MAXINT -5.9E-39 a~ 3.4E38 CHRl0) až CHR(255) ('~RUE. FALSF.) . Označ u.ia typ lo~.ickÝch hodnot 2. 3 PROCEDURY A FONKCE. ======================= VSTUPNÍ A VÝSTUPNÍ PROCEDURY WRITE WRITE(a,b.c,d, . . .. ) WRITE (Pl,P2 ... .... Pn): je ekvivalentní: BEGIN WRITE lP1):WRITE(P2): ...... WRITE(Pn) END: Parametry P1.P2, ...... Pn mohou mit následu.iícf. tvary: (e) nebo (e:m) nebo (e:m:n) nebo {e:m:H) kde e,m a n ,jsou vÝrazy a H ,ie l i ·terál {kons tanta). 17 ll e inte~er : je typu pou.Ž i .ieme (e l nebo \a: m). inte~~:er iiodnota -v-ýrazu e .ie Pi~eměněna na znaltovV řet.ěF.ee do plnlm v ~1ozerami. D~lku !-e t ezce z·,,ět. Šit. lze doolněnim poČet specifikn:le z nak&. mezer pou~.1:tím zleva vyslanÝch na vÝstup. m. k teré .Jestli::\e m nopostabuJe oro v:vpsán{ e . nebo neni. pouŽito . .ie e vvvsáno celé s následnou mezerou specifikováno a rn délka jako i~norováno. .ie e bez VŠimně te nás ledné si. mezer~· . Že je-li potom m žádná následná mez er a n a vÝstup nepři.ide . e int"'i.'~" ~ je typu p ouŽi.ieme tva r u V tomto přÍpadé ( 6 :m:H}. .ie v:Ýs t.up v hexado ..::d.lúá.;.ni sou st.avě . P l"'o m-:: :1. n ebo m=2 bude hodnota (e MOD 1 6~ m) na vÝ s t;up'; ce l á '~v stupu v hod nota e v k ládány zleva mezery. :nu ly délce m ;;~ r ·a k~. v hex.č:decimál ni Pro m=3 nebo m=4 soustavě. ,je Pro m>4 na :jsou Tam kde .ie to možné budou zleva vkládány . WRITE( 102 5 :m: Hl: m=l vfs ·L 1.~·p : 0 m=2 m:;3 v:(7 st.up: 01 vÝstup: 0401 m=4 vÝstu p : 0401 m=5 vÝstup: ' 0401 31 e .je typu r eal : ? OuŽijeme tvaru (e), e ,je přeměněn a na Formát je v U.?.~cen znakovÝ použit im řetězec n. (e : m) nebo (e:m:n). Hodr1ota reprezentu.ii.ci realné ~Íslo . Neni-li n použito bude či.slo zobrazeno ve vě decké notaci s mantisou a exponentem. Je-li Mslo zéporúd bude zobra.zeno s znaménkem. znaménko '-' vypsáno před mantisou. ,jednim až pěti desetinnÝmi mis ty. e xpon ent Č:ť.slo Minimální šiřka při tomto zobrazeni .ie t.edv 8 znakŮ. Je-li šířka m< 8 bude na vÝstu]:)u plná šířka l2 . .znakŮ. bude na vÝstupu .iedno. nebo vÍce d~set..innÝch mi st, Pro m>=B až do maxima pěti (pro m=12 't . Pro m>12 .i sou před b{slo vkládánv mezery . PříKlad: WRITE(-1 . 23E 10:m); m=7 18 dá: .ie vŽdy se -1.2300E+10 m=B dá: m=9 dá: -1. 23E+10 m=10 dá: -1. 230E+10 m=ll m=12 dá: dá: -1. 23•ll/2!0E+10 m=13 dá: Je-li -1. 2E+l0 -1. 231<X}lt+10 -1 . 23e'OOE+l0 pouŽito tvaru tečkou desetinnou .iako inte.e:er. n ČÍslo pole budou pÍOed šířce le:m:n) s Je-li e bnde e desetinnÝmi doplněny Přili~ vvpsáno ve Při místy. t.varu Pro n=0 mezery. ;ie vel1,é pro vÝstup ve bude vÝstup udán ve vědecké notaci s pole, s pevnou dostatečné e Hřce zobrazeno specifikované šiřkou pole m {viz nahoře) . Příklad: WRITE(1E2:6:2) dá: 100.00 vTRITE(23.455:4:2) dá: 10121.00 WRITE(23.455:6:1) 2.34550E+01 dá: WRITE(1E2:8:2) 23.5 dá: WRITE(23 . 455:4:0) dá: 23 4) e ,je typu CHAR nebo ARRAY OF CHAR . Jsou mohu3 tvary (e) nebo (e:m) a znak. nebo řetězec zn akŮ bude na vÝstupu v minimálnÍ šíři pole = 1 (pro znaky), nebo Je-li m dostatečně vel ke, v délce řetězc e ( pro pole znakŮ.) . .i sou zleva dopl ně nnv me zery. 5) e .ie typu BOOLF.AN . bude TRUE nebo Jsou mof.né tvarv FALSE v závlslosti ( e) na minimé,ln { Š ÍÍ·i vyst.upnÍho pole 4 nebo 5. l'IRITELN 1>/RITELNia,b.c .d , . .. . ) ; WRITELN Výstu p y .i sou u končeny znakem konec fádkv. 1-!HI TF:LN (Pl , P 2, ...... Fn) ; ,je ekvivalentn í.: BEGW \>IRITE (Pl,P2 .. . . . . . Pn);\>iRlTELN F.ND; CLS nebo ( ·~: m), Booleovské na vÝstupu hodnot.é e. v C!.S Procedura CLS smaže obrazovku. READ READ(a,b,c.d, Procedura prostřednictvím vv.ií.mkou přÍstup k .ie READ používána vvro:vnávac{ pro dat vstup pamét.i . Ta je z zoočátku klávesnice Prázdná (s znaku NEW LINE). Mus{me brát v Úvahu. Že ,iakÝkoliv této vyrovnávací paměti .ie prostřednictvím 'textového okna' nad znak:. KdyŽ v:vrovnávar-!l. ·oamět{,ie toto textové m\Heme pozorovat vždv umístěno okno nad . ien .ieden znakP.m NEvl LINE, bude před ukonČenÍm operace Čtenf čten do vyrovnávaci. paměti novÝ řáde~: textu z klávesnice . READ.(!Vl', V2, ..... . Vn); .ie ekvivalentní: BEGIN . READ(Vl); READCV2); kde , VL , V2, ...... ; READCVn) END ; atd. mohou být typu character , string, integ~r, nebo reall.. 0 I P'H.kaz : READ(Vl; ma mo~né', 4 př{pady: I ruzne 6-činky v závislosti na tvou V. Jsou lJ • V. je • typu. CHAR. V tomto p1·i.,adě READ(V) Čte znak ze vstupnÍ vyrovnávací. paměti a přiřad{ ho V. KdvŽ :ie textové okno umístěno na znaku NEW .LINE. má funkce EOLN hodno tu TRUE ;; ř!.dek textu z klávesnice . Pfi .i e Čten novÝ náslťldné operaci Čt E<nÍ bude textové okno . umístěno . na začátek nového řádku. Důležitá POznámka: Je-li EOLN :: 'l'RUI!: na poČát~ku proE<ra mu a prvnÍ READ · ,ie typu CHAR . hude p~ebten;;, hodnota NF.W I,TNF. a n~s]edována Čtením nového řádku z klávť'!sntc<;<. Následu .Hd. Čtc,n{ pÍ"iOiine prvni znak nového ř!.dkn za ,,řeJpokl;,du. tvou CHAR Žfl n8 ni pr~zdnÝ. Viz tané procedura READLN. 21 : V je typu ARRAY OF Cl-JAR. l~.etězen znak~1 mŮŽe bÝt čten pouŽi t:fm P.F.AD jako sériE; znakŮ do délky vymezené řetězcem nebo než EOLN TRUE. NenÍ-li ře'i;.ězec zaplněn před zplněním celého řetězce) 20 Čtenim ( kone c = l:·ádku byl dosaŽen bude zbytek řat.ězce zaplněn znaky 'I . ·,: l"'(:f(,C~Z C\~. Poz n~m1~a v nro 11 pl at { i. zdA . typu ,, int.e!;feT-. r·ep~cz ~ntu~{c{ cel~ CJ .. t .omto ; \'.: J 'J pr1.pade v . .ie • o c-;:,~ma zr·.a~tu , . SJ.O. ?.nakv HR'w. LINE jsou p}eskakcv~ny . Óterd. čisJ.a cel6ho vét.Hho ne:?. MAXINT ( 327S7) vyvolá chybov.i. b.J.ášenÍ 'Number too létri?:B' a program bude ukonČen. Nen{-J.i prvn1.' znak n~1bo z naku NEW. LINE ČÍslice z n<1ménl-~o ( '+ 1 } -' ) ~ nebo hlá~enÍ bude . ..r vvo lá no chvbové 1 nebo Numh-er cxpected ' a pror.;ra.m bude přerušen. v typu :real . V tomi:c :c~~rprezent.t.l;jÍcÍ :rB.~ ln.é ČÍslo "ll . .i e so l:.~}; lasu se synt.r:tx i -pod le 1 . .3. iako pro c el~ ~{~J.a. prvn1 zn~k ,Je-li čt.ené hl~~ena hí sli cÍ nebo ~ nam é nk o. b:f.slo pt~í l :i .S ...,-,~l l·~ G nebo chvba 'OverflowJ . N8n {-·li vzn :Lkr1e ; Expon~n-~ t ctr•.rbr.t . ser1.e ~t.· {] i.Š malé (vi ~ 1 . 3) b ude 'E ' n~sled0v~no znem~n kam nebe t-=~ x·oe c t ed ' . ·teČka následována cisl:i. e{_ hude ehyb·~v8 hlኝ':l nÍ de.setinn~J Nen.Í -l i } Nurnbe:c e xpected } . READLN R.F.ADLN(a ,b . c, d , READLN(V1, V2 .. . , . 'I '. READLN .ie ekvi valen·t.ní .. . Vn); BEGIN READ(Vl,V2, . .. . . Vn l ; Rl<:i\.DLN END ; READLN Čte ř.3dek z kláve:,onic EJ clo v vrcvnávaci p amétj . . F.OLN nabude hodno·tv FALSE po pr·cveden{ ' READI,~r. ' . Pok ud rten{ n~sled u.i{c { ~~~ek ' _ pra~~ <:!-fJY HTI:ADLN mŮŽe r>l~i ~; puŠt. 8 n :f b :&-·t. pou:i':it.o k uř G s ko::!,;;ni nr~".)R'rnri"Hl 1.1~·i .t ~~ n~ prn 6t~0f -- sla~kv V \7~·10 l Ét t.•3dV ·orá .0 d n ého Čt ·::~ní řád. ku do nové nřit.omn .3h o řárlky. t ·vlJU ,,~AR 11a z~~Átk11 nrog~amlJ, 'f0 .-·l e a le ne n{ 21 t0 při. nutn é . vs t u pu .I HTEGF.R n. eb o RE A.L ;; {::~ 1. .;~ { T-· ~-~o t,o ž e z n aky tiE\·J Lil'E .~ G O'.l p i!-.ss k c~:t"n~· ·,, . :-.; :. ·::...-pu C:·JAR . ".'RiJll C ··;>.U NC( X:RE AL ) náb o rc.vn t~ X TJro X k l ad n é neb o n e;tmen.s J. • PŤ ~~h. l a d : '!'RUNC(-1 . 5) = TH.UNC( 1.9 ) = \' I 1 EOUND FOC;'-! D(X : REAL ) X ,,. .__ t. J.···pu .c8~k 1 W TEGE.R n e(-J<; i.. n. t ..:;.~:~ E- 1"' a i·I oťtn ·~Jt.a J.{CHJND .i t.~ 'ne .i bli% š:l ' ~ Í sl. o k X ( ~J a ci le s tan~~t l· dn{ch z a a k r·o ul\l.o va cJ { c h pravidel ) . 22 ce l e Přiklad: ROUND(-6.51) = ROUND(-6.5) : -6 -7 ROUND(23 . 5) : ROUD(ll. 7) : 12 ENTIER ENTIER(X:REAL) : INTEGER .i e celé Č{slo menší, X je typu real nebo integer - hodn nebo rovné X pro všechna X. PHklad: ENTIERf-6.5) : Poznámka: ENTIF..R -7 = ENTIER(11.7) I nen1 standardnÍ ll Pascalovskou..~ funkd., ale ekvivalentní Basicovske funkci INT. ORD ORD(X:skalárnÍ.typ) : INTEGER X je skalarn{ho typu s vy.i:Í.mkou real. Hodnota ORD .ie celé ČÍslo . reprezentu.ifc:! poÍ'adÍ hodnoty X v mnohně definu,ifcí typ X. Příklad: ORD( 'a') = = ORD( '<i' ) 97 64 CHR CHR(X:INTEGERl : CHAR X .ie typu inte~~:er . Hodnotou CHR .i e znak hodnota X. Příklad: CHRf49) = '1' CHRC91) = odnovi d;; .i i d ASCII , r, ART'l'METICKÉ ·FUNKCF. Ar~rnent následu.i!cich funkc:f. musí bÝt ABS typu REAL , nebo INTEGER. ABSIX:TNTEGF.R) REAI. ABS(X:REALl AbsolutnÍ. hodnota X lnapř. ABS(-4 . 5) T.NTEGF.R = 4 . 5). VÝsled~k .ie ste.iného typu :iako X. SQR SQR(X:REAL) : REAL Hodnotou .ie X jako * SQR(X:INTEGERl : INTEGF.R X ·(druhá mocnina x·tc VÝsledek .i e ste.iného typu X. SQRT SQRT(X:REAL) : REAL SQRT(X!INTEGERl : REAL Druhá odmocnina X. · VÝsledek .ie vŽd\' tvPtt real. Je-li ar~ument X záporný, .ie ~tenerováno chvbové hlášen{ 'Maths Call F.rror'. FRAC FRAC (X: REA[, l : REAL Zlomková část X: FRACIX) FRACIX:1NTF.GF.Rl : REAL =X- ENTIERIXl. PHklad: FRACI1.5) = 0.5 FRAC( -1·2 , 56) = 0 . 44. SIN ------------------------------------------------------------ SIN(X:REA[,) : REAL SIN(X: INTEGERl : REAL Sinus X, kde X :Je v radiánech. VÝsledek .ie vŽdy t:vpu real. cos ------------------------------------------------------------ COS(X:REALl : RF.AL COS ( X: UlTEGF.R) : RF. AL Cosinus X, kde X .ie v radiánech. VÝsledek .ie typu real . 24 TA:.l COS(l:REAt.) : R.EAL 'ťangens X, kde X ;\e v rč: d i!.nech. VÝ·sJ.edek v~ cv typu real. ARC'J'AN ARCTAN(X:REAL) : RF.AL REAL ARCTANCX:INTEGER) Óhel v radiÁnech. jeho~ tanaens ~e dan' ~{slo X. V~ sle de k ie typu real . F.XP EXP. ( X: REA L ) : REAL FXP (X: H!TEGEH) : REAL Ho dnot~ eAX , ~de e = 2.71828. Vfsledek vldy typu re al. LN LN(X :REAL) : REAL Při rozenÝ W (X: I N'l'F:GF.R \ logaritmus vŽdy typu real. (t ..i. Je-li se X <= 0 REAI, č{sla X. V\>sl.edek :ie .ie ~<e nerováno hJ.áŠ>'I ni 'Ma t.hs C;, ll ziúl <'ldem e) Error'. DALŠÍ PŘEDDEFINOVANÉ PROCEDURY NEW Procedura NEW vytvál'·i pros·tor pro dynamickou proměnnou. p .i e typu ukazatel; um{s·těné dynamické po provedeni NEW(p) v ' promenne. Typ obsahu.ie p dynamické proměnné Proměnná adresu nově .ie stejný jako u proměnné p a mŮŽe bÝt libovolného typu. 25 \' ; viz Pr:omenne K nalezeni pouŽi i~1. 'k u.k a z:3t.t; J. Ei 1jynam iclc.? o dka zu ' I promenn.e v Př ilozť'z E. P ro nove pou .Ž i.t{ pro~toru u~it~ho pro dynamické v ' promennG pouZ:lvejte procedury MARK a RELEASE. MARK ------------------- ----·-----------·----------------------------ř1ARK i p: ~-typ) Uk~zkov:~ ·t ah_i:.o f·:c-oceckron se MAR.K. zruši ?:;to všechny ., proceduru ' promenne dynamické používe.i t.e ve lmi c patrn.li. INLINE INLINKfc l:I NTEGRR.c2:INTEGRR.c3:INTEGER. Tato r,>rocedura 't'l • _i azyce umoznu.1e strojovÝ k6d 7.80; hodnoty ( C1 MOD 256. C2 MOD 256. .i sou vkládánv do vÝsledného pros<ramu. G-1. C2 , celoČÍselné konstanty a USER USER(v:INTEGER) 26 miH.e .iich bÝt libovolnÝ Pascal C3 MOD 256, C~ poČet. atd. .i sou USER je proc€ldura s c A] oČ{ soJ nÝm .iEldn{m ar~tum<mtem kt.erá V, vyvolá proP<ram n_a adrese V. Proto7.e Pas()al obs>ihu .ie cel?. (Hsla formě dvo,ikov~ho rloplhku (viz pH loha Vd .ie nutno adresy větší D), nez #7FFF (32767'1 . oznaÓit dpornou hodnotou V. NaJ?Hklad ltC000 .ie -16384 a tedy USEIH -16384); bude volat adresu #C01210. Pokud se k odkazu na adresu používá konstanta, vhodnějŠÍ .ie používat hexadecimální sous·tavu. VolanÝ program mus:l. konl:it instrukci RET (#C9) a musí zachovat registr IX. HALT HALT Tato procedura zastaví běh prbii!ramu se z~rávou 'Halt at PC=XXXX kde XXXX je hexadecimální adresa. které ' .ie na povel Soolečně s vÝpisem pÍ'ekladu lze tu-to lnformaci použit HALT. k trasováni'. programu . POKE POKE(x:INTEGER.v:typ) POKll: uloží'. vÝraz V do paměti poč i'. tače poČÍna.ie adresou X. X ,ie typu integer a v mŮŽe bÝt libovolného druhu mimo SET. Příklad: POKE(#612100, ' A.') umístí #41 na adresu #61211210. POKE(-16384,3.6E3) umístí 00 0B 80 70 (v hex. ) od adresy #C000. TOUT -----------------------------------------------------------• TOUT( .imeno: ARRAY [ 1. . 121 OF CHAR , S'fART: INTEGER . SIZE: INTEGER) TOUT .ie .Proced ura urČen A k, uloŽen{ .iedné proměnné na mP-f pásku . Prvn{ parametr .i e typu ARRAYf 1 . . n 1 OF CHAR a dat. kterÝ 1 .. 12 . K má ná:;wu bÝt ulo2en. souboru se Veliko s t pole aut.omatickl' n .ie ,iménem souboru mus{ pfipo.iu.ie bÝt v tvp mezÍch . DTA. Od adresy STAR'i' .ie uloŽeno SI7.li: bytŮ. Oba t -v-to parametrv .isou typu integer. Např{kl.ad k uloŽeni proměnné V na pásku pod .iménem 'VAR' uhjte: TOUT('VAR',ADDR(V) , SIZEťV)) TIN -----------------------------------------------------------TIN(jmeno:ARRAY fl .. 121 OF CHAR.START:INTEGF.R) Tato procedura pamoc{ vÝznam. TOUT . se NAME pouH.vA .ie START .ie typu ke bten{ st.e .in é:1o inteP,er. tvpu proměnné .iako u z pásk:v, TOUT a má uložené ste.inÝ Na pásce .ie hledán soubor NAME, kterÝ· je vlo~en od adresv START . Počet vkládanÝch bytŮ .ie .iiŽ na pá"sce· (nahráno příkazem TOUT). OUT•{ Uc: INTEGER, a: INTEGER) Tato procedura se použ{vá k přimému přÍstupu k v:írstupn:Í.mu portu zoo, tiez pou.Žit{ přocedury INLINE. V·lb~~na · do. vy~onána. reP.istru BC, Hodnot a intege r parame-tru P je znakovÝ parametr C do r e~?: istru A a .ie instrukce assembleru OUT (C),A . Nap.ř1kla: OUT(l, 'A') dá na vÝstupnÍm portu 1 znak 'A' . QPEN() : OPRNQ{jmeno: ARRAYfl .. 121 OF CHAR) Otav~ vÝstupnÍ soubor s názvem jmeno a typem .DTA . Do souboru se za.pi'sujie procedurou PUT a PUTBLO'::K, zavře se procedurou CLOSEO . 28! do ZapÍŠe proměnnou v p;:~mět i . vÝstupn:ihc sou bo ru pro~: er.!u ve tva1·u ·..~ nit Ťn ( ..re~ rt;;.:~ nt.aco. Ty p proměnn Éi ·tak ~ r ou OPE HO .i a k .ie uloŽena v nnlže hft. l it o vo ;.nÝ. FHklad: Přikaz PUT ( 'ABC' ) zapHe do souboru tři ba :Jty - kbdy znaku A, B a c. PUTBLOCK PUTBLOCK(START.INTEGER.SIZE:INTEGERl ZapÍŠe do vÝstupniho souboru otevfeného procedurou OPIWO blok dai o d~lce SIZE z paměti od adresy S'rAR'J' (obdoba TOUT\. CLOSEO CLOSEO Zavl.·en:Í. vÝ stupniho souboru c>t.evfen ého procedurou OPENO. CPENI OPENI(jmeno : ARRAY[1 .. 12l OF CHAR) Ote vřenÍ vstupn:Í.ho souboru s názvem .imeno. Ze s oubo ru se Čte proced urami GE'l' a GE'J'BLOCK, soubor se uzavře p:ro<eeduron CLOSJC:T. GE1' GET(v :typ) 1·i aČt.,, 2; e vs·tupn{ho >;o uboru o ·tev±-eného procedurou OPE~!I do Při klad: . Pří.k az .GE'l'(..-:CHAR) n.?.Čte ze soubon~ .ieden b.a.it a uloži ho do prom'8nne v. GETBWCK ---------- -- --- ----------- - --------M·--------------------------GETBLOCK(STAR'l': INTEGER, SIZE: INTEGI!:R) Na čte z-= •; st.n p rd.hc souboru otev:f.eného procedurou OPEN! blok dat o D.. LŠÍ PŘEDDEF I NOVANÉ li'UNKCE! HANDOH P.AHDOH : IW!'EGER 'l' 2to funk c e; ·tvo:l-{ pseudonáhodné či sl o od 0 a 255 včetně. AČkoli v j e tat o funkce ·,telmi rychlá, n~dává dobré vÝsl e dky při opakovaném ·>O·WLi.t.i. v cyk J. 2ch, které ne obsahu.iÍ vstupnÍ : ,:-pZ-: 1. v Ýs ledl·.:.y· než umožř,u.ie ·tato fun't<:ce, operace. Chcete-li. pouŽ i jte funkci. RUD. ·poznámka: f unkce P.ANDOM .ie implementována in strukcí LD A. R . 30 Funkce R.ND vytvo}{ pseudon~hodné čislo s rovnom;3rnÝm rozloŽenÍm na intervalu -32768 . . 327C7 . Kvalita n~hodnostj .E(enerovanÝch č.i.sul odpovÍd~ vlastnost.sm ~enerátorů •-:•uŽ{v<tnÝch v interpretech .iazyka Basic . succ SUCC(X:ordin~ln{_tvr.o) ordinálnÍ. tvp X m~Ža bÝt .iakéhokOliv skalárnÍho tvpn s vy.i{TJikou real. Hodnotou SUCC je nasledovnÍk X. Příklad: SUCC( 'A') :: 'B' socc ( ' 5 , ) :: ' 6' . PRED PRED(X:ordinálnÍ _typ) ordinálni .. typ Podobně .iako u SOCC .ie hodnotou PRED předch~dce X. Příklad: PRED( '.i' ) :: 'i' PRED(TRUEl = FALSE ODD ODl)( X: TNTF.GF.R l : BOOT.EAN X .ie t:VPU inte ,zer, hodnotou ODD ,ie 'J'RUE pro X Hché a FALSE pro sudé X. ADDR ADDR(V:typ) : INTEGER Tat.o 'E unkc ~.:J udává adresu proměnné s identifikátorem V. PEEK PEEKlX:INTEGER.T:typ) : typ PEEK ·rloŽÍ obsah libovol,ného typu. POKE. (opak PEEK) oamětového mÍsta s adresou kterÝ: udává parametr T. X do V I promenne V procedur:ách PEEK a jsou data uváděna ve vnitřní re-prezentaci (viz pHloha Dl. NapHklad: kdyŽ pamět obsahuje od adresy #5000 hodnoty 50 61 73 63 61 6C (hex.) potom: WRITElPEEKl#5000.ARRAYfl. .61 OF CHAR)) dava 'Pascal' WRITE(PEEK(#5000,CHAR)) dava 'P' WRITECPEEKl#5000,INTEGERl) dava 24912 WRITECPEEKC#5000,REAL) dava 2.46227EŤ29 SlZE SIZE(V:typ) : INTEGER Parametrem funkce ,je libovolná proměnná. VÝsledkem typu integer je" vel·ikost paměti v bajtech, kterou zau.iima uvedeni~ proměnná. INP -----------------------------------------------------------~ INP(X:INTEGER) : CHAR INP je používáno k př:l.mému ořístupu k vstupn{mu portu 7.80 bez použiti procedury INLINE. Hodnota inte~er parametru .ie vložena do re~istru BC a znakovÝ vÝsledek (provádí se instrukce IN A.(C)). EOF EOF : BOOLEAN 32 funkce .ie potom VA st.fadaČi Funitce lWF n abÝv,;. hodnot.;.· F'ALR1~, ot.~v~e n . I V fiT. u pnl soubor pr·ocedul.""Ou OF'ENI ~.~: ~~ toh~-:.to soubo ru .i eště nebv lv n řaČ "'ť.~ nv vŠf-!Chn y data . V •)statní ch uH Pflrl.ech nabÝvÁ hodnoty TRUE . GRAFICKÉ PROCEDURY A FUNKCE MODE MODE(mod : I NTEGER) '· Nastavi grafickÝ m6d podle parametru mod takto : {Č e rně => ma zání} mod=0 => AND {bile => kreslení 1 mod=l => OR {inverze } mod=2 => XOR PLOT PLOTíx,y:INTF.GER) Vykreslen i bodu na soufadn i cich fx.vl v nastaveném ~rafickém módu. Soufadnice [0.01 .i e v levém dolni.m rohu obrazovky. DRAW DRAW(xl , yl.x2,y2:INTEGER) Vykresleni pfimky z bodu [xl,yl) do bodu [x2,y2l . BOX BOX(xl,yl,x2.v2:INTEGER) Vykreslení rámeČku s Úhlopf:ičkou určenou body [xl,vll a fx2.v21. 33 BOXFC xl. , yl , J(~:, v 7.: INTEGE.R) Vy1tras l e ni plného o1x2•-.. c: 1_kll s ~~hl<m1· {Čkou danou body ix l. vll a fx2 .~· 2l. CIRCI.E CIRCLRix y.r :I NTEGER l Vy kras lenÍ ;;n~hd. c c se st{·edem v bo dě fx , y l a -polomérem r. FJLL FILL(x, y :I NTEEER) Vyplněn i pl ochy OhraniČe né souvi sl<?u v carou a obsahu.iíoi bod (x,yl. POINT POIN'l'Cx,vl BOOI,E AN Funkce testu.i{ c í rozsvíceni bodu: TRUF.: pokud bod na souřadni c Ích fx. y) svítL FAT.SE kdvŽ nesvitL 34 =====::======== .. , Komentář mu ze identifikátory Komentář 'f I dalŠ1.ho s~rii speciálními I znakem zacl. na Nenásledu,ie-li '1' dvěma mezi nebo znak nebo vyhrazenÝmi symboly vliechnv '*l' . .Je-li nalezF.mo znakŮ 7ol{c{ch dvo.íic{ nebo 'f' .isou '$' z nakv ':tl' vyhlBdf.Jvá ======~============= - >1I +1I I I I ·- I . ~ -- .> l pfsrneno ! - ·--·- ·--- - -----: -- - - -- ---- ) v_ __ ____ ___ ___ -----.> ' ' 1 •. 1 ! _____ )! - : ___ : L - 'f I I Y.'1.Z€Til. Implicitn ě : Ovládá r. - v~p is I ' -- · • · I J '' · : <_________ ·-- --- ---·----- ~ , VVPl.SU L+ ' ku B a C. '(:j: ' . aŽ do PřE:kladaČ ieho 6innost, ostatní znaky jsou pfesko~env 3. 2 :ŘÍzE:NÍ PŘEKT.AHO. - - - - ---- - - "na ignorovány až do '}' nebo '*l'. .... >: $ ČÍsly, slovy, oříloha viz ' VYP ~S U textu T-·ro,;>ramu pouze pfi na lezení c hyby j Irnolic:it.ně: 0-lŘídí. kontrolu násobeni ol.·epln;m{ . děleni a přeolněni Na celÝch čisel a .ie vŽdy kontrolováno všechny aritmetické operace s reálnÝmi čisly. 0- kontrola podle O+ neni prováděna C - test klávesnice Iruolici tně: C+ Řídi tc.st. klávnsni.ce během prováděn{ stro.iov.f. ho k6du. C+ oh stisku STOP s<> hěh oroaramu kl.~vesnice se prov,rl{ Toho lze vvuži-t~ při. 'I '! •' ~rerust ~e nn oo~~tb1 v~Ach cvk l~. ladě ·nl. pro.e:rarnu. Nc~ni zPrÁvou HALT Test proced1Jr a funkci . v:1odné ho použit chcete-li rychlÝ běh proaramu. c- test klávesnice neni prováděn S -· kontrola zás0bn:Í.ku Implicitně: S+ Ř{di provádění kontroly pfetečeni zÁ sobnÍku. S+ na zač~tku kontrolováno. dynamické PC=XXXX' každého volání nedoide-li prorr. ěnné r.ebo a běh p roa1· a rou k 36 .ie of at, p}epln~n{ . prof'l:ramu .ie .ie oi'·eruŠfln. rozsah zásobnJ'.ku m1~Ž e do .i { t s- funkc•3 zobr ,c,:;wr•o ke zhrouceni pro,«r;.tmu. kontrola zásobníku nen{ prov4dP.na 'Out RAI1 Používá-li pr.- ,cedura ve1.kÝ A - kontrola index~ Implicitné: A+ Řid{ kontrolu mez{ indexu poli. A+ je-li index pole př{liŠ velkÝ nebo malÝ .ie ~tenerována zpráva 'Index too hig' , nebo 'Index too běh low' . prof(ramu bude zastaven. A- kontrola se neprovád{. I - porovnáván{ ČÍsel bez znaménka Implicitně: I- KdyŽ se při použit{ 16 bitového dvo.ikového dopl;tku v celoČÍselné aritmetice liŠÍ argumenty o vice operaci >,<.>= a porovnáván{. I+ za.iist{ než MAXINT k přeplněnf , což vede k <= správnÝ v{7slede k norovnáváni . . ( :0 ~ 767) . ' docház{ ne ~.pr dv nemu Ste .in-4 u vÝsledkct s ituace • v muzn nastat u aritmetiky reálnÝch čísel kde na ?.ákladě přePlněni do,id·? k chybě li~d.-li se argumenty o J v~ce nHZ 1.4E38: cca t.omu se vyhnout nelzfl. I- kontrola vÝsledku porovnáváni nebude prováděna P - vÝstup na tiskárnu Implicitně: PřepÍnaČ obrazovka vÝstupu, na kterÝ se vyŠle vÝPis p{·ekladu. uživána obrazovka .ie pouŽita tisl;árna a naopak. Byla-li Tato v olb<1. neni následována '+' nebo '-' F - pÍ"eklad ze vstupnÍho soubo ru 37 Překlad textu programu ma~net.ofonu. z Znak F mus{ následovat název souboru. K · názvu souboru se automaticky připoj{ typ .PAS. Tato funkce Je uhtel:ná, -pře.iete-li si vybudovat knihovnu Často pouŽÍvanÝch funkcÍ procedur a na pásce a potom vkládat do program&. Je vhodné pouŽÍt k ř{zení listinP-u L-, nebo{ .iinak bude kompilátor pracovat pomalu. Příklad: {$L-,F MATRIX vloŽit textovÝ soubor MATRIX.PASl; Při tvorbě současně v~ak rozsáhlÝch Pi"Oil'ram& se mŮŽe st,át, Překládat možné pouŽitÍ Že v pamět.i. nebude dostatek prof<tor·u pro zdro.iovv text i proorramv uloŽené po stro.iqvý kÓd. ČÁstech ni'\ p}..sku Je za 'li'' > Tim .ie ponechávlmo mrsohem viafl inÍst.a pro volhv stro.iovÝ kÓd . -------------------~,;._-------------------- Pro psan1.' řádkovÝ opravy a editor. Pro zdro,iového zápis textu pfikazo Kapitola s louži tohoto V<"'> ~ 4~ ice i·ádkov:, ho Edi t.or .. .:ednoduchÝ editoru .ie využíván obrazovkový edi·tor, kterÝ· .ie součásti o p~3 rabnÍho systému mikropoMtače ONDRA . Název klávesy STOP v dalšim t.extu znamená kombi.naci CTRL C. PHka7. má následu.iid. formát: C N1. N2. SJ , S2 C Nl .i e Příkaz edi. toru (.i eden znak) N2 .ie ČÍslo .ie číslo v rozsahu 1 - :32707 včetw~í . Sl rozsahu 1 - 3?.767 včetně. .ie znakovÝ řetězec s maximálnÍ délkou 20 znak&. S2 .ie znakovÝ řetĚ-zec s maximálni délkou 20 znakŮ . Ar~umenty mezery 38 se jsou v oddělujÍ v 6árkou ( .ie mozno ignorovány s vv .iimkou mezer uvnit.ř řet.ězco~. 'S')' ŽádnÝ ('\'; ~; ·~~ .'l;. a ~. }-p>.~:. il. O i:.·}7 • SG { Pokud 0\•· Š<.::.!~ ":.Jt'-! .1sou ~):r ~umt:::r;t.y ~ ~)v] !'i.z: é) . Ro-:\n0t...,. N l tyto a N2 :i:.;ou po spuštl-.ní rnvnv J.C:} a -~~ s tězce pr.{-t ?..dná . z.~dá n:í. n€~~ {pustného -p!-{1.{a z c·vÉd·t.>) řádku, na pl" . Ii'-17 100. HE LLO bude it:rnorov.3rlo a zobraz{ Ú8dd~ :l e r11r tno vloht. správ n é, nap ř. F1.100.HELLO . ,P a.t·d.on' bude tahB zobra 8Ell1<"J , pl.. 81tro ČÍ··2.i S2 délku 20 z nakťi: u řet.€:z ce Si .i sou všechny zna.ky přek.-caču.i :Lc Í poČet 20 i E;norovány . sa 'Pnxdon? '. Pi.. í kazy mohou b}. . t vk l ~d~n:;; ·v"e lk?hr.i !!~1 bo malÝmi znaky·. 4.2 PŘÍKAZY RDITORU. ===================== v Pokud jB argument v popisu uzavren. symboly 1 <>' mus{ bÝt uveden, jinak přikaz nebude uroveclen. VKLÁDÁNÍ TEXTU Text lze· do souboru vlo!b t napsánj m 6isla řádku, poŽadovaného text.u. obdobně .iako t.<.,mu t:Vvf.. zvvkerr Zad~nim samotného 6isla řádku bude f.itdek •l m"~,er:v a .iaz.o-!•.1'1 Easic. tohot.o č{sla z t<.<x\.~' vymazán. I n,m Zavádi automatické čislováni ř~dkŮ. poČ:ina.ie n s krokem m. Čislováni lze zruŠit ři.dici funkci STOP. Vloženi.m nového řádku se ruš{ řádek se stejnÝm čislem, pokud jiŽ existoval. ČÍslo H.dku větši než 32767 m6d I VÝPIS Vytvoři-li se se zruš:!.. TEXTU. L n,m 38 J--' l_'t=.d T,{ m QOV ~ .i. ;i ·t~:. ::.. :.-::::-- .:-~ .~) :. , !{' . ' ry l_ ::-. :-_r: ,. "I I neni. n y·r·J·..us J . STOP d0 vrátit EDITACE 'rEXTU. ·~. e x. t'-~ se v:~.rsky ...c.nt:l l?Ot.feba někt.. eré opravám, D· l ř.·ádky o pra-;tiL I I v)rm.sz;aVT..J,.n l. K posuncun <-n . ~. m > ~'nsže. vše chny «a:<P."Ume1:d;y řk dky n e.isou t e xtového sonboru od n do m. Je--l i uvede.nv nen:f. pf{kaz proveden. Pro rn<n nebo smazáni jednoho řá dku zad e .ite m=m. I-5" Y.t ,;m.· ·-··------- ---r·- - ----------- - --- ------- ·-- - -- ------------- - ----N~J~ňu je nahradit text řádku m textem z fádku n. Text na řádku n Je zachován . pf.:f.kaz t.edy provád:f. přesun ( 'M' ove) textového řádku da. dali!íi polohy v textovém soub oru . Pro neexistu.i:f.cf n se př:f.kaz nevykoná. R- <n.,m> Přečislu,ie textovÝ soubor s čislem -prvn iho řádku n a s krokem m. Musi bÝt zadáno r• i. rn; pokud by u řečislován{ vedlo k čislu řádku vyŠŠimu :než ,ie F 3:ns? z ·& stane zachov1mo p{ivodni čislováni. n,m,f,s Hledá ht, ězec nalezen, .ie ( f 'finď) zobra:?.on v I rozmez1 Í'ádkŮ odpovida.iic5. textovv n<x<m. řádek řetězec J e-li p ře .ide a se do Edit •oÓdu (viz př:f.kaz 'E'). Pot.om m~Že t. e použit pf-1kazv F.dit módu _ k nRl..szen:i'. následu.i1.c{ch vÝskvtll řetězce - f .i i?. v definovaném ro z sahu fádki'l nebo k .ieho nn.hrazen { i-etězcem s .!'substitue') a k hledáni da.lš:i'.ho ne .i bliŽi'>iho vÝskvtu f. Rozsah řádku a oba řet kzcE• .i iŽ mohly být zadány dřive .iinÝm povelem, takže .ie moŽno zadat pouze ' F'. E n ; Editace ř ádl-::u n . ::; ČÍsJ.em zobrazen. I ( do vy r ovnav.:.tcl Čís l o -řádku .ie zobr a:c~eno 'I'parne·~-:t. t aké -con Je J. řitdke m 3. tJ ' •> provaaeny pl:·ejde se t.ext.ov~~- i·ádek. {mezer a) Z d. kohBC - p o .:·.nn h:ur ?.; oru rt.r~ násl~:~d.u_i {e { ~t J éd~ - NelzA p o s unout . řádku . B.ACKSPACE - pos•.:tn k i.tr· Lor,_1 nr.~ 71l"'E:d.,• h o?. :Í. z.-'": a k Y.fvik•l . NEll ze ·oosunoni·. před ~ a~ .3t,:. k řádk <:t. 1AR - posurt kuc zoY Ll n~ n~~ledui{c{. ~oztci ta bul~tor,l. N1i~ W LINR \j ·~ · rrl.VV ate ne za v F.e ch ·toho to (pře d ) ; I -:./":/i':'C•V .''l ..::tV3.C i. ,. zmc;:!. :car.ně·ti z te xtu, ·t . .i . L - ' . zbvtkn nd ttovan~ho }~dku. vvn~f; Edit mbd zŮstává. kur:;·.or na začátl:u řáoku. K - odstranění Znilku na Pozici kurzoru. Z - vvmazání vŠeah z:nakt'l "d pozice kurzoru (vČ:et.né) aŽ na konec řádku. F - hledán{ ne,ibl:i.Žšiho vÝskvtu řetě:we definovaného dř.fve novel 'F' .řádku (zachovává změny) iřádku. (viz ) . Tento doplňkovÝ povel automaticky ukonbÍ editaci na pokud nenalezne dalšf vÝskyt řetěl'.ce na Pokud .ie řetězeo z.iiš·~an v ni. .i bliže následu.iicfm řádku (v ji:iŽ dři ve specifikovaném rozsahu í-ádkŮ), .ie do Edit. módu potom vlloŽen řádek, ve ht.erém .i e řetězec nalezen. Po Úsně5n.3m v:vhl 0 dán i j e~: kurzor uml.s těn na začátek í·~dku. nahrazenÍ S nalezeného I·e c:tězcem 'sub s ti tue' ' ' .1menova.ne posledně I v k] ád~n{ v}· skytu i.nal{1~ fetězce dř{ve definovanÝm a potom provedeni donl:hkového povelu 'F' . od bv Po?.i.ce knr;;-:orD. . bÝt T-t:nti:-o ... / J pottZJ.vanv do·~·) lř~ -~-:ov~ - m/1d ,::,~ :~; J_·•_nF'; í. Rtisl-::P.m l•lF.\-1 LTN1~ (Ylá"".7 Jat~ clcl hlavni'h<".l mÓd u F di t . s }~ q :c;-.-:o1 .. V::Gl v po .1'I;O?.e po v .s u n11tÍ PO!'.; .l EJrlrd.ho mÓdu P~Tm~t i. ;;. :nahu). vlc~v0 znak Po n ~~it.,{ 0d T:'\ H posune hurzor vr.t~~: (·, 1.:- z.at Í.rn co u0uŽi.. t:Í. t~ r~ rn ·L o DJ\ (; f( SPACl ;: v kur z.o ru dé:ll ~; { p~.;loze t.2lbulátoru a vsune u1r:; z ~: ~:· v. oosune kur.zor na lcon ec l. . k dku a automa i:i ckv P :t'Gf.tna do Ck.J qJJ.ňkové ho mÓdu I. G - zm~na znak&. B!::\ CKSPAC F. v tortl"i.:. o Tento d(~pl ~~ovf t}6d z&st~v~ do sti s~ 11 N~W .LINE. doplřtkovém m.~; d u posun .::.: h.u:::-zc;r o .icclrtn uo 2:ici v].evo. PŘÍKAZY PRO PP.~CI Sli: SODBOP..Y P n,m.s ------------------------- ---------· --- -·------- ----- -------- - -- 4.2 " . ~Rá.d k y v :nter:-valu r:< :<: <7,< .:u. .d .. omaticky :::; ]~i TJ~):Í : ~)l'"O f·: .ea.m v P~;.-:;c3. .1~u. ;~, - ~_.') sou r) c)r , ob~ah u . i E: ;'>·: dv J e- l i ji~ v S 0 \.: ·: ;•:'•J: U ·•.Y"'•u;;·t;=! Z 3. !-.""~ ·:.s o 't.•·an .i.alto pam~ti v lo~ e n te xt0v~ n~y~ na~tenf soubor bude ·' .=;o ubo-c b :.:~de c:e- -.:. . y· a !:": ~.,:i r, ó;.l r c~i! :l. textovÝ .:.c·· -:;"f ick-i.- 7Y i.akv a kÓd CR f;líDH'> . pfečí s lo ván poČi.na ;j e soubor ~ádkem 61slo 1 s krokem 1 . PR'[KLAD A SPUŠ'l'ĚNÍ PROGRAMU C n Spust:L překlad text.u V I , POC J. na .1e řádke m n. Nen:L - li n uvedeno buJe text překládán poČÍna.ie p :r vnim exi st u.iÍ c Ím ):.. á dkem. Přek lada Č po spu Štění ,tt en i'-! r u.~e. vÝ-ois v tomto t .varu: xxxx n.nnn text zd r o .iov~hc ř. .~dku kde xxxx .ie poÓátedni adresa :st ro.iového překl adu ř-ádku nnnn .ie bíslo řádku s vvnechan-rhni. oočátebn. Í mi nulami. Vipi s lze sm~~ovat na t isk ~rn u přÍk az em 'P' Výpis lze kdyko liv zas't.av i ·t stiskem (viz kapito l a 3 ) . l1EZERY. S-t.i~kern STOP se vrá'd.te do editoru. s ·cisk9m .iiné k l ~vesy pokra<'::u .iet e ve vÝnisu . P.l·i z.iiš tění chyby b éhem Překladu s e na obra zovce vy-p{Še hlášenÍ ' *ER.ROR""' následované ukaz u .i J. cí .z a ( !) symbol , kterÝ chybu ZPl<sobil a. 6islem ch1rby 'viz p~{l oha. A ) . Výpis se za s·tavi.Pokud s ·t ::.sknete , E' vrc~ -t{ te c:· -:.. d i toru k opravě řádku zobrazeného na obra zovc-e . Pok.ud .S€1 s "c.is kú e t. "·:· ' D' se do edito r u k . \':lnrave 43 tabule ~ ) {nen! miz te v -Jest.\. 1. ~':<3 2 D0eklad obsahoval chyby, dota z , "f..:. i. .1 n?' :yJ .ii nak bude ... { .. l"'"1.Z~ n J. 1 rJa.vraceno ~:·..·i ~,_ t ..:.•'!:."'>.. l . .)i•e L.) ~·~e n :Ý F·fe:i:;::i;:. pro f! l" .:~ m b :1de spuštěn . 'J \1 - prel ozen a po k ud pl·es Gn u·!~ a le pauze t.ehdy, pokud ·":;rottramv me z itim 7.M;.. !nén. nt?bYi. r:. >:.x t od·oovi te na 'Y ' l~ o ne c bud e •1 y cÍlovÝ s tB.~ dardnÍch v spesne. o b.iev Í se dota z kÓd produkcvanÝ' !) r o cedu r ( z ni č5_ ' Ok'l ': -:>.1·ekladem překl ad aČ ) a st and e. rdn.i. prc ce.du:cy a cÍlov{". k Ód bti.dou ~..rvslánv na pásku s názv em soubot·u ocJuovÍda .i ícím p ro.a ram .íe Ro z'r.. odn et. e-1 i 'O k ? ' :lin ou p Í' ed eš lé ' ' mozne použ{,,at se P2~o f!r am n a kl ávesou než samost.a·tně, :ř{:~enÍ DALŠÍ PŘÍKAZY. 44 • v bez Př eloŽe nÝ Př i i:.omnost,i budo vráceno do na dotaz E!di torl_t, ne b ot c { lov~m kÓdem neb:vlo uohnuto mí sta. B '"! re-r.ezce. c..& s .ku nen ahr á vat odP0"'1ěztt3 ! YJ: k ·te rÝ hude stále f un aov,3·r-.. definic i z Vraci ~{zenÍ do operaČnÍho systému . O n.m Provádí zkráceni prog~amu v symbol, zhu$těn{ rozšiřené formě mezer). paměti Text (rezervovaná slova na .i eden ,je Čten do vyrovnávaci paměti v a vkládán zpět do souboru ve zkrácené. s, , d Změna znaku pro pfo:Í.kazovém řádku. 'S ' .ie oddělovač separátorem definovali použfvánÝ k odd.'!ílovÁnÍ argument.~ Impli ci tně ,je sepa rátorem č.firka ' . ' . separát.or. nrvn:i. znak I mus1 bv-t. řetězce pouH.ván Pokud d. i_ v povelu v Po Použit{ -ist.e _iedno•.x ' S' specifikace .iiného se-parátoru. SAnarátorem nes m~. 'ovt mazera. af. d·:1 --------------------------------- Př{loha A. Chybov~ hlá~e A.l KÓDY CHYB, GElillROVAtÚ~ PŘJi:KI.ADAČli!M. ====================================== L 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15_~ 16. 17. 18 . 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30 . 31. 46 Čislo je př{liŠ vel:l.ké. Je oČekáván stř3dnik. NedeklarovanÝ identifikátor. Je oČekáván identifikátor. UŽijte'=' miste':=' v deklaraci kongtanty . Je očekáváno'='. TÍmto identifikátorem nemŮŽe zaČlrJat pHkaz. Je oČekáváno •--• Je oČekáváno')' , ChybnÝ typ. Je oČekáváno ' Je oČekávim faktor. Je oČekávána konstanta. Tento ident.ifikiltor neni konstanta. Je oČekáváno 'THF.N ' . Je oČekáváno 'DO' . Je očekáváno 'TO' nebo ' OOWNTO'. Je oČekáváno ' ( ' . Nelze psát tento t y p v Ýrazu. Je očekáváno 'OF ' . Je oČekávána ' Je očekávána'·' Je oČekáváno 'PROGRAM'. V I Je oČekávána promenna. ne bot parametrem parametr. Je oČekáváno 'BEGIN'. Je očekávána proměnná při voláni READ. VÝrazy tohoto typu nelze -porovnávat. Možné typy INTEGER nebo -REAL. Proměnnou ·tohoto typu nelze čist Tento identifikátor neni typem. Je oČekáván ex-ponent. u reálného ČÍsla. .ie V I t>romenny 32. ~Je O<Seká_y~n skal -i~~~:.~ . ~ :t.ika.l:iv i'l.um-ari·~lt""Ý') výra~. 33. Prázdné řeAf.,k ~ce ·n ,·j :l:::Qu !A''Y voleny .fpctlZi:)ta CHI-\.(fťj)). 34. Je očekáv.:m.a · i 35 . Je o~ekiv,na '1'. 36 . Index u ARRIW mu si 1::,).-t skalárníhc t.:;;pu. 37. Je oČekáváno ' Je oČekáw~YlO > j ' , nebo ', ' v deklaraci ARI~AY. Dol ni mez .ie vétší než ho~i"·ni mez. Množina .ie pHli~ velká lv{c6 neli 25B p rvk&). VÝsledek funkce musi bÝt idEm-ti:fiiiáto r typu. V mn<JŽiné je V rnno:H ně je oČekáv3no ' ' nebo 'l'. T:~rp -parametru musi být typu identifikiltoru._ ..... Prázdná mnoŽina nesmí bÝt. prvnim faktorem v p:Í-iÍ'azovad.m 3 8. 39. ~~ 0. 4t. 42. 43. 44. 45. příkazu. 46. 47. 48. 49 . 50. 51. 52 . 53. 54 . 55. 56 . 57 . 58. 59 . 60. 61. 62 . 63. 64 . 67. 68. 69 . Je o.Č ekáván s kaláx {'rčetn.Š real). Je očekáván skal ťn· (ni koliv real). Množiny n<3jsou sh1Či telné. porovnán :i. m.uožin ne lze použ:l. ť '< ' a '>' . 'LABE[,', ' VAR-' , 'T'YPE ' J e očekáváno 'FORWARD ' ., ' CONST'. n.ebo 'BEGI N' . Je oČekilvána hexadecimální bíslice. Není možné POKE mno~in. Array j e př{liŠ velké (> 64 K). V definic i RECORD .ie oČekávÁno ' END' nebo Je oČekává·n identifikátor pole . Po ' WITH' .íe oČekávána proměnná. Proměnná ve 'WITH' musí bvt typu RECORD . Identifikátor POle nebvl pfiřazen přÍkazu WITR. Po 'LABEL' .i e oČekáváno celé ČÍslo bez znaménka . Po 'GOTO' je očekáváno celé ~Íslo bez znaménka. Toto návěští je na nes~rávné ~~ovni. Nedeklarované návěští . Parametrem v S!ZE musí'být proměnn-4. Pro ukazatele m~Že bÝt použit POUZe test ekvivalence. , .ie e:m:H JedinÝ parametr pro tisk celÝch čísel se dvěma Řetězce nesmí obsahovat k6d "konec řádky". Parametr u NEW, MARK, nebo RELEASE by měla bÝt proměnná typu ukazatel . l{ .. 47 P arame ~Jr ~v ADDR mus{ 712) • .} . ~ -- ·._ !. ' ' "'.?"'l P :!S U : ....... :i ' l ..... rc;,z. sah RAH) {~ii:i. i'l10 chvb u v-r.?o lává t~ ~1ké DIV. ;.': . 10 . Lin<?. t .oo l on g 11 . r~~cpone nt. r 1. ''tl.! 1 • ' rl pr-'-_._l.s 4 ·r ,... •. ; I ·. ;.l. v :..t!"'t Y '·' . ; . ~. "...,.) ra.:J.'(.3R, ·~ xpected Tyto chyby- zpŮsobÍ zas1~ave nÍ chodu proť,ramu . - -- --·- ------- -~ -- --- -------- - ---·- PJ!.1Lloha B . Re:zHrvovaná s lova. ======== ============== ).N ~> .:; RRAY BEGIN DOI#}iTO !iLSE :!: ND CASE FORWARD DTV SOTO DO 7t.n\·r.:;T ION H ··~: CO ti ST '[F ?-JfYf UF OR ):~cc:;.e : m~'i: AT szrr .n·Hi:l.'i. -;;: ;,\rB~ ,, i:. ,. ' ,i.!: ~\1 1TH ' Pl'"(':: G B. 2 SPECIÁI.NÍ SYHBOi.Y. ================:===== *< I> <= <> = + ( ) { } >= 1 *) (* .- Přiloha C. Předdefinované id~ntifikátory. CONST TYPE MAXINT=32767; BOOLEAN = (FALSE,TRUE): fRozHřenv soubor znakl"l ASCII): CHAR INTEGER PROCEDURE = -MAXINT .. MAXINT; REAL { Podmnožina r eÁlnvch Hsel. 17b 1. 31; WRITE; WRITELN: INI.INE; GET: OUT; READ; NEW: GETBLOCK; READLN: PAGE; HALT; USER; POKE; !1ARK: CLOSEI; RF.LEASE: OPENO; TIN: PUT: TOUT: PUTBLOCK; OPEl'<!; CLOSEO; MODE: PLOT: DRAW: BOX; BOXF: FILL; CIRCLE; FUNCTION ABS; EOLN; POINT; SQR; ODD; PEEK; RANDOM; CHR: FRAC; SIN; SQRT; COS: RND; ORD; ENTIER; TAN; PP.ED: SUCC; P.OUND; ARCTAN ; INCH; . TRUNC; EXP; LN; EOF; ADDR : SlZE; !NP; Přiloha D. Rep:razen·tace a uloŽeni 1). 1 iill.PREZF.NTACI!~ DAT. --------------------- dat . Znalost zpasobu ukládáni kteří programátoru, se je V I snaz1 potřebná a sloučit uhtečná programy pro v větir;inu Pascalu se stro,iovÝmi proptramy. Cel~ Hsla -----------------------------------------------------------Každé celé oislo ;le uloŽeno ve 2 bvtBch ve formě dvo,ikového doplňku. PHklady: 1 '0001 '0100 256 -256 'FFOO K uchováni celÝch čísel se standardně použivá rep,istrovÝ pár HL. Skalární typy -----------------------------------------------------------Zabiraj{ pouze jeden byte bez · znaménka. Znaky: 8 bitu, je užito rozšiřeného ASCII. 'E' 145 15B , [, Boolean: ORD(TRUE):1 ORD(FALSE)=0 tedy TRUE .ie reprezentováno 1. tedy FALSE .i e reprezentov/mo 0. PřekladaČ použivl!. s tandart.ně rep,istr A. Reálnl!. čisla .Je užito podobného tvaru (mantisy. exponentu ,iako u vědecké notace. která .ie pouŽita ve dvo ,i kové soustavě. PHklad: 2 2 1 1 -12.5 50 * 10A0 nebo * 10A0 1.12JB nebo 1.12JB -1 . 25 * 10Al * 2Al * 2AI2J nebo -25 * 2A-1 standardnÍ * -11001B * 0.1 .. . 1.0 -1.1001B 10~-1 nebo l/10 2"-1 * 2~3 normalizováno 1/1010B nynÍ musíme provádět 0.1B/101B binární děleni . . . 0.0001100 . 101 0 . 100000000000000 101 110 101 112l00 v tomto ~kamhku .ie 101 .HŽ vidět, Že se z lomek periodicky opaku.ie . 0.1B/101B = 0.0001100B : Jak tedy použít těchto vÝsledk& ke znázornění ČÍsel v počft aÓ i? Nejprve rezervujeme 4 bajty pro uloŽenÍ k a ždého reálného čísla v následujÍcÍm formátu : ZNAMÉNKO NORMALIZOVANÁ MANTISA 23 22 :! EXPONENT 7 "' L H E 0 D cla i; a bit re~i :st. r znam.é nko: znaménko mantisy ;· l=zlrporné, 0=kladnlr. normalizovaná mantisa: mantisa .ie normalizovaná do tvaru l . xxx;txx s horním bitem (bit 22) vŽdy 1 s v:dirnkou zobrazenÍ nuly (HL=0 , DE=0) . 51 exponent: exponent v binarn{m doplňkovém t.vnru. Takto: 2 = 0 1000000 00000000 00000000 00000001 tl40.t100.1*00.MH 1 = 0 1000000 00000000 00000000 00000000 it40' lt00. lt00. t!-00 -12 .5 = 1 1100100 00000000 00000000 0000001 1 ~F.4,rt00,#00,rt03 0 . 1 = 0 1100110 01100110 01100110 11111100 #66.tt66,tt66,#FC Uvědomime-l i si, Že El L a DF. .isou používány k ul oŽen i reálných 6isel, musime čislo do re~istr&. vk li.dat násle dovně: 2 1 -l2 . 5 LD LD LD HL . tt4000 I.D DE . t1000'2l I.D LD HL ,#E400 DE. #030·!i HL.li 666 6 LD DE: iiFC66 LD 0. 1 HI.. , :tt4000 DE ,#0100 Po s l e dni pl· i klad nám ukaz u.ie, mohou b~.. t ne p i--esné; zlomkem omezenÝm s 0. 1 prod n e mťl. ž e. bý·t poČ:t. e m vÝ-po Č t y ::; d -vo :j kov.Ými přes ně de s etinnÝch I ·~.rv _i .it\1.-ř.en.o z lor!!ky ct·v·o .ikcrvýrn ' ffiJ. sT.. ukl ádár.'l do paraéti v po 1·adÍ ED LH. Záznamy a ~etěz ce Záznamy potřebu.1i steJnÝ prostor .iako .ie c~l kovÝ součet. pamě-f.ového prostoru .i e .iich sloŽek. Uspo řád áni: je-li n = poČet prvkct pole s = rozměr každéhv prvku , poto m poČet ba.itct obsazenÝch po l em .ie n*s. P~. : ARRAY(1 . . 10) OF INTEGF.R vvŽadu,je 10*2 = 20 ba.it.'; ARRAYf2 . . 12. 1 .. 101 OF CHAR m~ 11*10 : 110 prvkct a vy~adu.ie t edy 110 ba.it~. 52 MnoŽiny ,i sou ukládánv prvkŮ obsa.di mnoŽi.na .iab) ř e t.é >~c e bit&; l!lá-1 i z.ákladn{ typ n (n-l)DTV R-1-t ba.i"tt~. Příklady: SET OF CHAR obsadÍ ( 256-1 WTV 8+1 = .32 ba itŮ SET OF (modra.z.elena . zluta) obsad{ (3-llDJV 8+1 = 1 ba.it. Ukazatelé Ukazatelé zabÍra.j{ 2 bajty. které obsahu.iÍ adresu (v~ formátu Intel, t.j . spodnÍ byte .ie prvnÍ) proměnné, na kterou ukazu.iÍ. Do 2 UIU,ÁDÁNÍ PROMĚNNÝCH PŘI "BĚHO PROGRAMU o =======================================:== Existu.iÍ 3 moŽnosti .iak .i sou proměnné u l o Ženy při chod•l pro~ramu. a. Globáln{ proměnné - d e klarovan.!. v hlavn{m prop:ramovém bloku . b . LokálnÍ proměnné - deklarované ve vnith.!m bloku. c. P .~ -· ' metry a hodnoty funkcÍ · - .i sou předávány do a z procedur a funkci . GlobÁlni proměnné Globáln:i". prorněn n<.!t jsou ulož eny od v·ccholu zásobniku proměnnÝch dolŮ, napřÍ k lad kdyŽ je zásobrd.l, na adre se $10000 promě nné V~~ i : INTEGER; .i sou: CHAR; ch : x: REAL; potom: i ( kter~ zabira 2 bajty) bude ulo~eno na adres;l.ch t!B000-2 a #B000-l, t.j. na adr. #AFFE a #AFFF. ch ( 1 ba .it) bude uloieno x (4 TJ a adrese #AFFE-1, t . j. na #AFFD. ba,ity) bude uloŽeno na adresách ltAFF9. #AFFA. #AFFB a #AFFC. LokálnÍ proměnné Lokál ni proménné ne .i sou tak Přistupné snadno Přes zásobnÍk místo toho .ie re-'!'istr IX nastaven na pob;l.t.ku kaid~ho vni.třniho bloku tak, Že (IX-4) ukazu.ie na poČáteční adresu bloku lokálnich proménnÝch. Napřiklad: PROCEDURE test; VAR i,j: INTEGER; potom: i ( integer, 2 ba.i ty) bude umístěno na adresách IX-4-2 a IX-4-1, tedy IX-6 a IX-5 . .i bud<= umísténo na adresách TX-8 a IX-7 . Argumenty a hodnoty funkcí Hodnoty parametrŮ č:f.m dřive 54 .isou zpracovávány je parametr popsán, _iako loki.lni proměnné tim vyŠŠÍ adresu má v tedy paměti. Na rozd{l od proměnnÝc h .ia ale pevne• s·t.anovena ' • ' r'll •· ne,Jnl. ZS l { n.i ._Ko ~. iv neivy~~{l adresa jako CIX+2) . NapHk"lad: tesH j_: REAL: PROCEDURE .i: INTJ!:GER I; i)Otom : ... ( um:istěno -prvni) je ·na ad-rúso IX+2 i ,i•:? n a adrese I X+4, VÝstupnÍ ·tak, parar:1et ry jako hodnotové 3 IX+:3. IX+ 5, IX+6 a IX+7 . (popsfi.tny ,iako paramet.ry, VAR) s jsou zpracovávány přesně v:dimk ou toho. Že jsou vŽdy uk l ádány do 2 b~·te "' t;d:o 2 byte obsahuj{ a dre su· proměnné. NapHklad: PROCEDURE t,est ( i : INTEGER : VA'R x: REAL) ; potom je umístěn na adrese IX+2 a IX+3. Zde je adresa, kde je uloženo x. Hodnota i .ie uloŽena na adrese IX+4 a IX+5. o dkaz na x FunkČnÍ hodnoty jsou ukládány nad prvním parametrem v paměti. Napřfklad: FUNCTION test( i: INTEGER): REAL; potom i ,je n~ adresách IX+2 a rezervován na adresách IX+3 a. prostor pro funkČnÍ hodnotu je IX+4, IX+5 , IX+6 a IX+7. 55. U? -fP:t-c~ram -oro ilustrac i pou~~i tí. 'f TN a. TOUT. 2r;; P!::'o~ram ':0f":·.vA ř1. v,elmJ ~l 0 seznam. na ;:·.~ s ku .~:t potom .-i e :i zp;n:n8 Čte. .indno duchV telf:1fonní. Sfi n i.kol i v 'SIZE' . : - .~ ."i 1j • Numbe x 160 : Ali..R.AY 0 . . 10) OF CHAR ; f!:ND : J.\3 0 .'>c rG c"t.o!-;t : ;\.IlRAY [1. .Si ze) OF CHAR; 2fr:VJ J : I l\P"fEG:V;R ~ .. 210 2 2.0 En~G H l 24~ fVytvo~ en { seznamu . . l 250 I·- 1 TO Size DO 260 li'OR 270 RF.GI N 280 WITH Dir-ectory[I) DO 290 300 BEGHl w'RI'l'E ( 'Prosim .iméno ' \; 310 READLN ; 320 'READ ( Name ) ; 330 WRITELN; 340 WRITE( 'Čislo prosim'); READLN ; 350 360 370 380 390 400 56 READ(Number); í<JRITELN END END; f1 410 fK ulc~enÍ seznamu na p~sek s e po u fije . . } 430 TOUTI 'Seznam ' , ADDRIDirectory l, SIZECDirectory) I 440 450 {Nové Čtení _-pole zpět následovně .. } 460 470 TIN('Seznam' ,ADDR(Directory)) 480 490 {A nynÍ .iiŽ m&žet,e zpracovavat adresář podle přání. ... 1 500 END. 10 { Pro.Etram pro vÝpis znak•~ ~Ádku v obdoceném pořad{ . 20 Ukazu .ie použiti uka zate l(i. zázn;,mu. H/U~K a RF.LEASE. l 30 40 PROGRAM Reverseline; 50 ·fTvoH s trukturu řádk& vÝpisu"} S0 TYPE elem=RECORD next: 70 8 "'elem~ 0 .ch: CHP,R 90 END; 100 link=~elem: 1L10 V2 0 VAB. prev ,cur, hei:>: link; 11330 !'A<10 BEG I N i 50 REPEAT ·iPř i:'ad it VT".::hol l! " he~rJ> . MARK(heap ) : prev:=NIL; 1810 1a-10 -fnet:t:o\:a?.u.1e z at.. Ír11 :-tu .; ;.;dno:J p~oměnr1. 0ll.} WHILE NOT EllLN DO BEGIN 2fM NEW( eur); {vytvořit novÝ dynamickÝ z á:-mam 1 2!'1.·0 READleur~.eh) : {a přiřadit jeho pole jednomu curA.next:=prev ; {tento ukazatel pole adresuje} prev:=eur .fpředehozi záznam.} znaku ze souboru . } 2!20 2!'50 END: ZH30 2270 {VypÍŠe řádek odzadu prohliženim záznam& ~80 vytvořenÝch pozpátku .} ::290 300 cur::prev ; 3 10 WHILE eur <> NIL DO 320 { NII, .i e prvni 1 BEGIN 330 WRITE( eurA. ch); {Vypsat toto pole , t . .j. znak) 340 eur: =eur""'. next. {Adresovat p:f.edchozi pole. 1 350 END; 360 w'"RI'l'ELN; 370 RELEASE ( he&.p ); fUvoinit Prostor dvnamic ké proCJ'l;~n né.) 280 330 READLN UNTIL FALSE t.fl0 END . 10 fPro,t;.r;:;.m ukazu ,lr3 použi..t.Í r,:1 kurzc } 20 30 PROG RPJ-1 Fi\C'!'Cí" · 40 50 iTGnto ):- r o t? r ~it. po Č{-:. ~ f a l-; to r .i ?~l člsla, zadané"!ho 60 :o ld áv e sn Jcc 1'; pouŽi dm rl3lmrz,, a 2) p ou ŽitÍm iterace.} 70 SO TYPE ~ -. HA::INT; PUS IN'f : :50 ~ R ok ~ r ~ ivn{ a1.G c ritmus. 1 70 fo'ONCTION r~FAC(N l 90 POSIN T ~ V/,f.' INTEGER: : POSINT) 2 í10 IF N> l ;·, 30 2 40 2 50 THEN F:LSE F: F: = = rl :r. Rl!AC(N·-1) {RFAC vyvol<ino N 1; RFi\C : = F END : :C 60 270 {I te ra~n{ fe~en{ . l ~~30 ?. 90 300 210 320 l~UNC TTON I'F'AC(N . - 1; . - 2 TO N DOF . - F*I; F 340 FOR I 350 360 IFAC: =F END; 370 60 INTEGER: VAR 1. F : ?OSINT; BEGIN 330 380 POSINT) BEGI N {Jednoduch~ smybka . 1 390 REPI!:AT 400 ';>.'RI'I'F.( 'Za<:!,-,:\'.:.e ,;;:.>t.0rl u i' T nAbo R\ a č{s) o 410 P.EADLN: 4 20 RF. AD ( HE'l'HOD. 430 IF METHOD ::: 'R' ~1U HBJl;R ' ): l ; 440 'I'HJ'(;J. wlUTF.:LN!NUMT;Ti:R , ' ! : ' ,RFAC(NlJMDH:R)) 450 ELSE WRITEf"iH NUt1BER.'! 460 = '. IFACO!ffiiBER)} UNTIL NUMBER:0 470 END . 6j ~1cdi f 10 {Program pro demonstraci •J I ' 20. PascalovskÝch 30 Uka:;-.u j .-" PEEK , POKE, ADDR a PTCln t=-liDYCi! t kace pou~it{m strojov&ho k6du . ~ NLIN E.} 40 f>0 PROGRAl1 di vonu J ·t:?: ti0 7i3 VAH t' :HEAL ; 80 9'?i FUNC'!' i.On d ivbv2(x:RF.AL):Tl.RAL: 100 .fFunkcA dél("-..{ 2 .. .. rychle . } {Ukazuje na exponent u x} 1 4 •.1 po;•:;;: f i . PRTI:D I PEl~ K ( i , <"::! í·IAR) ) ) ; {Dekrementuje exponent u x . viz Dodatek 3.1.3.} l Gí-1 did:JY2: =x l'/0 END; 1 80 1 80 FUNCTIOtl mu1.tb:,r 2(x:HEAI.l :I{1:AL: {Funkce násobeni 2 .. . . rychle . 1 ~:20 INLiliE:l 'DD. '34, 3 l ; 2:J(~ 2~0 {INC (11+3) - e xponent •u x - v i z Do<iatek 3. 2. l mn1tbv2 := x 250 F.ND; :-!fi0 ::- ?0 REGTN 280 290 RI!:PEAT WRTTE('Zadej 6:i'.slo r '); 30Y.l fNeni 310 zapotřebÍ READLN, Sekce 2.3.1. } 320 330 340 350 WRITELN('r děleno dvěma ,je ',divby2(r):7-: 2); WRITELN('r násobeno dvěma ;je ',multby21r):7:2); UN'l'IL r=0 360 END. 62 viz 10 {Pro~~ram pro vÝpi!ó t extovÉ. ho souboru n-'3 obrazovků -~ 20 PROGP.Al1 vyp :is; 30 40 VAR znak:CHAH ; 50 60 BEGIN 70 OPENI ( 'SOUBO:R ' ) ; {otevřen{ vstupniho soubo ru SOUBOR.DTA} 80 WHILE NOT EOF DO 90 BEGIN 100 GET{znak); {načteni znaku ze souboru) 110 WRITE(znak) fvÝpis znaku na obrazovkul 1212l END; 130 WRITRLN: {na novÝ Hdekl 140 \<ffiiTELIH 'Konec souboru'); 150 END. ---- -- - -- ---- - --- -- -- ·------ --·--· -·-------- P~ {loha ~ Lite rattl ra . 1"11 ti;1}1.-,:c, K . Pro!:framovaci :ia~:vkv. Edic'!:ni středisko ČVUT. [ 21 Wiirth, N. Algori thmus+Data Structures=Programs. Hall. Eng lewood Cliffs . Ne w York. [ 3] lnz th, N. Systematické pr,...grarnovanie. Alfa . 64 Prentice