300 likes | 370 Views
Join this comprehensive C++ workshop covering intro to advanced topics like classes, data structures, OO development, STL, and templates. Learn practical knowledge and expand your skills in C++ development.
E N D
C++ Workshop Mark Hennessy Dept. Computer Science 18th – 22nd September 2006
Week Outline • Monday – Intro to C++ Basics • Tuesday – Classes, Overloading, Exceptions • Wednesday – Defining Data Structures • Thursday – OO Development in C++ • Friday – An introduction to the STL and templates.
Day outline • Lectures : 930 – 1100 • Assignment • 1500: 90 mins later on in the day.
Workstation • We will use MS Windows but GNU/Linux has more support for C++ development. • Compiler is g++ from the GNU Compiler Collection, gcc. • This course is about development in ISO/ANSI standard C++ • -> We will not be using Microsoft Visual C++!
Practical Info • Work on the C:\ disk can only be saved in the temp folder. • WARNING!!! If you leave your work in the temp folder and then log out it will be lost! • Therefore save all of your work to your personal X:\ disk or on some USB storage.
C++ Resources • Textbooks here in the lab. • Online resources: • http://en.wikipedia.org/wiki/C++_standard_library • http://www.cplusplus.com/ • http://www.sgi.com/tech/stl/
5 Kinds of Programmers • Those who can’t • those who can without pointers • those who can with pointers • those who know object technology: OO • those who can use generics/templates
Motivation for OO with C++ • C++/Java most widely used languages, • OO is the way of the present, • familiarity increases marketability, • viable for many years, • excellent expressivity, and • excellent speed. • Easy to learn another language
Lots of “stuff” • There is an intimidating amount of material in C++ • C++ was designed to be a powerful tool for professional programmers solving real problems in diverse domains • C++ was NOT designed for academia! • C++ was NOT designed to be a nice, “pure” language, good for teaching students how to program
C++ Intro • We need to learn the language, start with the syntax! • Any Java programmers will be fine, C programmers will survive too! • Lets get started….
Hello World #include <iostream> int main(int argc, char * argv[]) { std::cout<<“Hello World”<<std::endl; }
Identifiers • An identifier must start with a letter or underscore, and be followed by zero or more letters • C++ is case sensitive • VALID age_of_dog TaxRate98 PrintHeading AgeOfHorse • INVALID examples - try to find them yourselves using the compiler
Address pointer reference C++ Data Types Simple Structured Integral Floating array struct union class char short int long enum float double long double
Typical size of data types Type Number of Bytes char 1 short (short int) 2 int 4 unsigned int 4 enum 2 long (long int) 4 float 4 double 8 long double 12
Finding size of data type - system dependent results • Usesizeofto find the size of a type e.g. std::cout << sizeof(int) Finds size of int types on our system.
Enumerated types: enum Used to define constant values enum days{ Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} yesterday, today; days tomorrow; QUESTION: what are the values of Tuesday, today, tomorrow, yesterday? Default values may be overridden in the enum list.
Boolean type C++ has a built-in logical or Boolean type #include <iostream.h> int main (){ bool flag = true; std::cout << flag<< std::endl<<!flag} This outputs: 1 0
// #include <iostream.h> int main (){ bool flag1 = 100, flag2 = false, flag3; std::cout << flag1<< std::endl<<flag2<< std::endl<<flag3;} true is any non-zero int false is zero Variation - booleans are really integers? true is output as 1 false is output as 0 This outputs: 1 0 122 This was not initialised
Giving a value to a variable In your program you can assign (give) a value to the variable by using the assignment operator = Age_Of_Dog = 12; or by another standard method, such as std::cout << “How old is your dog?”; std::cin >> Age_Of_Dog;
What is a Named Constant? • A named constantis a location in memorywhich we can refer to by an identifier, and in which a data value that cannot be changed is stored. VALID CONSTANT DECLARATIONS • const char STAR = ‘*’ ; • const float PI = 3.14159 ; • const int MAX_SIZE = 50 ; Note: all caps
keywords: words reserved to C++ • bool, true, false, • char, float, int, unsigned, double, long • if, else, for, while, switch, case, break, • class, public, private, protected, new, delete, template, this, virtual, • try, catch, throw. frequently used keywords Note: there are many more … you may see them in the examples that follow
Example 6: prefix and postfix // #include <iostream.h> int main (){ int x =3, y=3; std::cout << ++x << std::endl; std::cout << y++ << std::endl;} ++ (prefix) is a unary operator << is a binary operator Output: 4 3 ++ (postfix) is a unary operator
Example 7: a C+ ternary operator // Example 7 #include <iostream.h> int main (){ int x =3, y=4; std::cout <<"The max. of x and y is: " << (x>y?x:y); } Output: The max. of x and y is: 4 expression1?expression2:expression3 Means: if expression1 then expression2 else expression3
Program with Three Functions // #include <iostream> // declares these 2 functions int Square ( int ); int Cube ( int ) ; int main ( void ){ std::cout << "The square of 27 is " << Square (27) << std::endl ;// function call std::cout << "The cube of 27 is " << Cube (27) << std::endl ;// function call return 0 ; } int Square ( int n ){return n * n ;} int Cube ( int n ){return n * n * n ;} The square of 27 is 729 The cube of 27 is 19683 Output:
Precedence of Some C++ Operators Precedence Operator Description Higher ( ) Function call + Positive - Negative * Multiplication / Division % Modulus (remainder) + Addition - Subtraction Lower = Assignment NOTE: Write some programs to test your understanding of precedence
Type Casting is Explicit Conversion of Type // Example #include <iostream> int main ( void ){ std::cout << "int(4.8) ="<<int(4.8)<<std::endl; std::cout << "float(5) ="<<float(5)<<std::endl; std::cout <<”float(2/4)="<<float(2/4)<<std::endl; std::cout<<"float(2)/float(4) ="<<float(2)/float(4)<<std::endl; } Output: int(4.8) =4 float(5) =5 float(2/4)=0 float(2)/float(4)=0.5 Output of float may look like an int
Parts of a Function Every function has 2 parts int main (void) { return 0; } signature body
HEADER FILE FUNCTION EXAMPLE VALUE OF CALL <stdlib> std::abs(i) std::abs(-6) 6 std::fabs(x) std::fabs(-6.4) 6.4 <math> std::pow(x,y) std::pow(2.0,3.0) 8.0 std::sqrt(x) std::sqrt(100.0) 10.0 std::sqrt(2.0) 1.41421 std::log(x) std::log(2.0) 0.693147 <iomanip> std::setprecision(n) std::setprecision(3)
I/O - Input/Output is one of the first aspects of programming that needs to be mastered: • formatting • whitespace • structured inputs - getting data into the correct internal form • However, do not fall into the beginner’s traps: • brilliant I/O with incorrect functionality • thinking functionality is wrong because I/O is too complicated to get right • forgetting that random tests are often better than user dependent I/O C++ I/O Basics 29
Whitespace Characters Include . . . • blanks • tabs ‘\t’ • end-of-line (newline) characters ‘\n’ The newline character is created by hitting Enter or Return at the keyboard, or by using the manipulator endl or “\n” in a program. E.g std::cout << std::endl; std::cout << “\n”;