725G61 - Laboration 3 Metoder och abstrakta datatyper. Johan Falkenjack

Storlek: px
Starta visningen från sidan:

Download "725G61 - Laboration 3 Metoder och abstrakta datatyper. Johan Falkenjack"

Transkript

1 725G61 - Laboration 3 Metoder och abstrakta datatyper Johan Falkenjack October 29, 2013

2 1 Förberedelse Några av klasserna i labb 3 har samma namn som i labb 1 och 2 så antingen måste man skapa ett nytt projket eller ett nytt paket att ha klasserna i. Skapa ett nytt projekt i Eclipse eller skapa ett nytt paket i samma projekt som användes för labb 1 och 2. Fråga en labbassistent om du inte vet hur man gör. 2 Varför metoder I labb 1 lärde vi oss om variabler och den enklaste styrstrukturen if. I labb 2 gick vi vidare och lärde oss om loopar och hur man kan lagra data i arrayer. I den här labben kommer vi ta ett steg upp och börja bygga och använda metoder och abstrakta datatyper. En metod är ett stycke kod som vi gett ett namn och som därför kan återanvändas på många ställen i koden. Vi har faktiskt redan stött på ett antal metoder i kursen. Den metod vi använt mest är System.out.println() men vi har också använt oss av t.ex. Arrays.sort() och Random.nextInt(). Metoder ger oss en möjlighet att dela upp och abstrahera vår kod. Tänk till exempel att vi vill skapa ett program som styr en robot som kan baka. Då vill vi kanske skapa metoden bakebread(). I den metoden vill vi kanske i sin tur anropa metoderna misenplace() (det franska begreppet för att ha alla ingredienser och köksverktyg på plats innan man börjar laga mat), mixdough(), kneaddough(), wait() (används för att simulera jäsningen), formloaf() och useoven(). Tittar vi med specifikt på kneaddough() så kanske den innehåller en while-loop som, så länge inte degen är tillräckligt blandad, anropar metoderna fold() och press(). Skulle alla moment som ingår i att baka bröd ingå direkt i bakebread() skulle den metoden bli mycket stor och omöjlig att få en helhetskänsla för. Säg sedan att vi vill skapa en metod för att baka bullar, bakerolls(). Om all kod för att baka bullar var inbakad (pun intended) direkt i bakebread() skulle vi behöva skriva den koden igen för bakerolls(). Om koden istället är uppdelad i metoder kan vi återanvända t.ex. kneaddough() och useoven(). Bakningsexemplet är förstås bara en tankeövning, men även när vi kommer till riktiga program vill vi kunna dela upp vår kod för att kunna få en bättre överblick och lättare kunna återanvända kod. 2.1 Abstrakta datatyper En abstrakt datatyp (ofta bara kallad ADT) är en samling funktioner/metoder och en underliggande datastruktur som tillsammans modellerar lösningen på ett problem. Ett exempel på en abstrakt datatyp är en samling funktioner och en lista som gemensamt hanterar en kalender (en ökänd labb från IDAs historia är den sk Almanackan som dataingenjörerna och datavetarna hade i sin första programmeringskurs, som handlade om just en abstrakt datatyp för en kalender). I den här labben ska vi bygga en abstrakt datatyp för att hantera mängder av heltal, som i mängdlära. 1

