Download - More Loops
![Page 1: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/1.jpg)
CMSC 104, Lecture 17 1
More Loops
Topics Counter-Controlled (Definite) Repetition Event-Controlled (Indefinite) Repetition for Loops do-while Loops Choosing an Appropriate Loop Break and Continue Statements
Reading Sections 4.1 - 4.6, 4.8, 4.9
![Page 2: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/2.jpg)
CMSC 104, Lecture 17 2
Counter-Controlled Repetition (Definite Repetition)
If it is known in advance exactly how many times a loop will execute, it is known as a counter-controlled loop.
int i = 1 ;
while ( i <= 10 ){
printf(“i = %d\n”, i) ;i = i + 1 ;
}
![Page 3: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/3.jpg)
CMSC 104, Lecture 17 3
Counter-Controlled Repetition (con’t)
• Is the following loop a counter-controlled loop?
while ( x != y )
{
printf(“x = %d”, x) ;
x = x + 2 ;
}
![Page 4: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/4.jpg)
CMSC 104, Lecture 17 4
Event-Controlled Repetition(Indefinite Repetition)
If it is NOT known in advance exactly how many times a loop will execute, it is known as an event-controlled loop.
sum = 0 ;printf(“Enter an integer value: “) ;scanf(“%d”, &value) ;while ( value != -1) {
sum = sum + value ;printf(“Enter another value: “) ;scanf(“%d”, &value) ;
}
![Page 5: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/5.jpg)
CMSC 104, Lecture 17 5
Event-Controlled Repetition (con’t)
An event-controlled loop will terminate when some event occurs.
The event may be the occurrence of a sentinel value, as in the previous example.
There are other types of events that may occur, such as reaching the end of a data file.
![Page 6: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/6.jpg)
CMSC 104, Lecture 17 6
#include <stdio.h>int main (){
int i = 1; initialization of loopcontrol variable
/* count from 1 to 10 */while ( i < 11 ) test condition that terminate loop{
printf (“%d “, i);i++; modification of loop control
} variable return 0;}
The 3 Parts of a Loop
![Page 7: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/7.jpg)
CMSC 104, Lecture 17 7
The for loop Repetition Structure
The for loop handles details of the counter-controlled loop automatically
The initialization of the the loop control variable, termination conditional test and modification are handled in for loop structure
for ( i = 1; i < 11; i++)
{
initialization modification
} test
![Page 8: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/8.jpg)
CMSC 104, Lecture 17 8
When does the for loop initialize, test and modify ?
Just as in the while loop that counted, the for loopo Initializes the loop control variable before beginningo modified the loop control variable at the very end of
each iteration of the loopo performs the conditional termination test before
each iteration of the loop The for loop is easier to write and read for
counter-controlled loops
![Page 9: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/9.jpg)
CMSC 104, Lecture 17 9
A for loop that countsfrom 0 to 9
for (i = 0; i < 10; i++)
{
printf (“%d”, i);
}
printf (“\n”);
![Page 10: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/10.jpg)
CMSC 104, Lecture 17 10
We can count backwards, too
for (i = 10; i > 0; i--)
{
printf (“%d\n”, i);
}
![Page 11: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/11.jpg)
CMSC 104, Lecture 17 11
We can count by 2’s... or 7’s ... or whatever
for (i = 0; i < 10; i += 2)
{
printf (“%d\n”, i);
}
![Page 12: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/12.jpg)
CMSC 104, Lecture 17 12
The do-while repetitive structure
do
{
statement(s)
} while (condition);
The body of the do-while is ALWAYS executed at least once. Is this true of a while loop? What about a for loop?
![Page 13: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/13.jpg)
CMSC 104, Lecture 17 13
do-while example
do
{
printf (“Enter a positive number: “);
scanf (“%d”, &num);
if (num <= 0)
{
printf (“\nThat is not positive, try again\n”);
}
} while (num <= 0);
![Page 14: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/14.jpg)
CMSC 104, Lecture 17 14
A while that tests input(Compare with do-while)
printf (“Enter a positive number: “);scanf (“%d”, &num);while (num <= 0){
printf (“\nThat is not positive, try again\n”);printf (“Enter a positive number: “);scanf (“%d”, &num);
}
Notice that using a while loop in this case requires a priming read.
![Page 15: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/15.jpg)
CMSC 104, Lecture 17 15
An Equivalent for Loop
printf (“Enter a positive number: “) ;scanf (“%d”, &num) ;
for ( ; num <= 0; )
{ printf (“\nThat is not positive. Try again\n”) ; printf (“Enter a positive number: “) ; scanf (“%d”, &num) ;}
• A for loop is a very awkward choice here because the loop is event-controlled.
![Page 16: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/16.jpg)
CMSC 104, Lecture 17 16
So, Which Type of Loop Should I Use?
Use a for loop for counter-controlled repetition.
Use a while or do-while loop for event-controlled repetition.o Use a do-while loop when the loop must
execute at least one time.o Use a while loop when it is possible that the
loop may never execute.
![Page 17: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/17.jpg)
CMSC 104, Lecture 17 17
Nested Loops
Loops may be nested (embedded) inside of each other.
Actually, any control structure (sequence, selection, or repetition) may be nested inside of any other control structure.
It is common to see nested for loops.
![Page 18: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/18.jpg)
CMSC 104, Lecture 17 18
Nested for Loops
for ( i = 1; i < 5; i = i + 1 )
{ for ( j = 1; j < 3; j = j +
1 ) {
if ( j % 2 == 0 ){ printf (“O”) ;}else{ printf (“X”) ;}
} printf (“\n”) ;}
How many times is the “if” statement executed?
What is the output ?
![Page 19: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/19.jpg)
CMSC 104, Lecture 17 19
The break Statement
The break statement can be used in while, do-while, and for loops to cause premature exit of the loop.
THIS IS NOT A RECOMMENDED CODING TECHNIQUE.
![Page 20: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/20.jpg)
CMSC 104, Lecture 17 20
Example break in a loop
#include <stdio.h>
main ( )
{
int i;
for (i = 1; i < 10; i++)
{
if (i == 5)
{
break;
}
printf (“%d “, i);
}
printf (“\nbroke out of loop at i = %d\n”, i);
}
OUTPUT:
1 2 3 4
Broke out of loop at i = 5
![Page 21: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/21.jpg)
CMSC 104, Lecture 17 21
The continue Statement
continue can be used in for, while,and do-while loops
It causes the remaining statements in the body of the loop to be skipped for the current iteration of the loop. The loop continues with the next iteration
THIS IS NOT A RECOMMENDED CODING TECHNIQUE.
![Page 22: More Loops](https://reader035.vdocument.in/reader035/viewer/2022062217/56813c60550346895da5e742/html5/thumbnails/22.jpg)
CMSC 104, Lecture 17 22
Example of continue in a loop
#include <stdio.h>
int main ( )
{
int i;
for (i = 1; i < 10; i++)
{
if (i == 5)
{
continue;
}
printf (“%d”, i);
}
printf (“\nDone.\n”);
return 0;
}
OUTPUT:
1 2 3 4 6 7 8 9
Done.