Övningsuppgifter, EDAA01 Programmeringsteknik fördjupningskurs

Storlek: px
Starta visningen från sidan:

Download "Övningsuppgifter, EDAA01 Programmeringsteknik fördjupningskurs"

Transkript

1 LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Övningsuppgifter, EDAA01 Programmeringsteknik fördjupningskurs Övningsuppgifternas syfte är att ge en fördjupad förståelse för de begrepp som tas upp under kursen. De ger också träning i att lösa problem med hjälp av olika algoritmer och datastrukturer. De obligatoriska datorlaborationerna ger viktig träning men täcker inte allt i kursen. Därför är det viktigt att du också löser övningsuppgifterna. Uppgifterna består av en blandning av teorifrågor och av uppgifter där du ska skriva programkod. Om du vill lösa vissa av uppgifterna på dator går det därför bra. På kursens hemsida finns en del färdiga filer att hämta. Där finns också lösningsförslag till övningsuppgifterna. Tanken är att du arbetar med övningsuppgifterna dels på de schemalagda övningstillfällena och dels på egen hand utanför schemalagd tid. I kursens lärobok finns också övningsuppgifter, dels kortare uppgifter ( Self check ) och dels längre uppgifter ( Programming ) som med fördel kan lösas på dator. Innehåll 1 Repetition av viktiga begrepp inom objektorienterad programmering Polymorfism, skuggning och överlagring av metoder Interface, exceptions, generik, iteratorer Listor Stackar och köer Algoritmers effektivitet, tidskomplexitet Rekursion Träd, binära träd Binära sökträd Hashtabeller Mängder och mappar Prioritetsköer, heapar Sortering

2

