Tölvumál - 01.03.1989, Page 11
Tölvumál Mars1989
skapi hægvirkar sem þær eru ná-
kvæmar.
Stefgildi
í Fjölni má smíða svokölluð stef-
gildi, sem gera forritara t..d kleyft
að senda stef sem viðfang til annars
stefs. Sem dæmi um notagildi þessa
möguleika er þegar forritað er stef
sem reikna skal tegur falls á tilteknu
bili. Þá má í eitt skipti fyrir öll
forrita þá aðferð sem nota skal, og
síðar beita lausninni á hin margvís-
legustu föll. Mörg forritunarmál
hafa reyndar svipaða möguleika og
Fjölnir í þessu tilliti.
Strengir
Strengir í Fjölni eru svipaðir og í
Turbo Pascal. Þeir eru að grunni til
fylki af bætum, sem vísa má í með
heiltöluvísum, og lengd textastrengs
er geymd í núllta bætinu. í forrits-
texta eru þeir skrifaðir á sama hátt
og strengir í Pascal.
Hlunkar, pör og listar
Listavinnslan í Fjölni felst í því að
breyta getur hverju sinni innihaldið
mismunandi umfangsmikil gildi, og
forritarinn þarf engar ráðstafanir að
gera til þess að úthluta minni undir
þessi gildi eða skila minnissvæðum
þegar notkun þeirra er lokið. Til
dæmis má gefa breytu sem inni-
heldur heiltölu nýtt gildi sem er
strengur. Einnig má steypa saman
mörgum gildum í eitt, sem síðan má
taka í sundur seinna eftir hentug-
leika. Algengasta aðgerðin til að
setja saman mörg gildi í eitt er að
notalista. Sem dæmi um slíkt er
eftirfarandi segð (setning):
x:=(“Fjölnir”,1.0]
í þessari segð er breytunni x gefið
gildið (“Fjölnir”,1.0]. Þetta gildi er
listi sem er samsettur úr strengnum
“Fjölnir” og fleytitölunni 1.0. í
Fjölni eru listavinnsluaðgerðir sem
gera forritaranum kleyft að setja
saman lista og taka þá í sundur.
Listavinnsluaðgerðirnar eru haus,
hali og :. Þær hafa eiginleika sem
lýst er með eftirfarandi jöfnum sem
gilda fyrir öll gildi x, y, ap...,an:
haus(;[a1,...,aj) = a:
hali(;[a1,...,aj) = [a2,...,aj
haus(;x : y) = x
hali(;x : y) = y
x : [a1,...,aj = [x,a1,...,aj
Glöggur lesandi mun sjá að með
þessum aðgerðum má smíða eins
langa lista og verða vill, og taka þá í
sundur. Þessar aðgerðir eru hrað-
virkar.
Listar þessir eru í reynd tengdir
saman með bendlum (pointer), og
eru listamir sértilfelli af hlunkum.
Hlunkar þessir eru ekkert annað en
fylki. í stað þess að vera fylki af
bætum eins og strengirnir geta þessi
fylki innihaldið hvaða gildi sem er,
þar með talið aðra hlunka. Hlunkar
eru til af mörgum stærðum, en
hlunkar með tvö sæti kallast pör.
Aðgerðin : skilar einmitt slíku pari.
Við segjum að parið x:y innihaldi x
í haus og y í hala. Hér vinnst ekki
tími til að lýsa hlunkum nánar.
Tómi listinn, [ ], er sértilfelli. Gildi
þetta er ekki par, heldur er þetta
sérstakt gildi í Fjölni sem er ólíkt
gildum af öllu öðru tagi. Gildi þetta
er reyndar einnig notað sem sann-
gildið ósatt, en öll önnur gildi hafa
sanngildið satt.
Listavinnsluaðgerðir í Fjölni eru
svipaðar aðgerðum í öðrum lista-
vinnslumálum, svo sem LISP,
PROLOG og LOGO.
■ Dæmi um forritun
Fjölnir býður upp á einingarforritun
sem er ólík einingarforritun í öllum
öðrum fomtunarmálum. í Fjölni
eru einingaraðgerðir notaðar til
að tengja saman einingar. Eftir-
farandi forrit sýnir notkun tveggja
slíkra aðgerða; ítrunar og inn-
flutnings. Fleiri einingaraðgerð-
um mun ekki verða lýst í þessari
grein, en Fjölnir hefur þrjár aðrar
einingaraðgerðir.
Athugið að þegar tvær semíkommur
koma fyrir í röð í forrili þá er
afgangurinn af línunni athugasemd.
Listavinnsluaðgerðir í
Fjölni eru svipaðar
aðgerðum í öðrum
listavinnslumálum,
svo sem LISP,
PROLOG og LOGO.
11