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

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

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

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

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

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

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

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java

Eksamensoppgave i IFUD1025 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

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

Algoritmer og Datastrukturer

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

HØGSKOLEN I SØR-TRØNDELAG

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

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

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

Algoritmer og Datastrukturer

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN med løsningsforslag

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Eksamensoppgave i IFUD1025 Programmering i Java

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

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

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Algoritmer og Datastrukturer

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

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

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

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

TDT4100 Objektorientert programmering

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Algoritmer og datastrukturer Eksamen

EKSAMENSOPPGAVE I INF-1100

HØGSKOLEN I SØR-TRØNDELAG

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

UNIVERSITETET I OSLO

Løsnings forslag i java In115, Våren 1998

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Oblig 4Hybelhus litt mer tips enn i oppgaven

København 20 Stockholm

Algoritmer og datastrukturer Eksamen

INF 1000 høsten 2011 Uke september

HØGSKOLEN I SØR-TRØNDELAG

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Forelesning inf Java 4

UNIVERSITETET I OSLO

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

2 Om statiske variable/konstanter og statiske metoder.

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Obligatorisk oppgave 4: Lege/Resept

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

INF1000 Behandling av tekster

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: Varighet: Emnekode: Emnenavn: Klasse(r): Studiepoeng: Faglærer(e): Kontaktperson (adm.) Hjelpemidler: Oppgavesettet består av: Vedlegg består av: 17. desember 2013 4 timer (9:00-13:00) IFUD1025 NETT2013H 5 Vuokko-Helena Caseiro (tlf. +39 06 51 26 063) Ingrid Island (tlf. 73 55 95 64) Alle skrevne og trykte hjelpemidler samt godkjent kalkulator 2 oppgaver og 5 sider (inkludert forside) Ingen Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Lykke til!

HiST Avdeling for informatikk og e-læring Side 2 av 5 Oppgave 1 ( 62 % ) Køsystem på legevakten Når en pasient ankommer legevakten, blir pasienten straks registrert med navn (og ikke noe mer), og utifra alvorlighetsgraden blir pasienten plassert i en av køene. Pasienten må så vente på å bli ropt opp for å slippe inn til lege. Du skal nå først lage en klasse Koe for å representere en kø av pasienter. Pasientene i køen blir ropt opp i den rekkefølgen de ankom legevakten. Eksempel: Det er tre pasienter i køen: Først står Iris (hun ankom først av disse tre pasientene), så Ann (hun ankom etter Iris) og til sist Leo (han ankom etter Ann). - Hvis det ankommer en ny pasient Mai, vil hun bli plassert bak Leo. Mai blir da den siste i køen. - Av de som står i denne køen, vil Iris vil bli ropt opp først. Når hun blir ropt opp, går hun ut av køen, og Ann blir den første i køen. a) Begynn å lage klassen Koe. Det skal være to objektvariabler: o køen av type String[]: pasientenes navn. Pasientene ligger fortløpende f.o.m. indeks 0 (den første i køen) t.o.m. indeks antall 1 (den siste i køen). Resten av tabellen inneholder null. o antall av type int: antall pasienter i køen. Lag en konstruktør med tabellstørrelsen som parameter. Konstruktøren skal opprette tabellen, men ikke legge noe i tabellen. b) Lag en Koe-metode public void registrerpasient(string navn): Registrer en ny pasient som heter navn, sist i køen. Ikke sjekk om navn fins fra før. Du kan anta at køen ikke er full. Eksemplet fortsatt: Til venstre har vi tegnet Koe-objektet med de tre pasientene. Hvis vi kaller registrerpasient( Mai )), blir Koe-objektet som tegnet til høyre. c) Lag en Koe-metode public boolean ertom(): Returner true hvis det ikke er noen pasienter i køen, returner false ellers. d) Lag en Koe-metode public String ropopppasient(): Fjern den første pasienten fra køen, flytt hver av de andre pasientene en plass framover i køen, returner den første pasientens navn. Eksemplet fortsatt: Til venstre er Koe-objektet med de tre pasientene. Hvis vi kaller ropopppasient(), blir Koe-objektet som til høyre, og Iris blir returnert.

