TDT4105 IT Grunnkurs Høst 2014



Like dokumenter
TDT4105 IT Grunnkurs Høst 2014

TDT4105 IT Grunnkurs Høst 2012

Øvingsforelesning TDT4105

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4105 IT Grunnkurs Høst 2014

TDT4110 IT Grunnkurs Høst 2014

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4110 IT Grunnkurs Høst 2012

TDT4110 IT Grunnkurs Høst 2012

TDT4105 IT Grunnkurs Høst 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Introduksjon til beslutningsstrukturer

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

TDT4105 IT Grunnkurs Høst 2014

TDT4110 IT Grunnkurs Høst 2014

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Øvingsforelesning i Python (TDT4110)

TDT4102 Prosedyreog objektorientert programmering Vår 2016

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

TDT4110 IT Grunnkurs Høst 2016

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Kanter, kanter, mange mangekanter

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

TDT4110 IT Grunnkurs Høst 2016

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

TDT4110 IT Grunnkurs Høst 2015

Øvingsforelesning TDT4105 Matlab

Binærfiler versus tekstfiler

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Repetisjon Novice Videregående Python PDF

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

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

Norsk DS A. side 1

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

INF Ekstrainnlevering

TDT4105 IT Grunnkurs Høst 2017

Straffespark Introduksjon Scratch Lærerveiledning

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

TDT4105 Informasjonsteknologi, grunnkurs

Oppgaven består av to deler, del A og del B. Alle skal besvare både del A og del B, men det finnes noen valgmuligheter innenfor hver del.

Brødrene Dahl Versjon 6.11 for Intermec CK1

Ol Emnekode: Faglig veileder: I L~~25 A - E!8 Viho~d~.1. F ntall oppga~ forsiden): ;;;handskr~vn-;

TDT Prosedyre- og objektorientert programmering

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

INF Obligatorisk innlevering 7 - Hangman

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

TDT4110 IT Grunnkurs Høst 2012

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Verdier, variabler og forms

VISMA OPPVEKST SKOLE KOBLING MED VISMA ENTERPRISE HRM (UNIQUE ANSATT)

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

HØGSKOLEN I SØR-TRØNDELAG

ISY JobTech Release Notes,

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Øvingsforelesning i Matlab TDT4105

VITEC. Veiledning nytt år. EmProf årsavslutning LAST EDITED:

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT4110 IT Grunnkurs Høst 2016

INF109 - Uke 1b

Fakultet for informasjonsteknologi,

12. Rapporter og søk DFØ

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Skilpaddefraktaler Erfaren Python PDF

WinMed Allmenn NPR. Lysaker Torg 15 Postboks LYSAKER. Tlf: Fax: E-post:

INF Seminaroppgaver til uke 3

Utførelse av programmer, metoder og synlighet av variabler i JSP

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Amplivox 116 audiometer Brukerveiledning

Matematikk Øvingsoppgaver i numerikk leksjon 3 Funksjoner og plotting

Det er frivillig å delta i spørreundersøkelsen, ingen skal vite hvem som svarer hva, og derfor skal du ikke skrive navnet ditt på skjemaet.

Web Computing AS Brukerveiledning WebWiz 3.0. WebWiz 3.0. Brukerveiledning

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

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

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Testlig og binær form

Brukerdokumentasjon for registrering og rapportering beredskapsutstyr hos Post og Teletilsynet

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Velkommen som ny bruker av Uni Økonomi!

infotorg Enkel brukermanual

Gangemesteren Nybegynner Scratch PDF

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Digital kalender. Bruksanvisning

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Tilfelle 1: Hent opp lønnsarten for fastlønn (lønnsart 1 i standard lønnsartregister). Kartotek Lønnsarter fane 2: Parameter.

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

Transkript:

TDT4105 IT Grunnkurs Høst 2014 Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Øving 9 1 Teori a) Hva er en protokoll? b) Hva er HTTP og når brukes den? c) Hva er de fem lagene i internets protokollmodell? 2 Strukturer a) Lag variabelen date som en struktur med feltene day, month og year og verdiene 20, 5 og 1990 b) Lag funksjonen print_date(date). Den skal ta en datostruktur som parameter og skrive ut datoen slik: 20.05.1990 c) Lag variabelen person som en struktur med feltene name, date_of_birth og phone, og verdiene 'Per Persson' for name og 48151623 for phone. date_of_birth skal selv være en struktur med feltene day, month og year og verdiene 20, 5 og 1990. Den sammensatte strukturen ser slik ut: d) Lag funksjonen print_person(person). Den skal ta en personstruktur som parameter og skrive ut navnet, fødselsdatoen og telefonnummeret til personen slik: Per Persson, 20.05.1990, 48151623 Tips: Bruk print_date for å skrive ut datoen. Side 1 av 5

