Presentation is loading. Please wait.

Presentation is loading. Please wait.

Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005. Lecture 5 Outline 5.0 Revisiting.

Similar presentations


Presentation on theme: "Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005. Lecture 5 Outline 5.0 Revisiting."— Presentation transcript:

1 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005. Lecture 5 Outline 5.0 Revisiting Printf: minimum field and output alignment 5.1Introduction 5.2The Essentials of Repetition 5.3Counter-Controlled Repetition 5.4The For Repetition Structure 5.5 The While Repetition Structure 5. 6 The For Structure: Notes and Observations 5. 7 Examples Using the For Structure 5. 8 The Do/While Repetition Structure 5. 9 The break and continue Statements 5. 10 Logical Operators 5.1 1 Confusing Equality ( == ) and Assignment ( = ) Operators 5.1 2 Structured Programming Summary

2 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 2 5.0 Revisiting Printf: Adding the Minimum Field Width The C language allows you to add an integer between the percent sign (%) and the letter in a format specifier. The integer is called the minimum field width specifier because it specifies the minimum field width and ensures that the output reaches the minimum width. For example, in %10f, 10 is a minimum field width specifier that ensures that the output is at least 10 character spaces wide. The example below shows how to use the minimum field width specifier.

3 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 3 Example ProgramOutput #include main(){ int num1, num2; num1 = 12; num2 = 12345; printf("%d\n", num1); printf("%d\n", num2); printf("%5d\n", num1); printf("%05d\n", num1); printf("%2d\n", num2); return 0; } 12 12345 12 00012 12345

4 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 4 Analysis Without using any minimum field width specifiers, program prints out the two integers by calling the printf() function. You can see in the output section that the output made by the statements 12, which takes two character spaces, while the output, 12345, 11 takes five character spaces. Later on a minimum field width, 5, is specified by %5d. The output therefore takes five character spaces, with three blank spaces plus two character spaces of 12. (See the third output line in the output section.) The %05d in printf(), shown next, indicates that the minimum field width is 5, and zeros are used to pad the spaces. Therefore, you see the output made by the execution of the statement is 00012 The %2d in the minimum field width to 2, but you still see the full-size output of 12345. This means that when the minimum field width is shorter than the width of the output, the latter is taken, and the output is still printed in full.

5 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 5 5.0 Revisiting printf: Aligning Output As you might have noticed in the previous example, all output is right-justified. In other words, by default, all output is placed on the right edge of the field, as long as the field width is longer than the width of the output. You can change this and force output to be left- justified. To do so, you need to prefix the minimum field specifier with the minus sign (-). For example, %-12d specifies the minimum field width as 12, and justifies the output from the left edge of the field.

6 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 6 Example ProgramOutput #include main(){ int num1, num2, num3, num4, num5; num1 = 1; num2 = 12; num3 = 123; num4 = 1234; num5 = 12345; printf("%8d %-8d\n", num1, num1); printf("%8d %-8d\n", num2, num2); printf("%8d %-8d\n", num3, num3); printf("%8d %-8d\n", num4, num4); printf("%8d %-8d\n", num5, num5); return 0; } 1 1 12 12 123 123 1234 1234 12345 12345

7 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 7 5.1Introduction This hour introduces Repetition control structures For while do / while –continue statement Used for skipping the remainder of the body of a repetition structure and proceeding with the next iteration of the loop

8 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 8 5.2The Essentials of Repetition 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"

9 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 9 5.3Essentials of Counter-Controlled Repetition Counter-controlled repetition requires –The name of a control variable (or loop counter) –The initial value of the control variable –A condition that tests for the final value of the control variable (i.e., whether looping should continue) –An increment (or decrement) by which the control variable is modified each time through the loop

10 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 10 5.4The for Repetition Structure 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 Initialization and increment –Can be comma-separated lists –Example: for (int i = 0, j = 0; j + i <= 10; j++, i++) printf( "%d\n", j + i ); No semicolon ( ; ) after last expression

