Top Banner
204216: C Programming 204216 -- C Programming Chapter 5 Repetition Adapted/Assembled for 204216 by Areerat T rongratsameethong A First Book of ANSI C, Fourth Edition
56

204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

Sep 04, 2018

Download

Documents

lydiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

204216 -- C Programming

Chapter 5Repetition

Adapted/Assembled for 204216 by Areerat Trongratsameethong

A First Book of ANSI C, Fourth Edition

Page 2: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 2

Objectives

• Basic Loop Structures• The while Statement• Computing Sums and Averages Using a while

Loop• Case Studies: Loop Programming Techniques• Nested Loops• The do-while Statement• Common Programming and Compiler Errors

Page 3: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 3

Introduction

• A section of code that is repeated is called a loop, because:– After the last statement in the code is executed,

the program branches, or loops, back to the first statement and starts another repetition through the code

• Each repetition is also called an iteration or pass through the loop

Page 4: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 4

Basic Loop Structures• Constructing a repeating section of code requires

that four elements be present:– Repetition statement

• while statement• for statement• do-while statement

– Condition– A statement that initially sets the condition being

tested– A statement within the repeating section of code that

alters the condition so that it eventually becomes false

Page 5: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 5

Pretest and Posttest Loops

Page 6: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 6

Pretest and Posttest Loops (2)

Page 7: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 7

Counter-Controlled and Condition-Controlled Loops

• Counter-controlled loop: the condition is used to keep track of the number of repetitions– Also known as a fixed-count loop (ทาํด้วยจาํนวนครัง้ที่

กาํหนดตายตัว ตัวแปรที่ใช้นับจะเป็นตัวที่ใช้ตรวจสอบเงื่อนไข)

int = count = 0;While (count < 10) {

printf(“count = %d”, count);count++;

}

Page 8: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

Counter-Controlled and Condition-Controlled Loops (2)

• Condition-controlled loop: the tested condition does not depend on a count being achieved, but rather on a specific value being encountered (เง่ือนไขไมไ่ด้ขึน้อยูก่บัตวัท่ีใช้นบั แตข่ึน้อยูก่บัตวัแปรอ่ืน)

printf(“Input scores 0 - 100, others to exit loop: ”);scanf(“%f”, &scores);while (scores >= 0 && scores <= 100){

…printf(“Input scores 0 - 100, others to exit loop: ”);scanf(“%f”, &scores);

} A First Book of ANSI C, 4th Edition8

Page 9: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 9

The while Statement

• The general form of the while statement iswhile (expression)

statement;

• The transfer of control back to the start of a while statement to reevaluate the expression is known as a program loop

• The following is a valid but infinite loop:while (count <= 10)

printf("%d ",count); ทําไมถึง infinite loop ?

Page 10: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSIC, Fourth Edition

10

The while Statement (2)

Page 11: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 11

The while Statement (3)

Output is:1 2 3 4 5 6 7 8 9 10

Page 12: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 12

The while Statement (4)

Output is:10 9 8 7 6 5 4 3 2 1

Page 13: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 13

The while Statement (5)Output is:NUMBER SQUARE CUBE------ ------ ----1 1 12 4 83 9 274 16 645 25 1256 36 2167 49 3438 64 5129 81 72910 100 1000

Page 14: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 14

Condition-controlled loop

Output is:DEGREES DEGREESCELSIUS FAHRENHEIT------- ----------

5 41.0010 50.0015 59.0020 68.0025 77.0030 86.0035 95.0040 104.0045 113.0050 122.00

The while Statement (6)

Page 15: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 15

Computing Sums and Averages Using a while Loop

Page 16: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 16

Computing Sums and Averages Using a while Loop (2)

Page 17: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 17

Computing Sums and Averages Using a while Loop (3)

Page 18: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 18

Computing Sums and Averages Using a while Loop (4)

Page 19: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 19

Ensures that any previous value present in the storage locations assigned to the variable total is overwritten and the total starts at a correct value

Accumulating statement

Computing Sums and Averages Using a while Loop (5)

Page 20: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 20

Calculating an average

Computing Sums and Averages Using a while Loop (6)

Page 21: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

Basic Control Structure

A First Book of ANSI C, 4th Edition 21

Page 22: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 22

Sentinels• A program, such as Program 5.7, can be made much

more general by removing the restriction that exactly four numbers are to be entered ตวัอยา่งโปรแกรม 5.7 ต้องรับคา่ข้อมลู 4 ครัง้ โปรแกรมสามารถถกูปรับเปล่ียนให้รับคา่ก่ีคา่ก็ได้ตามความต้องการของผู้ใช้ โดยใช้คา่ท่ีเรียกวา่ sentinel ซึง่ผู้ ใช้สามารถรับคา่ข้อมลูก่ีจํานวนก็ได้– Sentinel: คือ คา่ข้อมลูท่ีใช้เป็นตวับอกจดุเร่ิมต้น หรือสิน้สดุของข้อมลู

– The user enters a value for how many numbers will be averaged

– You can use a sentinel (a data value used to signal either the start or end of a data series)

• The sentinel values must be selected so as not to conflict with legitimate data values

