TDDB28 OH Föreläsning: C++ 1

Storlek: px
Starta visningen från sidan:

Download "TDDB28 OH Föreläsning: C++ 1"

Transkript

1 TDDB28 OH Föreläsning: C++ 1 C++ Ursprungligen baserat på C med inspiration från Simula 67 och Algol 68. Stora tillägg till C (ett litet, uttrycksorienterat, imperativt språk för systemprogrammering) klasser och dessas OO-relaterade aspekter (class) undantag hantering av exceptionella händelser (exception) mallar generella kodmallar för funktioner och klasser (template) namnrymder ett modulbegrepp (namespace) något striktare datatypning överlagring av funktionsnamn (overloading) strömbiblioteket för in- och utmatning övriga standardbiblioteket: string, vector, stack,... Kompilator med preprocessor. Standard TDDB28 OH Föreläsning: C++ 2 Ett första programexempel // Det klassiska C-programmet i C++-tappning #include <iostream> using namespace std; // inkluderingsdirektiv // öppna standardnamnrymden cout << "Hello, world" << endl; return 0; Översättningsmodell: källkod -> preprocessor -> kompilator -> länkare -> körbart program TDDB28 OH Föreläsning: C++ 3 Enkel in- och utmatning strömbiblioteket #include <iostream> #include <iomanip> using namespace std; int i; cout << "Skriv ett heltal < 1000: "; cin >> i; cout << "Det var " << setw(3) << i << endl; Strömbiblioteket kan hantera in- och utmatning av alla grundläggande datatyper. Standardfiler cin, cout, cerr och clog Funktioner för in- och utmatning, speciellt operatorerna >> och << (formaterande) Erbjuder olika möjligheter att formatera utskrifter manipulatorer

2 TDDB28 OH Föreläsning: C++ 4 Programstruktur Ett enkelt C++-program består av en eller flera funktioner. int max(int x, int y) return (x > y? x : y); int i, j; cout << "Skriv två heltal: "; cin >> i >> j; int m = max(i, j); cout << m << " var störst."; return 0; Flat struktur funktioner kan ej nästlas. Program kan delas upp på flera filer, typiskt inkluderingsfiler ( header files ) med datatypdefinitioner och funktionsdeklarationer (*.h) tillhörande implementeringfiler (*.cc, *.cpp, m.fl.) Om man använder klasser kan man göra en objektorienterad programstruktur, genom att skapa klassobjekt som samarbetar genom att anropa varandras medlemsfunktioner. TDDB28 OH Föreläsning: C++ 5 Uppdelning på filer file as module // Fil: max.h #ifndef MAX_H #define MAX_H int max(int, int); #endif // Fil: max.cc #include "max.h" int max(int x, int y) return (x > y? x : y); // Fil: test.cc #include <iostream> #include "max.h" using namespace std; int m = max(i, j); Ha alltid en inkluderingsgard i inkluderingsfiler. TDDB28 OH Föreläsning: C++ 6 Datatyper i C++ Dataobjekt variabler och konstanter används för att hantera värden. De deklareras med namn och en specifik datatyp: char c; // teckenvariabel c int i = 1; // heltalsvariabel i som initieras till 1 const double PI = ; // flyttalskonstant PI Två huvudkategorier av datatyper: Grundläggande datatyper ( fundamental types ) Sammansatta datatyper ( compound types )

3 TDDB28 OH Föreläsning: C++ 7 Variabel- och konstantdeklarationer const double PI = ; // konstant på filnivå void print_area(double r) // funktionsparameter const char text[] = "Arean = "; // lokal konstant cout << text << PI * r * r << endl; double radius; // lokal variabel cout << "Ge en cirkelradie: "; cin >> radius; print_area(radius); // parameteröverföring TDDB28 OH Föreläsning: C++ 8 Översikt grundläggande typer fundamental types arithmetic types void char integral types wchar_t enum integer types bool floating point types float double long double signed integer types signed char short int int long int unsigned integer types unsigned char unsigned short int unsigned int unsigned long int TDDB28 OH Föreläsning: C++ 9 Datatypning Typlikhet och typomvandling är viktiga aspekter i ett språk. De grundläggande datatyperna i C++ är distinkta typer. De flesta namngivna, sammansatta datatyper inkl. klasser är distinkta typer. Uttryck av en given typ kommer att automatiskt kunna omvandlas i många sammanhang: conversions kan leda till problem promotions säkra Uttrycklig typomvandling kan göras fritt (och på egen risk) static_cast<till-typ>(x) reinterpret_cast<till-typ>(x) dynamic_cast<till-typ>(x) mellan relaterade typer (t.ex. olika pekartyper) mellan ej relaterade typer (t.ex. heltal till pekare) inom en klasshierarki (t.ex. från basklass till subklass) const_cast<till-typ>(x) tar bort const (!)

