Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Like dokumenter
Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

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

Oblig4 - forklaringer. Arne og Ole Christian

Råd 1: Programmer ovenfra ned. INF1000 Uke 10. Gruppering etter eier. Velg datastruktur etter hva som skal gjøres!

INF1000 Uke 10. Hvordan gripe an et stort problem? 5 råd Noen eksempler du kan overføre til Oblig 4 Oblig 4 kort oversikt Et større programeksempel

Oblig4 - forklaringer. Arne og Ole Christian

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

Oblig4: Komme igang. INF1000 Uke 11. Filer Vi skal lese data fra to filer og analysere dem (Stasjoner-1.txt, Vaerdata-1.txt) Noen generelle tips

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

Uke 11 noen tips og råd + eksempel. Noen muligheter. Valg av datamodell: eksempel. Valg av datamodell: oblig 4

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Oblig 4Hybelhus litt mer tips enn i oppgaven

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oblig 3 tips litt mer tips enn i oppgaven

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

Seminaroppgaver IN1010, uke 2

Oblig4 - forklaringer

Hva er en metode? INF1000 Forelesning 8. Hva skjer når vi kaller en metode? Hvorfor bruke metoder?

INF1000 Forelesning 8. Litt repetisjon: Metoder og klasser Innkapsling av variable og metoder Hvordan gripe an et stort problem?

INF Innleveringsoppgave 6

Oblig 3 tips litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

INF Obligatorisk innlevering 5

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

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

INF1000: noen avsluttende ord

Endret litt som ukeoppgave i INF1010 våren 2004

INF1000 Prøveeksamen Oppgave 7 og 9

Framgangsmåte for å løse oblig 4 i INF1000

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Løsningsforslag til eksamen i INF1000 våren 2006

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Klasser, objekter, pekere og UML. INF gruppe 13

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag, inf101, våren 2001

UNIVERSITETET I OSLO

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

INF Ekstrainnlevering

s 678 * Hvordan designe og programmere objektorientert * Støtte til oppstart på Oblig 4: Jobbe frem eget forslag til datastruktur

INF 1000 høsten 2011 Uke 10: 25. november

UNIVERSITETET I OSLO

(MVC - Model, View, Control)

UNIVERSITETET I OSLO

INF Obligatorisk innlevering 7

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

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

INF Obligatorisk innlevering 7

Blokker og metoder INF1000 (Uke 6) Metoder

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

UNIVERSITETET I OSLO

INF Løsning på seminaropppgaver til uke 8

INF1000: Forelesning 4. Mer om arrayer Metoder

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

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

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

Forelesning inf Java 4

IN1010 våren januar. Objektorientering i Java

MAT-INF 1100: Obligatorisk oppgave 1

INF Obligatorisk innlevering 6

INF1000 : Forelesning 4

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Enkle generiske klasser i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

Jentetreff INF1000 Debugging i Java

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

INF 1010, vår 2005 Løsningsforslag uke 11

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

Gjennomgang av en tenkt eksamensoppgave

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

INF Notat om I/O i Java

Gjennomgang av en tenkt eksamensoppgave

Transkript:

Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel: PRØVEEKSAMEN i INF1000 23. november 2004 kl. 14.00-17.00 INF1000-seminaret H2007 3. november Oblig4: Komme igang 1. Les hele oppgaven nøye 2. Tenk på hvilke klasser du trenger 3. Lag et enkelt klassediagram og et skall til programmet 4. Så kan vi ta oppgavene en etter en Noen generelle tips Lag først klassene og fyll det med de viktigste variablene og metodene Start på det høyeste nivået og skriv programflyten på det høyeste nivået Skriv programmet ovenfra og ned Lag tomme metoder som du kan fylle ut siden Tenk på hva som er input og output for metoder Deleger oppgaver til klasser/objekter Hold koden ryddig, formatert og kompilerbar Det er alltid lov å gå tilbake å endre noe. Vi kan bruke mange runder før vi er fornøyd med et program

