250 likes | 265 Views
Program Control. Topics While loop For loop Switch statement The Do/While loop The break and continue Statements Logical Operators. While Loop. Example: int counter =1; //initialization while (counter <= 10){ //repetition condition
E N D
Program Control Topics While loop For loop Switch statement The Do/While loop The break and continue Statements Logical Operators
While Loop • Example: int counter =1; //initialization while (counter <= 10){ //repetition condition printf( "%d\n", counter ); ++counter; //increment } • int counter = 1; names counter, declares it to be an integer, reserves space for it in memory, and sets it to an initial value of 1
while Loop while (condition) statement_to_repeat; while (condition) { statement_1; ... statement_N; } /* Weight loss program */ while ( weight > 500 ) weight--; while ( weight > 500 ) { printf("Go, exercise, "); printf("then come back. \n"); printf("Enter your weight: "); scanf("%d", &weight);} University of Pittsburgh-CSD-Khalifa
Loops & break Statement • Break out of the loop { } • can use with • while • do while • for • switch • does not work with • if {} • else {} University of Pittsburgh-CSD-Khalifa
break Statement fact = 1; /* initialize factorial */ i = 1; while( i<10 ){ /* run loop –break when fact >100*/ fact = fact * i; if ( fact > 100 ){ printf ("Factorial of %d above 100", i); break; /* break out of the while loop */ } i ++ ; } /* end while loop */ University of Pittsburgh-CSD-Khalifa
continue Statement • Jumps to the beginning of the loop fact = 1; i = 1; /* a program to calculate 10 ! while ( 1 ){ fact = fact * i; i ++ ; if( i<10 ) continue; /* not done yet ! Go to loop and perform next iteration*/ break; } University of Pittsburgh-CSD-Khalifa
The do/while Loop • The do/while repetition structure • Similar to the while structure • Condition for repetition tested after the body of the loop is performed • All actions are performed at least once • Format:do {statement} while (condition); • Good practice to put brackets in, even if not required
The do/while Loop • Example (letting counter = 1) do { printf( "%d ", counter ); } while (++counter <= 10); Prints the integers from 1 to 10
true false action(s) condition The do/while Loop
1 /* 2 Using the do/while repetition structure */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int counter = 1; 8 9 do { 10 printf( "%d ", counter ); 11 } while ( ++counter <= 10 ); 12 13 return 0; 14 } 1. Initialize variable 2. Loop 3. Print Program Output 1 2 3 4 5 6 7 8 9 10
The break and continue Statements • break • Causes immediate exit from awhile, for, do/while or switch structure • Program execution continues with the first statement after the structure • Common uses of the break statement • Escape early from a loop • Skip the remainder of a switch structure
The break and continue Statements (II) • continue • Skips the remaining statements in the body of a while, for or do/while structure • Proceeds with the next iteration of the loop • while and do/while • Loop-continuation test is evaluated immediately after the continue statement is executed • for structure • Increment expression is executed, then the loop-continuation test is evaluated
1 /* 2 Using the continue statement in a for structure */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int x; 8 9 for ( x = 1; x <= 10; x++ ) { 10 11 if ( x == 5 ) 12 continue; /* skip remaining code in loop only 13 if x == 5 */ 14 15 printf( "%d ", x ); 16 } 17 18 printf( "\nUsed continue to skip printing the value 5\n" ); 19 return 0; 20 } 1. Initialize variable 2. Loop 3. Print Program Output 1 2 3 4 6 7 8 9 10 Used continue to skip printing the value 5
for Statement for (initial; condition; iteration) statement_to_repeat; for (initial; condition; iteration) { statement_1; ... statement_N; } fact = 1; /* Calculate 10 ! */ for ( i = 1; i < =10; i++) fact = fact * i; fact = 1; for (int i = 1; i < 10; i++) { fact = fact * i; printf(“value of fact= %d \n”, fact); if ( fact > 100 ) break; } University of Pittsburgh-CSD-Khalifa
No semicolon after last expression The for Loop • Format when using for loops for(initialization;loopContinuationTest;increment )statement Example: for( int counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter ); • Prints the integers from one to ten.
The for Loop • For loops can usually be rewritten as while loops: initialization; while (loopContinuationTest){statementincrement;} • Initialization and increment • Can be comma-separated lists for (int i = 0, j = 0; j + i <= 10;j++, i++ ) printf( "%d\n", j + i );
1 /* 2 Summation with for */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int sum = 0, number; 8 9 for ( number = 2; number <= 100; number += 2 ) 10 sum += number; 11 12 printf( "Sum is %d\n", sum ); 13 14 return 0; 15 } Examples Using the for Structure Program to sum the even numbers from 2 to 100 Program Output Sum is 2550
switch Statement switch ( letter ) { case 'A': printf("First letter\n"); break; case 'Z': printf("Last letter\n"); break; default : printf("Middle letter\n"); break; } University of Pittsburgh-CSD-Khalifa switch( expression ) { case constant1 : statement; ... break; case constantN : ... default : statement; ... break;}
The switch Statement • switch • Useful when a variable or expression is tested for all the values it can assume and different actions are taken. • Format • Series of case labels and an optional default case switch ( value ){ case '1': actions case '2': actions default: actions } • break; causes exit from structure
true false true false . . . true false case z action(s) case a action(s) case b action(s) break break break default action(s) case b case a case z The switch Multiple-Selection Structure (II)
1 /* 2 Counting letter grades */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int grade; 8 int aCount = 0, bCount = 0, cCount = 0, 9 dCount = 0, fCount = 0; 10 11 printf( "Enter the letter grades.\n" ); 12 printf( "Enter the EOF character to end input.\n" ); 13 14 while ( ( grade = getchar() ) != EOF ) { 15 16 switch ( grade ) { /* switch nested in while */ 17 18 case 'A': case 'a': /* grade was uppercase A */ 19 ++aCount; /* or lowercase a */ 20 break; 21 22 case 'B': case 'b': /* grade was uppercase B */ 23 ++bCount; /* or lowercase b */ 24 break; 25 26 case 'C': case 'c': /* grade was uppercase C */ 27 ++cCount; /* or lowercase c */ 28 break; 29 30 case 'D': case 'd': /* grade was uppercase D */ 31 ++dCount; /* or lowercase d */ 32 break; 1. Initialize variables 2. Input data 2.1 Use switch loop to update count
33 34 case 'F': case 'f': /* grade was uppercase F */ 35 ++fCount; /* or lowercase f */ 36 break; 37 38 case '\n': case' ': /* ignore these in input */ 39 break; 40 41 default: /* catch all other characters */ 42 printf( "Incorrect letter grade entered." ); 43 printf( " Enter a new grade.\n" ); 44 break; 45 } 46 } 47 48 printf( "\nTotals for each letter grade are:\n" ); 49 printf( "A: %d\n", aCount ); 50 printf( "B: %d\n", bCount ); 51 printf( "C: %d\n", cCount ); 52 printf( "D: %d\n", dCount ); 53 printf( "F: %d\n", fCount ); 54 55 return 0; 56 } 2.1 Use switch loop to update count 3. Print results
Enter the letter grades. Enter the EOF character to end input. A B C C A D F C E Incorrect letter grade entered. Enter a new grade. D A B /* in UNIX: use <return> <ctrl-d> for EOF */ Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1 Program Output
Variable Scope int A; void main() { A = 1; myProc(); printf ( "A = %d\n", A); } void myProc() { int A = 2; while( A==2 ) { int A = 3; printf ( "A = %d\n", A); break; } printf ( "A = %d\n", A); } . . . Printout: -------------- A = 3 A = 2 A = 1 University of Pittsburgh-CSD-Khalifa
Logical Operators • &&(logical AND) • Returns true if both conditions are true • ||(logical OR) • Returns true if either of its conditions are true • !(logical NOT, logical negation) • Reverses the truth/falsity of its condition • Unary operator, has one operand • Useful as conditions in loops Expression Result true && false falsetrue || false true !false true