TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap"

Transkript

1 TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap

2 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor

3 2 / 23 Internminne - RAM Datorns internminne (RAM, random access memory) består av en ordnad sekvens bitar Vi kan normalt sett adressera (komma åt) en byte i taget (8 bitar)

4 3 / 23 Minne

5 4 / 23 Minne Vad händer i minnet? int x {3421}; x: int 3421

6 5 / 23 Variabler En variabel har alltid: Ett namn En datatyp Ett värde

7 5 / 23 Variabler En variabel har alltid: Ett namn En datatyp Ett värde En adress

8 6 / 23 Pekare En pekare lagrar en adress till en given position i minnet Deklareras med en asterisk (*) int * ip;

9 7 / 23 Pekare Man kan ta fram adressen till en variabel med adressoperatorn (&) int x {3421}; int * ip {&x}; int x: ip: 3421

10 8 / 23 Pekare För att komma åt det värde en pekare pekar på används avrefereringsoperatorn (*) #include <iostream> using namespace std; int main() { int x {3421}; int *ip {&x}; cout << ip << endl; cout << *ip << endl; return 0; } Vi får bara avreferera pekare som pekar på adresser som vårt program äger

11 9 / 23 Pekare Pekare används oftast för att skapa dynamiskt minne Vi allokerar nytt minne med new-operatorn Vi kan endast nå det nya utrymmet med hjälp av pekaren int* ip; ip = new int; *ip = 5123; int * ip {new int{5123}};

12 10 / 23 Pekare Minnesläcka Om vi redan pekar på en minnesadress och ber om nytt utrymme tappar vi bort det vi pekade på. int* ip {new int{44}}; int ip: 44

13 11 / 23 Pekare Minnesläcka Om vi redan pekar på en minnesadress och ber om nytt utrymme tappar vi bort det vi pekade på. int* ip {new int{44}}; ip = new int{123}; ip: int 44 int 123

14 12 / 23 Pekare Minnesläcka Om vi redan pekar på en minnesadress och ber om nytt utrymme tappar vi bort det vi pekade på. Detta kallas minnesläcka, ett av de vanligaste felen när vi jobbar med pekare Vi äger fortfarande utrymmet, men har inget sätt att nå det int* ip {new int{44}}; ip = new int{123}; ip: int 44 int 123

15 13 / 23 Pekare Antag att vi har följande deklaration: int *ip {new int{345}}; int ip: 345

16 13 / 23 Pekare Antag att vi har följande deklaration: int *ip {new int{345}}; int ip: 345 Vi kan återlämna minnet med delete-operatorn delete ip; int ip: 345

17 13 / 23 Pekare Antag att vi har följande deklaration: int *ip {new int{345}}; int ip: 345 Vi kan återlämna minnet med delete-operatorn delete ip; int ip: 345 OBS, delete ändrar inte på pekarens värde!

18 14 / 23 Pekare Värdet nullptr betyder inget värde för pekare 1 int * ip{}; // ip sätts till nullptr 2 ip = new int{}; // det nya heltalet får värdet 0 3 delete ip; 4 ip = nullptr; kodrad: Minnet: int ip: ip: 0 int ip: 0 ip:

19 15 / 23 Pekare void f(int *p) { delete p; p = new int{2}; } int main() { int *ptr {new int{12}}; f(ptr); cout << *ptr << endl; delete ptr; } Vad händer?

20 16 / 23 Pekare Precis som vanligt måste vi ta emot referenser om vi vill ändra på värden: void f(int *& p) { delete p; p = new int{2}; } int main() { int *ptr {new int{12}}; f(ptr); cout << *ptr << endl; delete ptr; }

21 17 / 23 Alias Om man tycker det är jobbigt med alla asterisker kan man skapa ett nytt namn för en typ med aliasdefinition Skrivs på formen using NAMN = TYPBESKRIVNING; using int_ptr = int *; void f(int_ptr & p); int main() { int_ptr ptr { new int{4} }; delete ptr; }

22 18 / 23 Pekare till klasstyp För att komma åt medlemmar i klasser kan man använda sig av medlemsåtkomstoperatorn (->) struct Book { string title; string author; int pages; }; Book *bp { new Book }; bp->title = "C++ Primer";

23 18 / 23 Pekare till klasstyp För att komma åt medlemmar i klasser kan man använda sig av medlemsåtkomstoperatorn (->) struct Book { string title; string author; int pages; }; Book *bp { new Book }; bp->title = "C++ Primer"; Man kan använda avreferering också, men då krävs parenteser cout << (*bp).title << endl;

