s.replace(k,n,s2,k2,n2) ersätter n tecken i s med början längden n kopierar från k2 i s2

Storlek: px
Starta visningen från sidan:

Download "s.replace(k,n,s2,k2,n2) ersätter n tecken i s med början längden n kopierar från k2 i s2"

Transkript

1 Klassen string stl F - 1 Det finns en ny typ för att hantera strängar, standardtypen string För att använda denna typ måste man inkludera headerfilen string, utan.h! Några operationer i string. s och s2 är av typen string och x är antingen av typen string eller ett vanligt teckenfält (char -fält) ==================================================================== s = x tilldelning s==x s!=x s<x jämförelse s+x ger ny string sammansatt av s och x s[k] indexering utan indexkontroll s.at(k) indexering med indexkontroll s.substr(k,n) ger en del av s, början i k och längden n s.length() ger längden av s s += x lägger till x av s s.remove(k,n) tar bort n tecken ur s med början i pos k s.insert(k,s2,k2,n) skjuter in n tecken i s med början i k kopierar från k2 i s2 s.replace(k,n,x) ersätter n tecken i s med början i k med innehållet i x s.replace(k,n,s2,k2,n2) ersätter n tecken i s med början i k med n2 tecken ur s2 med början i k2 cout << s skriver ut s cin >> s läser in s, slutar vid första blanktecken getline(cin, s) läser in hel rad till s Ett exempel med string stl F - 2 #include <string> string firstname; string lastname; string adress; Vad heter du? Zeke Varg Hej Zeke Varg Adress? Ensliga Skogen Namn: Zeke Varg Adress: Ensliga Skogen Din adress är mindre än ditt namn Antal tecken i namnet 9 cout << "Vad heter du? "; cin >> firstname >> lastname; cout << "Hej " << firstname << ' ' << lastname << endl; string namn = firstname; namn += " "; namn += lastname; cout << "Adress? "; cin >> ws; //Läser bort blanktecken getline(cin, adress); //Inläsning av en hel rad cout <<"\nnamn: "<< namn<< "\nadress: " << adress << endl; if (namn <= adress) cout << "Ditt namn är inte större än din adress"; else cout << "Din adress är mindre än ditt namn" << endl; cout <<"Antal tecken i namnet " <<namn.length() <<endl;

2 Ett exempel med string och dess iterator stl F - 3 #include <string> Vad heter du? Zeke Varg Zeke Varg ZEKE VARG string namn; cout << "Vad heter du? "; cin >> ws; getline(cin, namn); string::iterator i; for (i = namn.begin(); i!= namn.end(); i++) cout << *i; cout << endl; for (i = namn.begin(); i!= namn.end(); i++) if ( *i > 'Z' && *i!= ' ') *i -= 'a' - 'A'; for (i = namn.begin(); i!= namn.end(); i++) cout << *i; cout << endl; stl F - 4 Definition av namnrymder En namnrymd är en konstruktion som till formen påminner om en klass Konstruktionen inleds med det reserverade ordet namespace följt av namnrymdens namn, därefter kommer ett block som kan innehålla ett antal godtyckliga deklarationer #ifndef _special_ #define _special_ namespace specialare const int size = 100; void swap(double &a, double &b) double temp = a; a = b; b = temp; #endif

3 stl F - 5 Användning av namnrymder Variabler och funktioners synlighet är normalt begränsade till namnrymdens block. Det finns tre olika sätt att få tillgång till något som är deklarerat i en namnrymd Explicit namngivning Ge det fullständiga namnet vid varje användning namnrymdensnamn::namn Användningsdeklaration Deklarera en viss identifierare på den aktuella platsen using namnrymdensnamn::namn; Användningsdirektiv Gör hela namnrymden öppen using namespace namnrymndensnamn; Exempel med användning av namnrymder stl F - 6 ** EXEMPEL 1 ******************************* #include <iostream.h> #include "special.h" const int size = 6; double vek[size] = 0,1,2,3,4,5; for (int i=1; i<size/2; i++) specialare::swap(vek[i-1], vek[size-i]); for (int i=0; i<size; i++) cout << vek[i] << endl; ** EXEMPEL 2 ******************************* #include <iostream.h> #include "special.h" using specialare::swap; const int size = 6; double vek[size] = 0,1,2,3,4,5; for (int i=1; i<size/2; i++) swap(vek[i-1], vek[size-i]); for (int i=0; i<size; i++) cout << vek[i] << endl;

