Læreboken på 45 minutter

Like dokumenter
INF Løsning på seminaropppgaver til uke 8

Innhold. IN1000 Høst Hva skal evalueres? Fra kurssidene. Uke 12: Pensumgjennomgang og eksamenstips

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

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Mer objektorientert programmering

Klasser Palindrom T-banen HashMap T-banen

INF Notat om I/O i Java

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

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

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

Innhold. Hva skal evalueres? Fra kurssidene. Kapittel 1: Introduction

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

INF1000 Prøveeksamen Oppgave 7 og 9

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

IN1010 våren januar. Objektorientering i Java

INF1000: Forelesning 7

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

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

INF1000: Forelesning 7. Konstruktører Static

UNIVERSITETET I OSLO

Repetisjon INF 1000 våren 2006

IN Notat om I/O i Java

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

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

Fra Python til Java, del 2

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000: Forelesning 4. Mer om arrayer Metoder

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

Forelesning inf Java 5

Forelesning inf Java 5

UNIVERSITETET I OSLO

INF1000 oppgaver til uke 38 (17 sep 23 sep)

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

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

Programmeringsspråket C

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

Mål for INF1000. Repetisjon INF 1000 våren Representasjon av data. Programvareutvikling - oversikt

Gjennomgang av eksamen H99

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Forelesning inf Java 4

Løse reelle problemer

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

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

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

Blokker og metoder INF1000 (Uke 6) Metoder

Oppgave 3: Binær representasjon

Oblig4 - forklaringer. Arne og Ole Christian

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

INF1000-SIKT - Notat om I/O i Java

Å lese tall fra en fil, klassen Scanner

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Løse reelle problemer

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

UNIVERSITETET I OSLO

Velkommen til. INF våren 2016

INF1010 våren januar. Objektorientering i Java

Jentetreff INF1000 Debugging i Java

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

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

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

INF1000 (Uke 6) Mer om metoder, tekster

UNIVERSITETET I OSLO

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; }

TOD063 Datastrukturer og algoritmer

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Transkript:

Kap 1 Kap 2 Kap 3 Kap 4 Kap 5 Kap 6 Kap 7 Kap 8 Annet Læreboken på 45 minutter Hva er viktig? Hva er ikke fullt så viktig?

Hvorfor har vi en lærebok? Læreboken forteller stort sett mer detaljert enn forelesningene. Det er en fordel å få ting fortalt på to ulike måter. Læreboken er bedre å slå opp i. Random fact og Special topic er artig å lese og utdyper faget (selv om de ikke er pensum). Common error, Programming tip og Self check er nyttige (men de er heller ikke pensum).

Introduction Kapittel 1: Introduction Innholder først og fremst bakgrunnsinformasjon for det som kommer senere. «Programmering er problemløsing» [BJ: 1.7] Nyttig lærdom: Det første viktige steget i programmering er å omforme problemet til en algoritme, dvs gi det en form som datamaskinen kan løse. Så kan algoritmen skrives i Java.

Fundamental data types Kapittel 2: Fundamental data types Dette kapittelet omhandler tre ting: 1 numeriske typer og uttrykk; int og double er viktigst. 2 I/O (lesing og skriving) med 3 String Scanner/hasNextLine/nextLine og eventuelt Integer.parseInt System.out.println Dette er stoff vi regner med at dere kan bruke ved programmering; unntaket er formatert utskrift [BJ: 2.3.2] som ikke er pensum.

Descisions Kapittel 3: Decisions Dette kapittelet tar for seg det som har med valg å gjøre: 1 if-setninger 2 ulike typer sammenligninger 3 datatypen bool Dette må dere kunne bruke i programmering; unntaket er flytskjemaer [BJ: 3.5] som ikke er pensum.

Loops Kapittel 4: Loops Nå er tiden kommet til løkker: 1 while-løkker går så lenge en betingelse gjelder 2 for-løkker går et gitt antall ganger Dette er uunnværlige redskaper i en programmerers verktøykasse. Omtrent alle programmer inneholder en løkke. Dette er ikke pensum: do-løkker [BJ: 4.4] simulering og tilfeldige tall [BJ: 4.9] (selv om det har vært forelest som eksempel)

Methods Kapittel 5: Methods Nå begynner det å bli mer avansert. Alt i kapittelet er sentralt pensum (unntatt rekursive metoder [BJ: 5.9]): [BJ: 5.1] om metoder som «svarte bokser» for lettere å holde oversikten over programmet. [BJ: 5.2 og 5.6] Hva bruker vi metoder til? unngå å gjenta kode (static-metoder) definere grensesnittet til en klasse (se kapittel 8) [BJ: 5.3] Parametre! Noe av det aller viktigste i hele kurset! [BJ: 5.4 5] Returverdier (for de metoder som ikke er void-metoder)

Methods [BJ: 5.7] Problemløsing med stegvis forfining beskriver en god teknikk til å la et program bli til litt etter litt. [BJ: 5.8] En variabels skop er delen av et program en variabel er tilgjengelig. Enkelt sagt: En lokal metodevariabel finnes bare når metoden utføres.

