Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.