• ทัง้นีค่้า sentinel จะต้องเป็นค่าที่ไม่ขัดแย้งกับค่าข้อมูลที่ใช้ดาํเนินการในLoop หรือไม่ขัดแย้งกับค่าข้อมูลที่ใช้ในการตรวจสอบ และควบคุมเงื่อนไขของ Loop

Page 23: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 23

Sentinels (2)

Page 24: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 24

Sentinels (3)• One useful sentinel in C is the named

constant EOF (End Of File)– The actual value of EOF is compiler-dependent,

but it is always assigned a code that is not used by any other character

– EOF is defined in stdio.h

Page 25: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 25

Sentinels (4)

Page 26: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 26

The break and continue Statements

• A break forces an immediate exit from while, switch, for, and do-while statements only

while(count <= 10){printf("Enter a number: ");scanf("%f", &num);if (num > 76){printf("You lose!");break; /* break out of the loop */

}elseprintf("Keep on truckin!");

}/* break jumps to here */

Page 27: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 27

The break and continue Statements (2)• The continue applies to loops only; when a continue statement is encountered in a loop, the next iteration of the loop begins immediately

while (count < 30){printf("Enter a grade: ");scanf("%f", &grade);if(grade < 0 || grade > 100)continue;

total = total + grade;count = count + 1;

}

ถ้าจริง (ไม่นับ ไม่บวก)

Jump to

Page 28: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 28

The Null Statement

• A semicolon with nothing preceding it is also a valid statement, called the null statement

;

• Use the null statement where a statement is syntactically required, but no action is needed

• Null statements typically are used either with while or for statements

Page 29: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 29

The for Statement• The for statement combines all four elements

required to easily produce a loop on the same linefor (initializing list; tested expression; altering list)

statement;

• This statement does not require that any of the items in parentheses be present or that they actually be used for initializing or altering the values in the expression statements– However, the two semicolons must be present

• for ( ; count <= 20;) is valid• Omitting tested expression results in infinite loop

Page 30: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

30

The for Statement (2)

Page 31: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 31

The for Statement (3)

• Output is:2 4 6 8 10 12 14 16 18 20

Page 32: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 32

The for Statement (4)

Page 33: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 33

The for Statement (5)

Page 34: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 34

The for Statement (6)

Comma-separated list

Page 35: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

The forStatement (7)

(compare with Program 5.3)

35

Page 36: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Computing Sums and Averages Using a for Loop

36

Page 37: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 37

Case Studies: Loop Programming Techniques

• Technique 1: Selection within a loop• Technique 2: Input data validation• Technique 3: Interactive loop control• Technique 4: Evaluating equations

Page 38: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Technique 1: Selection within a Loop

38

Page 39: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Technique 2: Input Data Validation

Same code usedin lines 6-7!

39

Page 40: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Technique 2: Input Data Validation (2)

40

Page 41: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Technique 3: Interactive Loop Control

41

Page 42: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Technique 4: Evaluating Equations

42

Page 43: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 43

Technique 4: Evaluating Equations (2)

Page 44: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 44

Nested Loops

Page 45: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 45

Nested Loops (2)• Sample run:

i is now 1j = 1 j = 2 j = 3 j = 4i is now 2j = 1 j = 2 j = 3 j = 4i is now 3j = 1 j = 2 j = 3 j = 4i is now 4j = 1 j = 2 j = 3 j = 4i is now 5j = 1 j = 2 j = 3 j = 4

Page 46: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Nested Loops (3)

46

Page 47: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Nested Loops (4)

47

Page 48: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 48

The do-while Statement

Page 49: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 49

The do-while Statement (2)

• The general form of the do statement isdostatement;

while (expression);

• do-while is a posttest loop• One type of application is ideally suited for a

posttest loop:– Input data validation application

Page 50: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 50

The do-while Statement (3)

do{printf("\nEnter an ID number: ");scanf("%f", &idNum);

} while (idNum < 1000 || idNum > 1999);

Page 51: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 51

The do-while Statement (4)

Page 52: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 52

Common Programming Errors

• “Off by one” error, in which the loop executes either one too many or one too few times than intended

• Using the assignment operator, =, instead of the equality operator, ==, in the tested expression

• As with the if statement, repetition statements should not use the equality operator, ==, when testing single-precision or double-precision operands

Page 53: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 53

Common Programming Errors (2)

• Placing a semicolon at the end of the for’s parentheses (creates a do-nothing loop)

• Using commas to separate the items in a forstatement instead of the required semicolons

• Omitting the final semicolon from the dostatement

Page 54: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition

Common Compiler Errors

54

Page 55: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 55

Summary

• A section of repeating code is called a loop• The three C repetition statements are while, for

and do-while• Loops are also classified as to the type of tested

condition• The most commonly used syntax for a while loop

iswhile (expression){statements;

}

Page 56: 204216 -- C Programming - Chiang Mai University · 204216 -- C Programming. Chapter 5. Repetition . ... 204216: C Programming. Basic Control Structure. ... • The three C repetition

204216: C Programming

A First Book of ANSI C, Fourth Edition 56

Summary (2)

• A for statement performs the same functions as the while statement, but uses a different form

• The for statement is extremely useful in creating counter-controlled loops

• The do-while statement is used to create posttest loops because it checks its expression at the end of the loop