24 19 / 23 Dynamiska datastrukturer En dynamisk datastruktur kan ändra storlek under programkörningen Vi har redan stött på två dynamiska datastruktur, string och vector som kan lagra flera värden av en viss typ.

25 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position

26 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position Utöka storleken ?

27 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position Utöka storleken Flytta alla värden som ligger efter hittad position ?

28 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position Utöka storleken Flytta alla värden som ligger efter hittad position

29 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position Utöka storleken Flytta alla värden som ligger efter hittad position Stoppa in värdet

30 20 / 23 Dynamiska datastrukturer Tänk er att vi vill stoppa in ett värde sorterat i en vector. Då behöver vi: Hitta rätt position Utöka storleken Flytta alla värden som ligger efter hittad position Stoppa in värdet

31 21 / 23 Enkellänkade listor En enkellänkad lista består av noder sammankopplade med pekare. En nod är en post som innehåller två saker, ett värde av någon datatyp samt en pekare till nästa nod i listan. Detta gör en pekare till en nod till en lista. Tom lista (eller slutet av listan) markeras med pekarvärdet nullptr

32 22 / 23 Enkellänkade listor 3 7 9

33 23 / 23 Enkellänkade listor Deklaration av en listtyp: struct List_Node { int data; List_Node * next; }; Alternativ lösning med alias: struct List_Node; using List = List_Node *; struct List_Node { int data; List next; };

34 Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs . TDIU01 - Programmering i C++, grundkurs Datalagring - poster och vektorer Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Poster 2/17 struct Book string title; string author; int pages; ;

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

Läs mer

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare Vad är en pekare? Varför använder vi pekare? Hur används pekare? Hur deklarerar vi pekare i C? Hur kommer vi åt pekarvärdet? DAVA07/08 JE,MG,MG,PS 2 DAVA07/08 JE,MG,MG,PS Vad är en pekare? En pekare är

Läs mer

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Strömmar, externa filer och kommandoradsargument Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/32 Strömmar Kommandoradsargument Jämförelseoperatorer

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.

Läs mer

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33 Programmering i C++ EDA623 Typer EDA623 (Föreläsning 4) HT 2013 1 / 33 Typer Innehåll Heltalstyper Flyttalstyper Pekare Minnesallokering Funktionspekare Typdeklarationer med typedef Typomvandlingar (casting)

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer C++ - en introduktion Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna Ett första

Läs mer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser. Vi får också möjlighet att referera

Läs mer

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Klasser - speciella medlemsfunktioner Eric Elfving Institutionen för datavetenskap En klass ansvarar ofta för en resurs. Ibland är resursen så enkel som en datamedlem

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 77 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31 Programmering i C++ EDA623 Dynamiska datastrukturer EDA623 (Föreläsning 11) HT 2013 1 / 31 Dynamiska datastrukturer Innehåll Länkade listor Stackar Köer Träd EDA623 (Föreläsning 11) HT 2013 2 / 31 Länkade

Läs mer

Skizz till en enkel databas

Skizz till en enkel databas Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil

Läs mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

Läs mer

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på både fram- och

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor

Läs mer

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar KLASSER Inkapsling Abstrakt datatyp Public och private Klassmedlemmar Datamedlemmar Funktionsmedlemmar Initiering av objekt Konstruktor Ta del av objektets tillstånd Förändra objektets tillstånd Avinitiera

Läs mer

Pekare och arrayer. Indexering och avreferering

Pekare och arrayer. Indexering och avreferering Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en

Läs mer

5 Arv och dynamisk bindning FIGUR

5 Arv och dynamisk bindning FIGUR 5 Arv och dynamisk bindning Arv är en av hörnstenarna i objektorienterad programmering. Med hjälp av arv kan man skapa underhållsvänliga och förändringsvänliga system. Att hitta arvsrelationer är en viktig

Läs mer

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

Läs mer

1 Klasser och objektorientering Vad är objektorientering?

1 Klasser och objektorientering Vad är objektorientering? 1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

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

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java Innehåll EDAF30 Programmering i C++ 1. Introduktion 1 Om kursen Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Presentation av C++ Historik Inledning Datatyper och variabler 1. Introduktion 2/1 Viktiga

Läs mer

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10 Programmeringsteknik för Ingenjörer VT06 Föreläsning 10 Dagens föreläsning Repetition Strukturer Programmeringsteknik för ingenjörer, VT06 2 Deklaration: char name1[10]; char *name2; Repetition - Strängar

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

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Innehåll. Resource handles. Resurshantering. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 7. Resurshantering, Felhantering

