Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

Like dokumenter
Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

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

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

INF1000 : Forelesning 1 (del 2)

Ukeoppgaver 2: sep (INF Høst 2010)

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

Jentetreff INF1000 Debugging i Java

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

Forelesning inf Java 1

Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo

INF Uke 10. Ukesoppgaver oktober 2012

Java. INF1000 : Forelesning 2. Ulike varianter for ulike behov. Java Standard Edition (Java SE) Java:

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Hvordan installere Java og easyio på Windows

Løsningsforslag ukeoppg. 7: okt (INF Høst 2010)

Første forelesning! Mål for INF1000. Kursevaluering. Velkommen til INF1000 høst 2010

Velkommen til INF1000 høst 2010

Plan for denne uka: Hva er INF1000. Mål for INF1000: INF 1000 høsten Velkommen til

Fra Python til Java, del 2

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

Løsningsforslag ukeoppg. 4: sep (INF Høst 2011)

Velkommen til. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo. Arne Maus, Ole Christian Lingjærde og Arild Waaler

Plan for denne uka: Velkommen til. Mål for INF1000: Hva er INF1000. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

INF1000 (Uke 4) Mer om forgreninger, While-løkker

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

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

Forelesning inf Java 1

Programmeringsspråket C

Velkommen til. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo. Siri Moe Jensen og Arne Maus

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

UNIVERSITETET I OSLO

Velkommen til INF 1000 høsten 2008

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

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Forelesning inf Java 4

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

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

MAT-INF 1100: Obligatorisk oppgave 1

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Plan for denne uka: Velkommen til. Mål for INF1000: Hva er INF1000. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

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.

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

INF1000 : Forelesning 4

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

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

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

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

INF 1000 høsten 2011 Uke 3 6. september

Plan for denne uka: Velkommen til. Hva er INF1000. Mål for INF1000: Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

INF Obligatorisk innlevering 5

løsningsforslag-uke5.txt

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter i dag! Klart for første oblig

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Innhold uke 3. INF 1000 høsten 2011 Uke 3 6. september. Uttrykk. Variabel: En plass i hukommelsen

INF1000 : Forelesning 3

Plan for denne uka: Velkommen til. Hva er INF1000. Mål for INF1000: Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Oblig 4Hybelhus litt mer tips enn i oppgaven

Forelesning inf Java 5

Løsningsforslag ukeoppg. 8: okt (INF Høst 2011)

Forelesning inf Java 5

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

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

UNIVERSITETET I OSLO

Øving 0 - Xcode TDT4102

Feilmeldinger, brukerinput og kontrollflyt

MAT-INF 1100: Obligatorisk oppgave 1

Forelesning inf Java 1

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

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

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

INF1000. Marit Nybakken 10. februar 2004

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

UNIVERSITETET I OSLO

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

Kort om kursene INF1100 og MAT-INF1100L

Programmeringsspråket C

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

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

Dagens tema Kapittel 8: Objekter og klasser

UNIVERSITETET I OSLO

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

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

Transkript:

