1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.

Slides:



Advertisements
Liknande presentationer
Repetition av språket Java
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Algoritmer och data strukturer -Länkade listor
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Klassarv och inkapsling
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.
Algoritmer och datastrukturer
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
IT för personligt arbete F6
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
int res2=Math.max(tal1,tal2);
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.
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
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.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar 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
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Datastrukturer och algoritmer
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
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.
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
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
Programmeringsteknik för K och Media
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
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.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson

2 Datasamlingar Förra föreläsningen tittade vi på fält/arrayer Vid initieringen bestäms hur mycket data som ska rymmas i fältet När man skriver ett program så vet man inte alltid hur mycket data som sedan ska lagras Det vore därför ibland praktiskt med en datasamling som kunde utökas dynamiskt

3 Klassen Vector I Java har det sedan den allra första versionen funnits en lättanvänd dynamisk array java.util.Vector Skapas enkelt genom t ex: Vector v = new Vector (); Instanser kan sedan läggas in och tas bort add(Typ t); remove(Typ t);

4 Klassen Vector Används enligt: import java.util.*; public class Test { public static void main(String[] args) { Vector vektor = new Vector (); } }

5 Algoritmer En algoritm är beskrivningen för hur man löser ett givet problem Behöver inte vara skriven i programkod Som ett recept i en kokbok Den datalogiska definitionen: ”Ett ändligt antal instruktioner som löser ett problem.”

6 Algoritmer Algoritmer har funnits sedan länge inom områden som t ex arkitektur och matematik Här kommer en algoritm som är daterad till 1200-talet men som säkert är ännu äldre Leonardo Fibonaccis fibonaccital: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 …

7 Leonardo Fibonacci Om man betraktar en gran- eller tallkotte utgående från basen (fästpunkten), så bildar kottens fjäll spiraler såväl med- som motsols. Om kotten är hel, är antalet spiraler i kotten lika med Fibonacci-talen 5,8 eller 13. Fröna i en solros bildar även spiraler med- och motsols och antalet spiraler kan vara lika med Fibonacci-talen 34,55,89,144 och t.o.m Fibonacci-talen påträffas även i t.ex. snäckors spiralstrukturer. /fibona.html

8 Fibonacci-algoritmen public class Fibonacci { static final int ANTAL = 10; public static void main(String[] args){ int low = 1; int high = 1; for(int i = 1; i <= ANTAL; i++){ System.out.println("Fibo " + i + ": "+ high); high += low; low = high-low; } }

9 Abstrakta datatyper ADT:er En samling data som det går att utföra ett antal passande operationer på En ADT kan implementeras på olika sätt Det viktigaste är att det finns fungerande operationer I Java konstrueras ADT:er som klasser

10 LIFO En riktigt enkel algoritm Men mycket användbar LIFO = Last In First Out Lämplig ADT är en stack

11 Stack java.util.Stack Stack = new Stack (); Enkel att använda: public Typ push(Typ t); public Typ pop(); public Typ peek(); public boolean empty();

12 FIFO I en simulering av biljettförsäljningen på en biograf vore det inte så kul för vissa besökare om de blev inlagda i en stack Här passar det bättre med First In First Out En ännu enklare algoritm där passande ADT heter kö/queue

13 Kö Fr o m Java 1.5 finns det en färdig klass men det är lätt att bygga en egen då de viktiga metoderna är: putLast() ELLER enqueue() getFirst() ELLER dequeue() I Lektion 4 bygger vi en egen kö med hjälp av java.util.Vector

14 Kö och FIFO

15 Länkade listor Dynamisk struktur Dubbellänkad lista En nackdel är ibland söktiden

16 Träd En struktur för snabbare åtkomst En mängd olika sorters träd

17 Hashtabell Hashtabeller = associativa arrayer Sökord är kopplade till värden Snabb åtkomst som är konstant oavsett antalet element som ingår i hashtabellen Från början fanns java.util.Hashtable I det senare JCF Java Collection Framework finns klasserna HashMap och HashSet Avancerade datastrukturer men lättanvända

18 Hashtabell Skapa ett objekt enligt: Map favoritFärger = new HashMap (23); Lägg in värden: favoritFärger.put(”Astrid”, Color.green); favoritFärger.put(”Balthasar”, Color.red); Plocka ut värden: Color a = favoritFärger.get(”Astrid”); Color b = favoritFärger.get(”Balthasar”);

19 Modulusoperatorn Heltalsdivision 9 / 5 = 1 För att ta vara på resten från heltalsdivisioner så finns i de flesta språk en modulusoperator I Java representeras den av % Användbar på många sätt t ex minuter = tid / SEKUNDER_PER_MINUT; sekunder = tid % SEKUNDER_PER_MINUT;

20 Villkorsoperatorn Ett arv från C och C++ Går alltid att skriva om med en if – else maxVärden[i] = (a > b) ? a : b; Samma som: if (a > b) maxVärden[i] = a; else maxVärden[i] = b;

21 Tack för idag Läs lite om den abstrakta datatypen stack i bokens kapitel 17 Resten av detta kapitel spar vi till ITK:P2 Exempel på hur man kan använda stackar och köer kommer i Lektion 4. Tack för idag!