TDIU01 - Programmering i C++, grundkurs

Relevanta dokument
C++ - En introduktion

TDDC76 - Programmering och Datastrukturer

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer

TDIU01 - Programmering i C++, grundkurs

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

C++ - En introduktion

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

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 Programmering i C++

Föreläsning 3: Vector och struct

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

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

Tentamen EDAF30 Programmering i C++

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

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

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

Introduktionslaboration

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Introduktionslaboration

Arrayer (fält)

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

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

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

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

Innehåll. Pekare. Datatyper Pekare, Arrayer och Referenser. Pekare Syntax. Pekare Syntax, operatorer. 4. Standard-containers. Pekare och arrayer

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

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++

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

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

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

4 Sammansatta datatyper

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Tommy Färnqvist, IDA, Linköpings universitet

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

TDDI14 Objektorienterad programmering

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

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

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

TDIU01 - Datortenta (DAT2)

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

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

Skizz till en enkel databas

Innehåll. Pekare Exempel

Objektorienterad programmering i Java I

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

Innehåll. Pekare Exempel

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

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

Intro till standardbiblioteket. Eric Elfving

Tentamen Objektorienterad Programutveckling med C++

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

Funktionens deklaration

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

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Innehåll. Pekare Syntax

Tentamen i DD2387 Programsystemkonstruktion med C++

C++ Objektorientering - Klasser. Eric Elfving

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

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

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

6.1 Kompilering och lite grundläggande information

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

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

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

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

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Innehåll. 1 volatile. 2 Kuriositeter. 3 Klasser och arv. 4 Råd och tumregler. 5 Mer om standard-containers. Trigraphs

DD2387 Programsystemkonstruktion med C++ Tentamen 2

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

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

Innehåll. 1 Funktionsmallar. 2 Pekare och konstanter. 3 Typomvandlingar. struct Name { string s; //... };

Föreläsning 1: Momstabellen i C++

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

TDIU01 - Datortenta (DAT2)

TDDC76 - Programmering och Datastrukturer

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion

Tentamen C++-programmering

7 Templates och Exceptions

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

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

Föreläsning 3-4 Innehåll

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Tillämpad programmering

1 Namnkontroll (NameControl)

Arrayer med primitiva datatyper

Laboration A Objektsamlingar

Transkript:

. 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; ; Book b; b.title = "C++ Direkt"; b.author = "Skansholm"; b.pages = 657; Man kan med hjälp av poster gruppera data som hör bra ihop till en datatyp. I C++ använder man sig av det reserverade ordet struct för att skapa en post. Posten kan sedan användas som en vanlig datatyp. En post är ett exempel på en sammansatt datatyp. Posten har namngivna fält som man kommer åt med punktoperatorn.

Poster 3/17 struct Book string title; string author; int pages; ; Book b; b.title = "C++ Direkt"; b.author = "Skansholm"; b.pages = 657; b: Book string title:. "C++ Direkt" string author: "Skansholm" int pages: 657

Poster 4/17 Initiering och tilldelning // Initiering, fälten fylls från vänster... Book primer "C++ Primer", "Lippman", 885; Book b2 "Professional C++"; // författare och antal sidor får ett // "nollvärde" (tom sträng resp. 0) b2 = primer; // Tilldelning, alla delar kopieras

Poster 5/17 Poster och funktioner Precis som andra datatyper kan man skicka poster till funktioner. Vi har en komplicerad datatyp (const-)referens bör användas.

Poster 6/17 Poster och funktioner Book my_book; cout << "Mata in information om en bok" << endl; input(my_book); // Låt användaren mata in information cout << "Inmatat data:" << endl; print(my_book); // Skriv ut bokens information

Poster 7/17 Poster och funktioner void print(const Book & b) cout << "Titel: " << b.title << '\n' << "Författare: " << b.author << '\n' << "Antal sidor: " << b.pages << endl; void input(book & b) cout << "Titel: "; cin >> b.title; cout << "Författare: "; cin >> b.author; cout << "Antal sidor: "; cin >> b.pages;

Vektorer 8/17 Poster är bra om man har olika data som på något sätt hör bra ihop. Vektorer används om man har flera värden av samma datatyp som hör bra ihop. En vektor deklareras på formatet vector<datatyp> namn, där datatyp är den typ av värden man vill lagra i vektorn och namn är det namn man vill ha på sin vektor.

Vektorer 9/17 En vektor sägs ha element som man kan komma åt genom indexering (varje element har en given position, ett index) Från början är vektorn tom, man kan lägga till värden med hjälp av.push_back(värde) #include <vector> using namespace std; vector<int> v; v.push_back(3); v.push_back(5); v.push_back(7); v.push_back(4); v.push_back(5); vector<int> v:. 3 5 7 4 5 0 1 2 3 4

Vektorer 10/17 Föregående var jobbigt, vi kan initiera vår vector med värden: #include <vector> using namespace std; vector<int> v 3,5,7,4,5;

Vektorer 11/17 Vi kommer åt element med hakparenteser eller at-funktionen #include <vector> #include <iostream> using namespace std; vector<int> v 2,3,5,7; cout << v[0] << endl << v.at(1) << endl << v.at(2) << endl << v.at(3) << endl; 2 3 5 7 at rekommenderas då den kontrollerar att elementet verkligen finns!

Vektorer 12/17 Man vill ofta iterera över sin vektor (gå igenom alla element) Då är funktionen size tillsammans med en for-loop bra att ha #include <vector> #include <iostream> using namespace std; vector<int> v 1, 5, 6, 9, 10; for ( int i ; i < v.size(); ++i ) cout << v[i] << endl; // eller v.at(i)

Vektorer 13/17 I C++11 introducerades ett nytt sätt att iterera över en vektor - den intervallbaserade for-loopen #include <vector> #include <iostream> using namespace std; vector<int> vec 1, 5, 6, 9, 10; for ( int val : vec ) cout << val << endl; val blir i detta fall en kopia av varje värde i vec

Vektorer 14/17 Om man vill kunna ändra på värdet i vektorn kan man skapa referenser (som i funktioner) #include <vector> using namespace std; vector<int> vec 1, 5, 6, 9, 10; for ( int & val : vec ) ++val;

Vektorer 15/17 Jämförelse Både vektorer och strängar jämförs elementvis. Strängjämförelse fungerar alfabetiskt (tänk ordlista) enligt teckentabellen ('A'<'a') Vektorjämförelse fungerar så länge typen som lagras kan jämföras..2. 7 2 < 2 10

Vektorer och strängar 16/17 Vektorer och strängar har många likheter Följande funktioner fungerar för både vektorer och strängar (x kan bytas ut mot en variabel av typen string eller vector<datatyp>) x[i] x.at(i) x.size() x.clear() x.empty() ta fram element i ta fram element i (kontrollerad) Antal element i x Töm x (ta bort alla element) Ger true om x är tom

.. www.liu.se