Presentation is loading. Please wait.

Presentation is loading. Please wait.

Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 CSC141 Computer Science I 12/11/20151.

Similar presentations


Presentation on theme: "Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 CSC141 Computer Science I 12/11/20151."— Presentation transcript:

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

2 Smart if-decision making, smart program work, talent programmer Research experience (REU) - click on this linkthis link Temperature/humidity detection every second A repetition process for the 7x24 hours seamless surveillance Needs a computer support to REPEAT … Loop 12/11/20152

3 While loop Format & Logic, page 197, Figure 4-1. Sample, code 4-3, page 198. 12/11/20153

4 4 ; while ( ) { ; }

5 Do-while loop Format, page 208 Logic, page 209, Figure 4-6. Sample, code 4-6, page 209. 12/11/20155

6 6 How does this differ from the while loop? The controlled will always execute the first time, regardless of whether the is true or false. 12/11/2015

7 For loop Format, page 212, Figure 4-7. Logic, page 212, Figure 4-8. Sample, code 4-7, page 213. 12/11/20157

8 8 for ( ; ; ) { ; } 12/11/2015

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

10 Ex10 http://www.cs.wcupa.edu/~zjiang/141_ex10.pdf Ex11 http://www.cs.wcupa.edu/~zjiang/141_ex11.pdf 12/11/201510

11 Trial population http://www.cs.wcupa.edu/~zjiang/6billion.exe TV purchase http://www.cs.wcupa.edu/~zjiang/tv563.exe 1+2+4+8+... http://www.cs.wcupa.edu/~zjiang/1_2_4.exe 1+2+3+4+...+99 1+2+3+4+...+99 http://www.cs.wcupa.edu/~zjiang/1to99.exe 12/11/201511

12 Development process http://www.cis.temple.edu/~jiang/LoopDevelopment.htm 12/11/201512

13 12/11/201513

14 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/11/201514

15 12/11/201515

16 12/11/201516

17 Mapping iterations to counter values Suppose that we have the following loop: for (int count = 0; count < 49; count++) {... } What statement could we write in the body of the loop that would make the loop print the following output? 0 2 4 6 8 … Answer: for (int count = 0; count < 49; count++) { System.out.print(2 * count + " "); } 17

18 Now consider another loop of the same style: for (int count = 0; count < 49; count++) {... } What statement could we write in the body of the loop that would make the loop print the following output? 3 5 7 9 11 Answer: for (int count = 0; count < 49; count++) { System.out.print(2 * count + 3 + " "); } 18

19 What statement could we write in the body of the loop that would make the loop print the following output? 2 7 12 17 22 To find the pattern, it can help to make a table. Each time count goes up by 1, the number should go up by 5. But count * 5 is too big by 3, so we must subtract 3. 1720174 22 12 7 2 number to print 25 15 10 5 count * 5 225 123 72 21 count * 5 - 3count 19

20 174 22 12 7 2 number to print ( y )‏ 5 3 2 1 count (x)‏ 20

21 Caution: This is algebra, not assignment! Recall: slope-intercept form ( y = mx + b )‏ Slope is defined as “rise over run” (i.e. rise / run). Since the “run” is always 1 (we increment along x by 1), we just need to look at the “rise”. The rise is the difference between the y values. Thus, the slope ( m ) is the difference between y values; in this case, it is +5. To compute the y-intercept ( b ), plug in the value of y at x = 1 and solve for b. In this case, y = 2. y = m * x + b 2 = 5 * 1 + b Then b = -3 So the equation is y = m * x + b y = 5 * x – 3 y = 5 * count - 3 174 22 12 7 2 number to print ( y )‏ 5 3 2 1 count (x)‏ 21

22 Algebraically, if we always take the value of y at x = 1, then we can solve for b as follows: y = m * x + b y 1 = m * 1 + b y 1 = m + b b = y 1 – m In other words, to get the y -intercept, just subtract the slope from the first y value ( b = 2 – 5 = -3 )‏ This gets us the equation y = m * x + b y = 5 * x – 3 y = 5 * count – 3 (which is exactly the equation from the previous slides)‏ 22

23 What statement could we write in the body of the loop that would make the loop print the following output? 17 13 9 5 1 Let's create the loop table together. Each time count goes up 1, the number should... But this multiple is off by a margin of... 5-16 -20 -12 -8 -4 count * -4 1 9 13 17 count * -4 + 21 54 1 9 13 17 number to print 5 3 2 1 count 23

24 24 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 12/11/2015 http://www.cs.wcupa.edu/~zjiang/141_ex11.pdf

25 25 Coding (different from execution check): n=keyboard.nextInt(); // try 6! for (int i = 1; i <= n; i++) { System.out.print("*"); } System.out.println(); Output: ****** 12/11/2015

26 26 More complicate case: 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: ****** 12/11/2015

27 27 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 12/11/2015

28 How to confirm the initialization correct? On preparing the 1 st iteration … How to ensure the detail of the body? A consistent view of 1 st, 2 nd, 3 rd iterations … Map of the counter value to the iteration expression … 28

29 29 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: ****** * ****** 12/11/2015

30 30 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: * ** *** **** ***** ****** 12/11/2015

31 31 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 12/11/2015

32 32 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 12/11/2015

33 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 12/11/201533 Controlling Event of Loop Iterations

34 12/11/201534

35 35 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 12/11/2015

36 36 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 12/11/2015

37 37 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. 12/11/2015

38 38 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? 12/11/2015

39 39 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); } } 12/11/2015

40 40 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. Scanner keyboard = new Scanner(System.in); int n = keyboard.nextInt(); int sum = 0, k = ?; while ( ) { } System.out.println(“sum = “ + sum); 12/11/2015

41 Scanner keyboard =new Scanner(System.in); int n = keyboard.nextInt(); int k = 1; int sum = 0; while (k<=n) { if(n%k==0) sum ++; k++; } System.out.print("sum = " + sum); 41

42 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 1+2+3+4+...+99 http://www.cis.temple.edu/~jiang/1to99.exe 12/11/201542

43 12/11/201543

44 Solution 12/11/201544

45 Ex 12 http://www.cs.wcupa.edu/~zjiang/141_ex12.pdf Ex 13 http://www.cs.wcupa.edu/~zjiang/141_ex13.pdf 12/11/201545

46 File writing, page 237-240 Filename PringWriter Println Close Sample, code 4-17, page 237 12/11/201546

47 Appending data to a (existing) file FileWriter (, true), page 240 12/11/201547

48 File Reading, page 241-245 File Scanner nextXXXX( ) close Sample, code 4-18, page 242. 12/11/201548

49 Detecting the end of a file hasNext Code 4-19, page 245. Detecting the existence of a file exists Code 4-21, page 249. 12/11/201549

50 Random number generator randomNumbers.nextXXX( ) Sample, code 4-23, page 253. 12/11/201550

51 51 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 returns a random real number in the range [0.0, 1.0)‏ nextDouble()‏ returns a random integer in the range [0, max)‏ in other words, from 0 to one less than max nextInt( max )‏ returns a random integer nextInt()‏ DescriptionMethod name 12/11/2015


Download ppt "Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 CSC141 Computer Science I 12/11/20151."

Similar presentations


Ads by Google