INF2100 ?velsesoppgaver uke 47 21.-25.11.2005 Oppgave 1 I forelesningen 15.11 nevnte jeg at (p? ark 16): Den mest intrikate setningen ? oversette er derfor tilordningssetningen (?assignment?): ... := ... Grunnen er at venstresiden kan v?re * en variabel med eller uten indeks * enkel variabel eller array * ordin?r variabel eller parameter * en prosedyre (men det er ulovlig og oppdaget tidligere, s? det kan vi se bort fra) Det er i alt seks lovlige muligheter som m? behandles hver for seg. N?r vi ser bort fra siste av de fire punktene, skulle det v?re 2?2?2 = 8 mulige kombinasjoner, men bare 6 av dem er lovlige. Hva er de to ulovlige? Oppgave 2 Lag et s? kort Minila-program som mulig som demonstrerer alle de seks mulige formene for venstreside nevnt i forrige oppgave. Oppgave 3 Som vist p? ark 12 i forelesningen 15.11 og i tabell 6.4 i kompendiet skal dette programmet med en array-tilordning prog var a[12]; begprog a := "Hei!"; endprog oversettes til ---I(resVar) 0: 1 cpFrom ---I(resVar) 1: 1 cpTo ---I(resVar) 2: 1 cpC ---I(resVar) 3: 1 xIN ---I(resVar) 4: 1 xINC ---I(resVar) 5: 1 xBet 2: var a[12]; 3: begprog 4: a := "Hei!"; 5: endprog ---I(Instr) 0: JMP(12) -1 0 ---I(resConst) 6: 12 ---I(resVar) 7: 12 a ---I(fillOld) 0: 1 ---I(resConst) 19: 4 ---I(resConst) 20: 72 ---I(resConst) 21: 101 ---I(resConst) 22: 105 ---I(resConst) 23: 33 ---I(Instr) 1: SETI(20) 19 0 ---I(Instr) 2: STI(2) 0 0 ---I(Instr) 3: SETI(20) 6 0 ---I(Instr) 4: STI(2) 1 0 ---I(Instr) 5: LDC(3) 1 0 ---I(Instr) 6: LDC(3) 0 1 ---I(Instr) 7: STC(4) 2 0 ---I(Instr) 8: CCI(25) 0 0 ---I(Instr) 9: JLEI(15) 25 0 ---I(Instr) 10: LDC(3) 0 0 ---I(Instr) 11: LDI(1) 0 1 ---I(Instr) 12: SUBI(6) 2 0 ---I(Instr) 13: JGEI(19) 16 0 ---I(Instr) 14: SETI(20) 0 0 ---I(Instr) 15: JMP(12) 19 0 ---I(Instr) 16: LDC(3) 0 0 ---I(Instr) 17: ADDC(26) 2 0 ---I(Instr) 18: LDI(1) 0 1 ---I(Instr) 19: LDC(3) 1 0 ---I(Instr) 20: ADDC(26) 2 0 ---I(Instr) 21: STI(2) 0 1 ---I(Instr) 22: LDC(3) 2 0 ---I(Instr) 23: INCC(23) -1 0 ---I(Instr) 24: JMP(12) 7 0 ---I(Instr) 25: STOP(0) 0 0 ?Oversett? array-tilordningen (instruksjonene 1-24) til Minila. Oppgave 4 (for spesielt interesserte) Er koden i forrige oppgave optimal, eller kan du finne kortere kodesekvenser som gir samme resultat? Hint: Minst ?n instruksjon kan fjernes.