0% found this document useful (0 votes)
7 views29 pages

Lec2 Notes Pages

The document outlines key concepts in C++ programming, including input/output operations, type compatibility, expressions, precedence rules, and control flow structures such as if statements and loops. It provides examples and explanations of various operators, escape sequences, and string handling. Additionally, it emphasizes the importance of proper syntax and logical structuring in programming.

Uploaded by

gp5smsftfr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views29 pages

Lec2 Notes Pages

The document outlines key concepts in C++ programming, including input/output operations, type compatibility, expressions, precedence rules, and control flow structures such as if statements and loops. It provides examples and explanations of various operators, escape sequences, and string handling. Additionally, it emphasizes the importance of proper syntax and logical structuring in programming.

Uploaded by

gp5smsftfr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

CS 31:

Introduction To Computer Science I


Howard A. Stahl

Agenda
• Revisiting Output and Input
• Type Compatibility and Conversion
• Expressions and Precedence Rules
• Selective Control
• Repetition

Revisiting C++ Output


• cout is connected to the terminal screen
– cout << expr1 << ... << exprn ;
• << referred to as the insertion operator
• expressions are normally variables or
literals
• the identifier endl can be used to send a
new-line-character and flush the buffer
Revisiting C++ Output
• Examples:
– cout << "Hello, World\n";
– cout << "Hello" << "," << " "
<< "World" << endl;
– cout << "1" << endl;
– cout << 1 << endl;
– cout << 5*3 << endl;
– cout << 1 << 1 << endl;

Escape Sequences
• Characters Following A Backslash Have A
Different Meaning From The Character
Themselves

Escape Sequences
Escape Sequences

“Magic Formula”
• Use The Following To Output 2 Digits
After The Decimal Point When Working
With cout
– cout.setf( ios::fixed );
– cout.setf( ios::showpoint );
– cout.precision( 2 );

Revisiting C++ Input


• cout is connected to the terminal screen
– cin >> var1 >> ... >> varn ;
• >> referred to as the extraction operator
• variables are assigned values from standard
input
• values read are separated by whitespace
– spaces, tabs, CR
– cin is greedy
Revisiting C++ Input
• Examples:
– cin >> fahrenheit;
– cin >> x_coord >> y_coord;
• Always better to issue prompt for input
– cout << “Enter temperature: “;
– cin >> fahrenheit;
– char symbol1, symbol2;
– cout << "Enter your initials:";
– cin >> symbol1 >> symbol2;

Revisiting Character Data


• Character Literals use single quote
– ‘A’ ‘5’ ‘?’ ‘\n’
• Character variables can be assigned character
literal values
– char first;
– char last;
– first = ‘P’;
– last = ‘ ‘;

Revisiting String Data


• String Literals use double quotes
– “Hello World”
– “Thank You, Maam”
Revisiting String Data
• C++ has a data type of “string” to store
sequences of characters
– Not a primitive data type - A distinction that
will become much more important later on…
– Must say: #include <string>
– Operator + when working on strings will
concatenate two strings together
– cin >> aString reads only up to the first
whitespace character (tab, space, newline)

I/O Example

Copyright © 2016 Pearson Inc.

I/O Example

Copyright © 2016 Pearson Inc.


Important String Handling Detail
• cin >> eats leading whitespace but
breaks on whitespace
• getline( cin , aString ) reads a
texual line ending with newline, consuming
the newline character itself

Important String Handling Detail


• cin >> eats leading whitespace but
breaks on whitespace
• getline( cin , aString ) reads a
texual line ending with newline, consuming
the newline character itself
• cin.ignore( 1000, ‘\n’) discards up
to and including the next \n character or
1000 characters, which ever comes first

Important String Handling Detail


• cin >> actualAge;
• cin.ignore( INT_MAX, ‘\n’ );
• getline( cin, dogName );
• getline( cin, dogBreed )
Constants
• It’s a good idea to name values to prevent
“magic” values showing up in your code
• Use const declaration to state that value
cannot change after assignment
• Examples:
const double PI = 3.14159;
const int LIMIT = 15;