4 stl F - 7 Standard Template Library, STL I C++ har nyligen ett bibliotek adderas benämt Standrard Template Library Det biblioteket innehåller klasser och funktioner som täcker de vanligaste härledda datastrukturerna såsom stackar, köer och listor. I bibloteket finns även stöd för iteratorer och det förekommer även olika typer av generella algoritmer som kan tillämpas på datastrukturerna. STL, container klasser stl F - 8 I Standard Template Library förekommer det olika typer av datastrukturer: Container klass Beskrivning ==================================================================== Sequence Containers vector Snabb insättning och radering i slutet av vektorn, direkt access till alla element deque Dubbeländad kö. Snabb insättning och radering i början och slutet. Direkt access till alla element list dubbellänkad lista, snabb insättning och radering av element i hela listan Associative Containers set snabb sökning, inga dubbletter tillåtna multiset se set, dubletter tillåtna map ett till ett mappning, inga dubbletter tillåtna, snabb sökning med hjälp av söknyckel multimap se map, dubletter tillåtna Container Adapters stack Sist in Först ut kö Först in Först ut priority_queue Högst prioriterat element är alltid först Sequence och Associative Containers ingår i First-class containers

5 En klass som används i exemplen stl F - 9 #ifndef _person_ #define _person_ #include <cstring> class Person friend ostream & operator<<(ostream &ut, const Person & individ); public: Person(const char * = 0, int alder = 0); bool operator<(const Person &individ)const return age < individ.age; bool operator>(const Person &individ)const return age > individ.age; bool operator==(const Person &individ)const return age == individ.age; bool operator!=(const Person &individ)const return age!= individ.age; private: char name[80]; int age; ; ostream & operator<<(ostream &ut, const Person & individ) ut << "Namn: " << individ.name << "\tålder: " << individ.age << " år" << endl; return ut; Person::Person(const char *namn, int alder) if (namn!= 0) strcpy(name, namn); age = alder; #endif Exempel på tillämpning av en stack stl F - 10 #include <stack> #include "person.h" Person anna("anna", 10); Person beda("beda", 20); Person cesar("cesar", 30); Person david("david", 40); Person erik("erik", 50); stack< Person* > stacken; stacken.push(&anna); stacken.push(&beda); stacken.push(&cesar); stacken.push(&david); stacken.push(&erik); while(!stacken.empty()) cout << *stacken.top(); stacken.pop(); Namn: Erik ålder: 50 år Namn: David ålder: 40 år Namn: Cesar ålder: 30 år Namn: Beda ålder: 20 år Namn: Anna ålder: 10 år

6 Exempel på tillämpning av en kö stl F - 11 #include <queue> #include "person.h" Person anna("anna", 10); Person beda("beda", 20); Person cesar("cesar", 30); Person david("david", 40); Person erik("erik", 50); queue<person *> thequeue; thequeue.push(&anna); thequeue.push(&beda); thequeue.push(&cesar); thequeue.push(&david); thequeue.push(&erik); while (!thequeue.empty()) cout << *thequeue.front(); thequeue.pop(); Namn: Anna ålder: 10 år Namn: Beda ålder: 20 år Namn: Cesar ålder: 30 år Namn: David ålder: 40 år Namn: Erik ålder: 50 år STL, medlemsfunktioner stl F - 12 #include <queue> #include "person.h" priority_queue<person> thequeue; typedef priority_queue<person>::value_type post; Person anna("anna", 20); Person cesar("cesar", 37); thequeue.push(anna); thequeue.push(person("beda", 5)); thequeue.push(post(cesar)); thequeue.push(post("david", 4)); thequeue.push(post("erik", 5)); while (!thequeue.empty()) cout << thequeue.top(); thequeue.pop(); Namn: Erik ålder: 5 år

