250 likes | 491 Views
Week 4 – Repetition Structures / Loops. Outline. Introduction While loops Three types of while loops Do-while loops For loops Nested loops. Why Need Loops ?. Suppose we want to add five numbers and find the average. From what you have learned so far, you could proceed as follows
E N D
Week 4 – Repetition Structures / Loops EKT 120 SEM I 13/14
Outline • Introduction • While loops • Three types of while loops • Do-while loops • For loops • Nested loops EKT 120 SEM I 11/12
Why Need Loops ? • Suppose we want to add five numbers and find the average. • From what you have learned so far, you could proceed as follows scanf(“%d %d %d %d %d”, &iNum1, &iNum2, &iNum3, &iNum4, &iNum5); iSum = iNum1 + iNum2 + iNum3 + iNum4 + iNum5; fAverage = iSum / 5; • If 100 numbers, 1000 numbers? EKT 120 SEM I 13/14
Repetition (Loop) • Used to control the flow of a program • Loops are basically repetitions or iterations used to repeat a segment of code • Three statements can be used to implement loops in C • whilestatement • do-while statement • forstatement • while and for statements are similar in implementation, but have different syntax • The do-while statement is different - the following code is executed at least once EKT 120 SEM I 13/14
The while loop structure • The general form of the while statement is: while (expression) statement; • To avoid an infinite loop, make sure that the loop’s body contains statement (s) that assure that the exit condition i.e. the expression in the while statement will eventually be false. • while loop repeates until condition becomes false EKT 120 SEM I 13/14
Flowchart of a while statement EKT 120 SEM I 13/14
The while loop structure-cont • There are basically three types of while loops: • Counter-controlled while loop • Sentinel-controlled while loop • Flag-controlled while loop EKT 120 SEM I 13/14
Counter-Controlled while Loops • Definite repetition: know how many times loop will execute • Control variable used to count repetitions Example: int iCounter = 1; // declare and initialize while ( iCounter <= 10 ) // test condition { printf( "%d\n", iCounter ); ++iCounter; // update } Requirement: 1. Declare and initializecontrol variable value (or loop counter) 2. A condition that tests for the final value of the control variable (i.e., whether looping should continue) 3. Update control variable (incr/decr) EKT 120 SEM I 13/14
true iProduct <= 1000 iProduct = 2 * iProduct false Counter-Controlled while Loops declare and initialize • Another example: int iProduct = 2; while ( iProduct <= 1000 ) iProduct = 2 * iProduct; test condition increment EKT 120 SEM I 13/14
Sentinel-Controlled while Loops • Indefinite repetition • Used when number of repetitions not known and loop needs to input value repeatedly for each iteration • Sentinel value indicates "end of data“ EKT 120 SEM I 13/14
Sentinel-Controlled while Loops-continued Example: int iNumber, iCount, iSum; iSum = 0; iCount = 0; printf(“To stop enter -999. Enter positive numbers : " ); scanf(“%d”, &iNumber); while (iNumber != -999) { iSum = iSum + iNumber; //find sum of numbers entered iCount++; //count how many numbers entered printf(“To stop enter -999. Enter positive numbers : " ); scanf(“%d”, &iNumber); } printf(“\nThe sum of %d numbers is %d“, iCount, iSum); Requirement: 1. Readcontrol variable value before enter loop 2. A condition that testscontrol variable’s validity (i.e., whether looping should continue) 3. Read again control variable before end of loop Sentinel value EKT 120 SEM I 13/14
Sentinel-Controlled while Loops-continued • Another example: float fGradePt; char cChoice; printf(“Continue? y-yes n-no: ”); scanf(“%c”, &cChoice); while ( cChoice == ‘y’) { printf(“\nEnter grade point:”); scanf(“%f”, &fGradePt); if(fGradePt > 2.0) printf(“\nPass); printf(“Continue? y-yes n-no: ”); scanf(“%c”, &cChoice); } read control variable test condition read again EKT 120 SEM I 13/14
Flag-Controlled while Loops • Uses a flag to control the loop. • Loop exit when expression is evaluated to false. Set Flag, by default error =1 Requirement: 1. Setcontrol variable before loop 2. A condition that testscontrol variable. If expr evaluated to 1, loop continue 3. A decision structure to test value validity 4. Setcontrol variable to 0 to indicate found int error; int iGuess; while (error) { printf("Enter number between 1 and 200:"); scanf("%d", &iGuess); if ((iGuess>= 88) &&(iGuess <=128)) {error = 0; printf("\nBINGO!");} } test condition decision structure Set error to 0 EKT 120 SEM I 13/14
The do-while Repetition Structure • Similar to the while structure • Condition for repetition is tested after the body of the loop is performed • All actions are performed at least once • Expression can be written as count-controlled or sentinel-controlled • Format: do { statement; } while ( condition ); EKT 120 SEM I 13/14
true false action(s) condition Flowchart of a do-while structure EKT 120 SEM I 13/14
The do-while Repetition Structure • Example : prints the integers from 1 to 10 int iCounter = 1; do { printf( "%d ", iCounter ); } while (++iCounter <= 10); • Another example: do { printf(“\nEnter grade point:”); scanf(“%f”, &fGradePt); if(fGradePt > 2.0) printf(“\nPass); printf(“Continue?y-yes n-no :”); scanf(“%c”, &cChoice); }while ( cChoice == ‘y’) count-controlled sentinel-controlled EKT 120 SEM I 13/14
The do-while Repetition Structure • To avoid an infinite loop, make sure that the loop body contains a statement that ultimately makes the expression false and assures that it exits • Another example: int iLoop = 0; do { printf (“%d ”,iLoop); iLoop = iLoop + 5; } while (iLoop <= 20); The output is: 0 5 10 15 20 EKT 120 SEM I 13/14
The do-while Looping Structure (Example) • Example: Consider the following two loops (a) iLoop = 11; while (iLoop <= 10) { printf("%d",iLoop); iLoop = iLoop + 5; } (b) iLoop = 11; do { printf("%d",iLoop); iLoop = iLoop + 5; } while (iLoop <= 10); EKT 120 SEM I 13/14
The do-while Looping Structure (Example) • In (a), the while loop, produces nothing • In (b) the do...while loop, outputs the number 11 EKT 120 SEM I 13/14
The for Repetition Structure • Format when using for loops for (initialization ; loop continuation test ; incrementstatement) • Use for loops when already know how many times to repeat • Example: for(iCounter = 1;iCounter <= 10;iCounter++) printf("%d\n",iCounter); • Prints the integers from 1 to 10 EKT 120 SEM I 13/14
The for Repetition Structure • ‘for’ loops can usually be rewritten as while loops: initialization;while( loop continuation test ) { statement; increment statement;} • Initialization and increment • Can be comma-separated lists. Example: int iVar1, iVar2; for(iVar1=0,iVar2=0;iVar2+iVar1<=10;iVar2++,iVar1++) printf(“%d\n”,iVar2+iVar1); EKT 120 SEM I 13/14
Flow of a for statement EKT 120 SEM I 13/14
Nested loop • Loop within a loop • Inner loop is performed first • e.g. for(iLoop1=1;iLoop1<4;iLoop1++) { for(iLoop2=1;iLoop2<5;iLoop2++) printf(“%d”, iLoop2); printf(“\n”); } Output 1234 1234 1234 EKT 120 SEM I 13/14
Nested loop • Another example: • Program finds and prints avg of three test scores, then asks whether user wants to continue do { for(iCount=0; iCount <3;iCount++) { printf(“\nEnter test marks: ”); scanf(“%d”, &iMarks); iTotal=iTotal+iMarks; } fAvg=iTotal/iCount; printf(“\nAverage:%5.2f”, fAvg); printf(“\nContinue?”); scanf(“%c”, &cChoice); }while(cChoice == ‘y’); EKT 120 SEM I 13/14
End Week 4 - Loops Q & A! EKT 120 SEM I 13/14