Type Compatibility
• Generally, you should not try storing values
of one type in a variable of a different type
– Type Mismatch Error
• Storing a double in int leads to truncation
• Storing an int in a double is OK
– best to convert

Type Compatibility
• You can coerce types from one to another
by saying:

double value( 12.510104 );


int i=static_cast<int>( value );
Type Compatibility
• Need to be careful if you mix types and
values on assignment statements or
arithmetic expressions
• When working with
A operand B
where operand may be +, -, *, /, or %
– if A or B is double, the result will be double

Type Compatibility
• Examples:
– 3 + 4.4 =
– 2.2 * 3 =
– 2.2 * 3.0 =
– 2*3=
– 4.5 * 2 =
– 9*2=

Division
• When working with
A / B
• If either operand is real, then the other will
be converted to a real and the result will be
real
• If both are int, then integer division occurs
and the result will be an int
– modulus operator % yeilds the remainder

• Our Initial Programs Won't Require Much


Analysis or Design
Division
• Examples:
– 9/4=
– 9.0 / 4 =
– 9%4=
– 11 / 4 =
– 11 % 4 =
– -11 % 4 =
– TRICK QUESTION: var_a * (1 / 4) =

Precedence Rules
• Operators in an expression are evaluated
according to precedence rules
– ()
– *, /, %
– +, -
– =, +=, *=, /=, -=, %=
• Precedence described in Appendix 2, page
917

Precedence Rules
Precedence Rules

Precedence Rules

Precedence Rules
“Shorthand” Operators
• Calculate And Assign

Flow of Control
• Like a cook following recipe instructions,
computers execute statements one after
another
• Certain statements alter this flow of control
– if
– if-else
– while
– do-while

Selective Control Flow in C++


• Programs often choose between different
instructions in a variety of situations
– sometimes, code must be skipped because it
does not apply in the current situation
– other times, one of several code blocks must be
chosen to be executed based on the current
situtation
The if Statement
• Guarded Action
if ( x < y )
{
cout<<“x < y”;
}

The if Statement
• Guarded Action
if ( x < y )
{
cout<<“x < y”;
}

The if Statement
• Guarded Action
if ( x < y )
{
cout<<“x < y”; Logical Test
}
The if Statement
• Guarded Action
if ( x < y )
{ false true
cout<<“x < y”; Logical Test
}

The if Statement
• Guarded Action
if ( x < y )
{ false true Any Block
cout<<“x < y”; Logical Test Of C++
} Statements

The if Statement
• Guarded Action
if ( x < y )
{ false true Any Block
cout<<“x < y”; Logical Test Of C++
} Statements
Comparison Operators
• Testing Ordering Testing Equality
– <, <=, >, >= == , !=

Common Mistake
• Assignment (=) is different from Equality
(==)
if (salary = 100000)
{
cout << "You’re fired!";
}
• Equality is always dangerous when working
with real operands

More Complex Expressions


• Examples:
if (rate * balance > 1000)
if (a * b != c + d * e)
if (a / b > c)
• Never Hurts To Add Parenthesis To Make
Your Intentions Clear
• Arithmetic Operators Have Higher
Precendence Than Relational Operators
– 24.00000001 != 24
Logical Operators
• &&means AND, ||means OR, ! means NOT
• Examples:
– true and false =
– false and true =
– true or false =
– false or true =
– not true =
– not false =

Logical Operators

Logical Operators
• Logical Operators connect expressions
• Examples:
if ((0 <= x) && (x > 3))
if ((y != 1) && (x/y > 4))
• C++ uses short-circuit evaluation
– The evaluation of condition stops because the
condition turns false (in case of &&) or true (in
case of ||)
Precedence Rules
• Parentheses
• Unary Operators: +, -, !
• Arithmetic Operators: *, / then +, -, then %
• Comparison Operators: <, <=, >, >=, ==, !=
then && then ||
• See Appendix 2 for full set of rules

Time For Our Next Demo!


• Selection.cpp

Summarizing Our Second Demo!


