Presentation is loading. Please wait.

Presentation is loading. Please wait.

C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.

Similar presentations


Presentation on theme: "C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables."— Presentation transcript:

1 C++ Language Fundamentals

2 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables

3 3 1. Introduction to C++ Setting the scene Differences between C++ and Java The Standard C++ library Hello world! Compiling and linking a C++ program Getting input Making decisions

4 4 Setting the Scene C++ is an object-oriented evolution of C C dates back to 1972 C++ was introduced in 1985, by Bjarne Stroustrup C++ is now an ANSI standard Characteristics of C++ Object-oriented, i.e. supports classes, inheritance, polymorphism Strongly typed at compile-time Supports generic programming via templates, e.g. list Uses of C++ are extremely widespread E.g. middle-tier business rules in a distributed application E.g. low-level process control

5 5 Differences between C++ and Java C++ is compiled directly to machine code No concept of "byte codes" (like you have in Java) So you must re-compile for each target platform C++ applications run directly on the O/S No virtual machine between C++ and the O/S No garbage collection - you must de-allocate objects yourself No dynamic class loading - you must link all object files into a.exe Direct access to memory via pointers - powerful but dangerous The C++ Standard Template Library (STL) is extremely limited compared to the Java SE library STL has string, IO, and collection classes But STL doesn't have GUI / database / network / multithreading!

6 6 The Standard C++ Library The standard C++ lib incorporates the standard C lib You include header files such as,, etc. Declarations are nested in the std namespace, so you can use a using namespace statement to bring into scope The standard C++ lib also defines standard C++ classes You include header files such as,, etc. Declarations are nested in the std namespace, so you can use a using namespace statement to bring into scope #include // #include is a pre-processor directive to include a header file. #include using namespace std; // Allows unqualified access to standard C++ functions and classes. #include // #include is a pre-processor directive to include a header file. #include using namespace std; // Allows unqualified access to standard C++ functions and classes. #include using namespace std; #include using namespace std;

7 7 Hello World! Here's a traditional "Hello World" program in C++ main() is a global function, the entry-point in a C++ application cout outputs a message to the console (there's also cin, cerr ) endl means "new line" You can also declare main() as follows Provides access to command-line arguments // Include the standard header file that declares cout and endl. #include // Allow easy access to cout and endl, in the std namespace. using namespace std; int main() { cout << "Hello world!" << endl; return 0; } // Include the standard header file that declares cout and endl. #include // Allow easy access to cout and endl, in the std namespace. using namespace std; int main() { cout << "Hello world!" << endl; return 0; } HelloWorld.cpp int main(int argc, char *argv[]) …

8 8 Compiling/Linking a C++ Program (1 of 2) C++ is a compiled language Comprises source-code files (e.g. Account.cpp - you can name files anything you like!) Source-code files are compiled to object files (e.g. Account.obj ) Object files are linked together, along with library files perhaps, to create executable files (e.g. MyApp.exe ) Account.cpp Bank.cpp Customer.cpp Account.obj Bank.obj Customer.obj compilation MyApp.exe linking SomeLibrary.lib C/C++ standard library

9 9 Compiling/Linking a C++ Program (2 of 2) For example, to compile/link a C++ program in Linux: You can use the g++ command-line compiler/linker Use the -o option to specify the name of the executable output file Here's an example... Compiles HelloWorld.cpp to an object file Links the object file with the standard C++ library, to create an executable output file named Hello If you want more info about g++ command options: g++ HelloWorld.cpp -oHello man g++

10 Here's an example of how to get input from the console string is a standard C++ class, defined in the header cin inputs a value (e.g. a string or an int ) from the console Getting Input 10 #include using namespace std; int main() { string name; int age; cout << "Hi, what's your name? "; cin >> name; cout << "How old are you? "; cin >> age; cout << name << ", on your next birthday you'll be " << age + 1 << endl; return 0; } #include using namespace std; int main() { string name; int age; cout << "Hi, what's your name? "; cin >> name; cout << "How old are you? "; cin >> age; cout << name << ", on your next birthday you'll be " << age + 1 << endl; return 0; } PersonDetails.cpp

11 Here's an example of making simple decisions Making Decisions 11 #include using namespace std; int main() { int a, b, c; cout << "Enter the coefficient of x-squared, x, and units: "; cin >> a >> b >> c; double disc = (b * b) - (4 * a * c); if (disc < 0) { cerr << "Roots are imaginary " << endl; } else { double root1 = (-a + sqrt(disc)) / 2 * a; double root2 = (-a - sqrt(disc)) / 2 * a; cout << "Roots are " << root1 << " and " << root2 << endl; } return 0; } #include using namespace std; int main() { int a, b, c; cout << "Enter the coefficient of x-squared, x, and units: "; cin >> a >> b >> c; double disc = (b * b) - (4 * a * c); if (disc < 0) { cerr << "Roots are imaginary " << endl; } else { double root1 = (-a + sqrt(disc)) / 2 * a; double root2 = (-a - sqrt(disc)) / 2 * a; cout << "Roots are " << root1 << " and " << root2 << endl; } return 0; } MakingDecisions.cpp

12 12 2. Basic Syntax Rules Statements and expressions Comments Legal identifiers Classes Functions and methods

13 13 Statements and Expressions C++ code comprises statements C++ statements end with a semi-colon You can group related statements into a block, by using {} C++ code is free-format But you should use indentation to indicate logical structure An expression is part of a statement. For example: a+b a == b

14 14 Comments Single-line comment Use // Remainder of line is a comment Block comment Use /* … … */ Useful for larger comments, e.g. at the start of an algorithm Note: No concept of JavaDoc-style comments So you can't use /** … … */

15 15 Legal Identifiers Identifiers (names for classes, methods, variables, etc.): Must start with a letter or _ Thereafter, can contain letters, numbers, and _ Are case sensitive Keywords:

16 16 Classes You can define classes (nouns) in any source file You don't have to define classes in a file with the same name … although many developers do like to do this Standard C++ classes are all lowercase E.g. string E.g. list E.g. file Some developers like to use capitalization (like in Java) E.g. BankAccount E.g. Bank E.g. Customer

17 17 Functions and Methods C++ is based on C (this is an important pragmatic point) So C++ supports global functions i.e. you don't have to define everything in a class! C++ offers many global functions from its C heritage, and are all lowercase E.g. sqrt() E.g. max() E.g. printf() Some developers like to use capitalization E.g. CalcInterest() E.g. TransferFunds()

18 18 3. Declaring and Using Variables Variables Constants #define directives C++ built-in types Using integers Using floating point variables Using characters Using booleans Quiz

19 19 Variables All applications use variables A variable has a name, a type, and a value Note, all variables in C++ are "garbage" until you assign a value!!! General syntax: Example: A variable also has a scope: Block scope Method scope Object scope Class scope type variableName = optionalInitialValue; int yearsToRetirement = 20;

20 20 Constants A constant is a fixed "variable" Use the const keyword (similar to final variables in Java) Make sure the constant has a known initial value The compiler will ensure you don't modify the constant thereafter General syntax: Example: const type CONSTANT_NAME = initialValue; const long SPEED_OF_LIGHT = 299792458; const int SECONDS_IN_MIN = 60; const int SECONDS_IN_HOUR = SECONDS_IN_MINUTE * 60; const string BEST_TEAM_IN_WALES = "Swansea City"; // const long SPEED_OF_LIGHT = 299792458; const int SECONDS_IN_MIN = 60; const int SECONDS_IN_HOUR = SECONDS_IN_MINUTE * 60; const string BEST_TEAM_IN_WALES = "Swansea City"; //

21 21 #define Directives C++ code can use #define directives (originated in C) Anything that starts with # is a pre-processor directive Expanded (prior to compilation) by the pre-processor Examples in the standard C++ header file: #define directives can take parameters These are known as macros… good or bad? #define INT_MIN -32767 #define INT_MAX 32767 #define UINT_MAX 65535 … #define INT_MIN -32767 #define INT_MAX 32767 #define UINT_MAX 65535 … #define MAX(a, b) (((a) > (b)) ? (a) : (b))

22 C++ Built-in Types Here is the full set of built-in types in C++: Note: the size/range details vary, based on compiler and platform 22

23 23 Using Integers Integers store whole numbers C++ supports signed and unsigned ints (default is signed ) Absolute size of these types is platform-dependent! You can use decimal, hex, or octal notation Examples: int x, y, z; short age; long population; unsigned short goalsScored; int yearOfBirth = 1997; short goalDifference = -5; long favouriteColor = 0xFF000000; // Hexadecimal int bitMask = 0701; // Octal int x, y, z; short age; long population; unsigned short goalsScored; int yearOfBirth = 1997; short goalDifference = -5; long favouriteColor = 0xFF000000; // Hexadecimal int bitMask = 0701; // Octal

24 24 Using Floating Point Variables Floating point variables store fractional and large values float holds a single-precision floating point number double holds a double-precision floating point number Should you use float or double ? Use double in most cases (all the C++ APIs do) … unless memory is critical Examples: double pi = 3.14159; double c = 2.99E8; // 2.99 x 10 8 double e = -1.602E-19; // -1.602 x 10 -19 float height = 1.58F; // The F (or f) suffix means "float", i.e. not "double". float weight = 58.5F; // Ditto. double pi = 3.14159; double c = 2.99E8; // 2.99 x 10 8 double e = -1.602E-19; // -1.602 x 10 -19 float height = 1.58F; // The F (or f) suffix means "float", i.e. not "double". float weight = 58.5F; // Ditto.

25 25 Using Characters Characters are single-byte values (not Unicode!) Enclose character value in single quotes Examples: If you want to store Unicode characters, use wchar_t char myInitial = 'A'; char nl = '\n'; // Newline char cr = '\r'; // Carriage return char tab = '\t'; // Horizontal tab char nul = '\0'; // Null character (ASCII value 0) char bsl = '\\'; // Backslash char sqt = '\''; // Single quote char dqt = '\"'; // Double quote char aDec = 97; // Assign decimal value to char char aOct = '\141'; // Assign octal value to char char aHex = '\x97'; // Assign hexadecimal value to char char myInitial = 'A'; char nl = '\n'; // Newline char cr = '\r'; // Carriage return char tab = '\t'; // Horizontal tab char nul = '\0'; // Null character (ASCII value 0) char bsl = '\\'; // Backslash char sqt = '\''; // Single quote char dqt = '\"'; // Double quote char aDec = 97; // Assign decimal value to char char aOct = '\141'; // Assign octal value to char char aHex = '\x97'; // Assign hexadecimal value to char wchar_t unicodeChar = L'A';

26 26 Using Booleans bool variables are true/false values C++ supports automatic conversions to bool Any non-zero value implicitly means truth C++ allows non-booleans in test conditions Quite different than Java! bool isWelsh = true; bool canSing = false; bool isWelsh = true; bool canSing = false; int errorCount; … bool isBad = errorCount; // If errorCount is non-zero, isBad is true. cout << isBad; // Outputs true or false. int errorCount; … bool isBad = errorCount; // If errorCount is non-zero, isBad is true. cout << isBad; // Outputs true or false. int errorCount; … if (errorCount) { … } // If errorCount is non-zero, it means "true". int errorCount; … if (errorCount) { … } // If errorCount is non-zero, it means "true".

27 27 Quiz What does this code do? #include using namespace std; void main() { int swans, bloobs; cout << "Goals for Swans: "; cin >> swans; cout << "Goals for Cardiff: "; cin >> bloobs; cout << "Swansea " << swans << "-" << bloobs << " Cardiff" << endl; cout << "Press ENTER to continue dude..."; cin.ignore(256, '\n'); cin.peek(); cout << "I'm outta here!" << endl; } #include using namespace std; void main() { int swans, bloobs; cout << "Goals for Swans: "; cin >> swans; cout << "Goals for Cardiff: "; cin >> bloobs; cout << "Swansea " << swans << "-" << bloobs << " Cardiff" << endl; cout << "Press ENTER to continue dude..."; cin.ignore(256, '\n'); cin.peek(); cout << "I'm outta here!" << endl; }

28 28 Any Questions?


Download ppt "C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables."

Similar presentations


Ads by Google