e) Lag funksjonen prompt_person() som ber brukeren skrive inn et navn, en dag, en måned, et år og et telefonnummer. Funksjonen skal returnere en personstruktur med gitt navn, fødselsdag og telefonnummer. Eksempel på kall med denne funksjonen: Hva heter du? Per Persson Hvilken dato er du født? 20 Hvilken måned er du født? 5 Hvilket år er du født? 1990 Hva er telefonnummeret ditt? 48151623 f) Lag funksjonen get_age(person) som tar en personstruktur som parameter og returnerer alderen til personen. Dagens dato kan nnes slik: [Y M D] = datevec(now); get_age ( struct ( ' day_of_birth ', struct ( 'day ', 20, ' month ', 5, ' year ', 1990 ') )) % skal skrive ut 23 get_age ( struct ( ' day_of_birth ', struct ( 'day ', 15, ' month ', 12, ' year ', 1990 ') )) % skal skrive ut 22 g) (frivillig) Lag funksjonen batch_register_persons(). Funksjonen skal be brukeren registre en person og så spørre om brukeren vil registrere ere personer. Funksjonen skal fortsette å registrere personer så lenge brukeren vil. Når brukeren er ferdig med å registrere, skal funksjonen returnere en vektor med alle de registrerte personene. Eksempel på kall av funksjonen er slik: Hva heter du? Per Hvilken dato er du født? 15 Hvilken måned er du født? 7 Hvilket år er du født? 1990 Hva er telefonnummeret ditt? 48151623 Skal du registrere flere personer (ja/nei)? ja Hva heter du? Pål Hvilken dato er du født? 13 Hvilken måned er du født? 4 Hvilket år er du født? 1991 Hva er telefonnummeret ditt? 49432434 Skal du registrere flere personer (ja/nei)? nei h) Lag funksjonen list_persons( list_of_persons ) som tar inn en vektor med personer som parameter og skriver ut hver person som i oppgave d. Side 2 av 5

3 Persondatabase I denne oppgaven skal vi lage en persondatabase. Det innebærer å lage en l som inneholder strengrepresentasjoner av personstrukturen fra oppgaven over. a) Lag funksjonen serialize_person(person). Funksjonen tar inn en personstruktur og skal returnere en tekstrepresentasjon av strukturen. Tekstrengen skal være på følge format: <navn>#<dato>#<tlf> Her separerer # - tegnet de forskjellige feltene. F. eks. blir strukturen fra oppgave 2 c) see slik ut: Per Persson#20.05.1990#48151623 Tips: Skriv funksjonen serialize_date(date) som returnerer tekstrengen <dag>.<måned>.<år> b) Lag funksjonen deserialize_person(person). Funksjonen tar inn en tekststreng lik den du lagde i forrige oppgave. Den skal returnere personstrukturen som er lagret i tekststrengen. Tips: Skriv funksjonen deserialize_date(date) som returnerer en datostruktur. For eksempel vil deserialize_date("20.05.1990") gi struct('day', 20, 'month', 5, 'year', 1990) c) Lag funksjonen store(filename, persons). persons er en vektor med personstrukturer og filename er en tekststreng med navnet på len som kalleren av funksjonen ønsker å lagre personene i. Funksjonen skal bruke serialize_person for å gjøre om personstrukturene til tekststrenger som skal skrives på hver sin linje i len. d) Lag funksjonen loadfile(filename). Funksjonen skal lese len filename linje for linje. For hver linje skal den bruke deserialize_person for å lage en personstruktur av den leste linjen. Funksjonen skal returnere en vektor med alle personene fra len. 4 Personprogram I denne oppgaven skal vi sette sammen funksjonene vi har laget til et kjøre program. Programmet skal vise en meny til brukeren og la brukeren velge hva den vil gjøre. Hittil i øvingsopplegget har oppgaveteksten lagt opp til å skrive i en bunn-til-topp (bottom-up) metode. Det vil si å skrive de laveste funksjonen i kalltreet (se gur) først og de øverste til slutt. Den motsatte metoden, topp-til-bunn (top-down) er også mye i bruk, det vil si å skrive de øverste funksjonene først. Dette krever at man holder litt ere tanker i hodet samtidlig, men fører etter trening ofte til en bedre løsning. Dener følge funksjoner: function P = process ( P, choice ) fprintf ( 'Du har valgt %i\n ', choice ); function print_ header () fprintf ( ' Skriver ut en velkomstmelding \n '); Side 3 av 5