3 (För er som programmerat tidigare och hållit på med objektorientering så kan syftet med abstrakta datatyper liknas vid syftet med klasser. Innan objektorientering och klassparadigmet slog igenom var abstrakta datatyper det sätt man använde för att bygga och hantera mer avancerade datastrukturer.) 3 Metod, funktion, procedur, predikat, subrutin? Lite om terminologi. (Överkurs) I Java används normalt sett alltid begreppet metod. Ibland stöter man dock på begreppen funktion, procedur, predikat eller subrutin också. Detta är begrepp som generellt sett betyder samma sak, eventuellt med untantag av predikat som alltid anses representera ett sanningsvärde (precis som predikat-delen av en ifeller while-sats). Den mest generella termen är subrutin. Alla metoder, funktioner, procedurer och predikat är subrutiner. Subrutin avser generellt sett ett stycke kod som kan återanvändas och anropas från andra ställen i koden. Historiskt sett använde man ofta sk goto-satser för att flytta programflödet till en viss rad i koden där subrutinen låg, idag använder man oftast namngivna subrutiner som anropas och där programflödet automatiskt fortsätter där det var efter att subrutinen avslutats. En funktion är traditionellt sett ett stycke kod som beräknar ett värde men i övrigt inte påverkar programmet. T.ex. kan vi ha en funktion som beräknar summan av två tal men som inte påverkar några andra variabler som lagras av vårt huvudprogram. En procedur är traditionellt sett ett stycke kod som förändrar programmets "state", dvs förändrar värden på olika variabler som finns lagrade i programmet. Ett spel kan t.ex. ha en procedur killallplayers() som omgående dödar alla spelarkarktärer. Ett predikat är ett specialfall av en funktion som specifikt beräknar ett sanningsvärde. Alla predikat är funktioner och används för att utföra vanliga test som förekommer ofta. T.ex. är det bättre att skapa ett predikat som kollar om en array är tom än att varje gång explicit skriva en jämförelse mellan length-attributet och 0. Metod är ett begrepp som kommer från objektorientering. Vi har än så länge inte pratat om objektorientering mer än att vi påpekat att Java är ett objektorienterat språk. En metod är en subrutin som är specifikt kopplad till en klass eller till ett objekt, vad det innebär kommer vi prata mer om i Labb 5. Vi kan dock säga redan nu att alla subrutiner i Java också, av nödvändighet, är metoder. 4 Metodens anatomi Som ni minns har vi skapat ett stort antal main-metoder hittills i kursen. I den här labben kommer vi börja skapa andra metoder som kan anropas inifrån 2

4 main-metoden. Man skriver inte metoder inne i andra metoder i Java utan inne i klasser, på samma sätt som main-metoden. Här kommer ett första exempel: 1 public class Example { 2 3 public static void main(string[] args) { 4 System.out.println(addOne(1)); 5 } 6 7 public static int addone(int prior) { 8 retu rn prior + 1; 9 } 10 } Ovan står koden för klassen Example med en main-metod samt metoden addone(). Metoden addone() tar, heltal och beräknar det nästföljande heltalet och returnerar det. Dvs vi "får tillbaka" det nästföljande talet när metoden anropas. Den första raden i metoden (raderna 3 och 7 för respektive metod ovan) är metoddeklarationen och inom måsvingarna står som vanligt en kropp som beskriver vad metoden faktiskt gör för något. Metoddeklarationen består av ett antal delar. Inte heller i den här labben kommer vi prata om vad public static innebär (alla metoder vi skriver i den här labben kommer ha public static som förled) men det tredje ordet, int, säger oss att metoden returnerar ett heltal. I parentesen står metodens parametrar. En parameter är en variabel som tilldelas när metoden anropas och används för att skicka in data i metoden. En metod kan i teorin ha hur många parametrar som helst, de separeras då med komma. Metodens namn och parametrar utgör tillsammans metodens signatur. Det är möjligt att ha flera metoder med samma namn förutsatt att de har olika parametrar. Kroppen är i det här fallet mycket enkel och består bara av en return-sats. Return-satsen används för att "skicka tillbaka" ett värde från en metod. Se Övning 3.1 för att se hur ett returvärde "fångas upp". I main-metoden demonstreras hur addone() anropas. Här skickar vi in heltalet 1 som argument till metoden. Det betyder att parametern prior i addone() kommer få värdet 1. Alltså, argumentet 1 binds till parametern prior. Värt att veta är att många använder begreppen argument och parameter synonymt men jag brukar försöka skilja dem åt på detta sätt för att tydliggöra skillnaden. Här kommer en övning där vi använder addone(). 3

