TILLÄMPAD DATALOGI (TILDA) Övning 2 www.nada.kth.se/~mhj/tilda.

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
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.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
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
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Klasser och objekt Klasser, objekt och instansvariabler
int res2=Math.max(tal1,tal2);
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.
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.
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.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
TILLÄMPAD DATALOGI (TILDA) Övning 3
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen.
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.
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ö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
Övning 5
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 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
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Övning6 Läsning från fil till java objekt Sökning Sortering.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Länkade listor á la C/C++
Föreläsning 11: Rekursion
Föreläsning 12: Exempel och problemlösning
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

TILLÄMPAD DATALOGI (TILDA) Övning 2

Rekursion Tidskomplexitet Hemtal

Rekursion

Ex 1: Fakultet t.ex. fakultet(5) = 5 * 4 * 3 * 2 * 1 = 120 Basfall: fakultet(1) = 1 Rekursion (annars): fakultet(5) = 5 * fakultet(4) fakultet(4) = 4 * fakultet(3) fakultet(3) = 3 * fakultet(2) fakutlet(2) = 2 * fakultet(1) fakultet(1) =

Ex 1: Fakultet fakultet(n) = n * n-1 * … * 2 * 1 Basfall: fakultet(1) = 1 Rekursion (annars): fakultet(n) = n * fakultet(n-1)

class Ex1Rekursion { public static void main(String [] args) { System.out.println(fakultetA(3)); } public static int fakultetA(int tal) { if (tal == 1) return 1; else return tal * fakultetB(tal-1); } public static int fakultetB(int tal) { if (tal == 1) return 1; else return tal * fakultetC(tal-1); } public static int fakultetC(int tal) { if (tal == 1) return 1; else return tal * fakultetD(tal-1); } tal 3 2 1

class Ex1Rekursion { public static void main(String [] args) { System.out.println(fakultet(2)); System.out.println(fakultet(4)); } public static int fakultet(int tal) { if (tal == 1) { return 1; } else { int f; f = tal * fakultet(tal-1); return f; } 2 2 tal 0 f f f

class Ex1Rekursion { public static void main(String [] args) { System.out.println(fakultet(2)); System.out.println(fakultet(4)); } public static int fakultet(int tal) { if (tal == 1) return 1; else return tal * fakultet(tal-1); }

Ex2 : Palindrom t.ex. rar, alla, r, ””, naturrutan Basfall: 1. om första och sista tecknet i ordet är olika är ordet inte ett palindrom 2. om ordet har 0-1 tecken är det ett palindrom Rekursion (annars): ordet är ett palindrom om texten mellan första och sista bokstaven i ordet är ett palindrom Ex. naturrutan är ett palindrom om och endast om aturruta är ett palindrom

class Ex2Rekursion { public static void main(String [] args) { String n1 = ”david”; String n2 = ”anna”; System.out.println(ärPalindrom(n1)); System.out.println(ärPalindrom(n2)); } public static boolean ärPalindrom(String s) { int len = s.length(); if (len <= 1) { return true; } else if (s.charAt(0) == s.charAt(len-1)) { String s2 = s.substring(1, len-1); return ärPalindrom(s2); } else { return false; } false true s ”david” len 5 s2 ”avi” s len 3 s2 ”” s len ”nn” ”anna”

Ex3 : Längden på en stack Basfall: En tom stack har längd 0 Rekursion (annars): En stack har längd 1 + resten av stackens längd

class Ex3Rekursion { public static void main(String [] args) { Stack stack = new Stack(); stack.push(3); stack.push(5); stack.push(4); System.out.println(stack.lenght()); } class Node { public int nr; public Node next; public Node(int nr) { this.nr = nr; next = null; } class Stack { private Node top; public Stack() { top = null; } public int lenght() { return lenght(top); } private int lenght(Node n) { if (n == null) return 0; else return 1 + lenght(n.next); } public void push(int nr) { Node node = new Node(nr); node.next = top; top = node; } public int pop() { int nr = top.nr; top = top.next; return nr; } stack null top 3 nr null next null 5 nr next 4 nr null next 3 n null n n n

Tidskomplexitet

for (int i = 0; i < n; i++) { a = a + 2; a--; } k n k * n = O(n)

Tidskomplexitet for (int i = 0; i < n; i++) { a = a + 2; a--; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a = a + 2; a-- } k n k nn k * n + k * n * n <= k * n 2 + k * n 2 = 2 * k * n 2 = O(n 2 )

Tidskomplexitet for (int i = 0; i < n; i++) { a = a + 2; a--; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a = a + 2; a-- } O(n) O(n 2 ) O(n) + O(n 2 ) = O(n 2 )

Tidskomplexitet for (int i = 0; i < n; i++) { a = a + 2; a--; } for (int i = 0; i < n; i++) { sum++; } O(n) O(n) + O(n) = O(n)

Tidskomplexitet for (int i = 0; i <= n; i++) { for (int j = 0; j <= i; j++) { sum++; } k + 2k + … + nk = k * (1+2 + … + n) = k * (n 2 +n)/2 = O(n 2 ) k

Tidskomplexitet Algoritmn = 100n = 500 k 1 * n0,5 ms2,5 ms5x längre k 2 * n 2 0,5 ms12,5 ms25x längre k 3 * n 3 0,5 ms62,5 ms125x längre k 4 * 2 n 0,5 ms1,3* ms = 4,1* år 2,6 * x längre jämförtid

Ex) Gotland Runt har en databas med information om 512 båtar. Lista fördelar och nackdelar med linjärsökning resp. binärsökning i datat. Linjärsökning: Fördelar: Kan använda länkad lista eller vektor för att lagra informationen Nackdelar:Lång tid att söka O(n), medel 250 jämförelser Binärsökning: Fördelar:Snabbt att söka O(log n), medel ~9 jämförelser Nackdelar:Kräver en array. Kräver att arrayen är sorterad. AnneBeatriceDaniellaVictoriaYlvaZandra , 256, 128, 64, 32, 16, 8, 4, 2, 1