Download presentation
Presentation is loading. Please wait.
Published byVivian Johnson Modified over 9 years ago
1
Conditionals, Loops, and Other Statements CS-2301, B-Term 20091 Conditionals, Loops, and Other Kinds of Statements CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel)
2
Conditionals, Loops, and Other Statements CS-2301, B-Term 20092 Reading Assignment Chapter 3 of Kernighan and Ritchie Helpful to follow along in class Note on §3.8 :– we do not allow goto statements in this course There is rarely, if any, situation at WPI where a goto in C would be the right thing There is rarely a situation in any program where a goto is the right thing!
3
Conditionals, Loops, and Other Statements CS-2301, B-Term 20093 Review Expression – a sequence of operators and operands that return a value Assignment – expression with the side effect of changing the value of the left operand
4
Conditionals, Loops, and Other Statements CS-2301, B-Term 20094 Definition – Side Effect The changing of the value of some data in the course of evaluating or executing something else Sometimes unrelated data! Examples:– –Explicit assignments x = y + 3; i++; --j; –printf() Writes to internal buffer; flushes buffer to screen on '\n' –scanf() – returns values from input Explicit – assigns data to arguments Implicit – keeps track of where it is in internal buffer
5
Conditionals, Loops, and Other Statements CS-2301, B-Term 20095 Definition – Statement Instruction to “do” something Specifies order of execution & evaluation §A.9 – a statement in C may be any of:– labeled-statement expression-statement compound-statement selection-statement iteration-statement jump-statement
6
Conditionals, Loops, and Other Statements CS-2301, B-Term 20096 Expression Statement expression optional ; Note: semicolon is terminator Exists primarily for its side effects E.g., x = y + 3; i++; --j; printf(“string”, arg1, arg2, arg3); The following is perfectly legal in C:– y + 3; Evaluates the expression, then throws the result away!
7
Conditionals, Loops, and Other Statements CS-2301, B-Term 20097 Compound Statement A sequence of statements surrounded by {} Example:– { x = 0; i++; printf("The value of x is %d\n", x); } Reason:– so that we can group together statements in loops, if-else, functions, etc.
8
Conditionals, Loops, and Other Statements CS-2301, B-Term 20098 Compound Statement (continued) Compound statements may be nested {...; { x = 0; i++; } /* no semicolon needed here*/ printf("The value of x is %d\n", x);...; }
9
Conditionals, Loops, and Other Statements CS-2301, B-Term 20099 Compound Statement (continued) Compound statements may include declarations inside { double angle; angle = atan2(y, x) * 360/(2*pi); printf("Angle is %f degrees\n", angle); } Declarations inside of {} are not known outside of {} Book says declarations must be at beginning of {} Later versions of C relax this rule Declaration must always precede first use of declared identifier Note: declaration-definition of angle allocates memory. This is relinquished at end of {}. atan2(y,x) calculates the arctangent of y x without zero-divide problems
10
Conditionals, Loops, and Other Statements CS-2301, B-Term 200910 Questions?
11
Conditionals, Loops, and Other Statements CS-2301, B-Term 200911 If-else Statements if ( expr ) statement 1 /*do this if expr is non-zero*/ else statement 2 /*do this if expr is zero*/ The else clause is optional! May be any kind of statement – loop, assignment, if-else, {}, etc.
12
Conditionals, Loops, and Other Statements CS-2301, B-Term 200912 If-else Examples if (j > limit) return j; /* note semicolon*/ else j += stepValue; /* note semicolon*/... if (++k >= 4) k = 0; /* increment k mod 4*/
13
Conditionals, Loops, and Other Statements CS-2301, B-Term 200913 If-else Examples (continued) if (n < maxInput) { scanf("string", &arg1, &arg2, …); n++; printf("string2", arg3, arg4, …); } else { /* note NO semicolon*/ printf("Summary\n", arg5, …); return n; }
14
Conditionals, Loops, and Other Statements CS-2301, B-Term 200914 Concatenated If-else Statements if ( expr 1 ) statement 1 /*do this if expr 1 is non-zero*/ else if ( expr 2 ) statement 2 /*i.e., expr 1 == 0, expr 2 != 0*/ else if ( expr 3 ) statement 3 /expr 1 and expr 2 are zero, expr 3 != 0*/ else if ( expr 4 ) statement 4 /expr 1, expr 2, expr 3 all zero, expr 4 != 0*/ else statement 5 /*i.e., all expr are zero*/
15
Conditionals, Loops, and Other Statements CS-2301, B-Term 200915 Concatenated If-else Statements Last else is always attached to last if If it should be attached to any other if, use {} to control the flow of execution.
16
Conditionals, Loops, and Other Statements CS-2301, B-Term 200916 Switch Statement Somewhat like a concatenated if-else Occasionally easier to read Each arm is called a case Evaluate switch expression, select the appropriate case (if any) –default case is optional Difference from concatenated if-else Need break statement to exit switch after a case Otherwise, control falls through to next case See §3.4 and p. 59
17
Conditionals, Loops, and Other Statements CS-2301, B-Term 200917 Switch Statement Example int month, daysInMonth, leapYear; … switch (month) { case 0: printf("January\n"); daysInMonth = 31; break; case 1: printf("February\n"); daysInMonth = leapYear ? 29 : 28; break; case 2: printf("March\n"); daysInMonth = 31; break; case 3: printf("April\n"); daysInMonth = 30; break; … }// switch
18
Conditionals, Loops, and Other Statements CS-2301, B-Term 200918 Switch Statement Example int month, daysInMonth, leapYear; … switch (month) { case 0: printf("January\n"); daysInMonth = 31; break; case 1: printf("February\n"); daysInMonth = leapYear ? 29 : 28; break; case 2: printf("March\n"); daysInMonth = 31; break; case 3: printf("April\n"); daysInMonth = 30; break; … }// switch case values must be constants break statement needed to jump over subsequent cases default case is optional (not shown)
19
Conditionals, Loops, and Other Statements CS-2301, B-Term 200919 Questions?
20
Conditionals, Loops, and Other Statements CS-2301, B-Term 200920 Iterative Statement while loop for loop do-while loop
21
Conditionals, Loops, and Other Statements CS-2301, B-Term 200921 while loops while ( expression ) statement Evaluate expression If true, execute statement and then repeat Repeat until expression becomes false statement may be executed zero or more times! Often a compound statement
22
Conditionals, Loops, and Other Statements CS-2301, B-Term 200922 int sum = 0; int count = 0; int input; while (scanf("%d", &input) != EOF){ sum += input; count++; printf("Input value of %f recorded.\n", input);... } if (count > 0) printf("Average is %f\n", (double)sum/count); else printf("No inputs recorded\n"); while loop example Note initialization of sum and count What is this?
23
Conditionals, Loops, and Other Statements CS-2301, B-Term 200923 while loop examples (continued) Study example on p. 59 (§3.4) A program to count digits, white space characters, and other characters. Includes a while loop with a switch statement inside
24
Conditionals, Loops, and Other Statements CS-2301, B-Term 200924 do-while loop do statement while ( expression ); Similar to while loop, but guaranteed to execute statement at least once See §3.6 Note: semicolon is required here
25
Conditionals, Loops, and Other Statements CS-2301, B-Term 200925 Breaking out of a Loop When it becomes necessary to terminate a loop prematurely –break; /*exits smallest containing switch or loop*/ When it becomes necessary to terminate the current iteration and start the next one –continue; /*terminates this iteration only*/ See p. 65, §3.7
26
Conditionals, Loops, and Other Statements CS-2301, B-Term 200926 Questions?
27
Conditionals, Loops, and Other Statements CS-2301, B-Term 200927 for loop A counting loop for (expr 1 ; expr 2 ; expr 3 ) statement Evaluate expr 1 to initialize Evaluate expr 2 to test If true, execute statement If not true, exit for loop Evaluate expr 3 to prepare for next iteration Repeat expr 2 to test Remember: zero is false, non-zero is true
28
Conditionals, Loops, and Other Statements CS-2301, B-Term 200928 for loops and while loops The for loop for (expr 1 ; expr 2 ; expr 3 ) statement is exactly equivalent to the following expr 1 ; while (expr 2 ) { statement expr 3 ; } See p. 60
29
Conditionals, Loops, and Other Statements CS-2301, B-Term 200929 The most common kind of for -loop int i; for (i = 0; i < limit; i++) {...; /* do something with ith entity */...; } Loop “body” is typically a compound statement
30
Conditionals, Loops, and Other Statements CS-2301, B-Term 200930 The most common kind of for -loop int i; for (i = 0; i < limit; i++) {...; /* do something with ith entity */...; } It is traditional in C that for - loops start counting at zero and test that the counter is less than the upper limit
31
Conditionals, Loops, and Other Statements CS-2301, B-Term 200931 The most common kind of for -loop int i; for (i = 0; i < limit; i++) {...; /* do something with ith entity */...; } This loop iterates limit times. –Iterations are numbered i = 0, 1, 2, …, limit -1 Reason:– arrays are indexed this way!
32
Conditionals, Loops, and Other Statements CS-2301, B-Term 200932 Nested for -loops int i, j; for (i = 0; i < limit; i++) {...;/*prepare subgroup i*/ for (j=0; j < limit2; j++) {...; /* do something with item j of subgroup i*/...; }...; }
33
Conditionals, Loops, and Other Statements CS-2301, B-Term 200933 An Extension in Modern C Compilers The following construct (not in book) is legal in C99:– for (int i = 0; i < limit; i++){ expression involving i;...; printf(“Iteration %d completed.\n”, i);...; } The loop counter i is declared in for loop Not visible outside of loop! Common practice Good programming style
34
Conditionals, Loops, and Other Statements CS-2301, B-Term 200934 Notes on Loop Style for (int i = 0; i < limit; i++) {...;/*prepare for subgroup i*/ for (int j=0; j < limit2; j++) {...; /* do something with item j of subgroup i*/...; }/* end of loop j */...; } /* end of loop i */ Declare loop variables in for -statements – C99
35
Conditionals, Loops, and Other Statements CS-2301, B-Term 200935 Notes on Loop Style for (int i = 0; i < limit; i++) {...;/*prepare for subgroup i*/ for (int j=0; j < limit2; j++) {...; /* do something with item j of subgroup i*/...; }/* end of loop j */...; } /* end of loop i */ Include a comment at end of each loop to show which loop it is
36
Conditionals, Loops, and Other Statements CS-2301, B-Term 200936 Questions?
37
Conditionals, Loops, and Other Statements CS-2301, B-Term 200937 Simple Example Read a series of numbers Add up the numbers and also the squares of those numbers “on-the-fly” After all numbers are input, print out:– –The mean –The standard deviation
38
Conditionals, Loops, and Other Statements CS-2301, B-Term 200938 Simple Example (continued) #include int main(int argc, char *argv[]) { unsigned int n; double mean; double sum = 0; double sumOfSquares = 0; printf("Enter sequence“ " of numbers:- "); for (n = 0; ; n++) { int rc; double input; rc = scanf("%lf", &input); if (rc == EOF) break; else if (rc == 0) continue; sum += input; sumOfSquares += input * input; }//for (n = 0...
39
Conditionals, Loops, and Other Statements CS-2301, B-Term 200939 Simple Example (concluded) printf("The total number of input entries“ " was %u.\n", n); if (n > 0 ) { printf("The mean is %g.\n", mean = sum/n); printf("The standard deviation is %g.\n", sqrt(sumOfSquares/n - pow(mean, 2))); }// if (i > 0) return 0; }//main Example can be found here
40
Conditionals, Loops, and Other Statements CS-2301, B-Term 200940 Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.