Presentation is loading. Please wait.

Presentation is loading. Please wait.

C++ Workshop Mark Hennessy Dept. Computer Science 18 th – 22 nd September 2006.

Similar presentations


Presentation on theme: "C++ Workshop Mark Hennessy Dept. Computer Science 18 th – 22 nd September 2006."— Presentation transcript:

1 C++ Workshop Mark Hennessy Dept. Computer Science 18 th – 22 nd September 2006

2 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.

3 Day outline Lectures : 930 – 1100 Assignment 1500: 90 mins later on in the day.

4 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++!

5 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.

6 C++ Resources Textbooks here in the lab. Online resources: 1.http://en.wikipedia.org/wiki/C++_standard_libraryhttp://en.wikipedia.org/wiki/C++_standard_library 2.http://www.cplusplus.com/http://www.cplusplus.com/ 3.http://www.sgi.com/tech/stl/http://www.sgi.com/tech/stl/

7 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

8 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

9 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

10 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….

11 Hello World #include int main(int argc, char * argv[]) { std::cout<<“Hello World”<<std::endl; }

12 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_dogTaxRate98 PrintHeading AgeOfHorse INVALID examples - try to find them yourselves using the compiler

13 C++ Data Types Structured array struct union class Address pointer reference Simple IntegralFloating char short int long enum float double long double

14 Typical size of data types Type Number of Bytes char1 short (short int)2 int4 unsigned int4 enum2 long (long int)4 float4 double 8 long double12

15 Finding size of data type - system dependent results sizeofUse sizeof to find the size of a type e.g. std::cout << sizeof(int)

16 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.

17 Boolean type C++ has a built-in logical or Boolean type #include int main (){ bool flag = true; std::cout << flag<< std::endl<<!flag} This outputs: 1 0

18 Variation - booleans are really integers? // #include int main (){ bool flag1 = 100, flag2 = false, flag3; std::cout << flag1<< std::endl<<flag2<< std::endl<<flag3;} This outputs: 1 0 122 true is any non- zero int false is zero true is output as 1 false is output as 0 This was not initialised

19 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;

20 What is a Named Constant? A named constant is a location in memory which 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 ;

21 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. Note: there are many more … you may see them in the examples that follow

22 Example 6: prefix and postfix // #include int main (){ int x =3, y=3; std::cout << ++x << std::endl; std::cout << y++ << std::endl;} Output: 4 3 ++ (prefix) is a unary operator ++ (postfix) is a unary operator << is a binary operator

23 Example 7: a C+ ternary operator // Example 7 #include int main (){ int x =3, y=4; std::cout <<"The max. of x and y is: " y?x:y); } The max. of x and y is: 4 expression1?expression2:expression3 Output: Means: if expression1 then expression2 else expression3

24 Program with Three Functions // #include // 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:

25 Precedence of Some C++ Operators Precedence OperatorDescription Higher ( )Function call +Positive - Negative *Multiplication / Division %Modulus (remainder) +Addition - Subtraction Lower = Assignment NOTE: Write some programs to test your understanding of precedence

26 Type Casting is Explicit Conversion of Type // Example #include 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; } int(4.8) =4 float(5) =5 float(2/4)=0 float(2)/float(4)=0.5 Output: Output of float may look like an int

27 Parts of a Function Every function has 2 parts int main (void) { return 0; } signature body

28 HEADER FILE FUNCTION EXAMPLE VALUE OF CALL std::fabs(x) std::fabs(-6.4) 6.4 std::pow(x,y) std::pow(2.0,3.0) 8.0 std::sqrt(x) std::sqrt(100.0) 10.0 std::setprecision(n) std::setprecision(3) std::log(x) std::log(2.0) 0.693147 std::sqrt(2.0) 1.41421 std::abs(i)std::abs(-6) 6

29 C++ I/O Basics 29 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

30 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”;


Download ppt "C++ Workshop Mark Hennessy Dept. Computer Science 18 th – 22 nd September 2006."

Similar presentations


Ads by Google