Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
|
|
- Karolina Sandberg
- för 7 år sedan
- Visningar:
Transkript
1 Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010
2 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis i.h (.hh) och definition i.cpp (.cc) private är förvalt för funktioner och variabler i klasser globala funktioner och variabler är OK main är en global funktion macro (inleds med #) körs av preprocessorn innan kompilering
3 Programuppbyggnad Exempel på deklaration: inventory item.h #i f n d e f INVENTORY ITEM H #d e f i n e INVENTORY ITEM H #i n c l u d e <c s t d d e f > c l a s s I n v e n t o r y I t e m { p r i v a t e : double c o s t ; s i z e t u n i t s ; p u b l i c : s t a t i c const double DEF COST = 1 0 ; s t a t i c const s i z e t DEF UNITS = ; I n v e n t o r y I t e m ( ) : c o s t (DEF COST ), u n i t s ( DEF UNITS ) { I n v e n t o r y I t e m ( double c, s i z e t u ) ; I n v e n t o r y I t e m ( ) { double v a l u e ( ) const ; void removeunits ( s i z e t u ) ; ; #e n d i f
4 Programuppbyggnad Exempel på definition: inventory item.cpp #i n c l u d e i n v e n t o r y i t e m. h I n v e n t o r y I t e m : : I n v e n t o r y I t e m ( double c, s i z e t u ) { c o s t = c < 0? 0 : c ; u n i t s = u ; double I n v e n t o r y I t e m : : v a l u e ( ) const { r e t u r n c o s t u n i t s ; void I n v e n t o r y I t e m : : removeunits ( s i z e t u ) { i f ( u > u n i t s ) { u n i t s = 0 ; e l s e { u n i t s = u ;
5 Programuppbyggnad Exempel på användning av klassdeklaration: main.cpp #i n c l u d e i n v e n t o r y i t e m. h #i n c l u d e <i o s t r e a m > using namespace s t d ; i n t main ( ) { I n v e n t o r y I t e m d e f a u l t I t e m ; cout << d e f a u l t I t e m. v a l u e ( ) << e n d l ; I n v e n t o r y I t e m customitem ( 2 0, ) ; cout << customitem. v a l u e ( ) << e n d l ; customitem. removeunits ( 5 0 ) ; cout << customitem. v a l u e ( ) << e n d l ; customitem. removeunits ( ) ; cout << customitem. v a l u e ( ) << e n d l ; r e t u r n 0 ;
6 Kompilering och körning av program Exempel på kompilering och körning av program Kompilering med g++ direkt till program och körning: $ g++ o i i main. cpp i n v e n t o r y i t e m. cpp $. / i i Ekvivalent med objektfiler kompilerade var för sig: $ g++ c i n v e n t o r y i t e m. cpp $ g++ c main. cpp $ g++ o i i main. o i n v e n t o r y i t e m. o Med varningar, avlusningssymboler och optimering: $ g++ o i i d e b u g Wall g O1 main. cpp i n v e n t o r y i t e m. cpp
7 Kompilering och körning av program Programmets väg till exekvering Källkod (.c,.cpp,.h,...) Bibliotekskod (.so,.a,.dll,...) Startkod Kompilator Objektkod (.o) Länkare Exekverbar kod (.exe,...)
8 Kompilering och körning av program Beroendehantering om vi ändrar main.cpp räcker det att kompilera om den om vi ändrar i inventory item.cpp/h måste vi eventuellt kompilera om både inventory item.cpp och main.cpp jobbigt hålla reda på beroenden långsamt att alltid kompilera om allt intressanta fel om allt som behöver kompileras inte kompileras om en lösning: använd verktyget make
9 Kompilering och körning av program En enkel makefil i i : main. o i n v e n t o r y i t e m. o g++ o i i main. o i n v e n t o r y i t e m. o main. o : main. cpp i n v e n t o r y i t e m. h g++ c main. cpp i n v e n t o r y i t e m. o : i n v e n t o r y i t e m. cpp i n v e n t o r y i t e m. h g++ c i n v e n t o r y i t e m. cpp c l e a n : rm f main. o i n v e n t o r y i t e m. o i i
10 Kompilering och körning av program En mer avancerad makefil CC = g++ FLAGS = g I / l i b s OBJ = main. o i n v e n t o r y i t e m. o SRC = main. cpp i n v e n t o r y i t e m. cpp PROG = i i $ (PROG) : $ (OBJ) $ (CC) $ (FLAGS) o $ (PROG) $ (OBJ) %.o : %.cpp $ (CC) $ (FLAGS) c $. cpp c l e a n : rm f. o $ (PROG) depend : $ (SRC) makedepend $ ( FLAGS) $ˆ
11 Språkfunktionalitet Preprocessordirektiv #include slår ihop filer innan kompilering #ifndef... #define... #endif garanterar att en fil bara inkluderas en gång // may be u s e f u l #d e f i n e MAX // dangerous #d e f i n e SQR1(A) A A // l e s s dangerous #d e f i n e SQR2(A) (A) (A)
12 Språkfunktionalitet Funktionen main funktionen main är speciell kan inte heta något annat argc är antalet argument inkl. programmets namn argv är en array av C-strängar med argumenten som gavs till programmet argv[0] är programmets namn (tex /usr/bin/zip eller zip) main är en global funktion och inte del av någon klass main behöver inte deklareras
13 Språkfunktionalitet Pekare void f o o ( I n v e n t o r y I t e m i t ) { i n t ptr, i ; // p t r i s p t r to i n t, i i s i n t i n t x, y ; // x i s p t r to i n t, y i s i n t p t r = &i ; // p t r now h o l d s a d d r e s s o f i ( e. g. 0 x b f f f f f 2 4 ) p t r = 5 ; // a s s i g n 5 to i x = p t r ; // x now a l s o p o i n t s to i cout << x << e n d l ; // would p r i n t 5 ( i t ). removeunits ( 1 0 ) ; i t >removeunits ( 1 0 ) ; p t r = new i n t ; // p t r now h o l d s adr o f i n t on heap p t r = &y ; // no way to a c c e s s memory anymore
14 Språkfunktionalitet Pekare och arrayer void f o o ( f l o a t f ) { char a r r a y [ ] ; // a r r a y o f 4711 u n i n i t i a l i z e d c h a r s i n t a r y [ ] = { 1, 2, 5 ; // a r r a y o f 3 i n i t i a l i z e d i n t s // same as c o n s t c h a r s t r [ ] = { h, e, j, 0 ; char s t r [ ] = h e j ; char p t r = 0 ; // c h a r p o i n t e r to n o t h i n g const f l o a t f P t r ; // memory p o i n t e d to i s r e a d o n l y f l o a t const f c P t r=f ; // p o i n t e r f i s r e a d o n l y p t r = a r r a y ; // same as p t r = &a r r a y [ 0 ] ; p t r [ 4 ] = x ; // s e t f i f t h element o f a r r a y to x ( p t r + 4) = y ; // same t h i n g, but to y p t r = new char [ ] ; // d y n a m i c a l l y a l l o c a t e d a r r a y
15 Språkfunktionalitet Referenser alias för ett objekt som en pekare vars adress inte får ändras måste referera till ett objekt (inte NULL) void iswap ( i n t &i1, i n t &i 2 ) { i n t tmp = i 1 ; i 1 = i 2 ; i 2 = tmp ; void main ( ) { i n t i = 5 ; i n t &i R e f = i ; i n t i P t r = &i ; i R e f ++; // i, i R e f and i P t r i s now 6
16 Vanliga problem Vanliga slarvfel void f o o ( i n t p ) { d e l e t e p ; i n t bar ( ) { i n t x = 1 ; r e t u r n &x ; // oops! void fun ( ) { i n t p1, p2 ; // p2 i s normal i n t not p o i n t e r i n t p3 = new i n t [ 2 ] ; i n t p4 = new i n t [ 2 ] ; p3 = p4 ; // MEMORY LEAK! f o o ( p3 ) ; // d e s t r u c t i o n o f p3 ( and p4 ) i n t x = p4 [ 1 ] ; // e r r o r ( s e g f a u l t i f LUCKY)
17 Vanliga problem Vanliga fel vid kompilering anrop till funktioner vars headerfil inte inkluderats med include, för att använda funktionen cout måste man t ex ha #include <iostream> anrop till funktioner i namnrymden std utan att ha deklarerat using namespace std, anrop till cout måste då skrivas std::cout alla objektfiler har inte kompilerats om efter koduppdatering användning av C-kompilatorn gcc istället för g++ funktionerna som används har inte deklarerats som public (private är förvalt) klassdeklarationerna avslutas inte med semikolon
18 Testning Testning testning är processen att prova vissa av exekveringarna av ett system enligt ett givet kriterie. enhetstestning är processen att testa de minsta beståndsdelarna av ett system (funktioner och klasser) i en isolerad miljö. Några anledningar till att testa: evidens att koden gör vad den ska möjliggör omstrukturering med bibehållen funktionalitet snabbare lokalisering av introducerade buggar Testa tidigt. Testa ofta. Testa automatiskt.
19 Testning Testramverket cxxtest testramverk för C++ som bara kräver kompilator och Python tester skrivs i separat fil körbar kod genereras via skript tester organiseras i testsviter (test suites) i testfunktioner görs påstående med macron som TS ASSERT och TS ASSERT EQUALS mer information på
20 Testning Exempel på enhetstester: inventory item test.cpp #i n c l u d e <c x x t e s t / T e s t S u i t e. h> #i n c l u d e i n v e n t o r y i t e m. h c l a s s I n v e n t o r y I t e m T e s t : p u b l i c CxxTest : : T e s t S u i t e { p u b l i c : void t e s t d e f a u l t c o s t a n d u n i t s ( void ) { I n v e n t o r y I t e m i t ; TS ASSERT EQUALS( i t. v a l u e ( ), I n v e n t o r y I t e m : : DEF COST I n v e n t o r y I t e m : : DEF UNITS ) ; void t e s t n e g a t i v e c o s t ( void ) { I n v e n t o r y I t e m i t ( 10, ) ; TS ASSERT EQUALS( i t. v a l u e ( ), 0 ) ; ;
21 Testning Makefil för cxxtest CC = g++ FLAGS = g OBJ = i n v e n t o r y i t e m. o PROG = t e s t r u n n e r t e s t r u n n e r. o $ (PROG) : $ (OBJ) $ (CC) $ (FLAGS) o $ (PROG) $ (OBJ) %.o : %.cpp $ (CC) $ (FLAGS) c $. cpp t e s t r u n n e r. cpp : i n v e n t o r y i t e m t e s t. cpp i n v e n t o r y i t e m. h c x x t e s t g e n. py e r r o r p r i n t e r o t e s t r u n n e r. cpp \ i n v e n t o r y i t e m t e s t. cpp c l e a n : rm f. o $ (PROG) t e s t r u n n e r. cpp
22 Testning Testkörningar $ make g++ g c i n v e n t o r y i t e m. cpp c x x t e s t g e n. py e r r o r p r i n t e r o t e s t r u n n e r. cpp \ i n v e n t o r y i t e m t e s t. cpp g++ g c t e s t r u n n e r. cpp g++ g o t e s t r u n n e r i n v e n t o r y i t e m. o t e s t r u n n e r. o $. / t e s t r u n n e r Running 2 t e s t s.. OK! Om cost kan anta negativa värden: $. / t e s t r u n n e r Running 2 t e s t s. I n I n v e n t o r y I t e m T e s t : : t e s t n e g a t i v e c o s t : i n v e n t o r y i t e m t e s t. cpp : 1 5 : E r r o r : Expected ( i t. v a l u e ( ) == 0 ), found ( != 0) F a i l e d 1 o f 2 t e s t s S u c c e s s r a t e : 50%
Programsystemkonstruktion med C++
Programsystemkonstruktion med C++ Övning 1 Daniel Aarno bishop@kth.se Översikt övning 1 Kompilering och länkning Makefile Preprocessordirektiv Funktioner Funktionen main() Datatyper Minneshantering Pekare
Läs merEn klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.
2 1 0 / ) - & 9 > ; 7 * ( ) ) En klass behöver både deklaration och definition Deklaration i h (hh) och definition i cc (cpp) Private är förvalt Student::learn() Student::Student() Student::~Student()
Läs merDet 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 merFörsta exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,
Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, 2003 09 11 Ronnie Johansson, rjo@nada.kth.se Vi kommer att titta på: Kompilering och länkning make och Makefile Preprocessordirektiv main() funktionen
Läs mergrundlä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 merEtt enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1
Ett enkelt program i C++, hello.cpp 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 int
Läs merProgramsystemkonstruktion 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 merTDIU01 - 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 merTDIU01 - 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 merInledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merTDIU01 - 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 merIntroduktion 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 merInnehå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 merAtt 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 merTDP005 Projekt: Objektorienterat system
. TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg
Läs merC++ Objektorientering - Klasser. Eric Elfving
C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande
Läs merFunktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare
Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.
Läs merProgrammering 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 merC++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap
C++ Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 23 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med
Läs mer732G 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 merInnehållsförteckning. Exempel. Åtkomst & användarhandledning
Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn
Läs merRepetition 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Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning
Övning 3 i 2D1324 Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning Avancerad c-programering och repetition Typisk h-fil #ifndef special_a
Läs merTDP005: Introduktion till Make
TDP005: Introduktion till Make Jonas Lindgren jonas.lindgren@liu.se Torbjörn Lönnemark torbjorn.lonnemark@liu.se Niklas Hayer 2013-11-14 1 1 PROGRAMMET MAKE 2 1 Programmet make Om du kör make letar programmet
Läs merPoster ( structar ) Postdeklarationer
Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.
Läs merInnehå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 merDD2387 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 merC++ 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 merTillämpad programmering
Tillämpad programmering C++ make, configure och arrayer Johan Montelius 1 C++ sndcopy.cc #include #include sndreader.h #incldue sndwrite.h int main(int argc, char *argv[]) { 2 C++ sndreader.h #include
Läs merIntroduktionslaboration
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 merTDP005. Föreläsning 2. Filip Strömbäck
TDP005 Föreläsning 2 Filip Strömbäck 1 Make och CMake 2 Versionshantering TDP005 Filip Strömbäck 2 Make Problem: kompilera många filer i ett stort projekt tar tid Bättre om vi kompilerar om så få filer
Läs merGrunderna 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 merIntroduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Läs merTDDC76 - 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 merTENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00
TENTAMEN CD5250 Objektorienterad programutveckling med C++, 5p Max poäng: 40 Betygsgränser: 3: 20 4: 28 5: 36 Datum: 1999-06-01, Tid: 14:00-19:00 Ansvarig: Ivica Crnkovic Upp till 5 poäng kan komma från
Läs merByggstenar. 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 merProgramsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv
Programsystem konstruktion med C++ (2D1387) övning 2 klasser och arv Ronnie Johansson rjo@nadakthse grupp 4 2003 09 25 Innehåll Klasskonstruktorer och initieringslistor Klassdestruktorer Åtkomstkontroll
Läs merDel3 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*: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 merProgrammering 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 merPekare och arrayer. Indexering och avreferering
Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en
Läs merÖ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 merDel2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:
2D1387, Programsystemkonstruktion med C++ 01/02 1 Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: Klasser, åtkomst Medlemmar, medlemsfunktioner, inline Slide 1 Konstruktorer och destruktorer
Läs merOBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.
Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det
Läs merKapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet
Kapitel 3 Klassanvändning Operatorer Pekare Kapitel 3 - Klassanvändning, operatorer och pekare Vänner till klasser och funktioner Virtuella funktioner och polymorfi Abstrakta basklasser och strikt virtuella
Läs merIDA kursmaterial Informationsblad make. make
make make är ett verktyg som främst används för att underhålla, uppdatera och återskapa program och filer. Det är dock ett generellt verktyg som kan användas även i många andra sammanhang. En avancerad
Läs merInnehå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 merObjektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap
Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser. Vi får också möjlighet att referera
Läs merAgenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Läs merTDIU01 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 merProgramsystemkonstruktion med C++
Programsystemkonstruktion med C++ Övning 2 Daniel Aarno bishop@kth.se Översikt övning 2 Klasser Konstruktorer Destruktorer Arv Virtuella funktioner Abstrakta klasser Operatorer Templateklasser Templatefunktioner
Läs merDynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar
Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden
Läs merC++ 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 merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merDatorer och programmering TDB2: Aggregat Eva Pärt-Enander Aggregat i C++ Kan också kallas komposition. En klass eller objekt är uppbyggd av andra klasser eller objekt. En klass har attribut av andra, redan
Läs merInnehå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 merDel2 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 merProgrammering 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 merTDDC76 - 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 merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.
Läs merprog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog
DSV Sid 1(10) *:58/ID100V Jozef Swiatycki Innehållsförteckning Inledning... 1 Raddelning, kommentarer, macros och inkludering... 4 Undertryckning av utskrifter från make... 6 Flera kommandon per mål...
Läs merInnehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
Läs merTDP004. 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 merC++-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 merLite 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 merInnehå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 merProgrammering 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 merInnehå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 mer5 Arv och dynamisk bindning FIGUR
5 Arv och dynamisk bindning Arv är en av hörnstenarna i objektorienterad programmering. Med hjälp av arv kan man skapa underhållsvänliga och förändringsvänliga system. Att hitta arvsrelationer är en viktig
Läs merDatatyper 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 merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merTDP005, Projekt: Objektorienterade System. Laboration: Eclipse
TDP005, Projekt: Objektorienterade System Laboration: Eclipse Höstterminen 2013 Introduktion Detta material innehåller övningar för Eclipse. Redovisning Dessa övningar behöver inte redovisas, men ni får
Läs merKlasser. 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Ö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 merKlasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.
KAPITEL 8 Klasser Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering. 169 Hittills: Enkel datatyp: double, int, char Operationer: förutbestämda, t ex +,
Läs mer1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera
1 Språket C++ 1.1 Valet av språket C++ för kompendiet Språket C++ är ett språk som utvecklats för storskalig objektorienterad utveckling av sofistikerade och komplexa system. Det ligger då i sakens natur
Läs merProgrammering 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 merArv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Läs merKompilering 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 merFunktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
Läs merFö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 merIntroduktion 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 merPekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare
Vad är en pekare? Varför använder vi pekare? Hur används pekare? Hur deklarerar vi pekare i C? Hur kommer vi åt pekarvärdet? DAVA07/08 JE,MG,MG,PS 2 DAVA07/08 JE,MG,MG,PS Vad är en pekare? En pekare är
Läs merSynlighet. Namespace Scope-operatorn Klasser Vänner
Synlighet Namespace Scope-operatorn Klasser Vänner Synlighet Ett problem med moduler i C är att alla variabel- och funktionsnamn ligger globalt synliga. C++ botar detta genom att införa det mycket användbara
Läs merInnehå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 merDagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 12 Filhantering Funktionsbibliotek Mer om kompilering Lagrinsklasser Makron Programmeringsteknik VT05 2 Mer om printf Utskrifter
Läs merMinnestilldelning (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 merKapitel 6 - Undantag
Kapitel 6 Undantag Kapitel 6 - Undantag Undantag (exceptions), returvärden throw, try och catch new, bad_alloc, nothrow Undantag och std::auto_ptr throw() i funktionsdeklaration try som funktionskropp
Läs mer1 Modulär programutveckling.
1 Modulär programutveckling. När man ska utveckla stora program blir det otympligt och ohanterligt att ha all kod i samma fil, speciellt om man är flera personer som utvecklar programmet. Det blir också
Läs merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Klasser - speciella medlemsfunktioner Eric Elfving Institutionen för datavetenskap En klass ansvarar ofta för en resurs. Ibland är resursen så enkel som en datamedlem
Läs merVem ä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 merMinneshantering. Minneshantering. Minneshantering. Undvik pekare
Minneshantering Lokala objekt allokeras på stacken och har kort livslängd Objekt med längre livslängd måste allokeras dynamiskt på heapen (free store) Dynamisk allokering görs med new och delete Statiska
Läs merHur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration
1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den
Läs merAnteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering
Läs merÖvriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering
Övriga byggstenar Beroenden Pekare till funktioner Övriga byggstenar Beroenden er Definitioners synlighet Funktionspekare Icke-medlemsfunktioner Medlemsfunktioner 2D1387 Programsystemkonstruktion med C++
Läs merKapitel 1. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Kapitel 1 grunderna i C++
Kapitel 1 Grunderna i C++ Kapitel 1 grunderna i C++ C++-programmets beståndsdelar Datatyper Funktioner och funktionsanrop Sammansatta datatyper Pekare, aritmetik och referenser Minneshantering, preprocessorn
Läs merTentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
Läs mertentamensdags och lab 3
tentamensdags och lab 3 Större program delas normalt upp i flera filer/moduler vilket har flera fördelar: Programmets logiska struktur när man klumpar ihop funktioner som hör ihop (och ibland också struct-def
Läs merTentamen i DD2387 Programsystemkonstruktion med C++
Tentamen i DD2387 Programsystemkonstruktion med C++ Resultat: Datum: Tisdag 19 oktober 2010, 14-18 (rättning 18-19) sal: id: Hjälpmedel: En eller två valfria läroböcker om C++ Tid: 4 timmar Skriv inte
Läs mer