Programming Methodology (1)
Iteration
Learning objectives explain the term iteration; repeat a section of code with a for loop; repeat a section of code with a while loop; repeat a section of code with a do...while loop; select the most appropriate loop for a particular task; explain the term input validation and write simple validation routines.
When to use a loop?
Display a square of stars (five by five) on the screen as follows: * * * * * * * * * * * * * * * * * * * * * * * * * System.out.println("*****"); System.out.println("*****"); System.out.println("*****"); System.out.println("*****"); System.out.println("*****"); REPEAT 5 times { } System.out.println("*****");
The ‘for’ loop
for ( ; ; ) { } start countertest counterchange counter // instruction(s) to be repeated go here i = 1i++i <= 5 System.out.println(“*****”); int i;
Variable Scope
public static void main (String [] args) { } if ( /* some test */) { } int x; int y; x = 10; System.out.print(x); System.out.print(y); System.out.print(y); y = x+1;
for ( ; ; ) { } i = 1 i++i <= 5 System.out.println(“*****”); RUN ***** ***** ***** ***** ***** i int i; int i = 1
Different ways of using the loop counter
for ( ; ; ) { } i ++i <= 5 System.out.println(“*****”); ***** int i = 1
for ( ; ; ) { } i = i + 2i <= 5 System.out.println(“*****”); ***** int i = 1
for ( ; ; ) { } i = i + 2i <= 10 System.out.println(“*****”); ***** int i = 1
for ( ; ; ) { } i = i + 2i <= 10 System.out.println(“*****”); RUN ***** ***** ***** ***** ***** i int i = 1
for ( ; ; ) { } start countertest counterchange counter // instruction(s) to be repeated go here int i = 10i--i >= 1 System.out.println( i ); RUN i
The body of the loop
for ( ; ; ) { } i ++i <= 3 System.out.println(“First line”); ***** int i = 1
for ( ; ; ) { } i ++i <= 3 System.out.println(“First line”); ***** int i = 1 System.out.println(“Second line”); First line Second line First line Second line First line Second line
for ( ; ; ) { } i --i >= 1 System.out.println( i ); ***** int i =
for ( ; ; ) { } i --i >= 1 if ( i > 5 ) { System.out.println( i ); } int i =
Nested loops
for (int i = 1; i <= 5; i++) { } System.out.println("*****");
for (int i = 1; i <= 5; i++) { } System.out.print("*"); System.out.println( ); System.out.print("*"); System.out.print("*"); System.out.print("*"); System.out.print("*");
for (int i = 1; i <= 5; i++) { } for (int j = 1; j <= 5; j++) { } System.out.print("*"); System.out.println( );
Allowing the user to fix the size of the square * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
for (int i = 1; i <= 5 ; i++) { for (int j = 1; j <= 5 ; j++) { System.out.print("*"); } System.out.println( ); } System.out.println("Size of square?"); num = sc.nextInt(); num; i++) num; j++)
Running the program Size of square? 8 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Size of square? 3 * * * * * * * * *
Non-fixed repetitions
The ‘while’ loop
3422
Error!
7343
Error!
1234
CASH
System.out.print(“Enter PIN: ”); pin = sc.nextInt( ); System.out.print(“Invalid PIN, please re-enter: ”); pin = sc.nextInt( ); System.out.println(“Correct PIN, have some money! ”); while ( ) { } */ test goes here */pin != 1234 RUN Enter PIN:1234 Correct PIN, have some money! Correct PIN, have some money! Invalid PIN, please re-enter: Invalid PIN, please re-enter:1234
Input Validation
import java.util.*; public class DisplayResult { public static void main(String[] args) { int mark; Scanner sc = new Scanner (System.in); System.out.println("What exam mark did you get?"); mark = sc.nextInt(); if (mark >= 40) { System.out.println("Congratulations, you passed"); } else { System.out.println("I‘m sorry, but you failed"); } System.out.println("Good luck with your other exams"); } CHECK MARK HERE
System.out.println("What exam mark did you get?"); mark = sc.nextInt( ); if (mark >= 40) { System.out.println("Congratulations, you passed"); } else { System.out.println("I‘m sorry, but you failed"); } System.out.println("Good luck with your other exams"); CHECK MARK HERE System.out.println(“Invalid mark: please re-enter“); mark = sc.nextInt( ); while ( ) { } mark > 100mark < 0 ||
Sample Program Run What exam mark did you get? 101 Invalid mark: please re-enter -10 Invalid mark: please re-enter 10 I'm sorry, but you failed Good luck with your other exams
The ‘do…while’ loop
// some code here // some code here // some code goes here { } while ( /*test goes here*/ ) do ;
import java.util.*; public class FindCost4 { public static void main(String[] args ) { double price, tax; Scanner sc = new Scanner(System.in); } } // code for rest of program here char reply; System.out.print (“Enter another product (y/n)?: ”); reply = sc.next().charAt(0); { } while ( ); ? reply == ‘y’reply == ‘Y’ ||
Sample Program Run *** Product Price Check *** Enter initial price: 50 Enter tax rate:10 Cost after tax = 55.0 Enter another product (y/n)?: y *** Product Price Check *** Enter initial price: 70 Enter tax rate:5 Cost after tax = 73.5 Enter another product (y/n)?: n
Menu Driven Programs
*** Product Price Check *** [1] Enter Price [2] Enter tax [3] Calculate Cost [4] Quit Enter choice [1-4]: 1 Enter initial price:12.5
*** Product Price Check *** [1] Enter Price [2] Enter tax [3] Calculate Cost [4] Quit Enter choice [1-4]: 1 Enter initial price:100
*** Product Price Check *** [1] Enter Price [2] Enter tax [3] Calculate Cost [4] Quit Enter choice [1-4]: 2 Enter tax rate:12.5
*** Product Price Check *** [1] Enter Price [2] Enter tax [3] Calculate Cost [4] Quit Enter choice [1-4]: 3 Cost = 112.5
*** Product Price Check *** [1] Enter Price [2] Enter tax [3] Calculate Cost [4] Quit Enter choice [1-4]: 4 Goodbye!
Menu Driven Timetable Program
*** Lab Times *** [1] TIME FOR GROUP A [2] TIME FOR GROUP B [3] TIME FOR GROUP C [4] QUIT Enter choice [1-4]: 2 1.OOp.m
*** Lab Times *** [1] TIME FOR GROUP A [2] TIME FOR GROUP B [3] TIME FOR GROUP C [4] QUIT Enter choice [1-4]: 5 Options 1-4 only!
*** Lab Times *** [1] TIME FOR GROUP A [2] TIME FOR GROUP B [3] TIME FOR GROUP C [4] QUIT Enter choice [1-4]: 1 10.OOa.m
*** Lab Times *** [1] TIME FOR GROUP A [2] TIME FOR GROUP B [3] TIME FOR GROUP C [4] QUIT Enter choice [1-4]: a.m
*** Lab Times *** [1] TIME FOR GROUP A [2] TIME FOR GROUP B [3] TIME FOR GROUP C [4] QUIT Enter choice [1-4]: 4 Goodbye
// code to declare variables System.out.println(“[1] TIME FOR GROUP A”); System.out.println(“[2] TIME FOR GROUP B”); System.out.println(“[3] TIME FOR GROUP C”); System.out.println(“[4] QUIT”); System.out.print(“Enter choice [1-4]: “); choice =sc.next().charAt(0); switch(choice) { } case ‘1’: case ‘2’: case ‘3’: default: System.out.println(“10.00a.m”); System.out.println(“1.00p.m”); System.out.println(“11.00a.m”); System.out.println(“Options 1-4 only!”); { } choice != ‘4’ case ‘4’:System.out.println(“Goodbye”); // CODE TO DISPLAY MENU // CODE TO ENTER CHOICE // CODE TO PROCESS CHOICE do while( ); char choice; break; break; break; break;
public class IterationQ3 { public static void main(String[] args) { for(int i=1; i<=10; i++) { if (i%2 == 0) { System.out.println(i); } } } } i =
Assignment
Aaron’s Shop Guitar (£100) - How many?:
Aaron’s Shop Guitar (£100) - How many?: 2
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required?
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?:
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1 Total cost required?
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1 Total cost required? y
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1 Total cost required? y Total cost so far = £1100
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1 Total cost required? y Total cost so far = £1100 Mike (£45) - How many?:
Aaron’s Shop Guitar (£100) - How many?: 2 Total cost required? n Piano (£900) - How many?: 1 Total cost required? y Total cost so far = £1100 Mike (£45) - How many?: 0
Using a for loop, write a program that displays a "6 times" multiplication table; the output should look like this: 1 6 = 6 2 6 = 12 3 6 = 18 4 6 = 24 5 6 = 30 6 6 = 36 7 6 = 42 8 6 = 48 9 6 = 6 = 6 = 6 = 72
Using a for loop, write a program that displays a "6 times" multiplication table; the output should look like this: 1 6 = 6 2 6 = 12 3 6 = 18 4 6 = 24 5 6 = 30 6 6 = 36 7 6 = 42 8 6 = 48 9 6 = 6 = 6 = 6 = 72