Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap BOKMÅL AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Mandag 19. desember, 9.00 13.00 Faglig kontakt under eksamen: Per Holager, tlf 996 17 836 Jørn Amundsen, tlf 918 97 897 Hjelpemidler (C): Tilleggshefte I, Introduksjon til HTML, CSS, JSP og MYSQL (alle utgaver) Tilleggshefte II, introduksjon til: MATLAB (alle utgaver) Typegodkjent kalkulator HP30S. Sensurdato: 19. januar 2006. Resultater gjøres kjent på http://studweb.ntnu.no og sensurtelefon 81548014. Oppgavesettet inneholder 5 oppgaver. Det er angitt i prosent hvor mye hver oppgave og hver deloppgave teller ved sensur. Les igjennom hele oppgavesettet før du begynner å lage løsning. Disponer tiden godt! Gjør rimelige antagelser der du mener oppgaveteksten er ufullstendig, skriv kort hva du antar. Svar kort og klart, og skriv tydelig. Er svaret uklart eller lenger enn nødvendig trekker dette ned. Lykke til!
Oppgave 1 Flervalgsoppgaver (20 %) Bruk det svararket på side 12 for å svare på denne oppgaven. Du kan få nytt ark av eksamensvaktene dersom du trenger dette. Kun ett svar er helt riktig. For hvert spørmål gir korrekt avkryssing 1 poeng. Feil avkryssing eller mer enn ett kryss gir 1 2 poeng. Blankt svar gir 0 poeng. Du får ikke mindre enn 0 poeng totalt på denne oppgaven. 1. Hvilken av de følgende er en lovlig IP-addresse? a) 216.239.241.258 b) 9.9.9.9 c) 129.24.1.104.77 2. Hva er hovedoppgaven til en navnetjener? a) Oversetter IP-adresser til domenenavn b) Oversetter domenenavn til IP-addresser c) Holder rede på variabelnavn når et program kjører 3. I det binære tallsystemet, hva er summen av 1101 og 1011? a) 1111 b) 10010 c) 11000 4. Hvilken av de følgende finner man IKKE i maskinvaren i en vanlig datamaskin? a) Adressebuss b) DNS-lager c) ALU 5. Gitt ei liste av tall, f.eks. 95,23,60,48,89,76,45. Her er medianen 60, dvs. halvparten av de øvrige tallene er mindre enn medianen, halvparten er større. For å finne medianen bruker man enklest a) Aggregering b) Binærsøk c) Sortering 6. En bit av et program består av ei for-løkke inne i ei for-løkke. Begge løkkene løper igjennom tallverdiene 1:N. Tidsforbruket til denne programbiten vil være proporsjonalt med - a) N b) N log N c) N 2 Side 2 av 12
7. Hva er forskjellen på data og informasjon i følge læreboka? a) Data og informasjon er det samme b) Data er en kvantifiserbar opplysning mens informasjon inkluderer tolkning c) Data er en kvantifiserbar opplysning mens informasjon beskriver andre data 8. Hva kjennetegner innebygde datamaskiner (embedded systems)? a) Datamaskiner som befinner seg inne i produkter med et annet hovedformål enn databehandlinger b) Små generelle datamaskiner som lett kan integreres i et kontorlandskap c) Store og kraftige datamaskiner som mange kan jobbe opp mot og som må stå i egne rom 9. Hva kjennetegner programvare av typen skreddersøm? a) Skreddersøm er programvare som kan direkte brukes av mange, men kan også tilpasses hver enkelt kunde b) Skreddersøm er masseprodusert programvare som kan kjøpes ferdiglaget i forretning eller fra leverandør c) Skreddersøm er programvare laget for en bestemt kunde 10. Hvilke av disse alternativene beskriver IKKE viktige oppgaver til kjernen i et operativsystem i følge læreboka? a) Administrere minne og tildeling av prosessortid b) Tilby et grafisk og et tekstlig grensesnitt til maskinen c) Styring av eksterne enheter og filhåndtering 11. Hvilke to akser bruker boka til å klassifisere samarbeidsteknologi? a) Opprinnelse og endring b) Tid og sted c) Tid og endring 12. Hva krever et synkront samarbeidssystem av brukerne? a) Brukerne kan logge seg på når som helst b) Brukerne må sitte på forskjellige steder c) Brukerne må være pålogget samtidig 13. Peder har laget et genialt program i arbeidstiden hos firmaet SmartThink. Nå har han tenkt å slutte i bedriften og lage et egen firma basert på dette programmet. Peder har ikke skrevet noe avtale med firmaet om slike ting. Hvem eier programmet når Peder slutter, i følge loven? a) Peder b) SmartThink c) Både Peder og SmartThink Side 3 av 12
14. Matilde har klart å knekke passordet til en database med personalinformasjon på IDI etter flere forsøk, men får kalde føtter og bestemmer seg for ikke å hente ut eller se på noe fra databasen. Har Matilde gjort noe ulovlig i følge loven? a) Nei b) Ja c) Loven sier ikke noe om dette 15. Hva er forskjellen på fasene kravspesifikasjon og design i systemutvikling? a) Kravspesifikasjon beskriver HVA systemet skal gjøre, mens designet forklarer HVORDAN b) Kravspesifikasjon beskriver HVORDAN systemet skal lages, mens designet beskriver HVA som skal lages c) Kravspesifikasjon beskriver HVORDAN systemet skal lages på et overordnet nivå, mens designet beskriver detaljene 16. Hva er svart-boks testing? a) Testing som innebærer at man tar i betraktning systemets eller modulens indre oppbygning b) Testing som innbærer at man ikke ser på systemets eller modulens indre oppbygning c) Testing hvor man ser hvordan de ulike delene i et system fungerer sammen 17. Hvor mange bit du trenger til å kode et symbol i alfabetet Ω = {A, B, C, D, E, F, G, H, I, J} ved enkel koding hvor alle symbolene er representert med samme antall bit. a) 3 bits b) 4 bits c) 10 bits 18. Hva er informasjonsmengden (entropien) til og hvor mange bits er optimalt for å kode symbolet C i alfabetet Ω = {A, B, C, D, E, F, G, H, I, J} for en melding på 100 symboler der fordelingen av symboler er som vist i Tabell 1. a) 3.059 og 3 bits b) 4.262 og 4 bits c) 2,789 og 3 bits Symbol A B C D E F G H I J Antall 50 23 12 5 3 2 2 1 1 1 Tabell 1: Fordeling av symboler i en melding på 100 symboler Side 4 av 12
19. MatLab har IKKE - a) statiske variabler b) variable av tabell-type c) så lenge -setninger 20. Betingelsen (a>1 & b>2) (c==3 & b>2) er ekvivalent med a) b>2 & (c==3 a<=1) b) (a>1 & c==3) b>2 c) b>2 & (a>1 c==3) Oppgave 2 Grunnleggende programmering (20 %) Deloppgavene skal besvares uten å bruke innebygde funksjoner sum, max og min. a) (4 %) Lag en funksjon sum2 som tar inn to like store en-dimensjonale tabeller A og B av heltall. Funksjonen skal inneholde ei løkke som gjør elementvis sum av A og B og returnerer svaret i en tabell C. b) (4 %) Hva blir skrevet ut til skjermen når disse programsetningene kjøres? z = 0; for x = 1:5 for y = x:10 z = z + 1; end end disp(z); c) (4 %) Lag en funksjon randsum som summerer alle elementene i de ytterste radene og kolonnene i en tabell med m rader og n kolonner. 1 1 n m Figur 1: Randen til en tabell med m rader og n kolonner Side 5 av 12
d) (4 %) Gitt følgende funksjon for å finne indeksen til det største heltallet i en en-dimensjonal tabell function svar = hoyeste(tabell) end x = 0; y = 0; for i = 1:length(tabell) if tabell(i) >= x x = tabell(i); y = i; end end svar = y; Gi et eksempel på en tabell hvor denne funksjonen returnerer feil svar. e) (4 %) Skriv en funksjon tippekupong som returnerer 12 tilfeldige tippetegn H, U eller B i en tabell. Du kan bruke ceil(3*rand) for å lage ett tilfeldig heltall x {1, 2, 3}. Her er programsetninger som kaller funksjonen og skriver ut resultatet: tabell = tippekupong(); for i = 1:length(tabell) disp([num2str(i). tabell(i)]); end Oppgave 3 HTML (5 %) Under er det gitt en fil med html-kode med et tilhørende stilark (stylesheet). Denne koden skal kompletteres slik at en visning av koden blir identisk med Figur 2. Innholdet i skjemaet skal sendes til filen behandle.jsp som ligger i den samme katalogen som html-filen. Ikke skriv på oppgavesettet. Skriv ned kun det som mangler i koden, fra og med punkt 1 til og med punkt 5. Du trenger med andre ord ikke skrive av all koden. Vi gjør oppmerksom på at siden har lyseblå bakgrunn (med fargeutskrift). Teksten er som normalt sort og lenken har normal blåfarge. Websiden bruker følgende css-fil minstil.css: body{background:lightblue} th{vertical-align:top; text-align:left}.uthevet{font-size:20; font-weight:bold} Side 6 av 12
Figur 2: Visning av webside i nettleser Her er html-koden for siden: <html> <head> <title>skuespillere</title> fyll inn punkt 1 her </head> <body> <h1>skuespillere og rollefigurer</h1> <table border="1"> <tr> fyll inn punkt 2 her </tr> <tr> <td>fornavn</td> <td>etternavn</td> </tr> <tr> <td>arnold</td> <td>schwarzenegger</td> <td>terminator</td> </tr> <tr> <td>keanu</td> <td>reves</td> <td>neo</td> </tr> <tr> <td>mickey</td> <td>rourke</td> fyll inn punkt 3 her </tr> </table> Marv</td> Du kan lese mer om skuespillere og filmer på http://www.imdb.com: fyll inn punkt 4 her <b>skuespillersøk</b><br /> Skriv inn navn: fyll inn punkt 5 her </body> </html> Side 7 av 12
Oppgave 4 Databaser og SQL (15 %) Modellering (10 %) Kalle V. G. Tar skal starte en butikk og du skal hjelpe ham med å lage en database over varene i butikken. Butikken skal selge flere forskjellige slags varer som leveres fra flere forskjellige leverandører. Vi antar at hver enkelt leverandør har hver sine unike varenummer slik at en vare (et varenummer) bare leveres fra en leverandør. Alle varene har et slikt varenummer (et positivt heltall), et varenavn, en tekstlig beskrivelse, en kategori og selvfølgelig en leverandør. Til hver kategori er det også knyttet en kort beskrivelse. Alle leverandørene har et navn, et telefonnummer og en kontaktperson som også må inn i databasen. a) (4 %) Lag en oversikt over tabellene som trengs, slik de vil være i databasen. Du må få med alle nødvendige felt, slik at butikkens behov dekkes, alle relasjonene mellom tabellene og alle fremmednøklene. Gjengi fremmednøklene eksplisitt. Eksempel: Bruk følgende notasjon Poststed (postnummer, poststed) Person (id, fornavn, etternavn, gateadresse, postnummer) Fremmednøkkel: postnummer Poststed og Person er tabellnavn, postnummer og id er primærnøkler, poststed i Poststedtabellen, fornavn, etternavn og gateadresse er vanlige attributter og postnummer i Persontabellen er en fremmednøkkel. Merk at eksemplet IKKE har noe med oppgaven å gjøre! b) (3 %) Lag SQL-spørringer for å opprette alle tabellene du har laget i forrige deloppgave. Husk å angi alle nødvendige egenskaper for tabellene. c) (3 %) Skriv SQL-spørringer for å sette inn følgende data: 1. Kategorien Grønnsaker med beskrivelsen Ting du bør spise for å holde deg frisk. 2. Varen Gulrøtter fra kategorien Grønnsaker med varenummer 1001, beskrivelsen Med norske gulrøtter får du garantert bedre nattsyn levert av leverandøren Sunn&Rask. 3. Leverandøren Sunn&Rask med telefonnummeret 50 60 70 80 og kontakten Kari Ahnin. Anta at tabellene er tomme før du setter inn dine rader. Side 8 av 12
Spørringer (5%) Gitt tabeller som vist i Figur 3. Her er Nyhet relatert til Journalist via fremmednøkkelen journalistid, til Sted via fremmednøkkelen stedsid og til Tema via fremmednøkkelen temaid. Sted er igjen relatert til Fylke via fremmednøkkelen fylkeid. Nyhet (id, tid, dato,tittel, tekst, bilde, jornalistid, stedsid, temaid) journalist steds tema id tid dato tittel tekst bilde id id id 1 13:54 12.12.2004 Ufo sett i Løten Cowboy Laila så sent lørdag mo... ufo.jpg 1 1 1 2 01:31 02.01.2005 Supermann på Plata Supermann ble onsdag observer... smann.gif 2 2 2 3 11:15 01.05.2004 Stortap for RBK Hamkam vant hele 6-1 mot et ta... mål.tif 1 3 3 4 23:14 09.11.2005 Kanarifugl la egget En kanarifugl la det store egget... egg.png 2 4 4 Journalist (id, fornavn, etternavn, telefon, epost) id fornavn etternavn telefon epost 1 Clark Kent 66776677 superman@no.net 2 Peter Parker 92424053 spiderman@no.net Sted (id, navn, fylkeid) id navn fylkeid 1 Løten 1 2 Oslo 2 3 Trondheim 3 4 Lillestrøm 4 Fylke (id, navn) id navn 1 Hedmark 2 Oslo 3 Sør-Trøndelag 4 Akershus Tema (id, navn) id navn 1 Ufo 2 Superhelter 3 Sport 4 Humor Figur 3: Tabeller for nyhet, journalist, sted, fylke og tema Skriv SQL-spørringer for å hente ut følgende opplysninger fra disse tabellene: d) (1 %) Hent alle nyheter, ta med tittel, tekst samt stedsnavn, sorter på stedsnavnet e) (1 %) Hent ut fornavnet og etternavnet til alle journalistene som har skrevet om temaet sport, sorter på etternavnet til journalistene f) (1 %) Hent ut tittel, tid og dato for alle nyhetene fra stedet Løten, sorter på dato og tid g) (1 %) Hent ut tittelen til alle nyhetene skrevet av Peter Parker om temaet superhelter, sorter på fylkesnavnet h) (1 %) Hent ut alle temaene som har forekommet i forbindelse med Akershus fylke Side 9 av 12
Oppgave 5 Matlab (40 %) a) (10 %) På en byggeplass trenger vi et skript for å registrere par av (varenr,antall) som mottas. Følgende spesifikasjon er gitt: 1. Utenfor skriptet har vi definert tabellen varenavn som inneholder en rad på 12 tegn for hvert varenr med en tekstlig beskrivelse av varen, en linje for hvert varenummer. 2. Gyldig område for varenr er 10 99. 3. Inntasting av ulovlige varenr feilmeldes og ignoreres. 4. Lovlig innlest varenr følges av spørsmål etter antall varer 5. Inntasting av varenr 0 avslutter registeringen og skriver ut mengde varer mottatt for hvert varenr, summert i tabellen beholdning 6. Bare skriv ut for varenumre hvor beholdningen er større enn 0. Eksempel på innlesing av varer med inntastinger understreket >> varer varenr 11 antall 2 varenr 54 antall 12 varenr 0 Skriv et skript som registrerer varer som angitt og skriver ut en pent formatert varebeholdning med overskrift varenr varenavn antall, samt en linje med varenr, varenavn(i,:) og beholdning(i) for hver varetype i hvor det fins varer i varebeholdningen. Eksempel på utskrift av varebeholdning varenr varenavn antall 11 plank 48x48 2 54 spiker 3x75 12 >> Side 10 av 12
b) (15 %) Cosinus-funksjonen kan regnes ut ved ei Taylor-rekke etter formelen cos(x) = n i=0 ( 1) i x2i (2i)! + R n+1 = 1 x2 2 + x4 24 x6 720 + + R n+1. (1) Her er (2i)! = 1 2 3... (2i). Skriv ei løkke som beregner cos(x) fra (1). Summer ledd inntil absoluttverdien av siste ledd var mindre enn den innebygde variabelen eps ( 2.22 10 16 ). Du bør uttrykke hvert nye ledd i summen ved hjelp av det forrige. 1 0.5 0 0.5 3 2 1 1 2π π 0 π 2π 3π 4π 5π 6π Figur 4: cos(x) for x = [ 2π, 6π]. Figuren viser et eksempel på reduksjon av argumentet x = 18 før beregning i ei Taylor-rekke. c) (15 %) Formelen (1) fungerer best når x er i nærheten av 0. Vi kan redusere intervallet for x fra x = (, ) til x = [0, π 2 ) ved å utnytte symmetrier i cos(x). Dette kan helt konkret gjøres i 3 steg, ved å bruke addisjonssetningene (2) - (4): (, ) [0, 2π) [0, π) [0, π 2 ), Som et eksempel kan vi se på reduksjon av x = 18 5.73π i figur 4: x = x 4π 1.73π, bruker (2) x = x π cos(x 2π) = cos(x) (2) cos(x π) = cos(x) (3) cos(π x) = cos(x) (4) 0.73π, bruker (3), må skifte fortegn på funksjonsverdien x = π x 0.27π, bruker (4), må skifte fortegn på funksjonsverdien. Skriv programsetningene som utfører denne reduksjonen. Side 11 av 12
TDT 4105 Studentnummer: Dato: Side: / Oppgave a b c 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 Tabell 2: Svarark for flersvarsoppgave Side 12 av 12