Föreläsning 1, vecka 7: Rekursion
|
|
- Ida Lundgren
- för 6 år sedan
- Visningar:
Transkript
1 TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 7: Rekursion Magnus Myréen Chalmers, läsperiod 1,
2 Nytt: Extra labbtillfälle för Grupp B (för att grupp Bs labbtider har på senaste tiden kolliderat med GruDat) E studion onsdag 12 oktober 2016 E studion torsdag 13 oktober 2016
3 Feedback Hur fungerar labbarna? Hur fungerar övningarna? Fungerar övning före föreläsning?
4 Idag Rekursion fakulteten exponentiering binary search Fibonacci 91 funktionen quick sort men också: jämförelse med iteration att mäta tid i Java roliga problem live programmering Nästa gång: mera objektorientering, i detta fall: arv, subtyper, API
5 Att tänka rekursivt Hur långt är tåget? Rekursivt svar: om det inte finns tågvagnar: då är dess längd 0 i övriga fall: längden är 1 + längden av resten av tåget samma fråga som ursprungligen, men med mindre indata (input)
6
7
8 Fakulteten Iterativt n! = 1 if n< n if 1 apple n public static int facit(int n) { int v = 1; for (int i=1; i<=n; i++) { v = v * i; return v; Induktivt eller rekursivt n! = 1 if n<1 n (n 1)! if 1 apple n
9 Induktiva definitioner använder självreferens, t.ex. En kö är antingen tom eller en person följt av en kö. n! är 1, om n är 0 eller 1, eller n (n-1)! om n är större. n! = 1 if n<1 n (n 1)! if 1 apple n Induktiva definitioner består av 1. Ett basfall 2. Ett fall där definitionen (vanligen) minskar problemets storlek och refererar till sig själv.
10 Induktionsbevis och rekusion Induction poof: to prove that a statement P(n) holds for all integers n Base case: Prove P(0) ( or P(small number)) Assumption: assume that P(n-1) is true (or P(n), P(n/2)... is ) Induction step: prove that P(n-1) implies P(n) for all n 0 Recursive computations: Base case: Solve the problem on inputs of size 0 (or 1 or some small instance) Assumption: assume you can solve the problem on input size less than n (n-1, n/2, n/4...) Induction step: Show how you can solve it also on inputs of size n for all n!1. Med stöd av detta kan problemet lösas med
11 Fakulteten (forts) Iterativt n! = 1 if n< n if 1 apple n public static int facit(int n) { int v = 1; for (int i=1; i<=n; i++) { v = v * i; return v; Induktivt eller rekursivt n! = 1 if n<1 n (n 1)! if 1 apple n public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
12 Evaluering System.out.println(fac(4)); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
13 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
14 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
15 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1);
16 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1); if (1 < 1) { else { return 1 * fac(0);
17 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1); if (1 < 1) { else { return 1 * fac(0); 1
18 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1); rekursionen går ner if (1 < 1) { else { return 1 * fac(0); 1
19 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1); rekursionen kommer upp if (1 < 1) { else { return 1 * fac(0); 1
20 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * fac(1); rekursionen kommer upp if (1 < 1) { else { return 1 * 1;
21 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * fac(2); rekursionen kommer upp public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); if (2 < 1) { else { return 2 * 1;
22 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * fac(3); if (3 < 1) { else { return 3 * 2; rekursionen kommer upp public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
23 Evaluering System.out.println(fac(4)); if (4 < 1) { else { return 4 * 6; rekursionen kommer upp public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
24 Evaluering System.out.println( 24 ); rekursionen kommer upp public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1);
25 Sammanfattning av beräkningen System.out.println(fac(4)); fac(4) = 4 * fac(3) = 4 * 3 * fac(2) = 4 * 3 * 2 * fac(1) = 4 * 3 * 2 * 1 * fac(0) = 4 * 3 * 2 * 1 * 1 = 4 * 3 * 2 * 1 = 4 * 3 * 2 = 4 * 6 = 24 public static int fac(int n) { if (n < 1) { else { return n * fac(n- 1); n! = 1 if n<1 n (n 1)! if 1 apple n
26 Ett test program public class Fac { public static int fac(int n) { if (n == 0) { else { return n * fac(n- 1) ; public static void main(string[] args) { System.out.println("fac(1) = " + fac(1)); System.out.println("fac(4) = " + fac(4)); System.out.println("fac(20) = " + fac(20)); Utskrift: fac(1) = 1 fac(4) = 24 fac(20) = umm Vad hände här? svar: värdet blev för stort. Obs. overflow har inget med rekursionen att göra.
27 Vi kan använda BigInteger import java.math.biginteger; public class BigFac { public static BigInteger fac(biginteger n) { if (n.equals(biginteger.zero)) { return BigInteger.ONE; else { return n.multiply(fac(n.subtract(biginteger.one))); public static void main(string[] args) { System.out.println("fac(1) = " + fac(new BigInteger("1"))); System.out.println("fac(4) = " + fac(new BigInteger("4"))); System.out.println("fac(20) = " + fac(new BigInteger("20"))); System.out.println("fac(50) = " + fac(new BigInteger("50"))); Utskrift: fac(1) = 1 fac(4) = 24 fac(20) = fac(50) =
28 Uppgift Skriv ett program som beräknar hur många nollor det finns i ett decimal tal. Idé: I ett negativ tal finns det like många nollor som i motsvarande positiva tal. Om talet är 0, finns det en nolla i talet. Om talet är positivt och < 10, finns det ingen nolla. I övriga fall, dvs. positivt och > 10 om talet mod 10 är 0, då finns det en nolla + nollorna i talet / 10 annars: nollorna i talet / 10
29 Lösning public class Z { public static int k(int n) { if (n < 0) { return k(0 - n); else if (n == 0) { else if (n < 10) { return 0; else if (n % 10 == 0) { return 1 + k(n / 10); else { return k(n / 10); public static void main(string[] args) { System.out.println("nollor(- 1050) = " + k(- 1050));
30 Uppgift Skriv en rekursiv metod som vänder om en sträng, dvs rev( Hello ) bör bli "olleh".
31 Uppgift Skriv en rekursiv metod som vänder om en sträng, dvs rev( Hello ) bör bli "olleh". public static String rev(string str) { if (str.length() == 0) { return str; else { return rev(str.substring(1)) + str.substring(0,1); Ofta går det att skriva om rekursionen som en iterativa metod men inte alltid.
32 Några animationer h"#://impedagog..com/wp/wp- content/uploads/2014/08/recursionelevator.gif h"#://i.imgbr.com/p1chi6u.gif h"#://media.giphy.com/media/vlng6lokeurfg/giphy.gif
33 Roligt med rekursion Vad räknar McCarthy s funktion m? m(n) = n 10 if n>100 m(m(n + 11)) if n apple 100 Samma i Java: public static int m(int n) { if (n > 100) { return n - 10; else { return m(m(n + 11));
34 McCarthy s funktion public class M { public static int m(int n) { if (n > 100) { return n - 10; else { return m(m(n + 11)); public static void main(string[] args) { for (int j=0; j<100; j++) { System.out.println("m(" + j + ") = " + m(j));
35 McCarthy s funktion public class M { public static int m(int n) { if (n > 100) { return n - 10; else { return m(m(n + 11)); public static void main(string[] args) { for (int j=0; j<100; j++) { System.out.println("m(" + j + ") = " + m(j)); Detta är McCarthy s 91 funktion. h"#://en.wikipedia.org/wiki/mccarphy_91_fbnction Varför blir det 91? Utskrift: m(0) = 91 m(1) = 91 m(2) = 91 m(3) = 91 m(4) = 91 m(5) = 91 m(6) = 91 m(7) = 91 m(8) = 91 m(9) = 91 m(10) = 91 m(11) = 91 m(12) = 91 m(13) = 91 m(14) = 91 m(15) = 91 m(16) = 91 m(17) = 91 m(18) = 91 m(99) = 91
36 Slutar beräkningen? Ibland blir input större inför rekursionen. t(n) = ( 1 if n =1 t(3 n + 1) if n is odd t(n/2) if n is even Samma i Java: public class T { public static int t(int n) { System.out.print(n + " "); if (n < 1) { System.exit(1); if (n == 1) { else if (n % 2 == 1) { return t(3 * n + 1); else { return t(n / 2); public static void main (String[] args) { t(integer.parseint(args[0])); Utskrift: $ javac T.java $ java T Koden var i upp vid 9232!
37 Slutar beräkningen? Ibland blir input större inför rekursionen. t(n) = ( 1 if n =1 t(3 n + 1) if n is odd t(n/2) if n is even Slutar beräkningen för alla utgångsvärden av n? Svar: ingen vet! Det är en open research question Vi kan testa litegrann men hur vet vi att räkningen slutar för alla input? (Bör göras med BigInteger.)
38 Flera animationer h"#s://i.chzbgu.com/maxw500/ /h2e032a91/ h"#://d5lx5634mkgoi.cloud]ont.net/wp- content/uploads/2010/02/slide190.gif h"#://33.media.tbmblr.com/ fc0a ef96e7c_e7/tbmblr_moltlz3owo1qz
39 Lite mera seriöst igen
40 Beräkna exp Att beräkna x n : Iterativt, idé x n = x x... x public static double power1(double x, int n) { double tmp = 1.0; for (int i=1; i<=n; i++) { tmp = tmp * x; return tmp; multiplicerar x in i tmp, n gånger. Rekursivt, idé x n (n 1) = x x public static double power2(double x, int n) { if (n == 0) { return 1.0; else { return x * power2(x,n- 1); gör samma sak. Samma algoritm!
41 Beräkna exp (forts) Bättre rekursion? Obs: x n = x n/2 x n/2 eller ännu bättre: x n =(x x) n/2 Mera precis: x 2 n = (x x) n x 2 n+1 = (x x) n x I Java: public static double power3(double x, int n) { if (n == 0) { return 1.0; else { if (n % 2 == 0) { return power3(x * x, n / 2); else { return power3(x * x, n / 2) * x; heltalsdivision, dvs blir heltal
42 Jämförelse power2(9,3.0) = 3.0 * power2(8,3.0) = 3.0 * 3.0 * power2(7,3.0) = 3.0 * 3.0 * 3.0 * power2(6,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * power2(5,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * power2(4,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * power2(3,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * power2(2,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * power2(1,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * power2(0,3.0) = 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 3.0 * 1.0 = power3(9,3.0) = power3(4,9.0) * 3.0 = power3(2,81.0) * 3.0 = power3(1,6561.0) * 3.0 = power3(0,6561.0) * * 3.0 = 1.0 * * 3.0 = bättre algoritm! men vilken tar längre tid att beräkna?
43 Att mäta tid i Java I java.lang.system finns metoder: static long currenttimemillis() Returns the current time in milliseconds. static long nanotime() Returns the current value of the most precise available system timer, in nanoseconds. Exempel användning: long start = System.currentTimeMillis(); gör arbete long duration = System.currentTimeMillis() - start; System.out.println("Duration: " + duration + " ms");
44 Att mäta tid på power funktionerna public static void main(string[] args) { int reps = 10000; long start, duration; // test power1 start = System.currentTimeMillis(); for (int i = 0; i < reps; i++) { power1(2.0, 5000); duration = System.currentTimeMillis() - start; System.out.println("Duration1: " + duration + " ms"); // test power3 start = System.currentTimeMillis(); for (int i = 0; i < reps; i++) { power3(2.0, 5000); duration = System.currentTimeMillis() - start; System.out.println("Duration3: " + duration + " ms"); $ java Pow Duration1: 93 ms Duration3: 3 ms
45 Hitta element i array Hur kollar man om ett element finns i en array?
46 Hitta element i array Hur kollar man om ett element finns i en array? Enkel kod: public static boolean lookup(int k,int[] arr) { for (int i=0; i<arr.length; i++) { if (arr[i] == k) { return true; return false; om arrayn sorterad går det att göra mycket snabbare!
47 Binärsökning Exempel: Kolla om värdet 5 finns i arrayn? Idé: Inspektera elementet i mitten av arrayn: Är mitten elementet det vi söker? Om mitten elementet är mindre kan vi kasta bort den högra sidan vi vet ju att arrayn är sorterad. och så kan vi upprepa sägen ovan tills arrayn är tom.
48 Binärsökning (forts) Som rekursiv Java kod: public static boolean bsearch1(int k,int[] arr,int b,int e) { // System.out.println("b,e = " + b + "," + e); if (e <= b) { return false; int i = (b + e) / 2; // mitten if (arr[i] == k) { return true; else if (arr[i] < k) { return bsearch1(k,arr,i+1,e); else /* k < arr[i] */ { return bsearch1(k,arr,b,i); public static boolean bsearch(int k,int[] arr) { return bsearch1(k,arr,0,arr.length);
49 Binärsökning (forts) Samma som iterativa kod: public static boolean bsearchit(int k,int[] arr) { int b = 0; int e = arr.length; while (b < e) { int i = (b + e) / 2; // mitten if (arr[i] == k) { return true; else if (arr[i] < k) { b = i+1; else /* k < arr[i] */ { e = i; return false;
50 Fibonacci En känd rekursiv funktion: fib(n) = ( 0 if n =0 1 if n =1 fib(n 1) + fib(n 2) if 2 apple n Värden: Som bild: fib(0) = 0 fib(1) = 1 fib(2) = 1 fib(3) = 2 fib(4) = 3 fib(5) = 5 fib(6) = 8 fib(7) = 13 fib(8) = 21 fib(9) = 34
51 Fibonacci Rekursion leder inte alltid till bra kod! I Java: public static int fib(int n) { if (n < 2) { return n; else { return fib(n- 1) + fib(n- 2); Flera rekursiva anrop beräknar samma sak: fib(6) fib(5) fib(4) fib(4) fib(3) fib(3) fib(2) fib(3) fib(2) fib(2) fib(1) fib(2) fib(1) fib(1) fib(0) fib(2) fib(1) fib(1) fib(0) fib(1) fib(0) fib(1) fib(0) fib(1) fib(0)
52 Iterativ version av Fibonacci? Rekursion leder inte alltid till bra kod! I Java: public static int fib(int n) { if (n < 2) { return n; else { return fib(n- 1) + fib(n- 2); Uppgift: skriv en iterativ version av Fibonacci.
53 Rekursion i typerna En annan form av rekursion: Drawable3D är rekursiv genom typerna public interface Drawable3D { public Drawable3D rotate(double xy_angle, double yz_angle); public void draw(graphics g, int width, int height); public Drawable3D translate(double x, double y, double z); Man kan skriva: public class Many3D implements Drawable3D {... private Many3D p1; private Many3D p2; Oändligt? Nej, det kan ju vara null.
54 Iterativ eller rekursiv? Iterativ kod är snabbare, speciellt i Java men vissa algoritmer går inte att skriva som iteration. nja, det går nog, men det kan vara mycket svårt! Uppgift: implementera QuickSort
55 Uppgift: implementera QuickSort public static void swap(int[] array, int i, int j) { int a_i = array[i]; int a_j = array[j]; array[i] = a_j; array[j] = a_i; flyttar alla element < pivot till vänster, resten till höger public static int partition(int[] array, int pivot, int b, int e) { while (b < e) { if (array[b] < pivot) { b = b+1; else { swap(array,b,e-1); e = e-1; return b; byter plats på två element returnerar gränsen mellan < och >= element
56 Uppgift: implementera QuickSort slutar genast ifall det finns färre än två element, för då är vi färdiga public static void qsort(int[] array, int b, int e) { int nelements = e - b; if (nelements < 2) { return; int pivot = array[b]; int split = partition(array,pivot,b+1,e); swap(array,b,split-1); qsort(array,b,split-1); qsort(array,split,e); flyttar pivot elementet till mitten sorterar rekursivt båda partitionerna väljer en pivot arrangerar om elementen
Föreläsning 11: Rekursion
TDA 545: Objektorienterad programmering Föreläsning 11: Rekursion Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Läsanvisning: kap 19, men bara t.o.m. sida 812 rekursion fakulteten exponentiering
Föreläsning 12: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 12: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Problemlösning, dvs hur man ska tänka för att hitta lösning int mängd/set
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
Föreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden
Föreläsning 2, vecka 8: Repetition
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas 22 januari 2006 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av problem som
public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
Rekursion. Koffman & Wolfgang kapitel 5
Rekursion Koffman & Wolfgang kapitel 5 1 Rekursivt tänkande Rekursion reducerar ett problem till en eller flera enklare versioner av samma problem. med enklare menas att underproblemen måste vara mindre,
Instuderingsfrågor, del D
Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt
SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas 22 september 2015 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av problem
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Föreläsning 13. Rekursion
Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)
Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10
Objektorienterad programmering E Föreläsning 10 Rekursion Länkade datastrukturer Back to Basics Exekvera programmet för hand! public class Param { public static int f(int x) { return x+1; public static
Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,
Exempel: Kappsäcksproblemet Backtracking Dynamisk programmering Föreläsning (Weiss kap..-) Kan man ur en grupp föremål F,,F N med vikterna V,,V N välja ut en delgrupp som väger exakt M kilo? Exempel: föremål
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254
Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
F11 - Rekursion. ID1004 Objektorienterad programmering Fredrik Kilander
F11 - Rekursion ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Rekursion Rekursion är en programmeringsteknik En metod anropar sig själv public String reverse (String s) { if (s.length()
Sökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer
F6 Observera att när man utvecklar program så är inte alla lösningar på vägen korrekta. Speciellt den här gången så finns många OH med program som inte fungerar eftersom det är just det vi skall se på
Tentamen. Lösningsförslag
Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt
Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Föreläsning 5. Rekursion
Föreläsning 5 Rekursion Föreläsning 5 Algoritm Rekursion Rekursionsträd Funktionsanrop på stacken Binär sökning Problemlösning (möjliga vägar) Algoritm En algoritm är ett begränsat antal instruktioner/steg
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning
Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet
6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &
TelefonKostnad static Math static $ & )&* +,-&. 0 +& + & 3 356+573 ) & & 6 3 3 & 3 * 6 3.:; < = 3 = 6 ; < : & >?.;,;@.A@;0,0,? @B0 C,0 > *. > 5 C D & D 5 * &! ; 66C! * C, 0 E,&! 0 F,G0 >: = = C 3 & HI
Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2
Objektorienterad programmering E Algoritmer Linjär sökning Binär sökning Tidsuppskattningar Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk; dess syntax och semantik, bibliotek
Föreläsning 1, vecka 8: Att förbereda sig för tentan
TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 8: Att förbereda sig för tentan Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Idag: talar om tentan, förberedelse, exempel, mm. Inget
Medan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.
(10 september 2018 T02 1 ) Medan ni väntar 1. Binär sökning i sorterad array med n element kräver log 2 n försök. Hur många försök krävs i en array med 10 3, 10 6 respektive 10 9 element? 2. Skriv metoden
Den som bara har en hammare tror att alla problem är spikar
Introduktion Föreläsning (Weiss kap. -4) Många begrepp blir det Introduktion till kursen Exempel: Datastrukturen mängd Generiska Den som bara har en hammare tror att alla problem är spikar Vilken
Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling
Göteborg, Magnus Myréen, 2014-10- 15 Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max
Algoritmer. Två gränssnitt
Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Terminologi Vad är en klass?
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:
Föreläsning 6 Innehåll Rekursion Begreppet rekursion Rekursiv problemlösning Samband mellan rekursion och induktion Söndra-och-härska-algoritmer Dynamisk programmering Undervisningsmoment: föreläsning
Laboration 13, Arrayer och objekt
Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift
Föreläsning 8 Innehåll
Föreläsning 8 Innehåll Orientering om samarbete om Eclipse-projekt med git Orientering om konstruktion av användargränssnitt i Android Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-7, TDA540 Dag: 208-0-3, Tid: 4.00-8.00 Uppgift a) class används för en klassdeklaration som
Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-04-12, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling
Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:
Del A (obligatorisk för alla)
Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering
Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 15-04-18 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson
Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output
Programmering hh.se/db2004 Föreläsning 5: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite mer om Javas stöd för fält Hur många element har ett fält?
Lösningsförslag till exempeltenta 2
Lösningsförslag till exempeltenta 2 1 1. Beskriv hur man kan söka igenom en tvådimensionell array. Beskriv pseudokoden och förklara så klart som möjligt hur den fungerar. Lösning: Se laboration 3. - Beskriv
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Programmering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Del A (obligatorisk för alla)
Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar
D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.
D0010E Övningsuppgifter i Eclipse Hello world! Skapa ett program som skriver ut "Hello world" på skärmen. package tutorial; public class HelloWorld public static void main(string[] args) System.out.println("Hello
1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER
Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Logiska uttryck datatypen boolean Logiska uttryck kan ha två möjliga värden, true eller false. Variabler av typen boolean kan tilldelas
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
OOP Objekt-orienterad programmering
OOP F4:1 OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder Metoder - subrutiner OOP F4:2 Kod som utför en viss operation. Ligger i olika klasser och anropas via operatorn.
Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm
Programmering för språkteknologer II OH-serie: Sökning och sortering Mats Dahllöf Sökning och sortering Sökning: lokalisera objekt i samlingar. Finns ett visst värde? I så fall: var? Sortering: placera
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska
Tentamen i Grundläggande Programvaruutveckling, TDA548
Tentamen i Grundläggande Programvaruutveckling, Joachim von Hacht/Magnus Myreen Datum: 2016-12-20 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 3: 24-37 4: 38-47 5
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något
Lektion 1 - Programmeringsteknik F1, ht 2003
Lektion 1 - Programmeringsteknik F1, ht 2003 Daniel Deogun danield@it.uu.se 8 september 2003 Innehåll 1 När är ICA öppet? 3 1.1 Problem................................ 3 1.2 Lösning................................
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.
Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.
(16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar
F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander
F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning
Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner
Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
JAVAUTVECKLING LEKTION 4
JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet
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
Algoritmer och datastrukturer H I 1 0 2 9 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 Föreläsning 1 Inledande om algoritmer Rekursion Stacken vid rekursion Rekursion iteration Möjliga vägar
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
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 Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.
(1 oktober 2017 F5 1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (1 oktober 2017 F5 2 ) Pokertärningar
Tentamen i Objektorienterad programmering E
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA546 Tentamen i Objektorienterad programmering E Måndagen 8 mars 2010, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 1040. Inga hjälpmedel. Lösningar till
OOP Objekt-orienterad programmering
OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Föreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista Evaluate postfix expressions Läsanvisningar
Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 Hjälpmedel: Java-bok Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-15, TDA540 Dag: 2016-04-09, Tid: 14.00-18.00 Uppgift 1 Metoden mystery vänder om ett fält.