Ukeoppgaver 1: 30. aug 3. sep (INF1000 - Høst 2010) Et første møte med Java (kapittel 1 og 2.1 2.3 i læreboka, "Rett på Java" 2. utg.) Mål I første terminalstue-time skal du greie å skrive dine første Java-programer og få de til å fungere. På timene med tavleundervisning (teoritimene) får du mer informasjon om Java og kurset generelt, og gjennomgang av noen av disse oppgavene. Oppgaver til teoritimen 1. Det første programet: kap. 1, oppg. 1 (side 23 i læreboken) Lag et program som skriver følgende tekst på skjermen: Rachmaninovs 3. klaverkonsert har et vakkert åpningstema Velg selv hvilket navn du vil gi klassen. Tips: Fremgangsmåte for å lage ditt første program: a. Innlogging: Du kan bruke din egen datamaskin eller en maskin på en av «terminalstuene» på universitetet. For å logge inn på terminalstuen trenger du bare å skrive ditt brukernavn og passord på velkomstskjermen til maskinen. Hvis du har med deg en bærbar pc til UiO kan du koble den til det trådløse nettet ved UiO (klikk på teksten hvis du ønsker mer informasjon). Hvis du sitter på en egen pc hjemme sjekk at du har installert en Java-kompilator før du går videre Mac og Linux kommer som regel med Java-kompilator, men på Windows må du vanligvis installere kompilatoren (PDF) selv. b. Redigering: Deretter starter du et tekstredigerings-program. Det finnes mange slike å velge mellom, for eksempel Emacs (som finnes på Linux-maskinene i terminalstuen) eller TextPad (på Windows-maskinene). Skriv programmet ditt i redigerings-programmet. Se følgdende eksempel for gode tips til hvordan du kan bygge opp programmet ditt det eneste du trenger å endre er teksten som står i anførselstegn! Lagre programmet i en fil med riktig filnavn. Filnavnet skal være likt klassenavnet etterfulgt av.java, f.eks. følgende program (fra side 16 i læreboken) skal lagres med filnavnet Utskrift.java fordi klassen i programmet heter Utskrift. Husk at store og små bokstaver har betydning her. class Utskrift { public static void main(string[] args) { System.out.println("Beethoven komponerte Skjebnesymfonien"); c. Kompilering: Videre bruker du et «kommandovindu», også kalt terminalvindu, for å kompilere programet. På Linuxmaskinene på Ifi åpnes det automatisk et kommandovindu når du logger inn, men du kan også åpne det ved å trykke høyre musknapp og velge Open Terminal. På Mac finner du også kommandovinduet under navnet «Terminal». På Windows kan du åpne kommandovinduet ved å holde inn Windows-tasten (tasten til venstre for Alt-tasten) mens du trykker bokstaven r, og så skrive cmd (og trykke Enter). For å kompilere programmet skriver du på kommandovinduet kommandoen javac etterfulgt av mellomrom og filnavn, for eksempel: > javac Utskrift.java NB! Husk at du ikke skal taste inn ">"-tegnet, dette tegnet kalles prompt og brukes bare for å angi at det som følger er en kommando som skal tastes inn på kommandovinduet. Promptet du ser på skjermen avhenger bl.a. av operativsystem, på Unix (Linux) kan det f.eks. se slik ut: bruker@maskin ~ $ d. Debugging: Hvis kompilatoren oppdager feil i programmet, retter du disse i tekstredigerings-programmet, lagrer, og kompilerer igjen. Feilmeldingen fra kompilatoren sier ofte hvor i programmet feilen sannsynligvis ligger, bl.a. vha. linjenummer. Bruk dette til å finne feilen, og husk at store og små bokstaver har betydning, både i programkoden og filnavnet. Mer info om kompilering og debugging kan du finne på side 17-18 i læreboken, og på Terminalvaktenes 1 of 6 30.8.2010 09:35

hjelpesider. e. Kjøring: Når du har rettet skrivefeilene slik at kompilatoren ikke gir noen feilmelding kan du «kjøre» programmet ved å skrive java Klassenavn på kommandovinduet, for eksempel: > java Utskrift 2. Finn fem syntaksfeil: kap. 1, oppg. 3 (side 24) Finn feilene i dette programmet: class Utskrift { public stitac void main(string args) ( System.out.println("Beethoven skrev Skjebnesymfonien") System.out.println("og åtte andre symfonier.); 3. Enkel formatering av utskrift: kap. 1, oppg. 5 (side 24) Vi ønsker å skrive ut følgende tekst på skjermen (med samme pyramideformatering): a a a a b a a c c a a d f d a Lag et Java-program som gjør dette, ved å bruke flere utskriftssetninger. Tips: Idéen her er å finne hvor og hvordan man kan legge inn mellomroms-tegn i programmet for å få til pyramideformateringen. Senere i kurset, i kapittel 3 (side 52) vil du lære en annen måte å løse denne oppgaven på hvor Java tar seg av pyramideformateringen. 4. Areal av rektangler: kap. 2, oppg. 1 (side 43) Skriv et program som beregner arealet av rektanglene med disse sidestørrelsene: 3 og 5, 7 og 3, samt 4 og 9, og som skriver ut resultatet med en passende fortekst. Kompier og kjør programmet. Tips: Denne kan løses ved å følge oppskriften fra programmet på side 30 og skrive et lignende program, men med litt andre variabelnavn og beregninger. 5. Deklarasjon og initialisering av variabler: kap. 2, oppg. 2 (side 43) Finn feilene i dette programmet: class Volum { public static void main (String[] args) { integer lengde, bredde, høyde; lengde = 3; volum = lengde * bredde * høyde; System.out.println("Volumet er: " + volum); 2 of 6 30.8.2010 09:35

6. Typiske feilmeldinger: Hva betyr følgende feilmeldinger, som kompilatoren spytter ut når vi prøver å kompilere og debugge dette programmet: 1 class Test { 2 public static void main(string[] args) { 3 int jens; 4 int siv = Jens * 3; 5 System.out.println("Svar: " siv); 6 erna = siv - jens; 7 System.out.printn(erna); 8 a. Test.java:8: reached end of file while parsing b. Test.java:4: cannot find symbol symbol : variable Jens location: class Test int siv = Jens * 3; c. Test.java:4: variable Jens might not have been initialized int siv = Jens * 3; d. Test.java:5: ')' expected System.out.println("Svar: " siv); Test.java:5: illegal start of expression System.out.println("Svar: " siv); e. Test.java:6: cannot find symbol symbol : variable erna location: class Test erna = siv - jens; f. Test.java:7: cannot find symbol symbol : method printn(int) location: class java.io.printstream System.out.printn(erna); Hvis vi fjerner "{"-krøllparentesen på linje 2 får vi ca. 10 nye feilmeldinger, bl.a. følgende. Hva tipper du er grunnen til at så mange feilmeldinger forårsakes av bare denne enkle lille feilen? g. Test.java:2: ';' expected public static void main(string[] args) Test.java:5: <identifier> expected System.out.println("Svar: " + siv); Test.java:5: illegal start of type System.out.println("Svar: " + siv); 3 of 6 30.8.2010 09:35

7. Lovlig eller ikke? kap. 2, oppg. 5 (side 44) Hvilke av disse programsetningene er lovlige, og for de som er lovlige: hvilken verdi får variabelen? Du kan i hvert av punktene regne med at variablen som deklareres ikke er deklarert tidligere i programmet. (a) int x = 4; (b) int x = 4.56; (c) int x = (int) 4.56; (d) int z = 1/2; (e) double x = 5.7723; (f) double a = (int) 5.7723; (g) double x = 6; (h) double tall = true; (i) char c = "hei på deg"; (j) char c = "&"; (k) char c = '&'; (l) boolean a = sann; (m) boolean verdi = true && false; (n) boolean a = (true == true); (o) boolean a = (false == false); (p) boolean a = (a == a); (q) String t = 'hei på deg'; (r) String t = "hei på deg"; (s) String t = "" + 7.33; (t) String tekst = 7.33; 8. Uttrykk med int og double Avgjør i hvert av disse tilfellene, uten å bruke datamaskin, hvilken verdi som blir skrevet ut på skjermen. Husk at reglene for divisjon i Java avhenger av om vi jobber med heltall eller flyttall (=desimaltall) (se side 36-37 i læreboka). 1. System.out.println(10 / 9); 2. System.out.println(10 / 10); 3. System.out.println(10 / 11); 4. System.out.println((int) 3.65); 5. System.out.println((int) 3.65-4); 6. System.out.println((int) (3.65-4)); 7. System.out.println(Math.round(3.65)); 8. System.out.println(1 / 2); 9. System.out.println(1 / 2.0); 10. System.out.println(1.0 / 2); 11. System.out.println((double) 1 / 2); 12. System.out.println((double) (1 / 2)); 13. System.out.println(73 / 10); 14. System.out.println(73 % 10); Oppgaver til terminaltimen 1. Det første programet: kap. 1, oppg. 1 (side 23 i læreboken) (Se punkt 1. ovenfor) 2. Kompilerings- vs. kjørefeil: kap. 1, oppg. 2 (side 23) Med utgangspunkt i programmet nedenfor skal du utføre de angitte endringene en for en. Prøv først å kompilere programmet og studér eventuelle feilmeldinger. Dersom programmet lar seg kompilere, så forsøk å kjøre det. For hvert forsøk skal du rette programmet tilbake til utgangspunktet og kontrollere at det virker. Her er programmet (som skrives inn i en fil med navnet Studie.java): 4 of 6 30.8.2010 09:35

class Studie { public static void main(string[] args) { System.out.println("Rett på Java"); a. b. c. d. e. Fjern ordet static. Fjern ordet void. Skriv studie i stedet for Studie. Skriv Skrått i stedet for Rett. Fjern den siste krøllparentesen. 3. Enkel formatering av utskrift: kap. 1, oppg. 5 (side 24) (Oppgaveteksten står i punkt 3. ovenfor) 4. Areal av rektangler: kap. 2, oppg. 1 (side 43) (Oppgaveteksten står i punkt 4. ovenfor) 5. Typiske feilmeldinger: (Oppgaveteksten står i punkt 6. ovenfor). Korrigér feilene slik at programmet kompilerer. 6. Lovlig eller ikke? kap. 2, oppg. 5 (side 44) (Oppgaveteksten står i punkt 7. ovenfor) 7. Hvis du har enda mer tid kan du også begynne å titte litt på noen av disse kildene med nyttig informasjon. Det er bare de 2 første som er viktigst, men spesielt interesserte kan fortsette nedover i lista og finne enda mer informasjon. Kursets hjemmeside: ifi.uio.no/inf1000/v10 er din viktigste kilde til informasjon om kurset. Du bør bli godt kjent med denne websiden, og følge med på beskjedene som publiseres der (særlig i forbindelse med de 4 obligatoriske oppgavene). Kurshjemmesiden har (eller vil snart få) lenker til forelesningsnotater, obliger, ukeoppgaver, Innleveringssystemet, Godkjentsystemet wwws, og Bloggen. Webmail: webmail.uio.no Her finner du din e-post-konto på universitetet. Denne bør du sjekke regelmessig, eller evt. sette opp automatisk videresending av mailene dine til en annen e-post-adresse (se «UiO-instillinger» når du er inne i systemet). Du kan bruke som e-post adresse: brukernavn@ulrik.uio.no IfiDVD: ifi.uio.no/ifidvd Finnes både på nettet og som fysisk plate du kan få gratis (på gruppene eller Ifi-ekspedisjonen). Denne DVD-ROM-platen inneholder mye nyttig programvare du kan installere i din egen datamaskin. Terminalvaktenes hjelpesider: termvakt.uio.no har info om terminalstuene; programvare tilgjengelig i disse, bl.a. en Enkel innføring i Emacs og Unix/Linux; og mye mer. Oracles offisielle websider om Java: Her finner du bl.a. siste versjon av Java (for tiden JDK 6 Update 16), og mye dokumentasjon, f.eks. om API og en tutorial. Lærebokens hjemmeside: Har bl.a. løsningsforslag til noen av oppgavene i boken, og lenke til en veiledning (PDF) om hvordan du kan installere Java og easyio på egen Windows-pc (selv om noen av lenkene i websiden ikke fungerer akkurat nå). Forkurs i informatikk: Har forelesningsnotater og lab-oppgaver om Linux, Emacs, og Java fra forkurset som foregikk 18. - 20. aug 2010. Der finner du også lenker til mer informasjon om Emacs, og om hvordan du kan koble deg til UiO hjemmefra eller overføre filer. Wikipedia: Har mye nyttig informasjon om Java og relaterte teknologier, og mye mer! Google: Hvis du ikke skjønner en feilmelding fra kompilatoren kan du lime inn feilmeldingen i søkefeltet til Google og finne hjelp! Gruppelærer: Du kan alltid sende mail til din gruppelærer hvis du har spørsmål, kommentarer, e.l. 5 of 6 30.8.2010 09:35

Løsningsforslag Kommer... Tibakemelding om dette oppgavesettet kan du skrive i bloggen. 6 of 6 30.8.2010 09:35