HiST Avdeling for informatikk og e-læring Side 3 av 5 Køsystemet på legevakten holder rede på fire køer. Hver kø har sin farge: - I den røde køen er de pasientene som trenger hjelp øyeblikkelig. - I den gule køen er de pasientene som kan vente litt. - I den grønne køen er de pasientene som kan vente mye. - I den hvite køen er de pasientene som egentlig kan klare seg uten legevakten. Du skal nå lage en klasse Koesystem for å representere køsystemet. e) Begynn å lage klassen Koesystem. Det skal være fem objektvariabler: o rød, gul, grønn og hvit. Hver av disse fire variablene er av type Koe. o antallgulesidengrønn av type int: Hvis minst en pasient fra grønn-køen er blitt ropt opp, er antallgulesidengrønn lik antall pasienter ropt opp fra gul-køen siden sist en pasient fra grønn-køen ble ropt opp. Ellers er antallgulesidengrønn lik totalt antall pasienter ropt opp fra gul-køen. La fire heltallskonstanter RØD, GUL, GRØNN og HVIT representere fargene. Lag en konstruktør som oppretter fire tomme køer. f) Lag en Koesystem-metode public void registrerpasient(string navn, int farge): Hvis farge er RØD, GUL, GRØNN eller HVIT, så registrer navn i henholdsvis rød, gul, grønn eller hvit. Ikke sjekk om navn fins fra før. Du kan anta at køene ikke er fulle. Pasientene blir ropt opp en etter en. For å bestemme hvilken av de fire køene vi skal rope opp en pasient fra, bruker vi fargeregelen for køer (se nedenfor). Deretter roper vi opp den første pasienten i den køen. Fargeregelen for køer sier hvilken kø som skal velges. Uttrykt med pseudokode er regelen: Hvis den røde køen ikke er tom, velg den røde køen. Ellers Hvis den gule køen ikke er tom, og dessuten antallgulesidengrønn er mindre enn 3 eller den grønne køen er tom, velg den gule køen. Ellers Hvis den grønne køen ikke er tom, velg den grønne køen. Ellers Hvis den hvite køen ikke er tom, velg den hvite køen. g) Lag en Koesystem-metode private Koe finnkoevhafargeregelen(): Følg den oppgitte pseudokoden, og returner den valgte køen. h) Tegn et detaljert aktivitetsdiagram som illustrerer metoden i deloppgave g). i) Lag en Koesystem-metode public String ropopppasient(): Bruk fargeregelen for køer for å velge kø. Rop opp den første pasienten i den valgte køen. Husk å oppdatere antallgulesidengrønn, om nødvendig. Returner navnet til den pasienten som ble ropt opp.

