C: Chapter 3 - Radford University

Chapter 3 Flow Control
By C. Shing
ITEC Dept
Radford University
Objectives



Understand how to use assignment statement
Understand how to use conditional statement
Understand how to use loop statement
Slide 2
Assignment Statement
Identifier assignment_operator expression;
Represents
identifier = identifier assignment_operator
(expression);

After evaluating the right hand side of =,
it stores result to the left hand side identifier
(i.e. memory) and change to the data type of left
hand side
Slide 3
Assignment Statement – assignment
operator

Assignment operator

=, +=,-=, *=, /=, %=
Example:
x *= 3
Means x=x*3
Slide 4
Assignment Statement (Cont.)

Identifier = expression;
Both sides of data type should match. If not, then
the right hand side of type will be widened
automatically to the left hand side data type.
Otherwise, warning message will be given
for narrowing data type.
Slide 5
Assignment Statement (Cont.)

Type conversion:


Automatic conversion rule
Manual conversion: use casting
Slide 6
Assignment Statement (Cont.)

Automatic conversion rule:

The widest data type in an expression determines the
data type of the expression



unsigned type is wider than the corresponding type
the rest from widest: double, float, long, int, short (or char)
Finally, the expression data type will be widened to
the data type of the identifier
Slide 7
Assignment Statement (Cont.)

Examples:
unsigned u;
long g;
int i;
unsigned long ul;
ul = u-3*g +i; // right hand side result type
// long is converted to unsigned long
// before stored in ul
Slide 8
Assignment Statement (Cont.)

Examples:
unsigned u;
float f;
int i;
double db;
db = u/3-i+f; // right hand side result type
// float is converted to double before
// stored to db
Slide 9
Assignment Statement (Cont.)

Casting:

Identifier = (left hand side type) (expression)
Slide 10
Assignment Statement (Cont.)

Examples:
unsigned u;
long g;
int i;
unsigned long ul;
i = (int) (u-3*g +4); // right hand side result type
// is long
Slide 11
Conditional Statement - if


if, if .. else, ?:, switch
if form:

if (condition)
{
…
}
Slide 12
Conditional Statement – if (Cont.)
Note: condition is evaluated using short-circuit
If condition consists of condition1 and condition2
connected by a logic operator:


Condition1 && condition2
if condition1 is false,
then it will not evaluate condition2
Condition1 || condition2
if condition1 is true,
then it will not evaluate condition2
Slide 13
Conditional Statement – if (Cont.)

Example:
int x;

if (x = 5)
{
printf(“Always TRUE is printed!\n”);
}
Slide 14
Conditional Statement – if … else

if … else form:

if (condition)
{
…
}
else
{
…
}
Slide 15
Conditional Statement – if … else
(Cont.)

Example:

if (x<y)
{
min = x;
}
else
{
min = y;
}
Slide 16
Conditional Statement – ?:

form: identifier =
(condition)?true part:false part
Slide 17
Conditional Statement – ?: (Cont.)

Example: (Same example as previous one)

min = (x<y) ? x : y;
Slide 18
Conditional Statement – switch
switch form: values (char/int) cannot be range as in
Visual Basic


switch (expression)
{
case value1:
…
break; // quit the current (switch) statement
case value2:
case value3:
…
break; // do this part when value2 or value3
Slide 19
Conditional Statement – switch (Cont.)

switch form: (Cont.)
case …:
…
break;
default: // everything else
…
}
Slide 20
Conditional Statement – switch (Cont.)

Example:
switch (character) {
case ‘a’:
case ‘A’: a_count++;
break;
…
default:
printf(“%c is not a letter!\n”, character);
}
Slide 21
Loop Statement
 while
 do … while
 for
Steps of writing a loop:
1. Identify the loop body: repetition part
2. Identify condition that can make the
repetition of loop body either true of false;
Make sure the first time, condition is true
3. Initialize loop condition before loop
4. Update loop condition at end of loop body
Slide 22
Loop Statement - while

while form: repeat loop body when condition is
true – pre-condition

while (condition part)
{
…
}
Note: condition part can be more than one statement,
separated by a comma
Example: while (scanf("%c", &character), character !='\n');
What task does the statement above perform?
Slide 23
Loop Statement - while

Condition can be

