logo
Sett 6
Algoritmer og datastrukturer
IT, Høgskolen i Østfold
AlgDat 12 > Oppgaver > Sett 6

Oppgavesett 6 - Syntaxsjekking og mystikk

Oppgavene blir tema på øvingen fredag 2. mars. Innleveringen skal bestå av en pdf-fil med korte kommentarer og dokumentasjon (utskrifter etc.). Legg også ved godt dokumenterte java filer. Alt pakkes i en zipfil, med navn assignment06-*.zip der * er etternavnene til gruppemedlemmene. Javafilene skal tilhøre en pakke med navn package assignment06.

Fristen for innlevering er tirsdag 6.mars 09:00.

Oppgave 1

En viktig syntaxregel for Java programmer er at klammer og parenteser må være komplette, dvs. at for et starttegn, f.eks. "{", må det også finnes et etterfølgende slutttegn, i dette eksempelet "}". Vi kan da si at javaprogrammet er velformet med hensyn på parenteser og klammer.

A

Angi med pseudokode hvordan vi kan lage et program som sjekker om et javaprogram, gitt som en streng, er velformet eller ikke.

B

Implementer en syntaxsjekker som gjør det som er beskrevet i forrige oppgave, med signaturen skal være public boolean javaSyntax (String program). Følgende tegnpar skal sjekkes: "()", "{}", "[]", "<>". Sjekk også om kommentarer av type "/* Kommentarer... */" er velformede. Dokumenter at den virker ved å kjøre metoden på seg selv :-), og også at den virker på et program med syntaxfeil.

Oppgave 2

publiv void mystery(double x1, double x2, double y, double h, int t, int level, int max) { if (level > max) return; line(x1, y, x1, y+h); line(x2, y, x2, y+h); double d = (x2-x1)/t; double x = x1; for (int i = 0; i < t; i++) { mystery(x, x+d, y, h/2, t, level+1, max); x += d; } }

Metoden line(double x1, double y1, double x2, double y2) tegner en linje på skjermen, fra koordinaten (x1, y1) til (x2, y2).

A

Forklar hva metoden gjør, og tegn resultet av følgende kall: mystery(100, 1100, 100, 200, 10, 1, 3). Ved repeterende mønster holder det med å antyde hva som skjer, og ikke tegne alle linjene.

*B

Verifiser svaret på forrige oppgave ved å implementere metoden, kjøre eksempelet og legge ved resultatet!

Gunnar Misund, 13.jun.2012