4 TDDB28 OH Föreläsning: C++ 10 Uttryck och operatorer Möjligheterna att komponera uttryck är omfattande. Några enkla exempel x = 3.25 tilldelningsuttryck 2 * pi * r multiplikation, sammansatt uttryck -pi negation line[21] indexeringsuttryck name.length medlemsval sin(pi) funktionsanrop x < y relationsuttryck ::x räckviddsbestämning static_cast<int>(x) typomvandling TDDB28 OH Föreläsning: C++ 11 Sammansatta uttryck prioritet beräkningsordning Då sammansatta uttryck beräknas inverkar flera regler i språket. Alla operatorer är inordnade i en hierarki med prioritetsnivåer En operator med högre prioritet har företräde jämfört med en operator med lägre prioritet a + b * c beräknas: a + (b * c) Då operatorerna i ett sammansatt uttryck har samma prioritet gäller den aktuella nivåns beräkningsriktning, associativitet (vänster->höger eller höger->vänster) a + b - c beräknas: (a + b) - c Parenteser kan införas för att ange en annan beräkningsordning. (a + b) * c Beräkningsordningen för operander är i de flesta fall ospecificerad, liksom beräkningsordningen för funktionsargument! TDDB28 OH Föreläsning: C++ 12 Satser Det finns ett flertal olika slags satser: deklarationssatser uttryckssatser sammansatt sats, blocksats selektionssatser repetitionssatser hoppsatser // sammansatt sats const double PI = ; // deklarationssatser int i, j = 0; i = j + 1; j++;... // uttryckssats

5 TDDB28 OH Föreläsning: C++ 13 Selektion, repetition och hopp Selektion (val) representeras av två satser if switch För repetition (iteration) finns tre satser for while do-while Hopp finns i fyra former goto return break continue Det finns ytterligare några former av satser. TDDB28 OH Föreläsning: C++ 14 If-satsen Villkorsstyrt val av alternativa programavsnitt. int x, y; cout << "Ge två heltal: "; cin >> x >> y; cout << "Största värdet var "; if (x > y) cout << x << endl; else cout << y << endl; Styrvillkoret mellan parenteserna beräknas först, true eller false. Om värdet är sant utförs satsen mellan if och else if-grenen. Om värde är falskt utförs satsen efter else, else-grenen. else-delen är valfri (används vid behov). TDDB28 OH Föreläsning: C++ 15 Blocksats om fler än en sats ska finnas där en sats kan förekomma if (top > 0) top = top - 1; return stack[top]; else cerr << "Stacken är tom" << endl; exit(1); Detta behov av blocksatsen gäller samtliga styrsatser!

6 TDDB28 OH Föreläsning: C++ 16 Switch-satsen Ett mångförgrenat val styrt av ett heltalsuttryck. char c; cout << "Välj j = JA, n = NEJ: "; cin >> c; switch (c) case j : case J : cout << "Du har valt JA"; break; case n : case N : cout << "Du har valt NEJ"; break; default: cout << "Fel val!"; break; Styruttrycket beräknas. Om det finns en case med samma värde fortsätter exekveringen efter denna case. Om ingen case passar utförs default. break avbryter exekveringen av switch, liksom om exekveringen når avslutande. Varning för fall-through! TDDB28 OH Föreläsning: C++ 17 While-satsen While-satsen är en förtestad, villkorsstyrd slinga int i = 0; int sum = 0; while (sum < MAX / 2) i = i + 1; sum = sum + i; cout << "summa = " << sum << ", i = " << i << endl; Styrvillkoret beräknas först. Om styruttrycket är sant utförs satsen/satsblocket, varefter styruttrycket åter beräknas. while-satsen avbryts då styruttrycket blir falskt. TDDB28 OH Föreläsning: C++ 18 Do-satsen Do-satsen (eller do-while) är en eftertestad, villkorsstyrd slinga. int x; do cout << "Skriv ett heltal: "; cin >> x; cout << "Du skrev " << x << endl; while (x > 0); Satsen/satsblocket mellan do och while utförs. Styruttrycket mellan parenteserna efter while beräknas. Om styruttrycket är falskt avbryts do-satsen och satsen efter utförs. Om styruttrycket är sant, upprepas från första punkten ovan.

