operator T*() const throw(); // Konvertering till vanlig pekare Jozef Swiatycki DSV Implementering av vissa medlemmar i Ptr-mallen

Storlek: px
Starta visningen från sidan:

Download "operator T*() const throw(); // Konvertering till vanlig pekare Jozef Swiatycki DSV Implementering av vissa medlemmar i Ptr-mallen"

Transkript

1 Mall för pekarklass för polymorfa objekt class null_pointer; // Undantagsklass, visas senare, en liten förbättring template <class T> class Ptr{ T *ptr; int *count; template<class U> friend class Ptr; Ptr(T *p, int *c); // Privat konstruktor, används vid konvertering public: Ptr(T *p=0) throw(std::bad_alloc); Ptr(const Ptr& other) throw(); ~Ptr() throw(); const Ptr& operator=(const Ptr& other) throw(); T& operator*() throw(null_pointer); T* operator->() throw(null_pointer); bool operator==(const Ptr& other) const throw(); bool operator!=(const Ptr& other) const throw(); operator T*() const throw(); // Konvertering till vanlig pekare ; template <class OTHERTYPE> // Konvertering till Ptr för annan operator Ptr<OTHERTYPE>(); // typ (basklasstyp) Bild 210 Implementering av vissa medlemmar i Ptr-mallen template <class TYP> template <class OTHERTYPE> Ptr<TYP>::operator Ptr<OTHERTYPE>(){ return Ptr<OTHERTYPE>(ptr, count); template <class T> Ptr<T>::operator T*() const throw(){ return ptr; template <class T> Ptr<T>::Ptr(T *p) throw(std::bad_alloc): ptr(p), count(ptr?new int(1):0){ Se OH för implementering av andra medlemmar Bild 211 1

