1 / 28

COMP 110 Lab 7, more arrays

COMP 110 Lab 7, more arrays. Catie Welsh April 6, 2011. Announcements. Lab 8 due, Friday by 1pm. Questions?. Today in COMP 110. Lab 7 More about arrays Array Review Worksheet. Lab 7. Class solutions posted Cool patterns! Pat yourself on the back for coming up with interesting stuff.

Télécharger la présentation

COMP 110 Lab 7, more arrays

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. COMP 110Lab 7, more arrays Catie Welsh April 6, 2011

  2. Announcements • Lab 8 due, Friday by 1pm

  3. Questions?

  4. Today in COMP 110 • Lab 7 • More about arrays • Array Review Worksheet

  5. Lab 7 • Class solutions posted • Cool patterns! • Pat yourself on the back for coming up with interesting stuff

  6. Lab 7: setting a color • Set your color before you draw a shape • Imagine being a painter • You put your paintbrush on the palette to mix and pick up a color before you touch the paintbrush to the canvas

  7. Lab 7: making methods • When you write a method • The method’s name should tell you the method’s purpose • The parameter names should be descriptive and support the method’s purpose publicstaticvoid drawRect(Graphics g, int x, int y, int radius) when you really meant publicstaticvoid drawSquare(Graphics g, int x, int y, int side)

  8. Lab 7: setRandomColor • Important to know how to convert from one range to another • Useful in many situations • Scaling images • Converting mouse clicks to regions on your user interface (for example, the grid cells in Program 4) • Drawing parametric functions, or doing computations with parametric functions

  9. Lab 6: setRandomColor • Math.random() returns a value in the range [0.0, 1.0) • In other words • 0.0 <= Math.random() < 1.0 0.0 1.0

  10. Lab 7: setRandomColor • We want 5 colors, chosen randomly • How do we choose them? • Divide our range into 5 subranges • Decide which subrange maps to which color • If we get a random number in a certain range, use the color we decided on for that range Math.random() returns 0.2374 0.2 0.4 0.6 0.8 0.0 1.0

  11. Lab 7: setRandomColor, technique 1 double rnd = Math.random(); if (rnd >= 0.0 && rnd < 0.2) g.setColor(Color.RED); elseif (rnd >= 0.2 && rnd < 0.4) g.setColor(Color.GREEN); elseif (rnd >= 0.4 && rnd < 0.6) g.setColor(Color.BLUE); elseif (rnd >= 0.6 && rnd < 0.8) g.setColor(Color.YELLOW); else g.setColor(Color.BLACK);

  12. Lab 7: setRandomColor, technique 2 • Scale the range, and then divide it into subranges • What if we multiply rnd by 5? • Then 0.0 <= rnd< 5.0 0.0 1.0 1.0 0.2 2.0 0.4 3.0 0.6 4.0 0.8 0.0 5.0

  13. Lab 7: setRandomColor, technique 2 • We could use if/else statements as before • Or we can typecast rnd to an int, and then use a switch statement • What is (int) (rnd * 5) if rnd is… • 0.3? • (int) (1.5) is 1 • 0.1? • (int) (0.5) is 0 • 0.91? • (int) (4.55) is 4 1.0 2.0 3.0 4.0 0.0 5.0

  14. Lab 7: setRandomColor, technique 2 double rnd = Math.random(); int choice = (int) (rnd * 5); switch (choice) { case 0: g.setColor(Color.RED); break; case 1: g.setColor(Color.GREEN); break; case 2: g.setColor(Color.BLUE); break; case 3: g.setColor(Color.YELLOW); break; case 4: g.setColor(Color.BLACK); break; }

  15. Why? Is it any better? • It depends, but imagine if you suddenly decide you want 6 random colors instead of 5 • How would you do it with the if/else statements?

  16. Lab 7: setRandomColor, 6 colors, technique 1 double rnd = Math.random(); if (rnd >= 0.0 && rnd < (1.0 / 6.0)) g.setColor(Color.RED); elseif (rnd >= (1.0 / 6.0) && rnd < (2.0 / 6.0)) g.setColor(Color.GREEN); elseif (rnd >= (2.0 / 6.0) && rnd < (3.0 / 6.0)) g.setColor(Color.BLUE); elseif (rnd >= (3.0 / 6.0) && rnd < (4.0 / 6.0)) g.setColor(Color.YELLOW); elseif (rnd >= (4.0 / 6.0) && rnd < (5.0 / 6.0)) g.setColor(Color.YELLOW); else g.setColor(Color.BLACK);

  17. Lab 7: setRandomColor, 6 colors, technique 2 double rnd = Math.random(); int choice = (int) (rnd * 6); switch (choice) { case 0: g.setColor(Color.RED); break; case 1: g.setColor(Color.GREEN); break; case 2: g.setColor(Color.BLUE); break; case 3: g.setColor(Color.YELLOW); break; case 4: g.setColor(Color.BLACK); break; case 5: g.setColor(Color.MAGENTA); break; }

  18. Lab 7: setRandomColor, how about arrays? Color[] colors = { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.BLACK }; double rnd = Math.random(); int choice = (int) (rnd * 5); g.setColor(colors[choice]);

  19. Lab 7: think about nested loops for (int i = 0; i < 360; i += 10) { int x = (int) (Math.sin(Math.toRadians(i)) * 20); int y = (int) (Math.cos(Math.toRadians(i)) * 20); drawCircle(g, x, y, 20); } for (int i = 0; i < 360; i += 10) { int x = (int) (Math.sin(Math.toRadians(i)) * 20); int y = (int) (Math.cos(Math.toRadians(i)) * 20); drawCircle(g, x + 50, y, 20); } for (int i = 0; i < 360; i += 10) { int x = (int) (Math.sin(Math.toRadians(i)) * 20); int y = (int) (Math.cos(Math.toRadians(i)) * 20); drawCircle(g, x + 100, y, 20); }

  20. Lab 7: nested loops for (int count = 0; count < 3; count++) { for (int i = 0; i < 360; i += 10) { int x = (int) (Math.sin(Math.toRadians(i)) * 20); int y = (int) (Math.cos(Math.toRadians(i)) * 20); drawCircle(g, x + (50 * count), y, 20); } }

  21. What did we learn earlier? • Arrays can be instance variables • Arrays can be of any base type • Arrays can be method parameters • Arrays can be returned from a method • Lots of stuff about multidimensional arrays • Multidimensional arrays are awesome

  22. Arrays of objects Smiley[] smilies = new Smiley[3]; for (int i = 0; i < smilies.length; i++) { smilies[i] = new Smiley(); }

  23. Arrays of objects • When you create an array of objects like this: Student[] students = new Student[35]; • Each of the elements of students is not yet an object • You have to instantiate each individual one students[0] = new Student(); students[1] = new Student(); • …or do this in a loop

  24. Arrays are special kinds of objects • Therefore, they are subject to the same sorts of behaviors as objects

  25. What does this code output? publicstaticvoid changeArray(int[] arr) { int[] newArray = newint[arr.length]; newArray[0] = 12; arr = newArray; } publicstaticvoid main(String[] args) { int[] arr = { 3, 6, 15 }; changeArray(arr); for (int x : arr) { System.out.println(x); } } Output: 3 6 15 The parameter is local to changeArray, reassigning does not change the argument

  26. What does this code output? publicstaticvoid changeArray(int[] arr) { arr[0] = 12; } publicstaticvoid main(String[] args) { int[] arr = { 3, 6, 15 }; changeArray(arr); for (int x : arr) { System.out.println(x); } } Output: 12 6 15 The parameter is local to changeArray, but it contains the address of the array passed in, so we can change its elements

  27. What does this code output? publicstaticvoid changeArray(int[] arr) { arr[0] = 12; } publicstaticvoid main(String[] args) { int[] arr = { 3, 6, 15 }; int[] newArray = arr; changeArray(newArray); for (int x : arr) { System.out.println(x); } } Output: 12 6 15 arr and newArray both contain the same address, and therefore refer to the same data in memory

  28. Friday • Help with Program 4

More Related