++, --, +=, -= operators
for-loopsn, and you need to go through a loop
n times.
x to the
nth power.
|
If you think the test " |
init; while (test-cond) { statement1 statement2 . . statementk update; } |
Any time we count our way through a loop like this, we'll have
three basic pieces of code:
for loop.
|
for(init; test-cond; update) { statement1 statement2 . . statementk } |
power = 1.0;
for(int i = 0; i < n; i = i + 1)
{
power = power * x;
}
The for-loop is just a compact way of writing a
while loop which has the three steps outlined above:
initialization, test-condition, and update. A
for-loop can always be written as a while
loop in the following way:
n times. This
for-statment will usually look like this:
for(int i = 0; i < n; i++)
{
...
}
x++ sets
x to x + 1, and x-- sets
x to x - 1.
+= and -= operators,
which are defined like this:
a += b |
is equivalent to | a = a + b |
a -= b |
is equivalent to | a = a - b |
℗ we have the operator
℗= defined by
a ℗= b |
is equivalent to | a = a ℗ b |
for(int i = 0; i <= 100; i += 5)
cout << i << endl;
x++ is an expression
(its value is the value of x before the
increment), it also has a side effect, namely that it
changes the value of the variable x.
Thus we have:
| code fragment | output |
|
5 6 |
x = x + 1. This is because you have to be careful about which
value you get in the expression - is it the value before or after the
increment. It's confusing to read such things, and let's just avoid the
confusion. Remember, it's not a contest to see who can write a program with
the fewest keystrokes! (Though admittedly, that's kind of fun.)
Note: The name C++ is a pun on the ++ operator: It's the C
language, incremented!
Note: ++x and --x are also allowed. The
difference is that the value of the expression is the value after rather than
before the increment/decrement operation.
for-statement goes out of scope after you leave the for-loop.
Thus, something like:
for(int i = 0; i < 12; i++)
{
cout << i << endl;
}
cout << i << endl;
shouldn't compile - after all, the i doesn't exist as far as that
second cout is concerned. This is usually a nice feature.
After all, you only introdced the new variable i to iterative
through the numbers 0 up to 11. After you're done with that iteration, there's
no point to having i around.
Here's a code that illustrates how that can be nice.
#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i < 25; i++)
cout << '*';
cout << endl << " H E L L O W O R L D !" << endl;
for(int i = 0; i < 25; i++)
cout << '*';
cout << endl;
return 0;
}
See how we didn't need to use a different variable for the two
for-loops? That's because their scope does not extend beyond
the for-loop itself.
Suppose we want to have a program print out a 4x4 square of *'s to the screen.
| naive way | printing 4x4 squre of *'s | elegant way using a nested loop | |||||
|
Of course, we can write a program as on the left. However, it's more elegant to
write the program using a nested loop as shown on the right. Note in code on the right:
|
|
breakfalse.
Sometimes, however, it is desirable to immediately exit the body instead.
C ++ provides the break statements to to give programmers more
flexibility designing the control logic of loops.
break exits a loop immediatly.
Suppose you want to write a program that works as follows:
break statement, we can write a simpler code. In C++,
a break statement causes the program to immediately exit from
the body of the loop. In our scenario, the program can simply exit the
loop as soon as it meets a native number. Therefore, we can simplify the
code as follows:
|
|
~$ ./prac
3 4
[(****)(****)(****)]
Note: You are not allowed to use any if statements.
Solution:here.
n *'s - this is very
easy!
f(x) by simple end-point
approximation - Simple end-point integration approximates the area under a
curve between x = 1 and x = b by the sum of
n evenly spaced rectangles whose hieghts are the function values
at x-values given by the left endpoints of the bases. To remind
your self of how this works I've drawn this
picture.