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

Like dokumenter
Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Objektorientert programmering i Python

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Hvorfor objektorientert programmering?

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

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

INF1010 siste begreper før oblig 2

INF våren 2017

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

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

Velkommen til. IN1010 Objektorientert programmering Våren 2018

Læringsmål uke 7. Introduksjon til objektorientert programmering. Paradigmet objektorientering. Objektreferanser. INF1001 Høst 2016 Uke 7

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Velkommen til. INF våren 2017

Introduksjon til objektorientert programmering

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

INF1000 Eksamensforberedelser og -tips. Høst 2014 Siri Moe Jensen

Kap 9 Tre Sist oppdatert 15.03

Lenkelister. Lister og køer.

Velkommen til INF1010

IN1010 Objektorientert programmering Våren 2019

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

Klasser og objekter. Tuva Kristine Thoresen 21. oktober Institutt for Informatikk

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

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

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

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

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

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

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

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

Informasjon Prøveeksamen i IN1000 høsten 2018

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF Algoritmer og datastrukturer

Informasjon Eksamen i IN1000 høsten 2017

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

Studieaktiviteter i INF1010

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Algoritmer og Datastrukturer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

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

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

IN Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

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

Pensum: fra boken (H-03)+ forelesninger

UNIVERSITETET I OSLO

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

IN1000 Obligatorisk innlevering 7

Dagens plan: INF Algoritmer og datastrukturer. Grafer vi har sett allerede. Det første grafteoretiske problem: Broene i Königsberg

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Versjon (vil bli endret).

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

Innhold. INF1000 Høst Hva skal evalueres? Fra kurssidene. Hvorfor har vi en lærebok? Uke 11: Repetisjon og pensumgjennomgang

PG4200 Algoritmer og datastrukturer Forelesning 7

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Klasser og objekter. Tuva Kristine Thoresen 4. november Institutt for Informatikk

AlgDat 12. Forelesning 2. Gunnar Misund

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. IN1000 Høst Hva skal evalueres? Fra kurssidene. Uke 12: Pensumgjennomgang og eksamenstips

PG4200 Algoritmer og datastrukturer Forelesning 10

UNIVERSITETET I OSLO

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

UNIVERSITETET I OSLO

Grunnleggende Grafteori

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

UNIVERSITETET I OSLO


INF Algoritmer og datastrukturer

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

INF1020 Algoritmer og datastrukturer GRAFER

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

INF Innleveringsoppgave 6

Algoritmer og Datastrukturer IAI 21899

UNIVERSITETET I OSLO

Det første grafteoretiske problem: Broene i Königsberg

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

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

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

INF Algoritmer og datastrukturer

I denne oppgaven skal vi gi en enkel innføring til klasser og objekter (ordene forklares senere i teksten).

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

GRAFER. Hva er en graf? Det første grafteoretiske problem: Broene i Königsberg. Grafer vi har sett allerede

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

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

INF2810: Funksjonell Programmering

INF2220: Forelesning 1

INF2810: Funksjonell Programmering

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

Transkript:

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: Offentlig transport som lenket liste graf Merk: Nytt stoff i programmering, ikke nødvendigvis Python Oblig 7 og 8 Oblig 7: Frist 29.10 anbefalt levering 23.10 Kommenter "Klar for retting" før fristen! Fagutvalgets IN1000-seminar: 27.10 Oblig 8: Frist 5. 11 IN1000 Seminar! Hva? Hjelp med oblig 8 og eksamensforberedelse Dato: Lørdag 27. Oktober Program: 11:15 Foredrag i Simula 13:15 Oblighjelp og oppgavejobbing på termstuer Ca. 15:00 Pizza til alle påmeldte 17:00 Arrangementet slutter Påmelding: https://goo.gl/forms/cslgm5wb61buezju1 (se også Facebook-arrangement) 1

