|
We have seen that a good way to plan a while-loop is to do a pre-simulation. Although that can also be helpful with a for-loop, you usually think about a for-loop differently.
A well written for-loop does its body for each member of a sequence of values. For example, assuming that body does not change k,
for(int k = 1; k <= 3; k++)
{
body
}
is equivalent to
k = 1; body k = 2; body k = 3; bodywhich does body for each member k of sequence [1, 2, 3].
Suppose you would like to compute the sum 12 + 22 + 32 + … + n2. A for loop makes that simple:
initialize sum = 0 For each k in sequence [1,2,...,n] add k2 to sumThe same idea can be used to find the sum of the squares of any sequence of numbers x1, x2, …, xn , as long as you can think of how to write a for-loop heading that walks through that sequence. For example, here is a C++ definition of a function that returns the 12 + 32 + 52 + … + n 2, assuming that n is an odd positive integer.
// sumsqOdd returns 12 + 32 + 52 + … + n2. // // Requirement: n is odd. int sumsqOdd(int n) { int sum = 0; for(int k = 1; k <= n; k += 2) { sum = sum + k*k; } return sum; }
A for-loop simplifies the thought process by breaking it into two independent parts: (1) decide what sequence S of values you want to look at, and (2) decide what you want to do for each member of sequence S.
|