Objektorienterad programmering

Relevanta dokument
Objektorienterad programmering

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad programmering

Agenda. Objektorienterad programmering Föreläsning 13

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad programmering Föreläsning 5

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

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Intro till standardbiblioteket. Eric Elfving

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Rekursion och induktion för algoritmkonstruktion

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

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

Agenda (obs! halvdag)

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Länkade strukturer. (del 2)

Föreläsning 18 Filer och avbildningar

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

17.7 Funktioner för listor och köer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Föreläsning 11. ADT:er och datastrukturer

Datastrukturer och algoritmer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Datastrukturer och algoritmer

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Kursplanering Objektorienterad programmering

Procedurer och villkor

TDDC74 Lab 02 Listor, sammansatta strukturer

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

Föreläsning 15: Repetition DVGA02

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Objektorienterad programmering Föreläsning 20

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

DAT043 - föreläsning 8

Föreläsning 6: Introduktion av listor

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Objektorienterad Programkonstruktion

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Programmeringsteknik II

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Föreläsning 13. Rekursion

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Typkonvertering. Java versus C

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

Programkonstruktion och Datastrukturer

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Stackar, köer, iteratorer och paket

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Objektorienterad programmering

DD1361 Programmeringsparadigm. Carina Edlund

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tillämpad Programmering (ID1218) :00-13:00

TDDE44 Programmering, grundkurs

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

Föreläsning 5: Introduktion av pekare

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Rekursiva algoritmer sortering sökning mönstermatchning

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Föreläsning 3. Stack

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Föreläsning 14 Innehåll

Datastrukturer. föreläsning 3. Stacks 1

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

TDDC77 Objektorienterad Programmering

Länkade strukturer, parametriserade typer och undantag

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 4 Innehåll

Föreläsning 3. Stack

Maskinorienterad programmering, IT2

Java, klasser, objekt (Skansholm: Kapitel 2)

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

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

TDDC77 Objektorienterad Programmering

Transkript:

Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1

Rekursion För att förstå rekursion så måste man förstå rekursion. Rekursion handlar om saker som gör något mot sig själva. Några exempel En webbsida som via en länk refererar till sig själv. En matematisk funktion som är definierad genom en referens till sig själv. En metod i ett program som anropar sig själv. Rekursiv algoritm En rekursiv algoritm använder sig själv. Exempel på problem som kan lösas med rekursion: Vissa matematiska beräkningar T.ex. fakultet, potens, fibonaccital, faktorisering. Komplexa sökalgoritmer (se övning 14.8). Tower of Hanoi Att söka efter en fil i en mapp som innehåller undermappar. (tips: http://support.microsoft.com/kb/303974) Tips http://www.codeproject.com/articles/142292/recursive-methods-in-csharp 2

Rekursiva metoder En metod kan anropa andra metoder. En rekursiv metod anropar sig själv. Vid exekvering finns det lika många upplagor av metoden som antalet gjorda, oavslutade anrop. Varje upplaga av metoden har egna unika värden på parametrar och lokala variabler. Rekursion Grundläggande idé Rekursiva metodanrop fungerar på precis samma sätt som andra metod anrop. När en metod anropas beräknas först argumenten. Sedan genereras minneutrymme för den anropade metodens parametrar och argumenten kopieras dit. Vid varje nytt anrop genereras nytt minnesutrymme för parametrarna och för de lokala variablerna. Om en viss metod är anropad flera gånger betyder detta att varje upplaga av metoden har sin egen upplaga av parametrarna och de lokala variablerna. Därefter utförs satserna i den anropade metoden. När dessa satser är klara återvänder man till den punkt varifrån metoden anropades. Om en metod anropar sig själv återvänder man till en punkt inne i metoden själv. 3

Beräkning av fakultet del 1 Ett exempel på rekursion som brukar förekomma i de flesta böcker om programmering är en metod som beräknar den s.k. fakulteten n! av ett heltal n. Fakulteten av ett tal n definieras på följande sätt: n! = Några exempel 1 om n = 0 1 x 2 x 3 x x n om n > 0 Om n = 0 n! = 1 Om n = 1 n! = 1x1 = 1 Om n = 2 n! = 1x2 = 2 Om n = 3 n! = 1x2x3 = 6 Om n = 4 n! = 1x2x3x4 = 24 Fakultet del 2 Ett annat sätt att skriva definitionen av ett tals fakultet är: n! = 1 om n = 0 n(n 1) om n > 0 Det finns ett fall för vilket värdet är givet (n=0). Och ett fall där man uttrycker lösningen med hjälp av redan definierade värden. Detta sätt att skriva definitionen leder naturligt till en metod som anropar sig själ, en rekursiv metod. 4

3 3 x 2 = 6 2 2 x 1 = 2 1 1 x 1 = 1 0 1 5

Samlingar Listor En lista är en ordnad sekvens av element. Det är tillåtet för ett visst element att förekomma på flera ställen i en lista. Mängder En mängd är en samling där ett visst element bara får förekomma högst en gång. Elementen behöver inte finnas i någon speciell ordning. Avbildningstabeller (map) Är en tabell där man använder en s.k. söknyckel för att komma åt tillhörande information, värdet. Listor List LinkedList Stack Queue Uppbyggd internt med hjälp av ett fält (array). Enkelt att utföra operationer som använder indexering. En länkad lista består av ett antal noder. Varje nod innehåller dels en referens till nästa nod och dels det element som skall finns i listan. En stack är en lista i vilken man bara får lägga till och ta ut element i början. Last In First Out LIFO En kö är en lista i vilken nya element bara får läggas till i slutet på listan och element får tas ut i början på listan. First In First Out FIFO 6

Stack Exempel Last In First Out LIFO Queue Exempel Fast In First Out FIFO 7

Mängder klassen HashSet Det är två ting som skiljer en mängd från en lista 1. Element i en mängd ligger inte i någon speciell ordning. 2. Ett visst element kan bara förekomma en gång. I C# kan man använda den generiska klassen HashSet för att skapa mängder. Hashset<int> m = new HashSet<int>(); Man kan initiera en mängd så att den från början innehåller element som kopieras från en annan samling t.ex. från en lista av typen List<int> Hashset<int> m = new HashSet<int>(list); HashSet Exempel 1 8

HashSet Exempel 2 Avbildningstabeller En avbildningstabell (map på engelska) är en tabell där man använder en s.k. söknyckel för att komma åt tillhörande information, värdet. Ett exempel är ett bilregister, där utgör registreringsnumret söknyckeln. Med hjälp av reg. nummer kan man ta fram information om bilen t.ex. bilmärke och årsmodell. Söknyckeln avbildas på ett värde. En söknyckel och tillhörande värde bildar ett par, en s.k. avbildning. På engelska används termen key-value pair. Varje söknyckel kan bara avbildas på ett värde (samma bil kan inte ha flera registreringsnummer). 9

Avbildningstabeller Dictionary SortedDictionary SortedList Dictionary Exempel 10

Dictionary med Try-catch Att löpa igenom en avbildningstabell KeyValuePair<K,V> är en generisk structtyp som beskriver avbildningspar. K är nyckel och V är värdet 11