1 / 38

Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383

CSC141 Computer Science I. Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 zjiang@wcupa.edu. Loop. Price is right. Sample execution (click on this link to try) http://www.cis.temple.edu/~jiang/price_is_right.exe

trudy
Download Presentation

Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC141 Computer Science I Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 zjiang@wcupa.edu

  2. Loop • Price is right. • Sample execution (click on this link to try) • http://www.cis.temple.edu/~jiang/price_is_right.exe • Each button in the above sample REPEAT …?

  3. While loop • Format & Logic, page 197, Figure 4-1. • Sample, code 4-3, page 198.

  4. <initialization>; while (<test>) { <body>; }

  5. Do-while loop • Format, page 208 • Logic, page 209, Figure 4-6. • Sample, code 4-6, page 209.

  6. How does this differ from the while loop? • The controlled <statement(s)> will always execute the first time, regardless of whether the <test> is true or false.

  7. For loop • Format, page 212, Figure 4-7. • Logic, page 212, Figure 4-8. • Sample, code 4-7, page 213.

  8. for (<init>; <test>; <update>) { <body>; }

  9. Summary Body first, and then event change/update

  10. Development process • http://www.cis.temple.edu/~jiang/LoopDevelopment.htm

  11. Controlling Number of Loop Iterations If the number of iterations is known before the loop starts, the loop is called a count-controlled loop. Counter =0, counter++, counter <number Counter = 1, counter++, counter <=number Use for loop for an easy development.

  12. Code: for (int i = 1; i <= 4; i++) { System.out.println(i + " squared is " + (i * i)); } Output: 1 squared is 1 2 squared is 4 3 squared is 9 4 squared is 16 Counter-controlled loop? How many iterations? What are they? 1st? 2nd? 3rd?

  13. Code: n=keyboard.nextInt(); // try 6! for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { System.out.print("*"); } System.out.println(); } Output: ****** ****** ****** ****** ****** ****** Counter-controlled loop? How many iterations? What is the body? 1st iteration? 2nd Iteration? 3rd iteration?

  14. Code: n=keyboard.nextInt(); // try 5! for (int i = 1; i <= n; i++) { for (int j = 1; j <= 10; j++) { System.out.print((i * j) + " "); } System.out.println(); } Output: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 Counter-controlled loop? How many iterations? What is the body? 1st iteration, each +1? 2nd Iteration, each +2? 3rd iteration, each +3? i, i+I, i+i+I, …?

  15. Code: n=keyboard.nextInt(); // try 6! for (i = 1; i<=n; i++) System.out.print(“*”); System.out.println(“”); for (i = 1; i <= n-2; i++) { System.out.print(“*”); for (int j = 1; j <= n-2; j++) System.out.print(“ ”); System.out.println(“*”); } for (i = 1; i<=n; i++) System.out.print(“*”); System.out.println(“”); Output: ****** * * * * * * * * ****** What is the body? 1st iteration? 2nd Iteration? 3rd iteration? Counter controlled loop

  16. Code: n=keyboard.nextInt(); // try 6! for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } Output: * ** *** **** ***** ****** i * each line!

  17. Code: n=keyboard.nextInt(); // try 6! for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); } System.out.println(); } Output: 1 22 333 4444 55555 666666 How many i each line?

  18. Code: n=keyboard.nextInt(); // try 5! for (int i = 1; i <= n; i++) { for (int j = 1; j <= (n - i); j++) { System.out.print(" "); } for (int k = 1; k <= i; k++) { System.out.print(i); } System.out.println(); } Output: 1 22 333 4444 55555 Space and numbers?

  19. Otherwise (unknown or unclear), the loop is called a event-controlled loop. Use a while loop or a do-while loop for an easy checkpoint development. Asking the user before each iteration if it is time to end the loop is called the ask-before-iterating technique. Appropriate status update (or event initializing) for a sequence of iterations Controlling Event of Loop Iterations

  20. Finds and prints a number's first factor other than 1: int n = keyboard.nextInt(); // try 91 int f = 2; while (n % f != 0) { f++; } System.out.println("First factor:" + f); Sample run: First factor:7 Body: exploring the factor. When/what to stop the loop? n% f = = 0 divisible! The range of f? Initialization of f? The change of f?

  21. Write a program that will repeatedly prompt the user to type a number until the user types a non-negative number, then square it. Example log: Type a non-negative integer: -5 Invalid number, try again: -1 Invalid number, try again: -235 Invalid number, try again: -87 Invalid number, try again: 11 11 squared is 121

  22. System.out.print("Type a non-negative integer: "); int n = keyboard.nextInt(); while (n < 0) { System.out.print("Invalid number, try again: "); n = keyboard.nextInt(); } int square = n * n; System.out.println(n + " squared is " + square); Notice that the number variable had to be declared outside the while loop in order to remain in scope. Body: trying different value of n. When/what to stop the loop? n>= 0 non-negative! The range of n? -> any (since n<0) Initialization of n? The change of n?

  23. Write a class named DigitSum that reads an integer from the user and prints the sum of the digits of that number. You may assume that the number is non-negative. Example: Enter a nonnegative number: 29107 prints out 19 (i.e.,2+9+1+0+7 ) Hint: Use the % operator to extract the last digit of a number. If we do this repeatedly, when should we stop?

  24. import java.util.Scanner; public class DigitSum { public static void main(String [] args) { Scanner keyboard = new Scanner(System.in); int n = keyboard.nextInt(); int sum = 0; while (n > 0) { sum += n % 10; // add last digit to sum n = n / 10; // remove last digit } System.out.println(“sum = “ + sum); } } Body: adding the last digit and extracting that from the original number (for next round) When/what to stop? All digits are counted! n <= 0 no more need to count! The change of n? -> make the extraction valid Initialization?

  25. Write a program named CountFactors that reads in an integer and displays its number of factors. For example, if the user enters 60, CountFactors displays 12 because 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and 60 are all factors of 60. Body: try all possible numbers k, count k (sum++) only when n is divisible by k. When/what to stop? K>n (trial from 1 is over) The range of k? -> 1 to n Change? k++ Initialization? Scanner keyboard = new Scanner(System.in); int n = keyboard.nextInt(); int sum = 0, k = ?; while ( ) { } System.out.println(“sum = “ + sum);

  26. Exercise • population  • http://www.cis.temple.edu/~jiang/6billion.exe • TV purchase • http://www.cis.temple.edu/~jiang/tv563.exe • 1+2+4+8+... • http://www.cis.temple.edu/~jiang/1_2_4.exe • 1+2+3+4+...+99 • http://www.cis.temple.edu/~jiang/1to99.exe

  27. Solution

  28. File writing, page 237-240 • Filename • PringWriter • Println • Close • Sample, code 4-17, page 237

  29. Appending data to a (existing) file • FileWriter (, true), page 240

  30. File Reading, page 241-245 • File • Scanner • nextXXXX( ) • close • Sample, code 4-18, page 242.

  31. Detecting the end of a file • hasNext • Code 4-19, page 245. • Detecting the existence of a file • exists • Code 4-21, page 249.

  32. Random number generator • randomNumbers.nextXXX( ) • Sample, code 4-23, page 253.

  33. Objects of the Random class generate pseudo-random numbers. Class Random is found in the java.util package. import java.util.*; The methods of a Random object Method name Description nextInt()‏ returns a random integer nextInt(max)‏ returns a random integer in the range [0, max)‏ in other words, from 0 to one less than max nextDouble()‏ returns a random real number in the range [0.0, 1.0)‏

More Related