11 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 11 5.5The while repitition Structure while loop (Repeat statements as long as condition is true) initialization; while ( loopContinuationTest ) { statement(s); increment; } –Example: (printing numbers from 0 to 10 i = 0; while(i<=10){ printf( "%d\n",i ); i++; }

12 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 12 5.6The for Structure: Notes and Observations Arithmetic expressions –Initialization, loop-continuation, and increment can contain arithmetic expressions. If x equals 2 and y equals 10 for ( j = x; j <= 4 * x * y; j += y / x ) is equivalent to for ( j = 2; j <= 80; j += 5 ) Notes about the for structure: –"Increment" may be negative (decrement) –If the loop continuation condition is initially false The body of the for structure is not performed Control proceeds with the next statement after the for structure –Control variable Often printed or used inside for body, but not necessary

13 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 13 1. Initialize variables 2.for repetition structure Program Output Sum is 2550 1/* 2 Summation with for */ 3#include 4 5int main() 6{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}

14 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 14 Question Write a program that takes user entred letter grades and counts how many A, B, C, D, and F are. The end of data entry will be indicated by an End Of File (EOF) character (done by either ctrl+Z or ctrl+D)

15 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 15 1. Initialize variables 2. Input data 2.1 Use switch loop to update count 1/* 2 Counting letter grades */ 3#include 4 5int main() 6{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;

16 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 16 2.1 Use switch loop to update count 3. Print results 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}

17 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 17 Program Output Enter the letter grades. Enter the EOF character to end input. A B 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

18 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 18 5.8The do / while Repetition Structure 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 );

19 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 19 5.8The do / while Repetition Structure Example (letting counter = 1): do { printf( "%d ", counter ); } while (++counter <= 10); –Prints the integers from 1 to 10

20 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 20 5.8The do / while Repetition Structure Flowchart of the do / while repetition structure true false action(s) condition

21 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 21 1. Initialize variable 2. Loop 3. Print Program Output 1/* Fig. 4.9: fig04_09.c 2 Using the do/while repetition structure */ 3#include 4 5int main() 6{6{ 7 int counter = 1; 8 9 do { 10 printf( "%d ", counter ); 11 } while ( ++counter <= 10 ); 12 13 return 0; 14} 1 2 3 4 5 6 7 8 9 10

22 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 22 5.9The break and continue Statements 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

23 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 23 5.9The break and continue Statements 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 Increment expression is executed, then the loop-continuation test is evaluated

24 Outline Fall 2003, Gülcihan Özdemir Dağ Lecture 5, Page 24 1. Initialize variable 2. Loop 3. Print Program Output 1/* Fig. 4.12: fig04_12.c 2 Using the continue statement in a for structure */ 3#include 4 5int main() 6{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 2 3 4 6 7 8 9 10 Used continue to skip printing the value 5

25 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 25 5.10Logical 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 ExpressionResult true && falsefalse true || falsetrue !falsetrue

26 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 26 5.11Confusing Equality ( == ) and Assignment ( = ) Operators 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 using == : if ( payCode == 4 ) printf( "You get a bonus!\n" ); Checks paycode, if it is 4 then a bonus is awarded

27 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 27 5.11Confusing Equality ( == ) and Assignment ( = ) Operators –Example, replacing == with = : if ( payCode = 4 ) 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

28 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 28 5.11Confusing Equality ( == ) and Assignment ( = ) Operators 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; Must write x = 4; –lvalues can be used as rvalues, but not vice versa y = x;

29 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 29 5.12Structured-Programming Summary Structured programming –Easier than unstructured programs to understand, test, debug and, modify programs Rules for structured programming –Rules developed by programming community –Only single-entry/single-exit control structures are used –Rules: 1.Begin with the “simplest flowchart” 2.Any rectangle (action) can be replaced by two rectangles (actions) in sequence 3.Any rectangle (action) can be replaced by any control structure (sequence, if, if / else, switch, while, do / while or for ) 4.Rules 2 and 3 can be applied in any order and multiple times

30 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 30 5.12Structured-Programming Summary....... Rule 2 Rule 1 - Begin with the simplest flowchart Rule 2 - Any rectangle can be replaced by two rectangles in sequence

31 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 31 5.12Structured-Programming Summary Rule 3 Rule 3 - Replace any rectangle with a control structure

32 Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 32 5.12Structured-Programming Summary All programs can be broken down into 3 controls –Sequence – handled automatically by compiler –Selection – if, if / else or switch –Repetition – while, do / while 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


Download ppt "Spring 2005, Gülcihan Özdemir Dağ Lecture 5, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005. Lecture 5 Outline 5.0 Revisiting."

Similar presentations


Ads by Google