Filer Vi skal lese data fra to filer og analysere dem (Stasjoner-1.txt, Vaerdata-1.txt) Vi skal også skrive resultater til en fil (Resulat.txt) Stasjoner Nummer Navn MoH Kommune Fylke 4780 GARDERMOEN 202 ULLENSAKER AKERSHUS Målinger Stasjonsnr Dag Mnd Max vind Nedbør Min tmp Max tmp 4780 14 01 10.8 0.3-2.4 6.2 4780 15 01 8.7 0.0 1.4 5.0 Finne klassene Meteorologisk institutt har en rekke værstasjoner rundt om i Norge. For hver slik værstasjon får vi oppgitt et entydig stasjonsnummer, stasjonens navn, stasjonens høyde over havet, kommunen og fylket hvor stasjonen ligger. Ved disse værstasjonene måles hver dag en rekke data, og vi skal her konsentrere oss om følgende fire data per dag: Maks vindhastighet, mmnedbør, Min temp og Max temp. Data for én måned for en værstasjon samles og rapporteres ofte som en enhet. Finne klassene Meteorologisk institutt har en rekke værstasjoner rundt om i Norge. For hver slik værstasjon får vi oppgitt et entydig stasjonsnummer, stasjonens navn, stasjonens høyde over havet, kommunen og fylket hvor stasjonen ligger. Se på substantivene Hvilke passer som klasser Det som er noe Hvilke er variable i klassene Egenskaper ved klassene Ved disse værstasjonene måles hver dag en rekke data, og vi skal her konsentrere oss om følgende fire data per dag: Maks vindhastighet, mmnedbør, Min temp og Max temp. Data for én måned for en værstasjon samles og rapporteres ofte som en enhet. Og: Hva passer som metoder Det som gjøres med eller av klassene Lag en skisse

Oppgave 1 Hele denne oppgaven skal løses med klasser og objekter. Ut fra opplysningene ovenfor og ved å lese gjennom de spørsmål systemet skal kunne gi svaret på i oppgavene 2-6, så skal du tegne et klassediagram i UML over systemet ditt. Gi navn på de forhold du vil ha i systemet ditt. Skriv også antall på begge sidene av forholdene. Lever gjerne UML-diagrammet som en håndtegning. Observasjons - data? Oppgave 2 Du skal nå skrive de delene av programmet som leser de to filene Stasjoner-1.txt og Vaerdata- 1.txt. Det oppretter objekter av de klassene du har definert etter hvert som du leser filenes. Alle klassene (med unntak den som inneholder main ) skal ha en konstruktør du har skrevet selv og som initierer objektet med de data du leser inn om vedkommende objekt. Navnene på disse filene skal være parametere når du starter programmet (dvs. filnavnene er i args[0] og args[1] som parametere til main, se hint). Start med skallet /** * Omsluttende klasse for problemet, tar opp parametre * fra kommandolinja og starter kommandoløkka. Feilmelding * hvis ikke minst to parametere. *****************************************************/ class Oblig4 { /** * Sjekker parametere, starter opp ordreløkka etter at * filene er lest via konstruktoren til 'MetInst' *****************************************************/ public static void main(string[] args) { if (args.length >= 2) { MetInst m = new MetInst(args[0],args[1]); m.ordreløkke(); } else System.out.println("Bruk: >java Oblig4 <fil med + Stasjonsdata> < fil med Observasjonsdata>"); } } // end class Oblig 4 Filnavnene f) De to filnavnene som parametere til main For å få til det så nevner du dem bare på samme linje som du når du starter programmet ditt. Anta at klassen din som inneholder main i en klasse som heter Meteorologi. Du starter da programmet som følger: >java Meteorologi Stasjoner-1.txt Vaerdata-1.txt Når du senere vil prøve de større filene med flere måledata, sier du bare: >java Meteorologi Stasjoner-2.txt Vaerdata-2.txt

Stasjoner-2.txt vs Stasjoner-1.txt Oppgave 3 Stasjoner-2.txt og Vaerdata-2.txt inneholder data for langt flere stasjoner, og som derfor kan gi bedre og mer interessante svar enn de få værstasjonene det er i de tilsvarende filene som slutter med -1.txt Du skal nå utstyre programmet med en metode som skriver ut en meny for brukeren som gir brukeren følgende valg, som du skal programmere i oppgavene 4-6 (Menyen skal se ut nøyaktig som nedenfor): 1 Finn antall uværsdager 2 Sammenlign regn ved kyststasjoner mot resten 3 Sammenlign landsdeler 4 avslutt Du bør nå ha et overordnet program og noen klasser og kan lage tre metoder som kalles fra hovedprogrammet Lag altså metodene finnantalluværsdager(string stasjonsnavn, int måned) sammenlignregnvedkyststasjonermotresten() Måned b) Lag tre hjelpemetoder i den klassen som representerer måledata for en måned for en stasjon. sammenlignlandsdeler(int måned) Oppgavene kan/skal delegeres til objektene du har laget ved innlesing. Den første regner ut gjennomsnittlig nedbør per dag den måneden; den andre metoden regner ut gjennomsnittlig temperatur for måneden ut fra max- og min-temperaturene for hver dag, og den siste metoden teller opp antall uværsdøgn.

