Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Chapter 3 Flow Control By C. Shing ITEC Dept Radford University."— Presentation transcript:

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

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

3 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

4 Slide 4 Assignment Statement – assignment operator Assignment operator =, +=,-=, *=, /=, %= Example: x *= 3 Means x=x*3

5 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.

6 Slide 6 Assignment Statement (Cont.) Type conversion: Automatic conversion rule Manual conversion: use casting

7 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

8 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

9 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

10 Slide 10 Assignment Statement (Cont.) Casting: Identifier = (left hand side type) (expression)

11 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

12 Slide 12 Conditional Statement - if if, if.. else, ?:, switch if form: if (condition) { … }

13 Slide 13 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

14 Slide 14 Conditional Statement – if (Cont.) Example: int x; if (x = 5) { printf(“Always TRUE is printed!\n”); }

15 Slide 15 Conditional Statement – if … else if … else form: if (condition) { … } else { … }

16 Slide 16 Conditional Statement – if … else (Cont.) Example: if (x<y) { min = x; } else { min = y; }

17 Slide 17 Conditional Statement – ?: form: identifier = (condition)?true part:false part

18 Slide 18 Conditional Statement – ?: (Cont.) Example: (Same example as previous one) min = (x<y) ? x : y;

19 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

20 Slide 20 Conditional Statement – switch (Cont.) switch form: (Cont.) case …: … break; default: // everything else … }

21 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); }

22 Slide 22 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

23 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?

24 Slide 24 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); }

25 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 score int score; scanf(“%d”, &score); while (score >= 0) { printf(“%d\n”, score); scanf(“%d”, &score); } Yard-Meter Conversion

26 Slide 26 Loop Statement - while Condition can be (Cont.) More than 1 statement Example: Skip 1 st Line

27 Slide 27 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”); }

28 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; }

29 Slide 29 Loop Statement – do while do while form: repeat loop body when condition is true – post-condition do { … } while (condition);

30 Slide 30 Loop Statement – do while (Cont.) Example: int x=0; do { ++x; printf(“Always TRUE is printed!\n”); } while (x != 5)

31 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

32 Slide 32 Loop Statement – for (Cont.) for (initialization, exprPart1, …; exprPart2, …,condition; exprPart3, …,last statement in loop body) { … }

33 Slide 33 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 }

34 Slide 34 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);

35 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”); }

36 Slide 36 Loop Statement – for (Cont.) Represent while loop: for (;condition;) { … }

37 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 Example 1 2. If read an integer: Use scanf(“%d”, &number)>0 to read

38 Slide 38 Loop Statement – for (Cont.) Represent do while loop: for (;loop body statements, condition;);

39 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 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”

40 Slide 40 Class Example Example 1 Example 2 : print character ‘2’ Example 2 in front of each line Read Character : read a character after reading a Read Character number For loop

41 Slide 41 Assignment Assignment #1

42 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=

43 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

44 Slide 44 References Herbert Schildt: C: The Complete Reference, 4 th ed, Osborne Publishing Deitel & Deitel: C How to Program, 4th ed., Chapter 3, 4 & 9, Prentice Hall


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

Similar presentations


Ads by Google