Auditorieøving 2 Matlab TDT4105 Informasjonsteknologi, grunnkurs Brukernavn Fullt navn Oppgavesettet inneholder 4 oppgaver. De skal føres på oppgavearket. Husk å skrive brukernavn og navn tydelig på forsiden. Oppgave 1: Teori Svar kort på følge oppgaver a) Hva er forskjellen på client-server og peer-to-peer netverk? b) Nevn ett tilfelle der du trenger VPN? c) Hva er en nettverksprotokoll (protocol)? d) Nevn minst fire faser i systemutvikling og forklar hva de innebærer? a) CS: klienter kommuniserer med en server. P2P: klienter kommuniserer direkte med hverandre. b) Når du vil koble opp til NTNU-hjemmeområdet ditt utenfor nettverket til NTNU c) Det er et sett med regler en datamaskin følger for å overføre data over et nettverk. d) Det er seks faser i systemutvikling, de er som følger: Forstudie : Gjennomfør forberede analyse, foreslå alternative løsninger, beskriv kostnader og nytte, lage en foreløpig plan med anbefalinger. Analyse : Samle og analysere data, skrive rapport. Design : Gjøre et forberede design, gjøre et detaljert design, skrive rapport og få godkjenning for neste fase. Utvikling : Utvikle eller anskaff programvaren, anskaff eller oppgrader maskinvare, test systemet. Implementering : Velg konverteringstrategi, kjør opplæring av brukere. Vedlikehold : Utfør systemrevisjoner og ringer, sluttfør dokumentasjon.
e) Tegn et flytskjema for max() funksjonen function temp=max(list) temp= list(1); i = 1; while i <= length(list) if temp < list(i) temp = list(i); i=i+1;
Oppgave 2 Følge tre funksjoner er definert: a.m: b.m: c.m: function y = a(x) function y = b(x) function y = c(x) y = x^2; y = x > 18; y = a(x); if b(y) y = a(y); a) Hva skrives ut på skjermen når vi kjører kommandoen x = 3; x = c(x)? x = 9 b) Hva skrives ut når vi kjører kommandoen x = 5; y = c(x)? x = 625 (25 2 ) c) Hva skrives på skjermen når den følge koden kjøres? g = []; g(1) = 1; g(2) = 1; for i = 3:7 g(i) = g(i-1) + g(i-2); disp(g); 1 1 2 3 5 8 13 (de 7 første fibonacci-tallene)
Oppgave 3: a) Lag en funksjon som tar inn et tall og returnerer -1 dersom tallet er mindre enn null, 0 dersom tallet er null, og 1 dersom tallet er større enn null. function svar = mindreennnull(tall) if tall < 0 svar = -1; elseif tall == 0 svar = 0; else svar = 1; b) Lag en funksjon gangetabell som tar inn et heltall n > 0 som parameter og returnerer en tabell av 10 heltall som inneholder gangetabellen fra 1 til 10 for dette tallet. Eksempel: Hvis tallet 3 er inn-parameter skal tabellen [3 6 9 12 15 18 21 24 27 30] returneres. function tabell=gangetabell(tall) tabell = []; for i=1:10 tabell(i)=tall*i;
Oppgave 4: For å beregne kjøretiden fra ett sted til et annet, kan vi bruke en tabell over fartsgrensene hvor første linje i tabellen viser lengden av veistrekningen i kilometer og andre linje viser fartsgrensen. En vei som starter med 3 km med 60-sone og så 24 km med 80-sone, osv., kan beskrives slik: 3 24 5 10 6 31 12 7 8 21 60 80 60 80 90 70 60 30 50 60 I de følge oppgavene kan du ikke anta at tabellen ser ut akkurat som i eksempelet over, og heller ikke at den har samme lengde. a) Lag et skript som går gjennom tabellen kjoretid (du kan anta at den er definert) og sjekker at det ikke er noen «ugyldige» veistrekninger, dvs. veistrekninger med lengde eller fartsgrense mindre eller lik null. Dersom lengden i kolonne 5 er -3 km, skal skriptet skrive ut «Strekning 5 har lengde -3». Ved feil i fartsgrensen, f.eks. hvis fartsgrensen i kolonne 5 er null, skal skriptet skrive ut «Strekning 5 har fartsgrense 0» for i=kjoretid if i(1) <= 0 fprintf('strekning %d har lengde %d \n', 5, i(1)); if i(2) <= 0 fprintf('strekning %d har fartsgrense %d \n', 5, i(2));
b) Hvis det finnes flere alternative kjøreruter, kan vi lage flere kjøretidstabeller. Lag en funksjon som tar inn to tabeller og går gjennom dem og beregner kjøretiden for hvert rutevalg, forutsatt at sjåføren alltid holder fartsgrensen (kjøretid i timer kan beregnes ved å dele lengde på fartsgrense). Funksjonen skal returnere kjøretiden til den korteste ruten. function kortestkjoretid = finnkortestrute(rute1, rute2) tidrute1 = 0; tidrute2 = 0; for i=rute1 tidrute1 = tidrute1 + (i(1)/i(2)); for i=rute2 tidrute2 = tidrute2 + (i(1)/i(2)); if tidrute1<tidrute2 kortestkjoretid = tidrute1; else kortestkjoretid = tidrute2;
Oppgave 5: Skriv en funksjon trans som tar inn en tabell A med n rader og n kolonner og returnerer den transponerte av tabellen. Transponert betyr speilet om hoveddiagonalen A(1,1) A(n,n), skrevet med fet skrift i figur 1. Funksjonen skal returnere en tom tabell hvis inngangstabellen ikke er kvadratisk. Problemet skal løses uten å bruke transponert-operatoren. Hint: bytt om rader og kolonner. function transponerttabell=trans(a) transponerttabell = []; if size(a,1) == size(a,2) for i=1:length(a) for j=1:length(a) transponerttabell(i,j) = A(j,i);