7 TDDB28 OH Föreläsning: C++ 19 For-satsen For-satsen är en förtestad, villkorsstyrd slinga. int sum = 0; for (int i = 1; i <= 10; i++) sum = sum + i; cout << "Summan av 1, 2, 10 är " << sum << endl; Initieringssatsen beräknas variabeln i deklareras och nollställs. Avbrottsvillkoret beräknas om falskt avslutas for-satsen. Satsen/satserna som hör till for-satsen utförs. Sista uttrycket i for-satsens styrdel utförs i räknas upp med 1 varefter avbrottsvillkoret åter beräknas (andra punkten ovan). TDDB28 OH Föreläsning: C++ 20 Hoppsatser Det finns fyra former av hoppsatser i C++: goto innebär hopp till ett namngivet läge i programmet. return returnerar från funktion. enbart return för funktioner som returnerar void. return uttryck för funktioner som ska returnera ett objekt. break avbryter for, while och do-while, samt switch. continue medför att exekveringen av satsdelen i en for, while eller do-while avbryts men inte själva slingan nästa steg i repetitionen påbörjas. För att avbryta programkörning finns standardfunktionen void exit(int) från cstdlib. TDDB28 OH Föreläsning: C++ 21 Exempel på break och continue for (int i = 0; i < n; i++) if ( hoppa över resten av satserna men fortsätt med nästa steg hoppa till styruttrycket) continue; if ( avsluta for-satsen helt ) break; // Hit kommer man vid continue // Hit kommer man vid break

8 TDDB28 OH Föreläsning: C++ 22 Funktionsdefinition och funktionsdeklaration En funktionsdefinition: double mean(double x, double y) return ((x + y) / 2); Funktionsdeklarationer, prototyper: double mean(double x, double y); double mean(double, double); extern double mean(double, double); TDDB28 OH Föreläsning: C++ 23 Parameteröverföring Värdekopiering call by value int max(int x, int y) return (x > y? x : y); Referensöverföring call by reference void swap(int& x, int& y) const int old_x = x; x = y; y = old_x; (Även vanliga variabler kan vara av referenstyp) TDDB28 OH Föreläsning: C++ 24 Förvalda argument för funktionsparametrar Används om inget motsvarande argument ges i ett anrop. int increment(int value, int amount = 1) return value + amount; Anrop: cout << increment(5, 2) << endl; // 7 cout << increment(7) << endl; // 8

9 TDDB28 OH Föreläsning: C++ 25 Överlagring av funktionsnamn Flera funktioner kan ges samma namn. void print(int value); void print(double value); void print(const char* string); Kompilatorn väljer den som passar ett anrop bäst. TDDB28 OH Föreläsning: C++ 26 Sammansatta datatyper Sammansatta datatyper kan konstrueras på följande sätt (inte helt fullständigt). Fält ( array ) är indexerade datatyper bestående av objekt av samma typ. Funktioner har parametrar av olika typer och returnerar void (inget) eller ett objekt av en viss typ. Pekare till void (generell pekare) eller till objekt eller funktion av en viss typ. Referens till objekt eller funktion av en viss typ. Klass (class och struct) som består av objekt av olika typ, även funktioner. Union (union, speciell slags klasser). Uppräkningar (enum) Pekare till icke-statiska medlemmar. Dessa kan kombineras rekursivt för att konstruera komplexa datatyper och datastrukturer. TDDB28 OH Föreläsning: C++ 27 Uppräkningstyper enum En uppräkning har en värdemängd bestående av namngivna heltalskonstanter. enum Direction left, right, up, down ; För en uppräkning gäller att den är en distinkt typ, skild från alla andra typer. att dess namn kan användas som ett datatypsnamn. att den har en underliggande typ som är en heltalstyp. värdena i en uppräkning representeras standardmässigt med 0, 1, 2, kan också uttryckligen deklareras att representeras med andra värden.