7 STL, medlemsfunktioner stl F - 13 Några medlemsfunktioner som förekommer i containerklasserna är: Medlemsfunktion Beskrivning ==================================================================== Förekommer i samtliga containers empty Returnerar true om om det finns några element i containern i annat fall false max_size returnerar maximalt antal element som kan som kan förekomma i containern size Returnerar aktuellt antal element operator= Tilldelar en container en annan container Dessa funktioner förekommer ej i priority_queues operator< samtliga logiska operatorer är operator<= överlagrade vilket gör det möjligt att osv. jämföra en container mot en annan Dessa funktioner förekommer endast i first-class containers begin returnerar en iterator som refererar till första elementet i containern end returnerar en iterator som refererar till första positionen efter sista elementet! rbegin Dessa båda funktioner är avsedda att rend användas tillsammans med en reverse_iterator erase Raderar ett eller flera element i containern clear Raderar samtliga element i containern Ett exempel med vector stl F - 14 #include <vector> Size: 5 Capacity: 5 double tal = 0.5; vector<double> datavek(5); vector<double>::size_type i; cout << "Size: " << datavek.size() << endl; cout << "Capacity: " << datavek.capacity() << endl << endl; for (i=0; i<7; i++) datavek[i] = tal++; cout << "Size: " << datavek.size() << endl; cout << "Capacity: " << datavek.capacity() << endl << endl; tal = 5.5; for (i=5; i<7; i++) datavek.push_back(tal++); Size: 5 Capacity: 5 Size: 7 Capacity: 10 datavek: 0.5 datavek: 1.5 datavek: 2.5 datavek: 3.5 datavek: 4.5 datavek: 5.5 datavek: 6.5 it: 0.5 it: 1.5 it: 2.5 it: 3.5 it: 4.5 it: 5.5 it: 6.5 cout << "Size: " << datavek.size() << endl; cout << "Capacity: " << datavek.capacity() << endl << endl; for (i=0; i<datavek.size(); i++) cout << "datavek: " << datavek[i] << endl; vector<double>::const_iterator it; for (it = datavek.begin(); it!=datavek.end(); it++) cout << "it: " << *it << endl;

8 STL, typedef stl F - 15 Med hjälp av containerklassernas typdefinitioner är det möjligt att deklarera variabler som refererar eller pekar på element i containern: typedef Beskrivning ==================================================================== value_type Den typ som är lagrad i containern reference En referens till den typ av element som är lagrade const_reference En konstant deklarerad referens till elementen... pointer En pekare till elementen... iterator En iterator som pekar på elementen const_iterator En konstantdeklarerad iterator reverse_iterator En iterator för omvänd traversering av elementen const_reverse_iterator difference_type Den typ som erhålls när man subtraherar två iteratorer från varandra, som refererar till samma container size_type Den typ somanvänds för att räkna element i containern och indexera sig igenom en sequence container Olika typer av iteratorer stl F - 16 input output forward bidirectional random access Secuence containers vector random access dequeue random access list bidirectional Associative containers set bidirectional map bidirectional Container adapters stack no iterators supported queue no iterators supported priority_queue no iterators supported

9 Typer av iteratorer och deras operatorer stl F - 17 Alla iteratorer ++p, p++ Input Iteratorer som enbart kan läsa *p, p=p1, p==p1, p!=p1 Output Iteratorer som enbart kan skriva *p, p=p1 Forward Iteratorer som kan gå framåt Dessa operatorer har den funktionalitet som finns för de föregående typerna Bidirectional Iteratorer som kan röra sig i båda riktningarna Dessa operatorer har den funktionalitet som finns för de föregående typerna samt --p, p-- Random access Iteratorer som kan röra sig i godtyckligt Dessa operatorer har den funktionalitet som finns för de föregående typerna samt p+=i, p-=i, p+i, p-i, p[i], p<=p1, p>p1, p>=p1 Exemplet med vektorn, nu med en utskrift-iterator stl F - 18 #include <vector> #include <algorithm> double tal =0.5; vector<double> datavek; vector<double>::size_type i; dataveks storlek: 0 dataveks storlek: 10 datavek[6]: 6.5 data[6]: 6.5 Innehållet med utströmiteratorn cout << "dataveks storlek: " << datavek.capacity() << endl; for (i=0; i<7; i++) datavek.push_back(tal++); cout << "dataveks storlek: " << datavek.capacity() << endl; cout << "datavek[6]: " << datavek[6] << endl; vector<double>::const_iterator data = datavek.begin(); cout << "data[6]: " << data[6] << endl; ostream_iterator<double> ut(cout, " "); cout << "Innehållet med utström-iteratorn" << endl; copy(datavek.begin(), datavek.end(), ut);

