Chapter 3 Flow Control By C. Shing ITEC Dept Radford University.

Post on 04-Jan-2016

227 views 3 download

transcript

Chapter 3 Flow Control

By C. Shing

ITEC Dept

Radford University

Slide 2

Objectives Understand how to use assignment statement Understand how to use conditional statement Understand how to use loop statement

Slide 3

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 4

Assignment Statement – assignment operator

Assignment operator =, +=,-=, *=, /=, %=

Example:

x *= 3

Means x=x*3

Slide 5

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 6

Assignment Statement (Cont.) Type conversion:

Automatic conversion rule Manual conversion: use casting

Slide 7

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 8

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 9

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 10

Assignment Statement (Cont.) Casting:

Identifier = (left hand side type) (expression)

Slide 11

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 12

Conditional Statement - if if, if .. else, ?:, switch if form:

if (condition)

{

}

Slide 13

Conditional Statement – if (Cont.)Note: condition is evaluated using short-circuitIf 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 14

Conditional Statement – if (Cont.) Example:

int x; if (x = 5)

{

printf(“Always TRUE is printed!\n”);

}

Slide 15

Conditional Statement – if … else if … else form:

if (condition) {

… } else {

… }

Slide 16

Conditional Statement – if … else (Cont.)

Example: if (x<y) {

min = x; } else {

min = y; }

Slide 17

Conditional Statement – ?: form: identifier =

(condition)?true part:false part

Slide 18

Conditional Statement – ?: (Cont.) Example: (Same example as previous one)

min = (x<y) ? x : y;

Slide 19

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 20

Conditional Statement – switch (Cont.)

switch form: (Cont.) case …:

break;

default: // everything else

}

Slide 21

Conditional Statement – switch (Cont.) Example:

switch (character) { case ‘a’: case ‘A’: a_count++;

break;…default:

printf(“%c is not a letter!\n”, character);}

Slide 22

Loop Statement while do … while forSteps of writing a loop:1. Identify the loop body: repetition part2. Identify condition that can make the repetition of loop body either true of false;Make sure the first time, condition is true3. Initialize loop condition before loop4. Update loop condition at end of loop body

Slide 23

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 24

Loop Statement - while Condition can be

Counter control (definite loop): use counter

Example:int count=1; // the following prints out 5 times onlywhile (count <= 5)

{ ++count;

printf(“%d\n”, count);}

Slide 25

Loop Statement - while Condition can be (Cont.)

Sentinel control (indefinite loop): use pseudo data (sentinel) for condition

Example: sentinel data is any negative scoreint score;scanf(“%d”, &score);while (score >= 0)

{ printf(“%d\n”, score);

scanf(“%d”, &score);}

Yard-Meter Conversion

Slide 26

Loop Statement - while Condition can be (Cont.)

More than 1 statement

Example:

Skip 1st Line

Slide 27

Loop Statement – while (Cont.) Example:

Hard –to-find Error:

int x;

// the following is an infinite loopwhile (x = 5)

{

printf(“Always TRUE is printed!\n”);

}

Slide 28

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 29

Loop Statement – do while do while form: repeat loop body when condition

is true – post-condition do

{

} while (condition);

Slide 30

Loop Statement – do while (Cont.) Example:

int x=0;

do {

++x;

printf(“Always TRUE is printed!\n”);

} while (x != 5)

Slide 31

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 32

Loop Statement – for (Cont.) for (initialization, exprPart1, …;

exprPart2, …,condition;

exprPart3, …,last statement in loop body) {

}

Slide 33

Loop Statement – for (Cont.) Example:

int i; // loop index must be defined

// outside for loopfor (i=0;i<5;++i)

{

printf(“TRUE is printed!\n”); // print 5 times

}

Slide 34

Loop Statement – for (Cont.) Example: (Same as the previous one)

int i=0;

// print 5 timesfor (;i<5; printf(“TRUE is printed!\n”), ++i);

Slide 35

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 36

Loop Statement – for (Cont.) Represent while loop:

for (;condition;) {

}

Slide 37

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

2. If read an integer:Use scanf(“%d”, &number)>0 to read

Slide 38

Loop Statement – for (Cont.) Represent do while loop:

for (;loop body statements, condition;);

Slide 39

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 charactersscanf(“%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 40

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 41

Assignment Assignment #1

Slide 42

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 43

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 44

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