Control Structures
Sequential Execution x = keyBoard.nextInt(); statement statement y = 2*x - 3; statement System.out.println(x); … … System.out.println(y); statement
Selecting Execution Route ? true statement false if(?){ statement; }
Selecting Execution Route ? true statement _1 false statement_2 if(?){ statement_1; } else{ statement_2; }
for Loops Referred to as the “counting” loop Parts of a for-loop Initialize counter Referred to as the “counting” loop Parts of a for-loop Initialize and declare counter section Test counter section Update counter section Loop body section Test counter false true statement Update counter
for Loops for(initialize; test; update){ body } for(initialize_variable; test_variable; change_variable) { //body of loop goes here }
while loop
//display all divisors of a given positive integer //d is a divisor of N input N d = 1 while d less than or equal to N{ if(d divides evenly into N){ print d } increment d by one
while d less than or equal to N{ if(d divides evenly into N){ print d input N d = 1 while d less than or equal to N{ if(d divides evenly into N){ print d } increment d by one Bench Test: N d d <= N? d divdes N? output ============================================================== 10 1 yes yes 1 ------------------------------------------------------------- 2 yes yes 2 3 yes no - 4 yes no - 5 yes yes 5 6 yes no - 7 yes no - 8 yes no - 9 yes no - 10 yes yes 10 11 no
Contrasting Loops j = 1; while(j<=5){ System.out.println(“Hello”); j = j + 1; } Remember to update j for(int j=1; j<=5; j=j+1){ System.out.println(“Hello”); }
Arithmetic Sequences a = first term d = common difference n = number of terms Sequence: a, a+d, a+2d, …, a+(n-1)d
Code outCnt = 0; for(int k=0; k<n; k++){ if(outCnt != 5) System.out.printf("%5d", a + k*d); else{ System.out.printf("%n%5d", a + k*d); } outCnt++;
Alternate Code outCnt = 0; for(int k=a; k<a+n*d; k=k+d){ if(outCnt != 5) System.out.printf("%5d", k); else{ System.out.printf("%n%5d", k); } outCnt++;
do-while Loops Bottom-test loop Always executes the body at least once Loops until the Test? returns false statement Test? true false
do-while Loops do{ statement; }while(?); while(?){ statement; } Bottom-test loop while(?){ statement; } Top-test loop
Example
Premature Loop Exit break Used to exit an enclosing loop statement Used to exit a switch statement x = keyBoard.nextInt(); while(x<=100){ System.out.println(x); if(x % 4 == 0) break; x = x + 7; }
switch Statement Used in place of a series of if-else if-else ifs When the test produces an integer value if(month==1){ … } else if(month==2){ … } … switch(month){ case 1: … break; case 2: … case 3: … break; … default: }