Counter control (definite loop): use counter
Example:
int count=1;
// the following prints out 5 times only
while (count <= 5)
{
++count;
printf(“%d\n”, count);
}
Slide 24
Loop Statement - while

Condition can be (Cont.)

Sentinel control (indefinite loop):
use pseudo data (sentinel) for condition
Example: sentinel data is any negative score
int score;
scanf(“%d”, &score);
while (score >= 0)
{
printf(“%d\n”, score);
scanf(“%d”, &score);
}
Yard-Meter Conversion
Slide 25
Loop Statement - while

Condition can be (Cont.)

More than 1 statement
Example:
Skip 1st Line
Slide 26
Loop Statement – while (Cont.)

Example:

Hard –to-find Error:
int x;
// the following is an infinite loop
while (x = 5)
{
printf(“Always TRUE is printed!\n”);
}
Slide 27
Loop Statement – while (Cont.)

Example: (Use break to get out of loop)
int x, count=0;
// the following prints out TRUE 5 times only

while (x = 5)
{
++count;
printf(“Always TRUE is printed!\n”);
if (count == 5)
break;
}
Slide 28
Loop Statement – do while

do while form: repeat loop body when condition
is true – post-condition

do
{
…
} while (condition);
Slide 29
Loop Statement – do while (Cont.)

Example:
int x=0;
do
{
++x;
printf(“Always TRUE is printed!\n”);
} while (x != 5)
Slide 30
Loop Statement - for

for form: repeat loop body when condition is
true – pre-condition

Most general form: can represent
while and do while loops
Slide 31
Loop Statement – for (Cont.)

for (initialization, exprPart1, …;
exprPart2, …,condition;
exprPart3, …,last statement in loop body)
{
…
}
Slide 32
Loop Statement – for (Cont.)

Example:
int i; // loop index must be defined
// outside for loop
for (i=0;i<5;++i)
{
printf(“TRUE is printed!\n”); // print 5 times
}
Slide 33
Loop Statement – for (Cont.)

Example: (Same as the previous one)
int i=0;
// print 5 times
for (;i<5; printf(“TRUE is printed!\n”), ++i);
Slide 34
Loop Statement – for (Cont.)

Example: (Use continue statement to skip current loop)
int x, count=0;
// the following prints out TRUE 5 times only
while (count <=10)
{
++count;
if (count %2 == 1) // skip odd number times of print
continue;
printf(“TRUE is printed!\n”);
}
Slide 35
Loop Statement – for (Cont.)

Represent while loop:
for (;condition;)
{
…
}
Slide 36
Loop Statement – for (Cont.)
How to check end of file:
1.
If read a character: (Must deal with \n)
Use scanf(“%c”, &c)>0 to read
in a character to check any character being read
(if reach to end of file, scanf returns -1)


Example 1: a.out < checkEOF.c
If read an integer:
Use scanf(“%d”, &number)>0 to read
2.
Slide 37
Loop Statement – for (Cont.)

Represent do while loop:
for (;loop body statements, condition;);
Slide 38
Keyboard Input Format Function - scanf

Form: scanf(“pure_format”, variable_address);




Format: similar to those used in printf, however, no character or strings
included
%i: for decimal, octal (data begins with 0) or hexadecimal (data begins with 0x)
If use %s format, it reads all until it reaches the first white space
&variable represents the address of the memory (or variable)
Example:
char c;
int i;
double db;
char s[80]; // remember s is address: array of 80 characters
scanf(“%c%d%lf%s”, &c, &i, &db, s);
// sample data:a 100 -1.23 This is a sample data
// c=‘a’, i=100, db=-1.23, s=“This”
Slide 39
Class Example




Example 1
Example 2 : print character ‘2’
in front of each line
Read Character : read a character after reading a
number
For loop
Slide 40
Assignment

Assignment #1
Slide 41
Practice
Given int a=1,b=2,c=3,d=4;
Find the values of the following table:
Expression Value
________ _____
a +=b+c
a=
b *=c=d+5
b=
Slide 42
Practice - Answer
Given int a=1,b=2,c=3,d=4;
Find the values of the following table:
Expression Value
________ _____
a +=b+c
a= 6
b *=c=d+5
b= 18
Slide 43
References
Herbert Schildt: C: The Complete Reference,
4th ed, Osborne Publishing
 Deitel & Deitel: C How to Program, 4th ed.,
Chapter 3, 4 & 9, Prentice Hall

Slide 44