2

Like dokumenter


VERKEFNI ME B ぱKINNI: たSLAND LANDI OKKAR EFTIR ʼn ぱRU KRISTINSD ぱTTUR. Bls. 4 5: Hva heitir landi sem vi b モum タ? Hva heitir landi sem モ kemur fr ァ?

sþ Tillaga til þingsályktunar [200. mál]

Java útgáfa /2/2008

Java útgáfa /6/2008

2. Å R S B E R E T N I N G O G R E G N S K A P F O R A ) Å r s b e r e t n i n g o g r e g n s k a p f o r

P r in s ipp s ø k n a d. R egu l e r i ngsen d r i n g f o r S ands t a d gå r d gn r. 64 b n r. 4 i Å f j o r d ko mm un e

C++ Nokkrar æfingar í forritun. Hallgrímur Arnalds

Þverá, Langadalsströnd vhm 038 Rennslislykill #6

Verkefnahefti 3. kafli

Sk ie n ko mm une. R EG UL E R I N GS B ES T E MM E L SER T I L D eta ljr e gu l e ri n g

FAGKONFERANSE KONTROL L OG TILSYN GARDERMOEN JUNI A RSMØTE I FORU M FO R KONTROLL OG TILSYN 5. JUN I 2013

EØS-tillegget til Den europeiske unions tidende. EØS-KOMITEENS BESLUTNING nr. 203/2014. av 30. september 2014

S T Y R E T G J Ø R O P P M E R K S O M P Å A T D Ø R E N E S T E N G E S K L

I N N K AL L I N G T I L O R D I N Æ R T S A M E I E R M Ø T E

K j æ r e b e b o e r!

K j æ r e b e b o e r!

K j æ r e b e b o e r!

R3123A Markarfljótsvirkjun B

K j æ r e b e b o e r!

K j æ r e b e b o e r!

I N N K A L L I N G T I L O R D I N Æ R T S A M E I E R M Ø T E

Våre Vakreste # & Q Q Q A & Q Q Q - & Q Q Q.# arr:panæss 2016 E A A 9 A - - Gla- ned. skjul F Q m. ler. jul. eng- da- jul. ler.

K j æ r e b e b o e r!

Nidurstiidur foreldrakiinnunar Krerabreiar i maf 2015

K j æ r e b e b o e r!

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010

Innhold. Ka pit tel 1 Inn led ning Barn og sam funn Bo kas opp byg ning... 13

Smárabrekka Lyngbrekka Grasabrekka Blómabrekka Fjólusveigur Liljusveigur

VINDMÆLINGAR A STJORNARSANDI

Nr. 11/66 EES-vi bætir vi Stjórnartí indi Evrópusambandsins

SKALI STÆRÐFRÆÐI FYRIR UNGLINGASTIG VERKEFNAHEFTI. Námsgagnastofnun 8667

K j æ r e b e b o e r!

1 Forutsetninger og rammebetingelser for fleksible organisasjonsformer

Levanger kommune, Foreløpig registrering, pr. 9. des. 2005

2.febrúar 2015 kl. 08:30-11:00

Ø K S N E V A D P O R T E N E I E N D O M A S

K j æ r e b e b o e r!

E G C F H/B D A D C A G H/B F E. Tekna við ngrinum frá nóta til bókstav til tangent

Ordliste for TRINN 1

funktioner der er tilvalg er mærkede med **

slrrd s/ t-l Fi ia Fi fl:r ged <^'(n fi Ft'H s ks F;A= HX3 I(: 2 * d;gb ri EF g 3 = t?$ lh 3[ X +i ?$i Es xe 0i i,r s E O X > t-

ServerClient 15. Zugriff KNX/EIB kerfi Tilgang KNX/EIB-system. Hönnunarger ir Designvarianter. Gira/Pro-face

A ft tt * 1 ^ an T ii ft. *< X IP * ft ii l> ff ffl *> (2 # * X fa c, * M L 7 ft tf ;U -h h T T* L /< ft * ft 7 g $ /i & 1 II tz ft ft ip ft M.

EMADINE 0,05% øjendråber, opløsning, enkeltdosisbeholder Emedastin

FiSKVINNSLUSTÖÐVA. Álþingi E rin á i m Þ /& /S 1 * komudagur /4 00^ SAMTOK LANDSSAMBAND ÍSLENSKRA ÚTVEGSMANNA

s Ss H= ul ss i ges su Es $ ieig *isx E i i i * r $ t s$ F I U E,EsilF'Ea g g EE $ HT E s $ Eg i i d :; il N SR S 8'i R H g i,he$r'qg5e 3

Virkjunarkostir til umfjöllunar í 3. áfanga rammaáætlunar Kafli 6.52 R3154A Blöndudalsvirkjun

Bjerkreim kyrkje 175 år. Takksemd. Tekster av Trygve Bjerkrheim Musikk av Tim Rishton

Ordliste for TRINN 2 (utviklende matematikk-oppgavehefter 2Aog 2B- refleksjonsord som kan hjelpe å forstå oppgaver)

s P t r st s s r st st r ür t s s t s st s t3 3 t r r s ä stüt3 ö st t s s tr r t 2 r s t r

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010


Innhold. For br u ker k jøps lo vens omr åde. Prin sip pet om yt el se mot yt el se sam ti dig hets prin sip pet. Selgers plikter.

Frístundahús. Leiðbeiningar. Leiðbeiningar. Mannvirkjastofnun

K v in n e r p å tv e rs

I n n k a l l i n g t i l o r d i n æ r t s a m e i e r m ø t e

Paa Sangertog. Tempo di marcia q = 110 TENOR 1 TENOR 2 BASS 1 BASS 2. bor - de, ju - bel fra bryst og munn. Frem

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010

3.2 Lausnir af römmum sýrum og bösum

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2009

gr. byggingarreglugerðar, nr. 112/2012, sbr. rgl. nr. 1173/2012, 350/2013, 280/2014 og 360/2016 Lög um mannvirki, nr.

K j æ r e b e b o e r!

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010

Kan du Løveloven...?

NORSK TEKSTARKIV J o s t e in H. Hauge

Inf or m asjonshef t e t il vikarer

Case 1:11-cr RNS Document 781 Entered on FLSD Docket 03/27/2013 Page 1 of M a u u - g u 'a M M M u..a u i < < < < < < < < <.Q? <.t!

Ge i r Berge 47. En d a t a s t r u k t u r f o r o rd b ø k e r f o r n a t u r lig e sp råk. 1. In n le d n in g

1 Vår onn med nye mu lig he ter. Ver di ska ping på vest lands byg de ne ba sert på res sur ser og opp le vel ser

N e s s an e k r a f t ve r k

úø ø úø ø wø ø ø ø ø ø ø ø ø ú ø ú øî ø ø ú ø ø ú ø Î Î ø wø ø ø ø ø ø ø ø ø ø ú ø nø øl ø J ú úl ø Kom, tro, og kom, glæde

Lausnir Nóvember 2006

Kæri Kirby eigandi, Vi vonum a flú njótir Sentria heimilisumsjónarkerfisins til hins ítrasta!

VISJON FOR SKOLEFRITIDSORDNINGEN I HOBØL KOMMUNE

dk Viðskiptahugbúnaður Grunn námskeið

O v e rfø rin g fra s to rt a n le g g til m in d re a n le g g

2 He F Ne Cl Ar Br Kr Lv Ts. 118 Og. 69 Tm. 70 Yb. 71 Lu. 102 No. 101 Md. 103 Lr

Kartoversikt over eksisterende og planlagte idrettsanlegg i Trondheim kommune

SKALI LAUSNIR STÆRÐFRÆÐI FYRIR UNGLINGASTIG NEMENDABÓK. Námsgagnastofnun 8863

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010

Erklæring om ansvarsrett etter plan- og bygningsloven (pbl) 23-3

S1 eksamen våren 2016 løysingsforslag

Sosialantropologisk institutt


Takksemd fire songar for kor. Tekster av Trygve Bjerkrheim Musikk av Tim Rishton

Hei!arb"lin. Fornar rústir á Sí!uhei!um, V-Skaftafellss"slu Rúst vi! Streitugil. Sk"rsla VI

Morfologioppgåva om Kongo-swahili

Ástin á tímum ömmu og afa

Løsning av utvalgte øvingsoppgaver til Sigma R2 kapittel 5

10 Leddstilling og kongruens

INNKALLING TIL ORDINÆRT SAMEIERMØTE 2010

œ»u ========================= & # f > > > > l l l l l jœ»j œ»j ˆ« =========================? # ˆ«jœ» J ˆ«j œ J l

Innledning...16 Kapitlene Ano ny mi tet... 18

2. Å R S B E R E T N I N G F O R Å R S R E G N S K A P F O R

) *+! "& "#! " # $ -

inf 1510: prosjekt Tone Bratteteig

Norska fiskveiðistjórnunarkerfið og markaðssetning norskra afurða. Jóhannes Pálsson, framkvæmdastjóri framleiðslu Norway Seafood AS.

Transkript:

Forritunarm li Fj lnir Notendahandb k Snorri Agnarsson, P ll Bj rnsson, J n Har arson 25. febr ar 1996

2

Efnisyrlit I Forritunarm li Fj lnir 7 1 Inngangur 9 2 Einingar 11 3 Seg ir, stef og a ger ir 13 3.1 T lur og star............................................ 13 3.2 T magildi.............................................. 13 3.3 Textastrengir............................................. 13 3.4 Hlunkar................................................ 14 3.5 Breytur................................................ 16 3.6 R kseg ir............................................... 17 3.7 Ef seg in............................................... 18 3.8 A ger arseg ir............................................ 18 3.9 Fylkjaseg ir.............................................. 20 3.10 Valseg in............................................... 21 3.11 Lykkjuseg ir og tseg in....................................... 22 3.12 Listaseg ir............................................... 23 3.13 Stefk ll, stef og skilaseg in...................................... 23 4 Einfalt d mi 27 5 Einingaa ger ir 29 5.1 trun.................................................. 29 5.2 Innutningur............................................. 31 5.3 Samsetning.............................................. 31 5.4 Hli setning.............................................. 31 5.5 trunarhli setning.......................................... 31 6 Veitingar 37 7 Notkun Fj lnis 39 8 M lfr i Fj lnis 41 8.1 Athugasemdir forritstexta..................................... 41 8.2 Frumeiningar m lsins......................................... 41 8.3 M lrit................................................. 48 9 Eftirm li 55 3

4 EFNISYFIRLIT 10 Heimildir 57 II Einingin GRUNNUR 59 11 Einingin AFRITA 63 12 Einingin DOSDISK 65 13 Einingin DOSSKRIU 75 14 Einingin DOSSTIU 81 15 Einingin DOSYMISL 85 16 Einingin FLEYF LL 89 17 Einingin INN 91 18 Einingin KJARNI 93 19 Einingin LESALINU 113 20 Einingin SKRIFALIN 115 21 Einingin SNUA 117 22 Einingin STRENGIR 119 23 Einingin UT 121 III Vi aukar 123 24 Forriti Fjalla 125 25 Forriti Hvarer 127 26 Einingin BROT 129 27 Einingarnar FELAGRUN og FELAKJAR 133 28 Einingar fyrir fylki 135 28.1 Einingin HFYLKI.......................................... 135 28.2 Einingin SFYLKI........................................... 136 29 Einingin HEXEININ 137 30 Einingin ISLR D 139 31 Einingin LYKLAR 141 32 Einingin QUICKSOR 143 33 Einingin MARGLID 145

EFNISYFIRLIT 5 34 Einingin MENGI 147 35 Einingin RADA 149 36 Einingin SKJAR 151 37 Einingin SLEMBI 155 38 Einingin STORFJOL 157 39 Einingin STORHEIL 161 40 Einingin TAFLA 165 41 Einingin TAYLOR 167 42 Einingin VIDBSKJA 171 43 Einingin VIDF NG 175 44 Einingar fyrir teiknun 177 44.1 Einingin TATAHGA......................................... 180 44.2 Einingin TATACGA......................................... 180 44.3 Einingin TATACGA3........................................ 180 44.4 Einingin TATAEGA......................................... 180 44.5 Einingin TATAMCGA........................................ 180 44.6 Einingin TATAVGA......................................... 180 IV Atri isor askr 181

6 EFNISYFIRLIT

Hluti I Forritunarm li Fj lnir 7

Kai 1 Inngangur Handb k essi inniheldur l singu forritunarm linu Fj lni. Fj lnir er fr brug i estum rum forritunarm lum rennan h tt: Fj lnir er slenskt forritunarm l Fj lnir er listavinnslum l Fj lnir er einingaforritunarm l S arnefndu atri in tv eru a sem gerir Fj lni a ugu forritunarm li. Listavinnsla er mikilv gt einkenni forritunarm li. Listavinnslan gerir ll gildi forritunarm linu jafn au veld me f rum og gerir forritara kleift a leysa vandam l au veldan h tt sem eru er e a n rri kleif rum forritunarm lum. Einingaforritunin gerir forritaranum s an kleift a pakka saman s num lausnum einingar sem nota m aftur og aftur. Listavinnslan Fj lni er svipu og rum listavinnslum lum svo sem LISP og LOGO. Einingaforritunin Fj lni er aftur m ti mj g fr brug in einingaforritun rum einingaforritunarm lum svo sem MODULA-2, Ada og C++. Einingaforritunin Fj lni gefur forritaranum kost a gera eira en essum forritunarm lum og einfaldari h tt. 9

10 KAFLI 1. INNGANGUR

Kai 2 Einingar Forrit Fj lni eru bygg r einingum. Fj lnir gefur m guleika a skilgreina einingar sem eru s fn stefja (undirforrita) og breyta, og tengja einingarnar saman alla hugsanlega vegu. Stef og breytur sem skilgreindar eru me nafni einhverri einingu eru s g vera utt t r eirri einingu e a sagt er a einingin innihaldi essi stef og breytur. stefjum innan einingar m kalla nnur stef e a nota breytur utan einingarinnar og kallast sl k tilv sun innutningur, sagt er a einingin v si sl k stef e a breytur. Einingara ger ir eru nota ar til a tengja essar tilv sanir raunverulegum stefjum og breytum einhverri einingu. Grundvallarhugmyndin a fer Fj lnis vi einingaforritun er s a l ta einingar sem innsetningar, svipa og st r fr inni. Eining sem t.d. inniheldur atri in a, b og c skilgreinir innsetningu sem setur tiltekna skilgreiningu sta nafnanna a, b og c. D mi um forritun einingar: "fibo" = { f -> stef( n) stofn ef n <= 2 skila 1 annars skila f( n-1)+f( n-2) eflok stofnlok } egar skr er dd sem inniheldur textann a ofan ver ur eining skrifu skr na FIBO.EIN. essi eining inniheldur ste f, og v sar sten f, <=, - og +. Vi l tum essa einingu sem innsetningu sem setur ste h gra megin rvarinnar sta nafnsins f vinstra megin rvarinnar. N fnin sem koma fyrir vinstra megin vi r segjum vi vera tutt r einingunni. Stef sem kalla er r einingunni segjum vi vera innutt eininguna. N er e lilegt a tla a ste f eigi h r a vera endurkv mt. Til ess a svo megiver a, tengjum vi tilv sunina f (hi innutta f) vi tutta ste f s mu einingu. Til ess notum vi einingaa ger ina trun. A ger s er t knu me stafnum!. Vi getum mynda n ja einingarskr IFIBO.EIN me eftirfarandi forritstexta: "ifibo" =! "fibo" 11

12 KAFLI 2. EININGAR f f <= - + f <= - + Mynd 2.1: Einf ld trun S eining inniheldur endurkv mt stef f, og v sar (ytur inn) tv undarsten <=, - og +. essari a ger er l st mynd 2.1. st an fyrir v a vi notum sl ka a ger Fj lni, sta ess a hafa a sj lfge a stef s u endurkv m, er s a vi viljum gefa allar tengingar undir stj rn forritarans. Me trun og rum einingaa ger um m tengja einingar saman allan hugsanlegan h tt. A rar nau synlegar einingaa ger ir heita hli setning, samsetning og innutningur. Hli setning er notu til a steypa saman tveim einingum n ess a tengja nokku. Samsetning og innutningur tengja eina einingu ofan a ra, eil ti mismunandi h tt. Vi munum s ar sj n kv mlega hvernig essar a ger ir vinna.

Kai 3 Seg ir, stef og a ger ir Vi h fum n r tt fengi nasasj n af einingaa ger um eim sem Fj lnir b ur upp. Vi skulum n sj hva a seg ir Fj lnir b ur upp. Seg (e. expression) er form la e a v uml kt sem skilar gildi egar reikna er r henni. m rgum forritunarm lum eru nota ar b i seg ir og setningar (e. statement), ar sem setningar eru skipanir sem ekki skila gildi. Fj lni er ekki ger ur greinarmunur setningu og seg. Allar seg ir skila einhverju gildi. 3.1 T lur og star T lur Fj lni eru mist fj ldat lur, heilt lur e a eytit lur. Star eru t kna ir me einum staf me einf ldum g sal ppum utan um, til d mis 'a'. Reyndar eru star jafngildir t lum. Til d mis er stafurinn 'a' jafngildur t lunni 97 vegna ess a 'a' er stafur 97 ASCII t knr nu. Fj ldat lur hafa gildi fr 0 til 65535. Heilt lur hafa gildi fr -32768 til 32767. Fleytit lur hafa gildi fr 1:11 10 ;308 til 1:79 10 308, um a bil. N kv mar tilteki er eytitala Fj lnisforriti anna hvort n ll e a hana m skrifa sem (;1) f (1 + n 2 17 ) 2 k, ar sem n er milli 0 og 65535, k er milli -1023 og 1023 og f er0e a1. 3.2 T magildi Eitt gildi hefur nokkra s rst u Fj lnisforritum. a er kalla t magildi e a satt. Gildi etta er m.a. nota sem sanngildi satt en ll nnur gildi eru l tin standa fyrir sanngildi satt. Sanngildi eru notu msum seg um til a st ra treikningum. forritum er t kni [] l ti standa fyrir t magildi. T magildi er ekki tala. Talan 0 hefur v sanngildi satt. 3.3 Textastrengir Strengir eru t kna ir me runu af st fum me tv f ldum g sal ppum utan um, til d mis "d mi um streng" e a "". Strengir sem felldir eru inn forritstextann, eins og seg inni x := "abc" eru fylki af b tum, og inniheldur fyrsta b ti (b ti s ti n ll) lengd ess texta sem strengurinn inniheldur. Varast ber a breyta sl kum strengjum, heldur taka fyrst afrit af strengnum til ess a breyta ekki strengfastanum. Hafa skal huga a stafur 'd' er ekki a sama og strengur "d". grunneiningunni GRUNNUR sem est forrit nota eru m.a. stef til a me h ndla strengi. Eftirfarandi strengjastef eru grunninum: 13

14 KAFLI 3. SEG IR, STEF OG A GER IR strengur Einundarstef sem b r til streng af tiltekinni l gmarksst r. Vi fangi er tala og strengurinn sem skila er, er a.m.k. af eirri st r. H marksst r strengja getur veri mismunandi eftir v hva a grunneining er notu, en er a.m.k. 4096 b ti (4K). strengsetjab ti Stef til a setja tiltekna t lu tilteki s ti (b ti) tilteknum streng. Ef breytan x inniheldur streng af l gmarksst r 12 veldur seg in strengsetjab ti( x,11,'a') v a stafurinn 'a' er settur s ti 11 strengnum x. strengs kjab ti Tv undarstef til a s kja b ti r tilteknu s ti tilteknum streng. Ef x er strengur af l gmarksst r 30 veldur seg in y := x \strengs kjab ti 29 v a breytan y f r t lugildi sem er b ti s ti 29 strengnum x. strengsetjaor Stef sem setur tilteki or (tv b ti) tiltekinn sta tilteknum streng. Ef x er strengur af l gmarksst r 13 veldur seg in strengsetjaor ( x,11,257) v a talan 257 er sett strenginn x s ti 11 og 12. strengs kjaor Tv undarstef sem s kir or (t lu) r streng. Ef x er strengur af l gmarksst r 10 skilar seg in x \strengs kjaor 8 or i v sem geymt er s tum 8 og 9 x. erstrengur Einundarstef sem segir til um hvort vi fangi er strengur. Til d mis skilar seg in \erstrengur "abc" sanngildinu satt (.e.a.s. ekki t magildinu) en seg in \erstrengur 12 skilar satt (t magildinu). strengst r Einundarstef sem tekur streng sem vi fang og skilar st r hans. St r strengja er reyndar vallt eitthvert veldi af tveimur. Til d mis skilar seg in \strengst r "abcd" t lunni 8 (eitt b ti er nota fyrir lengdina r r, fj gur b ti eru fyrir stana a,b,c og d, og rj b ti eru notu. 3.4 Hlunkar Fj lni eru gildi sem kallast hlunkar. Hlunkar essir eru fylki af rum gildum. Hlunkar eru til af mismunandi st r um, allt fr v a innihalda einungis eitt gildi upp a innihalda 1024 mismunandi gildi. Einingin GRUNNUR inniheldur stef til a b a til n ja hlunka, setja tilteki gildi tilteki s ti tilteknum hlunk, og s kja gildi r tilteknu s ti tilteknum hlunk. Ein tegund hlunka er s rlega mikilv g, en a er hlunkur me tveim s tum. S rst k stef eru grunninum til a me h ndla sl ka hlunka vegna ess hve miki sl kir hlunkar eru nota ir. Sl kir hlunkar eru kalla ir p r.

3.4. HLUNKAR 15 Almenn stef grunninum til a me h ndla hlunka. hlunkur Einundarstef sem b r til n jan hlunk. Vi fangi er st r hlunksins, og ll s tin n ja hlunknum hafa t magildi sem upphafsgildi. Seg in x := \hlunkur 10 veldur v a breytan x inniheldur hlunk af l gmarksst r 10. S tin hlunknum eru n meru fr 0 til 9. hlunksetja Stef til a setja gildi tilteki s ti hlunk. Ef x er hlunkur af st r a.m.k. 31 veldur seg in hlunksetja( x,30,[1,2,3]) v a s ti 30 x inniheldur listann [1,2,3]. Ste hlunksetja skilar ekki neinu s rst ku gildi. hlunks kja Tv undarstef til a s kja gildi r tilteknu s ti hlunk. Ef x er hlunkur af l gmarksst r 13 veldur seg in y := x \hlunks kja 12 v a breytan y f r gildi s ti 12 hlunknum x. hlunkst r Einundarstef sem skilar st r hlunks. Ef x er hlunkur af st r 64 veldur seg in y := \hlunkst r x v a breytan y f r gildi 64. Reyndar er st r allra hlunka eitthvert veldi af tveim. egar hlunkur af tiltekinni l gmarksst r er b inn til, er st r in kv r u sem minnsta veldi af tveim sem fulln gir l gmarksskilyr inu. erhlunkur Einundarstef sem segir til um hvort vi fangi er hlunkur. Til d mis skilar seg irnar og \erhlunkur 1 \erhlunkur "me alst r strengur" b ar satt (.e.a.s. t magildinu), en seg in \erhlunkur \hlunkur 10 skilar satt (ekki t magildinu). Stef til a me h ndla p r. haus Einundarstef sem tekur par sem vi fang og skilar gildi v sem geymt er s ti 0 parinu. Gildi s ti 0 tilteknu pari k llum vi haus parsins. hali Einundarstef sem tekur par sem vi fang og skilar gildi v sem geymt er s ti 1 parinu. Gildi s ti 1 tilteknu pari k llum vi hala parsins. : Tv undarstef til a b a til par. Vi f ngin tv ver a haus og hali parsins. Til d mis skilar seg in 1:[2,3] listanum [1,2,3].

16 KAFLI 3. SEG IR, STEF OG A GER IR erpar Einundarstef sem segir til um hvort vi fangi er par. Til d mis skila seg irnar og \erpar 1 \erpar "me alst r strengur" b ar satt (.e.a.s. t magildinu), en seg irnar og \erpar [1,2] \erpar \hlunkur 2 skila satt (ekki t magildinu). L sa m innbyr is samhengi stefjanna haus, haus og : me eftirfarandi j fnum: \haus (x:y) = x \hali (x:y) = y Eftirfarandi eining inniheldur ste lengd, sem skilar lengd vi fangsins, sem ver ur a vera eiginlegur listi:!{ lengd -> stef( x) stofn ef x \st kka \lengd \hali x, annars 0, eflok, stofnlok } 3.5 Breytur Stef Fj lni geta innihaldi sta v rar breytur, sem einungis eru til sta ar me an stef a sem inniheldur r er framkv md. hvert skipti sem han er framkv md stefs eru b nar til n jar tg fur af essum sta bundnu breytum, og eim er llum ge t magildi sem upphafsgildi nema anna s teki fram. V sa m breytur til a nota gildi eirra, og breytum m gefa gildi me gildisveitingarseg, til d mis veldur seg in x:=x+1 v a breytan x er st kku um einn (vi gerum r fyrir a tv undarste + s tengd okkar venjulega samlagningarste fj ldat lur). Einnig m breyta gildum breyta me stefk llum, eins og vi munum sj seinna. Einingar geta einnig innihaldi v v rar (e. global e a external) haldgildar (e. static) breytur. Breytur essar halda s nu gildi milli kalla stef einingunni og taka tt llum einingaa ger um. Tilv sun sl ka breytu er a eins l gleg ef breytan hefur veri skilgreind sem innutt haus stefsins. Tilv sunina ver ur a tengja tuttri breytu r einhverri einingu. Einingin

3.6. R KSEG IR 17 { x -> breyta } ytur t breytu x. Allar v v rar breytur innihalda t magildi vi upphaf keyrslu forritsins. Me einingaa ger unum m tengja v v rar breytur og sm a einingar sem innihalda faldar breytur, sem notandi einingarinnar hefur ekki a gang a, en halda s nu gildi milli kalla. Eftirfarandi eining inniheldur ste slembi sem skilar n rri slembit lu hverju kalli. Breytan s i er falin innan einingarinnar og notendur einingarinnar hafa ekki a gang a henni. "slembi" = { slembi -> stef( ) innflutt s i stofn ef s i s i:=s i * 513 + 1801, annars s i:=12345, eflok, stofnlok } * { s i -> breyta } 3.6 R kseg ir Fj lnir b ur upp r ka ger irnar ekki, og og e a. essar a ger ir eru a tvennu leyti fr brug nar stefjum Fj lni. fyrsta lagi er skilgreining eirra f st, ar e r eru ekki uttar inn r einingar sem nota r, og einingar geta ekki utt essar a ger ir t. ru lagi eru tv undarr ka ger irnar og og e a b nar eim eiginleika a r athuga fyrst gildi vinstra vi fangsins, og gildi h gra vi fangsins er ekki reikna nema nau syn beri til. Seg in ekki S skilar t magildinu og v a eins a S skili ekki t magildinu. A ru leyti er tkoman ekki skilgreind, og skal v einungis nota hana sem r kgildi. Seg in S 1 og S 2 og :::og S n reiknar gildi seg anna S 1 til S n r ar til ein eirra skilar t magildinu. Ef engin eirra skilar t magildinu skilar seg in gildinu sem S n skila i. Ef S i er fyrsta seg in rununni sem skilar t magildinu skilar runan t magildinu og ekki er reikna r seg unum S i+1 til S n. Svipa gildir um seg ina S 1 e a S 2 e a :::e a S n H n reiknar gildi seg anna S 1 til S n r ar til ein eirra skilar ru en t magildinu. Ef allar eirra skila t magildinu skilar seg in t magildinu. Ef S i er fyrsta seg in rununni sem skilar ekki t magildinu skilar runan v gildi og ekki er reikna r seg unum Si +1 til S n.r ka ger irnar hafa l gsta forgang af llum a ger um, og innbyr is forgangur eirra er sl kur a ekki er framkv md fyrst, s an og, og a lokum e a. Sem d mi um notkun essara a ger a m taka seg ina x=0 og villa( "deilt me n lli") e a y/x essari seg er fyrst athuga hvort x=0. Ef svo er erseg in villa( "deilt me n lli") framkv md, sem v ntanlega veldur v a forriti st vast. A rum kosti er seg in y/x reiknu og gildi hennar skila sem gildi allrar seg arinnar.

18 KAFLI 3. SEG IR, STEF OG A GER IR 3.7 Ef seg in D mi um ef seg ina g ti liti annig t: ef x<10 1 annarsef x<100 2 annars 3 eflok essi ef seg er framkv md eftirfarandi h tt: Fyrst er n gildi breytunni x. S an er tv undarstenu < beitt a gildi og t luna 10. t r eirri beitingu f um vi eitthvert gildi. Ef a gildi er satt (.e.a.s. ekki t magildi ) skilar ef seg in t lunni 1. Ef gildi er t magildi er n sti m guleiki reikna ur, og gildi breytunnar x er borinn saman vi t luna 100. r eim samanbur i (e a stefbeitingu) f um vi aftur gildi sem anna hvort er satt (ekki t magildi ) e a satt (t magildi ). Ef gildi er satt skilar ef seg in t lunni 2, annars skilar h n t lunni 3. Almennt geta ef seg ir innihaldi takmarka an fj lda af annarsef hlutum, og annars hlutinn m vera til sta ar en arf ekki a vera til sta ar. Ef seg in skilar vallt gildi s ustu reikna rar seg ar. Til d mis skilar seg in ef 1>2 1 eflok t magildinu, og seg in ef 2>1 eflok skilar einnig t magildinu. 3.8 A ger arseg ir Fj lni m beita eim stefjum sem a ger um sem einungis hafa inntaksvi f ng. Einundara ger um er beitt me v a setja r framan vi seg ir r sem beita skal eim. Til d mis eru og - x \ekki x tv r l glegar seg ir me einundarstefjum - og ekki. A ger an fn eru mist t knu me stafnum \ framan vi stafarunu (sj n nar kaanum um m lfr i Fj lnis) e a runu fr tekinna a ger arstafa. L gleg a ger an fn eru til d mis +, -, \haus, +++, <<, \hali, \pl s, \+summa og <=>. l gleg a ger an fn eru til d mis +summa og pl s. Tv undara ger um m beita me v a setja r milli eirra seg a sem beita skal eim. Til d mis eru og x+y x \m d lus y l glegar seg ir me tv undarstefjum + og m d lus. Gildi vi fanga a ger ar eru reiknu fr vinstri til h gri. A ger arn fnum m beita eins og stefn fnum, til d mis er seg in +( 1,2) jafngild seg inni 1+2

3.8. A GER ARSEG IR 19 Forgangur Fyrsti stafur a ger arnafns 7 *, / e a % 6 + e a - 5 <, > e a = 4 3 & 2 : 1 allir a rir star Taa 3.1: Forgangur a ger a Tv undara ger ir hafa mismunandi forgang, og er forgangi a ger a thluta eftir v hva a staf nafn eirra hefst, eins og s nt er t u 3.1. Fj lnis andinn mun sj til ess a a ger ir me h rri forgangi s u framkv mdar undan a ger um me l gri, nema svigar st ri r inni n nar. Einundara ger ir hafa h rri forgang en tv undara ger ir. Seg irnar og \m nus x < y & y < z ((\m nus x) < (y & y)) < z eru v jafngildar. Athugi a r ka ger irnar e a, og og ekki hafa minni forgang en allar a rar a ger ir. Seg in ekki x<y og y<z vinnur v eins og vi eigum a venjast, h n er jafngild seg inni (ekki (x<y)) og (y<z) Tv undara ger ir tengjast til vinstri, fyrir utan a ger ir sem hafa n fn sem byrja t kninu :, en r tengjast til h gri. Seg in 1+2+3 er v jafngild seg inni (1+2)+3 en seg in 1:2:[] er jafngild seg inni 1:(2:[]) Skilgreina m n jar a ger ir sama h tt og nnur stef eru skilgreind. Til d mis m tti skilgreina veldisupphafningu eftirfarandi h tt: "veldi" =! { ^ -> stef( x,n)

20 KAFLI 3. SEG IR, STEF OG A GER IR stofn ef n=0 1, annarsef n%2=1 x*((x*x)^(n/2)), annars ef n%2=0 (x*x)^(n/2), eflok, stofnlok } essa a ger m kalla seg svo sem 2^10, sem v ntanlega skilar gildinu 1024. etta er hra virk a fer til veldishafningar fj ldat luveldi. 3.9 Fylkjaseg ir Fj lnir b ur upp seg ir svo sem og f[i] := f[i] + 1, x := f[k] + 2, til a au velda notkun g gnum sem heg a s r eins og fylki. Mikilv gt er a gera s r grein fyrir v a fylki Fj lni eru alls ekki eins fastm tu a merkingu og almennt gerist forritunarm lum. Almennt er gildisveiting Fj lni forminu f[i]:=g n kv mlega jafngild stefkallinu fylkissetja1( f,i,g) og fylkisseg forminu f[i] er n kv mlega jafngild seg inni fylkiss kja1( f,i) a er byrg notandans a essi undirforrit (fylkissetja1 og fylkiss kja1) s u h nnu ann veg a f hagi s r sem fylki e a taa. Almennt kemur v dd fylkjanna fram n fnum eirra stefja og a ger a sem notu eru til a setja gildi fylki og s kja gildi r fylki. Seg in f[i1,...,in] er v jafngild seg inni og seg in fylkiss kjan( f,i1,...,in) f[i1,...,in]:=g er jafngild seg inni

3.10. VALSEG IN 21 fylkissetjan( f,i1,...,in,g) Sem d mi um notkun fylkjaseg a m tti tengja grunninn me tengingunum { fylkiss kja1 -> strengs kjab ti fylkissetja1 -> strengsetjab ti } og m tti nota seg ina s[10] til a v sa b ti 10 strengnum s, og s[1]:='a' til a setja stann 'a' b ts ti 1 strengnum. einingunni GRUNNUR eru fylkiss kja1 og fylkissetja1 tengdar stefjum sem vinna eins og strengsetjab ti, hlunksetja, strengs kjab ti og hlunks kja, eftir atvikum. v m nota seg ina h[10] til a v sa gildi 10 hlunknum h, og seg ina s[10] til a s kja b tgildi s ti 10 strengnum s. Einnig eru tilt kar einingar til a me h ndla almennari fylki, til d mis strj l fylki, og notandinn getur a sj lfs g u hanna s n eigin fylki. Fylki sem innihalda fylki m nota sem fj lv fylki. Til d mis er seg in f[i][j]:=10, fullkomlega l gleg seg sem er jafngild seg inni e a fylkissetja1( f[i],j,10) fylkissetja1( fylkiss kja1( f,i),j,10) 3.10 Valseg in Fj lnir b ur upp valseg sem l kist case, select e a switch-setningum rum forritunarm lum. valseg inni er eitt fj ldat lugildi nota til velja einhvern valkost r endanlegum fj lda kosta. D mi um valseg ina er val i%15 r kostur 0 skrifastreng( "talan 15 gengur upp i"), 2, kostur 5,10 skrifastreng( "talan 5 gengur upp i"), 1, kostur 3,6,9,12 skrifastreng( "talan 3 gengur upp i"), 1, annars skrifastreng( "hvorki 5 n 3 ganga upp i"), 0, vallok Eins og allar a rar seg ir Fj lni skilar valseg in gildi. Gildi sem valseg in skilar er gildi s ustu seg ar sem reiknu er innan valseg arinnar. d minu a ofan skilar seg in v fj lda eirra pr mtalna sem gengi hefur veri r skugga um a gangi upp i. Ekki er nau synlegt a hafa annars-hluta valseg inni. S annars-hlutanum sleppt jafngildir a v a annars-hlutinn s annars [] Kostirnir sem taldir eru upp valseg inni mega einungis innihalda fj ldat lufasta og staasta. Setja m kosti forminu a..b sem jafngilda upptalningunni a,a+1,...,b. Til d mis

22 KAFLI 3. SEG IR, STEF OG A GER IR val s r kostur '0'..'9' skrifastreng( "t lustafur"), kostur 'a'..'z','a'..'z', skrifastreng( "b kstafur"), vallok 3.11 Lykkjuseg ir og tseg in Fj lnir b ur upp rj r ger ir af lykkjuseg um. D mi um lykkjuseg ir eru: og og me an x>1 lykkja l gari mi:=l gari mi+1, x:=x/2, lykkjulok fyrir( i:=1 i<10 i:=i+1) lykkja skrifat lu( i), skrifastreng( " ru veldi er "), skrifat lu( i*i), n l na( ), lykkjulok lykkja x:=lesat lu( ), ef x=0 t eflok, y:=y+x, lykkjulok Me an lykkjan vinnur annig a byrjun hverrar umfer ar er reikna t r skilyr inu, sem t kna er me seg arunu milli lykilor anna me an og lykkja. Ef tkoman r eim reikningi er s nn (ekki t magildi ) er reikna r seg unum milli lykkja og lykkjulok, einni af annarri, og s an byrja n tt. Fyrir seg in vinnur l kt og for setning C forritunarm linu. Seg in fyrir(a B C) lykkja D, lykkjulok vinnur svipa og seg arunan A, me an B lykkja D, C, lykkjulok fyrir utan a a t-seg ir seg arununum A, B og C eru ekki tengdar essari lykkju, heldur ytri lykkju, ef einhver er. ri ja ger in af lykkjuseg er endanleg lykkja. Til a lj ka framkv md endanlegrar lykkjuseg ar m framkv ma tseg inni henni. egar tseg er framkv md veldur h n v a framkv md lykkjunnar er loki og lykkjan skilar s nu gildi, sem er alltaf hi sama fyrir allar tegundir lykkjuseg ar,.e.a.s. t magildi.

3.12. LISTASEG IR 23 Einnig m a sj lfs g u lj ka lykju me v a framkv ma skilaseg e a einfaldlega h tta keyrslu forritsins me v a kalla st riker vi eigandi h tt (t.d. ste h tta einingunni GRUNNUR). Me an lykkju m breyta jafngilda endanlega lykkju. Me an lykkjan me an A lykkja B, lykkjulok er jafngild lykkjunni lykkja ef A [], gerir ekkert annars t, stekkur t r lykkjunni eflok, B, lykkjulok nema a hli st tt gildir um t-seg ir seg arununni A og gilti fyrir-lykkjunni. 3.12 Listaseg ir Seg ir eins og [1,a,x+1] eru kalla ar listaseg ir. Seg essi er jafngild seg inni 1:a:(x+1):[] Almennt er seg in [A,B,...,F] jafngild seg inni A:B:...:F:[] Merking sl kra seg a er v h merkingu a ger arinnar :, nema a seg in [] hefur fasta merkingu, h n skilar alltaf t magildinu. 3.13 Stefk ll, stef og skilaseg in Samkv mt m lfr i Fj lnis (sj m lrit kaanum um m lfr i) l ta stefskilgreiningar svona t: nafn -> stef(runa_af_n fnum runa_af_n fnum) breytuskilgreiningar stofn runa_af_seg um stofnlok Til d mis: st rstisameiginlegideilir -> stef(n x,y) sta v r t stofn

24 KAFLI 3. SEG IR, STEF OG A GER IR n:=1, lykkja ef x=0 t, eflok, n:=n+1, t:=y%x, y:=x, x:=t, lykkjulok, skila y, stofnlok Ste st rstisameiginlegideilir a ofan tekur rj vi f ng, n, x og y. Vi fangi n er inn tvi fang. a ir a egar kalla er ste m setja breytu fyrir leppinn n kallseg inni, og s breyta f r ef til vill n tt gildi vi kalli. Hin vi f ngin, x og y, eru gildisvi f ng. kalli m setja gildi fyrir leppana x og y. Ste a ofan m kalla seg, til d mis d:=st rstisameiginlegideilir(k 100,125) Sl k seg veldur v a gildin 100 og 125 eru sett breyturnar x og y stofni stefsins, og breytan n stofni stefsins f r gildi breytunnar k kallseg inni. Ste er s an framkv mt og skilar a lokum s nu gildi sem sett er breytuna d. En breytan k f r einnig gildi a sem breytan n stenu haf i vi lok framkv mdar stefsins. Kalla fer in byggist v v a senda gildi fram og til baka millikallseg ar og stefs sem kalla er. L tum anna d mi. Ef kalla er ste f -> stef(x,y a,b) stofn x:=a, y:=b, stofnlok me kallinu f(z,z 1,2) f r breytan z gildi 2 vegna ess a afritunin af gildunum fer fram fr vinstri til h gri. Ef engin skilaseg er framkv md stenu semkalla er, skilar kalli gildi s ustu seg ar sem reikna er r kallstenu. Seg in skila y fyrra d minu a ofan hef i v eins geta veri einfaldlega y. Ef seg in skila 10 er framkv md veldur h n v a inningu stefs er h tt, og t lunni 10 er skila til kallseg ar sem gildi r kallinu. Almennt veldur skila S ar sem S er einhver seg v a reikna er gildi seg inni S, og gildi v er skila til baka kallseg ina. egar v sa er stef kalli kallast a innutningur vi komandi ste ar e tilv sunina arf einhvern t ma a tengja tuttu ste einhverri einingu. nnur a fer til a kalla stef er s a geyma ste breytu og kalla a seinna. Til a geyma stef f breytu x notum vi gildisveitingu eins og eftirfarandi:

3.13. STEFK LL, STEF OG SKILASEG IN 25 x := stef f(1,2) seg in stef f(1 2) v sar ste f, sem ver ur a vera stef me einu inn tvi fangi og tveimur innvi f ngum. Almennt getum vi sm a svokalla stefgildi me seg sni inu stef <stefnafn>(<inn tfj ldi> <innfj ldi>) Seinna m kalla ste me seg sni inu <nafn breytu>(<inn tvi f ng> <innvi f ng>) ar sem breytan inniheldur vi komandi stefgildi.

26 KAFLI 3. SEG IR, STEF OG A GER IR

Kai 4 Einfalt d mi Eftirfarandi forrit les inn fj ldat lu, beitir Fibonacci fallinu hana, og prentar tkomuna. "forrit" < a alstef { a alstef -> stef( ) sta v r n,m stofn n:=lesa( ), m:=f( n), skrifa( m) stofnlok } *! { f -> stef( n) stofn ef n<=2 1 annars f( n-1)+f( n-2) eflok stofnlok } * "grunnur" essu forriti eru nota ar rj r einingar. Fyrsta einingin inniheldur ste a alstef sem er stef a sem framkv mt er egar forriti er keyrt. N sta eining inniheldur ste f, og einingu er beitt trunara ger inni til ess a tengja endurkv mar tilv sanir f. Innutningsa ger inni er s an beitt til a tengja ste f vi tilv sunina a alstenu. t r eirri a ger f um vi einingu sem inniheldur a alstef, og v sar sten lesa, skrifa, +, - og <=. Mynd 4.1 l sir tengingum essum. Einingin GRUNNUR er loks utt inn, en h n skilgreinir mis grunnstef svo sem lesa, skrifa, +, - og <=. ar me h fum vi einingu sem inniheldur a alstef, og v sar ekki neitt. essa einingu skrifum vi sem forrit 27

28 KAFLI 4. EINFALT D MI aal lesa skrifa fibo fibo <= - + fibo lesa skrifa <= - +... GRUNNUR Mynd 4.1: Fibonacci forrit skr na FORRIT.EXE. Keyrsla essa forrits felst v a framkv ma a alstef einu sinni. Forriti a ofan s nir notkun innutningi og trun. trun er eina einingaa ger in sem beitt er staka einingu, og hrif hennar eru a tengja innutt atri i (stef e a breytur) vi tutt atri i af sama nafni. tkoman er v eining sem inniheldur s mu n fn og upphaega einingin, en v sar a eins au n fn sem ekki eru til einingunni. Innutningur tengir tutning r seinni einingunni vi innutning eirri fyrri, og einingin sem t kemur inniheldur s mu n fn og fyrri einingin, og v sar ll n fn sem v sa er r seinni einingunni og au sem v sa er r eirri fyrri og ekki eru til eirri seinni. Vi munum sj n nari skilgreiningu essum a ger um h r eftir.

Kai 5 Einingaa ger ir Fj lnir b ur upp mm einingaa ger ir. Ein eirra, trun, er einundara ger. H n er t knu me a ger arstafnum!. Hinar eru tv undara ger ir, kalla ar innutningur, samsetning, hli setning og trunarhli setning. r eru t kna ar me a ger arst funum *, :, + og &. Tv undara ger irnar eru framkv mdar fr vinstri til h gri, t.d. gildir jafnan A * B * C = ( A * B ) * C fyrir allar einingar A, B og C. Forgangur tv undara ger anna er sl kur a fyrst er innutningur (t kna ur me *) framkv mdur, s an samsetning (t knu me :), s an hli setning (t knu me +) og loks trunarhli setning (t knu me &). Einundara ger in trun hefur h sta forgang. eftirfarandi k um er a ger um essum l st. 5.1 trun hugum einingu "A" sem skilgreind er me eftirfarandi forritstexta: "A" = { x -> y y -> stef( a,b) stofn y( 1,2), w(a,b 3), stofnlok z -> stef( a,b) stofn y( 3,1), w(b,a 4), stofnlok } Eining essi inniheldur n fnin x,y og z. H n v sar y og w. Mynd 5.1 l sir tengingum sem ger ar eru vi trun essarar einingar. Einingin!"A" inniheldur v atri in x, y og z, og v sar atri i w. tutningarnir x og y eru reyndar sama ste. L tum n knara d mi. L tum eininguna "B" vera skilgreinda me : "B" = { 29

30 KAFLI 5. EININGAA GER IR x y z y w x y z w Mynd 5.1: Einfalt d mi um trun z y x w r y x z y x r w z y x r w z y x r w z y x w r y x Mynd 5.2: tarlegt d mi um trun

5.2. INNFLUTNINGUR 31 r -> x x -> y y -> stef(a,b c) stofn w(a 1,2), y(b,a 2), stofnlok z -> stef( a) stofn skila a stofnlok } trun einingarinnar "B" m l sa me mynd 5.2. Einingin!"B" inniheldur sten r,x,y og z, og v sar ste w. tutningarnir r,x og y eru sama stef. 5.2 Innutningur egar einingara ger in innutningur er framkv md tengjast innutningar og tutningar n kv mlega sama h tt og samsetningu. Munurinn essum a ger um er s a n fn au sem einingin A*B inniheldur eru n kv mlega au s mu og einingin A inniheldur. Mynd 5.3 l sir essu. 5.3 Samsetning L tum n einingara ger ina samsetning. Mynd 5.4 l sir tengingum eim sem framkv mdar eru egar unni er r samsetningunni A : B. Einingin A (efsta einingin til vinstri teikningunni) inniheldur x,y og z, og v sar p og w. Einingin B inniheldur q,p,s og w, og v sar r,w og t. Samsetta einingin A:B (ne st myndinni) inniheldur allt a sem anna hvort A e a B innihalda. einingunni A:B er b i a tengja tilv sanir r A vi innihald B. rvarnar milli t-anna, p-anna og w-anna vinstri hluta teikningarinnar s na essar tengingar. 5.4 Hli setning Mynd 5.5 l sir hli setningu tveggja eininga, A og B. Einingin A (lengst til vinstri myndinni) inniheldur x,y og z, og v sar r og w. Einingin B inniheldur p, q, r og s og v sar s, t og w. Einingin A+B f st me v a skella einingunum saman n ess a tengja nokku. 5.5 trunarhli setning S einingara ger sem sennilega er au veldust notkun eim sem forrita hafa rum forritunarm lum sem ekki bj a einingaforritun er trunarhli setning. H n er t knu me a ger arstafnum & og er skilgreind grundvelli trunar og hli setningar eftirfarandi h tt fyrir einingar A og B: A & B =! ( A + B ) egar einingar A og B eru trunarhli settar er v allt tengt sem unnt er a tengja, b i innan hverrar einingar fyrir sig og milli eininganna. Ef einhver skir ess a nota Fj lni svipa an h tt og forritunarm l,

32 KAFLI 5. EININGAA GER IR w x y z w x y z t p w x t p w t q p s w t q p s w r w t r w t x w x y z r w x t Mynd 5.3: Innutningur

5.5. TRUNARHLI SETNING 33 p t x w x z y w q s p r t w t w q s p t r x w t w z y x t q s p p t x w x z y w q s p r t w t w Mynd 5.4: Samsetning

34 KAFLI 5. EININGAA GER IR x y z p q r s r w s t w x p y z q r s s r t w Mynd 5.5: Hli setning

5.5. TRUNARHLI SETNING 35 eins og t.d. C, sem ekki gefa kost knum tengingum milli eininga getur hann skrifa s n forrit eftirfarandi sni i: "FORRIT" < a al { a al -> stef( ) stofn... stofnlok... } & "GRUNNUR" egar skr sem inniheldur texta eins og a ofan er dd er sm u ein keyrsluh f skr, FORRIT.EXE. Forriti er sm a me v a tengja saman textaeininguna og eininguna GRUNNUR. essi a fer gengur a sj lfs g u ekki ef einingarnar innihalda stef me sama nafni. ver ur a nota a rar einingaa ger ir til a tengja. Til ess a losna vi a a allt aftur egar breytingar eru ger ar m skipta forritinu a ofan upp einingar. m hafa nokkrar skr r eftirfarandi sni i: "EININGi" = {... } egar skr sem inniheldur texta eins og a ofan er dd er sm u ein einingarskr, EININGi.EIN. Loks m a eina skr eftirfarandi sni i til a tengja allt saman og sm a forriti : "FORRIT" < a al { a al -> stef( ) stofn... stofnlok } & "EINING1" &... & "EININGn" & "GRUNNUR" egar essi skr er dd eru allar einingarnar tengdar saman og keyrsluskr in FORRIT.EXE er skrifu.

36 KAFLI 5. EININGAA GER IR

Kai 6 Veitingar Forritstexti Fj lni er runa af veitingum. Hver veiting sm ar eina einingu e a eitt forrit. Veitingar eru v tvenns konar, forritsveitingar og einingaveitingar. Forritsveitingar eru eftirfarandi sni i: nafn_keyrsluskr r < nafn_a alstefs eining egar Fj lnis andinn vinnur r forritsveitingu byrjar hann a vinna r einingunni. Einingin ver ur a innihalda stef sem heitir nafn_a alstefs og a stef m ekki taka nein vi f ng. Einingin m ekki v sa nein stef e a breytur. er skrifu skr disk sem heitir nafn_keyrsluskr r.exe. S skr inniheldur keyrsluh ft forrit. Keyrsla essa forrits felst v a keyra ste nafn_a alstefs einu sinni. Einingaveitingar eru af ru hvoru eftirfarandi sni a: nafn_einingarskr r = eining nafn_einingarbreytu = eining fyrra tilfellinu er eining sm u og geymd skr diski. v seinna er eining sm u og geymd svokalla ri einingarbreytu sem b in er til fyrsta skipti sem v sa er hana. Einingarbreyta essi er a eins til sta ar me an ing essi fer fram, a henni lokinni er einingin gl tu. me an essari ingu stendur m v sa essa einingarbreytu me nafni, eins oft og ver a vill, til ess a nota einingu sem sm u var. 37

38 KAFLI 6. VEITINGAR

Kai 7 Notkun Fj lnis Fj lni eru andi og tengir sama forriti. Til a a forritstexta skr m x1.fjo, x2.fjo, o.s.frv. er notu skipunarunan C:\>FJ LNIR x1 C:\>FJ LNIR x2... e a skipunin C:\>FJ LNIR x1 x2... Skr r sem innihalda forritstexta ttu v a hafa vi urnefni.fjo. Skr r sem innihalda ddar einingar hafa vi urnefni.ein. eim eru geymdar uppl singar sem gerir Fj lni kleyft a villupr fa tengingar r sem ger ar eru og skrifa villubo ef rangar tengingar eru ger ar (til d mis er rangt a tengja kall stef sem taka skal eitt vi fang vi stef sem tekur tv vi f ng). andinn var a llu leyti skrifa ur Fj lni og smalam li. a er v h tt a fullyr a a nota megi Fj lni til a leysa verulega st r verkefni. egar andinn er keyr ur skrifar hann skj inn v sbendingar um framvindu ingarinnar. Ef ekki er ska eftir sl kum tskriftum, e a ska er n nari uppl singa, m gefa andanum fyrirm li um sl kt me rofum. Einnig er ro sem st rir notkun minnis hla a. r r rofar eru tilt kir notendum Fj lnis: E Veldur v a Fj lnir keyrir n ess a skrifa skj. T Veldur v a Fj lnir birtir v sbendingar um tengingar r sem ger ar eru egar einingara ger ir eru framkv mdar. Mx St rir v hversu miki minni er nota hla a EXE skr sem Fj lnir skrifar. Stafurinn x skal vera t lustafur sext ndaker, 0..9 e a A..F. Starnir A..F standa fyrir t lurnar 10..15 eins og kunnugt er. St r minnissv isins sem nota er undir hla a er kvar a af form lunni 4096*(x+1). Ef enginn M ro er nota ur jafngildir a rofa MF,.e.a.s. notu ver a 64K undir hla a. Yrleitt arf ekki meira en 4K (4096 b ti) hla a, en ef forriti notar dj pa endurkv mni arf meiri hla a. Rofana m mist gefa skipanal nu egar Fj lnir er keyr ur e a setja m rofana umhversbreytu MS-DOS. Til a gera andann hlj l tan er t.d. notu skipun forminu FJ LNIR/E x1 x2... Svipa a a fer m nota til a l ta andann ver a hlj l tan a sta aldri. Til ess n gir a gefa MS-DOS skipunina SET FJROFAR=E 39

40 KAFLI 7. NOTKUN FJ LNIS Skilgreina m leitarsl ir fyrir tilv sanir einingaskr r texta eim sem ddur er. Til ess er notu MS-DOS skipun forminu SET FJLEIT=<lei >1... <lei >n Skipun essi veldur v a leita er a einingaskr m sem ekki nnast, efnisskr m (e. directory) <lei >1 til <lei >n. T.d. ef einingar eru vallt geymdar efnisskr nni C:\EIN m gefa skipunina: SET FJLEIT=C:\EIN og m v sa essar einingar n ess a urfa a skeyta C:\\EIN\\ framan n fn eirra.

Kai 8 M lfr i Fj lnis 8.1 Athugasemdir forritstexta forritsl nu m setja athugasemd me v a hefja hana. andinn mun hlaupa yr afganginn af eirri l nu, fr til l nuloka. Til d mis er l nan me an x e a y lykkja finnum n sta pr mt lu tt jafngild l nunni me an x e a y lykkja 8.2 Frumeiningar m lsins Forrit Fj lni eru bygg r eftirt ldum frumeiningum: Lykilor og n fn a ger ir og fr tekin t kn Lesfastar Lykilor eru eftirfarandi: annars annarsef breyta e a eok ef ekki fyrir innutt kostur 41

42 KAFLI 8. M LFR I FJ LNIS lykkja lykkjulok me an og skila sta v r stef stofn stofnlok r t val vallok Fj lni er ger ur greinarmunur h st fum og l gst fum (st rum og litlum st fum) og lykilor in ver ur a rita me l gst fum. Fr tekin t kn eru: ( ) [ ] { } -> :=,.. milli t kna Fj lnisforriti mega vera eins margir bilstar, d lkstar (e. emphtab) og l nubil og ver a vill. Lesfastar eru af rem ger um: Fj ldat lu- og heilt lufastar Fleytit lufastar Strengfastar Fj ldat lufastar geta haft gildi bilinu 0 til 65535. Heilt lufastar geta haft gildi bilinu -32768 til 32767. Fj ldat lu- og heilt lufastar eru ferns konar: Fj ldat lufastar tugaker Heilt lufastar tugaker Fj ldat lufastar sext ndaker Staastar

8.2. FRUMEININGAR M LSINS 43 stafur annar en \ \ hva a stafur sem er nema $ \ $ hexstafur hexstafur staasti ' ' Mynd 8.1: Staasti fj ldatala t lustafur $ hexstafur Mynd 8.2: Fj ldatala heiltala - fj ldatala Mynd 8.3: Heiltala

44 KAFLI 8. M LFR I FJ LNIS Allir essir fastar eru a vissu leyti jafngildir ar e keyrslu er ekki unnt a gera greinarmun eim Fj lnisforriti. T.d. er heiltalan -1 sama og fj ldatalan 65535, og staastar eru geymdir sem fj ldatalan sem er s ti vi komandi stafs stafr nu. Myndir 8.1, 8.2 og 8.3 l sa m lfr i frumt kna Fj lnis. M lrit essi hafa ann eiginleika a ll l gleg Fj lnist kn m sm a me v a fylgja l nunum eftir, svipa og j rnbrautateinum. Fari er gegnum tvenns konar kassa, ferhyrninga og vala kassa. v lu kassarnir standa fyrir sta sem koma breyttir vi komandi forrit. Ferhyrningarnir innihalda n fn annara m leininga sem foritinu geta veri, og eru skilgreindir me eigin m lriti. T lustar eru '0' til '9'. Hexstar eru '0' til '9', 'A' til 'F' og 'a' til 'f'. Staastar eru nota ir til a rita einn ASCII staf. Rita m st rista sem staasta. eir eru rita ir svipa an h tt og strengjum eins og l st er annars sta ar essum kaa. D mi um l glega heilt lu-, fj ldat lu- og staasta: 1 12345-10 $AB12 'a' '\\' ''' '\$07' '\b' '"' D mi um l glega heilt lu-, fj ldat lu- og staasta: $G123 'ab' -40000 123456 "a" '''' '""' M lrit eytit lufasta er s nt mynd 8.4. D mi um l glega eytit lufasta: 1.0 1.E-10 12.34-1. --12.34E123 D mi um l glega eytit lufasta:.0 1.2E M lrit strengfasta er s nt mynd 8.5. egar \ kemur fyrir inni streng er n sti stafur eftir oftast tekinn b kstaega inn strenginn. essa a fer m nota til a skrifa strengi sem innihalda " e a \. er" t kna me \" og \ er t kna me \\. Einnig er \ nota til a gera forritaranum kleift a setja algenga ASCII st rista inn strengi. Taa 8.1 s nir t knun eirra st ristafa sem unnt er a t kna me stafapari ar sem fyrri stafurinn er \:

8.2. FRUMEININGAR M LSINS 45 eytitala - t lustafur E e + - t lustafur. t lustafur Mynd 8.4: Fleytitala strengur " stafur annar en " og \ \ hva a stafur sem er nema $ \ $ hexstafur hexstafur " Mynd 8.5: Strengfastar

46 KAFLI 8. M LFR I FJ LNIS Stafapar St ristafur \c e a \C ASCII 13, CR \b e a \B ASCII 7, BEL \e e a \E ASCII 27, ESC \f e a \F ASCII 12, FF \n e a \N ASCII 10, LF \t e a \T ASCII 9, HT \0 ASCII 0 \1 ASCII 1 \2 ASCII 2 \3 ASCII 3 \4 ASCII 4 \5 ASCII 5 \6 ASCII 6 \7 ASCII 7 \8 ASCII 8 \9 ASCII 9 Taa 8.1: St ristar Einnig er unnt a rita hva a ASCII staf sem er strenginn me v a skrifa hann sni inu \$xx ar sem xx er tveggja stafa tala sext ndaker. T.d. eru \b og \$07 jafngildir star, sem og 0 og \$30. D mi um l glega strengfasta: "abc" "strengur me \" inni " "\\ heitir bakstrik" " ' " "$" "\$FF" D mi um l glega strengfasta: 'abc' " " " "\" "\$" "\$FG" Hin ri ja ger lesfasta sem t kna m Fj lni er t magildi, sem t kna er me []. T magildi stendur fyrir s rstakt gildi Fj lni, sem er jafnt llum rum gildum. N fn Fj lni eru tvenns konar: Stefn fn og breytun fn A ger an fn M ll sing a ger anafna er mynd 8.6: A ger arstar, sem nota m til a mynda a ger ir, eru eftirfarandi: + -* / %! & =? <> : ^ @ M ll sing stefnafna og breytunafna er mynd 8.7. Nafnstar eru allir star a rir en eftirfarandi:

8.2. FRUMEININGAR M LSINS 47 a ger \ a ger arstafur nafnstafur a ger arstafur t lustafur Mynd 8.6: A ger an fn nafn nafnstafur nafnstafur t lustafur Mynd 8.7: N fn

48 KAFLI 8. M LFR I FJ LNIS forrit nafn = eining strengur strengur < nafn eining Mynd 8.8: Forrit bil ( ) [ ] { },. a ger arstafir ASCII stafir me ra n mer fr 0 til 31 Allir slenskir b kstar eru v nafnstar. 8.3 M lrit Myndir 8.8,...,8.21 l sa heildarbyggingu Fj lnisforrita. M lrit essi skal lesa sama h tt og m lritin sem l sa frumt knum Fj lnis. Lesa m gegn um ll l gleg Fj lnisforrit me v a byrja ar sem stendur forrit myndinni h r a ne an og renna me j rnbrautateinunum gegn um myndina og allar r undirmyndir sem rf krefur.

8.3. M LRIT 49 eining strengur! nafn ( eining ) { v rpun } * : + & Mynd 8.9: Eining -> a ger nafn v rpun nafn a ger breyta stefskilgreining Mynd 8.10: V rpun

50 KAFLI 8. M LFR I FJ LNIS stefskilgreining stef ( nafn, nafn ), innflutt nafn, sta v r nafn :=, seg stofn seg aruna stofnlok Mynd 8.11: Stefskilgreining seg fylkisseg ekki a ger og e a Mynd 8.12: Seg

8.3. M LRIT 51 fylkisseg sm seg [ seg aruna ] := seg Mynd 8.13: Fylkisseg seg aruna seg, Mynd 8.14: Seg aruna

52 KAFLI 8. M LFR I FJ LNIS sm seg nafnseg a ger sm seg ( seg aruna ) efseg [ seg aruna ] lykkjuseg stofn seg aruna stofnlok valseg t skila seg ( seg ) strengur tala stef nafn ( tala tala ) Mynd 8.15: Sm seg lykkjuseg me an seg fyrir ( seg aruna seg seg aruna ) lykkja seg aruna lykkjulok Mynd 8.16: Lykkuseg ir

8.3. M LRIT 53 nafnseg nafn := seg ( seg aruna seg aruna ) Mynd 8.17: Nafnseg ir annarsef annars efseg ef seg seg aruna seg seg aruna eflok seg aruna Mynd 8.18: Efseg

54 KAFLI 8. M LFR I FJ LNIS r kostur valfasti.. valfasti annars vallok seg aruna valseg val seg seg aruna Mynd 8.19: Valseg valfasti staasti fj ldatala Mynd 8.20: Valfasti tala staasti fj ldatala heiltala eytitala Mynd 8.21: Tala

Kai 9 Eftirm li Forritunarm li Fj lnir er s rstaklega hanna me einingaforritun huga. a er byggt n jum hugmyndum einingaforritun, sem fyrst var l st heimildum [2,3,4]. essar hugmyndir byggjast aftur grundvallarhugmyndum st r fr i endanlegra trj a, sem l st er heimild [1]. Hugmyndir essar voru lei andi lj s h nnun forritunarm lsins, og reyndist vera metanlegt gagn af eim vi a skera r um vafaatri i h nnun m lsins. a er alls ekki nau synlegt fyrir notendur forritunarm lsins a vera kunnugir essum fr um. 55

56 KAFLI 9. EFTIRM LI

Kai 10 Heimildir 1 Bruno Courcelle, Fundamental Properties of Innite Trees, Theoretical Computer Science 25 (1983) 95-169. 2 Snorri Agnarsson, Packages as Substitutions, doktorsritger, Rensselaer Polytechnic Institute, j n 1985. 3 Snorri Agnarsson og M.S. Krishnamoorthy, Towards a Theory of Packages, Proceedings of the ACM SIGPLAN-85 symposium on language issues in programming environments. SIGPLAN Notices, Vol. 20, No. 7. 4 Snorri Agnarsson, M.S. Krishnamoorthy og B. David Saunders, An algebraic theory of packages. Proceedings of EUROCAL-85. Lecture Notes in Computer Science, Springer-Verlag 1985. 57

58 KAFLI 10. HEIMILDIR

Hluti II Einingin GRUNNUR 59

Einingin GRUNNUR er samsett r m rgum rum einingum. Hverri essara eininga er l st undirkaa essum kaa. Grunnurinn er ansi st r eining og inniheldur eiri stef en est forrit nota. a er v oft st a til a nota minni grunn en ann sem fylgir Fj lni. Notandi Fj lnis getur sm a sinn eigin grunn ef hann vill, e a nota beint r einingar sem grunnurinn er samsettur r. myndinni h r a ne an er s nt hvernig einingarnar grunninum tengjast saman,.e.a.s. hvernig einingarnar kalla stef rhver annarri. ar m t.d. sj a ef nota arf eininguna INN arf einnig a ytja inn einingarnar UT, SNUA, LESALINU og DOSSKRIU. Auk ess arf n rri alltaf a ytja inn eininguna KJARNI, e a einhverja einingu sem inniheldur einingu, t.d. GRUNNUR, ar e langestar einingar v sa einhver kjarnastef. Vi k llum eininguna KJARNI kjarnann og eininguna GRUNNUR grunninn og stef kjarnanum k llum vi kjarnastef, og stef grunninum grunnstef. 61

62

Kai 11 Einingin AFRITA Einingin AFRITA inniheldur a ger til a taka afrit af gildi. afrita Notkun: gildi1 := afrita( gildi2) Fyrir: gildi2 er eitthvert gildi, getur veri n nast hva sem er. A eins er ess krast a ekki s u tilv sanir hring gildinu. Sl kar tilv sanir er a eins unnt a sm a me v a nota stef eins og haussetja, halasetja e a hlunksetja og sl k notkun er ekki algeng. Ef um tilv sun hring er a r a mun a valda endanlegri lykkju e a endanlegri endurkv mni. Eftir: gildi1 f r gildi sem er n kv mt afrit af gildi2. gildi1 eru allir hlunkar (.m.t. p r) og strengir n jar tg fur af samsvarandi streng e a hlunk gildi2. 63

64 KAFLI 11. EININGIN AFRITA

Kai 12 Einingin DOSDISK disklausk Notkun: i := disklausk( drif) Fyrir: drif er heiltala e a fj ldatala sem segir til um hva a diskadrif er a r a. drif=0 er sj lfge diskadrif. drif=1 er diskadrif a:. drif=2 er diskadrif b: o.s.frv. Eftir: i inniheldur fj ldat lu sem segir til um hversu m rg k l b ti eru laus v diskadri sem ge var upp drif. Ef fj ldatalan sem gen er upp drif l sir ekki l glegu diskadri vi komandi t lvu, inniheldur i gildi satt eftir kalli. Eins inniheldur i gildi satt ef einhverjar l glegar e a skemmdar diskeiningar eru vi komandi diskadri. diskst r Notkun: i := diskst r ( drif) Fyrir: drif er heiltala e a fj ldatala sem segir til um hva a diskadrif er a r a. drif= 0 er sj lfge diskadrif. drif=1 er diskadrif a:, drif=2 er diskadrif b: o.s.frv. Eftir: i inniheldur fj ldat lu sem segir til um hversu m rg k l b ti diskadri sem ge var upp drif r mar heild. Ef fj ldatalan sem gen er upp drif l sir ekki l glegu diskadri vi komandi t lvu, inniheldur i gildi satt eftir kalli. Eins inniheldur i gildi satt ef einhverjar l glegar e a skemmdar diskeiningar eru vi komandi diskadri. skiptaumsafn Notkun: ok := skiptaumsafn( safnsemertil) Fyrir: safnsemertil er strengur sem inniheldur l glega efnisskr rlei fyrir DOS. D mi um l glegar lei ir eru "\\pakkar", "a:pakkar", "a:\\pakkar", "a:\\", "\\" o.s.frv. D mi um l glegar lei ir eru "a:pakkar\\", "a:" o.s.frv. Eftir: a safn er sj lfge, sem ge er safnsemertil, sj lfgefnudiskadri. Ef safnsemertil inniheldur nafn diskadri (er t.d. "a:\\pakkar"), er skipt yr uppge safn v diskadri en ekki er skipt um sj lfge diskadrif. Eftir kalli f r ok gildi satt ef uppgen efnisskr rlei er l gleg og er til vi komandi diskadri (og skipt hefur veri yr safnsemertil) en satt ef efnisskr rlei in er l gleg e a ekki til vi komandi diskadri. S lfge safn er a sama vi komandi diskadri og var fyrir. 65

66 KAFLI 12. EININGIN DOSDISK sj lfge safn Notkun: safn := sj lfgefi safn( drif) Fyrir: drif er heiltala e a fj ldatala sem segir til um hva a diskadrif er a r a. drif= 0 er sj lfge diskadrif. drif=1 er diskadrif a:. drif=2 er diskadrif b: o.s.frv. Eftir: Ef drif er l glegt diskadrif fyrir vi komandi t lvu, f r safn gildi strengs sem inniheldur efnisskr rlei a v safni sem sj lfge er diskadri drif. S strengur inniheldur ekki nafn diskadrifsins.a. s sj lfge diskadrif "a:"og sj lfge safn v dri " pakkar" g kalli sj lfge safn( 1) ni urst una " pakkar"(en ekki "a: pakkar"). Ef drif er l glegt diskadrif e a ef einhver nnur villa kemur upp, f r safn gildi satt. b atilsafn Notkun: ok := b atilsafn( n ttsafn) Fyrir: n ttsafn er strengur sem inniheldur l glega efnisskr rlei fyrir DOS. D mi um l glegar lei ir v ru " pakkar", "a:pakkar", "a: pakkar"o.s.frv. D mi um l glegar lei ir v ru "a:pakkar ", "a:", "a: ", " "o.s.frv. Eftir: B i er til a safn sem ge er n ttsafn sj lfgefnu diskadri. Ef n ttsafn inniheldur diskadrifsnafn (er t.d. "a: pakkar"), er b i til uppge safn v diskadri. Eftir kalli f r ok gildi satt ef uppgen efnisskr rlei er l gleg og safni er ekki egar til vi komandi diskadri (og b i hefur veri til safni n ttsafn) en satt ef efnisskr rlei in er l gleg e a egar til vi komandi diskadri (og ekkert safn hefur veri b i til). ey asafni Notkun: ok := ey asafni( safnsemertil) Fyrir: n ttsafn er strengur sem inniheldur l glega efnisskr rlei fyrir DOS. D mi um l glegar lei ir v ru " pakkar", "a:pakkar", "a: pakkar"o.s.frv. D mi um l glegar lei ir v ru "a:pakkar ", "a:", "a: ", " "o.s.frv. Eftir: a safn sem ge er safnsemertil er fjarl gt vi komandi diskadri ef safnsemertil inniheldur nafn diskadri, annars sj lfgefnu diskadri. Eftir kalli f r ok gildi satt ef uppgen efnisskr rlei er l gleg og safni er til sta ar vi komandi diskadri (og b i er a ey a safninu n ttsafn) en satt ef efnisskr rlei in er l gleg e a er ekki til vi komandi diskadri (og ekkert hefur veri gert).

67 Athuga skal a ef einhver forrit e a s fn eru til sta ar v safni sem veri er a ey a, f r ok gildi satt og ekkert er gert, ar sem ekki er h gt a ey a safni me einhverju. erskr til Notkun: ok := erskr til( nafn) Fyrir: nafn er strengur sem inniheldur l glegt nafn skr r (me efnisskr rlei ef vill). Eftir: Ef nafn er l glegt nafn skr, s skr er til og engin villa kemur upp, f r ok gildi satt. Ef skr in er ekki til e a ef einhver villa kemur upp, f r ok gildi satt. opnaskr Notkun: handfang := opnaskr ( nafn,a gangur) Fyrir: nafn er strengur sem inniheldur l glegt nafn eirrar skr r sem opna (me efnisskr rlei ef vill). a gangur er stafur ('l', 'L', 's', 'S', 'u', 'U', 'v' e a 'V') sem segir til um fyrir hva a a gang skr in er opnu. Eftir: Ef nafn er l glegt nafn skr mi a vi a gangur, er h n opnu fyrir a gang a gangur og handfang f r gildi handfangs (fj ldatala) sem l sir essari n opnu u skr, annars f r handfang gildi satt. Handfangi er s an nota fyrir allar s ari a ger ir skr na. nafn getur hvort sem er veri nafn skr r me efnisskr rlei, er vi komandi skr opnu v safni, e a a nafn er eing ngu nafn skr, er s skr opnu sj lfgefnu safni. Les/skrif bendir er bendir sem fylgir hverri opinni skr og segir til um vi hva a sta skr nni a ger irnar lestur og/e a skrift hefjast. Ni ursta a kallsins opnaskr fer eftir v hva a a gangur er genn og hvort nafn er nafn skr sem er til e a ekki: Ef a gangur = 'l' e a 'L' er skr in nafn opnu me lestrara gangi og allar tilraunir til a skrifa skr na mistakast. Les/skrif bendir er sta settur uppha skr rinnar. Ef skr in er til og allt er lagi, f r handfang gildi handfangs sem v sar skr na. Ef skr in er ekki til, of margar skr r opnar e a einhver nnur villa kemur upp, f r handfang gildi satt og skr in hefur ekki veri opnu. Ef a gangur = 's' e a 'S' er skr in nafn opnu me skriftara gangi og allar tilraunir til a lesa r skr nni geta veri mj g varasamar. Les/skrif bendir er sta settur uppha skr rinnar. Ef skr in nafn er egar til, er henni raun eytt t og h n s an b in til aftur.e. egar skr, sem egar er til, er opnu me skriftara gangi er h n algerlega n llstillt. Ef skr in er ekki til, er h n b in til og opnu sama h tt og ur. Ef allt er lagi, f r handfang gildi handfangs sem l sir skr nni. Ef einhver villa kemur upp f r handfang gildi satt og skr in getur hvort sem er hafa veri b in til e a ekki, en a llum l kindum er ekki h gt a framkv ma neinar a ger ir hana. Kalli opnaskr ( nafn,'s') hefur n kv mlega s mu hrif og kalli b atilskr ( nafn). Ef a gangur = 'u' e a 'U' er skr in nafn opnu me uppf rslua gangi og er hvort sem er h gt a framkv ma lestur e a skrift. Les/skrif bendir er sta settur uppha skr rinnar. Ef skr in nafn er til og allt er lagi, er skr in opnu fyrir uppf rslua gang og handfang f r gildi handfangs sem l sir skr nni. Ef skr in er ekki til e a einhver nnur villa kemur upp, f r handfang gildi satt og engin skr hefur veri opnu. Skr sem ekki er til en reynt er a opna fyrir uppf rslua gang er v ekki b in til. Ef a gangur = 'v' e a 'V' er skr in nafn opnu fyrir vi b tara gang og er einungis h gt a framkv ma skriftara ger hana. Les/skrif bendir er sta settur aftast skr nni (aftan vi hennar s asta b ti). Allar skriftara ger ir aftast skr, sem opin er fyrir vi b tara gang, st kka skr na (b ta vi hana). Ef skr in nafn er ekki til, er ni ursta an n kv mlega s sama og a opna hana me skriftara gangi ('s').e. skr in er b in til og les/skrif bendir sta settur fremst henni. Ef skr in nafn er til, er