Innehåll. Resource handles. Resurshantering. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 7. Resurshantering, Felhantering Innehåll EDAF30 Programmering i C++ 7. Resurshantering, Felhantering Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Felhantering Exceptions

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

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ }; struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ Vad är problemet? Att kunna lagra data som avser flera olika egenskaper

Läs mer

grundläggande C++, funktioner m.m.

grundläggande C++, funktioner m.m. C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

Poster ( structar ) Postdeklarationer

Poster ( structar ) Postdeklarationer Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

Datastrukturer. Typdeklarationer. Ny datastruktur i C- struct. exempel. Ofta bra att kunna fšra ihop information av olika datatyper till en enhet.

Datastrukturer. Typdeklarationer. Ny datastruktur i C- struct. exempel. Ofta bra att kunna fšra ihop information av olika datatyper till en enhet. Typdeklarationer Datastrukturer AnvŠnds fšr att ge beskrivande namn fšr en typ typedef typ typnamn; typedef unsigned int PosInt; PosInt slumptal; Ofta bra att kunna fšra ihop information av olika datatyper

Läs mer

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.

Läs mer

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++ Tentamen i DD2387 Programsystemkonstruktion med C++ Resultat: Datum: Tisdag 18 oktober 2011, 8-12 (rättning ca 12:40-14) Salssida (H/V): id: Hjälpmedel: En eller två valfria läroböcker om C++ Tid: 4 timmar

Läs mer

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad. 5(16) Tentamen på kurserna Programmeringsteknik med C och Matlab Programmering i C Tid: 2/11-11, kl. 9-13 Lärare: Jonny Pettersson Totalt: 60 poäng Betyg 3: 30 poäng Betyg 4: 39 poäng Betyg 5: 48 poäng

Läs mer

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet. Uppgift 1 Ett programmeringsparadigm är i grund och botten ett sätt att arbeta, ett sätt att möta problem. Det finns flera olika paradigm där varje paradigm har sina egna styrkor och svagheter. Det som

Läs mer

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar Innehåll EDAF30 Programmering i C++ 3. Mer om klasser. Funktionsanrop Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser pekaren this const för objekt och medlemmar Kopiering friend inline 2 Funktionsanrop

Läs mer

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010 Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis

Läs mer

Introduktionslaboration

Introduktionslaboration LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte

Läs mer

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.

Läs mer

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen

Läs mer

Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer 2002-10-29

Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer 2002-10-29 Grunderna i filhantering Filhantering Filer kan användas för permanent lagring av data Hårddisk, disketter, CD-R/W, band Variabler och arrayer Försvinner när du avslutar programmet Sparas i datorns arbetsminne

Läs mer

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I 2002-03-18 Betygsgränser: 3 14 poäng 4 20 poäng 5 27 poäng Maxpoäng: Hjälpmedel: 32 poäng Bilagd ASCII-tabell Lycka till Per Ekeroot

Läs mer

Funktionens deklaration

Funktionens deklaration Funktioner - 1 Teknik för stora program #include #include......... cout

Läs mer

Programsystemkonstruktion med C++

Programsystemkonstruktion med C++ Programsystemkonstruktion med C++ Övning 1 Daniel Aarno bishop@kth.se Översikt övning 1 Kompilering och länkning Makefile Preprocessordirektiv Funktioner Funktionen main() Datatyper Minneshantering Pekare

Läs mer

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. 1(9) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Fr 28/1 och kan då hämtas på

Läs mer

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= Nils; // längd = 5 bytes Tecken EDAF30 Programmering i C++ 2. Tecken och texter char char ch = A ; Sven Gestegård Robertz Datavetenskap, LTH 2015 sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char c1, c2; c1 = A ; c2

Läs mer

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr, 051019

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr, 051019 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Må 24/10 och kan då hämtas på

Läs mer

Imperativ programmering (Fö 1 2) C++ Ett första programexempel. Enkel in- och utmatning strömbiblioteket

Imperativ programmering (Fö 1 2) C++ Ett första programexempel. Enkel in- och utmatning strömbiblioteket TDDC76 PoD OH Föreläsning C++ 1 C++ bred användning inom programvaruindustrin tillgängligt överallt generellt effektiv kod god kontroll över minnesanvändning ny standard 2011 C++11 mindre revision planerad

Läs mer

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b. Innehåll EDAF30 Programmering i C++ Generisk programmering med templates (mallar) Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Funktionsmalllar 2 Generisk programmering med templates (mallar) 2/1 Generisk

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