10 Exempel på tillämpning av en lista, del 1 stl F - 19 #include <list> #include "person.h" Före insert av erik pekar iteratorn på: Efter insert av erik pekar iteratorn på: list<person> listan; listan.push_front(person("anna", 20)); listan.push_front(person("beda", 5)); listan.push_back(person("cesar", 37)); listan.push_back(person("david", 4)); list<person>::iterator i = listan.begin(); while (i!= listan.end()) cout << *i++; i = listan.begin(); i++; i++; cout << endl << "Före insert av erik pekar iteratorn på: " << endl << *i; listan.insert(i,person("erik", 5)); cout << "Efter insert av erik pekar iteratorn på: " << endl << *i; Exempel på tillämpning av en lista, del 2 stl F - 20 Hela listan skrivs ut igen Namn: Erik ålder: 5 år Hela listan skrivs ut efter att den tredje personen har raderats cout << endl << "Hela listan skrivs ut igen" << endl; for (i = listan.begin(); i!= listan.end(); i++) cout << *i; i = listan.begin(); i++; i++; listan.erase(i); cout << endl << "Hela listan skrivs ut efter att den tredje" << " personen har raderats" << endl; for (i = listan.begin(); i!= listan.end(); i++) cout << *i;

11 Exempel på tillämpning av en lista, del 3 stl F - 21 Hela listan skrivs ut efter att den har sorterats Hela listan skrivs ut efter att alla noder har raderats listan.sort(); cout << endl << "Hela listan skrivs ut efter att den har" << "sorterats" << endl; for (i = listan.begin(); i!= listan.end(); i++) cout << *i; listan.clear(); cout << endl << "Hela listan skrivs ut efter att alla" << " noder har raderats" << endl; for (i = listan.begin(); i!= listan.end(); i++) cout << *i; Containertypen map stl F - 22 #include <map> #include <string> Namn: Anka Kajsa telefonnummer: Namn: Anka Kalle telefonnummer: Namn: Pigg Mimmi telefonnummer: Namn: Pigg Musse telefonnummer: Kalle Anka har telefonnummer: map<string, int> telefonlista; typedef map<string, int>::value_type post; telefonlista.insert(post("pigg Musse", 12345)); telefonlista.insert(post("anka Kalle", 13131)); telefonlista.insert(post("pigg Mimmi", 34578)); telefonlista.insert(post("anka Kajsa", 89732)); map<string, int>::const_iterator it; for (it=telefonlista.begin(); it!= telefonlista.end(); it++) cout << "Namn: " << it->first << "\ttelefonnummer: " << it->second << endl; //Returnerar defaultvärdet för integer dvs 0, om inte posten //med den sökta stränen finns. if (telefonlista["anka Kalle"]) cout << "Kalle Anka har telefonnummer: " << telefonlista["anka Kalle"] << endl;

12 Ett exempel med tillämpningar av några algoritmer, del 1 stl F - 23 #include <list> #include <vector> #include <algorithm> #include "person.h" Namn: Erik ålder: 5 år Personen med åldern 37 år hittades, vector<person> vektorn; vektorn.push_back(person("anna", 20)); vektorn.push_back(person("beda", 5)); vektorn.push_back(person("cesar", 37)); vektorn.push_back(person("david", 4)); vektorn.push_back(person("erik", 5)); Person individer[5]; list<person> listan(individer, individer+5); //KOPIERING copy(vektorn.begin(), vektorn.end(), listan.begin()); ostream_iterator<person> screen_pers(cout); copy(listan.begin(), listan.end(), screen_pers); //SÖKNING list<person>::iterator i = find(listan.begin(), listan.end(), Person("knas", 37)); if (i!= listan.end()) cout << "Personen med åldern 37 år hittades,\n" << *i << endl; else cout << "Någon person med åldern 37 år finns inte i listan" << endl; Ett exempel med tillämpningar av några algoritmer, del 2 stl F - 24 Namn: Erik ålder: 5 år 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, //SORTERING sort(vektorn.begin(), vektorn.end()); copy(vektorn.begin(), vektorn.end(), screen_pers); //ETT VANLIGT FÄLT MED HELTAL int heltal[] = 8, 3, 1, 6, 9, 0, 7, 4, 5, 2; const int antal = sizeof(heltal)/sizeof(int); //ALGORITMER TILLÄMPADE PÅ VANLIGA FÄLT sort(heltal, heltal+antal); ostream_iterator<int> screen_int(cout, ", "); copy(heltal, heltal+antal, screen_int); cout << endl; //INITIERA EN CONTAINER MED ETT VANLIGT FÄLT vector<int> talen(heltal, heltal+antal); copy(talen.begin(), talen.end(), screen_int); cout << endl;

Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid

Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid Operatorerna typeid och dynamic_cast mm - 1 Användning av typeid mm - 2 Vid dynamiskt bindning av funktioner vet man inte vilket objekt som funktionen binds till vid exekveringstillfället. Ofta saknar

