Outline
CSE131: Computer Programming
Prof. Mahmoud Khalil
2003 Prentice Hall, Inc.
All rights reserved.
2
Introduction to C++ Programming
• C++ language
– Facilitates structured and disciplined approach to computer
program design
• Following several examples
– Illustrate many important features of C++
– Each analyzed one statement at a time
• Structured programming
• Object-oriented programming
2003 Prentice Hall, Inc. All rights reserved.
3
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.
Outline
4
1 // Fig. 1.2: fig01_02.cpp
2 // A first program in C++. Single-line comments.
3 #include <iostream>Function main returns an
4 integer
Left brace { begins Preprocessor
value. function directive to
fig01_02.cpp
5 body.program
// function main begins Function include input/output Statements
main appears
execution stream end with a(1 of 1)
6 int main() header
exactly once file <iostream>.
in every C++ semicolon ;.
7 {
8
program..
std::cout << "Welcome to C++!\n"; fig01_02.cpp
9 Corresponding right brace } output (1 of 1)
10 return 0; // indicate thatbody.
ends function program ended successfully
11
Name coutStream insertion
belongs to operator.
12 } // end function main
namespace std.
Keyword return is one of
Welcome to C++!
several means to exit
function; value 0 indicates
program terminated
successfully.
2003 Prentice Hall, Inc.
All rights reserved.
5
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.
6
A Simple Program:
Printing a Line of Text
Escape Sequence Description
\n Newline. Position the screen cursor to the
beginning of the next line.
\t Horizontal tab. Move the screen cursor to the next
tab stop.
\r Carriage return. Position the screen cursor to the
beginning of the current line; do not advance to the
next line.
\a Alert. Sound the system bell.
\\ Backslash. Used to print a backslash character.
\" Double quote. Used to print a double quote
character.
2003 Prentice Hall, Inc. All rights reserved.
7
1 // Fig. 1.4: fig01_04.cpp
2 // Printing a line with multiple statements.
Outline
3 #include <iostream>
4
5
fig01_04.cpp
// function main begins program execution Multiple stream insertion (1 of 1)
6 int main()
statements produce one line of
7 {
output. fig01_04.cpp
8 std::cout << "Welcome ";
9 std::cout << "to C++!\n"; output (1 of 1)
10
11 return 0; // indicate that program ended successfully
12
13 } // end function main
Welcome to C++!
2003 Prentice Hall, Inc.
All rights reserved.
8
1 // Fig. 1.5: fig01_05.cpp
2 // Printing multiple lines with a single statement
Outline
3 #include <iostream>
4
5 // function main begins program execution Using newline characters to fig01_05.cpp
6 int main() print on multiple lines. (1 of 1)
7 {
8 std::cout << "Welcome\nto\n\nC++!\n"; fig01_05.cpp
9 output (1 of 1)
10 return 0; // indicate that program ended successfully
11
12 } // end function main
Welcome
to
C++!
2003 Prentice Hall, Inc.
All rights reserved.
9
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.
10
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.
11
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.
12
1 // Fig. 1.6: fig01_06.cpp
2 // Addition program.
Outline
3 #include <iostream>
4
5 // function main begins program execution
fig01_06.cpp
6 int main() (1 of 1)
7 { Declare integer variables.
8 int integer1; // first number to be input by user
9 int integer2; // second number to be input by user
10 int sum; Use
// variable in stream
which sumextraction
will be stored
11 operator with standard input
12 std::cout << "Enter first stream to obtain
integer\n"; user input.
// prompt
13 std::cin >> integer1; // read an integer
14
15 std::cout << "Enter second integer\n"; // prompt
16 std::cin >> integer2; // read an integer
17
Calculations can be performed inStream
output manipulator
statements: alternative for
18 sum = integer1 + integer2; lines 18 andresult
// assign 20: to sum std::endl outputs a
19 newline, then “flushes output
20 std::cout
std::cout << "Sum is " << sum << "Sum//isprint
<< std::endl; " << sum
integer1 + integer2 << std::endl;
buffer.”
21
22 return 0; // indicate that program ended successfully
23
24 } // end function main
Concatenating, chaining or
cascading stream insertion
operations.
2003 Prentice Hall, Inc.
All rights reserved.
13
Enter first integer
45
Outline
Enter second integer
72
Sum is 117
fig01_06.cpp
output (1 of 1)
2003 Prentice Hall, Inc.
All rights reserved.
14
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.
15
Memory Concepts
std::cin >> integer1; integer1 45
– Assume user entered 45
std::cin >> integer2; integer1 45
– Assume user entered 72 72
integer2
sum = integer1 + integer2; integer1 45
integer2 72
sum 117
2003 Prentice Hall, Inc. All rights reserved.
16
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.
17
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) • Operators applied fromOrder
Operation(s) leftoftoevaluation
right (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 % Multiplication Division Evaluated second. If there are several, they re
Modulus evaluated left to right.
+ or - Addition Evaluated last. If there are several, they are
Subtraction evaluated left to right.
2003 Prentice Hall, Inc. All rights reserved.
18
Equality and Relational Operators
• 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.
19
Decision Making: Equality and Relational
Operators
Sta n d a rd a lg e b ra ic C ++ e q u a lity Exa m p le Me a n in g o f
e q u a lity o p e ra to r o r o r re la tio n a l o f C ++ C ++ c o n d itio n
re la tio n a l o p e ra to r o p e ra to r c o n d itio n
Relational operators
> > x > y x is greater than y
< < x < y x is less than y
>= x >= y x is greater than or equal to y
<= x <= y x is less than or equal to y
Equality operators
= == x == y x is equal to y
!= x != y x is not equal to y
2003 Prentice Hall, Inc. All rights reserved.
20
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.
21
1 // Fig. 1.14: fig01_14.cpp
2 // Using if statements, relational
Outline
3 // operators, and equality operators.
4 #include <iostream>
5
fig01_14.cpp
6 using std::cout; // program uses cout (1 of 2)
7 using std::cin; // program uses cin
using statements eliminate
8 using std::endl; // program uses endl
9
need for std:: prefix.
10 // function main begins programDeclare variables.
execution
11 int main()
12 {
13 Can write
int num1; // first number read and
to becout fromcinuser
14 int num2; // second number
withouttostd::
be read from user
prefix.
15
16 cout << "Enter two integers, and I will tell you\n"
17 if structure
<< "the relationships they satisfy:compares
"; values
18 cin >> num1 >> num2; of num1
// read and num2
two integers to test for
If condition is true (i.e.,
19 equality. values are equal), execute this
20 if ( num1 == num2 ) if structure compares values
21 cout << num1 << " is equal to " << num2
statement.
<< endl;
of num1 and num2If condition is true (i.e.,
to test for
22
inequality. values are not equal), execute
23 if ( num1 != num2 )
24
this statement.
cout << num1 << " is not equal to " << num2 << endl;
25
2003 Prentice Hall, Inc.
All rights reserved.
22
26 if ( num1 < num2 )
27 cout << num1 << " is less than " << num2 << endl;
Outline
28
29 if ( num1 > num2 )
30 cout << num1 << " is greater than " << num2 << endl;
fig01_14.cpp
31
Statements may
(2 of 2) be split over
32 if ( num1 <= num2 ) several lines.
33 cout << num1 << " is less than or equal to " fig01_14.cpp
34 << num2 << endl; output (1 of 2)
35
36 if ( num1 >= num2 )
37 cout << num1 << " is greater than or equal to "
38 << num2 << endl;
39
40 return 0; // indicate that program ended successfully
41
42 } // 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.
23
Enter two integers, and I will tell you
the relationships they satisfy: 7 7
Outline
7 is equal to 7
7 is less than or equal to 7
7 is greater than or equal to 7
fig01_14.cpp
output (2 of 2)
2003 Prentice Hall, Inc.
All rights reserved.
24
Assignment Operators
• Assignment expression abbreviations
– Addition assignment operator
c = c + 3; abbreviated to
c += 3;
• Statements of the form
variable = variable operator expression;
can be rewritten as
variable operator= expression;
• Other assignment operators
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
2003 Prentice Hall, Inc. All rights reserved.
25
Increment and Decrement Operators
• Increment operator (++) - can be used instead of c
+= 1
• Decrement operator (--) - can be used instead of c -
= 1
– Preincrement
• When the operator is used before the variable (++c or –c)
• Variable is changed, then the expression it is in is evaluated.
– Posincrement
• When the operator is used after the variable (c++ or c--)
• Expression the variable is in executes, then the variable is changed.
2003 Prentice Hall, Inc. All rights reserved.
26
Increment and Decrement Operators
• Increment operator (++)
– Increment variable by one
– c++
• Same as c += 1
• Decrement operator (--) similar
– Decrement variable by one
– c--
2003 Prentice Hall, Inc. All rights reserved.
27
Increment and Decrement Operators
• Preincrement
– Variable changed before used in expression
• Operator before variable (++c or --c)
• Postincrement
– Incremented changed after expression
• Operator after variable (c++, c--)
2003 Prentice Hall, Inc. All rights reserved.
28
Increment and Decrement Operators
• If c = 5, then
– cout << ++c;
• c is changed to 6, then printed out
– cout << c++;
• Prints out 5 (cout is executed before the increment.
• c then becomes 6
2003 Prentice Hall, Inc. All rights reserved.
29
Increment and Decrement Operators
• When variable not in expression
– Preincrementing and postincrementing have same effect
++c;
cout << c;
and
c++;
cout << c;
are the same
2003 Prentice Hall, Inc. All rights reserved.
30
1 // Fig. 2.14: fig02_14.cpp
2 // Preincrementing and postincrementing.
Outline
3 #include <iostream>
4
5 using std::cout;
fig02_14.cpp
6 using std::endl; (1 of 2)
7
8 // function main begins program execution
9 int main()
10 {
11 int c; // declare variable
12
13 // demonstrate postincrement
14 c = 5; // assign 5 to c
15 cout << c << endl; // print 5
16 cout << c++ << endl; // print 5 then postincrement
17 cout << c << endl << endl; // print 6
18
19 // demonstrate preincrement
20 c = 5; // assign 5 to c
21 cout << c << endl; // print 5
22 cout << ++c << endl; // preincrement then print 6
23 cout << c << endl; // print 6
2003 Prentice Hall, Inc.
All rights reserved.
31
24
25 return 0; // indicate successful termination
Outline
26
27 } // end function main
fig02_14.cpp
(2 of 2)
5
5
6
fig02_14.cpp
output (1 of 1)
5
6
6
2003 Prentice Hall, Inc.
All rights reserved.
32
Logical Operators
• Used as conditions in loops, if statements
• && (logical AND)
– true if both conditions are true
if ( gender == 1 && age >= 65 )
++seniorFemales;
• || (logical OR)
– true if either of condition is true
if ( semesterAverage >= 90 || finalExam >= 90 )
cout << "Student grade is A" << endl;
2003 Prentice Hall, Inc. All rights reserved.
33
Logical Operators
• ! (logical NOT, logical negation)
– Returns true when its condition is false, & vice versa
if ( !( grade == sentinelValue ) )
cout << "The next grade is " << grade << endl;
Alternative:
if ( grade != sentinelValue )
cout << "The next grade is " << grade << endl;
2003 Prentice Hall, Inc. All rights reserved.
34
2.20 Confusing Equality (==) and Assignment
(=) Operators
• Common error
– Does not typically cause syntax errors
• Aspects of problem
– Expressions that have a value can be used for decision
• Zero = false, nonzero = true
– Assignment statements produce a value (the value to be
assigned)
2003 Prentice Hall, Inc. All rights reserved.
35
Confusing Equality (==) and Assignment (=)
Operators
• Example
if ( payCode == 4 )
cout << "You get a bonus!" << endl;
– If paycode is 4, bonus given
• If == was replaced with =
if ( payCode = 4 )
cout << "You get a bonus!" << endl;
– Paycode set to 4 (no matter what it was before)
– Statement is true (since 4 is non-zero)
– Bonus given in every case
2003 Prentice Hall, Inc. All rights reserved.
36
Confusing Equality (==) and Assignment (=)
Operators
• Lvalues
– Expressions that can appear on left side of equation
– Can be changed (I.e., variables)
• x = 4;
• Rvalues
– Only appear on right side of equation
– Constants, such as numbers (i.e. cannot write 4 = x;)
• Lvalues can be used as rvalues, but not vice versa
2003 Prentice Hall, Inc. All rights reserved.
37
Math Library Functions
• Perform common mathematical calculations
– Include the header file <cmath>
• Functions called by writing
– functionName (argument);
or
– functionName(argument1, argument2, …);
• Example
cout << sqrt( 900.0 );
– sqrt (square root) function The preceding statement would
print 30
– All functions in math library return a double
2003 Prentice Hall, Inc. All rights reserved.
38
Math Library Functions
• Function arguments can be
– Constants
• sqrt( 4 );
– Variables
• sqrt( x );
– Expressions
• sqrt( sqrt( x ) ) ;
• sqrt( 3 - 6x );
2003 Prentice Hall, Inc. All rights reserved.
39
Me th o d De sc rip tio n Exa m p le
ceil( x ) rounds x to the smallest integer ceil( 9.2 ) is 10.0
not less than x ceil( -9.8 ) is -9.0
cos( x ) trigonometric cosine of x cos( 0.0 ) is 1.0
(x in radians)
exp( x ) exponential function ex exp( 1.0 ) is 2.71828
exp( 2.0 ) is 7.38906
fabs( x ) absolute value of x fabs( 5.1 ) is 5.1
fabs( 0.0 ) is 0.0
fabs( -8.76 ) is 8.76
floor( x ) rounds x to the largest integer floor( 9.2 ) is 9.0
not greater than x floor( -9.8 ) is -10.0
fmod( x, y ) remainder of x/y as a floating- fmod( 13.657, 2.333 ) is 1.992
point number
log( x ) natural logarithm of x (base e) log( 2.718282 ) is 1.0
log( 7.389056 ) is 2.0
log10( x ) logarithm of x (base 10) log10( 10.0 ) is 1.0
log10( 100.0 ) is 2.0
pow( x, y ) x raised to power y (xy) pow( 2, 7 ) is 128
pow( 9, .5 ) is 3
sin( x ) trigonometric sine of x sin( 0.0 ) is 0
(x in radians)
sqrt( x ) square root of x sqrt( 900.0 ) is 30.0
sqrt( 9.0 ) is 3.0
tan( x ) trigonometric tangent of x tan( 0.0 ) is 0
(x in radians)
Fig . 3.2 Ma th lib ra ry fu n c tio n s.
2003 Prentice Hall, Inc. All rights reserved.
40
Order of Precedence
• Relational and logical operators are evaluated
from left to right
– The associativity is left to right
• Parentheses can override precedence
2003 Prentice Hall, Inc. All rights reserved.
41
Order of Precedence (cont’d.)
2003 Prentice Hall, Inc. All rights reserved.
42
Order of Precedence (cont’d.)
2003 Prentice Hall, Inc. All rights reserved.
43
Order of Precedence (cont’d.)
2003 Prentice Hall, Inc. All rights reserved.
44
Order of Precedence (cont’d.)
2003 Prentice Hall, Inc. All rights reserved.
45
The int Data Type and Logical (Boolean)
Expressions
• Earlier versions of C++ did not provide built-in
data types that had Boolean values
• Logical expressions evaluate to either 1 or 0
– Logical expression value was stored in a variable of the data
type int
• Can use the int data type to manipulate logical
(Boolean) expressions
2003 Prentice Hall, Inc. All rights reserved.