Repetitionsföreläsning 1: Lite rekursion & problemlösning

Slides:



Advertisements
Liknande presentationer
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Advertisements

Fortsättningskurs i Programmering lektion 6
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Föreläsning 1.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Metoder i java Det finns två typer av metoder i java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Arv.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Metoder och slingor Metoder och dess typ Slingor med while och for-satser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
1 Föreläsning 8 Mer om klasser och objektorientering.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
7. Delegerare och notifierare
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Föreläsning 16: Tentan, att förbereda sig…
Föreläsning 3: Booleans, if, switch
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 4: for, while, do-while
Föreläsning 11: Rekursion
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Föreläsning 9: Arv och UML
Repetitionsföreläsning 2: Quiz & problemlösning med swing
Föreläsning 10: Abstrakta klasser, gränssnitt
Snåla algoritmer Backtracking
Presentationens avskrift:

Repetitionsföreläsning 1: Lite rekursion & problemlösning TDA 545: Objektorienterad programmering Inget nytt material. Magnus Myréen Chalmers, läsperiod 1, 2015-2016

Idag Snabb genom gång av en del terminologi Rekursion: när, var och hur ska man använda rekursion? Problemlösning: uppgifter som har rekursion av olika slag. På torsdag: vad vill ni att jag gör? vad är nyttigast för er? (Jag vill ha förslag av dem som tycker att kursen är svår.)

Terminologi abstrakta metoder och klasser static private primitivtyp referensvärde boolean int double sträng array loopar rekursion objekt instans klass abstrakta metoder och klasser gränssnitt (interface) extends implements konstruktor överskuggning (overriding) överlagring (overloading) händelsehantering exceptions checked / unchecked immutable swing GUI grafik

Rekursion Vad är rekursion? Rekursion är en självreferens, t.ex. public static int fib(int n) { if (n < 2) { return n; } else { return fib(n-1) + fib(n-2); } men också t.ex. public class Stack { private Object topElement; private Stack rest; ... }

Rekursion När är det bra att använda rekursion? Hmm… när det passar naturligt som lösning. Var passar det? När man kan hitta svaret genom rekursiv/induktiv problemlösning. Exempel frågeställning: Kan jag lösa basfall av problemet? Kan jag lösa alla andra fall om jag antar att jag kan lösa alla enklare instanser av problemet? Exempel: hitta väg i labyrint, quicksort mm.

Loopar eller rekursion OBS: varje loop kan skrivas som rekursion public static int arraySum(int[] a) { int res = 0; int i = 0; while (i < a.length) { res = res + a[i]; i = i+1; } return res; public static int arraySum(int[] a) { return f(0,0,a); } private static int f(int res, int i, int[] a) { if (i < a.length) { res = res + a[i]; i = i+1; return f(res,i,a); } else { return res; bättre

Loopar eller rekursion (forts) OBS: kan varje rekursion skrivas som loop? I princip ja, men ofta med mycket besvär. Ibland går det lätt.

Uppgift http://www.cse.chalmers.se/edu/course/TDA545/2014-tenta.pdf Uppgiften on rekursions och ritning från förra årets tenta. http://www.cse.chalmers.se/edu/course/TDA545/2014-tenta.pdf

Ny uppgift Skriv ett program som ritar en boll där man klickar. Om man klickar många gånger, då bör alla föregående bollar synas. Börja med att skriva en klass för bollar.

Ny uppgift Skriv ett enkelt ritprogram 1. Man bör kunna rita linjer. 2. Man bör kunna välja färg. 3. Man bör kunna trycka på undo och redo knappar.