LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Mandag 19. desember, 9.00 13.00



Like dokumenter
AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Mandag 19. desember,

LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4110, TDT 4115 og IT1102 Informasjonsteknologi, grunnkurs Mandag 19. desember,

AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs En vakker dag i August 2007,

Avsluttende eksamen i TDT4110 Informasjonsteknologi, grunnkurs En vakker dag i august :00 13:00

AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Tirsdag 19. desember 2006,

LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs En vakker dag i August 2007,

AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Torsdag 6. desember 2007,

Løsningsforslag: Avsluttende eksamen i TDT4110 Informasjonsteknologi, grunnkurs Torsdag 6. desember :00 13:00

LØSNINGSFORSLAG KONTINUASJONSEKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Tirsdag 8. august,

LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Torsdag 6. desember 2007,

LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Tirsdag 19. desember 2006,

KONTINUASJONSEKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Tirsdag 8. august,

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Kontinuasjonseksamen i TDT4110 Informasjonsteknologi, grunnkurs ONSDAG 10. august

KONTINUASJONSEKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs 15. August 2008,

LØSNINGSFORSLAG Kontinuasjonseksamen i TDT4110 Informasjonsteknologi, grunnkurs Onsdag 10. august

Løsningsskisse til kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs Onsdag 10. august

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs XXXdag XX. august

HØGSKOLEN I SØR-TRØNDELAG

Løsningsskisse til kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs Onsdag 10. august

Eksamen i Internetteknologi Fagkode: IVA1379

LØSNINGSFORSLAG KONTINUASJONSEKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs 15. August 2008,

UNIVERSITETET I OSLO

Eksamen i IBE102 Webutvikling Våren 2017.

UNIVERSITETET I OSLO

TDT4105 IT Grunnkurs Høst 2016

Avsluttende eksamen i TDT4110 og TDT4115 Informasjonsteknologi, grunnkurs 8. august :00 13:00

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

ALGORITMER OG DATASTRUKTURER

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

EKSAMEN 6102 / 6102N DATABASER

Web-programmering med JSP Løsningsforslag leksjon 3

UNIVERSITETET I OSLO

Avsluttende eksamen i TDT4110 Informasjonsteknologi, grunnkurs Mandag 8. desember :00 13:00

Løsningsforslag: Avsluttende eksamen i TDT4110/IT1102 Informasjonsteknologi, grunnkurs Tirsdag 10. august :00 13:00

Oppgaver Oppgave a: Sett opp mulige relasjoner

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

UNIVERSITETET I OSLO

Eksamen i Internetteknologi Fagkode: ITE1526

Avsluttende eksamen i TDT4110/IT1102 Informasjonsteknologi, grunnkurs Snorsdag x. august :00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 IT Grunnkurs Høst 2016

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Løsningsforslag til kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs Mandag 13. august

ITGK - H2010, Matlab. Repetisjon

ALGORITMER OG DATASTRUKTURER

Øvingsforelesning i Matlab (TDT4105)

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

EKSAMENSOPPGAVE I TDT4110

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Mandag 8. desember 2008,

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

UNIVERSITETET I OSLO

1. Innføring i bruk av MySQL Query Browser

LØSNINGSFORSLAG AVSLUTTENDE EKSAMEN TDT 4105 Informasjonsteknologi, grunnkurs Mandag 8. desember 2008,

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Avsluttende eksamen i TDT4110/IT1102 Informasjonsteknologi, grunnkurs Tirsdag 21. desember

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

Eksamen i Internetteknologi Fagkode: ITE1526

Norsk informatikkolympiade runde

Avsluttende kontinuitetseksamen i TDT4110 Informasjonsteknologi, grunnkurs En vakker dag i august :00 13:00

En lett innføring i foreninger (JOINs) i SQL

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

TDT4110 IT Grunnkurs Høst 2016

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

HØGSKOLEN I SØR-TRØNDELAG

TDT4110 IT Grunnkurs Høst 2014

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

TDT4110 IT Grunnkurs Høst 2015

1. SQL datadefinisjon og manipulering

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

HØGSKOLEN I SØR-TRØNDELAG

Databaser kort intro. Tom Heine Nätt

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Her er eksamenssett fra Vår '09. Av Robin Sværen og Simen Arvesen.

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

HØGSKOLEN I SØR-TRØNDELAG

Oppgave 1 Flervalgsoppgaver (25%)

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

ALGORITMER OG DATASTRUKTURER

Norsk informatikkolympiade runde

Tilkobling og Triggere

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