5 Övning 3.1 Skapa en klass som heter Example och som innehåller en main-metod och metoden addone(). Klistra in följande kod i main-metoden: int a = 1; // Here we use an assignment to save // the returned value in a variable: int b = addone(a); int c = addone(3); addone(b); System.out.println(a); System.out.println(b); System.out.println(c); Vilken utskrift får du när du exekverar det här programmet? Försök att förutsäga vilken utskriften kommer att bli innan du exekverar programmet, kontrollera sedan om det stämmer och analysera resultatet. UPPGIFT 3.1 Skapa en klass som heter Uppgift1 och skapa en main-metod. Skapa en ny metod som heter sumoftwo() som tar två heltal som argument, dvs som har två heltalsparametrar, och returnerar summan av de två talen. Skriv sedan ett testfall i main-metoden som använder sumoftwo() för att beräkna summan av två tal och skriv ut den. 5 Miniprojekt om mängdlära Den här labben kommer vara uppbyggd kring ett litet projekt som går ut på att med hjälp av metoder och arrayer hantera enklare mängdlära. Det vi kommer bygga är i praktiken en abstrakt datatyp. En abstrakt datatyp är som sagt en kombination av en underliggande datastruktur, i det här fallet, en array, och metoder som manipulerar den strukturen. Det här låter kanske väldigt abstrakt och knöligt men under labbens gång kommer vi hela tiden ta förhållandevis små steg och när labben är över har ni förhoppningsvis lärt er både vad en abstrakt datatyp är och hur man skriver metoder. Inbyggt i Java finns klasser för att hantera mängder, vi kommer inte använda dessa i den här labben men det kan vara bra att veta för framtiden. 5.1 Förberedelse Skapa en ny klass som heter Set. Klassen ska ha en main-metod som innehåller koden i avsnitt 9. 4

6 När labben är slut ska alla rader fungera och när programmet körs ska man få följande den output som står i avsnitt 10 För varje uppgift gäller ett avsnitt i main-metoden. Kommentera ut alla avsnitt från början och avkommentera allt eftersom uppgifterna är klara. Kontrollera efter varje uppgift att utskriften ser korrekt ut. 5.2 Konstruktor, en enkel funktion Den mest grundläggande funktionen för en abstrakt datatyp är en konstruktor. En konstruktor skapar en ny instans av den abstrakta datatypen. UPPGIFT 3.2 Skapa en ny metod i Set-klassen. Metoden ska heta makeset() och inte ta några argument. Metoden ska skapa en ny heltalsarray av storleken 101. Det första elementet ska sättas till 0. Sedan ska den nya arrayen returneras. Tanken här är att värdet på första indexet i arrayen ska indikera hur många tal som finns i mängden. Den kvicke inser nu att en mängd kan ha max 100 element i vår implementation, detta är en avsiktlig förenkling. 5.3 Void-metoder En void-metod är en metod som inte returnerar något. Om vi tittar på exemplet i Avsnitt 4 igen ser vi att medan addone() returnerade ett heltal, och var deklarerad som public static int, så verkar main inte ha någon return-sats och är deklarerad som public static void. Main-metoden är inte den enda metoden som saknar returvärde, även t.ex. System.out.println() är en void-metod som saknar returvärde. Void-metoder är användbara när man vill göra ändringar i globala variabler eller t.ex. vill skriva data till någon enhet, t.ex. skriva ut till skärmen som i System.out.println() eller skriva till en fil. Globala variabler är variabler som är deklarerade utanför en specifik metod och därför är tillgänglig globalt, variabler som är deklarerade inne i metoder (eller inne i block som if-satser osv.) betraktas istället som lokala. I Java, till skillnad från många andra programmeringsspråk, finns formellt sett inga globala variabler men på den nivå vi är nu kan vi betrakta alla variabler som är deklarerade i klassen, snarare än i en metod, som globala. 5

7 Övning 3.2 Titta på exemplet med addone() igen. Skriv om exemplet så att addone inte tar något argument och saknar return-sats (detta betyder att metoden måste vara void istället). Istället ska en variabel deklareras i klassen på följande vis: 1 public static int counter = 0; För varje anrop till addone() ska värdet på counter ökas med 1. Prova sedan att skriva följande i main-metoden: addone(); addone(); addone(); Vilken utskrift får du när du exekverar det här programmet? Försök att förutsäga vilken utskriften kommer att bli innan du exekverar programmet, kontrollera sedan om det stämmer och analysera resultatet. Vad vi har gjort nu är att att vi manipulerat en global variabel. UPPGIFT 3.3 Skapa en ny void-metod i Set-klassen. Metoden ska heta prettyprint() och ta en mängd, representerad som en heltalsarray enligt den konstruktor vi skapade i Uppgift 3.2, som argument. Metoden ska skriva ut denna mängd på ett läsbart sätt, för en mängd med innehållet 1, 2 och 3 ska set{ 1, 2, 3, } skrivas ut följt av en radbrytning. Det kommer bli aktuellt att använda System.out.print() (samma som System.out.println() men utan en radbrytning på slutet) och en loop här. Bonus: Om man vill skriva ut mängden så att man slipper det sista kommat på slutet blir det lite knöligare men det är en intressant uppgift att lösa om man har tid. 5.4 Booleska metoder - predikat Ett predikat är som sagt en metod som returnerar ett sanningsvärde. Dessa är mycket användbara för att standardisera olika typer av test. 6