HiST Avdeling for informatikk og e-læring Side 4 av 5 Oppgave 2 (38 %) Formler for temperaturomregning Det fins mange forskjellige temperaturskalaer, f.eks. celsiusskalaen, fahrenheitskalaen, kelvinskalaen og delisleskalaen. Et par eksempler på temperaturer uttrykt i disse skalaene: celsius fahrenheit kelvin delisle kroppstemperatur 37,0 98,6 310,15 94,5 vanns kokepunkt 100,0 212,0 373,15 0,0 Vi skal i denne oppgaven arbeide med noen formler (kalt kamformler ) for omregning av temperaturer fra en skala til en annen. Hovedeksemplet (som vil bli fortsatt): For å regne om fra fahrenheit til celsius, bruker vi formelen celsius = ((fahrenheit 32,0) * 5,0) / 9,0 Hvis vi f.eks. vil regne om 98,6 fahrenheit til celsius, så er dette 37,0 celsius i følge formelen fordi ((98,6 32,0) * 5,0) / 9,0 = 37,0. En kamformel er en formel på formen til = ( ((fra op0 kon0) op1 kon1) ) opn konn for en n 0, der - til og fra er variabler - hver av op0, op1,, opn er en av de binære operatorene +, -, * eller / - kon0, kon1,, konn er konstante desimaltall Høyresiden i en kamformel er altså et sammensatt aritmetisk uttrykk med en spesiell form. Vi kan illustrere høyresiden slik at den ligner på en hårkam (herav navnet kamformel ): Høyresiden er altså bygd opp som følger: - Først bruker vi op0 på fra og på kon0 og får delresultatet fra op0 kon0. - Deretter kan vi bruke op1 på dette delresultatet og på kon1 for å få det større delresultatet (fra op0 kon0) op1 kon1. - Slik kan vi fortsette. Eksemplet fortsatt: Formelen celsius = ((fahrenheit 32.0) * 5.0) / 9.0 er en kamformel med n lik 2: - Variablene er celsius og fahrenheit - op0 er -, op1 er * og op2 er / - kon0 er 32,0, kon1 er 5,0 og kon2 er 9,0 Noen flere eksempler på kamformler er: - fahrenheit = (celsius * 9,0) / 5,0 + 32,0 - celsius = kelvin 273,15 - delisle = (((celsius * -1,0) + 100,0) * 3,0) / 2,0 (Høyresiden kan skrives enklere, som((100,0 celsius) * 3,0) / 2,0, men da er det ikke en kamformel.)

HiST Avdeling for informatikk og e-læring Side 5 av 5 Du skal lage en klasse Temperaturomregner som inneholder en kamformel for å regne om temperaturer fra en temperaturskala til en annen. a) Begynn å lage klassen Temperaturomregner. Objektvariablene skal være o fra av type String: navnet på den skalaen vi skal regne fra o til av type String: navnet på den skalaen vi skal regne til o op av type char[]: operatorene i kamformelen slik at hver operator er representert som et av tegnene '+', '-', '*' eller '/' o kon av type double[]: konstantene i kamformelen Lag også en passende konstruktør. Eksemplet fortsatt: Temperaturomregner-objektet for å regne om fra fahrenheit til celsius lar vi være som følger: o fra er lik fahrenheit o til er lik celsius o op inneholder de tre tegnene '-', '*' og '/' o kon inneholder de tre tallene 32,0, 5,0 og 9,0 b) Lag en Temperaturomregner-metode private double utførenoperasjon(char tegn, double tall1, double tall2): Hvis tegn er '+', '-', '*' eller '/', så returner resultatet av å bruke den tilsvarende operatoren (altså +, -, * eller /) på tall1 som første operand og på tall2 som andre operand. Eksemplet fortsatt: For å få utført den første operasjonen i omregningen av 98,6 fahrenheit lar vi tegn være lik '-', tall1 lik 98,6 og tall2 lik 32,0. Da skal metoden returnere 66,6 (fordi 98,6 32,0 = 66,6). c) Lag en Temperaturomregner-metode public double regnom(double temperatur): Regn om temperatur fra fra-skalaen til til-skalaen ved hjelp av denne kamformelen, og returner resultatet. Kall gjerne metoden utførenoperasjon() fra deloppgave b). Eksemplet fortsatt: For temperatur lik 98,6 skal metoden returnere 37,0. d) Lag en Temperaturomregner-metode public String finnkamformelensomtekst(): Returner denne kamformelen som tekststrengen til = ( ((fra op[0] kon[0]) op[1] kon[1]) ) op[n] kon[n] for n lik lengden av op minus 1. Eksemplet fortsatt: Metoden skal returnere tekststrengen celsius = ((fahrenheit 32,0) * 5,0) / 9,0. e) Lag et lite klientprogram, hvor du bruker System.out.println() til utskrift: o Lag et Temperaturomregner-objekt som inneholder kamformelen for å regne om fra fahrenheit til celsius. o Kall objektets finnkamformelensomtekst(). o Kall objektets regnom() for å regne om 98,6 fahrenheit til celsius. Si hva utskriften av en kjøring vil bli.