To HashMap-er c) Av og til ønsker du å søke etter stasjonene ut fra deres stasjonsnummer og av og til ut fra deres navn. Det kan derfor være fornuftig å lage to HashMap er en hvor nøkkelen er navnet og en hvor nøkkelen er stasjonsnummeret. Det er det samme objektet du legger (peker til) i de to HashMap ene, men nøklene vil være ulike Kan ikke bruke int som nøkkel i HashMap d) Hvis du vil lage en nøkkel til en HashMap av noe som egentlig er et heltall, si: int num;, så lager du enkelt en nøkkel slik String s = + num; (dette lager en String med tallverdien i num ved å legge til den tomme tekststrengen) Manglende data e) En måte å behandle manglende data, er at alle -99 ene leses inn som om dette er virkelige data. De metoder som regner ut gjennomsnitt ol, må da hver gang sjekke om det er verdier!= -99 de finner og ikke ta med slike dataverdier i beregningene. Slike metoder kan da også selv returnere -99 dersom det ikke finnes noen data å gjøre beregningene på (enten f.eks. for at brukeren spesifiserer en måned vi ikke har data for - f.eks. måned: 8 august, eller at alle data for vedkommende måned mangler). Husk at du samtidig må telle opp hvor mange dager du har virkelige observasjoner for, slik at gjennomsnittet blir riktig. Altså: Mangler det måling for en dag kan den ikke være med i gjennomsnittet for måneden (antallet blir også mindre!) Mangler alle data/dagne for en måned kan vi ikke finne gjennomsnitt for den Hvis vi ikke har gjennomsnitt for noen måneder for en stasjon kan vi ikke finne gjennomsnittet for stasjonen. ÆØÅ-problemer g) Hvis du leser inn data og så skriver dem ut på en PC via Windows, så vær klar over at æ, ø, å, Æ, Ø, Å blir skrevet ut som andre tegn på skjermen, og hvis man f.eks taster inn æ, ø, å på en Windowspc, så vil de ikke bli oppfattet som de æ-ene, ø-ene og å-ene du har lest inn fra fila. Bruk derfor stasjonsnumrene til å identifisere stasjonene, både i brukerdialogen og innad i programmet når du leser Vaerdata-filene. (eksempler på mishandling av ÆØÅ: NY- LESUND (99910), MIDTL GER (46510), VARD (98550) ). Skriv derfor både ut navn og nummer på stasjonene. Hvis du har dette problemet kan du be brukeren taste inn et stasjonsnummer når stasjonen velges, men du skal likevel kalle f.eks. finnantalluværsdager(..) med den tilhørende teksten som er stasjonsnavnet. Løsningen er altså (når brukeren skal velge stasjon): List opp alle stasjoner med nummer og navn) Be brukeren skrive inn stasjonsnummer

Vi gjør det enkelt Engelske navn, men norsk dialog h) Hvis du får behov for å lage gjennomsnitt av f.eks nedbør fra 2 eller flere måneder som har ett ulikt antall dager i seg med virkelige observasjoner, så ikke lag noe problem ut av det. La slike data for alle månedene telle likt i et større gjennomsnitt (del bare på antall måneder). i) Hvis du har lyst til bare å benytte engelske variabelnavn, metodenavn og dokumentasjon, så gjør gjerne det, men brukerdialogen skal være på norsk. Javadoc j) Når du skal lage javadoc av systemet ditt (og vi antar at de eneste.java - filene på det filområdet er de som hører til Oblig4), så gir du kommandoen: >javadoc package *.java Grunnen til å å ha med parameteren package er at den gjør at alle variable, klasser og metoder som det ikke står noen modifikator foran samt de det står public foran blir med i dokumentasjonen. Har du ikke med package, vil bare de som er nevn som public blir med i dokumentasjonen. Husk også at du kan lage korte javadoc-kommentarer på en linje som f.eks: /** Skriver ut bruker-menyvalg */ void meny (Out ut) {... Javadoc-kommentarer for en objektvariabel plasseres like over deklarasjonen, som f.eks: /** Stasjonenes høyde over havet (meter) */ int moh; Legg til på en fil append k) Når du lager filen resultat.txt i oppgave 6, bør du åpne den med append, dvs. f.eks.: Out res = new Out("Resultat.txt",true); Gjør du det, vil alle resultatene fra testingen for alle månedene du prøver bli lagret på fila (du overskriver da ikke gamle data, men skriver nye resultater på slutten av fila).

EKSTRA Til slutt Tåler ditt program å koble: IKKE JUKS! Stasjoner-2.txt med Vaerdata-1.txt manglende data for mange stasjoner Stasjoner-1.txt med Vaerdata-2.txt data for manglende stasjoner (ignorere disse data) JOLY finner like besvarelser Spør om hjelp Oppgi kilder Lever det dere har når fristen går ut LYKKE TIL!