8 UPPGIFT 3.4 Skapa en metod i Set-klassen som heter isempty(). Metoden ska ha en mängd, representerad som en heltalsarray, som parameter och ska returnera sant om storleken på denna är 0, annars ska den returnera falskt. Skapa också en metod size() som tar en mängd, representerad som en heltalsarray, som argument och returnerar storleken på den. Tänk på att längden på en mängd inte är samma sak som längden på den underliggande arrayen. UPPGIFT 3.5 Skapa en metod i Set-klassen som heter contains(). Metoden ska ha två parametrar, en en mängd, representerad som en heltalsarray, och ett heltal. Om heltalet finns i mängden ska metoden returnera sant, annars ska den returnera falskt. Tänk på att om man returnerar inne i en loop kommer loopen avbrytas, detta kan vara både användbart och problematiskt. Tänk på hur loopens slutvillkor ska se ut, det kommer inte vara längden på arrayen som avgör utan värdet som ligger på arrayens första index. 5.5 Metoder som använder metoder I vår exempelkörning körde vi följande för att lägga till element: 1 int[] set1 = makeset(); 2 set1[1] = 1; 3 set1[0] = set1[0] + 1; 4 set1[2] = 2; 5 set1[0] = set1[0] + 1; 6 set1[3] = 3; 7 set1[0] = set1[0] + 1; Här skapade vi en mängd och lade till 3 element. För varje element vi lade till var vi tvugna att själva räkna upp storleken, som ju lagrades på index 0. Vi säger också vilket index vi lägger till ett nytt element på. Detta är klumpigt och riskerar att bli fel. Det finns inte heller någon garanti att vi inte lägger till samma tal mer än en gång. Som ni minns från er grundläggande mängdlära så innehåller en mängd max ett exemplar av varje element. Det innebär att när vi vill lägga till ett element i en mängd vill vi först se till att elementet inte redan finns i mängden. Därför ska vi skapa en metod som sköter tilläggning av element åt oss. 7

9 UPPGIFT 3.6 Skapa en ny metod som heter addelement() och som tar två parametrar, en mängd, representerad som en heltalsarray, och ett heltal. Om heltalet redan finns i mängden ska false returneras (för att signalera att inget lades till). Om inte talet redan finns i mängden ska storleken på mängden räknas upp, talet läggas till (tänk på vilket index i arrayen talet ska läggas till på) och ska returneras. UPPGIFT 3.7 Skapa en ny metod som heter remove() och som tar två parametrar, en mängd, representerad som en heltalsarray, och ett heltal. Om heltalet inte finns i mängden ska false returneras. Om heltalet finns i mängden så ta bort det och returnera. Metoden remove() kan anta att alla element i mängden är unika, dvs man behöver bara ta bort första förekomsten av ett heltal eftersom det inte ska finnas några fler. Glöm inte att räkna ner storleken på arrayen och flytta efter alla element. Att ta bort elementet 3 ur följande mängd behöver ske på följande sätt: Flytta elementen som förekommer efter indexet där 3 ligger ett index "neråt" och räkna ner första elementet som signalerar storleken på mängden. Den extra 5an som ligger på index 5 i arrayen ovan innebär inget problem då den ligger utanför det område av arrayen som används av mängden enligt det första elementet, så den kan ni låta ligga kvar: Mängdoperationer Metoderna i uppgifterna 3.6 och 3.7 var destruktiva, dvs de ändrade på någon data utanför metoden, specifikt på den mängd som skickades in. Nu ska vi skapa några icke-destruktiva metoder. Icke-destruktiva metoder ändrar inte på någon data utan skapar bara ny data. 8

