Versjon (vil bli endret).

Størrelse: px
Begynne med side:

Download "Versjon (vil bli endret)."

Transkript

1 Versjon (vil bli endret). Dette dokumentet bør leses før forelesningen 26. januar 2012 og er en del av «pensum». De er også laget med tanke på repetisjon. (Lysarkene som blir brukt egner seg ikke til selvstudium). Dokumentet blir revidert og oppdatert før og etter forelesningen, men legges likevel ut et par dager før. Det kan være lurt å vente med å skrive det ut til det står «(endelig)» etter datoen ovenfor. Etter forelesningen skal du vite forskjell på variable av primitive typer og pekervariable kunne lage javaprogrammer med lenkede lister (linked lists): enkellenkede dobbeltlenkede sorterte vite hva som menes med listehode og -hale vite hva som menes med kø, lifo og fifo vite hva en tilstandspåstand er

2 Innholdsoversikt To grunntyper av variabler Pekervariable og variable av primitive typer Datastrukturer Grafer (for 1010: lenkede lister) Lister og køer Hva er en liste? Lenkede lister Lenkede lister Eksempel på en lenket liste: personliste Operasjoner på lenkede lister (enkeltlenket) FIFO- og LIFO-lister

3 Pekervariable og variable av primitive typer class Heltall { int t a l l ; Heltall ( int t ) { t a l l = t ; } } int a=0, b=7; Heltall refa, refb ; refa = new Heltall ( 0 ) ; refb = new Heltall ( 7 ) ; a = b; refa = refb ; b = 8; refb. t a l l = 8; System. out. println ( a, b, refa. t a l l, refb. t a l l ) ; Oppgave: Hva er verdien av de fire variablene i println-setningen over? (Hint: tegn datastruktur for dette programmet og sjekk at du forstår hvorfor utskriften blir som den blir. Gjør dette før du leser neste side.)

4 a b refa refb a = b; refa = refb; a b refa refb b = 8; refb.tall = 8; a b refa refb

5 Algoritmer og datastrukturer Ethvert program har en datastruktur som data manipuleres og lagres i. Programmet (algoritmene) virker på datastrukturen og endrer den. Datastrukturen endrer seg under programutførelsen. Å lage «øyeblikksbilder» av datastrukturen i et program gir et godt bilde av hva programmet gjør. Java datastruktur-tegninger er deler av et slikt bilde, og er en måte å lage en tilstandspåstand om datastrukturen i det gitte øyeblikket. Jf. Stein Gjessings notat som ble gjennomgått for en uke siden. Alle programmer har en datastruktur enkeltvariable arrayer HashMap grafer (lister og trær mm.) Det er hovedsakelig disse fire vi kan velge blant når vi skal bestemme datastrukturen i et program. Har vi mye data og holde orden på, bør vi velge en av de tre siste. (I tillegg har Javas API mange ferdiglagede datastrukturer.)

6 Beholdere, mengder, programmer med en «database» Mange programmer skal holde orden på en relativt omfattende mengde objekter. Ofte betyr det lite hvordan objektene er organisert, så lenge programmet holder orden på dem. Vi benytter gjerne gjerne ferdiglagede datastrukturer for dette formålet, jf. HashMap (som er en forhåndsdefinert klasse i Java). Vi skal nå se på datastrukturen lenket liste som også kan benyttes for å holde orden på mange objekter.

7 Lenkede strukturer Når vi har en datastruktur der (mange) objekter referer (peker på) andre objekter, får vi en graf. I hvert objekt kan vi ha mange pekere, og vi kan lage så komplekse grafer (nettverk) vi ønsker. En fordel med grafer sammenlignet med Array og HashMap er at vi ikke trenger å ta stilling til antall objekter. I INF1010 skal vi først og fremst bruke strukturen lister som er den vanligste strukturen i programmer når vi har mange objekter og holde orden på. Og særlig når det er vanskelig å anslå antallet på forhånd.

8 Lister og køer eksempler på lister kandidatliste handleliste spillerliste sensurliste deltakerliste gjesteliste sjekkliste ordliste resultatliste... I INF1010 generelt: en liste av objekter.