10 TDDB28 OH Föreläsning: C++ 28 Uppräkning med explicit angivna underliggande värden: enum Colour Red = 1, Yellow, Blue = 4, Green = Yellow + Blue ; Värdet för en litteral eller ett objekt av uppräkningstyp kan omvandlas till heltal: Colour col = Red; // Deklaration och initiering int i = Yellow; // Tillåtet; Yellow omvandlas till 2 Men det finns ingen automatiskt omvandling från heltal till uppräkningsvärde: col = 5; // Typfel! Uttrycklig typomvandling kan dock göras: col = static_cast<color>(21); col = Colour(21); col = (Colour) 21; // senaste skriket // funktionsform // "cast" TDDB28 OH Föreläsning: C++ 29 Fältstrukturer [] Fält är sammansatta av element av samma datatyp. int vector[4] = 1, 2, 3, 4; // Initiering med aggregat double matrix[3][4]; // Tvådimensionellt fält matrix[2][3] = vector[1]; // Indexering av element I deklarationen anges storleken på fältet, ej intervall. Fältelement indexeras alltid från 0 och uppåt (int). Alla slags fält kan initieras med ett fältaggregat. har alltid statiska komponenter. behöver ej vara uttömmande avseende alla element. Använd gärna i stället vector: minnet ökas/minskas alltefter behovet högre abstraktionsnivå (djup tilldelning med = fungerar t.ex.) TDDB28 OH Föreläsning: C++ 30 Pekare * Pekarobjekt kan innehålla minnesadresser till andra objekt. int i = 4711; // Heltalsvariabel int* p = &i; // Pekare till heltal adressoperatorn Användning: cout << i << endl; // 4711 cout << p << " -> " << *p; // 0xeffff828 -> 4711 Med adressoperatorn & kan man bl.a. få adressen till en variabel, ett element i ett fält, en komponent i en post,... Avrefereringsoperatorn * är dess invers, avrefererar en pekare ger det objekt, den minnescell, som en pekare anger.

11 TDDB28 OH Föreläsning: C++ 31 Referens & int i = 4711; int& ir = i1; // Referens till heltal implicit adressberäkning En referens måste alltid bindas då den definieras kan sedan inte ändras. Möjlig användning (kanske inte så realistiskt): ir = 11147; cout << ir << "==" << i << endl; // I princip tilldelning av i // Implicit avreferering En form av alias. Främsta användning är som typ för funktionsparameter och funktionsreturvärde. TDDB28 OH Föreläsning: C++ 32 Poststrukturer struct Den grundläggande användningen av struct är att definiera posttyper. struct Person char name[20]; int age; ; Person p = "Per Post", 21 ; // Initiering med postaggregat Punktoperatorn används för att referera till komponenter: p.age = p.age + 1; cout << p.name << " är " << p.age << " år."; // Grattis på födelsedagen! Två användbara sammansatta datatyper med struct är fält och struct samt struct och pekare. TDDB28 OH Föreläsning: C++ 33 Länkade datastrukturer länkad lista: struct + pekare struct Person string name; int age; Person* next; ; Dynamisk minnestilldelning görs med operatorn new: Person* pp = new Person; Operatorn -> används för åtkomst av medlemmar: pp->name = "Per Post"; pp->age = 21; pp->next = 0; // (*pp).age // Tompekare (använd inte NULL) Minne återlämnas med operatorn delete: delete pp; // Pekaren pp oförändrad dock!

12 TDDB28 OH Föreläsning: C++ 34 typedef Ett sätt att definiera typnamn. struct Person string unsigned int Person* ; name; age; next; typedef Person* List; // För att slippa asterisken List head = 0; // Deklaration av personlista Det enkla namnet List har klara fördelar framför det sammansatta Person*. TDDB28 OH Föreläsning: C++ 35 Sätta in sist i lista void append(const string& name, int age, List& l) Person* pp = new Person; pp->name = name; pp->age = age; pp->next = 0; if (l == 0) // tom lista l = pp; return; // Det finns minst en nod, finn den sista noden i listan Person* p = l; while (p->next!= 0) p = p->next; p->next = pp; TDDB28 OH Föreläsning: C++ 36 Strömbiblioteket Ett klassbaserat bibliotek för att läsa och skriva strömmar. Strömtyper (klasser) inströmmar istream, ifstream utströmmar ostream, ofstream in- och utströmmar iostream, fstream strängströmmar istringstream, ostringstream datatyper för att deklarera strömvariabler som kan kopplas till filer för att läsa/skriva sådana Operationer för att öppna och stänga strömmar att läsa och skriva strömmar (text, binärt) att testa strömmars tillstånd (filslut, feltillstånd) manipulera textströmmar (in- och utmatningsformat, sätta in radslut, strängslut, etc.)