3 Repetition av viktiga begrepp inom objektorienterad programmering 3 1 Repetition av viktiga begrepp inom objektorienterad programmering Tema: Arv, parameteröverföring, statiska attribut och metoder. Litteratur: I uppgifterna behandlas begrepp som ingått i grundkursen. Om du stöter på svårigheter får du repetera relevanta delar i läroboken från grundkursen. Arv behandlas också i läroboken avsnitt 1.2. Arv I några av uppgifterna nedan används klasserna Person, Student och FacultyMember. Klasserna har följande utformning: public class Person { protected String name; public Person(String name) { this.name = name; public void setname(string name) { this.name = name; public String tostring() { return name; public class Student extends Person { protected String program; protected int credits; public Student(String name, String program) { super(name); this.program = program; credits = 0; public String tostring() { return name + ", " + program;... public class FacultyMember extends Person { protected String department; public FacultyMember(String name, String department) { super(name); this.department = department; public String tostring() { return name + ", " + department;

4 4 Repetition av viktiga begrepp inom objektorienterad programmering Person Student FacutlyMember Figur 1: Superklassen Person med subklasserna Student och FacultyMember. U 1. Antag att vi har gjort följande deklarationer: Person p; Student s; FacultyMember f; Avgör för var och en av följande satser om de är korrekta eller ej: p = new Person("Lisa Svensson"); p = new Student("Lisa Svensson", "D"); s = new Person("Kalle Karlsson"); s = new Student("Kalle Karlsson","C"); s = new FacultyMember("Per Holm", "Computer Science"); p = s; s = p; f = s; U 2. Antag att vi deklarerat en variabel String info. Ange vilket värde info får i var och en av de satser där den förekommer i en tilldelning i följande programrader: Person p = new Person("Lisa Svensson"); info = p.tostring(); p = new Student("Lisa Svensson","D"); info = p.tostring(); Student s = new Student("Kalle Karlsson","C"); info = s.tostring(); FacultyMember f = new FacultyMember("Per Holm", "Computer Science"); p = f; info = p.tostring(); U 3. Föregående uppgift handlade om polymorfism och metodanrop. Om vi deklarerar att en referensvariabel ref har en viss typ C enligt C ref; så får ref referera till objekt av klassen C eller till objekt av eventuella subklasser till C. Antag att det i både denna subklass och i klassen C finns en metod p(). Problemet som behandlades i föregående uppgift var att avgöra vilken av metoderna p() som exekveras vid ett anrop: ref.p(); Formulera i egna ord hur detta avgörs.

5 Repetition av viktiga begrepp inom objektorienterad programmering 5 U 4. Betrakta följande klasser: Shape Square Figur 2: Den abstrakta klassen Shape och subklassen Square. public abstract class Shape { protected int x; protected int y; protected Shape(int x, int y) { this.x = x; this.y = y; public void move(int dx, int dy) { x = x + dx; y = y + dy; // övriga metoder public class Square extends Shape { private int side; public Square(int x, int y, int side) { super(x, y); this.side = side; public void draw() { // kod för att rita kvadraten Antag att vi har deklarerat två variabler s och sq: Shape s; Square sq; Vilka av följande tilldelningssatser är korrekta? sq = new Square(100, 100, 50); sq = new Square(50); s = new Shape(100, 100); s = new Square(100, 100, 50);

6 6 Repetition av viktiga begrepp inom objektorienterad programmering U 5. Antag att vi lägger till ytterligare en subklass Circle. Då kan vi skriva och köra följande exempelprogram (som skapar några figurer och sedan flyttar dem): public class Main { public static void main(string[] args) { Shape[] theshapes = new Shape[5]; theshapes[0] = new Square(100, 300, 100); theshapes[1] = new Square(400, 200, 100); theshapes[2] = new Circle(400, 400, 50); theshapes[3] = new Square(450, 450, 50); theshapes[4] = new Circle(200, 200, 35); for (int i = 0; i < theshapes.length; i++) { theshapes[i].move(10, 10); Om vi ändrar i programmet för att istället rita alla figurerna så fungerar det däremot inte:... for (int i = 0; i < theshapes.length; i++) { theshapes[i].draw();... Förklara varför. Gör den ändring i klassen Shape som behövs för att det nya programmet ska fungera. Statiska attribut och metoder U 6. Antag att vi i klassen Person lägger till ett attribut och två metoder enligt följande: protected static int seniorcitizenage = 67; public static void setseniorage(int i) { seniorcitizenage = i; public static int getseniorage() { return seniorcitizenage; Attributet representerar lagstadgad pensionsålder. a) Motivera vad det innebär att attributet och metoderna deklarerats som static. Förklara också varför man valt att deklarera attributet seniorcitizenage och de båda nya metoderna som static. b) Vilka av metodanropen nedan är korrekta? Person.setSeniorAge(65); Person p = new Person(...); p.setseniorage(65); c) Vad skrivs ut när följande rader exekveras? Person p = new Person(...); Person q = new Person(...); p.setseniorage(65); System.out.println(q.getSeniorAge());

7 Repetition av viktiga begrepp inom objektorienterad programmering 7 Parameteröverföring U 7. Givet en klass C med en metod incr enligt följande: public class C { public void incr(int i) { i++;... Vad skrivs ut när följande programrader exekveras? int j = 2; C c = new C(); c.incr(j); System.out.println(j); U 8. Antag att vi har en klass C med en metod m enligt följande: public class C { public void m(person p) { p = new Person("Kalle"); Vad skrivs ut när följande programrader exekveras: Person p = new Person("Lisa"); C c = new C(); c.m(p); System.out.println(p); U 9. Antag att metoden m i klassen C i stället har följande utformning: public void m(person p) { p.setname("kalle"); Vad skrivs då ut om samma rader som i föregående uppgift exekveras? U 10. Givet följande metod i någon klass C: public static void changeelement(int[] a, int index, int newvalue) { a[index] = newvalue; Vad skrivs ut när följande rader exekveras? int[] a = {1, 2, 3, 4, 5; C.changeElement(a, 3, 10); System.out.println(a[3]);

8 8 Repetition av viktiga begrepp inom objektorienterad programmering U 11. Antag att följande (mer eller mindre vettiga) metoder finns i en klass ArrayHandler: public static void r1(int[] a) { int[] temp = new int[a.length]; for (int i = 0; i < a.length; i++) { temp[i] = a[a.length i]; a = temp; public static void r2(int[] a) { int[] temp = new int[a.length]; for (int i = 0; i < a.length; i++) { temp[i] = a[a.length i]; for (int i = 0; i < a.length; i++) { a[i] = temp[i]; Vad har vektorerna nbrs1 och nbrs2 för värden efter det att följande rader exekverats? int[] nbrs1 = {10, 20, 30, 40, 50; int[] nbrs2 = {10, 20, 30, 40, 50; ArrayHandler.r1(nbrs1); ArrayHandler.r2(nbrs2);

9 Polymorfism, skuggning och överlagring av metoder 9 2 Polymorfism, skuggning och överlagring av metoder Tema: Du ska fördjupa dina kunskaper om polymorfism, skuggning och överlagring av metoder. Litteratur: Dessa begrepp har inte behandlats i alla grundkurser. Därför ingår det en hel del text att läsa i anslutning till just dessa uppgifter. Avsnitten i läroboken är också relevanta för dessa uppgifter (avsnitt i den gamla upplagan). Begreppen typ, subtyp och supertyp När vi deklarerar variabler anger vi vilken typ de har. Typen anger vilka värden som kan tilldelas variabeln. För referensvariabler används klassnamn (eller interfacenamn) för att ange typen: Person p; Set set; // Person är en klass // Set är ett interface Begreppen supertyp och subtyp är viktiga att känna till. Supertyper till en viss klass C är alla de klasser från vilka C ärver och alla de interface klassen implementerar. Supertyper till ett interface I är alla de interface från vilka I ärver. En klass C eller ett interface I är subtyp till alla sina supertyper. Varje objekt tillhör någon klass, den klass som används när objektet skapades. Om en referensvariabel deklareras ha en viss typ (klass eller interface) så får den referera till objekt av denna typ eller dess subtyper. Om ett interfacenamn har använts i deklarationen innebär detta speciellt att referensvariablen får referera till objekt av någon klass som implementerar detta interface. För variablerna p och s, deklarerade ovan, gäller därför att p kan referera till objekt av klasserna Person, Student och FacultyMember. Referensvariablen set kan referera till objekt av t ex klasserna TreeSet och HashSet som finns i java.util och som båda implementerar interfacet Set. Det är alltså tillåtet att skriva: set = new TreeSet(); set = new HashSet(); U 12. Rita ett klassdiagram i UML och ange alla subtyp supertyp-relationer som gäller när följande deklarationer gjorts: class A {.. interface I {.. class B extends A implements I {.. interface J extends I {.. class C extends B implements J {.. U 13. Antag att följande deklarationer gjorts: interface IA {..; interface IB extends IA {.. class C implements IA {.. Rita ett klassdiagram i UML. Vilka av tilldelningssatserna i följande kod är då korrekta? IA a = new C(); IB b = new C(); a = b;

10 10 Polymorfism, skuggning och överlagring av metoder b = a; C c = new C(); c = a; c = b; Metodsignaturer och metodanrop Antag att vi har en metod, deklarerad enligt följande mönster: public void m(type 1 param 1, Type 2 param 2,...); där Type i anger en klass eller ett interface. Metodens signatur är dess namn tillsammans med antalet parametrar och deras typer. Två metoder har samma signatur om de har samma namn, samma antal parametrar och om den i:e parametern i den första metoden har samma typ som den i:e parametern i den andra metoden för alla i. För att ett anrop, m(act 1, act 2,..);, ska vara korrekt krävs att varje aktuell parameter act i har en sådan deklarerad typ att tilldelningssatsen param i = act i är korrekt. Detta innebär att den deklarerade typen för act i måste vara Type i eller en subtyp till denna typ. U 14. Ange, för var och en av metodanropen i det följande om de är korrekta eller felaktiga: public class C { public void m(person p, Student s) {..... Person p1 = new Person(...); Student s1 = new Student(...); C c = new C(); c.m(p1, s1); c.m(p1, p1); c.m(s1, p1); c.m(s1, s1); p1 = new Student(...); c.m(p1, p1); Metodanrop, skuggning och överlagring Vi kan inte deklarera två metoder med samma signatur i en klass. Däremot kan det finnas metoder med samma signatur i en klass och i någon av dess superklasser eller subklasser. Det är detta som kallas att skugga metoder (eng: override). Om det i en klass C och i en subklass D till C finns metoder med samma signatur så säger vi att metoden i D skuggar (eng:overrides) metoden i klassen C. Metoder som har samma namn men olika signatur (t. ex olika antal parametrar eller olika typer på sina parametrar) sägs överlagra (eng: overload) varandra. Det är tillåtet att ha flera överlagrade metoder i samma klass. Överlagring inträffar också om en klass har en metod med samma namn men olika signatur som någon metod i en super- eller subklass. Då man gör ett metodanrop x.m(a,b) kommer någon metod med namnet m och med formella parametrar av en sådan typ att anropet är korrekt med hänsyn till typerna hos de aktuella parametrarna a och b att exekveras. I allmänhet är det inte svårt att avgöra vilken metod det blir. Ofta har vi bara en metod med rätt namn och rätt antal parametrar. Vid vissa typer av överlagring kan dock tveksamhet uppstå. Betrakta följande exempel:

11 Polymorfism, skuggning och överlagring av metoder 11 class BaseClass { public void foo(person p) {... public void foo(student s) { BaseClass bc = new BaseClass(); Person p = new Student(...); bc.foo(p); Vilken av foo-metoderna kommer att exekveras? De deklarerade typerna för bc respektive p används av kompilatorn för att avgöra detta. bc är av typen BaseClass och p är av typen Person. Kompilatorn undersöker därför om klassen BaseClass har en metod som heter foo och som har en formell parameter av en sådan typ att den kan anropas med en aktuell parameter av typen Person. Det finns bara en sådan, nämligen den första foo-metoden. bc skulle under exekvering kunna referera till ett objekt av en subklass till BaseClass om sådan finns. Exempel: class DerivedClass extends BaseClass { public void foo(person p) { BaseClass bc = new DerivedClass(); Person p = new Student(...); bc.foo(p); Nu blir det metoden foo i klassen DerivedClass som exekveras. Kompilatorn gör samma beslut som i föregående exempel och fastlägger signaturen på metoden till att vara namnet foo och en parameter av typen Person. Under exekvering kommer klassen för det objekt till vilket bc då refererar att utgöra den virtuella maskinens startpunkt för sökandet efter metod med denna signatur. Finns ingen sådan metod där fortsätter sökandet i superklassen etc. I detta fall startar alltså sökandet i DerivedClass där det finns en metod med rätt signatur. Ett ytterligare exempel där överlagrade metoder är definierade i olika klasser i en klasshierarki: class BaseClass { public void foo(person p) {... class DerivedClass extends BaseClass { public void foo(student s) {..... DerivedClass dc = new DerivedClass(); Person p = new Student(...); dc.foo(p); dc har typen DerivedClass som har två överlagrade metoder med namnet foo. Men bara en av dessa, den som är definierad i superklassen BaseClass passar för anropet eftersom dess parameter är av typen Person. Metoden i DerivedClass har ju formell parameter av typen Student och denna kan inte tilldelas en aktuell parameter av typen Person. Det blir alltså metoden foo i BaseClass som exekveras. Sammanfattning Nedan sammanfattas vad som sker vid kompilering respektive exekvering av ett metodanrop x.m(a,b);

12 12 Polymorfism, skuggning och överlagring av metoder 1. Den deklarerade typen för x används av kompilatorn för att bestämma i vilken klass sökandet efter metoder som har rätt signatur för anropet ska starta. Kalla denna klass C1. 2. I C1 och dess eventuella superklasser lokaliseras alla metoder som matchar metodanropet, dvs. har rätt namn och har sådana typer på sina formella parametrar att de kan tilldelas variabler av respektive aktuell parameters deklarerade typ. Om ingen sådan metod finns, genereras ett kompileringsfel. Om det bara finns en sådan metod, fortsätt med steg 3. I komplicerade fall med många överlagrade metoder kan det finnas flera som passar in. I så fall försöker kompilatorn få fram den metod som är "mest specifik" enligt vissa regler, som vi inte går in på här. Slutar denna process med att det finns mer än en möjlig metod får vi ett kompileringsfel (ambiguous method call). 3. En metod är nu utvald och det är en metod av dess exakta signatur som kommer att exekveras. Vilken det blir beror på klassen för det objekt x refererar till under exekvering. Kalla denna klass C2. Den virtuella maskinen startar sökandet efter metod att exekvera i C2 och fortsätter eventuellt i superklasser tills man hittar en med rätt signatur. I normala fall är det säkert att vi har en metod med rätt signatur någonstans i denna kedja, annars hade kompileringsfel genererats i steg 2 ovan. Bara om vi ändrat någonting som har med inblandade metoder att göra och glömt kompilera om vissa klasser kan sökandet misslyckas. I så fall får man ett exekveringsfel. Anmärkning till punkt 1: Metodanropet kan göras inifrån en annan metod och x kan vara en av de formella parametrarna till denna enligt följande: public void p(someclass x) { x.m(a,b);... Den deklarerade typen för x är då SomeClass. Anmärkningar till punkt 2: Det räcker här inte med att en metod har rätt namn och rätt typ på sina parametrar. Den måste också vara möjlig att anropa med hänsyn till sin skyddsnivå (private, public etc.). Den som vill veta mera om hur det går till att bestämma mest specifika metod när man har flera kandidater kan gå till avsnitt i Javas språkdefinition som finns på adressen Anmärkningar till punkt 3: Att man först under exekvering bestämmer exakt vilken metod som exekveras brukar kallas dynamisk bindning (eng: dynamic binding eller late binding). Ibland kan man dock redan under kompileringen bestämma vilken metod som ska exekveras. Metoder som är deklarerade final får inte omdefinieras i subklasser. Om steg 2 slutar med att man hittat en metod och denna är final så vet man alltså att det måste bli denna som ska exekveras. U 15. Vad ingår i en metods signatur? U 16. Vad menas med överskuggning? Ge exempel. U 17. Vad menas med överlagring? Ge exempel.

13 Interface, exceptions, generik, iteratorer 13 3 Interface, exceptions, generik, iteratorer Tema: Interface, exceptions, generik, introduktion till Java Collection FrameWork, iteratorer. Litteratur: Avsnitt 1.1, , 2.1, Appendix A6, A11, A12 (i gamla upplagan: , , 4.1). Bilderna från föreläsning 1 och 2. Interface U 18. Vad är ett interface och hur ser ett interface ut i stora drag? Vad innebär det att en klass implementerar ett interface? U 19. Beskriv likheter och skillnader mellan ett interface och en abstrakt klass. U 20. a) Antag att följande interface är deklarerat: public interface Resizable { /** * Scales down the object with scalefactor. scalefactor the scale factor which is used to reduce the * size of the object */ void downsize(int scalefactor); Skalfaktorn är nämnare i det bråk som beskriver skalan (1: skalfaktor). Ju större skalfaktor man har desto mindre blir avbildningen. Exempel: i en skala 1:10000 motsvaras cm i verkligheten av 1 cm på avbildningen. Klassen Rectangle beskriver en kvadrat. Ändra klassen så att den implementerar interfacet Resizable: public class Rectangle { private double height; private double width; public Rectangle(double h, double w) { height = h; width = w;... b) Avgör för var och en av följande satser om de är korrekta eller ej. Rectangle r = new Rectangle(50, 100); Resizable r = new Resizable(50, 100); Resizable r = new Rectangle(50, 100); Exception U 21. a) Ändra metoden downsize från uppgift U 20 så att exception genereras om parametern scalefactor har ett värde som är 0. b) Antag att en variabel r refererar till ett Rectangle-objekt och att en variable n innehåller ett heltal. Anropa downsize och skriv ut en lämplig felutskrift på System.out om exception genereras.

14 14 Interface, exceptions, generik, iteratorer Implementera en generisk klass U 22. Antag att det i ett klassbibliotek finns det en generisk klass ArrayCollection som representerar en samling element. (Klassen ArrayCollection är en enkel variant av ArrayList.) I implementeringen har man använt en vektor för att representera samlingen enligt följande implementeringsskiss: public class ArrayCollection<E> implements Collection<E> { private E[] thecollection; private int size; /** Constructs an empty list with an initial capacity of ten. */ public ArrayCollection() { thecollection = (E[]) new Object[10]; /** Appends the specified element to the end of this list. Returns true if this collection changed as a result of the call. */ public boolean add(e x) { if (size == thecollection.length) { doublearray(); thecollection[size] = x; size++; return true; /** Returns true if this collection contains the specified element. */ public boolean contains(object x) {... /* Creates an new array that is twice the size of the current array and copies the content of the current array into the new one. */ private void doublearray() { Implementera metoderna contains och doublearray. U 23. En användare av klassen har implementerat en klass Person enligt följande: public class Person { private String name;... public boolean equals(person p) { return name.equals(p.name); public String tostring() { return name;

15 Interface, exceptions, generik, iteratorer 15 Iterator Följande kod exekveras: ArrayCollection<Person> coll = new ArrayCollection<Person>(); coll.add(new Person("Lisa Svensson")); if (coll.contains(new Person("Lisa Svensson")) ){ System.out.println("Lisa Svensson found"); else { System.out.println("Lisa Svensson not found"); Utskriften blir Lisa Svensson not found. Förklara varför. Vad ska vi göra för att Lisa ska hittas? Ledning: Inuti contains anropas en metod för att jämföra två objekt. Vilken? Vid kompileringen fastställs signaturen för de metoder som ska anropas. Vilken signatur får ovan nämnda metod? I vilken klass börjar sökandet efter en metod med denna signatur vid exekveringen? Finns det någon sådan metod i den klassen? Finns det någon sådan metod i någon superklass till den klassen? U 24. I java.util finns interfacen Iterator<E> och Iterable<E>. De har snarlika namn och är därför lätta att blanda ihop. Red ut begreppen genom att diskutera vad de används till och vad de innehåller för metoder. U 25. Klassen ArrayCollection från uppgift U 22 implementerar interfacet Collection<E> som är ett subinterface till interfacet Iterable<E>. Alltså måste klassen ArrayCollection även implementera metoden iterator(). Antag att detta är gjort och att vi har lagt in ett antal personer i samlingen ArrayCollection<Person> coll. a) Skriv programrader som med hjälp av en iterator skriver ut alla personerna i coll. b) Lös samma problem som i deluppgift a men använd en foreach -sats. U 26. Ändra klassen ArrayCollection från uppgift U 22 så att den även implementera metoden iterator(). U 27. Alla interface och klasser som representerar en samling (Collection) i Javas klassbibliotek har en operation iterator() som returnerar ett objekt av en klass som implementerar interfacet Iterator. I interfacet Iterator finns bl.a. metoderna hasnext och next som kan användas för att traversera (iterera över) samlingens element. Varför lägger man inte i stället in metoderna hasnext och next i samlingsklasserna?

16 16 Listor 4 Listor Tema: Listor, listimplementeringar - enkellänkad lista, sorterad lista, interfacet Comparable. Litteratur: Avsnitt , , (avsnitt , 4.8 i gamla upplagan). Läs också bilderna från föreläsning 3. Använda ArrayList och LinkedList skugga equals U 28. I kursen arbetar vi bland annat med klasser och interface från Java Collections Framework. Ett exempel på sådana är interfacet List samt klasserna ArrayList och LinkedList i paketet java.util. I klasserna ArrayList och LinkedList finns metoder för att hitta ett element i listan, contains(object), indexof(object) och remove(object). Hur avgörs om två element är lika? Vem bestämmer vad som menas med lika (den som implementerat listklassen eller den som använder klassen) och hur gör man det? U 29. Antag att vi ska lagra böcker i en lista av någon av dessa typer. En bok beskrivs av följande klass: public class Book { private String isbn; private String title; private String author; public Book(String isbn, String title, String author) { this.isbn = isbn; this.title = title; this.author = author; public String tostring() { return author + ": " + title; En bok identifieras av sitt ISBN-nummer. Gör de förändringar i klassen Book som behövs för att metoderna contains, indexof och remove ska fungera som förväntat. U 30. Antag att vi har deklarerat följande lista och lagt in ett antal böcker av typen Book i listan: List<Book> list = new ArrayList<Book>() // satser för att lägga in böcker i listan Lägg till sats/er för att ta reda på om boken med ISBN-nummer finns i listan. Enkellänkad lista I några av uppgifterna används klasserna SingleLinkedList och ListNode: public class SingleLinkedList<E> { private ListNode<E> first; /** Creates an empty list. */ public SingleLinkedList() { first = null;

17 Listor 17 /** Inserts the specified element at the beginning of this list. */ public void addfirst(e e) { ListNode<E> n = new ListNode<E>(e); n.next = first; first = n;... /* Nested class. Represents a node which contains an element of type E. */ private static class ListNode<E> { private E element; private ListNode<E> next; /* Creates a listnode which contains e. */ private ListNode(E e) { element = e; next = null; U 31. Skriv programrader som skapar ett lista av typen SingleLinkedList för att lagra heltal samt ser till att listan innehåller talen 1, 2, 3. U 32. a) Lägg till följande metod i klassen SingleLinkedList: /** Returns the first element in this list. Throws NoSuchElementException if this list is empty. */ E getfirst(); b) Lägg till följande metod i klassen SingleLinkedList: /** Returns the last element from this list. Throws NoSuchElementException if this list is empty. */ E getlast(); U 33. Lägg till följande metod i klassen SingleLinkedList: /** Returns true if this collection contains the specified element. */ public boolean contains(object x); U 34. Lägg till följande metod i klassen SingleLinkedList: /** Removes the first occurrence of the specified element from this list, if it is present. If this list does not contain the element, it is unchanged. Returns true if this list contained the specified element (or equivalently, if this list changed as a result of the call). */ boolean remove(object e); Ledning: Utgå från din lösning på uppgift U 33. Tänk på att du för att kunna ta bort ett element måste ha en referens till föregående element i listan. Håll därför reda både på aktuellt element och dess föregångare när du går framåt i listan under sökningen. Tänk på specialfallen (tom lista, det är första elementet som ska tas bort...).

18 18 Listor Implementering genom delegation U 35. I läroboken, kapitel 2, finns en implementering av en klass OrderedList som representerar en följd av element, sorterad i växande ordning. Klassen har följande utformning: public class OrderedList<E extends Comparable<E>> implements Iterable<E> { private LinkedList<E> thelist; public OrderedList() { thelist = new LinkedList<E>(); public void add(e obj) { ListIterator<E> itr = thelist.listiterator(); while (itr.hasnext()) { if (obj.compareto(itr.next()) < 0) { itr.previous(); itr.add(obj); return; itr.add(obj); public E get(int index) { return thelist.get(index); public Iterator<E> iterator() { return thelist.iterator(); public int size() { return thelist.size(); I metoden add ser man till att listan blir sorterad i storleksordning genom att leta upp rätt position för objektet obj. Övriga metoder utför sin uppgift genom att delegera till motsvarande operation i klassen LinkedList (som visas i koden ovan för metoderna get, iterator och size). Varför implementerar man inte OrderedList genom att ärva från klassen LindkedList<E> enligt följande mönster? public class OrderedList<E extends Comparable<E>> extends LinkedList<E> U 36. Lägg till metoden remove i klassen OrderedList. Tänk på utnyttja att listan är sorterad så att du inte undersöker onödigt många element. /** Removes the first occurrence of the specified element from this list, if it is present. If this list does not contain the element, it is unchanged. Returns true if this list contained the specified element (or equivalently, if this list changed as a result of the call). */ boolean remove(e obj);

19 Listor 19 U 37. I OrderedList finns det en metod iterator som returnerar en Iterator för listan. Varför finns det inte också en metod listiterator som returnerar en ListIterator? Implementera interfacet Comparable U 38. I klassen OrderedList i uppgift U 35 anges typparametern på följande sätt: <E extends Comparable<E>> Vad innebär det? Skulle man istället kunna skriva bara <E>? U 39. Antag att vi ska använda klassen OrderedList i uppgift U 35 för att hålla reda på patienter som väntar på en akutmottagning. Varje patient tilldelas en prioritet, som är ett heltal. Ett lågt värde på detta attribut motsvarar hög prioritet. Patienter representeras av följande klass: public class Patient { private String firstname; private String lastname; private int prio; public Patient(String firstname, String lastname, int prio) { this.firstname = firstname; this.lastname = lastname; this.prio = prio;... Se till att klassen implementerar gränssnittet Comparable<T>. Det är prioriteterna som ska jämföras här och inte namnen. Tänk också på att det är en god regel att också omdefiniera metoden boolean equals(object x) som finns i superklassen Object så att dessa båda metoder är ense om när två objekt av klassen är lika. U 40. Hur ska metoden compareto implementeras om man istället för prioritet ska jämföra namnen? Antag att man i första hand ska sortera efter efternamn.

20 20 Stackar och köer 5 Stackar och köer Tema: Abstrakta datatyperna köer och stackar, implementeringar och användning. Litteratur: Avsnitt och ( och i gamla upplagan). Läs också bilderna från föreläsning 4. U 41. Beskriv den abstrakta datatypen kö. Vilka är de viktigaste operationerna på en kö. U 42. Beskriv den abstrakta datatypen stack. Vilka är de viktigaste operationerna på en stack. U 43. Beskriv (i ord) hur man kan implementera den abstrakta datatypen stack genom att delegera till LinkedList använda en enkellänkad lista använda en vektor Implementeringen ska inte vara onödigt ineffektiv. U 44. Ett annat sätt att skaffa sig en stack är att helt enkelt skapa ett LinkedList-objekt och använda lämpliga metoder i den klassen. Vilka fördelar/nackdelar finns det med detta? U 45. Givet en kö q. Visa hur man kan använda en stack för att vända kön bak och fram. Gör detta genom att skriva kod. Du kan utgå från följande gränssnitt för kö respektive stack samt anta att det finns en klass MyStack<E> som implementerar Stack<E>. public interface Queue<E> { public E poll(); public E peek(); public void offer(e x); public boolean isempty(); public interface Stack<E> { public E pop(); public E peek(); public void push(e x); public boolean isempty(); // tar bort och returnerar första elementet // returnerar första elementet, utan att ta bort det // lägger in x sist i kön // undersöker om kön är tom // tar bort och returnerar översta elementet // returnerar, men tar inte bort översta elementet // lägger in x överst på stacken // undersöker om stacken är tom U 46. En dequeue (eng: double-ended queue) är en följd av element där det är tillåtet att ta bort första och sista elementet och att lägga in nya element först och sist. Implementera en dequeue med en enkellänkad lista enligt följande: public class Dequeue<E> { private Node<E> first; private Node<E> last; // reference to the first element // reference to the last element /** Creates an empty dequeue. */ public Dequeue() { first = last = null; /** Inserts the specified element at the beginning of this dequeue. */ public void addfirst(e x) {... /** Inserts the specified element at the end of this dequeue. */ public void addlast(e x) {...

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

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

Läs mer

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

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

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

Läs mer

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

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

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt Föreläsning 15 & 16 ARV Objektorienterad programmering (OOP) Idé: vi ser ett program som en modell av verkligheten Ursprung: Simula-67, Norsk regnesentral, 1960-talet Smalltalk-80: Xerox PARC, 1970-talet

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

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

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

Läs mer

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram

Läs mer

Datastrukturer. föreläsning 6. Maps 1

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

Läs mer

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

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3. LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet offentliggörs senast: 2011-04-02. Tillåtna

Läs mer

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet o entliggörs senast: 2012-05-29. Tillåtna

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 15-04-18 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2 Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.1

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit LUNDS TEKNISKA HÖGSKOLA EDA690 Algoritmer och datastrukturer Institutionen för datavetenskap HT 1 2007/2008 Enhetstestning Testning med JUnit När man implementerat en klass måste man, innan den kan användas,

Läs mer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) 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/2d1310/

Läs mer

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p) Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet Antal uppgifter: 6 Max: 32 poäng Betyg: 3:a 16 poäng, 4:a 24 poäng, 5:a 28 poäng Hjälpmedel:

Läs mer

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass). 3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser.

Läs mer

Träd Hierarkiska strukturer

Träd Hierarkiska strukturer Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden

Läs mer

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

Läs mer

Vad har vi pratat om i kursen?

Vad har vi pratat om i kursen? Vad har vi pratat om i kursen? Föreläsning 1 & 2 Systemminnet och systemstacken Rekursion Abstrakta datatyper Föreläsning 3 ADT:n Länkad lista Föreläsning 4 ADT:n Kö ADT:n Stack Föreläsning 5 Komplexitet

Läs mer

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

PROGRAMMERING-Java TENTAMINA

PROGRAMMERING-Java TENTAMINA PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För

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

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 8 Avsikten med denna laboration är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom

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

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

Tentamen i Programmeringsteknik I, ES, 2010-03-18

Tentamen i Programmeringsteknik I, ES, 2010-03-18 Tentamen i Programmeringsteknik I, ES, 2010-03-18 Skriv tid: 14-17. Hjälpmedel: 1. Kurslitteratur, en av följande: Lewis & Loftus, Java Software Solutions Skansholm, Java Direkt Guzdial & Ericson, Intrododuction

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade. Sortering Den sorteringsalgoritm som vi använder oss kallas selection sort (urvalssortering) och är en av många existerande sorteringsalgoritmer. Dess funktionssätt beskrivs kanske bäst genom ett konkret

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2013 08 22, 8.00 13.00 Anvisningar: Denna tentamen består av fyra uppgifter. Preliminärt ger uppgifterna

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa

Läs mer

PROGRAMMERING-JAVA TENTAMINA

PROGRAMMERING-JAVA TENTAMINA PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift

Läs mer

Föreläsning 13. Rekursion

Föreläsning 13. Rekursion Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)

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

Innehållsförteckning

Innehållsförteckning Innehållsförteckning Ämne Sida Program Hur ska man lära sig programmering med Java? 11 Kapitel 1 Introduktion till programmering 13 1.1 Vad är programmering? 14 1.2 Vad är en algoritm? 16 1.3 Olika sätt

Läs mer

EN SNABBIS OM DoA. Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet. Pedher Johansson 7 januari 2008

EN SNABBIS OM DoA. Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet. Pedher Johansson 7 januari 2008 EN SNABBIS OM DoA Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet Pedher Johansson 7 januari 2008 UMEÅ UNIVERSITY DEPARTMENT OF COMPUTING SCIENCE SE-901 87 UMEÅ SWEDEN Innehållsförteckning

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Objektorienterad Programmering Övningsuppgifter

Objektorienterad Programmering Övningsuppgifter Objektorienterad Programmering Övningsuppgifter Våren 2009 1. Skriv ett program som utför beräkning av fakultet för heltal. Nedan följer ett exempel på hur programmet skulle kunna fungera. ~pem> java factorial

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska

Läs mer

Träd. Rot. Förgrening. Löv

Träd. Rot. Förgrening. Löv Träd Träd Rot Förgrening Löv Exempel: Organisationsschema Rot Överkucku Förgrening Underhuggare Underhuggare Administativ chef Kanslichef Knegare Knegare Knegare Byråchef Löv Intendent Avd. chef Intendent

Läs mer

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30 Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 Tentamen för TDA550 Objektorienterad programvaruutveckling IT, fk DAG: 15-08-19 TID: 8:30 12:30 Ansvarig: Christer Carlsson, ankn 1038

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false. Laboration 2. I denna laboration skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, som modelleras av klassen RobotWorld. Världen består av ett rutmönster

Läs mer

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) =

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) = LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad design Totala antalet uppgifter: 6 Lärare: Håkan Jonsson, Tomas Johansson, 491700, 491465 Resultatet anslås senast 2006-05-20 i A-huset. Tillåtna

Läs mer

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Introduktion TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Vi har diskuterat vilka möjligheter till OO som erbjuds i C++. Vilka vill vi använda och varför? Allt har användningsområden

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2014 04 29, 8.00 13.00 Anvisningar: Denna tentamen består av tre uppgifter. Preliminärt ger uppgifterna

Läs mer

Att öva på och förstå ett program med flera samverkande klasser.

Att öva på och förstå ett program med flera samverkande klasser. Inlämningsuppgift 4 klassen Kund (Customer) Att öva på och förstå ett program med flera samverkande klasser. Redovisning: Uppgiften redovisas i datasal: o Körning av programmet. o Redogöra för vad de olika

Läs mer

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++ Tentamen i DD2387 Programsystemkonstruktion med C++ Datum: Fredag 24 oktober 2008, 14-18 Hjälpmedel: En eller två valfria läroböcker om C++ id: Tid: 4 timmar Skriv inte ditt namn på tentan. Under tentan

Läs mer

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner

Läs mer

Grundläggande Datalogi

Grundläggande Datalogi s delar Grundläggande Datalogi s delar s delar s delar Dataabstraktion Rekursion Algoritmanalys s delar Sortering Trädstrukturer Grafalgoritmer Optimering Stavning Strängmatchning Datakompression Versionshantering

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde. Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 5 ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 11 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

Modern Programmering (2546) Tentamen lördag 30.09.2000

Modern Programmering (2546) Tentamen lördag 30.09.2000 Modern Programmering (2546) Tentamen lördag 30.09.2000 Svara på minst sex frågor. Om du svarar på alla sju frågorna faller den fråga bort som ger minst antal poäng. Maximalt 70 poäng. Det krävs 35 poäng

Läs mer

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. .0.0 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6 poäng Denna tentamen

Läs mer

Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility

Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility Föreläsning 3 Encapsulation UML Arvsmekanismen Composition Variabler och typer Typer och subtyper Distribution of Responsibility Message Passing Grundbegreppen i objektorienterad design Inheritance Encapsulation

Läs mer

Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5.

Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5. Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5. Planer för läsperiod 3. I GT kap 7 kommer vi att läsa 285

Läs mer

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 1 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 1 Pelle Evensen, Daniel Wetterbro 28 oktober 2009 Sammanfattning Denna vecka ska vi titta på skillnader mellan primitiva typer

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma

Läs mer

Lösningsförslag övning 2.

Lösningsförslag övning 2. Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static

Läs mer

DD1320 Tillämpad datalogi. Lösnings-skiss till tentamen 2010-10-18

DD1320 Tillämpad datalogi. Lösnings-skiss till tentamen 2010-10-18 DD1320 Tillämpad datalogi Lösnings-skiss till tentamen 2010-10-18 1. Mormors mobil 10p M O R M O R S M O B I L M O R M O R S M O B I L i 1 2 3 4 5 6 7 8 9 10 11 12 next[i] 0 1 1 0 1 1 4 0 1 3 1 1 Bakåtpilarna/next-värde

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30 Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 Tentamen för TDA550 Objektorienterad programvaruutveckling IT, fk DAG: 15-08-19 TID: 8:30 12:30 Ansvarig: Christer Carlsson, ankn 1038

Läs mer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1 Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva

Läs mer

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

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

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Att använda Java SE JDK 6

Att använda Java SE JDK 6 Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer