comp 110 lab 6 more arrays l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
COMP 110 Lab 6, more arrays PowerPoint Presentation
Download Presentation
COMP 110 Lab 6, more arrays

Loading in 2 Seconds...

play fullscreen
1 / 31

COMP 110 Lab 6, more arrays - PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on

COMP 110 Lab 6, more arrays. Luv Kohli November 12, 2008 MWF 2-2:50 pm Sitterson 014. Announcements. Lab 7 due, Friday 2pm. Questions?. Today in COMP 110. Lab 6 More about arrays Program 4 exercise?. Extra credit points on Program 4 lowered. Why?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

COMP 110 Lab 6, 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
comp 110 lab 6 more arrays

COMP 110Lab 6, more arrays

Luv Kohli

November 12, 2008

MWF 2-2:50 pm

Sitterson 014

announcements
Announcements
  • Lab 7 due, Friday 2pm
today in comp 110
Today in COMP 110
  • Lab 6
  • More about arrays
  • Program 4 exercise?
slide6
Why?
  • They are somewhat arbitrary right now
extra credit policy
Extra credit policy
  • Working on it, but there will probably be some sort of cap
  • Basic idea (not finalized) is that extra credit can help pull you up half a letter grade if you’re on the border
lab 6
Lab 6
  • Class solutions posted
  • Cool patterns!
  • Pat yourself on the back for coming up with interesting stuff
  • I made a couple of mistakes
    • radius in drawCircle
    • setBackground
lab 6 setting a color
Lab 6: 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
lab 6 making methods
Lab 6: 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)

lab 6 setrandomcolor
Lab 6: 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
lab 6 setrandomcolor12
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

lab 6 setrandomcolor13
Lab 6: 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

lab 6 setrandomcolor technique 1
Lab 6: 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);

lab 6 setrandomcolor technique 2
Lab 6: 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

lab 6 setrandomcolor technique 216
Lab 6: 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

lab 6 setrandomcolor technique 217
Lab 6: 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;

}

why is it any better
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?
lab 6 setrandomcolor 6 colors technique 1
Lab 6: 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);

lab 6 setrandomcolor 6 colors technique 2
Lab 6: 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;

}

lab 6 setrandomcolor how about arrays
Lab 6: 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]);

lab 6 think about nested loops
Lab 6: 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);

}

lab 6 nested loops
Lab 6: 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);

}

}

what did we learn earlier
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
  • I shouldn’t try to explain things on the whiteboard unless I’ve rehearsed what I’m explaining
arrays of objects
Arrays of objects

Smiley[] smilies = new Smiley[3];

for (int i = 0; i < smilies.length; i++)

{

smilies[i] = new Smiley();

}

arrays of objects26
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
arrays are special kinds of objects
Arrays are special kinds of objects
  • Therefore, they are subject to the same sorts of behaviors as objects
what does this code output
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

what does this code output29
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

what does this code output30
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

friday
Friday
  • Help with Program 4