4. Standard-containers. Strömmar och filer
|
|
- Birgitta Månsson
- för 6 år sedan
- Visningar:
Transkript
1 EDAF30 Programmering i C++ 4. Standard-containers. Strömmar och filer Sven Gestegård Robertz Datavetenskap, LTH 2017
2 Innehåll 1 Containers Sekvenser Iteratorer Avbildningar och mängder 2 Strömmar och filer Ström-klasser Filer 4. Standard-containers. Strömmar och filer 2/1
3 Läsanvisningar Referenser till relaterade avsnitt i Lippman Sekvenser 3.3, 9.1, 9.2, Iteratorer 3.4, Associativa containers Strömmar och filer Kapitel 8 Formatterad I/O Oformatterad I/O Standard-containers. Strömmar och filer 3/34
4 Containerklasser Klassificering Sekvenser (homogena) vector<t> deque<t> list<t> Associativa containers (finns även unordered) map<k,v>, multimap<k,v> set<t>, multiset<t> Heterogena sekvenser (inte containers ) tuple<t1, T2,...> pair<t1,t2> Containers 4. Standard-containers. Strömmar och filer 4/34
5 Klasserna vector och deque Operationer i klassen vector v. clear (), v. size (), v. empty () v. push_back (), v. pop_back () v. front (), v. back (), v.at(i), v[i] v. assign (), v. insert (), v. emplace () v. resize (), v. reserve () Ytterligare operationer i klassen deque d. push_front (), d. pop_front () Containers : Sekvenser 4. Standard-containers. Strömmar och filer 5/34
6 Klasserna vector och deque Konstruktorer och funktionen assign Konstruktor och assign finns i tre varianter: fill: n stycken element med samma värde initializer list void assign ( size_type n, const value_type & val ); void assign ( initializer_list < value_type > il ); range: kopierar objekten i intervallet [first, last) (d v s från first till last, exkl last ) template <class InputIterator > void assign ( InputIterator first, InputIterator last ); Containers : Sekvenser 4. Standard-containers. Strömmar och filer 6/34
7 Klasserna vector och deque Medlemsfunktionen assign, exempel vector <int > v; int a[]{0,1,2,3,4,5,6,7,8,9}; v. assign (3,1); print_seq (v); v. assign ({11,13,15,17}); print_seq (v); length = 4: [11][13][15][17] v. assign (a, a+5 ); print_seq (v); std :: deque <int > d; d. assign (v. begin (), v. end () ); print_seq (d); length = 3: [1][1][1] length = 5: [0][1][2][3][4] length = 5: [0][1][2][3][4] Exempel på iteratorer Containers : Sekvenser 4. Standard-containers. Strömmar och filer 7/34
8 Klasserna vector och deque Medlemsfunktioner push och pop push lägger till ett element, storleken ökar pop tar bort ett element, storleken minskar *_back opererar på slutet, finns i båda void push_back ( const value_type & val ); // copy void pop_back (); bara i deque: *_front void push_front ( const value_type & val ); // copy void pop_front (); Containers : Sekvenser 4. Standard-containers. Strömmar och filer 8/34
9 Iteratorer Iterator Pekarliknande variabel som används för att genomlöpa en struktur (datasamling) Exempel vector <double > v (4); vector <double >:: iterator it; for ( it=v. begin (); it!= v. end (); ++ it) *it = 0; for ( auto it=v. begin (); it!= v. end (); ++ it) // med auto (C ++11) *it = 0; for ( double &e : v) // Ekvivalent i C ++11 e = 0; Containers : Iteratorer 4. Standard-containers. Strömmar och filer 9/34
10 Iteratorer Funktioner som returnerar iteratorer och som finns i alla containerklasser + klassen string begin() end() rbegin() rend() ger en iterator som pekar på det första elementet ger en iterator som pekar på ett tänkt element efter det sista elementet ger en reverserad iterator som pekar på det sista elementet ger en reverserad iterator som pekar på ett tänkt element före det första elementet samt: cbegin () rcbegin () cend () rcend () Containers : Iteratorer 4. Standard-containers. Strömmar och filer 10/34
11 Iteratorer Operationer på en sekvens med iteratorer som parametrar (iteratorintervallet [i,j) betecknar intervallet från och med i till och med positionen före j) sekv<typ> s(i,j); konstruktor, s initeras med [i,j) s.assign(i,j); s = elementen i intervallet [i,j)... s.insert(p,e); sätter in värdet e i positionen (iterator) p s.insert(p,n,e); sätter in n stycken e i positionen p s.insert(p,i,j); sätter in elementen i [i,j) i pos. p s.erase(p); s.erase(p,p2); tar bort elementet i position p från s tar bort elementen i [p,p2)från s Containers : Iteratorer 4. Standard-containers. Strömmar och filer 11/34
12 Iteratorer Exempel: vector::assign, vector::insert och vector::erase int a[] {1,2,3,4}; vector <int > v; v. assign (a, a +4); print_seq (v); length = 4: [1][2][3][4] v. insert (v. begin ()+2, 3, 9); print_seq (v); length = 7: [1][2][9][9][9][3][4] v. erase (v. begin ()+5); print_seq (v); length = 6: [1][2][9][9][9][4] v. erase (v. begin (),v. begin ()+2); print_seq (v); length = 4: [9][9][9][4] Containers : Iteratorer 4. Standard-containers. Strömmar och filer 12/34
13 Avbildningar och mängder Associativa containers Tabeller med söknycklar t.ex. telefonlista med 2 kolumner (namn, telnr) där namnet utgör söknyckel Implementering i form av standardklasser map<nyckel,värde> multimap<nyckel,värde> set<nyckel> multiset<nyckel> Varje nyckel förekommer precis en gång En nyckel kan förekomma mer än en gång Varje nyckel förekommer precis en gång En nyckel kan förekomma mer än en gång set är i princip en map utan värden. Containers : Avbildningar och mängder 4. Standard-containers. Strömmar och filer 13/34
14 Avbildningar och mängder <set>: std::set void test_set () { std :: set <int > ints {1,3,7}; ints. insert (5); for ( auto x : ints ) { cout << x << " "; } cout << endl ; auto has_one = ints. find (1); } if( has_one!= ints. end ()){ cout << " one is in the set \n"; } else { cout << " one is not in the set \n"; } one is in the set Eller if( ints. count (1)) Containers : Avbildningar och mängder 4. Standard-containers. Strömmar och filer 14/34
15 Avbildningar och mängder <map>: std::map map <string, int > msi ; msi. insert ( make_pair (" Kalle ", 1)); msi. emplace (" Lisa ", 2); msi [" Kim "]= 5; for ( auto & a: msi ) { cout << a. first << " : " << a. second << endl ; } cout << " Lisa --> " << msi. at(" Lisa ") << endl ; cout << " Hasse --> " << msi [" Hasse "] << endl ; auto nisse = msi. find (" Nisse "); if( nisse!= msi. end ()) { cout << " Nisse : " << nisse -> second << endl ; } else { cout << " Nisse not found \n"; } Kalle : 1 Kim : 5 Lisa : 2 Lisa --> 2 Hasse --> 0 Nisse not found Containers : Avbildningar och mängder 4. Standard-containers. Strömmar och filer 15/34
16 Avbildningar och mängder En std::set är i princip en std::map utan värden Operationer på std::map insert, emplace, [], at, find, count, erase, clear, size, empty, lower_bound, upper_bound, equal_range Operationer på std::set insert, find, count, erase, clear, size, empty, lower_bound, upper_bound, equal_range Containers : Avbildningar och mängder 4. Standard-containers. Strömmar och filer 16/34
17 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess Strömmar och filer 4. Standard-containers. Strömmar och filer 17/34
18 Klassen ios Ström (stream) = Följd av tecken (bytes) Grundläggande klass för strömmar: ios Klassträd för strömmar ifstream istream ios iostream iostrm fstream ostream ofstream Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 18/34
19 Klassen ios Fördefinierade strömmar deklarerade i <iostream>: cin, cout, cerr, och clog Klasser deklarerade i inkluderingsfilen: <fstream>: ifstream, ofstream, fstream Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 19/34
20 Läsning av strömmar Strömmar från klassen istream eller från subklass till denna Oformaterad inmatning: Läser data från strömmen utan att konvertera till annat format Görs via medlemsfunktioner Formaterad inmatning: Data från strömmen görs om till annat format (enligt typen på variablen som ska tilldelas) Görs med operatorn >> Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 20/34
21 Formaterad inmatning Manipulatorer vid inmatning: setw(n) Max-antalet tecken i inläsningssträngen ws Hoppa fram till nästa icke-vita tecken skipws Hoppa över inl. vita tecken vid anv av >> noskipws Hoppa ej över inl. vita tecken vid anv av >> dec Tolka följande heltal som decimalt oct Tolka följande heltal som oktalt hex Tolka följande heltal som hexadecimalt boolalpha Indata för bool på formen false / true noboolalpha Indata för bool på formen 0 / 1 Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 21/34
22 Formaterad inmatning Formaterad inmatning med >> och manipulatorer # include <iomanip > int i, j, k; cout " Ange tre heltal : " cin >> oct >> i >> hex >> j >> k; cout << i << " " << j << " " << k << endl ; // In - och utmatning Ange tre heltal : Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 22/34
23 Oformaterad inmatning Oformaterad inmatning med medlemsfunktioner int get() get(char& c) getline(char* s, n, t) get(char* s, n, t) read(char* s, n) gcount() ignore(n, t) peek() putback(c) unget() Läser in och returnerar nästa tecken Läser in tecken till c Läser n tecken till s med t som radseparator Som getline men sep. t läses ej Läser in n st tecken till s Anger antalet tecken vid senaste inläsn. Hoppar över max n st tecken eller till första t Returnerar nästa tecken (som förblir oläst) Lägger tillbaka c i strömmen Lägger tillbaka senast lästa tecken Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 23/34
24 Klassen ios Statusflaggor Flaggor definierade i ios, vilka beskriver en ströms tillstånd: failbit eofbit badbit Senaste operationen misslyckades Ett filslut påträffades vid senaste operationen Ett allvarligare fel av intern art har inträffat Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 24/34
25 Klassen ios Statusflaggor Medlemsfunktioner i klassen ios: void clear(); bool good(); bool fail(); bool eof(); bool bad(); bool operator!(); Slår av alla tillståndsflaggorna Ger true om alla flaggor false Ger true om failbit el. badbit satt Ger true om eofbit är satt Ger true om badbit är satt Ger resultatet fail() cast av en stream s till bool ger!s.fail() Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 25/34
26 Klassen ios Inläsning tecken för tecken OBS! istream::eof() sätts när man har försökt läsa EOF. När eof sätts tilldelar inte get(char& c) ut-parametern c men int get() returnerar EOF (== -1) Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 26/34
27 Utskrift till strömmar Formaterad utmatning med << cout << uppercase << " hej svejs " << endl ; ger utskriften hej svejs cout << scientific << << endl ; cout << uppercase << scientific << << endl ; ger utskriften e E+08 Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 27/34
28 Utskrift till strömmar Manipulatorer vid utmatning: setw(n) setfill(c) setprecision(n) boolalpha endl flush setbase(n) hex oct dec uppercase fixed scientific Sätter minimalt antal positioner Anger tecken för utfyllnad (padding) Sätter antalet decimaler (om fixed) eller antalet sign. siffror (om scientific) bool på formen false / true Lägger in radslut i strömmen Tömmer utskriftsbufferten setbase(16), setbase(8) osv Utskrift som hexadecimalt tal Utskrift som oktalt tal Utskrift som decimalt tal Ger stort E vid flyttalsutskrift Utskrift med fixnotation Utskrift med flytnotation Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 28/34
29 Utskrift till strömmar Oformaterad utmatning med medlemsfunktioner put(char c) write(const char* s, streamsize n) flush() Skriv ut tecknet c till strömmen Skriv ut n tecken från s Töm utskriftsbufferten Strömmar och filer : Ström-klasser 4. Standard-containers. Strömmar och filer 29/34
30 Koppling av filer till strömmar Öppnande av fil för läsning ifstream infil (" infilen. txt "); // Alt. ifstream infil ; infil. open (" infilen. txt "); Öppnande av fil för skrivning ofstream utfil (" utfilen. txt "); // Alt. ofstream utfil ; utfil. open (" utfilen. txt "); Strömmar och filer : Filer 4. Standard-containers. Strömmar och filer 30/34
31 Koppling av filer till strömmar Stängning av fil infil. close (); utfil. close (); Ofta behövs inte close användas eftersom destruktorerna för ifstream och ofstream automatiskt anropas då den associerade strömmen destrueras Strömmar och filer : Filer 4. Standard-containers. Strömmar och filer 31/34
32 Koppling av filer till strömmar Kopiering av fil # include <iostream > # include <fstream > using namespace std ; main ( int argc, char * argv []) { if ( argc!= 3) { cout << " Syntax : " << argv [0] << " from_file to_file " << endl ; } char c; ifstream f1( argv [1], ios :: binary ); // Bin ä rfil ofstream f2( argv [2], ios :: binary ); } while (f1.get (c )){ f2.put (c); } Strömmar och filer : Filer 4. Standard-containers. Strömmar och filer 32/34
33 Koppling av filer till strömmar Filflaggor i klassen ios in out app trunc ate binary Filen skall existera och vara läsbar. Om filen existerar skall den skrivas över. Om filen inte finns skall en ny skrivbar fil skapas. Om filen existerar skall skrivning läggas till i slutet. Om filen inte finns skall en ny skrivbar fil skapas. Om filen redan finns skall den skrivas över Efter öppning flyttas filpekaren till slutet av filen Filen skall hanteras som en binärfil Kombination av flaggor med operator (bitvis eller) ofstream filen (" fil. dat ",ios :: trunc ios :: binary ); Strömmar och filer : Filer 4. Standard-containers. Strömmar och filer 33/34
34 <stringstream> : strängar som strömmar std :: stringstream ss; ss << " Hello, string!\ n"; std :: cout << ss.str (); ss. str (" Brave new string "); while (ss) { std :: string s; ss >> s; std :: cout << s << std :: endl ; } Hello, string! Brave new string Hämta/ändra innehållet i strängen med string stringstream::str() const; void stringstream::str (const string& s); Tips: Använd stringstream för att enkelt experimentera med strömmar, eller skriva tester utan konsoll-i/o. Strömmar och filer : Filer 4. Standard-containers. Strömmar och filer 34/34
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
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
Innehåll. 1 Algoritmer. 2 Strömmar och filer. 3 Iteratorer. 1 Söka, räkna. 2 Jämföra, genomlöpa. 3 Generera nya data. 4 Kopiera och flytta element
Innehåll EDAF30 Programmering i C++ 5.. Strömmar och filer Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Standardbibliotekets algoritmer Insättningsiteratorer 2 Strömmar och filer Ström-klasser Filer
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
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
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
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
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
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
Kapitel 5. Strömmar. Utmatning
Kapitel 5 Strömmar Kapitel 5 - Strömmar Utmatning med std::ostream och std::ostringstream Inmatning med std::istream och std::istringstream Överlagring av in- och utmatning Iteratorer för in- och utmatning
Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)
Innehåll EDAF30 Programmering i C++ 2. Användardefinierade typer Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Deklarationer, scope och livstid 2 Användardefinierade typer 3 Standardbibliotekets alternativ
Föreläsning 4: Filer och strömmar
Föreläsning 4: Filer och strömmar PROGRAM OPERATIV- SYSTEM EXTERNA (IO-)ENHETER cout > x; STANDARD INSTRÖM ifstream infil A.TXT infil >> str; INGÅENDE FILSTRÖM
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
6 In- och utmatning, strömmar
6 In- och utmatning, strömmar Strömmar används i C för att kommunicera mellan program och yttre enheter som skärm, tangentbord, printer eller sekundärminne. Strömmarna kan man se som kanaler eller buffertar
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
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
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
Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)
Innehåll EDAF30 Programmering i C++ 2. Användardefinierade typer Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Deklarationer, scope och livstid 2 Användardefinierade typer 3 Standardbibliotekets alternativ
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
Strömmar och strängar
Strömmar och strängar Strömmar In- och utmatning Strängar Delsträngar Strömmar och strängar Först, grunderna: Utmatning Inmatning Strängar Sedan, mer tillämpningsorienterat: Läsning av rader Stränghantering
TDIU01 - Datortenta (DAT2)
TDIU01 - Datortenta (DAT2) 2013-03-25 Regler Student får lämna salen tidigast en timme efter tentans start. Vid toalettbesök eller rökpaus ska pauslista utanför salen fyllas i. All form av kontakt mellan
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
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,
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
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
EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment
EDAf30: Programmering i C++, 7.5 hp EDAF30 Programmering i C++ 1. Introduktion Sven Gestegård Robertz Datavetenskap, LTH 2015 Mål: Kursens syfte är att ge kunskaper i objektorienterad programmering i C++.
Avrundning och manipulatorer
Avrundning och manipulatorer Intern avrundning Avrundning vid utskrift o o Med formatflaggor Med manipuilatorer Andra manipulatorer o Exempel 1 Intern avrundning Intern avrundning används t ex då en variabel
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
Introduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Innehåll. 1 volatile. 2 Kuriositeter. 3 Klasser och arv. 4 Råd och tumregler. 5 Mer om standard-containers. Trigraphs
Innehåll EDAF30 Programmering i C++ 12., kommentarer och råd 1 volatile 2 Kuriositeter Sven Gestegård Robertz Datavetenskap, LTH 2017 3 Klasser och arv Mer polymorfism 4 Råd och tumregler 5 Mer om standard-containers
Innehåll. Datatyper Pekare, Arrayer och Referenser. Pekare. Pekare Syntax. Pekare Syntax, operatorerna * och & 5. Pekare och arrayer. Algoritmer.
Innehåll EDAF30 Programmering i C++ 5. Pekare och arrayer.. Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Pekare Semantik och syntax Operatorn -> Referenser 2 Arrayer Pekare och arrayer 3 Standardbibliotekets
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
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
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
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Ö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
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
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
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
C++ Lektion Filhantering
C++ Lektion Filhantering Teori Vi är bekanta med ett antal objekt för läsning och skrivning på bildskärmen, nämligen cout och cin. De hanterar automatiskt om vi ska läsa eller skriva en "följd av bytes"
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
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
Föreläsning 1: Momstabellen i C++
Nu sätter vi igång med C++! Föreläsning 1: Momstabellen i C++ På den här föreläsningen skall jag ta ett stort exempel och ett par små och med dessa hoppas jag att täcka in mycket av det som är grundläggande.
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
Introduktion till streams
Introduktion till streams INTRODUKTION TILL STREAMS Introduktion till streams Vad är en ström? I/O ström biblioteket. Streambuf ios Klasshierarkin Standardströmmar Utmatning
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
TDIU01 - Datortenta (DAT2)
TDIU01 - Datortenta (DAT2) 2012-12-18 Regler Student får lämna salen tidigast en timme efter tentans start. Vid toalettbesök eller rökpaus ska pauslista utanför salen fyllas i. All form av kontakt mellan
Innehåll. 1 Funktionsmallar. 2 Pekare och konstanter. 3 Typomvandlingar. struct Name { string s; //... };
Innehåll EDAF30 Programmering i C++ 6. Typer, pekare och konstanter. 1 Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Pekare och konstanter Operatorn -> Konstanter 3 Typomvandlingar 6. Typer, pekare
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.
DD2387 Programsystemkonstruktion med C++ Tentamen 2
DD2387 Programsystemkonstruktion med C++ Tentamen 2 Måndagen den 10 november 2014, 08:00-12:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på båda sidor.
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
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.
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
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)
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
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; ;
Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 2 Karl Palmskog palmskog@kth.se september 2010 Specalfunktioner i klasser Konstruktorer i konstruktorerna för en klass initieras klassens medlemmar initialvärden
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
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
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
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
Ö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å
Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering
Innehåll EDAF30 Programmering i C++ 6. Resurshantering Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Smarta pekare 3 Klasser, resurshantering
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
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.
Innehåll. Pekare Syntax
Innehåll EDAF30 Programmering i C++ Typer, pekare Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typer och arrayer Operatorn -> Typer, pekare 2/1 Påminner om referenser i Java, men en pekare är minnesadressen
Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar
Innehåll EDAF30 Programmering i C++ 9. Polymorfism och arv Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Typomvandling 2 Klasser Polymorfism och arv Konstruktorer och destruktorer Tillgänglighet Arv
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
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
TDIU20 - Objektorienterad programmering i c++ - föreläsning 4
TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 Pontus Haglund Department of Computer and information science 1 Vad gjorde vi förra gången? Felhantering Operatorer Typkonvertering 2 Grundläggande
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
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
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
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
Inlämningsuppgift, EDAF30, 2018
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgift, EDAF30, 2018 1 Anvisningar för redovisning Inlämningsuppgifterna ska redovisas med en kort rapport och de
Ö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
Strängar. Strängar (forts.)
Strängar En sträng i C är helt enkelt en array av char: char namn[20]; För att få strängar att bete sig som om de vore av dynamisk längd markeras strängens slut med null-tecknet \0 : J o z e f S w i a
TDIU20 - Objektorienterad programmering i c++ - föreläsning 3
TDIU20 - Objektorienterad programmering i c++ - föreläsning 3 Pontus Haglund Department of Computer and information science 1 Vad har vi gjort hittills 2 Felhantering 3 Operatorer 4 binära operatorer 5
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
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å
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)
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.
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
Funktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
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
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
Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {
Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet
1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet
1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken
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
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
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
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
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
Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (type casts) Explicita, namngivna typomvandlingar (C++-11)
Innehåll EDAF30 Programmering i C++ 8. Typomvandlingar. Klasser: operatorer och polymorfism. 1 Typomvandlingar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Klasser Operatorer 3 Polymorfism och arv
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å
Tentamen EDAF30 Programmering i C++
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen EDAF30 Programmering i C++ 2016 01 11, 8.00 13.00 Hjälpmedel: En valfri C++-bok. OH-bilderna från föreläsningarna är inte tillåtna.
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
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
Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut
F5: Filhantering in- och utmatning (kap. 2 och 8) 1 Utskrift på skärm, inläsning från tangentbord (kap. 2) Spara och hämta variabler med save och load (kap. 2) Kommandot textread Mer avancerad filhantering:
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