9 Lister er en sekvensiell datastruktur Vi bruker liste om en struktur som har en sekvensiell form. I programmering er lister den vanligst forekommende datastruktur. Alle sekvensielle data (i en array f.eks.) kan kalles en liste. En fil kan ses på som en liste av tekststrenger (linjer). En tekststreng er igjen en liste av tegn. En fil kan derfor ses på som en liste av lister av tegn. Vi bruker flere ord for å betegne lister og mer bestemte typer av lister. Det viktigste ved en liste, er at det innebærer en ordning av objektene etter hverandre i sekvens, slik at man fra et element kan finne det neste (eller forrige). Eksempler på andre begreper som har «listeegenskaper»: sekvens, array, tabell, kø, stack (jf. norsk kortstokk), stabel... Med en kø forstår vi en liste hvor det også finnes regler for hvordan elementer kommer inn og tas ut av lista. På engelsk brukes ordet «queue» oftest om en FIFO-liste. («rettferdig kø»)

10 Forskjellige implementasjoner av lister filer arrayer lenkede lister enkeltlenkede lister dobbeltlenkede lister med og uten listehode og -hale FIFO- og LIFO-køer (lister med regler) Du vil lære mer (og bedre) om de forskjellige implementasjonene ved å løse oppgavene som blir gitt til gruppene i neste uke. Programmeringseksemplene i dette dokumentet begrenser seg til enkeltlenkete lister.

11 Hva er en lenket liste? Jonathan Susanne Imran Nikita Adnan personliste Alle disse begrepene betegner det samme sammensatte objektet: pekerkjedeliste enkeltlenket liste pekerliste lenket liste lenkeliste linked list (vanligst på engelsk) chained list Objektene i lista har pekere for å referere til neste (evt. forrige) objekt. Slik bygges lista opp som en sammenhengende lenke av objekter ved hjelp av pekere.

12 Personobjektet "Taher"... navn Taher Taher type: String nesteperson navn: navn type: Person navn: nesteperson Samme objekt (instans) av klassen Person tegnet på tre måter. Pekeren nesteperson kan peke på et objekt (instans) av samme klasse (evt. NULL). Fra venstre mot høyre fjernes informasjon som variabeltype og -navn. Legg også merke til at String-objektet med verdi «Taher» er sterkt forenklet, slik at vi står igjen med et personobjekt som er strippet for det meste, bortsett fra verdien i navn og pekeren som kan peke på et personobjekt. Hva er det vi har glemt i alle versjonene av objektet for at det skal kunne brukes i et javaprogram?