Läs mer

Intro till standardbiblioteket. Eric Elfving

Intro till standardbiblioteket. Eric Elfving Intro till standardbiblioteket Eric Elfving 1 Behållare (containers) 2 Iteratorer 3 Algoritmer 15 mars 2018 2 / 13 Bibliotekets behållare delas in i tre grupper: Sekevensbehålare (Sequence containers)

Läs mer

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT 2013 1 / 33

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT 2013 1 / 33 Programmering i C++ EDA623 Containerklasser och algoritmbibliotek EDA623 (Föreläsning 10) HT 2013 1 / 33 Containerklasser och algoritmbibliotek Innehåll Containerklasser Klasserna vector och deque Iteratorer

Läs mer

Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.

Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer. Algoritmbiblioteket (STL) (f.d.) Standard Template Library Samlingstyper (containers) Algoritmer Funktionsobjekt Adaptrar Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper,

Läs mer

Innehåll. Klasserna vector och deque

Innehåll. Klasserna vector och deque Innehåll EDAF30 Programmering i C++ Standardbiblioteket: Datastrukturer och algoritmer Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Datastrukturer, containerklasser Sekvenser Insättning 2 Insättningsiteratorer

Läs mer

Standard Template Library STL. Behållarklasser

Standard Template Library STL. Behållarklasser Standard Template Library STL Kärnan av STL utgörs av behållarklasser (containers, datasamlingar, collections...) och algoritmer för operationer på sekvenser av element. Utvecklad av Alexander Stepanov

Läs mer

2D1387, Programsystemkonstruktion med C++ 01/02 1

2D1387, Programsystemkonstruktion med C++ 01/02 1 2D1387, Programsystemkonstruktion med C++ 01/02 1 Slide 1 Del4 Klassmallar, funktionsmallar och STL Ämnesområden denna föreläsning: Funktionsmallar (function templates) Klassmallar Mallar för medlemmar

Läs mer

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29 Programmering i C++ EDA623 Mallar EDA623 (Föreläsning 12) HT 2013 1 / 29 Mallar Innehåll Klassmallar Funktionsmallar EDA623 (Föreläsning 12) HT 2013 2 / 29 Containerklasserna vector, deque och list utgör

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 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

Kapitel 4 - Mallar. Kapitel 4. Introduktion till mallar STL. 2D1387 Programsystemkonstruktion med C++ 1

Kapitel 4 - Mallar. Kapitel 4. Introduktion till mallar STL. 2D1387 Programsystemkonstruktion med C++ 1 Kapitel 4 Introduktion till mallar STL 2D1387 Programsystemkonstruktion med C++ 1 Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket

Läs mer

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL Kapitel 4 Introduktion till mallar STL Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket för mallar (STL): Namnrymden

Läs mer

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL Kapitel 4 Introduktion till mallar STL Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket för mallar (STL): Namnrymden

Läs mer

Tentamen *:85/2I4123 C

Tentamen *:85/2I4123 C DSV Sid 1(6) *:85/2I4123 Jozef Swiatycki 2006-01-21 Tentamen *:85/2I4123 C++ 2006-01-21 Denna tentamen består av fyra uppgifter som tillsammans kan ge maximalt 30 poäng. För godkänt resultat krävs minst

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

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. Pekare. Datatyper Pekare, Arrayer och Referenser. Pekare Syntax. Pekare Syntax, operatorer. 4. Standard-containers. Pekare och arrayer