13 TDDB28 OH Föreläsning: C++ 37 Användning av strömbiblioteket Det finns flera inkluderingar som hör till strömbiblioteket, t.ex. #include <iostream> strömklasserna istream, ostream och iostream de fördefinierade standardströmmarna cin, cout, cerr och clog oparametriserade manipulatorer, t.ex. endl, noskipws, oct #include <fstream> strömklasserna ifstream, ofstream och fstream för att hantera filer som strömmar fstream inkluderer i sin tur iostream #include <sstream> strängströmsklasserna istringstream och ostringstream #include <iomanip> parametriserade manipulatorer, t.ex. setw(10), setprecision(2) TDDB28 OH Föreläsning: C++ 38 Skriv- och läsoperatorerna << och >> Kan användas på standardströmmarna, filströmmar och strängströmmar för formaterad in- och utmatning. cout << x; Kan användas för att skriva grundläggande datatyper och strängar på utströmmar. Omvandling från intern representation till textrepresentation. cin >> x; Kan användas för att läsa grundläggande datatyper och strängar från inströmmar. Läsning sker på fritt format inledande vita tecken ignoreras. Omvandling från text till interna representation. TDDB28 OH Föreläsning: C++ 39 Funktioner för att läsa och skriva tecken char c; is.get(c); läs nästa tecken (ingen förbiläsning av blanka) från inströmmen is till variabeln c is.putback(c); lägg tillbaka tecknet i variabeln c i inströmmen is c = is.peek(); hämta nästa tecken i inströmmen is utan att ta ut det is.ignore(255, \n ) läs förbi maximalt 255 tecken i inströmmen is eller till radslut om det inträffar dessförinnan os.put( A ); skriv tecknet A i utströmmen os

14 TDDB28 OH Föreläsning: C++ 40 Funktioner för att läsa och skriva strängar string s; getline(cin, s); C-strängar char buf[80]; is.read(buf, 80); läs 80 tecken från is och lagra i buf os.write(buf, 20); skriv de 20 första tecknen i buf på os is.getline(buf, 80); läs is till radslut, eller max 80 tecken (eventuella inledande vita tecken läses normalt förbi) is.getline(buf, 80, ); läs is till mellanrumstecken, dock max 80 tecken TDDB28 OH Föreläsning: C++ 41 Formatering Används för att ange önskat dataformat vid utskrifter. Några exempel: os.width(n); sätter fältvidden för nästa, men endast nästa, utskrift på utströmmen os till n teckens bredd os.fill(c); sätter utfyllnadstecknet till c för os (mellanrumstecken är standard) os.precision(p); sätter önskad precision (antalet decimaler för flyttal) till p för strömmen os För var och en av dessa finns en motsvarande parametriserad manipulator. TDDB28 OH Föreläsning: C++ 42 Manipulatorer Det finns två kategorier av manipulatorer. Utan parametriserade direkt tillgängliga genom inkludering av iostream Exempel: ws endl ends flush oct dec hex Parametriserade kräver att även iomanip inkluderas Exempel: setbase(b) setw(n) setfill(c) setprecision(p) Används med läs- och skrivsoperatorerna, t.ex.: cout << setw(4) << x << endl; Vissa manipulatorers effekt gäller endast för nästa strömoperation.

15 TDDB28 OH Föreläsning: C++ 43 Statusinformation för strömmar Operationer för att detektera feltillstånd och andra tillstånd hos strömmar.! s returnerar sant om strömmen s är i feltillstånd if (! cin) cerr << "Fel i cin" << endl; exit(1); s.eof() s.fail() s.bad() s.good() s.clear() sant om filslut inträffat för strömmen s sant om ett mindre allvarligt fel inträffat för strömmen s sant om ett allvarligt fel inträffat för strömmen s sant om inga fel inträffat för strömmen s återställer strömmen s till normaltillstånd (gör ej detta vid allvarliga fel) TDDB28 OH Föreläsning: C++ 44 Filströmmar Används för att läsa och skriva filer på sekundärminne. Filobjekt av typen ifstream kan enbart läsas Filobjekt av typen ofstream kan enbart skrivas Filobjekt av typen fstream kan både läsas och skrivas Operationer öppna filström stänga filström positionering i filström (tar vi inte upp nu) allmäna strömoperationer enligt tidigare, t.ex. insättnings- och uttagsoperatorerna. Det finns en del deklarationer som rör bl.a. filströmmar i inkluderingen <stream> TDDB28 OH Föreläsning: C++ 45 Öppna och stänga filströmmar Två möjligheter att öppna en fil. Öppna filen direkt i samband med att ett filströmobjekt deklareras. ifstream input("data.txt"); if (! input.good()) input.close(); cerr << "filen DATA.TXT kunde inte öppnas" << endl; exit(1); Deklarera först filströmmen och öppna sedan filen med operationen open() ifstream input; input.open("data.txt"); En filström stängs med operationen close() input.close();

