


Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Assignment; Class: Introduction to Computing Using Java; Subject: Computer Science; University: Cornell University; Term: Fall 2008;
Typology: Assignments
1 / 4
This page cannot be seen from the preview
Don't miss anything!



1
CS1110, 16 October 2008
Two topics: Turtles; loops
Start reading Sec. 2.3.8 and chapter 7 on loops.
The lectures on the ProgramLive CD can be a big help.
The next time someone rather casually use a number that
includes the word "billion", think about it.
Age.
government spends it. (^2)
Function HSVtoRGB 0 <= h < 360 (degrees)
Hi = floor(h/60) % 6
Wikipedia: f = h/60 – floor(h/60)
A4 handout: f = h/60 – Hi
0 <= h < 360
=>
0 <= h/60 < 6
=>
floor(h/60) is in 0..
=>
floor(h/60) = floor(h/60) % 6
=>
Wikipedia formula for f = A4 handout for f
In fact, we and Wikipedia
could write Hi as
Hi = floor(h/60) !!!!
3
Graphical User Interfaces (GUIs): graphics.
A JFrame, with a "panel"
on which you can draw
jframe= new JFrame("Turtle window");
jpanel= new JPanel();
jpanel.setPreferredSize(new Dimension(width, height));
jpanel.setBackground(Color.white);
jframe.getContentPane().add(panel, BorderLayout.CENTER);
jframe.pack();
jframe.setVisible( true );
graphics= jpanel.getGraphics();
A “panel” in which
you can draw
You don’t have to learn
all this unless you want
to. We will be telling
you more and more
about GUIs as the
course progresses.
4
Commands to draw
// Draw line from (10, 10) to (50, 40).
d.graphics.drawLine(10,10,50, 40);
// Draw rectangle: top-left point (2, 5), width 40, height 60
d.graphics.drawRect(2, 5, 40, 60);
// Fill rectangle: top-left point (50, 70), width 40, height 60
d.graphics.fillRect(50, 70, 40, 60);
The panel: each pair (i,j) is a
“pixel” or picture element.
d.graphics contains an
object of class Graphics.
It contains the methods to
draw on the panel
5
// Draw string s at (40, 30)
d.graphics.drawString(s, 40, 30);
// set the pen color to red
d.graphics.setColor(Color.red);
// Store the current color in c
Color c= d.graphics.getColor();
// Draw oval: top-left point (2, 5), width 40, height 60
d.graphics.drawRect(2, 5, 40, 60);
// Fill an oval: top-left point (50, 70), width 40, height 60
d.graphics.fillRect(50, 70, 40, 60);
For more on graphics, see class Graphics in the Java API and page
1-5 in the CD ProgramLive. For more on GUIs, read chapter 17 -
-corresponding part of the CD is much easier!
6
In A5, write methods
to draw shapes, draw
spirals, make balls
that move and
bounce off the sides
of the window, and
draw things using
recursive procedures.
Assignment A5: drawing with a Turtle
We have written a class Turtle, an instance of which maintains:
Class Turtle has methods for moving a
Turtle around, drawing as it goes.
Draw equilateral triangle with side
lengths 30; turtle ends up at starting
point and facing the same direction:
forward(30); addAngle(120);
forward(30); addAngle(120);
forward(30); addAngle(120);
0 degrees
90 degrees
180 degrees
270 degrees
7
The for loop, for processing a range of integers
x= 0;
// add the squares of int s
// in range 2..200 to x
x= x + 2*2;
x= x + 3*3;
x= x + 200;
repetend : the thing to be repeated.
The block:
{ x= x + i*i; }
for each number i in
the range 2..200,
add i*i to x.
The for-loop:
for ( int i= 2; i <= 200; i= i +1) {
x= x + i*i;
loop counter : i
initialization : int i= 2;
loop condition : i <= 200;
increment : i= i + 1
repetend or body : { x= x + i*i; }
8
Execution of the for-loop
The for-loop:
for ( int i= 2; i <= 4; i= i +1) {
x= x + i*i;
loop counter : i
initialization : int i= 2;
loop condition : i <= 4;
increment : i= i + 1
repetend or body : { x= x + i; }
Called a “flow chart”
To execute the for-loop.
terminate execution.
repeat from step 2.
i= 2;
i <= 4
i= i +1;
true
false
x= x + i*i;
9
Execution of the for-loop
x= 1;
for ( int i= 1; i <= 4; i= i +1) {
x= 2*x;
Called a “flow chart”
i= 2;
i <= 4
i= i +1;
true
false
x= x + i*i;
At the end:
A. x = 16 i = 5
B. x = 16 i = 4
C. x = 8 i = 5
D. x = 32 i = 32
E. none of the above
To execute the for-loop.
terminate execution.
repeat from step 2.
10
Note on ranges.
2 .. 5 contains 2, 3, 4, 5. It contains 5 +1 – 2 = 4 values
The number of values in m .. n is n +1 – m.
In the notation m..n, we require always, without saying it, that
m <= n + 1.
If m = n + 1, the range has 0 values.
2 .. 4 contains 2, 3, 4. It contains 4 +1 – 2 = 4 values
2 .. 3 contains 2, 3. It contains 3 +1 – 2 = 2 values
2 .. 2 contains 2. It contains 2 +1 – 2 = 1 values
2 .. 1 contains. It contains 1 +1 – 2 = 0 values
11
Pattern for processing range of integers:
range a..b-1 range c..d
for ( int k= a; k < b; k= k + 1) {
Process integer k;
// Print the integers in 10..n-
// inv: All ints in 10..k-1 been printed
for ( int k= 10; k < n; k= k +1) {
System.out.println(k);
}
// All ints in 10..n-1 been printed
for ( int i= c; i <= d; i= i + 1) {
Process integer i;
// Print the integers in 1..
// inv: All ints in 10..i-1 printed
for ( int i= 1; i <= 10; i= i +1) {
System.out.println(i);
}
// All ints in 10..i-1 printed
12
The pattern for processing range of integers:
range a..b-1 range c..d
for ( int i= a; i < b; i= i + 1) {
Process integer i;
// Print indices of all ‘e’s in String s
// inv: Indices of ‘e’s in s[0..s.i-1]
for ( int i= 0; i < s.length(); i= i +1) {
if (s.charAt(i) == ‘e’)
System.out.println(i);
}
// Indices of ‘e’s in s[0..s.length()-1]
// printed
for ( int i= c; i <= d; i= i + 1) {
Process integer i;
// Store in double var. v the sum
// 1/1 + 1/2 + …+ 1/n
v= 0;
// inv: 1/1 + 1/2 + …+ 1/(i-1)
for ( int i= 1; i <= n; i= i +1) {
v= v + 1.0 / i;
}
// v= 1/1 + 1/2 + …+ 1/n
19
Development of a loop to process a range a..b-
// inv: c = no. of chars of s[0..i-1] that are in ‘0’..’9’
for ( int i= 0; i < s.length(); i= i + 1 ) {
Process integer i;
// c = no. of chars of s[0..s.length()-1] that are in ‘0’..’9’
// Set c to number of chars is String s that are digits ‘0’..’9’
How should c be initialized c?
A. c= 1; C. c= 5;
B. c= 0; D. c= -1;
20
Try these problems. Develop them using the methodology
given on slide 9. Then type them into DrJava and test them!
removed.
object of class JFrame”.