HØGSKOLEN I SØR-TRØNDELAG

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Transkript:

Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap BOKMÅL LØSNINGSFORSLAG 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 ufullstig, skriv kort hva du antar. Svar kort og klart, og skriv tydelig. Er svaret uklart eller lenger enn nødvig trekker dette ned. Lykke til!

Oppgave 1 Flervalgsoppgaver (20 %) Bruk det svararket på side 15 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ølge 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ølge 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 15

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 ring b) Tid og sted c) Tid og ring 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å logge seg på 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 15

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 15

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) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 b b c b c c b a c b b c b b a b b a a c Oppgave 2 Grunnlegge programmering (20 %) Deloppgavene skal besvares uten å bruke innebygde funksjoner sum, max og min. a) (4 %) Lag en funksjon sum2 som tar inn to en-dimensjonale tabeller A og B av heltall. Returner en tabell C som er elementvis sum av A og B. function C = sum2(a,b) n = length(a); C = zeros(1,n); % ikke nødvig, kun optimalisering for i = 1:n C(i) = A(i) + B(i); b) (4 %) Hva blir skrevet ut til skjermen når disse programsetningene kjøres? 10 + 9 + 8 + 7 + 6 = 40 z = 0; for x = 1:5 for y = x:10 z = z + 1; disp(z); Side 5 av 15

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 % Mange muligheter, men trekk hvis samme element adderes inn to ganger function svar = randsum(tabell) [m n] = size(tabell); svar = 0; for i = 1:m svar = svar + tabell(i,1) + tabell(i,n); for j = 2:n-1 svar = svar + tabell(1,j) + tabell(m,j); d) (4 %) Gitt følge funksjon for å finne indeksen til det største heltallet i en tabell function svar = hoyeste(tabell) x = 0; y = 0; for i = 1:length(tabell) if tabell(i) >= x x = tabell(i); y = i; svar = y; Gi et eksempel på en tabell hvor denne funksjonen returnerer feil svar. En tabell av negative tall gir svar 0. Side 6 av 15

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)]); % Forventet løsning function tabell = tippekupong() for i = 1:12 tegn = ceil(3*rand)); if tegn == 1 tabell(i) = H ; elseif tegn == 2 tabell(i) = U ; else tabell(i) = B ; % Korteste løsning function tabell = tippekupong() hub = HUB ; for i = 1:12 tabell(i) =... hub(ceil(3*rand)); Oppgave 3 HTML (5 %) Under er det gitt en fil med html-kode med et tilhøre stilark (stylesheet). Denne koden skal kompletteres slik at en visning av koden blir identisk med Figur 2. Innholdet i skjemaet skal ses 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ølge css-fil minstil.css: body{background:lightblue} th{vertical-align:top; text-align:left}.uthevet{font-size:20; font-weight:bold} Side 7 av 15

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>roucke</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 8 av 15

1. <link rel="stylesheet" type="text/css" href="minstil.css" /> 2. <th colspan="2">"skuespiller"</th><th rowspan="2">rollefigur</th> 3. <td class="uthevet"> Inline styles eller font også mulig, selv om class bør benyttes her. 4. Trykk <a href="http://www.imdb.com">her</a> <br /> Bør få noe kreditt selv om lenken er feil. 5. <form action="behandle.jsp" method="post"> <input type="text" name="navn" /> <br /> <input type="submit" value="søk" /> </form> Kommentarer til løsningsforslaget: Kan bruke noe annet som name. Kan også bruke method="get" Svar som ikke er konforme med XHTML 1.0 Strict DTD godtas også. 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ødvige felt, slik at butikkens behov dekkes, alle relasjonene mellom tabellene og alle fremmednøklene. Gjengi fremmednøklene eksplisitt. Eksempel: Bruk følge 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! Side 9 av 15

