370 likes | 545 Views
2. Two Grooks. Problems worthy of attack,prove their worth by hitting back.------Shun advice at any price, that's what I call good advice. Piet Hein. 3. This Session. Overview of C Program syntaxClassesPointersArraysStringsUsing Numerical RecipesIntegrating with your projectSample
E N D
1. An Introduction to C++ Dave Klein
Research Analyst
Credit Derivatives Research LLC
2. 2 Two Grooks Problems worthy of attack,
prove their worth by hitting back.
------
Shun advice at any price,
that's what I call good advice.
Piet Hein
3. 3 This Session Overview of C++
Program syntax
Classes
Pointers
Arrays
Strings
Using Numerical Recipes
Integrating with your project
Sample program – Geometric Brownian Motion (if time)
Next Session – using C++ to model a derivative
4. 4 Things we won’t cover Object-oriented Design / Programming
The “right” way to do anything
Software developers are fond of having “religious” discussions
In the MFE, there is no time
Professional-level programming practice
5. 5 C++ Overview C++ is about 25 years old
Originally created as a successor to C
C was created about 35 years ago as a more generic assembly language
C++ is a very “big” language
It has many, many features
Recommendation: during MFE program, only use fundamental language features
Unless you are an expert, avoid constructs like templates, polymorphism, operator overloading, multiple inheritance
6. 6 C++ Overview con’t C++ is a “dangerous” language
It is easy to introduce bugs
It is often difficult to track them down
Tip: build and test your programs incrementally
7. 7 Language Features – Program Syntax Program Syntax
Functions / methods
Loops
Conditional statements
Hopefully, syntax is not completely new to you. If it is, think about using a more familiar computer language.
8. 8 Program Syntax (con’t) Functions
9. 9 Program Syntax (con’t) For loop
Do loop
10. 10 Program Syntax (con’t) If statement
11. 11 Classes Classes provide the basic data/code organization construct within C++
Classes are (roughly) comprised of two parts:
Data members (properties)
Code members (methods)
Class support inheritance – we don’t have time to cover this
Recommendation – if you are not familiar with inheritance, do not try to learn how to use it during the MFE
12. 12 Classes (con’t)
13. 13 Classes con’t There are other features to classes including:
Information hiding (public, protected, private)
Virtual functions
They are extremely powerful and useful, but now is not the time to play with these.
14. 14 Classes con’t Classic interview question: What is the difference between a class and an object?
Better interview question: Can an object ever be a class?
15. 15 Pointers Pointers are a special type of variable
Pointers hold the address of data, not the data
Pointers must be assigned values before they can be used.
16. 16 Pointers (con’t) Pointers are a special type of variable
Pointers hold the address of data, not the data
17. 17 Pointers (con’t) Be very careful with pointers
Someone once estimated that 90% of all C++ bugs can be traced back to bad pointers
18. 18 Memory Allocation / Arrays C++ supports both statically and dynamically allocated arrays
If you dynamically allocate an array, make sure to deallocate it when you are done using it.
Make sure you are really done using it before you deallocate!
19. 19 Memory Allocation / Arrays (con’t)
20. 20 Memory Allocation / Arrays (con’t)
21. 21 Memory Allocation / Arrays con’t Question: when should you dynamically allocate an array?
When should static allocation be used?
22. 22 Strings (or lack thereof) C++ does not have a standard string class
There is a string class within the Standard Template Library (STL)
Unless you know how to use the STL, ignore it for this term
Recommendation: for output, debugging purposes – learn how to use printf, sprintf, fprintf
The ‘classic’ way of handling strings is to treat them as arrays of char’s. Then use strcpy, strcmp, etc.
23. 23 Strings (or lack thereof) – printf() printf() enables the formatting of character data
printf(format_string, data1, data2, …)
Example:
printf(“This is a %s %d %lf test\n”, “printing”, 2, 5.005)
Produces: This is a printing 2 5.005 test<lf>
24. 24 Using Numerical Recipes There are many numerical libraries available
Numerical Recipes for C++ is easy to use
DO NOT RE-INVENT THE WHEEL
If you do not have NR, search on-line for numerical class libraries
Do not write your own random-number generator
Do not write your own matrix classes
Do not implement complex numerical algorithms if there are “canned” routines already available
Exception: if the goal of a homework assignment is to implement an algorithm.
25. 25 Using Numerical Recipes con’t Warning: there are “Numerical Recipes” books for FORTRAN, C, C++, etc.
Each one is slightly different
NR originally implemented in FORTRAN
C & C++ versions different enough from each other to cause problems
For example, arrays in C version are handled differently than in C++ version
26. 26 Using Numerical Recipes con’t Three different ways to add NR to your project
Recommended : copy the files you need (including nr.h) to your project directory and add the cpp files to your project
Build a static library or DLL with all the NR routines in them
Copy the code directly from the NR files into your code files
27. 27 Using Numerical Recipes con’t Example: Using an NR random number generator
Problem: Want standard normal pseudorandom variable
Solution: use gasdev() from NR
28. 28 Using Numerical Recipes con’t
29. 29 Putting it All Together – A Geometric Brownian Motion Class We want to:
Model drift, diffusion
Reuse the same object over and over to generate different paths
30. 30 GBM con’t Our class properties
m_nSInitial – the initial security value (constant)
m_nDrift – the drift term (constant)
m_nSigma – our volatility term (constant)
m_nCurrentTime – the current ‘time’ in our simulation
m_nSCurrent – the current security value
Our class methods
CGBMotion - our constructor
void step – moves time forward
double getCurrentValue – returns m_nSCurrent
void reset - resets current time & security value
31. 31 Code
32. 32 Code con’t
33. 33 Code con’t
34. 34 Code con’t
35. 35 GBM Sample Program
36. 36 3 Great Resources Wikipedia: http://www.wikipedia.org
Wilmott: http://www.wilmott.com
Google (of course) : http://www.google.com
37. 37 Questions / Discussion