Programmering för språkteknologer II, HT2011. Rum

Storlek: px
Starta visningen från sidan:

Download "Programmering för språkteknologer II, HT2011. Rum"

Transkript

1 Programmering för språkteknologer II, HT2011 Rum

2 Idag - Hashtabeller - Flerdimensionella arrayer (2D) 2

3 Repetition - Vad matchar ((abc de))* Svar:, abc, de, abcabc, dede, abcde, deabc,... a a b S 1 S 2 S 3 4 c S d S 5 e d 3

4 Dagens automat S 1 a S 2 b S 3 c S 4 d S 5 4

5 Dagens automat I filen initial s1 final s3 s5 s1 a s2 s2 b s3 s1 c s4 s4 d s5 5

6 Laborationen -kodöversikt Automata #initialstate: String #finalstates: String[] +accepts(indata String): boolean Förklaring # protected + public - private - klassvariabel FiniteStateAutomata - transitions: Hashmap<String, String> - keystring(state String, symbol String):String ArrayAutomata - transitions: char[][] - EMPTY : char 6

7 Dagens automat skapad med konstrukturerna Dagens automat skapad med FiniteStateAutomata(String filename): initialstate = s1 finalstates = { s3, s5 transitions i hashtabell Dagens automat skapad med ArrayAutomata(String filename): initialstate = s1 finalstates = { s3, s5 transitions i 2D-array 7

8 Hashtabeller 8

9 Associativa typer - En array associerar heltal med värden av godtycklig typ: String[] array = new String[4]; array[0] = "s2"; array[1] = "s3"; array[2] = "s4"; array[3] = "s5"; s2 s3 s4 s5 index:

10 Associativa typer - Tänk om vi kan associera värden av godtycklig typ med hjälp av ett godtyckligt värde, dvs en nyckel, istället för ett index. Exempel: s2 s3 s4 s5 nyckel: s1->a s2->b s1->c s4->d 10

11 Associativa typer - Tänk om vi kan associera värden av godtycklig typ med hjälp av ett godtyckligt värde, dvs en nyckel, istället för ett index. Exempel: s2 s3 s4 s5 nyckel: s1->a s2->b s1->c s4->d Problem: Hur ska datorn veta var i arrayen s1->a finns? 11

12 Associativa typer - Tänk om vi kan associera värden av godtycklig typ med hjälp av ett godtyckligt värde, dvs en nyckel, istället för ett index. Exempel: s2 s3 s4 s5 nyckel: s1->a s2->b s1->c s4->d Problem: Hur ska datorn veta var i arrayen s1->a finns? Lösning: Konvertera s1->a till ett giltigt index med hjälp av en hashfunktion. 12

13 Associativa typer - Tänk om vi kan associera värden av godtycklig typ med hjälp av ett godtyckligt värde, dvs en nyckel, istället för ett index. Exempel: s2 s3 s4 s5 hashfunktion: nyckel: s1->a s2->b s1->c s4->d Lösning: Konvertera s1->a till ett giltigt index med hjälp av en hashfunktion. 13

14 Hashtabeller Skapa hashtabell HashMap<String,String> transitions = new HashMap<String,String>(100); 14

15 Hashtabeller insättning s1->a s2->b s1->c s4->d s1-> a s Sätt in övergången s1 a s2 i automaten. transitions.put(keystring("s1", "a"), "s2"); 15

16 Hashtabeller insättning s1->a s2->b s1->c s4->d s1-> a s s2->b s3 6 7 Sätt in övergången s2 b s3 i automaten. transitions.put(keystring("s2", "b"), "s3"); 16

17 Hashtabeller insättning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 Sätt in övergången s1 c s4 i automaten. transitions.put(keystring("s1", "c"), "s4"); 17

18 Hashtabeller insättning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Sätt in övergången s4 d s5 i automaten. transitions.put(keystring("s4", "d"), "s5"); 18

19 Hashtabeller insättning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Nu har vi lagrat vår automat i hashtabellen. 19

20 Hashtabeller Sökning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Om automaten befinner sig i tillstånd s1 och läser a på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s1", "a")); 20

21 Hashtabeller Sökning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Om automaten befinner sig i tillstånd s2 och läser b på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s2", "b")); 21

22 Hashtabeller Sökning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Om automaten befinner sig i tillstånd s1 och läser c på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s1", "c")); 22

23 Hashtabeller Sökning s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s s2->b s3 6 7 s4->d s5 Om automaten befinner sig i tillstånd s4 och läser d på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s4", "d")); 23

24 Hashtabeller Fakta Skapa hashtabell: HashMap<K,V> name = new HashMap<K, V>(int capacity); Insättning: name.put(k key, V value); Sökning: V value = (V)name.get(K key); K står för key och kan vara av godtycklig typ V står för value och kan vara av godtycklig typ 24

25 Hashtabeller Krockhantering Vad händer om två nycklar får samma index i hashtabellen? 25

26 Hashtabeller Krockhantering s1->a s2->b s1->c s4->d s1-> a s transitions.put(keystring("s1", "a"), "s2"); 26

27 Hashtabeller Krockhantering s1->a s2->b s1->c s4->d s1-> a s S2->b s3 6 7 transitions.put(keystring("s2", "b"), "s3"); 27

28 Hashtabeller Krockhantering s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s S2->b s3 6 7 transitions.put(keystring("s1", "c"), "s4"); 28

29 Hashtabeller Krockhantering s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s S2->b s3 6 7 transitions.put(keystring("s4", "d"), "s5"); 29

30 Hashtabeller Krockhantering s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s S2->b s3 6 7 transitions.put(keystring("s4", "d"), "s5"); Index 2 i hashtabellen har redan ett värde, så nu blir det en krock. Hur ska vi lösa detta? 30

31 Hashtabeller Krockhantering Det finns olika sätt att lösa en krock - länkning - Varje plats i hashtabellen innehåller en länkad lista - öppen adressering - Placera datan på den första lediga platsen i hashtabellen 31

32 Hashtabeller Krockhantering länkning - Varje plats i hashtabellen innehåller en länkad lista s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1-> a s S2->b s3 6 7 transitions.put(keystring("s4", "d"), "s5"); 32

33 Hashtabeller Krockhantering länkning - Varje plats i hashtabellen innehåller en länkad lista 0 s1->c s4 s1->a s2->b s1->c s4->d 1 2 s1->a s S2->b s3 s4->d s5 6 7 transitions.put(keystring("s4", "d"), "s5"); 33

34 Hashtabeller Krockhantering Länkning: Sökning 0 s1->c s4 s1->a s2->b s1->c s4->d 1 2 s1->a s S2->b s3 s4->d s5 6 7 Om automaten befinner sig i tillstånd s4 och läser d på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s4", "d")); 34

35 Hashtabeller Krockhantering Länkning: Sökning 0 s1->c s4 s1->a s2->b s1->c s4->d 1 2 s1->a s S2->b s3 s4->d s5 6 7 Om automaten befinner sig i tillstånd s4 och läser d på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s4", "d")); 35

36 Hashtabeller Krockhantering Länkning: Sökning 0 s1->c s4 s1->a s2->b s1->c s4->d 1 2 s1->a s S2->b s3 s4->d s5 6 7 Om automaten befinner sig i tillstånd s4 och läser d på indata. I vilket tillstånd hamnar automaten i då? String state = (String)transitions.get(keyString("s4", "d")); 36

37 Hashtabeller Krockhantering Länkning - insättning: - hashfunktionen används på nyckeln och vi får ett index i hashtabellen - nyckel + data placeras in i den enkellänkade listan i index - sökning: - hashfunktion används på nyckeln och vi får ett index - Man går igenom listan i index i tills: - data med motsvarande nyckel hittas och data returneras - eller tills listan är slut. Om listan är slut, returneras null. 37

38 Hashtabeller Krockhantering Öppen adressering: Lagra på den första lediga platsen. s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1->a s S2->b s3 6 7 transitions.put(keystring("s4", "d"), "s5"); 38

39 Hashtabeller Krockhantering Öppen adressering: Lagra på den första lediga platsen. s1->a s2->b s1->c s4->d 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 5 S2->b s3 6 7 transitions.put(keystring("s4", "d"), "s5"); 39

40 Hashtabeller Krockhantering Öppen adressering: Lagra på den första lediga platsen. s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 5 S2->b s3 6 7 transitions.put(keystring("s4", "e"), "s6"); 40

41 Hashtabeller Krockhantering Öppen adressering: Lagra på den första lediga platsen. s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 5 S2->b s3 6 7 transitions.put(keystring("s4", "e"), "s6"); 41

42 Hashtabeller Krockhantering Öppen adressering: Lagra på den första lediga platsen. s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 s4->e s6 5 S2->b s3 6 7 transitions.put(keystring("s4", "e"), "s6"); 42

43 Hashtabeller Krockhantering Öppen adressering: Sökning s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 s4->e s6 5 S2->b s3 6 7 transitions.get(keystring("s4", "e")); 43

44 Hashtabeller Krockhantering Öppen adressering: Sökning s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 s4->e s6 5 S2->b s3 6 7 transitions.get(keystring("s4", "e")); 44

45 Hashtabeller Krockhantering Öppen adressering: Sökning s1->a s2->b s1->c s4->d s4->e 0 s1->c s4 1 2 s1->a s2 3 s4->d s5 4 s4->e s6 5 S2->b s3 6 7 transitions.get(keystring("s4", "e")); 45

46 Hashtabeller Krockhantering Öppen adressering insättning: - applicera hashfunktionen på nyckeln och få ett index i hashtabellen - gå in i indexet och leta efter den första lediga platsen - placera nyckeln + datan på den platsen Sökning: - applicera hashfunktionen på nyckeln - leta efter nyckeln, om den hittas returneras värdet annars returneras null. 46

47 Hashtabeller Krockhantering Täthet - Risken för krockar ökar ju fler nycklar man placerat i hashtabellen. - Det tar längre tid att lägga in och söka efter nycklar i en hashtabell ju fler krockar man har. - Riktmärke: antal nycklar antal platser =

48 Hashtabeller - JAVA Klasser: Hashtable, HashMap, HashSet Konstruktorer: - Hashtable(); HashMap(); HashSet(); Kapacitet: 16 Täthet: Hashtable(int capacity); HashMap(int capacity); HashSet(int capacity); Kapacitet: capacity Täthet: Hashtable(int capacity, float loadfactor); HashMap(int capacity, float loadfactor); HashSet(int capacity, float loadfactor); Kapacitet: capacity Täthet: loadfactor 48

49 Hashtabeller - JAVA Klasser: Hashtable, HashMap, HashSet - När antalet element i hashtabellen överstiger kapaciteten gånger täthetsfaktorn, utökas tabellen. - Detta tar tid och ska därför inte göras ofta. - Täthetsfaktorn kan användas för att balansera uttrymmet mot effektiviteten. 49

50 Hashtabeller - JAVA Klasser: Hashtable, HashMap, HashSet - Krockhantering: Länkning - För att objekt av en klass ska kunna placeras i en hashtabell måste man implementera följande: - int hashcode() - Avgör i vilket index en nyckel ska placeras i - boolean equals(object other) - Finns definierad i objekt - Avgör om två nycklar är lika 50

51 Hashtabeller - JAVA int hashcode() - Två objekt som är lika enligt equals ska få samma hashcode - Två objekt som inte är lika enligt equals behöver inte få samma hashcode - Strategier: - Linjär sökning: ett steg i taget - Kvadratisk sökning: 1, 2, 4,8 16,... - Dubbelhashning: en ytterliggare hashfunktion avgör hur många steg som ska tas 51

52 Hashtabeller - JAVA boolean equals(object o) - Ta reda på om två objekt är lika (jämför == för värden) - Exempel: public class Person{ String name = ""; public boolean equals (Object o) { if(this == o) return true; // samma objekt 52

53 Hashtabeller - JAVA boolean equals(object o) - Ta reda på om två objekt är lika (jämför == för värden) - Exempel: public class Person{ String name = ""; public boolean equals (Object o) { if(this == o) return true; // samma objekt // Testa om o inte är en instans av Person else if (!(o instanceof Person)) return false; o instanceof klassnamn returnerar sant om o är en instans av klassen klassnamn, annars returneras falskt. 53

54 Hashtabeller - JAVA boolean equals(object o) - Ta reda på om två objekt är lika (jämför == för värden) - Exempel: public class Person{ String name = ""; public boolean equals (Object o) { if(this == o) return true; // samma objekt // Testa om o inte är en instans av Person else if (!(o instanceof Person)) return false; else { // Testa om instansvariablerna har // samma värde Person operson = (Person)o; return name == operson.name; 54

55 Klassen String - boolean equals(object o) Jämför alltid strängar med equals, istället för string1 == string2. Exempel: String string = "Hej"; if(string.equals("hej")) { System.out.println("Same string"); else { System.out.println("Not the same string"); 55

56 Flerdimensionella arrayer 56

57 Endimensionell array - Repetition - En array deklareras så här: int[] array = new int[4]; cell array: index:

58 Endimensionell array - Repetition - Data i en array lagras så här: array[0] = 0; array: index:

59 Endimensionell array - Repetition - Data i en array lagras så här: array[0] = 0; array[1] = 1; array: index:

60 Endimensionell array - Repetition - Data i en array lagras så här: array[0] = 0; array[1] = 1; array[2] = 2; array: index:

61 Endimensionell array - Repetition - Data i en array hämtas så här: int v = array[0] // v = 0; array: index:

62 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; array: insertat(array, 5, 1); index:

63 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 63

64 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 3 64

65 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 3 swap: 2 65

66 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 3 swap: 2 66

67 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 3 swap: 2 67

68 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; Swap: Teknik för att byta plats på två array[pos] = data; värden i en array. data: 5 array: pos: 1 i = 3 swap: 2 68

69 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 2 69

70 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 2 swap: 1 70

71 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 2 swap: 1 71

72 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 2 swap: 1 72

73 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 i = 1 73

74 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; data: 5 array: pos: 1 74

75 Endimensionell array - Repetition void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; array:

76 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: removeat(array,1); array:

77 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 77

78 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 i = 1 78

79 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 i = 1 array.length 1 = 3 79

80 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 i = 2 array.length 1 = 3 80

81 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 i = 2 array.length 1 = 3 81

82 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 i = 3 array.length 1 = 3 82

83 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array: pos: 1 array.length 1 = 3 83

84 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; array:

85 Endimensionell array - Repetition int[] copyarray(int[] array) { int copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: copyarray(array); copy:

86 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array:

87 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: copy:

88 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

89 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

90 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

91 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

92 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

93 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

94 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

95 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i array.length = 4 copy:

96 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; array: i = 4 array.length = 4 copy:

97 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; copy:

98 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; index: index: char[][] transitions:

99 Dagens automat S 1 a S 2 b S 3 c S 4 d S 5 Nu ska vi lagra den i vår 2D-array transitions. 99

100 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[1][2] = a; // sätt in s1 a s2 index: index: char[][] transitions:

101 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[1][2] = a; // sätt in s1 a s2 index: index: char[][] transitions:

102 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[1][2] = a; // sätt in s1 a s2 index: index: char[][] transitions: a 102

103 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[1][4] = c; // sätt in s1 c s4 index: index: char[][] transitions: a 103

104 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[1][4] = c; // sätt in s1 c s4 index: index: char[][] transitions: a c 104

105 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[2][3] = b; // sätt in s2 b s3 index: index: char[][] transitions: a c 105

106 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[2][3] = b; // sätt in s2 b s3 index: index: char[][] transitions: a b c 106

107 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[4][5] = d; // sätt in s4 d s5 index: index: char[][] transitions: a b c 107

108 Java Flerdimensionella arrayer Exempel: char[][] transitions = new char[5][6]; transitions[4][5] = d; // sätt in s4 d s5 index: index: char[][] transitions: a b c d 108

109 Java Flerdimensionella arrayer Nu finns automaten i transitions. index: index: char[][] transitions: a b c d 109

110 Java Flerdimensionella arrayer Hämta data från cell[1][2]: char symbol = transitions[1][2]; index: index: char[][] transitions: a b c d 110

111 Java Flerdimensionella arrayer Hämta data från cell[1][2]: char symbol = transitions[1][2]; index: index: char[][] transitions: a b c d 111

112 Java Flerdimensionella arrayer Hämta data från cell[1][2]: char symbol = transitions[1][2]; // symbol = a index: index: char[][] transitions: a b c d 112

113 Java Flerdimensionella arrayer Hämta data från cell[1][4]: char symbol = transitions[1][4]; index: index: char[][] transitions: a b c d 113

114 Java Flerdimensionella arrayer Hämta data från cell[1][4]: char symbol = transitions[1][4]; index: index: char[][] transitions: a b c d 114

115 Java Flerdimensionella arrayer Hämta data från cell[1][4]: char symbol = transitions[1][4]; // symbol = c index: index: char[][] transitions: a b c d 115

116 Java Flerdimensionella arrayer Hämta data från cell[2][3]: char symbol = transitions[2][3]; index: index: char[][] transitions: a b c d 116

117 Java Flerdimensionella arrayer Hämta data från cell[2][3]: char symbol = transitions[2][3]; // symbol = b index: index: char[][] transitions: a b c d 117

118 Java Flerdimensionella arrayer Hämta data från cell[4][5]: char symbol = transitions[4][5]; index: index: char[][] transitions: a b c d 118

119 Java Flerdimensionella arrayer Hämta data från cell[4][5]: char symbol = transitions[4][5]; // symbol = d index: index: char[][] transitions: a b c d 119

120 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 120

121 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 121

122 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 122

123 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 123

124 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 124

125 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 125

126 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 126

127 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 127

128 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 128

129 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 129

130 Java Flerdimensionella arrayer Loopa igen en 2D-array: for(int i = 0; i < transitions.length;i++) for(int j = 0; j < transitions[i].length;j++) System.out.println(transitions[i][j]); index: index: char[][] transitions: a b c d 130

131 Endimensionell array - Repetition int[] copyarray(int[] array) { int[] copy = new int[array.length]; for(int i = 0; i < array.length; i++) { copy[i] = array[i]; return copy; 131

132 Tvådimensionell array - CopyArray int[][] copyarray(int[][] array) { int[][] copy = new int[array.length][array[0].length]; for(int i = 0; i < array.length;i++) for(int j = 0; j < array[i].length;j++) copy[i][j] = array[i][j]; return copy; 132

133 Tvådimensionell array - CopyArray int[][] copyarray(int[][] array) { int[][] copy = new int[array.length][array[0].length]; for(int i = 0; i < array.length;i++) for(int j = 0; j < array[i].length;j++) copy[i][j] = array[i][j]; return copy; index: index:

134 Tvådimensionell array - CopyArray int[][] copyarray(int[][] array) { int[][] copy = new int[array.length][array[0].length]; for(int i = 0; i < array.length;i++) for(int j = 0; j < array[i].length;j++) copy[i][j] = array[i][j]; return copy; index: index:

135 Endimensionell array - Repetition void removeat(int[] array, int pos) { for(int i = pos; i < array.length - 1; i++) { array[i] = array[i + 1]; array[array.length-1] = 0; 135

136 Tvådimensionell array - removeat void removeat(int[][] array, int pos1, int pos2) { for(int i = pos2; i < array[pos1].length - 1; i++) { array[pos1][i] = array[pos1][i + 1]; array[pos1][array[pos1].length-1] = 0; index: pos1: index: a b c 136

137 Endimensionell array - insertat void insertat(int[] array, int data, int pos) { for(int i = array.length - 1; i > pos; i--) { int swap = array[i - 1]; array[i - 1] = array[i]; array[i] = swap; array[pos] = data; 137

138 Tvådimensionell array - insertat void insertat(int[][] array, int data, int pos1, int pos2) { for(int i = array[pos1].length - 1; i > pos2; i--) { int swap = array[pos1][i - 1]; array[pos1][i - 1] = array[pos1][i]; array[pos1][i] = swap; array[pos1][pos2] = data; index: pos1: index: a b c 138

139 Nästa gång - Flerdimensionella arrayer (3D) - Sökalgoritmer - Sökträd 139

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

Programmering för språkteknologer II, HT2011. Rum

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

Läs mer

Lösningsförslag till exempeltenta 2

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

Läs mer

Lösningsförslag till exempeltenta 1

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

Läs mer

Interfacen Set och Map, hashtabeller

Interfacen Set och Map, hashtabeller Föreläsning 0 Innehåll Hashtabeller implementering, effektivitet Interfacen Set och Map ijava Interfacet Comparator Undervisningsmoment: föreläsning 0, övningsuppgifter 0-, lab 5 och 6 Avsnitt i läroboken:

Läs mer

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar

Läs mer

Föreläsning 8. Mängd, Avbildning, Hashtabell

Föreläsning 8. Mängd, Avbildning, Hashtabell Föreläsning 8 Mängd, Avbildning, Hashtabell Föreläsning 8 Mängd (Set) Avbildning (Map) Hashtabeller Hashkoder Öppen adressering Länkning Implementering Mängd En mängd är en samling som inte innehåller

Läs mer

Föreläsning 14 Innehåll

Föreläsning 14 Innehåll Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade

Läs mer

Föreläsning 8. Mängd, Avbildning, Hashtabell

Föreläsning 8. Mängd, Avbildning, Hashtabell Föreläsning 8 Mängd, Avbildning, Hashtabell Föreläsning 8 Mängd (Set) Avbildning (Map) Hashtabeller Hashkoder Öppen adressering Länkning Effektivitet och minneskrav Implementering Läsanvisning och uppgifter

Läs mer

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Föreläsning 10 Innehåll

Föreläsning 10 Innehåll Föreläsning 10 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Undervisningsmoment:

Läs mer

Diskutera. Hashfunktion

Diskutera. Hashfunktion Föreläsning 1 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Tidigare har

Läs mer

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal) Föreläsning 0 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map ijava Undervisningsmoment:

Läs mer

Inlämningsuppgift och handledning

Inlämningsuppgift och handledning Inlämningsuppgift och handledning Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder på fredagluncher

Läs mer

Föreläsning 11 Innehåll

Föreläsning 11 Innehåll Föreläsning 11 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Datavetenskap (LTH)

Läs mer

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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.

Läs mer

TENTAMEN OOP

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

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

TDDD78 Viktiga begrepp, del 2

TDDD78 Viktiga begrepp, del 2 jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor

Läs mer

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller Inlämningsuppgift och handledning Föreläsning 11 Innehåll Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.

Läs mer

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t. Föreläsning 11 Arrayer Arrayer Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt int[] tal = new int[3]; Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2015-05-26 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

Algoritmer och datastrukturer

Algoritmer och datastrukturer Algoritmer och datastrukturer Binära sökträd Hash Tabeller Sökning Många datastukturer försöker uppnå den effektivaste sökningen I arrayer - linjer sökning, och binärt sökning när arrayen kan vara sörterad

Läs mer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 6 Datastrukturer (DAT037) Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-17 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Datastrukturer. föreläsning 6. Maps 1

Datastrukturer. föreläsning 6. Maps 1 Datastrukturer föreläsning 6 Maps 1 Avbildningar och lexika Maps 2 Vad är ett lexikon? Namn Telefonnummer Peter 031-405937 Peter 0736-341482 Paul 031-405937 Paul 0737-305459 Hannah 031-405937 Hannah 0730-732100

Läs mer

Föreläsning 2, vecka 8: Repetition

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

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts Föreläsning 11-12 Innehåll Hantera många element Tidigare har vi använt vektorer för att lagra många element av samma tp. Eempel: Klassen ArraList Inläsning från tetfil, utskrift på tetfil int[] nbrs

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Föreläsning 5 Datastrukturer (DAT037)

Föreläsning 5 Datastrukturer (DAT037) Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Tentamen OOP 2015-03-14

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

Läs mer

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer Föreläsning 1-12 Innehåll Vektorer Registrering (räkna element av olika slag) Sökning Matriser Klasserna String och StringBuilder Repetition inför delmålskontroll 2 Undervisningsmoment: föreläsning 1-12

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor

Läs mer

Programmering för språkteknologer II, HT2014. Rum

Programmering för språkteknologer II, HT2014. Rum Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Läs mer

Lösningar för tenta 2 DAT043,

Lösningar för tenta 2 DAT043, Lösningar för tenta 2 DAT043, 2018-06-08. Uppgift 1 public class Car{ private String model; private String year; private double price; public Car(String model, String year, double price){ this.model =

Läs mer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine. Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt

Läs mer

Laboration 13, Arrayer och objekt

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

Läs mer

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

if (n==null) { return null; } else { return new Node(n.data, copy(n.next)); Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls

Läs mer

Grundläggande datalogi - Övning 4

Grundläggande datalogi - Övning 4 Grundläggande datalogi - Övning 4 Björn Terelius November 21, 2008 Definitioner Olika mått på komplexitet Definition En funktion f sägs vara O(g) om det existerar konstanter c, N så att f (n) < cg(n) för

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Läs mer

Sökning och sortering

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

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen Datastrukturer D DAT 036/DIT960 Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =

Läs mer

OOP Objekt-orienterad programmering

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

Läs mer

Saker du ska kunna Föreläsning 13 & 14

Saker du ska kunna Föreläsning 13 & 14 Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! 1 (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-16 Idag Mängder, avbildningar. Hashtabeller. Sortering. Pseudokod Blandning av programmeringsspråk, matematisk notation och naturligt

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

Arrayer. results

Arrayer. results Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1

Läs mer

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller Översikt Linjär sökning Sökning Binär sökning Hashtabeller Programmering tillämpningar och datastrukturer 2 Linjär sökning Binärt sökträd Undersök ett element i taget tills du hittar det sökta Komplexitet

Läs mer

Föreläsning 6: Metoder och fält (arrays)

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

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Läs mer

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. TDA550 - Objektorienterad programvaruutveckling, fk Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. Uppgift 1 Icke-muterbarhet kontra

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

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,

Läs mer

Lösningsförslag: Instuderingsfrågor, del D

Lösningsförslag: Instuderingsfrågor, del D Uppgift 1. Objektorienterad programmering, Z1 Lösningsförslag: Instuderingsfrågor, del D a) Inget fält behövs. Man kan läsa in ett tal i taget och addera dessa till summan. b) Här behövs ett fält. c) Här

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! 1 (8) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

Den som bara har en hammare tror att alla problem är spikar

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

Läs mer

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline

Läs mer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2012 12 20, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Innehåll. Sökning och hashtabeller. En bilsamling att söka i. En bil-klass att söka efter. Hur hittar vi alla bilar som uppfyller ett annat villkor

Innehåll. Sökning och hashtabeller. En bilsamling att söka i. En bil-klass att söka efter. Hur hittar vi alla bilar som uppfyller ett annat villkor Innehåll Sökning och hashtabeller Henrik Bergström henrikbe@dsv.su.se Sökning i linjära strukturer Söka efter många objekt Sökning efter ett objekt Sekventiell sökning Binär sökning Sökning efter godtyckligt

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad Programmering DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen till tentamen 1 (5) Kursnamn Algoritmer och datastrukturer Tentamensdatum Program DAI2+I2 Läsår 201/201, lp 4 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (

Läs mer

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel. Tentamen Programmeringsteknik II för STS 2007-03-09 Skrivtid: 1500-2000 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (7) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

13 Prioritetsköer, heapar

13 Prioritetsköer, heapar Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning

Läs mer

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna! Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel. Tentamen Programmeringsteknik 2 och MN2 2006-03-10 Skrivtid: 0900-1400 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd

Läs mer

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 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

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Programkonstruktion och. Datastrukturer

Programkonstruktion och. Datastrukturer Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (hash-tabeller och heapar) Elias Castegren elias.castegren.7381@student.uu.se Arrayer igen En array är en linjär datastruktur

Läs mer

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 10 Datastrukturer (DAT037) Föreläsning 10 Datastrukturer (DAT037) Fredrik Lindblad 1 29 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

Läs mer

I ett program hantera man ofta samlingar av objekt av samma typ.

I ett program hantera man ofta samlingar av objekt av samma typ. Fält I ett program hantera man ofta samlingar av objekt av samma typ. Sådana samlingar vill man vanligtvis kunna gruppera ihop till en sammanhängande struktur. För detta ändamål tillhandahåller Java språkkonstruktioner

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen till tentamen 1 (6) Kurs Objektorienterad programmering Program D2 Läsår 2010/2011, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (11 p) public class CounterButton

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 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

Läs mer

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Föreläsning 1. Abstrakta datatyper, listor och effektivitet Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys

Läs mer