Typiske oppgaver for en klasse Å lage egne beholdere (containers) Modellering: representere et fenomen med egenskaper vi trenger å holde rede på. Sammensatte fenomener kan modelleres (representeres) ved hjelp av objekter fra flere klasser som refererer til hverandre Eks: Spillebrett og Celle Simulering: representere et fenomen vi vil eksperimentere med oppførselen til Støpeform: å være et mønster for noe vi ønsker å lage flere kopier av eks: klassen Celle i oblig 7 Verktøykasse: objektene tilbyr et sett tjenester som "hører sammen" gjerne knyttet til data som lagres i objektet eks: String-klassen i Python, klassen Navn fra uke 7/8 Beholder: å lagre, organisere og manipulere mengder av like objekter, dvs tilby tjenester for samlinger liste- og ordbok-klassene i Python Trenger en datastruktur for å lagre ukjent antall (like) objekter. I Python har vi lister, ordbøker og mengder hva om disse ikke fantes? Hvordan opprette en ny variabel hver gang vi trenger den og få tak i den senere? Vi kan gå i løkke og opprette objekter etter behov og vi har sett at et objekt deretter kan brukes fra ulike steder i programmet vårt, bare vi har en variabel med en referanse til objektet. Men hvordan sørge for nok referansevariable til et ukjent antall objekter, slik at vi kan finne dem igjen og bruke dem senere? => en klassisk datastruktur for et ukjent antall elementer er en lenket liste Lenkede lister Poenget med denne strukturen er at for hvert nye objekt vi lager så lager vi samtidig en referansevariabel som kan referere til et nytt objekt Lenket liste Lager en generell klasse for objektene i lenkelisten Klassen Node dvs hvert objekt må kunne referere til et annet objekt dermed får vi en lenket liste av objekter og trenger bare ha én referanse til det første objektet fra der vi skal bruke listen minliste None Grensesnitt for klassen Node: lese, endre, skrive ut,... innhold legg til ny etterfølger hent etterfølger (fjern etterfølger) 2

Klassen Node - implementasjon Datastruktur Node-klassen en referansevariabel så vi får tak i neste objekt innholdet objektene skal representere Eksempel - trikk Et eksempel der lenkene representerer viktig informasjon om objektene våre: class Node : def init (self, nytt) : self._innhold = nytt self. = None def nyetterfolger (self, ny) : self. = ny def hentneste (self) : return self. Her er nodene stasjoner på en trikkerute, dvs. den lenkede listen består av objekter av klassen Stasjon som inneholder referanser til nabostasjoner. <se egen presentasjon/ kildekode> # + metoder for manipulering av selve innholdet Innkapsling og generalisering Vi kan organisere et «uendelig» antall noder (f eks stasjoner) ved å opprette og lenke inn nye objekter av klassene Node (eller Stasjon) ved behov. Noen designmessige ulemper: 1. den som skal bruke klassen må kjenne til sammenlenkingen av objektene 2. for hver klasse vi ønsker å lage lister av, må vi skrive all koden som har med liste-håndtering å gjøre, om igjen den ligger jo innbakt i klassen sammen med informasjon om innholdet Tiltak: 1. Skjule klassen Node (Stasjon) inne i en klasse Lenkeliste (LagRute) som håndterer (og skjuler) alle lenke-operasjoner, og kun tilbyr brukervennlige tjenester for å opprette og administrere noder (Stasjoner) i sitt grensesnitt 2. Ta emnet IN1010 til våren Andre sentrale datastrukturer Lenkede lister har flere ulemper 1. Hvis man har mange noder, blir veien gjennom strukturen veldig lang, spesielt til siste node 2. Hvis man skal representere noder med flere enn en relasjon til andre noder, holder det ikke med én neste-referanse Punkt 1 kan avhjelpes noe vha endringer i implementasjon av nodene og listene. Mer om dette i IN1010. Kan være nyttig med andre strukturer, for eksempel trær. 3

Trær Trær Et tre har en node definert som roten i treet. Hver node kan ha flere etterfølgere, barn Trær har ikke sykler, dvs om man følger kanter fra roten eller en annen node kan man aldri komme tilbake til den man startet på Kan f eks modellere: slektstrær organisasjonskart Spesielt binære trær (hver node har maks to etterfølgere) brukes ofte til å representere data for oppslag, sortering og traversering Antall etterfølgere kan ellers avhenge av hva datastrukturen skal representere Generelt: Grafer Live eksempel II En graf består av en mengde noder, og en mengde kanter, der hver kant forbinder to noder med hverandre. En vei i en graf består av en mengde kanter i rekkefølge, slik at to på hverandre følgende kanter alltid har en node felles. En sti er en vei hvor hver node besøkes høyst én gang. 4

Generelt: Grafer Formelt, hentet fra IN2010 (ikke IN1000 pensum) Eksempler på anvendelser: Ruteplanlegging, datanettverk, sosiale nettverk og design av mikrobrikker En lenkeliste er en implementasjon av en enkel graf, der hver node kun refererer til én annen node, og det finnes en definert rekkefølge. Trær er litt mer komplekse grafer, men fortsatt med restriksjoner: Én rot, ingen sykler <mer om grafer i IN1150 og IN2010> 5