Arrays and array lists Kapittel 6: Arrays and array lists Array-er er en veldig mye brukt datastruktur. [BJ: 6.1] introdusere array-er. [BJ: 6.2] spesialisert for-løkke brukes for ArrayList og HashMap. [BJ: 6.3] gir eksempler på bruk av array-er. [BJ: 6.4] beskriver hvordan man bruker array-er i metoder. [BJ: 6.5] er et nyttig avsnitt om hvordan man kan løse problemer ved å bruker array-er. [BJ: 6.6] todimensjonale arrayer er ikke pensum. [BJ: 6.7] tar for seg klassen ArrayList som man kan bruke når man ikke vet arrayens størrelsen på forhånd.

Arrays and array lists import java.util.arraylist; import java.util.scanner; import java.io.*; class More { public static void main(string[] arg) throws Exception { ArrayList<String> buffer = new ArrayList<>(); Scanner s = new Scanner(new File(arg[0])); } } while (s.hasnextline()) { buffer.add(s.nextline()); } for (int i = 0; i < buffer.size(); ++i) { System.out.println((i+1) + ": " + buffer.get(i)); }

Input/output and exception handling Kapittel 7: Input/output and exception handling Dette kapittelet tar opp mye mer om lesing og skriving enn vi trenger i INF1000, så det lille heftet om I/O du finner på nettsiden, er vårt pensum isteden. Unntakshåndtering er ikke pensum.

Objects and classes Kapittel 8: Objects and classes Dette er det viktigste kapittelet i INF1000; kurset heter jo Grunnkurs i objektorientert programmering. Hele kapittelet er pensum. Jeg vil anbefale å legge like mye vekt på forelesningspresentasjonene som på læreboken for å få fullt innblikk i objektorientert programmering.

Oppskriften Fremgangsmåte 1 Finn ut hvilke klasser vi trenger og hvordan de skal henge sammen; her er UML-diagram nyttig. Husk: En klasse skal representere noe spesifikt, enten et konsept eller en fysisk gjenstand. 2 Definer grensesnittet (dvs metodene). 3 Finn representasjonen (dvs objektvariablene). 4 Programmer grensesnittmetodene.

UML klassediagrammer Annet forelest pensumstoff UML klassediagrammer [BJ: app K] UML klassediagrammer er et nyttig verktøy. De brukes under planleggingen av programmeringen og viser klassene (med representasjon og grensesnitt) og hvordan de forholder seg til andre klasser. Relasjonsangivelsen (navnet og antallet) gir et grunnlag for å definere mye av representasjonen.

UML klassediagrammer Tbaneplanlegger linjer: Linje[] frastasjon: Stasjon tilstasjon: Stasjon oversikt: Stasjonsoversikt main(arg: String[]): void linjer 1..* 1 oversikt Linje linjenr: int linjer stasjoner: ArrayList<Stasjon> 1..* oversikt: Stasjonsoversikt Linje(nr: int) 1 oversikt Stasjonsoversikt tabell: HashMap<String,Stasjon> finnes(navn: String): boolean finn(navn: String): Stasjon til og fra 2 1..* stasjoner Stasjon navn: String linjer: ArrayList<Linje> Stasjon(navn: String) tostring(): String finnesdirektereise(s: Stasjon): boolean 0..* tabell

Oppslagstabeller Oppslagstabeller (HashMap) [BJ: 15.4] En HashMap er som en ArrayList der indeksen er en String i stedet for et heltall. Viktig. import java.util.hashmap; class Hoh { public static void main(string[] arg) { HashMap<String,Integer> hoh = new HashMap<>(); hoh.put("oslo", 10); hoh.put("bergen", 5); hoh.put("hamar", 127); } } for (int i = 0; i < arg.length; i++) { if (hoh.containskey(arg[i])) { System.out.println(arg[i] + " ligger " + hoh.get(arg[i]) + " moh."); } else { System.out.println(arg[i] + " er ukjent."); } }

Tegnsett Tegnsett [BJ: RF 2.2, app A] Det finnes mange tegnsett; de mest brukte er ISO Latin-1 (= ISO 8859-1) og Unicode; den siste kodes gjerne som UTF-8. Dette er ingen viktig del av pensum.

Binærtall i ulike former Digital representasjon av tall [BJ: app I] Dere bør kunne konvertere små tall 64 fra desimalt til binært og heksadesimalt og omvendt; ellers ikke viktig i dette kurset. Digital koding av lyd Ikke pensum. Digital koding av bilder Ikke pensum.

De sosiale sidene ved IT IT og samfunn, personvern Dette er viktig i pensum. For mer informasjon, se Siris presentasjon i uke 6.

Og helt til sist... Til sist Husk at: Det er lurt å lese teori, men praksis er det man virkelig lærer programmering av. Oversikt er viktigere enn detaljer under eksamen. Formålet med en eksamen er å overbevise sensorene om at du kan det viktige i dette stoffet.