Innehåll. Pekare. Datatyper Pekare, Arrayer och Referenser. Pekare Syntax. Pekare Syntax, operatorer. 4. Standard-containers. Pekare och arrayer Innehåll EDAF30 Programmering i C++ 4. Standard-containers. Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Semantik och syntax Referenser 2 Arrayer 3 Containers Sekvenser 4. Standard-containers. 2/1

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

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

4. Standard-containers. Strömmar och filer

4. Standard-containers. Strömmar och filer EDAF30 Programmering i C++ 4. Standard-containers. Strömmar och filer Sven Gestegård Robertz Datavetenskap, LTH 2017 Innehåll 1 Containers Sekvenser Iteratorer Avbildningar och mängder 2 Strömmar och filer

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

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

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

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

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

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34 Programmering i C++ EDAF30 Dynamiska datastrukturer EDAF30 (Föreläsning 11) HT 2014 1 / 34 Dynamiska datastrukturer Innehåll Länkade listor Stackar Köer Träd Säkrare minneshantering (shared_ptr och unique_ptr)

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

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

TDIU01 Programmering i C++

TDIU01 Programmering i C++ TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18 Programmering i C++ EDAF30 7.5 hp EDAF30 (Föreläsning 2) HT 2014 1 / 18 Tecken och texter char char ch = A ; teckenfält = strängar i C char str[] = "123"; standardklass i C++ string s = "C++"; EDAF30 (Föreläsning

Läs mer

Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner

Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner Innehåll EDAF30 Programmering i C++ 10. Generisk programmering. Mallar och funktionsobjekt Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Funktionsobjekt Mallar med variabelt antal argument 10. Generisk

Läs mer

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU01 (725G67) - Programmering i C++, grundkurs . TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen.

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen. 1. Klass med en dynamiskt inkluderingsfilen Klass2-1 1. Klass med en dynamiskt definitionsfilen-del 1 Klass2-2 #ifndef person #define person #include #include class Person private:

Läs mer

TDDI14 Objektorienterad programmering

TDDI14 Objektorienterad programmering LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system Tommy Olsson 2015-05-27 Datortentamen i TDDI14 Objektorienterad programmering Provkod DAT1 Datum 2015-06-01

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue

Läs mer

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 31 augusti 2005

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 31 augusti 2005 2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 31 augusti 2005 I den här labben kommer du att lära dig att använda grundläggande C++ såsom klasser, loopar, variabler och minneshantering.

Läs mer

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( ) TDDC76 PoD OH Föreläsning C++ 83 Operatoröverlagring endast operatorsymboler definierade i C++ kan överlagras + - * / % ^ & ~! > = += -= *= /= %= ^= &= = = < > = ==!= && ++ -- -> ->*, [ ]

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

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Del6 Strömmar Ämnesområden denna föreläsning:

Del6 Strömmar Ämnesområden denna föreläsning: 2D1387, Programsystemkonstruktion med C++ 01/02 1 Del6 Strömmar Ämnesområden denna föreläsning: Utmatning till ostream och ostringstream Slide 1 Inmatning från istream och istringstream Överlagring av

Läs mer

maxlist-1. Indexerad lista Länkad lista

maxlist-1. Indexerad lista Länkad lista Datorer och programmering TDB2: Lista - en dynamisk datastruktur Eva Pärt-Enander Vad är en lista? En lista är en sekventiell struktur oftast av likadana saker. Listor denieras i C++ ofta med hjälp av

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

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde) Innehåll EDAF30 Programmering i C++ 7. Felhantering. Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Felhantering Exceptions Exceptions och resurshantering Specifikation av exceptionella händelser Static

Läs mer

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 2 september 2006

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 2 september 2006 2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 2 september 2006 I den här labben kommer du att lära dig att använda grundläggande C++ såsom klasser, loopar, variabler och minneshantering.

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

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

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

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

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö Stack < == > Stack och Kö Y s t M A p 1 Stack, specifikation En lista med element av typen T. Samtliga operationer utförs endast på listans ena ände, top. Stack() post: stacken är tom 2 Kö == > Y s t M

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

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

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

1 Namnkontroll (NameControl)

1 Namnkontroll (NameControl) 1 Namnkontroll (NameControl) När en ny variabel, ett objekt, en konstant o s v introduceras måste programmeraren namnge denna. Allting identifieras m h a namn. När ett program består av väldigt många komponenter