10 UPPGIFT 3.8 Skapa metoden intersection() som tar två mängder, representerade som heltalsarrayer, som argument och returnerar snittet av dessa. Skapa sedan metoden union() som tar två mängder, representerade som heltalsarrayer, som argument och returnerar unionen. Mängden som returneras ska i båda fallen vara en ny mängd och den ska byggas upp genom att använda de metoder vi skapat tidigare i labben. Mängderna som skickas in ska förbli oförändrade. UPPGIFT 3.9 Skapa metoden symmetricdifference() som tar två mängder, representerade som heltalsarrayer, som argument och returnerar den symmetriska differensen, dvs de heltal som ingår i någon av mängderna men inte i båda. Använd union(), intersection() och remove() där det behövs. Om du vill kan du också implementera en metod difference() som returnerar differensen av två mängder och använda den för att implementera symmetricdifference(). Mängderna som skickas in ska förbli oförändrade. 6 Sammanfattning Vad vi har skapat nu är en abstrakt datatyp. Vi har en underliggande struktur, i vårt fall en array med heltal, och ett antal metoder för att manipulera den strukturen. I inget fall förväntas vi arbeta direkt med strukturen utan vi använder alltid dessa metoder när vi manipulerar den. Det är detta som utgör själva abstraktionen i vår abstrakta datatyp, vi kan använda datatypen utan att behöva veta vad som ligger under ytan. Tar vi det hela ett steg till innebär detta också att vi kan ändra vad som ligger under ytan i den abstrakta datatypen, se t.ex. Övning 3.3, utan att förändra hur den abstrakta datatypen används. Detta är enormt kraftfullt om vi skrivit ett helt program med tusentals rader kod som använder den abstrakta datatypen. Behöver vi ändra den abstrakta datatypens underliggande struktur behöver vi bara ändra de kanske 10 metoderna som utgör den abstrakta datatypen, inte hela programmet. Det man som ny programmerare brukar tycka är svårt är att veta var den abstrakta datatypen slutar och resten av programmet börjar. Generellt sett är den abstrakta datatypen alla de metoder som direkt manipulerar eller hämtar data ur den underliggande strukturen. Metoder som inte manipulerar den underliggande strukturen är inte del av ADT:n. Kommer man på att man behöver manipulera den underliggande strukturen på ett nytt sätt, ja då får man utöka ADT:n. Känner ni fortfarande inte att värdet av abstrakta datatyper är självklart så var inte oroliga. Det viktigaste ni ska få med er från den här labben är hur 9

11 metoder fungerar. Abstrakta datatyper, och den modernare motsvarigheten, klasser, återkommer vi till i labb 5. 7 Bonusuppgifter Här kommer några extra övningsuppgifter där vi implementerar samma abstrakta datatyp men med andra underliggande strukturer. Övning 3.3 Försök lösa uppgifterna ovan med ArrayList istället för array. Vilka problem slipper du? Hur kan du förenkla hanteringen av storleken? Övning 3.4 Googla på Javas inbyggda mängdklasser HashSet och TreeSet. Lös uppgifterna i labben ovan genom att använda någon av dessa och deras inbyggda metoder istället för heltalsarrayer eller ArrayList. Var noga i de sista uppgifterna så att inte mängderna som skickas in förändras. 8 Redovisning Nu när ni är färdiga med alla uppgifter är det dags at lämna in era lösningar för Uppgift 3.1 till 3.9 för rättning. Gå igenom era lösningar en extra gång och se till så att hi har kommenterat er kod, och testkört den noga så att ni är säkra på att alla lösningar fungerar. Samla ihop kodfilerna (filerna som slutar på.java) i ett zip-arkiv och ladda upp zip-filen under Labb3 i LISAM. Glöm inte att skriva namnen på båda gruppmedlemmarna i kommentarsfältet vid inlämningen. 9 Testkod till main-metoden System.out.println("Testing "); System.out.println("Testing makeset() and prettyprint():"); int[] set1 = makeset(); prettyprint(set1); //fake set with known size: set1[1] = 1; set1[0] = set1[0] + 1; set1[2] = 2; 10

12 set1[0] = set1[0] + 1; set1[3] = 3; set1[0] = set1[0] + 1; prettyprint(set1); System.out.println("Testing isempty() and size():"); System.out.println(isEmpty(set1)); int[] set2 = makeset(); System.out.println(isEmpty(set2)); System.out.println(size(set1)); System.out.println(size(set2)); System.out.println("Testing contains():"); System.out.println(contains(set2, 0)); System.out.println(contains(set1, 0)); System.out.println(contains(set1, 1)); System.out.println(contains(set1, 2)); System.out.println(contains(set1, 3)); System.out.println(contains(set1, 4)); System.out.println("Testing add():"); int[] set3 = makeset(); System.out.println(addElement(set3, 1)); prettyprint(set3); System.out.println(addElement(set3, 2)); prettyprint(set3); System.out.println(addElement(set3, 1)); prettyprint(set3); System.out.println("Testing remove():"); System.out.println(remove(set3, 5)); prettyprint(set3); System.out.println(remove(set3, 1)); prettyprint(set3); System.out.println(remove(set3, 2)); prettyprint(set3); System.out.println("Testing intersection():"); int[] set4 = makeset(); prettyprint(set1); addelement(set4, 3); 11

