General form of for-loop:
for (init-statement; check; step-statement)
{
statement;
statement;
...
}
Show the flowchart: first init-statement executes, followed by check, and so on. If the check is false at the first entry to the loop, the body is never executed. The init-statement or the step-statement could be empty. Also, point out that the init-statement could be anything, e.g., declaration, assignment, function call, another for-loop, etc. Same for step-statement.
Why do we need the for-loop when we already have the while loop? More structure, better readability. e.g., if we just want to count, for loop has much better readability than the while loop.
Example: add up the first 100 numbers
int sum = 0;
for (int i = 0; i < 100; i++)
{
sum = sum + i;
}
cout << "The sum is " << sum << endl;
Show the correspondence of the for-loop with the while loop.
sum = sum + i can also be written as sum += i.
While without braces:
while (condition) statement;If only one statement in body, can omit left and right braces (just like if statement). Similarly for for loop.
for (int i = 10; i >= 1; i--)
{
cout << i << endl;
}
cout << "Blast off!" << endl;
Output:
10 9 8 7 6 5 4 3 2 1 Blast off!
Discuss that any (or all) of init-stmt, check, or step-stmt could be empty.
Introducing the break statement: You can use a special statement called break;. It simply breaks out of the loop at that point and transfers control to the first statement following the end of the for the block.
Example:
#include <iostream>
#include "simpio.h"
using namespace std;
int main() {
int sum = 0; //sum must be declared outside of the loop! Otherwise it will be redeclared many times
int num = getInteger("Enter a number: "); //num must be declared outside of the loop! Otherwise, the loop condition makes no sense.
while (true)
{
sum += num;
num = getInteger("Enter a number: ");
if (num == -1)
break;
}
cout << "Sum is " << sum << endl;
return 0;
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 10; j++)
{
cout << "*";
}
cout << endl;
}
Could we have ommitted the braces in the for loop here?
Output:
********** ********** ********** ********** **********The outer loop repeats five times; the inner loop repeats ten times
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i + 1; j++)
{
cout << "*";
}
cout << endl;
}
Pattern 1
******* ****** ***** **** *** ** *
Pattern 2
* ** *** **** ***** ****** *******
Pattern 3
1 22 333 4444 55555 666666 7777777
Pattern 4
......1 .....22 ....333 ...4444 ..55555 .666666 7777777
Pattern 5
......1 .....21 ....321 ...4321 ..54321 .654321 7654321
type name()
{
statement1;
statement2;
...
}
Example:
int printGreeting()
{
cout << "Hello, world!" << endl;
cout << "I hope you had a great day.";
return 0;
}
int main()
{
string name = readLine("Next name? ");
while (name != "")
{
printGreeting();
name = readLine("Next name? ");
}
return 0;
}
Introduce the void type. Replace return type of printGreeting with void.