Lesson 4 C Program Edited)
Lesson 4 C Program Edited)
Learning Objectives
To be able to use the for, while, and dowhile repetition statements. To understand multiple selection using the switch selection statement. To be able to use the break and continue program control statements To be able to use the logical operators.
Outline
o Introduction o The Essentials of Repetition o Counter-Controlled Repetition o The for Repetition Statement o The for Statement: Notes and Observations o Examples Using the for Statement o The switch Multiple-Selection Statement o The dowhile Repetition Statement o The break and continue Statements o Logical Operators o Confusing Equality (==) and Assignment (=) Operators o Structured Programming Summary
3
Introduction
Additional repetition control structures
while (previous lesson)
for Dowhile
continue statement
Used for skipping the remainder of the body of a repetition structure and proceeding with the next iteration of the loop
4
The statement
int counter = 1;
Names counter Defines it to be an integer Reserves space for it in memory Sets it to an initial value of 1
8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/* function main begins program execution */ int main() { int counter = 1; while ( counter <= 10 ) { ++counter; } /* end while */ /* initialization */
/* repetition condition */
1 2 3 4 5 6 7 8 9 10
For the sample program, add conio.h and change the return 0 into getch().
fig04_01.c
http://irc.essex.ac.uk/www.iota-six.co.uk/c/b4_arithmetic_operators.asp
12
1 /* Fig. 4.2: fig04_02.c 2 Counter-controlled repetition with the for statement */ 3 #include <stdio.h> 4 5 /* function main begins program execution */ 6 int main() 7 { 8 9 10 11 12 13 14 15 16 17 18 } /* end function main */
For the sample program, add conio.h and change the return 0 into getch().
/* initialization, repetition condition, and increment are all included in the for statement header. */ for ( counter = 1; counter <= 10; counter++ ) { printf( "%d\n", counter ); } /* end for */
fig04_02.c
14
statement
Example:
for( int counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter );
15
is equivalent to
for ( j = 2; j <= 80; j += 5 )
17
Control variable
Often printed or used inside for body, but not necessary
18
counter <= 10
true
false
19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/* Fig. 4.5: fig04_05.c Summation with for */ #include <stdio.h> /* function main begins program execution */ int main() { int sum = 0; /* initialize sum */ int number; /* number to be added to sum */
fig04_05.c
for ( number = 2; number <= 100; number += 2 ) { sum += number; /* add number to sum */ } /* end for */ printf( "Sum is %d\n", sum ); /* output sum */ return 0; /* indicate program ended successfully */
Sum is 2550
Program Output
For the sample program, add conio.h and change the return 0 into getch().
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
/* Fig. 4.6: fig04_06.c Calculating compound interest */ #include <stdio.h> #include <math.h>
fig04_06.c (Part 1 of 2)
/* function main begins program execution */ int main() { double amount; double rate = .05; int year; /* amount on deposit */ /* interest rate */ /* year counter */ double principal = 1000.0; /* starting principal */
/* calculate amount on deposit for each of ten years */ for ( year = 1; year <= 10; year++ ) { /* calculate new amount for specified year */ amount = principal * pow( 1.0 + rate, year ); /* output one table row */ printf( "%4d%21.2f\n", year, amount ); } /* end for */
For the sample program, add conio.h and change the return 0 into getch().
27 28
fig04_06.c (Part 2 of 2)
Year 1 2 3 4 5 6 7 8 9 10
Amount on deposit 1050.00 1102.50 1157.63 1215.51 1276.28 1340.10 1407.10 1477.46 1551.33 1628.89
Program Output
For the sample program, add conio.h and change the return 0 into getch().
Format
Series of case labels and an optional default case
switch ( value ){ case '1': actions case '2': actions default: actions }
case b false . . .
case b action(s)
break
true
case z action(s)
break
25
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
/* Fig. 4.7: fig04_07.c Counting letter grades */ #include <stdio.h> /* function main begins program execution */ int main() { int grade; /* one grade */ int aCount = 0; /* number of As */ int bCount = 0; /* number of Bs */ int cCount = 0; /* number of Cs */ int dCount = 0; /* number of Ds */ int fCount = 0; /* number of Fs */ printf( printf( "Enter the letter grades.\n" ); );
fig04_07.c (Part 1 of 3)
/* loop until user types end-of-file key sequence */ while ( ( grade = getchar() ) != EOF ) { /* determine which grade was input */ switch ( grade ) { /* switch nested in while */ case 'A': case 'a': break; /* grade was uppercase A */ /* or lowercase a */ /* necessary to exit switch */
For the sample program, add conio.h and change the return 0 into getch().
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
fig04_07.c (Part 2 of 3)
For the sample program, add conio.h and change the return 0 into getch().
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
default:
printf( "Incorrect letter grade entered." ); printf( " Enter a new grade.\n" ); break; /* optional; will exit switch anyway */
} /* end switch */
} /* end while */
fig04_07.c (Part 3 of 3)
/* output summary of results */ printf( "\nTotals for each letter grade are:\n" ); printf( "A: %d\n", aCount ); /* display number of A grades */ printf( "B: %d\n", bCount ); /* display number of B grades */ printf( "C: %d\n", cCount ); /* display number of C grades */ printf( "D: %d\n", dCount ); /* display number of D grades */ printf( "F: %d\n", fCount ); /* display number of F grades */
For the sample program, add conio.h and change the return 0 into getch().
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 ^Z Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1
Program Output
30
Format:
33
34
1 /* Fig. 4.9: fig04_09.c 2 Using the do/while repetition statement */ 3 #include <stdio.h> 4 5 /* function main begins program execution */ 6 int main() 7 { 8 9 10 11 12 13 14 15 16 } /* end function main */ return 0; /* indicate program ended successfully */ do { printf( "%d ", counter ); /* display counter */ } while ( ++counter <= 10 ); /* end do...while */ int counter = 1; /* initialize counter */
fig04_09.c
10
Program Output
For the sample program, add conio.h and change the return 0 into getch().
36
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/* Fig. 4.11: fig04_11.c Using the break statement in a for statement */ #include <stdio.h>
fig04_11.c
/* loop 10 times */ for ( x = 1; x <= 10; x++ ) { /* if x is 5, terminate loop */ if ( x == 5 ) { break; /* break loop only if x is 5 */ } /* end if */
Program Output
For the sample program, add conio.h and change the return 0 into getch().
for
Increment expression is executed, then the loopcontinuation test is evaluated
39
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/* Fig. 4.12: fig04_12.c Using the continue statement in a for statement */ #include <stdio.h>
fig04_12.c
/* loop 10 times */ for ( x = 1; x <= 10; x++ ) { /* if x is 5, continue with next iteration of loop */ if ( x == 5 ) { continue; /* skip remaining code in loop body */ } /* end if */
printf( "\nUsed continue to skip printing the value 5\n" ); return 0; /* indicate program ended successfully */
Program Output
For the sample program, add conio.h and change the return 0 into getch().
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
Result
false true true
41
Logical Operators
expression1
0 0 nonzero nonzero
expression2
0 nonzero 0 nonzero
Fig. 4.13
expression1
0 0 nonzero nonzero
expression2
0 nonzero 0 nonzero
expression1 || expression2
0 1 1 1
Fig. 4.14
expression
0 nonzero
! expression
1 0
Fig. 4.15
Logical Operators
Operators
++ * + < == && || ?: = , += -= *= /= %= -/ <= != > >= + % ! (type)
Associativity
right to left left to right left to right left to right left to right left to right left to right right to left right to left left to right
Type
unary multiplicative additive relational equality logical AND logical OR conditional assignment comma
Fig. 4.16
43
rvalues
Expressions that can only appear on the right side of an equation Constants, such as numbers Cannot write 4 = x; Must write x = 4; lvalues can be used as rvalues, but not vice versa y = x;
46
Structured-Programming Summary
Selection
if statement
(single selection) T F F
ifelse statement
(double selection) T
switch statement
(multiple selection) T F T F . . . T F
break break
break
47
Structured-Programming Summary
Repetition
while statement
do while statement
for statement
T F
F T
F T
48
Structured-Programming Summary
Structured programming
Easier than unstructured programs to understand, test, debug and, modify programs
49
Structured-Programming Summary
Rules: 1.Begin with the simplest flowchart 2.Stacking rule: Any rectangle (action) can be replaced by two rectangles (actions) in sequence 3.Nesting rule: Any rectangle (action) can be replaced by any control structure (sequence, if, ifelse, switch, while, dowhile or for) 4.Rules 2 and 3 can be applied in any order and multiple times
50
Structured-Programming Summary
Rule 1 - Begin with the simplest flowchart Rule 2 - Any rectangle can be replaced by two rectangles in sequence
Rule 2
Rule 2
Rule 2
. . .
51
Structured-Programming Summary
Rule 3 - Replace any rectangle with a control structure Rule 3
Rule 3 Rule 3
52
Structured-Programming Summary
St ac ke d b uilding b lo c ks Nested build ing bloc ks
O v erla pping b uilding bloc ks (Illega l in struc tured pro gra ms)
53
Structured-Programming Summary
54
Structured-Programming Summary
All programs can be broken down into 3 controls
Sequence handled automatically by compiler Selection if, ifelse or switch Repetition while, dowhile or for
Can only be combined in two ways
Nesting (rule 3) Stacking (rule 2)
Any selection can be rewritten as an if statement, and any repetition can be rewritten as a while statement
55
Machine Problems
56
C Program Control
CProg1-121 Computer Programming 1
The End.
Up Next: Functions