TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Relevanta dokument
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC Terminologi Uppdaterad Fö #1

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Facit Tentamen TDDC kl (6)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmering för språkteknologer II, HT2011. Rum

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Facit Tentamen TDDC (7)

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Tentamen i Algoritmer & Datastrukturer i Java

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 14 Innehåll

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Föreläsning 2 Datastrukturer (DAT037)

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 9 Innehåll

Sökning och sortering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Trädstrukturer och grafer

Föreläsning 9 Innehåll

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen, Algoritmer och datastrukturer

Föreläsning Datastrukturer (DAT036)

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Föreläsning Datastrukturer (DAT037)

TDDC76 Programmering och datastrukturer

Föreläsning 9. Sortering

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT037)

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datastrukturer. föreläsning 3. Stacks 1

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Föreläsning 9 Datastrukturer (DAT037)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 3 Datastrukturer (DAT037)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning 7. Träd och binära sökträd

Seminarium 13 Innehåll

Exempeltenta GruDat 2002/2003

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Imperativ programmering. Föreläsning 4

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Tentamen Datastrukturer (DAT036)

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Tentamen kl Uppgift 4. Uppgift 5

Föreläsning 15: Repetition DVGA02

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 4 Datastrukturer (DAT037)

Vad har vi pratat om i kursen?

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning 5 Innehåll

Föreläsning 13 Innehåll

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Tentamen TEN1 HI

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Länkade strukturer, parametriserade typer och undantag

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer, DAT037 (DAT036)

Transkript:

TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Repetition Om tentamen 1

FÖ1-2: Objektorientering Attribut (en. field) Information/egenskaper Metoder (en. method) Vad den kan göra Inkapsling Samarbete Gränssnitt 2

