Ukeoppgave uken 26. august til 1. september 2008 Oppgave 1 --------- Her er det fem sm? RusC-programmer. Hvilke er korrekte i henhold til grammatikken? 1.a int x; int main () { int x; x = 1+2+3+4+5; putint(x); } 1.b int f (int a, b) { return(a+b) } int main () { putinf(f(3,4)); exit(2); } 1.c int fib (int n) { int x1, x2, x3; x1 = 1; x2 = 1; while (n > 1) { x3 = x1+x2; x1 = x2; x2 = x3; n = n - 1; } return x2; } int main () { int n, res; n = getint(); res = fib(n); putint(res); } 1.d int lowercase (int c) { if (c <= 'Z') c = c+' '; return c; } int uppercase (int c) { if (c >= 'a') c = c-' '; return c; } int main () { int c, cl, cu; c = getchar(); cl = lowercase(c); cu = uppercase(c); putchar(cl); putchar(cu); } 1.e int abs (int x) { if (x < 0) { return -x; } return x; } int main () { int v; v = getint(); v = abs(v); putint(v); } Oppgave 2 --------- Skriv et RusC-program som leser ti tall og skriver ut det st?rste. Oppgave 3 --------- Her er en Rasko-fil; hvilke instruksjoner inneholder det? Hva gj?r det? #! /local/bin/rask 211000000000002 411110000000011 1600000000009994 211000000000010 1600000000009993 211000000000001 1600000000009990 Oppgave 4 --------- Skriv programmet i forrige oppgave som Raskas-kode. Oppgave 5 --------- Skriv Raskas-instruksjoner som beregner f?lgende uttrykk (med svaret i R1): 5.a R4 + 1 5.b 2 * R6 5.c - R22 5.d (100*R24 + R25)*100 + R26 Oppgave 6 (for spesielt interesserte) --------- P? forelesningen 19.8 ble det sagt at RusC er en liten delmengde av C. Stemmer det? N?rmere bestemt: a. Finnes det lovlige RusC-programmer som ikke er lovlige C-programmer (gitt at vi tar med #include-spesifikasjonen nevnt i samme forelesning)? b. Finnes det lovlige RusC-programmer som gir et annet resultat n?r det kompileres med C-kompilatoren?