int (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int

int (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int Pekare char v[10]; //array med 10 characters char* p; //pekare till characters //p pekar på v's fjärde element p = &v[3] p & är "adressen-av" operatorn. För de flesta typer T gäller att T* är typpekare.

Läs mer

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning: 2D1387, Programsystemkonstruktion med C++ 00/01 1 Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning: Synlighet Överlagring av operatorer Slide 1 Vänner till klasser och funktioner

Läs mer

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.

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

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering. KAPITEL 8 Klasser Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering. 169 Hittills: Enkel datatyp: double, int, char Operationer: förutbestämda, t ex +,

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Klas Arvidsson Institutionen för datavetenskap 1 / 33 UML UML är ett grafiskt språk som (bland mycket annat) används för

Läs mer

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programvara och system Tommy Olsson 2014-02-05 Lektionsplanering.................................. 2 Lektion 1..........................................

Läs mer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att

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

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << Hello World\n; return 0; } C++, Övning 1 Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

4 Sammansatta datatyper

4 Sammansatta datatyper 4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara

Läs mer

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x Generell (template) programmering Funktionsobjekt och funktionspekare Iteratorer Algoritmer Effektiv C++ Slutliga tips Genomgång av gammal tenta Daniel Aarno bishop@kth.se 2 int compare(int i1, int i2)

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 3: Vector och struct

Föreläsning 3: Vector och struct Föreläsning 3: Vector och struct Nu är det dags att börja prata lite datastrukturer i c++. Vi börjar med fält. Vill man ha ett klassiskt fält så kan man i sitt c++-program deklarera t.e.x int tio_heltal[]

Läs mer

Abstrakta datastrukturer

Abstrakta datastrukturer Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack Stack implementerad med array Länkad lista Stack implementerad med länkad lista Inlämningsuppgifter Datastrukturer En datastruktur är en struktur

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

Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av

Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av Andra operatorer Bilaga E Andra operatorer Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av dessa består av de bitvisa operatorerna, vilka gör det möjligt att manipulera

Läs mer

2 Modul 2 - (Länkade) Listor

2 Modul 2 - (Länkade) Listor 2 Modul 2 - (Länkade) Listor 2.1 Jämförelse mellan "verkliga" och "virtuella" listor Verklig Ta ett blankt papper Skriv en punkt Lägg till fler punkter Läser vad som står vid en punkt Stryker över/suddar

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

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

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

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Listor Specifikation, Konstruktion Algoritmmönster Riktade listor, länkade celler Specifikation, Konstruktion Dynamiska resurser 24 25 Modell Pärm Bläddra,

Läs mer

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++ LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenska Tentamen EDAF30 Programmering i C++ 2016 08 16, 8.00 13.00 Hjälmedel: En valfri C++-bok. OH-bilderna från föreläsningarna är inte tillåtna. Du

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data

Läs mer

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med. Det objektorienterade synsättet A - 1 Objekt A - 2 Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med. De enskilda variablerna i programmet, de s.k. objekten,

Läs mer

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv Innehåll EDAF30 Programmering i C++ 9. Polymorfism och arv Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser Polymorfism och arv Konstruktorer och destruktorer Tillgänglighet Arv utan polymorfism

Läs mer

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida: 2D1387, Programsystemkonstruktion med C++ 00/01 1 Slide 1 2D1387, Programsystemkonstruktion med C++ Johnny Bigert, johnny@nada.kth.se Kursens hemsida: http://www.nada.kth.se/kurser/kth/2d1387 Varför vill

Läs mer

JAVAUTVECKLING LEKTION 8

JAVAUTVECKLING LEKTION 8 JAVAUTVECKLING LEKTION 8 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Fält (Arrayer) Att skapa och arbeta med fält Indexering Jämförelse av fält Flerdimensionella fält 1 VAD

Läs mer

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

C++ Lektion Tecken och teckenfält

C++ Lektion Tecken och teckenfält C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för

Läs mer

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder *:85/ID200V C++ HT07 Föreläsning 8 Medlemspekare Undantagshantering Namnrymder Medlemspekare Ibland uppstår behovet att peka ut en viss medlem, som skall behandlas i olika objekt. C++ har begreppet medlemspekare

Läs mer

Synlighet. Namespace Scope-operatorn Klasser Vänner

Synlighet. Namespace Scope-operatorn Klasser Vänner Synlighet Namespace Scope-operatorn Klasser Vänner Synlighet Ett problem med moduler i C är att alla variabel- och funktionsnamn ligger globalt synliga. C++ botar detta genom att införa det mycket användbara

Läs mer