Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Lecture 5  More flow control structures  for  do  continue  break  switch  Structured programming  Common programming errors and tips  Readings:

Similar presentations


Presentation on theme: "1 Lecture 5  More flow control structures  for  do  continue  break  switch  Structured programming  Common programming errors and tips  Readings:"— Presentation transcript:

1 1 Lecture 5  More flow control structures  for  do  continue  break  switch  Structured programming  Common programming errors and tips  Readings:  Chapter 3: Section 10-21

2 2 for statement  General form of for -statement repetition statement for (expr1; expr2; expr3) statement  The above form is equivalent to the following while statement given that expr2 exists, and that no continue statement exists in statement expr1; while (expr2) { statement expr3; }

3 3 Example of for statement /* To sum 1 to 100 */ #include int main(void) { int i, sum = 0; for (i = 1; i <= 100; i++) sum + = i; printf(“%d”, sum); return 0; }

4 4 Comma operator (,)  General form is expr1, expr2  It has the lowest precedence of all operators in C and is evaluated from left to right  The comma expression as a whole has the value and type of its right operand  Sometimes used in for statements to allow multiple initializations and multiple processing of indices  The comma operator is rarely used  Not all commas in a C program are comma operators

5 5 Examples of comma operator sum=0; for (j=1; j<=10; j++) sum += j; and for (sum=0,j=1; j<=10; j++) sum += j; and for (sum=0,j=1; j<=10; sum += j, j++) ; are equivalent

6 6 do statement  General form of do statement (repetition statement) do { statement } while (expression);  Semantics:  statement is executed first; thus the loop body is run at least once  If the value of expression is non-zero (true), the loop repeats; otherwise, the loop terminates

7 7 Example of do statement int error; /* no Boolean type support */ int n;... do { printf(“Input a positive integer: ”); scanf(“%d”, &n); if (n <= 0) { error = 1; /* non-zero value */ printf(“\nError: -ve input!\n”}; } else error = 0; } while (error);...

8 8 Program Remarks  The variable error is used as a flag:  When it is non-zero, it indicates that n  0  When it is zero, it indicates that n>0  The do-while statement makes use of error to determine whether to continue or not  If we want to execute the loop-body at least once, it is more convenient to use a do-while statement than a while statement. E.g., compare this loop with that on slide 14 of lecture 4.  While-statements can often be written as for- statements, and vice-versa.

9 9 break statement  the break statement causes an exit from the innermost enclosing loop or switch statement (discussed later) while (1) { scanf(“%lf”, &x); if (x < 0) break; /* exit loop if x is -ve */ printf(“%f\n”, sqrt(x)); } /* If break is run, jumps to here */

10 10 continue statement  continue statement causes the current iteration of a loop to stop and the next iteration to begin immediately  It can be applied in a while, do-while or for statement

11 11 Example of continue statement /* read in and sum 10 not-too-small nos. */ cnt = 0; while (cnt < 10) { scanf(“%lf”, &x); if (x > -0.01 && x < 0.01) continue; /* discard small values */ ++cnt; sum += x; /* continue transfer control here */ }

12 12 switch statement  General format of switch statement (selection statement) switch (expression) { case constant_expr1: statement_seq1 case constant_expr2: statement_seq2... case constant_exprN: statement_seqN default: statement_seq }

13 13 switch statement ( cont’d )  Semantics  Evaluate the switch expression which results in an integer type ( int, long, short, char )  Go to the case label having a constant value that matches the value of the switch expression; if a match is not found, go to the default label; if default label does not exist, terminate the switch  Terminate the switch when a break statement is encountered  If there is no break statement, execution “ falls through ” to the next statement in the succeeding case

14 14 Example of switch statement /* To print the no. of days in a month */ scanf(“%d”, &month); /* assume month is integer var.*/ switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(“31 days”); break; case 4: case 6: case 9: case 11: printf(“30 days”); break; case 2: printf(“28 days “); break; default: print(“input error”); }

15 15 Another example: switch /* To find out the type of value stored in variable c (a character variable) */ switch (c) { case ‘0’: case ‘1’: case ‘2’: case ‘3’: case ‘4’: case ‘5’: case ‘6’: case ‘7’: case ‘8’: case ‘9’: printf(“A digit\n”); /* no braces is needed */ break; case ‘ ’: case ‘\n’: case ‘\t’: printf(“A white-space\n”); break; default: printf(“A letter or special character\n”); break; }

16 16 Another example  Task: write a program that reads in two integers, month and day ; and then calculates the number of days from 1/1/2003 to day/month/2003  Idea:  Step 1: Calculate the number of days from January up to month-1  Step 2: Add day to the number of days calculated in step 1

17 17 conditional ( ?: ) operator  General format of ?: operator is expr1 ? expr2 : expr3  Semantics  expr1 is evaluated  If the above result is non-zero, then expr2 is evaluated; else expr3 is evaluated  The value of the whole ?: expression is the value of expression evaluated at the end

18 18 Structured Programming  Structured programming statements are single-entry and single exit Structured programming construct  Goto statements will render some programming constructs to have more than one entry/exit

19 19 Examples: if, switch E S1S1 S2S2 T F E S1S1 SkSk S2S2 ….. if-then-else case

20 20 Structured Programming Guidelines  The flow of control of a structured program is easier to follow  How?  Apply stepwise refinement to decompose a problem into smaller problems repeatedly until they are simple enough to be coded  In each refinement, apply one of these 7 control structures: compound, if-, if-else, switch, while, do-while, for  For efficiency purpose, may use continue/break statements with great care

21 21 Common programming errors  Mix up = and == E.g. the expression in the following if-statement is always false: if (x=0) printf(“Hello\n”); Use == for equality testing: if (x==0)...

22 22 Common Programming Errors ( cont’d )  Mix up, and ; E.g. for (j=1, j<=10, j++) /* error */ sum += j;  Put in extra semi-colons, e.g., sum=0; for (j=1; j<=10; j++); sum += j;  Misuse of relational operators if (2 < k < 7) // wrong if (2 < k && k < 7) // correct

23 23 Some Programming Tips  Make sure that the termination condition of a loop is reachable:  If possible, use = instead of == != Don ’ t use a variable of any floating point type to control a loop because real numbers are represented in their approximate values internally  Infinite loop can be made deliberately:  while (1) statement  for (;;) statement


Download ppt "1 Lecture 5  More flow control structures  for  do  continue  break  switch  Structured programming  Common programming errors and tips  Readings:"

Similar presentations


Ads by Google