• Proper Indentation Helps Express Your
Intentions
– But Remember, The Computer Cares Little For
Whitespace....
The if-else Statement
• Alternative Action
if ( x < y )
{
x++;
}
else
{
y++;
}

The if-else Statement


• Alternative Action
if ( x < y )
{
x++;
}
else
{
y++;
}

The if-else Statement


• Alternative Action
if ( x < y )
{
x++;
}
Logical Test
else
{
y++;
}
The if-else Statement
• Alternative Action
if ( x < y )
{
x++;
false true
}
Logical Test
else
{
y++;
}

The if-else Statement


• Alternative Action
if ( x < y )
{
x++; Any Block false true Any Block
} Of C++ Of C++
Logical Test
else Statements Statements
{
y++;
}

The if-else Statement


• Alternative Action
if ( x < y )
{
x++; Any Block false true Any Block
} Of C++ Of C++
Logical Test
else Statements Statements
{
y++;
}
Multiway if-else Statement

Copyright © 2016 Pearson Inc.

Multiway if-else Statement

Copyright © 2016 Pearson Inc.

Nested Conditional Statements


• Selection Statements can be used in
combination
• Just be sure that the else clause is not
dangling...
if (precipitating)
if (temperature < 32)
cout << "It’s snowing";
else // HMMM...
cout << "It’s raining";
Time For Our Next Demo!
• Nesting.cpp

(See Handout For Example 3)

Summarizing Our Third Demo!


• Nested Conditionals Make For Complex
Scenarios
• Use Parentheses To Prevent A Dangling else
• Remember Only One Guarded Action Or
Alternative Is Chosen

Repetitive Control Flow in C++


• Programs often must repeat different
instructions in a variety of situations
– sometimes, code must be repeated a
determinate number of times
– other times, code must be repeated an
indeterminate number of times
The while Statement
• Indeterminate Loop
– Repeat While A Condition Is True

while ( logical-expression ) {
...block of statements...
}

The while Statement


• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
}

The while Statement


• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
}
The while Statement
• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
}
Logical Test

The while Statement


• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
} false true
Logical Test

The while Statement


• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
} false true Any Block
Logical Test Of C++
Statements
The while Statement
• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
} false true Any Block
Logical Test Of C++
Statements

The while Statement


• Indeterminate Loop
while (x < y) {
cout << “x<y\n”;
x++;
} false true Any Block
Logical Test Of C++
Statements

The while Statement

Copyright © 2016 Pearson Inc.


The do...while Statement
• Indeterminate Loop
– Repeat While A Condition Is True

do {
...block of statements...
} while ( logical-expression );

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”;
x++;
} while (x < y);

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”;
x++;
} while (x < y);
The do...while Statement
• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

Logical Test

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

false true
Logical Test
The do...while Statement
• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

false true
Logical Test

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

false true
Logical Test

The do...while Statement


• Indeterminate Loop
do {
cout << “x<y\n”; Any Block
x++; Of C++
} while (x < y); Statements

false true
Logical Test
The do...while Statement

Copyright © 2016 Pearson Inc.

Time For Our Next Demo!


• Loops.cpp

(See Handout For Example 3)

Summarizing Our Third Demo!


• Typically, one of the loop forms fits your
problem better than the other
• However, any loop written in one form can
be re-written in the other
while versus do...while
• while loop may never execute
• do...while loop will always execute
atleast once

When To Use Loops


• Whenever you have a task to do repeatedly
– “As long as some condition is true, do some
action...”
– “Do some action until some condition is no
longer true...”
• Sometime, looping is harder to recognize
– For a given value in cents (0 to 99), calculate
how many quarters, dimes, nickels and pennies
are required to represent that value

How To Use Loops


• Identify the terminating condition
– how will the loop stop?
• Identify the initial condition
– what is true before the loop ever executes?
• How is progress made toward the
terminating condition
– something must guarantee progress toward the
terminating condition
– without progress, you will have an infinite loop
Summary
• Revisiting Output and Input
• Type Compatibility and Conversion
• Expressions and Precedence Rules
• Selective Control
• Repetition

You might also like