Programmering för språkteknologer II, HT2011. Rum
|
|
- Ida Vikström
- för 4 år sedan
- Visningar:
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 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 merProgrammering 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 merLö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 merLö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 merInterfacen 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 merAvbildningar 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 merFö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 merFö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 merFö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 merProgrammering 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 merFö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 merDiskutera. 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 merFö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 merInlä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 merFö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 merExempel 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 merTENTAMEN 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 merF12 - 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 merTDDD78 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 merInlä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 merObjektorienterad 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 merFö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 merDet ä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 merAlgoritmer 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 merTentamen, 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 merFö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 merDatastrukturer. 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 merFö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 merLaboration 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 merHitta 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 merFö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 merFö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 merBankkonto - ö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 merFö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 merTENTAMEN 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 merAtt 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 merFö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 merTentamen 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 merDatastrukturer. 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 merAnmä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 merEDAA20 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 merDugga 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 merF5: 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 merProgrammering 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 merAnmä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 merKompilering 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 merLö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 merOutline. 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 merObjektorienterad 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 merLaboration 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 merif (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 merGrundlä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 merGrundkurs 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 merSö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 merLä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 merTentamen 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 merOOP 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 merSaker 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 merIdag. 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 merTENTAMEN: 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 merFö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 merLä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 merArrayer. 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 merSö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 merFö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 merDatatyper 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.
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 merProgrammering 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 merTentamen 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 merDAT043 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 merLö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 merTENTAMEN: 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 merTentamen 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 merFö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 merDen 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 merTentamen'('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 merTentamen, 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 merObjektorienterad 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 merFö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 merInnehå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 merLÖ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 merTENTAMEN: 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 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 merDAT043 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 merLö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 merTentamen 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 merTENTAMEN: 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 mer13 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 merTentamen 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 merTentamen 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 merFö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 merAnmä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 merProgramkonstruktion 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 merFö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 merI 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 merLö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 mer732G 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 merDagens 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 merFö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