25.09.2013 Views

Size-change grafer

Size-change grafer

Size-change grafer

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Det kan dog ses at programmet vil terminere på trods af dette. Dette skyldes<br />

at additionen i tildeling 9 (b+1) ikke influerer på returværdien af programmet,<br />

idet det vi returnere 0 uanset hvad b er (idet a vil være nul). Ved næste kald<br />

bliver b derfor 0 (den er ikke blevet ændret i det foregående kald) og dermed<br />

terminerer programmet efter tildeling 2.<br />

7.1.3 Glenstrup<br />

Glenstrup eksemplerne er oprindeligt konstrueret af Arne Glenstrup [Glenstrup],<br />

men er her taget fra [Frederiksen]<br />

To programmer kræver en særlig kommentar. De er ikke hentet fra andre kilder<br />

som de øvrige, men er nogle vi har lavet selv. Der er tale om Gexgcdimp og Gexpermute2.<br />

Gexgcdimp er en iterativ version af Gexgcd. Gexpermute2 er lavet<br />

for at demonstrerer hvorledes et program kan gå galt ved forkert brug af en global<br />

variabel. Gexpermute genbruger én variabel, og som det fremgår nedenfor,<br />

bevirker det at programmet ikke terminerer. Bruger man derimod to forskellige<br />

variable, vil programmet size-<strong>change</strong> terminere. Det skal bemærkes at Gexpermute<br />

ikke har den samme funktionalitet som den oprindelige funktion, hvorfor<br />

resultaterne med [Frederiksen] for dette program ikke kan sammenlignes.<br />

Bemærkninger til suiten<br />

De programmer som terminerer her skyldes alle enten et rekursivt kald med en<br />

direkte nedgang i et af parametrene eller en while løkke med en stadigt faldende<br />

betingelse. 3 programmer i suiten size-<strong>change</strong> terminerer ikke, Gexincr, Gexspl<br />

og Gextrick.<br />

Gexspl og Gextrick Begge disse programmer har et rekursivt kald hvori der<br />

ikke er en skarp nedgang. I Gexspl er det ved tildeling 5 og i Gextrick er det<br />

sekvensen 2, 5, 6 der afstedkommer problemet. Grunden er i Gextrick at ved<br />

at dele beregningerne over to betingede sætninger mister vi sammenhængen<br />

imellem dem.<br />

Gexgcdimp Dette program blev konstrueret for at undersøge om det ville være<br />

muligt at bestemme size-<strong>change</strong> termination for gcd ved brug af en iterativ metodik<br />

istedet for den rekursive. Dette viste sig ikke at være tilfældet. Grunden<br />

skal søges i sammenhængen mellem parametre og returværdier. Under kald til<br />

hjælpeprocedurer kan vi miste sammenhængen mellem disse, f.eks. hvis vi returnerer<br />

en værdi, der ikke har nogen relation til de parametre proceduren blev<br />

kaldt med. En sådan situation er kun mulig på grund af eksistensen af globale<br />

variable.<br />

Testprogram antal simple løkker SCT? SCT? fra [Frederiksen]<br />

Jex2 2 Ja Ja<br />

Jex3 8 Ja Ja<br />

Jex4 6 Ja Ja<br />

Jex5 6 Ja Ja<br />

Jex6 4 Ja Ja<br />

Wexadd 1 Ja Ja<br />

18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!