2 Implementering av vissa medlemmar i Ptr-mallen, forts. template <class T> T& Ptr<T>::operator*() throw(null_pointer){ if (ptr == 0) throw null_pointer(); return *ptr; template <class T> T* Ptr<T>::operator->() throw(null_pointer){ if (ptr == 0) throw null_pointer(); return ptr; Kräver #include <stdexcept> class null_pointer : public std::runtime_error{ public: null_pointer() : runtime_error("null_pointer"){ null_pointer(std::string msg): runtime_error("null_pointer" + msg){ ; Bild 212 Kommentarer till Ptr-mallen En bra och generell mall för referensräknande pekarklasser är svår att utforma (vilket är anledningen till att någon sådan inte finns i standardbiblioteket). Som någon har sagt: smarta pekare kan vara riktigt smarta med de kan inte vara riktiga pekare. Det kan uppkomma problem med användning av den föreslagna Ptr-mallen som jag inte inser nu, jag kommer i så fall att meddela problemen i FC (och förhoppningsvis en lösning). Ett problem som jag ser nu är att dynamic_cast inte fungerar på dessa pekarklasser, dynamic_cast vill ju ha en vanlig pekare att testa det utpekade objektet med. Detta kan lösas på många sätt men inget som är transparent för användaren. Jag återkommer i FC med tips om en lösning. Bild 213 2

3 En polymorfisk klass för användning med Ptr class Bird : public Animal{ public: static Ptr<Bird> create(string name, double ws); double get_wingspan() const; protected: Bird(string name, double ws); private: double wingspan; Bird(const Bird& other); void operator=(const Bird& other); Skall inte implementeras! void operator&(); void operator&() const; ; Ptr<Bird> Bird::create(string name, double ws){ return Ptr<Bird>(new Bird(name, ws)); Bird::Bird(string name, double ws): Animal(name), wingspan(ws) { double Bird::get_wingspan() const { return wingspan; Bild 214 Introduktion till standardbiblioteket Standardbiblioteket består av följande delar: behållarklasser med stödbibliotek algoritmbiblioteket med stödbibliotek strängbiblioteket I/O-biblioteket stöd för undantagshantering och standardundantag stöd för lokal anpassning (sorteringsordning för tecken mm) matematiska och numeriska faciliteter andra stödfunktioner (numeriska gränser, dynamisk minneshantering, Run-Time-Type-Information-stöd mm) Tillgång till dessa bibliotek fås genom #include på motsvarande headerfil. Till dessa tillkommer C:s headerfiler, som också tillhör C++-standardbibliotek. C:s headerfiler skall finnas under två namn på formen cx resp. X.h, t.ex. #include <cstring> deklarerar C:s str- och mem-funktioner i namnrymden std medan #include <string.h> definierar dessa namn i den globala namnrymden. Bild 215 3

4 string-klassen Typen string är egentligen en instansiering av mallen basic_string<> vars parametrar är teckentypen, dess egenskaper ( traits ) och minneshantering: namespace std{ template <class chart = char, // Teckentypen class traits = char_traits<chart>, // Hur tecken jämförs class allocator = allocator<chart> > // Hur man allokerar class basic_string{... ; typedef basic_string<char> string; Se OH för egendefinierad strängtyp. Jag förenklar framställningen i fortsättningen genom att använda string som om den var en klass. Bild 216 string string har samma typer och medlemsfunktioner som vector<>, detta för att man skall kunna använda string som argument till de generiska algoritmerna, t.ex. void funk(char c){ cout << c; int main(){ string str("jozef"); for_each(str.begin(), str.end(), funk); Vid normal stränghantering anger man positioner inom en sträng med index och längd: string namn = Jozef Swiatycki ; string enamn = namn.substr(6, 9); // startposition, längd Vid sådana operationer måste index-värdet falla inom strängen (annars genereras undantaget std::out_of_range), längdangivelsen kan dock vara större än det återstående antalet tecken i strängen och har då betydelsen resten av strängen. Det finns en statisk medlemskonstant med namnet npos som har ett värde som är större än vad en stränglängd kan vara och som kan användas för att ange resten av strängen. Den returneras också av sökfunktioner när dessa inte hittar det sökta värdet: string resten = namn.substr(6, string::npos); string::size_type pos = namn.find( ); if (pos == string::npos) cout << Inget mellanslag! ; Obs att string::size_type är en unsigned typ, hade pos deklarerats som en int skulle kompilatorn varna för jämförelse av signed med unsigned. Bild 217 4

5 Varianter av medlemsfunktioner i string De flesta medlemsfunktioner i string finns i många överlagrade varianter för olika typer av argument: ett andra strängargument skall kunna vara string, char * eller char positioner skall kunna anges med index och längd eller med iteratorer om man vill operera på hela strängar skall man inte behöva ange positioner Exempel: void insert(iterator p, size_type n, char c); template<class InputIterator> void insert(iterator p, InputIterator beg, Inputiterator end); string& insert(size_type pos1, const string& str); string& insert(size_type pos1, const string& str, size_type pos2, size_type n); string& insert(size_type pos, const char* s, size_type n); string& insert(size_type pos, const char* s); string& insert(size_type pos, size_type n, char c); iterator insert(iterator p, char c = char()); Exempel på användning: string knamn= Karl Gustav ; string nr= XIV XV XVI XVII ; knamn.insert(5, nr, 7, 4); //pos i egen sträng, från-sträng, pos i från-sträng, antal Bild 218 Operationer på string insert - stoppar in annan sträng eller tecken på angiven position namn.insert(6, Zbigniew ); str.insert(eve.wherex-getx(), 1, char(eve.what)); erase - tar bort tecken från angiven position (angivet antal tecken): namn.erase(6, 9); str.erase(eve.wherex-getx()); replace - ersätter angiven del av strängen med en annan sträng: namn.replace(6, 9, Bo ); append - lägger till den andra strängen eller tecknet eller ett antal tecken: str.append(char(eve.what)); namn.append( den Trötte ); operator+= push_back operator+ andra sätt att uttrycka append på - konkatenerar två strängar och returnerar resultatsträngen substr - returnerar en kopia av en delsträng: string mellan = namn.substr(6, 8); Bild 219 5

6 Sökning i strängar Det finns många varianter av sökfunktioner: det sökta mönstret kan uttryckas som string, char * eller char; sökningen kan göras framlänges eller baklänges och kan göras i hela strängen eller begränsas till en del av den. Index för den hittade förekomsten returneras (eller string::npos om det sökta inte hittades) find - letar efter första förekomsten av angivet tecken eller sträng i angiven portion av strängen: string::size_type wstart = line.find( ); string::size_type wend = line.find(, wstart+1); string word = line.substr(wstart+1, wend-wstart); rfind - som find men letar efter sista förekomster (söker baklänges) find_first_of find_last_of find_first_not_of find_last_not_of strängargumentet till dessa betraktas som en mängd av teckenvärden där man letar efter den första (sista) förekomsten const string letters= abcd...zåäöabcd...zåäö ; string::size_type wstart=line.find_first_of(letters); string::size_type wend=line.find_first_not_of(letters, wstart); string word = line.substr(wstart, wend-wstart); Bild 220 Gränssnitt mot C-strängar I vissa fall kan man vilja använda C:s stränghantering på string-värden. T.ex. kan sscanf() vara bekvämt att använda i vissa situationer (C++ har motsvarande men mer begränsad funktionalitet i strängströmmar). För detta finns följande medlemsfunktioner i klassen string: c_str()- returnerar en pekare till en C-sträng som är allokerad lokalt i stringobjektet - man kan inte räkna med att den finns kvar och har korrekt värde efter nästa operation på string-objektet data() - som c_str() men utan det extra null-tecknet på slutet copy() - tar en char * som argument (skall peka ut ett allokerat och tillräckligt stort utrymme) och kopierar tecken till detta utrymme (utan null-tecken) Exempel: string line = Klockan är 14:15 ; int tim, min; sscanf(line.c_str(), Klockan är %d:%d, &tim, &min); Bild 221 6

7 Orientering om ström-biblioteket Ström-biblioteket utgör ett utbyggbart ramverk för att lätt kunna omfatta hantering av olika teckenkodningar, nya externa medier, regionala anpassningar o.s.v. Strömbiblioteket kan sägas bestå av två nivåer: strömklasser för formattering och parsing strömbuffertklasser för buffring, kodkonvertering och fysisk i/o program formatteringsnivån - IOStream-klasser transportnivån - Streambuffer-klasser externa medier Till detta tillkommer möjlighet att i strömklasser installera egna data och call-back - funktioner. Dessutom är alla dessa klasser mallar som instansieras med typen av tecken de skall hantera och teckentypens egenskaper. Här orienteras endast om grundläggande användning av strömklasserna instansierade för teckentypen char. Strömmar kan även ses som sekvenser av element (tecken) och det finns strömiteratorer i standardbiblioteket, dessa visas senare vid avhandling av iteratorer. Bild 222 stream-klasser basic_streambuf<> streambuf ios_base basic_ios<> ios basic_filebuf<> filebuf basic_stringbuf<> stringbuf basic_ostream<> ostream basic_istream<> istream basic_ofstream<> ofstream basic_ostringstream<> ostringstream ostrstream basic_fstream<> fstream basic_iostream<> iostream basic_ifstream<> ifstream basic_istringstream<> istringstream istrstream basic_stringstream<> stringstream Bild 223 7

8 Strömstatus class ios { public: typedef... iostate; static const iostate goodbit,eofbit,failbit,badbit; bool good() const; // Allt ok bool eof() const; // eof har inträffat bool fail() const; // Icke-fatalt fel har inträffat bool bad() const; // Fatalt fel har inträffat iostate rdstate() const; void clear(iostate f=goodbit); void setstate(iostate f); operator void *() const; // Icke-null om good()==true bool operator!() const; // true om fail()==true class failure; void exceptions(iostate forwhat); typedef... int_type; typedef... streamsize;... Bild 224 Output Medlemmar hos ostream: ostream& put(char c); ostream& write(const char *ptr, streamsize n); Överlagringar av operator<<: ostream& operator<<(ostream& os, int i); ostream& operator<<(ostream& os, double d); osv. Komplettering för en egendefinierad typ: class Rat{ int num, denum; friend ostream& operator<<(ostream& os, const Rat& r);... ; ostream& operator<<(ostream& os, const Rat& r){ return os << r.num << / << r.denum; Bild 225 8

9 Input Medlemmar hos istream: int_type get(); istream& get(char& c); istream& get(char *ptr, streamsize n, char delim= \n ); istream& getline(char *p, streamsize n, char delim= \n ); istream& ignore(streamsize n=1, int_type del=eof); istream& read(char *ptr, streamsize n); istream& putback(char c); istream& unget(); int_type peek(); Överlagringar av operator>>: ostream& operator>>(ostream& os, int& i); ostream& operator>>(ostream& os, double& d); osv. operator>> kan även överlagras för egnendefinierade typer (se nästa bild) I <string> definieras även istream& getline(istream& is, string& str); istream& getline(istream& is, string& str, char delim); Bild 226 Exempel: operator>> för Rational istream& operator>>(istream& is, Rational& r){ int n, d; if (is >> n) { char sep; is >> sep >> d; if (sep!= '/') is.clear(ios_base::badbit); if (is) r=rational(n, d); return is; Exempel på användning: int main(){ Rational r1; cout << "r1 > "; while (!(cin >> r1)){ cin.clear(); cin.ignore(256, '\n'); cout << "Fel\n"; Bild 227 9

10 Manipulatorer T.ex.: cout << setw(3) << setfill( - ) << 5; ger utskriften --5 #include <iomanip> setw(int w) setfill(char c) setprecision(int p) setbase(int b) endl flush // Nästa utskrift med bredden w // Utfyllnad med c // p siffrors noggranhet // Heltal skrivs ut i basen b // Lägg till \n och skriv ut // Skriv ut Bild 228 Filströmmar Filströmmar definieras i headerfilen <fstream> Klasserna heter ifstream, ofstream resp fstream. Medlemsfunktionerna är: void open(const char *, ios_base::opemode=...); bool is_open(), void close(); Exempel: fstream fil; fil.open( prog.cpp ); // Argumentet är en const char * eller fil.open( prog.cpp, ios_base::in ios_base::out); Flaggor för angivande av mode kombineras alltså med och kan vara: ios_base::in öppna för läsning ios_base::out öppna för skrivning ios_base::ate positionera vid filslutet ios_base::app öppna för tillägg på slutet ios_base::trunc ta bort innehållet ios_base::binary binärfil Om mode inte anges öppnas filen i default-mode (ifstream i in-mode o.s.v.) Det finns också konstruktorer som tar samma argument som open och öppnar filen ifstream fil( minfil.txt ); Destruktorer stänger öppna filer. Bild

11 Strängströmmar Strängströmmar definieras i headerfilen <sstream> ostringstream: Man kan skriva till en ostringstream som om den vore en ostream: ostringstream ostr; int i=133; ostr << Summa = << i; Man kan få en kopia av den resulterande strängen genom medlemsfunktionen str(): string s=ostr.str(); istringstream: Man kan läsa från en istringstream som om den vore en istream. Den kan kopplas till en sträng i konstruktorn eller genom att få en ny sträng genom anrop av medlemsfunktionen str(string): string line= 9:41 ; int h, m; char c; istringstream istr(line); istr >> h >> c >> m; istr.str( 10:05 ); istr >> h >> c >> m; stringstream: Kan användas för att både skriva till och läsa från (även omväxlande), givetvis kan man endast läsa vad som redan finns i strängen. Bild

Föreläsning Standardbiblioteket

Föreläsning Standardbiblioteket *:85/ID200V C++ HT07 Föreläsning 15-17 Standardbiblioteket Introduktion till standardbiblioteket Standardbiblioteket består av följande delar: behållarklasser med stödbibliotek algoritmbiblioteket med

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

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

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

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

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Övningar Dag 2 En första klass

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

Läs mer

Klasser och objekt i C#

Klasser och objekt i C# Klasser och objekt i C# Från klassdiagram till C#-klass till objekt initierat av en konstruktor. Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med

Läs mer

Kapitel 5. Strömmar. Utmatning

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

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

Idag: Dataabstraktion

Idag: Dataabstraktion Idag: Dataabstraktion Hur använder vi det vi hittills kan om Scheme för att realisera (implementera) sammansatta data? Hur separerar man datastrukturen från resten av ett program så att ändringar i datastrukturen

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

C++ standardbibliotek Tecken- och stränghantering

C++ standardbibliotek Tecken- och stränghantering C++ standardbibliotek Tecken- och stränghantering Tommy Olsson, Institutionen för datavetenskap, Linköpings universitet, 2012 Funktioner som presenteras här kan användas för teckenklassificering, teckenomvandling,

Läs mer

6 In- och utmatning, strömmar

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

Läs mer

Att använda pekare i. C-kod

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

Läs mer

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

( ostream ) << ( annan datatyp ) : ostream

( ostream ) << ( annan datatyp ) : ostream 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i C++ med hjälp av strömmar. Vi har tidigare sett exempel på utskrift. Vi kommer i det här avsnittet även ta upp inmatning

Läs mer

Strömmar och strängar

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

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

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

Introduktion till streams

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

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

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

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

Läs mer

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson Högskolan Dalarna sid 1 av 5 Lösningsförslag till TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING 5p,för D2 1999-01-14 1. a) Systemavgränsningen är dokument som innehåller en kortfattad beskrivning av vad som

Läs mer

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

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

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng

Collections Collections Envisa objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng Klasser som skall bli "envisa" Klassen Anstelld skall

Läs mer

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

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

Läs mer

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

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

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

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

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

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

Lathund, procent med bråk, åk 8

Lathund, procent med bråk, åk 8 Lathund, procent med bråk, åk 8 Procent betyder hundradel, men man kan också säga en av hundra. Ni ska kunna omvandla mellan bråkform, decimalform och procentform. Nedan kan ni se några omvandlingar. Bråkform

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

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

Administrera utskick på utbildningstillfälle

Administrera utskick på utbildningstillfälle Administrera utskick på utbildningstillfälle Man kan administrera utskick för ett utbildningstillfälle på följand tre sätt: Via knappen Skapa utskick till markerade i under fliken Deltagare Vi länken Skicka

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

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

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

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

DD2387 Programsystemkonstruktion med C++ Tentamen 2

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.

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

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

TDDC76 - Programmering och Datastrukturer

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

Läs mer

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

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

Läs mer

TDIU20 - Objektorienterad programmering i c++ - föreläsning 3

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

Läs mer

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight Handledning för digitala verktyg Talsyntes och rättstavningsprogram Vital, StavaRex och SpellRight Elevens namn:.. Skola: Datum:.. Varför behövs en handledning? Denna handledning är tänkt att användas

Läs mer

Gissa det hemliga talet

Gissa det hemliga talet Laborationsanvisning Gissa det hemliga talet Steg 1, laborationsuppgift 1 Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Problem 4 Modell 4 Den uppräkningsbara typen Outcome 5 Strukturen

Läs mer

Föreläsning 3: Vector och struct

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

Läs mer

Träning i bevisföring

Träning i bevisföring KTHs Matematiska Cirkel Träning i bevisföring Andreas Enblom Institutionen för matematik, 2005 Finansierat av Marianne och Marcus Wallenbergs Stiftelse 1 Mängdlära Här kommer fyra tips på hur man visar

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Tillämpad programmering

Tillämpad programmering Tillämpad programmering C++ polymorfism overload, cast, ärvning, template Johan Montelius 1 polymorfism Att se och använda en variabel, ett objekt eller en funktion i olika former overload olika versioner

Läs mer

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv Kapitel 2 Klasser Medlemmar Arv, medlemmar och arv Klasser, åtkomst Medlemmar, medlemsfunktioner, inline och destruktorer this-pekaren Arv, åtkomst Multipelt arv, virtuell basklass Konstanta funktioner

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

Strängar. Strängar (forts.)

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

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

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: 2D1387, Programsystemkonstruktion med C++ 00/01 1 Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: Klasser, åtkomst Medlemmar, medlemsfunktioner, inline Slide 1 Konstruktorer Destruktorer

Läs mer

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

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

Läs mer

DOP-matematik Copyright Tord Persson. Bråktal -3-2 -1 0 1 2 3. Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr 10 -3-2 -1 0 1 2 3

DOP-matematik Copyright Tord Persson. Bråktal -3-2 -1 0 1 2 3. Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr 10 -3-2 -1 0 1 2 3 Bråktal Uppgift nr En limpa delas i 4 lika stora delar. Hur stor del av limpan blir varje del? Uppgift nr 2 Hur många tiondelar behövs för att det skall räcka till en hel? Uppgift nr Hur läser man ut bråket

Läs mer

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion Introduktion Den objektorienterade modellen Grundläggande begrepp en som abstraktion er -objekt-attribut - metoder er Vad är ett objekt? Relationer mellan objekt/klasser Arv Arv (- är en) Multipelt arv

Läs mer

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = 7 + 8 = 15.

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = 7 + 8 = 15. 1 Matematiska Institutionen KTH Lösningar till tentamensskrivning på kursen Diskret Matematik, moment A, för D och F, SF161 och SF160, den juni 008 kl 08.00-1.00. DEL I 1. (p) Lös rekursionsekvationen

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

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

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

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

Läs mer

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument Distributiva lagen a(b + c) = ab + ac 3(x + 4) = 3 x + 3 4 = 3x + 12 3(2x + 4) = 3 2x + 3 4 = 6x + 12

Läs mer

Tentamen 2007-08-22, dtaa94, Introduktion till C++

Tentamen 2007-08-22, dtaa94, Introduktion till C++ Institutionen för informationsteknologi och medier Sid:1(3) Introduktion till C++ Martin Kjellqvist Lösningsansatser för Tentamen 2007-08-22, dtaa94, Introduktion till C++ Gränser: G: 20p. VG: 34p. Max:

Läs mer

Föreläsning 5-7 Operatoröverlagring

Föreläsning 5-7 Operatoröverlagring *:85/ID200V C++ HT07 Föreläsning 5-7 Operatoröverlagring Operatoröverlagring Följande operatorer kan inte överlagras: ::..*?: sizeof typeid Alla övriga operatorer kan överlagras. Följande operatorer måste

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

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. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

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

Läs mer

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

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

Läs mer

Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT 2013 1 / 24

Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT 2013 1 / 24 Mera om generik Innehåll Generik och arv Wildcards Vektorer och generik Generiska metoder EDA690 (Mera om generik) HT 2013 1 / 24 Begreppet subtyp/supertyp i Java Supertyper för en viss klass C är alla

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

Objektorienterad programmering i Java

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

Läs mer

Enkla datatyper minne

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

Läs mer

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

912 Läsförståelse och matematik behöver man lära sig läsa matematik? 912 Läsförståelse och matematik behöver man lära sig läsa matematik? Med utgångspunkt från min egen forskning kring läsförståelse av matematiska texter kommer jag att diskutera olika aspekter av läsning

Läs mer

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

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

Läs mer

Snapphanalegen. Firekángabogena. Spelregler. (4 spelare)

Snapphanalegen. Firekángabogena. Spelregler. (4 spelare) Snapphanalegen Firekángabogena Spelregler 1 800 (4 spelare) 800 är ett spel med anor från 1400-talet. Spelet ställer stora krav på spelarnas skicklighet. Fyra deltagare spelar ihop parvis. Spelet cirkulerar

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äsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck Josef Svenningsson Tisdag 13/1 Överlagring Ur klassen Math: public static max(int a, int b) public static max(double

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

Föreläsning 5: Rekursion

Föreläsning 5: Rekursion Föreläsning 5: Rekursion Vi har tidigare sett att man kan dela upp problem i mindre bitar med hjälp av underprogram, vilket är ett utmärkt sätt att lösa problem. Detta är ganska lätt att rita upp för sig

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

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

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

Skizz till en enkel databas

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

Läs mer

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

Föreläsning 4: Filer och strömmar

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

Läs mer

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

Läs mer

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci... Introduktion till programmering Standardfunktioner Tecken och strängar Utskrifter och effekter Föreläsning 2 Prelude Alla fördefinierade funktioner vi använder definieras i modulen Prelude. Denna modul

Läs mer

Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan

Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan Vad är en klass? Övnin 2 Daens ämne är klasser och hur de hanteras. Vi kommer att bya upp ett exempel stevis och illustrera en hel del möjliheter, men också problem och saker man bör vara vaksam på. ffl

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

Individuellt Mjukvaruutvecklingsprojekt

Individuellt Mjukvaruutvecklingsprojekt Individuellt Mjukvaruutvecklingsprojekt RPG-spel med JavaScript Författare Robin Bertram Datum 2013 06 10 1 Abstrakt Den här rapporten är en post mortem -rapport som handlar om utvecklandet av ett RPG-spel

Läs mer