Vare(varenummer, varenavn, beskrivelse, kategoriid, leverandørid) Kategori(id, kategorinavn, beskrivelse) Leverandør(id, leverandørnavn, telefonnummer, kontaktperson) Fremmednøkkel: kategoriid, leverandørid Hvis kontaktperson flyttes inn i egen tabell er det ok muligens a bedre. b) (3 %) Lag SQL-spørringer for å opprette alle tabellene du har laget i forrige deloppgave. Husk å angi alle nødvige egenskaper for tabellene. create table Vare ( varenummer int NOT NULL PRIMARY KEY, varenavn varchar(255), beskrivelse text, kategoriid int, leverandørid int); create table Kategori ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, kategorinavn varchar(255), beskrivelse text); create table Leverandør ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, leverandørnavn varchar(255), telefonnummer int, kontaktperson varchar(255)); Andre felttyper (f.eks. varchar vs text) kan også benyttes. c) (3 %) Skriv SQL-spørringer for å sette inn følge 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. Spørringene er avhengige av hvordan tabellene ble opprettet i forrige deloppgave. insert into Kategori values (0, Grønnsaker, Ting du bør spise for å holde deg frisk ); insert into Vare values (1001, Gulrøtter, Med norske gulrøtter får du garantert bedre nattsyn, 1, 1); insert into Leverandør values (0, Sunn&Rask, 50607080, Kari Ahnin ); Side 10 av 15

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 2 1 2 01:31 02.01.2005 Supermann på Plata Supermann ble onsdag observer... smann.gif 2 1 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, 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 Lillestrøm 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ølge opplysninger fra disse tabellene: d) (1 %) Hent alle nyheter, ta med tittel, tekst samt stedsnavn, sorter på stedsnavnet select tittel, tekst, Sted.navn from Nyhet, Sted where Nyhet.stedsid = Sted.id order by Sted.navn; e) (1 %) Hent ut fornavnet og etternavnet til alle journalistene som har skrevet om temaet sport, sorter på etternavnet til journalistene select fornavn, etternavn from Journalist, Nyhet, Tema where Tema.navn = Sport and Nyhet.temaid = Tema.id and Nyhet.journalistid = Journalist.id order by etternavn; Her kan select distinct gjerne brukes. Side 11 av 15

f) (1 %) Hent ut tittel, tid og dato for alle nyhetene fra stedet Løten, sorter på dato og tid select tittel, tid, dato from Nyhet, Sted where Nyhet.stedsid = Sted.id and Sted.navn = Løten order by dato, tid; g) (1 %) Hent ut tittelen til alle nyhetene skrevet av Peter Parker om temaet superhelter, sorter på fylkesnavnet select tittel from Nyhet, Journalist, Tema, Sted, Fylke where fornavn = Peter and etternavn = Parker and journalist = Journalist.id and Tema.navn = Superhelter and Nyhet.stedsid = Sted.id and Sted.fylkeid = Fylke.id and Nyhet.temaid = Tema.id order by Fylke.navn; h) (1 %) Hent ut alle temaene som har forekommet i forbindelse med Akershus fylke select Tema.navn from Nyhet, Sted, Fylke, Tema where Fylke.navn = Akershus and Sted.fylkeid = Fylke.id and Nyhet.stedsid = Sted.id and Nyhet.temaid = Tema.id; Her kan også select distinct gjerne brukes. Oppgave 5 Matlab (40 %) a) (10 %) På en byggeplass trenger vi et skript for å registrere par av (varenr,antall) som mottas. Følge 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. Side 12 av 15

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 >> beholdning = zeros(1,100); % ikke nødvig for godkjent løsning % innfylling av noen verdier til eksempelet i teksten, IKKE nødvig clear varenavn varenavn(11,:) = plank 48x48 ; varenavn(54,:) = spiker 3x75 ; varenr = input( varenr ); while varenr ~= 0 if varenr < 10 varenr > 99 disp([ Ignorerer ulovlig varenummer: num2str(varenr)]); else antall = input( antall ); beholdning(varenr) = beholdning(varenr) + antall; varenr = input( varenr ); disp( varenr varenavn antall ); for i = 10:99 if beholdning(i) > 0 disp([num2str(i) varenavn(i,:) num2str(beholdning(i))]); Side 13 av 15

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. Foretrukket implementasjon, med neste ledd som en funksjon av det forrige: s = 1; ledd = 1; cos = ledd; i = 0; while ledd > eps s = -s; ledd = ledd * xˆ2 / ((2*i+1)*(2*i+2)); cos = cos + s*ledd; i = i + 1; Kan øke i i begynnelsen av løkka, men må da dividere med (2*i-1)*(2*i). Godkjenner også implementasjon med fullt utregnet ledd vha prod eller factorial, men dette gir trekk. s = 1; ledd = 1; cos = 1; i = 0; while ledd > eps s = -s; ledd = xˆ(2*i) / prod(1:2*(i+1)); cos = cos + s*ledd; i = i + 1; 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 ), cos(x 2π) = cos(x) (2) cos(x π) = cos(x) (3) cos(π x) = cos(x) (4) Side 14 av 15

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. 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 π 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. x = mod(x,2*pi); % steg 1 if x < pi % steg 2 signcos = 1; else signcos = -1; x = x - pi; if x >= pi/2 % steg 3 x = pi - x; signcos = -signcos; Godkjent, men unødvig, hvis man skifter fortegn på negative x før utregning av mod(x,2*pi). I en komplett løsning vil man sette inn denne koden rett foran koden for forrige deloppgave og så multiplisere funksjonsverdien med cos = cos*signcos. Det er ikke nødvig for en fullt ut godkjent løsning. Side 15 av 15