13 addelement(set4, 4); addelement(set4, 2); prettyprint(set4); prettyprint(intersection(set1, set4)); System.out.println("Testing union():"); prettyprint(set1); prettyprint(set4); prettyprint(union(set1, set4)); System.out.println("Testing symmetricdifference():"); prettyprint(set1); prettyprint(set4); prettyprint(symmetricdifference(set1, set4)); 10 Output från miniprojektet Testing Testing makeset() and prettyprint(): set{ } set{ 1, 2, 3, } Testing isempty() and size(): false 3 0 Testing contains(): false false false Testing add(): set{ 1, } 12

14 set{ 1, 2, } false set{ 1, 2, } Testing remove(): false set{ 1, 2, } set{ 2, } set{ } Testing intersection(): set{ 1, 2, 3, } set{ 3, 4, 2, } set{ 2, 3, } Testing union(): set{ 1, 2, 3, } set{ 3, 4, 2, } set{ 1, 2, 3, 4, } Testing symmetricdifference(): set{ 1, 2, 3, } set{ 3, 4, 2, } set{ 1, 4, } 13

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack 725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer

Läs mer

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack 725G61 - Laboration 2 Loopar och arrayer Johan Falkenjack October 29, 2013 1 Inledning I labb 1 lärde vi oss om de primitiva datatyperna (och lite om String). Vi lärde oss också att använda variabler av

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

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 10. ADT:er och datastrukturer

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 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

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

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

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

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

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

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element 1 Arrayer Vid beräkningar med större datamängder än några enstaka tal är det bekvämt att kunna betrakta en talmängd som en enhet. Detta åstadkommer man genom att deklarera och instantiera fält. Ett annat

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25 Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

Laboration 3, uppgift En klass för en räknare

Laboration 3, uppgift En klass för en räknare Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer

Läs mer

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar

Läs mer

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-7, TDA540 Dag: 208-0-3, Tid: 4.00-8.00 Uppgift a) class används för en klassdeklaration som

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

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

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

Läs mer

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen , Introduktion till Java, dtaa98, dtea53 Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Anteckningar 1: Grundläggande saker

Anteckningar 1: Grundläggande saker UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering

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

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

Läs mer

Laboration: Whitebox- och blackboxtesting

Laboration: Whitebox- och blackboxtesting Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

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

Föreläsning 11. ADT:er och datastrukturer Föreläsning 11 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

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

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

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

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 2018-03-16 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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack

Läs mer

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new

Läs mer

Programmeringsteknik I

Programmeringsteknik I Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden

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

Arrayer (fält)

Arrayer (fält) Arrayer (fält) 1 Vad kommer vi att ta upp om arrayer? Deklarera och initiera arrayen Lägga till i arrayen Ta ut på indexposition Ta reda på arrayens längd Sortera arrayen Söka igenom arrayen Loopa igenom

Läs mer

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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 i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

Läs mer

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

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

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler Outline Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vända om inlästa värden Vända om inlästa

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-09-01 Skrivtid: 0900-1200 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

Stackar, köer, iteratorer och paket

Stackar, köer, iteratorer och paket Stackar, köer, iteratorer och paket Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Paket Stackar och köer Array resp länkad struktur Iteratorer Javadoc Kommentarer lab 1 Bra att de flesta

Läs mer

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...

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

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 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

725G61 - Laboration 1 Variabler och villkorssatser. Johan Falkenjack

725G61 - Laboration 1 Variabler och villkorssatser. Johan Falkenjack 725G61 - Laboration 1 Variabler och villkorssatser Johan Falkenjack October 16, 2013 1 Inledning till labbarna Any sufficiently advanced technology is indistinguishable from magic. - Arthur C. Clarke Citatet

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

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

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num

Läs mer

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid: Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-08-24, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:

Läs mer

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

Övningsuppgifter kapitel 8

Övningsuppgifter kapitel 8 Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans

Läs mer

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

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet

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

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

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0.. Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn 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 examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok 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

Läs mer