function print_ menu () fprintf ( ' Skriver ut en meny \n '); function print_ footer () fprintf ( ' Skriver ut en avskjedsmelding \n '); Dette kalles funksjonsstubber og er en teknikk som brukes når man skriver i en topp-ned metode. Stubben muligjør at man kan skrive funkjsonen person_program som f.eks. kaller på process før process-funksjonen er skrevet ferdig. I senere oppgaver skal vi bytte ut fprintf-funksjon med den faktiske implementasjonen av funksjonen. a) Lag funksjonen person_program(). Funksjonen skal gjøre følge 1. Skrive ut en velkomstmelding 2. Skrive ut menyen 3. Be brukeren om et tall som representerer et valg i menyen (a) Hvis tallet er 0, avslutt funksjonen (b) Ellers kall funksjonen process 4. Repeter steg 2-4 så lenge brukeren ikke skriver inn tallet 0 Eksempel på utførelse av denne funksjonen: Skriver ut en velkomstmelding Skriver ut en meny Velg et tall: 1 Du har valgt 1 Skriver ut en meny Velg et tall: 0 Skriver ut en avskjedsmelding b) Fyll ut funksjonen print_header() slik at den skriver ut en passe velkomstmelding. Hovedmenyen skal se slik ut: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet c) Lag funksjonen print_menu() som skriver ut denne menyen. d) Fyll ut funksjonen print_footer() slik at den skriver ut en passe avskjedsmelding. e) Dener funksjonsstubbene P = process_load(), process_store(p), process_list_persons(p), P = process_new_person(p) og P = process_change_person(p). Legg inn en fprintf som forteller hva hver av funksjonen skal gjøre. (process_load har fprintf('laster fil');, osv.). PS. P er en vektor hvor hvert element er en personstruktur lik den i oppgave 2. f) Skriv om P = process(p, choice)-funksjonen slik at den kaller riktig process_... funksjon. Hvis choice er lik 1 så skal process_load kalles osv. Hvis choice < 1 eller > 5, skal funksjonen skrive ut 'Ugyldig valg'. Side 4 av 5

g) Fyll ut P = process_load()-funksjonen. Den skal be brukeren om å fylle inn et navn på en l. Så skal den kalle på loadfile-funksjonen fra oppgave 3 med navnet som argument. Funksjonen skal returnere vektoren som loadfile returnerer. h) Fullfør process_store(p)-funksjonen. Den skal be brukeren om å fylle inn et navn på en l. Så skal den kalle store-funksjonen (fra oppgave 3) med navnet og parameteren P. i) Skriv ferdig process_list_persons(p). Funksjonen skal kalle funksjonen list_persons fra oppgave 2 med parameteren P som argument. j) Fyll ut P = process_new_person(p). Den skal kalle på prompt_person fra oppgave 2. Personstrukturen som prompt_person returnerer skal legges til på slutten av parameteren P. Merk at parameteren P skal også returneres. k) (frivillig) Fullfør P = process_change_person(p) funksjonen. Den skal først be brukeren om å skrive inn et tall, hvor tallet representerer nummeret på personen som brukere vil re på. Deretter skal funksjonen skrive ut denne personen. Så kaller den på prompt_person for å la brukeren skrive inn oppdatert informasjon. Overskriv til slutt personen i parameteren P. Denne funksjonen skal også returnere P. l) (frivillig) Det er vanlig at et program spør om du vil lagre ulagrede ringer før programmet avsluttes. Implementer dette i programmet. m) (frivillig) Legg til et menyvalg for å søke etter en person på navn og implementer funksjonaliteten for dette. Søket skal printe ut personen med print_person funksjonen. Side 5 av 5