Professional Documents
Culture Documents
Outline
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11
4.12
Introduction The Essentials of Repetition Counter-Controlled Repetition The For Repetition Structure The For Structure: Notes and Observations Examples Using the For Structure The Switch Multiple-Selection Structure The Do/While Repetition Structure The break and continue Statements Logical Operators Confusing Equality (==) and Assignment (=) Operators Structured Programming Summary
4.1
Introduction
4.2
Loop
Group of instructions computer executes repeatedly while some condition remains true
Counter-controlled repetition
Definite repetition - know how many times loop will execute Control variable used to count repetitions
Sentinel-controlled repetition
Indefinite repetition Used when number of repetitions not known Sentinel value indicates "end of data"
4.3
4.3
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
4.4
4.4
4.5
4.5
Control variable
Often printed or used inside for body, but not necessary
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/* Fig. 4.5: fig04_05.c Summation with for */ #include <stdio.h> int main() { int sum = 0, number; for ( number = 2; number <= 100; number += 2 ) sum += number; printf( "Sum is %d\n", sum ); return 0;
Outline
4.6 Examples Using the for Structure Program to sum the even numbers from 2 to 100
15 } Sum is 2550
Program Output
4.7
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
4.7
case a
false
true
case a action(s)
break
case b false . . .
true
case b action(s)
break
true
case z action(s)
break
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
/* Fig. 4.7: fig04_07.c Counting letter grades */ #include <stdio.h> int main() { int grade; int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0; printf( printf( "Enter the letter grades.\n" ); "Enter the EOF character to end input.\n"
Outline
1. Initialize variables 2. Input data 2.1 Use switch loop to update count
);
while ( ( grade = getchar() ) != EOF ) { switch ( grade ) { case 'A': case 'a': ++aCount; break; case 'B': case 'b': ++bCount; break; case 'C': case 'c': ++cCount; break; /* switch nested in while */ /* grade was uppercase A */ /* or lowercase a */
case 'D': case 'd': /* grade was uppercase D */ ++dCount; /* or lowercase d */ 2000 Prentice Hall, Inc. All rights reserved. break;
Outline
35
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 } }
++fCount;
break;
/* or lowercase f */
default:
printf( "Incorrect letter grade entered." ); printf( " Enter a new grade.\n" ); break;
printf( "\nTotals for each letter grade are:\n" ); printf( "A: %d\n", aCount ); printf( "B: %d\n", bCount ); printf( "C: %d\n", cCount ); printf( "D: %d\n", dCount ); printf( "F: %d\n", fCount );
return 0;
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 Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1
Outline
Program Output
4.8
Condition for repetition tested after the body of the loop is performed
All actions are performed at least once
Format:
4.8
4.8
action(s)
1 2 3 4 5 6
/* Fig. 4.9: fig04_09.c Using the do/while repetition structure */ #include <stdio.h>
Outline
1. Initialize variable
int main() {
2. Loop
int counter = 1;
7
8 9 10 11 12 13 14 }
3. Print
do { printf( "%d ", counter );
return 0;
10
Program Output
4.9
break
Causes immediate exit from a while, 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
4.9
continue
for structure
Increment expression is executed, then the loop-continuation test is evaluated
1 2 3 4 5 6 7 8
/* Fig. 4.12: fig04_12.c Using the continue statement in a for structure */ #include <stdio.h> int main() { int x;
Outline
9
10 11 12 13 14 15 16 17 18 19
20 }
Program Output
|| (logical OR)
Returns true if either of its conditions are true
4.11
Dangerous error
Does not ordinarily cause syntax errors Any expression that produces a value can be used in control structures Nonzero values are true, zero values are false
Example:
if ( payCode == 4 ) printf( "You get a bonus!\n" );
Checks paycode, if it is 4 then a bonus is awarded
4.11
printf( "You get a bonus!\n" ); This sets paycode to 4 4 is nonzero, so expression is true, and bonus awarded no matter what the paycode was Logic error, not a syntax error
4.11
lvalues
Expressions that can appear on the left side of an equation Their values can be changed, such as variable names
x = 4;
rvalues
Expressions that can only appear on the right side of an equation Constants, such as numbers
Cannot write 4 = x;
Rule 2
Rule 2
Rule 2
. . .
Rule 3
Rule 3
Rule 3