TDDC76 PoD OH Föreläsning C++ 1 C++

TDDC76 PoD OH Föreläsning C++ 1 C++ TDDC76 PoD OH Föreläsning C++ 1 C++ bred användning inom programvaruindustrin tillgängligt överallt generellt effektiv kod god kontroll över minnesanvändning ny standard 2011 C++11 mindre revision planerad

Läs mer

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

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

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

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

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Introduktionslaboration

Introduktionslaboration TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt

Läs mer

TDDC76 - Programmering och Datastrukturer

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

Läs mer

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

Introduktionslaboration

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

Läs mer

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

C++ - En introduktion

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

Läs mer

TDDC76 - Programmering och Datastrukturer

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

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

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

TDDC76 - Programmering och Datastrukturer

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

Läs mer

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

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,

Läs mer

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

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

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

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

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

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

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

Läs mer

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

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

Läs mer

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

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Minnestilldelning (allokering) och frigörande (avallokering) av minne Pekare i C++ Pekare används mycket i C++. De är bra både för att de tillåter dynamisk minnesallokering och för att de är referenser. En pekarvariabel innehåller en adress till ett element, den pekar på

Läs mer

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

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

Läs mer

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

C++-programmets beståndsdelar

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

Läs mer

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper

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

Läs mer

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

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

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

Data, typ, selektion, iteration

Data, typ, selektion, iteration Data, typ, selektion, iteration En programmeringkurs på halvfart IDT, MDH ttp://www.negative-g.com/nolimits/no%20limits%20defunct%20coasters.htm 1 Dagens agenda Talrepresentation Typkonvertering Sekvens

Läs mer

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

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

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

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

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

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.

Läs mer

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

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

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

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

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 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

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

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

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

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

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

Variabler och konstanter

Variabler och konstanter Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline:

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

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

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

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

Läs mer

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

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

Övning från förra gången: readword

Ö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

Läs mer

6.1 Kompilering och lite grundläggande information

6.1 Kompilering och lite grundläggande information 6 Förhoppningsvis ska de C-konstruktioner som gås igenom här tillsammans med de exempelprogram som ges här och i andra delar av lab-pm vara tillräckliga för att ni ska kunna klara av laborationerna. Syftet

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

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

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

Hantering av textsträngar och talsträngar. William Sandqvist

Hantering av textsträngar och talsträngar. William Sandqvist Hantering av textsträngar och talsträngar Strängen Hello world! PIC-processorerna lagrar strängkonstanter med bokstäverna inbakade i en följd av instruktioner (en tabell). Man hämtar en bokstav genom att

Läs mer

Lathund. C för inbyggda system

Lathund. C för inbyggda system Lathund C för inbyggda system Revision 1 2000-09-21 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 MPLAB...4

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

C++ Lektion Tecken och teckenfält

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

Läs mer

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories. C C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories. För att användas vid implementering av UNIX. Bygger på de tidigare språken BCPL och B. Målsättning: Att få ett högnivåspråks

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

E02 The Review Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition Kurs: 1dv403 Webbteknik I Johan Leitet E02 - "The Review" Dagens agenda Identifierare Kommentarer Variabler Datatyper Operatorer Villkorssatser

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

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number ) 1 Datatyper och Uttryck I räkneprogrammet tidigare såg vi att C++ kräver deklarationer av alla variabler som används. I räkneprogrammet användes bara variabler av heltalstyp, int, men det finns naturligtvis

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

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

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

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

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Modul 2 Byggstenar PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Byggstenar 4 Nyckelord 4 Tecken 4 Syntax 5 Standardbibliotek 5 Vårt första program 5 Variabler 6 Konstanter 9 Operatorer 9 Övningar 9 Mer operatorer

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

TDIU01 - Datortenta (DAT2)

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

Läs mer

Funktionens deklaration

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

Läs mer

Innehåll. Pekare Syntax

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

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean

Läs mer

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

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

Läs mer