Introduktion till Datalogi DD1339. Föreläsning 5 13 okt 2014

Relevanta dokument
Introduktion till Datalogi DD1339. Föreläsning 4 7 okt 2014

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Laboration A Objektsamlingar

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

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

F4. programmeringsteknik och Matlab

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

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

Föreläsning REPETITION & EXTENTA

Föreläsning 2, vecka 8: Repetition

Föreläsning 4 Innehåll

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

JAVAUTVECKLING LEKTION 8

Lösningsförslag till exempeltenta 1

Föreläsning 8: Exempel och problemlösning

Föreläsning 12. Länkade listor

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll

OOP Objekt-orienterad programmering

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

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

Föreläsning 12: Exempel och problemlösning

Tentamen. Lösningsförslag

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

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

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

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

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

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

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Föreläsning 2 Datastrukturer (DAT037)

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

Malmö högskola 2007/2008 Teknik och samhälle

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

TDDC77 Objektorienterad Programmering

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

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

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7.

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Del A (obligatorisk för alla)

Tentamen, EDAA20/EDA501 Programmering

Del A (obligatorisk för alla)

Objektorienterad programmering i Java

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

BST implementering, huvudstruktur

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Tentamen OOP

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

Datastrukturer. föreläsning 3. Stacks 1

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

Föreläsning 10. ADT:er och datastrukturer

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 2 Datastrukturer (DAT037)

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Presentation av trafiksimuleringsprojektet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Tommy Färnqvist, IDA, Linköpings universitet

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

Länkade strukturer. (del 2)

Föreläsning 6: Introduktion av listor

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Arrayer. results

Konstruktion av klasser med klasser

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

Tentamen i Objektorienterad programmering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Typkonvertering. Java versus C

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

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

Stackar, köer, iteratorer och paket

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Malmö högskola 2008/2009 CTS

Transkript:

Introduktion till Datalogi DD1339 Föreläsning 5 13 okt 2014

UML - klassdiagram Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4

UML - klassdiagram Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Namn2 Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4

UML - klassdiagram Namn Fält1 Fält2 Fält3 1 n Namn2 Metod1 Metod2 Metod3 Metod4 Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4

UML - Objektdiagram Namn Fält1 = val1 Fält2 = val2 Fält3 = array NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3

Villkorsats (Control flow) if(villkor){ else{ block A block B block C

Villkorsats (Control flow) while(villkor){ block A block B

Villkorsats (Control flow) while(villkor){ block A Upprepa block A så länge villkor är true block B

Villkorsats (Control flow) while(villkor){ block A Upprepa block A så länge villkor är true Om villkor är false från början så körs aldrig block A block B

While-sats (Control flow) while(notdone){ dosomething(); Upprepa block A så länge villkor är true Om villkor är false från början så körs aldrig block A

While-sats String s = ; while(s!= quit ){ s = getnextcommand(); executecommand(s);

While-sats int i = 0; while(i < 20){ System.out.println( Rad nr: + i); i++;

for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);

for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);

for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);

for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);

Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer:

Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase();

Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase(); Vi måste ange hur många element som ska finnas i vektorn

Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase(); Vi måste ange hur många element som ska finnas i vektorn Vi måste ange vilken plats i vektorn ett element har

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand.

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next());

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next());

En vektorbaserad samling public class StringCollection{

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0];

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; public void add(string s){

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1];

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i];

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s;

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray;

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; private int index = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray; public String next(){ return myarray[index++];

En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; private int index = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray; public String next(){ return myarray[index++]; public boolean hasnext(){ return (index < size);

Vektorbaserad samling Namn1 Fält3 = samling samling Fält1 = array NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3

Vektorbaserad samling Namn1 Fält3 = samling samling Fält1 = NamnA NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3

En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); public void add(string s){ public String next(){ public boolean hasnext(){

En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ public boolean hasnext(){

En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){

En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){ return currentnode.hasnext();

En samling med en länkad lista public class StringNode{ private StringNode nextnode = null; private String mystring; public StringNode(String s){ mystring = s; public StringNode next(){ return nextnode; public void addnext(stringnode sn){ nextnode = sn; public boolean hasnext(){ return nextnode!= null; public String tostring(){ return mystring;

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); /* PROBLEM!! */

Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); /* PROBLEM!! */

Iterator Om vi skapar ett nytt iteratorobjekt varje gång vi loopar så slipper vi problemen! StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten Iterator it = mywords.iterator(); while(it.hasnext()){ // Skriver ut alla ord igen System.out.println(it.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent Iterator it2 = mywords.iterator(); while(it2.hasnext()){ // Skriver ut alla ord igen System.out.println(it2.next());

En samling med en länkad lista och iterator public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; else{ lastnode.addnext(newnode); lastnode = newnode; public Iterator iterator(){ return new Iterator(startNode);

Iterator public class Iterator{ private StringNode currentnode = null; public Iterator(StringNode sn){ currentnode = sn; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){ return currentnode.hasnext();

http://www.csc.kth.se/utbildning/kth/kurser/dd1339