270 likes | 634 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 EKT120: Computer Programming
Outline • Introduction • While loops • Three types of while loops • Do-while loops • For loops • Nested loops EKT120: Computer Programming
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? EKT120: Computer Programming
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 EKT120: Computer Programming
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 EKT120: Computer Programming
Flowchart of a while statement EKT120: Computer Programming
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 EKT120: Computer Programming
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) EKT120: Computer Programming
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 EKT120: Computer Programming
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“ EKT120: Computer Programming
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 EKT120: Computer Programming
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 EKT120: Computer Programming
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 EKT120: Computer Programming
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 ); EKT120: Computer Programming
true false action(s) condition Flowchart of a do-while structure EKT120: Computer Programming
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 EKT120: Computer Programming
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 EKT120: Computer Programming
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); EKT120: Computer Programming
The do-while Looping Structure (Example) • In (a), the while loop, produces nothing • In (b) the do...while loop, outputs the number 11 EKT120: Computer Programming
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 EKT120: Computer Programming
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); EKT120: Computer Programming
Flow of a for statement EKT120: Computer Programming
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 EKT120: Computer Programming
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’); EKT120: Computer Programming
End Week 4 - Loops Q & A! EKT120: Computer Programming