FÖ1-2:Klasser Beskriver en typ av objekt public class PacManBaddie { int color; Point position; boolean isvulnerable;... boolean caneat() { if (isvulnerable) { return true; else { return false; Beskrivs av Klass Objekt Instantierar 3

Hitta felet! public class Human { int age; public void printage(){ System.out.println("Jag är " + age + " år gammal"); public static void main(string args[]){ Human human; human.printage(); Ett objekt måste instantieras innan det kan användas.

Objekt vs referens public class TestClass { public static void nullify(cat c) { c = null ; public static void main(string[] args) { Cat c = new Cat("Kurre"); c.introduceyourself(); TestClass.nullify(c); c.introduceyourself(); // NullPointerException?! 5

Statiska metoder & attribut Hitta felet! public class Human { int age = 0; static int sum(int a, int b){ return a + b; static void increaseage(int addition){ age = age + addition; public static void main(string[] args){ Human human = new Human(); human.increaseage(1); Statiska metoder kommer inte åt instansvariabler.

Statiska metoder & attribut Instansmetoder kommer åt både klass- och instansvariabler Klassmetoder kommer endast åt klassvariabler static Klassmetoder Klassvariabler Klass En instansvariabel hör till en specifik instans En klassvariabel delas mellan alla instanser Dessutom: Beskrivs av Instansmetoder Objekt Instantierar Man behöver (bör) inte gå via en instans för att komma åt en klassmetod/klassvariabel Instansvariabler 7

Arv Möt tre studenter Gymnasiestudenten Anna Högskolestudenten Harry Impulsive Ivar Gillar att lösa problem med penna och papper Har just läst TDDC30 Gillar att lösa problem med en väl skriven programmeringsalgoritm Har just fyllt nio Gillar huvudbonader och att gå ut på rast 8

Polymorfism poly-morf (grek.) = många former public class PolyMorphExample { public static void morphschool(student student) { student.study(); student.solveproblem("what is the matrix"); Kan vara vilken subklass som helst Dröjer tills körningsögonblicket innan det bestäms Endast det som är deklarerat i Student är tillgängligt public static void main(string[] args) { Student anna = new HighSchoolStudent(); morphschool(anna); 9

Arv(2) Alla studenter bör kunna studera och lösa uppgifter Men den perfekte studenten är ett abstrakt koncept.. public abstract class Student { public void study() { System.out.println("I am studying very hard."); // This method has to be implemented by concrete // students public abstract String solveproblem(string problem); 10

Objektorientering Objekt skapas med en klass som mall Vid skapandet anropas en konstruktor Objekt vs referens till objekt == och equals null refererar till inget objekt this refererar till objektet själv, inom en instans Arv Överskuggning Skriva över funktioner Polymorfism Olika subklasser som kan behandlas som basklass Explicit typkonvertering final Abstrakta klasser och metoder 11

UML Beskrivning av en klass + public - private # protected ~ package private understruken static Italic abstrakt / derived Klassnamn Attribut Metoder 12

UML Beskrivning av relationer mellan klasser Association A använder en B Aggregation A har en B Komposition A äger en B OBS vag definition inom Java, undvik att använda Generalisering (arv) A ärver från B (A kan användas som en B) Realisering (interface) A implementerar B Beroende A är beroende av B Multiplicitet exempel: En A använder en eller flera B 13

UML Exempel: UML-beskrivning av Studentklasserna 14

Abstrakta Datatyper (ADT) Sammanfattning: ADT:er säger vad som ska göras För att bestämma hur det ska göras Välj datastruktur Konstruera algoritmer för ADT:ns operationer Samma ADT kan implementeras med Olika datastrukturer Olika algoritmer Välj den lösning som är mest effektiv i just ditt fall 15

ADT:er & datastrukturer genomgångna i kursen Ordbok Lista Länkad Enkellänkad Dubbellänkad Cirkulär Array Stack Kö Träd Binära Sorterade Binärt sökträd Heap

Träd Definition: Ett träd är en riktad acyklisk graf Består av noder & bågar Finns enn väg till varje nod Representation som länkar eller med ett fält Parent(optional) data left right Träd som ett fält: A B C D E F G H 17

Några fler termer Fullt binärt träd: Samtliga noder har noll eller två barn Perfekt träd: Ett fullt träd med alla löv på samma djup Fullständigt binärt träd: Ett perfekt träd med skillnaden att den får sakna några av de högraste löven 18

Traversering Traversering: ett systematiskt sätt att besöka alla noder i ett träd Djupet-först Preorder, inorder, postorder Bredden-först Levelorder 19 = Delträd

Binärt sökträd För varje nod gäller följande: Alla element till vänster är mindre än nodens värde Alla element till höger är större än nodens värde insert remove - - + - - - - + - - + - + - Givet att trädet är väl balanserat (ej fallet ovan) blir söktiden O(logn) 20

Heap En heap är ett fullständigt binärt träd h = log(n) För varje nod har dess förälder lika eller mindre nyckel => Den minsta nyckeln finns alltid i roten Används ofta som implementation till prioritetskö Insättning Borttagning Skapa Representation 7 2 3 5 2 9 8 1 9 7 3 5 1 9 3 2 8 Komplexitet 7 3 5 9 8 7 3 5 8 7 5 8 21 9

Sortering Allmänt Vi har studerat O(n 2 ) och O(nlog(n)) O(n 2 )-algoritmer kan vara bra i vissa fall Selectionsort Alltid O(n 2 ) alltid dålig Insertionsort Bästa fall O(n), värsta fall O(n 2 ) Bra på små arrayer (<50) eller där data är nästan sorterad Lätt att implementera 22

Sortering(2) Shellsort Utnyttjar insertionsorts bra sidor och försöker undvika de dåliga Tänjer på insertionsorts gränser Svår att analysera, beror på vald lucksekvens O(n 2 ), O(n 1.5 ), O(n 1.33 ), O(nlog(n)) Mergesort Optimal algoritm: O(nlog(n)) Kräver minne O(n) Ideal för sortering på externt minne färre diskåtkomster Quicksort I medelfallet snabbaste sorteringsalgoritmen O(nlog(n)) Vanlig i klassbibliotek (börjar dock ersättas av t ex Timsort) Dålig i värstafallet, använd ej i realtidsapplikationer 23

Sortering(3) Heapsort Mycket snabb - O(nlog(n)) I praktiken långsammare än quicksort i medelfallet Bäst i värstafallet Bra för realtidsapplikationer! Countsort, Bucketsort Ej jämförande algoritmer Bra om nyckelmängden är liten och kan avbildas på heltal Snabbare än Quicksort och Heapsort O(n) Radixsort Bra när nycklarna kan delas in i delnycklar I övrigt som Bucketsort 24

Quickselect Välj pivot Partionera i tre delar L element mindre än pivot E element lika med pivot G element större än pivot Partionera igen med enn av partitionerna beroende på m L (tredje minsta finns någonstans här) E G 25

Komplexitetsteori En algoritm ska fungerar för indata av godtycklig storlek Beräkna exekveringstiden som en funktion av storleken på indata T(n) Fokusera på värstafallet Ibland även bästafallet, medelfallet, amorterad komplexitet Ignorera konstanta faktorer Analysen ska vara maskinoberoende Kraftfulla maskiner ökar hastigheten med en konstant Studera skalbarheten (asymptotiska beteendet) för stora problemstorleka Fokusera på dominerande faktor Konstant, logaritmisk, kvadratisk, kubisk, exponentiell, faktoriell, polynomisk Rumskomplexitet 26

Komplexitetsteori(2) for (int i = 0; i < data.length/3; ++i) { System.out.println(data[i]); for (int i = 0; i < mylist.size(); ++i) { int j = i + mylist.get(i); mylist.set(i, j); // Replace element with j Ordo Övre gräns Omega Undre gräns Theta Om övre och undre gräns är densamma 27

Tentamen 4 timmar En teoridel (penna och papper), ca 60% En praktisk del (dator), ca 40% Ej tillgång till internet, ni får relevant API som bilaga till tentamen om det behövs för uppgiften Inga övriga hjälpmedel Javas bibliotek (förutom java.lang) får ej användas om ej uttryckligen angivet i uppgiften 28

Tentamen(2) Kopiera givna filer till ditt konto Skapa ett nytt projekt för varje uppgift Skicka frågor till kursledare via studentklienten MEN.. Skicka inte in uppgifter, lämna kvar dessa på kontot när du är klar Markera tydligt vilket projekt som är svaret, om det finns fler Lämna in de teoretiska svaren på papper Båda bonus-uppgifterna => full poäng på en praktisk deluppgift, värd 3 poäng Har man fått bonusen går det ej att få extra poäng genom att göra uppgiften ändå Gäller bara den uppkommande tentan, i direkt anslutning till kursen Undantag: Om en extra tenta sätts in för de som inte fick plats, gäller bonusen istället bara där för de studenterna 29

Tentamen(3) Två tillfällen 2015-03-19 kl 08-12 2015-03-19 kl 14-18 Insläpp börjar 30 minuter innan tentamens början Tenta-anmälan stänger 2015-03-09, på måndag! 30

Lycka till på tentan! 31