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 19:00 (21:00) Betyg 3 3 poäng 18:00 (19:30) Betyg 4 3 poäng 16:30 (17:30) Betyg 5 4-6 poäng 18:00 (19:30) Betyg 5 Bonustid från laborationerna tillkommer till dessa tidsgränser. Tiden för betyg 3 ö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 - Mailkonversation [1p] Så här i en kurs med mycket studenter blir det lätt långa mailkonversationer. En student kanske ställer en fråga, en lärare svarar, det blir en följdfråga o.s.v. Skriv ett program som låter användaren mata in studentens ämnesrad (en textsnutt á maximalt 32 tecken). Programmet skall sedan fråga användaren (läraren) om den vill fortsätta maila. Användaren skall då svara "ja" eller "nej", om något annat skrivs in så skall programmet ställa frågan på nytt. Om svaret är "nej" skall programmet avslutas. Om svaret är "ja" så kan vi tänka oss att mailet går iväg med ett "Re: " framför ämnesraden. Studenten svarar givetvis alltid, alltså får läraren nu tillbaka ett mail med "Re: Re:" framför den ursprungliga ämnesraden och ja-/nej-frågan skall dyka upp igen. Programmet fortsätter alltså tills dess att läraren i något läge skriver "nej". Förhoppningsvis har studenten då fått ett hyfsat vettigt svar. Mata in ämnesrad: TDDD11: Hjälp! Nytt email: TDDD11: Hjälp! Vill du svara (ja/nej): ja Nytt email: Re: Re: TDDD11: Hjälp! Vill du svara (ja/nej): nje Vill du svara (ja/nej): Näääj Vill du svara (ja/nej): ja Nytt email: Re: Re: Re: Re: TDDD11: Hjälp! Vill du svara (ja/nej): nej Mata in ämnesrad: Fest hos mig, FF! Nytt email: Fest hos mig, FF! Vill du svara (ja/nej): nej KRAV: Du skall ha ett underprogram som sköter utskriften av ämnesraden.
Uppgift 2 - Bokstavsur [2p] Om man måste kommunicera med en annan människa utan ljud finns det många sätt: teckenspråk, blinka morsekod, skiva på papper. Ett sätt skulle vara att använda ett bokstavs ur. Tänk dig en rund skiva som sitter fast med en spik i mitten. På denna sätter vi alla bokstäver A-Z, mellanslag (symboliserat i bilden med ett understreck) och frågetecken. Ovanför skivan sätter vi en pil: Vi tänker oss att skivan från början är positionerad som i bilden, d.v.s. pilen pekar på 'A', och vi tänker oss att detta är position 0. För att signalera ordet "BADA" skulle vi alltså behöva vrida hjulet 1 steg moturs (vi ser detta som positiv riktning) för att komma till 'B', sedan 1 steg medurs (negativ riktning) för att komma tillbaka till 'A', sedan tre steg moturs (för att komma till 'D') och sedan tre steg medurs igen för att komma tillbaka till 'A'. Sekvensen för ordet "BADA" blir alltså +1-1 +3-3. Y X W V U T S Z R Q _ P? O A B C D E F G L K J N M H I Skriv ett program som läser in en sådan sekvens och översätter det till ett meddelande. Användaren skriver först in hur långt meddelandet är (kan vara godtyckligt långt). Tänk på att hjulet går att snurra flera varv, så heltalen är inte begränsade. Värdet +28 innebär alltså att man snurrar ett helt varv och kommer tillbaka till bokstaven man var på. +29 blir samma sak som +1, o.s.v. Mata in sekvensens längd: 4 Mata in sekvensen: +1 1 +3 3 Meddelandet var "BADA". Mata in sekvensens längd: 5 Mata in sekvensen: +7 3 +7 0 3 Meddelandet var "HELLO". Körexempel 3: Mata in sekvensens längd: 13 Mata in sekvensen: 13 11 13 4 5 3 28 11 2 4 15 +7 +13 Meddelandet var "PERNILLA WHO?" Körexempel 4: Mata in sekvensens längd: 1 Mata in sekvensen: 10000 Meddelandet var "E". TIPS: Använd ett fält för att representera hjulet.
Uppgift 3 - Excell [2p] I programmet excell har man alltid en stor tabell med (i princip) obegränsat antal rader och kolumner. Raderna är numrerade från 1 och uppåt, men kolumnerna har lite speciell numrering. De börjar på 'A' och går sedan hela vägen till 'Z'. Efter detta så början man med "AA", "AB", "AC", o.s.v. Efter ett tag får man slut på sådana kombinationer också, då blir det: "AAA", "AAB", "AAC" o.s.v. Skriv ett program där användaren får mata in kolumnnummret och som sedan skriver ut motsvarande symbol som den hade sett ut i excell. Ingen felhantering krävs. Din lösning skall vara rekursiv. Mata in ett kolumnnummer: 4 I Excell är detta kolumn D. Mata in ett kolumnnummer: 26 I Excell är detta kolumn Z. Körexempel 3: Mata in ett kolumnnummer: 27 I Excell är detta kolumn AA. Körexempel 4: Mata in ett kolumnnummer: 28 I Excell är detta kolumn AB. Körexempel 5: Mata in ett kolumnnummer: 1024 I Excell är detta kolumn AMJ.
Uppgift 4 - Betygsystem [1p] På filen BETYG.TXT ligger specifikationen för betyg på en datortenta. Filen har följande format: Uppgift 1: 1p Uppgift 2: 2p Uppgift 3: 2p Uppgift 4: 1p Skriv ett program som tar reda på vilket betyg en student får. Användaren matar in vilka uppgifter som har löst, och när dessa skickades in. Programmet skall ta reda på betyget m.h.a. filens innehåll och de antaganden vi gör nedan. Programmet skall fortsätta tills man avslutar det med ctrl-c. I den här uppgiften gör vi följande antaganden: - Tentan börjar kl 8:00. - Vi räknar inte med bonustid från laborationer. - Du kan anta (i den här uppgifter) att det alltid är fyra uppgifter på en tenta. - Tidsgränserna för betyg är som på denna tenta, fast från kl 8:00 d.v.s.: 1 poäng 13:00 Betyg 3 3 poäng 12:00 Betyg 4 3 poäng 10:30 Betyg 5 4-6 poäng 12:00 Betyg 5 Körexempel: Mata in vilken uppgift som löstes: 1 Mata in när uppgift 1 (värd 1p) skickades in: 10.23 Tentanden har nu betyg 3. Mata in vilken uppgift som löstes: 3 Mata in när uppgift 3 (värd 2p) skickades in: 11.48 Tentanden har nu betyg 4. Mata in vilken uppgift som löstes: ctrl c