1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.

Slides:



Advertisements
Liknande presentationer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Advertisements

Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
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)
Logikprogrammering Ons, 25/9
Abstrakta datatyper Moduler nr 12
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Binära Sökträd, kapitel 19
Algoritmer och datastrukturer
Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack
C-programmering ID120V William Sandqvist Länkad lista
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Pathfinding. –Vad är det? –Sökning från A till B.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 5 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning.
Vektorer (klassen Vector) Sortering
Algoritmer och datastrukturer
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Riktade listor i C och Java Lösning till gruppövning 1.
Namnrum, räckvidd och rekursion Linda Mannila
Objektorienterad Programmering i C++ I
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
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.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
TILLÄMPAD DATALOGI (TILDA) Övning 4
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 10.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Datastrukturer och algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
1-1 Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-1 Programmering 7.5 hp Programmering är... creativ, fascinerande, roligt,
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 3: Booleans, if, switch
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439

2 Innehåll Grundläggande C. Grundläggande DOA. Kompilering. Debuggers. UML-verktyg. Problemlösningsuppgifter – gruppövning.  Palindrom.  Rekursiv/Iterativ fibonacci.  Kö implementerat med en array.  Summera en sekvens av tal.

3 Grundläggande C Förkunskaper C  Operatorer.  Datatyper.  Villkorssatser.  Funktioner och separatkompilering.  Arrayer, pekare, strängar.  Strukturer.

4 Grundläggande C Repetition structs. typedef struct { double re; double im; } complex; complex c1, *c2; /* Åtkomst */ c1.re = 2.3; c2->re = 3.4; (*c2).im = 3.6;

5 Grundläggande C Repetition enum. typedef enum {hearts, spades, diamonds, clubs} suit_name; Typedef card { int val; suit_name suit; } card; /* Tilldelning */ card deck[52]; deck[0].val = 1; deck[0].suit = hearts; deck[0].suit += 5; /* Giltigt, men indexerar utanför enum */

6 Grundläggande C Rekursion.  Fyra grundregler: Basfall: Basfall som löses utan rekursion. Framsteg: För alla steg som ska lösas rekursivt är strävan att nå basfallet. Designregel: Alla rekursiva anrop fungerar (induktion). Samansatta intresseregeln: Lös aldrig samma instans av ett problem i separata rekursiva anrop (fibonacci).  Rekursion vs. Induktion. Rekursion ger enkla algoritmer. Rekursion ej lämpligt för numeriska beräkningar.

7 Grundläggande C Pekare. complex* test(complex* x) { /* Imaginärt test */ ; } /*Tips: Pekarvariabler börjar på p */ complex *p_cmp cmp; *p_cmp = &cmp; /* Call by reference */ p_cmp = test(p_cmp); p_cmp = test(&cmp); /* Skicka in adressen av cmp. */

8 Grundläggande C Minnesallokering. #include complex *p_cmp; p_cmp = malloc(sizeof(complex));... free(p_cmp); /* Glöm ej frigöra minnet! */  Dynamiska datastrukturer.

9 DOA ADTs.  (Listor, stackar, köer.).  Träd.  Hashing.  Prioritetsköer (Heaps).  Sortering.  Grafalgoritmer.

10 DOA Träd.  En rot, flera noder.  Binärt träd. Varje nod kan ha max två barn.  Exempel: Binärt sökträd. Operationer: find, findMax, findMin, insert, remove.

11 DOA AVL-träd.  Problem med binära träd: Obalans som ger linjär sökning.  Lösning: AVL-träd. Avstånd mellan grundaste och djupaste noden är max 1.  AVL-träd == binärt sökträd med en balansfunktion. Single rotation och Double rotation.

12 DOA Hashing.  Utföra insert, delete och find i konstant tid.  (findMin, findMax, printSorted kan ej utföras i linjär tid).  Hashtabell och hashfunktion.  Ex: hash(x) = x mod 10.  Separate chaining.

13 DOA Hashing (forts)  Open addressing. OBS! Tabellstorleken bör vara primtal! Effektivare än Separate Chaining eftersom listor ej används. Rehash. Olika funktioner för att klara av krockar. Linear probing, Quadratic probing, Double hashing. EmptyAfter 1After 38After 18After 25After

14 DOA Prioritetskö (heap).  Definition: A heap is a tree for which any node v has a key that is smaller (or equal) than the keys of all its children (if any).  Mycket enkelt hitta minsta elementet i trädet.  Går implementera som array. delete(node v) if v has no children, then remove v and return; else, let w be the child of v with the smallest key; set v = w; delete(w); Insert(node v) Create a hole in the next available location. If v can be placed without violating the heap order, then done. Otherwise, while the parent u > v; swap(u,v);

15 DOA Sorteringsalgoritmer.  Bubble sort – Enkel att implementera. Oeffektiv. O(N^2).  Merge sort – O(N * log N).  Quicksort – O(N * log N) [ worst case O(N^2)]. 1 Om elementen i en array S är 0 eller 1, return. 2 Välj ett pivotelement v i S. 3 Partitionera S – {v} i två disjunkta grupper S1 och S2. 4 Return { quicksort(S1) v quicksort(S2) }.  Insertion sort – Enkel algoritm. Ex insertionsort(int a[10]). for (int i=1; i < 10; i++){ int tmp = a[i]; for (int j=i; j > 0 && (tmp < a[j-1]); j--) a[j] = a[j-1]; a[j] = tmp; }

16 DOA Grafalgoritmer.  G(V,E) Graf med hörn (vertices) och kanter (edges).  Representeras med adjacency list eller adjacency matrix.  Algoritmer: Unweighted shortest path. Dijkstra (weighted shortest path). v1v2v3v4 v10 1 v240 5 v3 20 v4 0

17 Kompilering g++ / gcc.  Flaggor: gcc -Wall –g -pedantic -o hello hello.c  Separatkompilering: gcc –c hello.c gcc –o hello hello.o  Programkörning:./hello  !!! gcc –o hello.c hello.c == Förstör hello.c !!!

18 Kompilering (forts) Makefiles: CC = g++ CFLAGS = -g -Wall OBJS = prime.o hash.o filehandler.o simulate.o PROG = p1 p1 : $(OBJS) $(CC) $(CFLAGS) -o p1 $(OBJS) prime.o : prime.cpp prime.h $(CC) $(CFLAGS) -c prime.cpp filehandler.o : filehandler.cpp filehandler.h $(CC) $(CFLAGS) -c filehandler.cpp hash.o : hash.cpp hash.h $(CC) $(CFLAGS) -c hash.cpp simulate.o : simulate.cpp simulate.h $(CC) $(CFLAGS) -c simulate.cpp clean : rm -f $(OBJS) $(PROG) core

19 Debuggers GDB.  Debugga c/c++ kod.  Kompilera med –g flaggan. DDD.  Grafisk front-end till GDB.

20 UML UML-verktyg.  Violet. Class diagrams. Sequence diagrams. State diagrams. Object diagrams.  Dia. A diagram drawing program.  Rational Rose. Kommersiellt. Import/export. Reverse engineering.  ArgoUML. Gratis.