Loops in C & Good Coding Practices

advertisement
CS 101 Introductory
Programming - Lecture 7: Loops
In C & Good Coding Practices
Presenter: Ankur Chattopadhyay
Flowcharts for sequential, selection and iterative control structures
Command
Command
Command
Command
Command
False
True
Test
Commands
to execute
if False
Commands
to execute
if True
Setup
Done
Commands
Command
Command
Command
Sequential Structure
Example Selection Structure
(straight-line structure) (decision or branching structure)
Command
Iterative Structure
2
(looping structure)
Repetition Statements
• Repetition statements allow us to execute a
statement multiple times
• Often they are referred to as loops
• Like conditional statements, they are
controlled by Boolean expressions
• C has three kinds of repetition statements:
– the while loop
– the do loop
– the for loop
The for Statement
• A for statement has the following syntax:
The initialization
is executed once
before the loop begins
The statement is
executed until the
condition becomes false
for ( initialization ; condition ; increment ){
statement;
}
The increment portion is
executed at the end of each
iteration
Logic of a for loop
initialization
condition
evaluated
true
statement
increment
false
Examples of for loop: Lecture 6
//Multiplication Algorithm
int a, b, product, count;
printf("Enter two non-negative numbers: ");
scanf("%i %i", &a, &b);
for (product = 0, count = 0; count < b; count = count
+ 1) {
product = product + a;
}
printf("The product of %i and %i is %i\n", a, b,
product);
//Sum of first n natural numbers
int sum = 0; // the accumulator
for (int i = 1; i <= n; i++) {
sum += i;
}
Dissecting The for Statement
• Each expression in the header of a for loop
is optional
• If the initialization is left out, no
initialization is performed
• If the condition is left out, it is always
considered to be true, and therefore
creates an infinite loop
– We usually call this a “forever loop”
• If the increment is left out, no increment
operation is performed
The while Statement
• A while statement has the following
syntax:
while ( condition ){
statement;
}
• If the condition is true, the statement is
executed
• Then the condition is evaluated again, and if
it is still true, the statement is executed
again
• The statement is executed repeatedly until
the condition becomes false
Logic of a while Loop
condition
evaluated
true
statement
false
The while Statement
• An example of a while statement:
int count = 1;
while (count <= 5){
printf(“%i”, count);
count++;
}
• If the condition of a while loop is false
initially, the statement is never executed
• Therefore, the body of a while loop will
execute zero or more times
Analyzing The while Statement
• A while loop is functionally
equivalent to the following structure:
initialization;
while ( condition ){
statement;
increment;
}
Examples of while loop
// for loop example: Lecture 6
for (product = 0, count = 0; count < b; count = count
+ 1) {
product = product + a;
}
Counter-Controlled Loop - Definite Repetition
// equivalent while loop (note: a for loop is more
appropriate in this case)
product = 0;
count = 0;
while (count < b) {
product = product + a;
count = count + 1;
}
Another Example of while loop
Sentinel-Controlled Loop: Indefinite Repetition
Nesting an if statement inside a loop
int keep_going = 1;
while (keep_going == 1) {
// computation would go here
...
int answer;
printf("Continue? (1 for yes, 0 for no) ");
scanf("%i", &answer);
if (answer == 0) {
keep_going = 0;
}
}
The do-while Statement
• A do-while statement (also called a do
loop) has the following syntax:
do{
statement;
} while ( condition )
• The statement is executed once
initially, and then the condition is
evaluated
• The statement is executed repeatedly
until the condition becomes false
Logic of a do-while Loop
statement
true
condition
evaluated
false
Example of a do Statement
• An example of a do loop:
int count = 0;
do{
count++;
printf(“%i”, count);
} while (count < 5);
• The body of a do loop executes at
least once
Comparing while and do
The while Loop
The do Loop
statement
condition
evaluated
true
statement
true
false
condition
evaluated
false
Infinite Loops
• The body of a while loop eventually
must make the condition false
• If not, it is called an infinite loop, which
will execute until the user interrupts
the program
• This is a common logical (semantic)
error
• You should always double check the
logic of a program to ensure that your
loops will terminate normally
Example: Infinite Loop
• An example of an infinite loop:
int count = 1;
while (count <= 25){
printf(“%i”, count);
count = count - 1;
}
• This loop will continue executing
forever
Good Coding Style Practice
• Always place braces around the body of a
while loop.
• Advantages:
– Easier to read
– Will not forget to add the braces if you go back
and add a second statement to the loop body
– Less likely to make a semantic error
• Indent the body of a loop - use spaces -be consistent!
Some Case Studies/Sample
Programs To Try Out
• Problem 1:
- Write a C program that takes a series of integer
scores as inputs using a loop, exits if a score
entered is negative and computes the average of
all the scores entered.
• Problem 2:
- Write a C program that takes an integer number
as input and determines whether the number is
prime or not.
• Problem 3: Using loops in a C program print the
following pattern - 1
12
123
1234
1 2 3 4 5 (Hint: Use nested loops)
Download