Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in på att välja rätt uppgift. TIPS 2: Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat in en fråga. Kanske gäller det dig också (d.v.s. den uppgift du jobbar med). TIPS 3: Om ni har problem med kompilator, Emacs eller annat som INTE har med uppgifterna att göra, räck upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer " cp given_files/*. " eller liknande. Frågor om själva uppgifterna tar vi i första hand via tentasystemet. I körexemplen har vi markerat det som användaren matar in på tangentbordet med fet och kursiverad stil. Tänk på att körexemplen bara är ett exempel på när programmet körs. Testa ditt program noga och tänka över hur programmet skall fungera vid andra indata. Vi hinner normalt sett inte svara på frågor de sista 10 utminutera på tentan. Då ägnar vi all tid åt att rätta uppgifter för att alla skall hinna få svar innan ni går hem. Betygsgränser: Tid 1 poäng 13:00 (15:00) Betyg 3 3 poäng 12:00 (13:30) Betyg 4 3 poäng 10:30 (11:30) Betyg 5 4-6 poäng 12:00 (13:30) Betyg 5 Bonustid från laborationerna tillkommer till dessa tidsgränser. Tiden för betyg 3/G överstiger dock aldrig 5 timmar. OBS: Delpoäng delas inte ut på uppgifterna. För att få poäng på en uppgift måste man alltså lösa uppgiften helt (och enligt specifikation). Lycka till med tenterandet och hoppas att alla får G på minst en uppgift idag. M.v.h. /Torbjörn (examinator)
Uppgift 1 - Sär skrivning [1p] När man ofta går mellan svenska och engelska så kan det vara svårt att hålla rätt på det där med särskrivning. Många ord som vi kanske hade skrivit ihop skrivs i sär på engelska t.ex. "school bus". Skriv ett program som låter användaren mata in ett ord (max 20 tecken) och som sedan presenterar hur ordet kan särskrivas. Programmet frågar sedan om man vill köra igen. Programmet skall fortsätta tills dess att användaren i något läge skriver "nej". Programmet skall också säga till om man bara matar in en bokstav (går ej att särskriva). Man matar aldrig in 0 tecken. Mata in ett ord: schoolbus Så här kan du särskriva schoolbus: s choolbus sc hoolbus sch oolbus scho olbus schoo lbus school bus schoolb us schoolbu s Vill du köra igen (ja/nej): nje Vill du köra igen (ja/nej): Näääj Vill du köra igen (ja/nej): ja Mata in ett ord: ABB Så här kan du särskriva ABB: A BB AB B Vill du köra igen (ja/nej): nej Mata in ett ord: Q Detta ord går inte att särskriva! Vill du köra igen (ja/nej): nej KRAV: Du skall ha ett underprogram som sköter utskriften av de särskrivna orden.
Uppgift 2 - Slumpad enhet [2p] Skriv ett program där användaren får ange ett visst belopp i cm. Programmet skall sedan slumpa en enhet bland enheter (tum, fot, aln, meter, millimeter, yard, mile). Programmet skall sedan skriva ut beloppet fast i den nya enheten, samt enheten förstås. Vi avrundar alltid till närmsta heltal. Här är en tabell med vad som gäller för enheterna: 1 tum = 2,54 cm 1 fot = 30,48 cm 1 aln = 59,3808 cm 1 yard = 91,44 cm 1 meter = 100 cm 1 mile = 160934 cm Körexempel 1: Mata in en längd i cm: 38654 Detta är 423 yards. Mata in en längd i cm: 38 Detta är 380 millimeter. Körexempel 3: Mata in en längd i cm: 412 Detta är 14 fot.
Uppgift 3 - Resten vid division [1p] I matematiken finns det ett begrepp som kallas rest vid division. Om man t.ex. delar 7 med 5 så får man 2 i rest, eftersom 5 går i 7 en gång men det blir 2 över. Man kan också säga att resten är det man får när man inte kan dra bort fler nämnare från täljaren. Om vi t.ex. delar 41 med 10 så kan vi dra bort 10 tills vi bara har en 1:a kvar. Du skall nu göra en rekursiv funktion calc_rest som tar två heltalsparametrar och beräknar resten vid division. Funktionen skall returnera resten. Divisionen skall utföras genom upprepad subtraktion. Du får anta att täljaren och nämnaren alltid är större än 0. Funktionen skall också skriva ut varje steg (se körexemplen). Körexempel 1: Ange täljare och nämnare: 7 5 7 5 = 2 Resten blev 2 Ange täljare och nämnare: 41 10 41 10 = 31 31 10 = 21 21 10 = 11 11 10 = 1 Resten blev 1 Körexempel 3: Ange täljare och nämnare: 4 18 Resten blev 4
Uppgift 4 - Två lika [2p] På filen HELTAL.TXT ligger det exakt 1000 heltal separerade med vita tecken (godtyckligt antal blanksteg/tabbar/enter-tecken). Filen har inga andra tecken men kan i övrigt se ut hur som helst. Alla tal skall vara olika på filen. Det kan dock ha smugit sig in maximalt en dubblett. Du vill nu göra ett program som hittar den eventuella dubbletten. Här är ett exempel på hur början på filen kan se ut: 33 19 57 68 95 99 19 31 2 Körexempel 1 (om HELTAL.TXT har en dubblett): Dubletten var 19. Körexempel 2 (om HELTAL.TXT saknar dubbletter): Det finns inga dubbletter i HELTAL.TXT