Läs mer

TDIU06 Programmering g.k. Laborationer LAB2. Vt1, Dessa laborationer ingår i examinationsmomentet LAB2 och ska göras i läsperiod Vt1.

TDIU06 Programmering g.k. Laborationer LAB2. Vt1, Dessa laborationer ingår i examinationsmomentet LAB2 och ska göras i läsperiod Vt1. 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. Laborationer LAB2 Vt1, 2007 Dessa laborationer

Läs mer

Övningsuppgifter. TDIU04 Programmering i C++, standardbibliotek. Innehåll. Vt Lektion Lektion Lektion Lektion 4...

Övningsuppgifter. TDIU04 Programmering i C++, standardbibliotek. Innehåll. Vt Lektion Lektion Lektion Lektion 4... TDIU04 Programmering i C++, standardbibliotek Vt1 2015 Övningsuppgifter Innehåll Lektion 1... 2 Lektion 2... 3 Lektion 3... 4 Lektion 4... 5 Lektion 5... 6 De tre senaste tentorna finns tillgängliga via

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

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

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

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++ LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen EDAF30 Programmering i C++ 2017 04 20, 14:00 19:00 Hjälpmedel: En valfri C++-bok. Andra papper med anteckningar eller utskrifter är

Läs mer

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt

Läs mer

Tillämpad programmering

Tillämpad programmering Tillämpad programmering C++ objekt Johan Montelius 1 struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout

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

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;

Läs mer

2 Pekare och dynamiska variabler.

2 Pekare och dynamiska variabler. 2 Pekare och dynamiska variabler. När man definierar en variabel reserverar man samtidigt minne för variabelns värde. Detta minnesutrymme kommer man sedan åt med hjälp av variabelns namn. Definierar man

Läs mer

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

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

Läs mer

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++ LUNDS TEKNISKA HÖGSKOLA 1(8) Institutionen för datavetenskap Tentamen EDAF30 Programmering i C++ 2016 05 13, 8.00 13.00 Hjälpmedel: En valfri C++-bok. OH-bilderna från föreläsningarna är inte tillåtna.

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade

Läs mer

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

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer Arrayer Samling av data Datastrukturer int[] minatelnummer = new int[30]; // allokering av tillräckligt // stort minnesutrymme Element refereras genom indexering ringa = minatelnummer[25]; // indexering

Läs mer

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++ LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenska Tentamen EDAF30 Programmering i C++ 2015 05 06, 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 Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

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

7 Templates och Exceptions

7 Templates och Exceptions 7 Templates och Exceptions I senare versioner av C++ har man infört templates eller typparametrisering och exceptions eller undantagshantering. Med hjälp av templates eller typparmetrisering kan man skriva

Läs mer

Föreläsning 3-4 Innehåll

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

Läs mer

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

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

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 2014-2015. Lektion 3 Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 014-015 Lektion 3 Denna lektion är temat hur man effektivt ska organisera den data som en algoritm använder för att åtkomsten till datan

Läs mer

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

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak 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

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

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

Den som bara har en hammare tror att alla problem är spikar Introduktion Föreläsning (Weiss kap. -4) Många begrepp blir det Introduktion till kursen Exempel: Datastrukturen mängd Generiska Den som bara har en hammare tror att alla problem är spikar Vilken

Läs mer

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19 Programmering i C++ EDA623 Strömmar och filer EDA623 (Föreläsning 9) HT 2013 1 / 19 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess

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

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning

Läs mer

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer Innehåll EDAF30 Programmering i C++ 8. Klasser; resurshantering och polymorfism Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Klasser 2 Operatorer 3 Klasser, resurshantering Rule of three Move semantics

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Inlämningsuppgift, EDAF30, 2016

Inlämningsuppgift, EDAF30, 2016 LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgift, EDAF30, 2016 1 Anvisningar för redovisning Inlämningsuppgifterna ska redovisas med en kort rapport och de

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

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom: 6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt

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

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

C++-programmets beståndsdelar

C++-programmets beståndsdelar C++-programmets beståndsdelar Ett C++-program är uppdelat i headerfiler (fil.h) och implementationsfiler (fil.cpp) Programmet måste innehålla åtminstone funktionen int main() main() startar programmet

Läs mer

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer