Chapter 1 Introduction to C++ Programming
Outline 1.7 1.8 1.10 1.13 1.14 1.20 1.21 1.22 1.23 1.24 1.25 1.26 History of C and C++ C++ Standard Library Visual Basic, Visual C++ and C# The Key Software Trend: Object Technology Basics of a Typical C++ Environment Introduction to C++ Programming A Simple Program: Printing a Line of Text Another Simple Program: Adding Two Integers Memory Concepts Arithmetic Decision Making: Equality and Relational Operators Thinking About Objects: Introduction to Object Technology and the Unified Modeling Language
2003 Prentice Hall, Inc. All rights reserved.
1.7 History of C and C++ History of C
Evolved from two other programming languages
BCPL and B Typeless languages
Dennis Ritchie (Bell Laboratories)
Added data typing, other features
Development language of UNIX Hardware independent
Portable programs
1989: ANSI standard 1990: ANSI and ISO standard published
ANSI/ISO 9899: 1990
2003 Prentice Hall, Inc. All rights reserved.
1.7 History of C and C++ History of C++
Extension of C Early 1980s: Bjarne Stroustrup (Bell Laboratories) Spruces up C Provides capabilities for object-oriented programming
Objects: reusable software components Model items in real world Object-oriented programs Easy to understand, correct and modify
Hybrid language
C-like style Object-oriented style Both
2003 Prentice Hall, Inc. All rights reserved.
1.8 C++ Standard Library C++ programs
Built from pieces called classes and functions
C++ standard library
Rich collections of existing classes and functions
Building block approach to creating programs
Software reuse
2003 Prentice Hall, Inc. All rights reserved.
1.10 Visual C++ Visual C++
Microsofts implementation of C++
Includes extensions Microsoft Foundation Classes (MFC) Common library GUI, graphics, networking, multithreading, Shared among Visual Basic, Visual C++, C
2003 Prentice Hall, Inc. All rights reserved.
1.13 The Key Software Trend: Object Technology Objects
Reusable software components that model real world items Meaningful software units
Date objects, time objects, paycheck objects, invoice objects, audio objects, video objects, file objects, record objects, etc. Any noun can be represented as an object
More understandable, better organized and easier to maintain than procedural programming Favor modularity
Software reuse Libraries MFC (Microsoft Foundation Classes) Rogue Wave
2003 Prentice Hall, Inc. All rights reserved.
1.14 Basics of a Typical C++ Environment C++ systems
Program-development environment Language C++ Standard Library
2003 Prentice Hall, Inc. All rights reserved.
1.14 Basics of a Typical C++ Environment Phases of C++ Programs: 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute
Loader Editor Disk
Program is created in the editor and stored on disk. Preprocessor program processes the code. Compiler creates object code and stores it on disk. Linker links the object code with the libraries, creates [Link] and stores it on disk
Preprocessor
Disk
Compiler
Disk
Linker
Disk
Primary Memory
Disk
Loader puts program in memory.
. . . . . .
Primary Memory
CPU
. . . . . .
CPU takes each instruction and executes it, possibly storing new data values as the program executes.
2003 Prentice Hall, Inc. All rights reserved.
1.14 Basics of a Typical C++ Environment Input/output
cin
Standard input stream Normally keyboard
cout
Standard output stream Normally computer screen
cerr
Standard error stream Display error messages
2003 Prentice Hall, Inc. All rights reserved.
10
1.21 A Simple Program: Printing a Line of Text Comments
Document programs Improve program readability Ignored by compiler Single-line comment
Begin with //
Preprocessor directives
Processed by preprocessor before compiling Begin with #
2003 Prentice Hall, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12
// Fig. 1.2: fig01_02.cpp // A first program in C++. Function main #include <iostream>
11
Single-line comments.
Outline
// function main int main() { std::cout << "Welcome to C++!\n"; return 0; //
returns an integer value. begins Preprocessor directive to Left brace { function fig01_02.cpp stream begins program execution appears Function include input/output Statements end with a main body. (1 of 1) header file <iostream>. exactly once in every C++ semicolon ;. program.. fig01_02.cpp Corresponding right brace } indicate that program ended successfully ends function body. Stream insertion Name cout belongs to operator. main namespace std. Keyword return is one of several means to exit function; value 0 indicates program terminated successfully. output (1 of 1)
} // end function
Welcome to C++!
2003 Prentice Hall, Inc.
All rights reserved.
12
1.21 A Simple Program: Printing a Line of Text Standard output stream object
std::cout Connected to screen <<
Stream insertion operator Value to right (right operand) inserted into output stream
Namespace
std:: specifies using name that belongs to namespace std std:: removed through use of using statements
Escape characters
\ Indicates special character output
2003 Prentice Hall, Inc. All rights reserved.
13
1.21 A Simple Program: Printing a Line of Text
Escape equence \n \t \r escription Ne line. osition the screen cursor to the beginning o the next line. orizontal tab. tab stop. ove the screen cursor to the next
arriage return. osition the screen cursor to the beginning o the current line; do not advance to the next line. lert. ound the system bell. Backslash. sed to print a backslash character. ouble quote. sed to print a double quote character.
\a \\ \"
2003 Prentice Hall, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13
// Fig. 1.4: fig01_04.cpp // Printing a line with multiple statements. #include <iostream> // function main begins program execution int main() { std::cout << "Welcome "; std::cout << "to C++!\n"; return 0;
14
Outline
Multiple stream insertion statements produce one line of output. fig01_04.cpp (1 of 1) fig01_04.cpp output (1 of 1)
// indicate that program ended successfully
} // end function main
Welcome to C++!
2003 Prentice Hall, Inc.
All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12
// Fig. 1.5: fig01_05.cpp // Printing multiple lines with a single statement #include <iostream> // function main begins program executionUsing newline characters print on multiple lines. int main() { std::cout << "Welcome\nto\n\nC++!\n"; return 0; // indicate that program ended successfully
15
Outline
to fig01_05.cpp (1 of 1) fig01_05.cpp output (1 of 1)
} // end function main
Welcome to C++!
2003 Prentice Hall, Inc.
All rights reserved.
16
1.22 Another Simple Program: Adding Two Integers Variables
Location in memory where value can be stored Common data types
int - integer numbers char - characters double - floating point numbers
Declare variables with name and data type before use
int integer1; int integer2; int sum;
Can declare several variables of same type in one declaration
Comma-separated list int integer1, integer2, sum;
2003 Prentice Hall, Inc. All rights reserved.
17
1.22 Another Simple Program: Adding Two Integers Variables
Variable names
Valid identifier Series of characters (letters, digits, underscores) Cannot begin with digit Case sensitive
2003 Prentice Hall, Inc. All rights reserved.
18
1.22 Another Simple Program: Adding Two Integers Input stream object
>> (stream extraction operator)
Used with std::cin Waits for user to input value, then press Enter (Return) key Stores value in variable to right of operator Converts value to variable data type
= (assignment operator)
Assigns value to variable Binary operator (two operands) Example:
sum = variable1 + variable2;
2003 Prentice Hall, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
// Fig. 1.6: fig01_06.cpp // Addition program. #include <iostream> // function main begins program execution int main() Declare integer variables. { int integer1; // first number to be input by user int integer2; // second number to be input by user Use stream extraction int sum; // variable in which sum will be stored std::cout << "Enter first std::cin >> integer1;
19
Outline
fig01_06.cpp (1 of 1)
operator with standard input stream to obtain user input. integer\n"; // prompt
// read an integer
std::cout << "Enter second integer\n"; // prompt std::cin >> integer2; // be performed in Calculations canread an integer output
lines 18 and 20:
sum = integer1 + integer2; // assign result to sum std::cout << "Sum is " << std::cout << "Sum is " << sum << std::endl; // print return 0;
statements: Stream manipulator alternative for std::endl outputs a newline, then flushes output integer1 + integer2 << std::endl; sum buffer.
// indicate that program ended successfully
} // end function main
Concatenating, chaining or cascading stream insertion operations.
2003 Prentice Hall, Inc.
All rights reserved.
Enter first integer 45 Enter second integer 72 Sum is 117
20
Outline
fig01_06.cpp output (1 of 1)
2003 Prentice Hall, Inc.
All rights reserved.
21
1.23 Memory Concepts Variable names
Correspond to actual locations in computer's memory Every variable has name, type, size and value When new value placed into variable, overwrites previous value Reading variables from memory nondestructive
2003 Prentice Hall, Inc. All rights reserved.
22
1.23 Memory Concepts
std::cin >> integer1;
Assume user entered 45
integer1 45
std::cin >> integer2;
Assume user entered 72
integer1 integer2
45 72
sum = integer1 + integer2;
integer1 integer2 sum
45 72 117
2003 Prentice Hall, Inc. All rights reserved.
23
1.24
Arithmetic
Arithmetic calculations
*
Multiplication
/
Division Integer division truncates remainder 7 / 5 evaluates to 1
%
Modulus operator returns remainder 7 % 5 evaluates to 2
2003 Prentice Hall, Inc. All rights reserved.
24
1.24
Arithmetic
Rules of operator precedence
Operators in parentheses evaluated first
Nested/embedded parentheses Operators in innermost pair first
Multiplication, division, modulus applied next
Operators applied from left to right
Addition, subtraction applied last
Operator(s) () Operation(s) Order to right Operators applied from leftof evaluation (precedence) Parentheses Evaluated first. If the parentheses are nested, the expression in the innermost pair is evaluated first. If there are several pairs of parentheses on the same level (i.e., not nested), they are evaluated left to right.
*, /, or % + or -
Multiplication Division Evaluated second. If there are several, they re Modulus evaluated left to right. Addition Subtraction Evaluated last. If there are several, they are evaluated left to right.
2003 Prentice Hall, Inc. All rights reserved.
25
1.25 Decision Making: Equality and Relational Operators if structure
Make decision based on truth or falsity of condition
If condition met, body executed Else, body not executed
Equality and relational operators
Equality operators
Same level of precedence
Relational operators
Same level of precedence
Associate left to right
2003 Prentice Hall, Inc. All rights reserved.
26
1.25 Decision Making: Equality and Relational Operators
Sta nd a rd a lg e b ra ic e q ua lity o p e ra to r o r re la tio na l o p e ra to r C++ e q ua lity o r re la tio na l o p e ra to r Exa m p le o f C++ c o nd itio n M e a ning o f C++ c o nd itio n
Relational operators > < > < >= <= x > y x < y x >= y x <= y x is greater than y x is less than y x is greater than or equal to y x is less than or equal to y
u e
Equality operators =
== !=
x == y x != y
x is equal to y x is not equal to y
{
2003 Prentice Hall, Inc. All rights reserved.
27
1.25 Decision Making: Equality and Relational Operators using statements
Eliminate use of std:: prefix Write cout instead of std::cout
2003 Prentice Hall, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// Fig. 1.14: fig01_14.cpp // Using if statements, relational // operators, and equality operators. #include <iostream> using std::cout; using std::cin; using std::endl; // program uses cout // program uses cin // program uses endl
28
Outline
fig01_14.cpp (1 of 2) using statements eliminate need for std:: prefix.
Declare variables. // function main begins program execution int main() { Can to be read from user int num1; // first numberwrite cout and cin without std:: prefix. int num2; // second number to be read from user
cout << "Enter two integers, and I will tell you\n" if structure compares values << "the relationships they satisfy: "; of num1 and num2 If condition is cin >> num1 >> num2; // read two integers to test fortrue if ( num1 == num2 ) cout << num1 << " is
if ( num1 != num2 ) cout << num1 << " is not equal to " << num2 << endl;
(i.e., equality. values are equal), execute this if structure compares values statement. If << endl; of to " and num2 to test is equal num1 << num2 condition fortrue (i.e., values are not equal), execute inequality. this statement.
2003 Prentice Hall, Inc.
All rights reserved.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
if ( num1 < num2 ) cout << num1 << " is less than " << num2 << endl; if ( num1 > num2 ) cout << num1 << " is greater than " << num2 << endl; if ( num1 <= num2 ) cout << num1 << " is less than or equal to " << num2 << endl; if ( num1 >= num2 ) cout << num1 << " is greater than or equal to " << num2 << endl; return 0; // indicate that program ended successfully
29
Outline
fig01_14.cpp Statements of 2) be split over (2 may several lines. fig01_14.cpp output (1 of 2)
} // end function main
Enter two integers, and I will tell you the relationships they satisfy: 22 12 22 is not equal to 12 22 is greater than 12 22 is greater than or equal to 12
2003 Prentice Hall, Inc.
All rights reserved.
Enter two integers, and I will tell you the relationships they satisfy: 7 7 7 is equal to 7 7 is less than or equal to 7 7 is greater than or equal to 7
30
Outline
fig01_14.cpp output (2 of 2)
2003 Prentice Hall, Inc.
All rights reserved.
1.26 Thinking About Objects: Introduction to Object Technology and the Unified Modeling Language Object oriented programming (OOP)
Model real-world objects with software counterparts Attributes (state) - properties of objects
Size, shape, color, weight, etc.
31
Behaviors (operations) - actions
A ball rolls, bounces, inflates and deflates Objects can perform actions as well
Inheritance
New classes of objects absorb characteristics from existing classes
Objects
Encapsulate data and functions Information hiding Communicate across well-defined interfaces
2003 Prentice Hall, Inc. All rights reserved.
1.26 Thinking About Objects: Introduction to Object Technology and the Unified Modeling Language User-defined types (classes, components)
Data members
Data components of class
32
Member functions
Function components of class
Association Reuse classes
2003 Prentice Hall, Inc. All rights reserved.
1.26 Thinking About Objects: Introduction to Object Technology and the Unified Modeling Language Object-oriented analysis and design (OOAD) process
Analysis of projects requirements Design for satisfying requirements Pseudocode
Informal means of expressing program Outline to guide code
33
2003 Prentice Hall, Inc. All rights reserved.
1.26 Thinking About Objects: Introduction to Object Technology and the Unified Modeling Language Unified Modeling Language (UML)
2001: Object Management Group (OMG)
Released UML version 1.4
34
Model object-oriented systems and aid design Flexible
Extendable Independent of many OOAD processes One standard set of notations
Complex, feature-rich graphical language
2003 Prentice Hall, Inc. All rights reserved.