13 class Person { String navn ; Person nesteperson ; // andre attributter } class Personer { Person personliste ; // andre attributter // og metoder t i l å manipulere l i s t a } // Lage en ny l i s t e med personer : Personer minevenner = new Personer ( ) ; En første programskisse av personlista. Først klassen som beskriver personobjektene som skal lenkes sammen. Deretter en klasse som beskriver selve lista, dvs. inneholder pekeren til den. Til sist må vi ha en (peker)variabel til å «holde på» lista. Vi kunne laget lista uten klassen Personer og hatt en variabel (av hvilken type) som pekte direkte på første objektet i lenkelista.

14 Et listeobjekt Person Person Person Person Person nesteperson String navn nesteperson String nesteperson String nesteperson String Jonathan Susanne Imran Nikita Elisabeth navn navn navn navn Person nesteperson String Figur: Objektdiagram av en personliste med 5 personer null personliste Et objekt av klassen Personer Java datastrukturtegning som viser en instans av klassen Personer og de objektene (5 instanser av klassen Person) som er tilgjengelige fra den, dvs som programmet kan nå ved å følge pekerne. Oppgave: Skriv et javaprogram som oppretter denne datastrukturen. Bruk klassene skissert på forrige side.

15 Forenklet listeobjekt Jonathan Susanne Imran Nikita Adnan personliste Samme datastrukturfigur som på forrige side, men tegnet med forenklede personobjekter. I tillegg har vi i personlisteobjektet tegnet inn 4 metoder. Dette er et naturlig sted (med denne strukturen) å legge de metodene som skal manipulere personlista (utføre listeoperasjoner finne, fjerne, endre, legge til... personobjekter). Overskriften tyder på at vi her betrakter det som ser ut som 6 objekter som ett. Dette fordi vi kan tenke oss at lista ligger inne i objektet av klassen Personer (det med metodene). Oppgave: Hvor mange objekter skulle det vært i tegningen om vi hadde tegnet den så detaljert som mulig?

16 Hvilke operasjoner trenger vi? sette inn en ny person finne en person fjerne en person bytte om to personer... class Personer { Person personliste ; } void setteinnperson ( Person inn ) { } ; void finneperson ( Person p ) { } ; void tautperson ( Person ut ) { } ; //...

17 Innsetting først sist sortert etter en attributtverdi prioritet tid i lista Før vi kan bestemme det, må vi vite hvordan lista skal administreres? F.eks. om den skal være FIFO eller LIFO. Hvis vi ikke vet det, kan vi lage flere innsettingsmetoder.

18 Innsetting først (LIFO) void settinnpersonforst ( Person inn ) { \\ Hvis l i s t a er tom, sett inn objektet i f ( personliste == null ) personliste = inn ; else { \\ minst et objekt i l i s t a inn. nesteperson = personliste ; personliste = inn } } Hvorfor må vi ha if-testen? Tegn datastruktur og sjekk at metoden setter inn objektet først, før du ser på forklaringen på de neste sidene.

19 Innsetting etter et bestemt objekt /* * Setter personobjektet i inn etter personobjektet e * Hverken i e l l e r e er NULL. e Personobjektet som skal ha i som neste i Personobjektet som skal inn etter e */ void settinnpersonetter ( Person e, Person i ) { i. nesteperson = e. nesteperson ; e. nesteperson = i ; } e i

20 Innsetting etter et bestemt objekt e i i. nesteperson = e. nesteperson ; e i

21 Innsetting etter et bestemt objekt e i e. nesteperson = i ; e i

22 Innsetting etter et bestemt objekt Strukturen etter at metoden er ferdig: Vi flytter litt på objektene:

23 Innsetting sist (FIFO) void settinnpersonsist ( Person inn ) { \\ Hvis l i s t a er tom, sett inn objektet først i f ( personliste == null ) personliste = inn ; else { \\ finne siste element i l i s t a Person p = personliste ; while (p. nesteperson!= null ) p = p. nesteperson ; \\ her er p. nesteperson==null, altså er p siste p. nesteperson = inn } } Metoden har ikke direkte adgang (peker) til siste objekt. Må derfor lete seg fram til siste element. Her ved å bruke en while-løkke. Kunne vi tenke oss en enklere struktur slik at vi slapp dette?

24 Peker til siste element i lista Person Person Person Person Person nesteperson String navn nesteperson String nesteperson String nesteperson String nesteperson String Jonathan Susanne Imran Nikita Elisabeth navn navn navn navn null Person personliste Person sisteperson Et objekt av klassen Personer Innsetting kan skje i to skritt.

25 Tilleggskrav Eksempel på tilstandspåstander til lister: lista inneholder bare unike elementer lista er aldri tom lista har aldri mer enn k elementer objektene er alltid sortert Hjelper oss med å forstå hvordan metodene som manipulerer lista skal virke, men kan også gjøre programmeringen mer omfattende. Kan være lurt å innføre ekstra struktur, tellere og pekere. Generelt er tilstandspåstander ikke noe annet enn en påstand (sann eller gal) om tilstanden i programmet på et gitt sted, f.eks. etter en tilordning eller før et metodekall. En datastrukturtegning er et eksempel på en tilstandspåstand.

26 Skrive ut alle personene i lista // I klassen Personer : void skrivalle ( ) { Person p = personliste ; while (p!= null ) { p. skriv ( ) ; p = p. nesteperson ; } } // I klassen Person : void skriv ( ) { System. out. println (... ) ; } Legg merke til at metoden skrivalle er i klassen (instanser av klassen) Personer, mens metoden skriv er i alle (egentlig ikke alle, men vi kan alltid tenke og tegne sånn) objekter som er instanser av klassen Person, dvs. i alle personobjekter. skrivalle «løper gjennom» eller traverserer hele lista. Slike utskriftsmetoder er svært nyttige, ja nødvendige, når vi skriver og tester programmer på lenkelister, f.eks. i forbindelse med en oblig.

27 Lister er mer enn en mengde tellbarhet (endelig antall objekter) rekkefølge ikke nødvendigvis bare unike elementer hvor i lista kommer nye elementer (køregler) hvor tas elementer ut (køregler) Mengder implementeres likevel ofte som lister, men da slik at egenskapene over skjules. I mengder spiller ikke rekkefølgen noen rolle. Det er ikke noe første eller siste objekt i mengden. Et element er enten med i mengden eller ikke. Hvis rekkefølge ikke spiller noen rolle og køregler ikke er definert, er det enklest å implementere lista (mengden) LIFO (se nedenfor).

28 Lister med køregler køer inn ut ut FIFO (kø) Først inn først LIFO (stabel) Sist inn først ut inn

29 FIFO First In First Out (kø) Nyeste inn sist Eldste ligger først Eldste (første) er neste som betjenes (fjernes) Nyeste (siste) må vente lengst En FIFO-liste er en kø som har køregler som en «billettkø». Elementene rangeres etter hvor lang tid de har «stått i køen», slik at den står for tur som har stått lengst. En liste som administreres slik, kalles også «rettferdig kø». Eller bare «kø». (engelsk queue).

30 LIFO Last In First Out (stabel) Nyeste inn først (øverst) Eldste ligger sist, bakerst (underst) Nyeste (øverste) er neste som betjenes (fjernes) Eldste (underste) må vente lengst En LIFO-liste er en «kø» som har omvendte køregler i forhold til en FIFO-liste. Elementene rangeres etter hvor lang tid de har «stått i køen», slik at den står for tur som kom inn i køen sist. En liste som administreres slik, kan kalles en stabel (ref. tallerkenstabel), fordi elementet som kom sist ligger øverst og er det første til å tas ut. Muntlig brukes oftere det engelske stack.

31 Valg av datastruktur array hashmap liste (fil) binærtre (søketre) annen grafstruktur Ethvert valg gir noen fordeler og noen ulemper.

32 Perspektiv Husk perspektivet. Man kan ikke se alt med et blikk. I en sammensatt datastruktur med mange objekter, er det fruktbart å skifte perspektiv fra det detaljerte, til det mer generelle, og tilbake. F.eks. vil vi noen ganger betrakte enkeltelementene i en liste som enkeltobjekter, andre ganger vil vi betrakte hele lista med tilhørende operasjoner som ett objekt. Begge måter er objektorienterte, men perspektivet skifter. I datastrukturtegningene har vi sett at vi i tellgg til å forenkle, også utelater viktige elementer som f.eks. klassedatastrukturen der main-metoden ligger. Dette av pedagogiske grunner, for mange detaljer kan forvirre. Men da er det viktig at man vet hva som er perspektivet til figuren. Er du i tvil, spør!

33 Objektorientering «alt» er objekter informasjonsskjuling innkapsling generiske typer arv og polymorfisme Husk at et objekt er en instans av en klasse. Flere av begrepene ovenfor har vi ikke gått igjennom ennå. Men det kommer. INF1010 har tittel objektorientert programmering. Å forklare med få ord og definisjoner hva objektorientert programmering er, er ikke mulig. Hele INF1010 dreier seg til sist om det.

Velkommen til INF1010

Velkommen til INF1010 Velkommen til INF1010 Dagens forelesning Hvordan jobbe med INF1010 Pensum Datastrukturer Grafer (lister og trær) Objektorientert programmering Lister og køer Hva er en liste? FIFO- og LIFO-lister Lenkede

Detaljer

Lenkelister. Lister og køer.

Lenkelister. Lister og køer. Lenkelister. Lister og køer. INF1010 Stein Michael Storleer 27. januar 2011 Dagens forelesning Lenkede lister Lenkede lister Eksempel på en lenket liste: personliste Operasjoner på lenkede lister (enkeltlenket)

Detaljer

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2 Velkommen til INF1010 Studieaktiviteter i INF1010 Programmering (oppgaveløsning) alene/kollokvier programmeringslab (plenums)øvelser forelesninger gruppe som repeterer stoff fra forelesning, og øvelser

Detaljer

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

Detaljer

Studieaktiviteter i INF1010

Studieaktiviteter i INF1010 Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

Detaljer

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. "Taher" type: String : type: :... type: : inf1010student null michael@ifi.uio.no INF1010 26. januar 2012 (uke 4) 2 class Eks01 { public

Detaljer

Vanlige datastrukturer. I dette lysarksettet

Vanlige datastrukturer. I dette lysarksettet Vanlige datastrukturer I dette lysarksettet datastrukturer Datastrukturer i Med datastruktur mener vi måten objektene i et program er strukturert på. Særlig blir det aktuelt å snakke om struktur hvis vi

Detaljer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF januar 2015 Stein Michael Storleer (michael) Lenkelister INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet

Detaljer

INF1010 siste begreper før oblig 2

INF1010 siste begreper før oblig 2 INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av

Detaljer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene.

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene. Om pensum Dagens forelesning handler om (de to datastrukturene) lister og binære trær. Etter forelesningen skal studentene kjenne til datastrukturene lister og binære trær og kunne lage programmer som

Detaljer

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013 Binære søketrær Et notat for INF Stein Michael Storleer 6. mai 3 Dette notatet er nyskrevet og inneholder sikkert feil. Disse vil bli fortløpende rettet og datoen over blir oppdatert samtidig. Hvis du

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

Dagens tema INF1010 INF1010 INF1010 INF1010

Dagens tema INF1010 INF1010 INF1010 INF1010 I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb Lenkelister, iteratorer, indre klasser Repetisjonskurs våren 2018 kristijb Lenket liste av objekter Vi lager en lenke ved at objekter refererer til hverandre. Vanlige er ofte å ha Node-objekter som har

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 6. juni 2013 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

INF1010 e-postadresser

INF1010 e-postadresser INF1010 e-postadresser Ikke-faglige spørsmål til studieinfo@ifi.uio.no. Faglige spørsmål til blogen eller til @ifi.uio.no: brukernavn kristoeb josek stianf bendiko bmmender espeak richar daghf

Detaljer

Lenkelister og beholdere av lenkelister

Lenkelister og beholdere av lenkelister Lenkelister og beholdere av lenkelister Et notat for INF1010 Stein Michael Storleer 4. februar 2013 Lister er den vanligste datastrukturen. Vi treffer på den overalt. Når vi har mange objekter i et program,

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin INF1010 forelesning Lenkelister II Dette skrivet inneholder en oversikt over det jeg planlegger å forelese på andre forlesning om lenkelister. Det inneholder stort sett programeksempler med kommentarer

Detaljer

INF1010. Stein Michael Storleer (michael) Lenkelister

INF1010. Stein Michael Storleer (michael) Lenkelister INF1010 Stein Michael Storleer (michael) Lenkelister Lenke Datastrukturen lenkeliste class { = null ; foran foran = new () ; class { = null ; foran foran = new () ; foran. = new () ; class { = null ; foran

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 9. juni 2011 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre INF1010 Rekursive metoder, binære søketrær Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre public void skrivutmeg ( ) { System. out. println (navn + " er venn med " + minbestevennheter

Detaljer

INF1010 Binære søketrær ++

INF1010 Binære søketrær ++ INF1010 Binære søketrær ++ Programeksempler med insetting, gjenfinning av noder i et binært søketre samt eksempler på hvordan lage en liste av et binærtre. Hva må du kunne om binære søketrær i INF1010

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

Velkommen til. INF våren 2016

Velkommen til. INF våren 2016 Velkommen til INF1010 - våren 2016 Denne uken (onsdag og torsdag): Om INF1010 Java datastrukturer Klasser med parametre i Java Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 INF1010

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 9/1/2005 inf1060 V05 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

Detaljer

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {} En implementasjon av binærtre Dagens tema Eksempel på binærtreimplementasjon Rekursjon: Tårnet i Hanoi Søking Lineær søking Klassestruktur hovedstruktur abstract class { class Person extends { class Binaertre

Detaljer

Liste som abstrakt konsept/datatype

Liste som abstrakt konsept/datatype Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert

Detaljer

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010 Hvorfor sortering og søking? Man bør ha orden i dataene umulig å leve uten i informasjonssamfunnet vi blir fort lei av å lete poleksempel internett alt er søking og sortering alternativer til sortering

Detaljer

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Grunnleggende Datastrukturer

Grunnleggende Datastrukturer Grunnleggende Datastrukturer Lars Vidar Magnusson 7.2.2014 Kapittel 10 Stakker og køer Lenkede lister Pekere og objekter Trerepresentasjoner Datastrukturer Vi er i gang med tredje del av kurset hvor vi

Detaljer

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven: INF1010 2015 Obligatorisk oppgave 9, 10 og 11 SUDOKU Versjon 26. mars. Ved behov for presiseringer i del 10 og 11, kan det komme ny versjon 16. april, men ingen endringer i selve oppgaven. Denne obligatoriske

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

INF1010 - Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF1010 - Objektorientert programmering. Datastrukturer i Java Klasser med parametre INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol)

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

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

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML) Innhold Unified Modelling Language UML INF1000 Høst 2015 Uke 8: Mer objektorientert programmering Siri Moe Jensen En ny type for-løkke Organisering av mengder av objekter HashMap Valg av representasjon

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.

Detaljer

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Gaustadbekkdalen, januar 27 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår inne i primærlageret

Detaljer

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen Innhold uke 10 Hva bruker vi klasser til? Objektorientert programmering i Python IN1000 Høst 2018 uke 10 Siri Moe Jensen Noen sentrale datastrukturer for programmering lenkede lister trær grafer Eksempler:

Detaljer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til

Detaljer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til

Detaljer

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Seminaroppgaver IN1010, uke 2

Seminaroppgaver IN1010, uke 2 Seminaroppgaver IN1010, uke 2 1.a: Skriv en klasse HeiVerden.java. Klassen skal inneholde en main- metode (se på notatet fra tidligere). Inne i main -metoden skal programmet først la brukeren oppgi en

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array 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 INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006 Løsningsforslag for Obligatorisk Oppgave 3 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.03.14 Den tredje obligatoriske oppgaven tar for seg forelesning 9 til 13, som dreier seg om

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

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

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

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

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

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

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Lørdag 15. desember 2001, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.

Detaljer

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

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten

Detaljer

Dagens tema C, adresser og pekere

Dagens tema C, adresser og pekere Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger

Detaljer

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Ark 3 av 26. printf(i adresse %08x ligger b med verdien %d.\n, &b, b); printf(i adresse %08x ligger a med verdien %d. Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Adresser Som nevnt tidligere ligger data og programkode

Detaljer

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet INF1010 e-ostadresser Ikke-faglige sørsmål til studieinfo@ifi.uio.no. Faglige sørsmål til blogen eller til @ifi.uio.no: brukernavn navn kristoeb Kristoffer Egil Bonarjee josek Jose Louis Rojas

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python 1 Enkle datastrukturer Lars Greger Nordland Hagen algdat@idi.ntnu.no Introduksjon til øvingsopplegget og gjennomgang av python 2 I dag Stack Kø (queue) Lenkede lister (linked list) Trær Binære søketrær

Detaljer

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven: INF1010 2016 Innleveringsoppgave 8 SUDOKU Versjon 29. mars. Denne versjonen gjelder oppgave 8. Resten er tatt med bare for å gi en pekepinn om arbeidet videre. Det kommer andre krav til del 10 og 11 når

Detaljer

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol)

Detaljer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær: TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer

Detaljer

Velkommen til. INF våren 2017

Velkommen til. INF våren 2017 Velkommen til INF1010 - våren 2017 Idag: 1. time: Om INF1010 2.time: Om Objekter i Java 1 Stein Gjessing og Stein Michael Storleer Universitetet i Oslo 1 INF1010 Objektorientert programmering I INF1010

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer Hva er en datastruktur? Datastrukturer Elementære Datastrukturer En datastruktur er en systematisk måte å lagre og organisere data på, slik at det er lett å aksessere og modifisere dataene Eksempler på

Detaljer

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen Binære søketrær En ordnet datastruktur med raske oppslag Sigmund Hansen Lister og trær Rekke (array): 1 2 3 4 Lenket liste (dobbelt-lenket): 1 2 3 4 Binært søketre: 3 1 4 2 Binære

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 5: Prioritetskø og Heap Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 5 1 /

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger

Detaljer

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre: Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et

Detaljer

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

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være

Detaljer

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet INF2810: Funksjonell Programmering Køer, tabeller, og (litt om) parallelitet Stephan Oepen & Erik Velldal Universitetet i Oslo 5. april 2013 Tema 2 Siste gang Kort om underveisevaluering Destruktive listeoperasjoner

Detaljer

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

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet INF2810: Funksjonell Programmering Køer, tabeller, og (litt om) parallelitet Stephan Oepen & Erik Velldal Universitetet i Oslo 5. april 2013 Tema 2 Siste gang Kort om underveisevaluering Destruktive listeoperasjoner

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2017 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2017, forelesning

Detaljer

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

behrozm Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009 Rekursiv programmering BTeksempel Datastruktur I klassen Persontre (rotperson==) Rekursjon Noen oppgaver/problemer er rekursive «av natur» Eksempel på en rekursiv definisjon Fakultetsfunksjonen

Detaljer

INF Innleveringsoppgave 6

INF Innleveringsoppgave 6 INF1010 - Innleveringsoppgave 6 Frist: Onsdag 16. mars, 10:00 Maks 6 poeng Om obligatorisk oppgave 4, 6 og 7 i INF1010, våren 2016: "Leger og resepter" Du skal jobbe med en problemstilling omkring leger

Detaljer

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum INF1000: noen avsluttende ord Arne og Ole Christian Det som er gjennomgått på forelesningene Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige

Detaljer

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

Detaljer