Date post: | 02-Jul-2015 |
Category: |
Engineering |
Upload: | tak-lee |
View: | 308 times |
Download: | 6 times |
Oct 8th
Lab08.
Quiz review
Triangle and Stripes
http://www.slideshare.net/takyeon
Quiz review
No
i++
++i
Use and then increase
int i = 3;
int a = i++; // a = 3, i = 4
int b = ++a; // b = 4, a = 4
Increase and then use
Quiz review
maxCount 100
str
"Hello"
"HELLO"
• Whenever a new variable is declared, it is added to STACK.
• Primitive data types are stored in STACK• byte, short, int, long, float, double, boolean, char
• Other data types are stored in HEAP. • String, Integer, Scanner, …
• Data in HEAP are not immediately deleted but unlinked, and will be garbage-collected.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
for(int row=1;row<=size;row++) {
for(int col=1;col<=size;col++) {
System.out.print(row*col + " ");
}
System.out.println();
}
}
Lab – 2D drawing
Two methods.
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
M1. Iterate pixels to paint
for (int i=0; i<size; i++) {grid.setColor(i, i, Color.BLUE);
}
Intuitive and efficient
M2. Iterate every pixel, use if conditionals to check pixels to paint
for (int row=0; row<size; row++) {for (int col=0; col<size; col++) {
if(row==col) {grid.setColor(row, col, Color.BLUE);
}}
}
Complex and inefficient BUT! More generalizable
Lab – 2D drawing
Two methods.
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4M2. Iterate every pixel, use if conditionals to check pixels to paint
for (int row=0; row<size; row++) {for (int col=0; col<size; col++) {
if(row!=col) {grid.setColor(row, col, Color.BLUE);
}}
}
You can simply inverse the conditional logic
M1. Iterate pixels to paint
Very difficult
Now you want to paint all the pixels except the diagonal line.
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
More examples.
row>2
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
row%2 == 1
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
col%2 == 1
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
(row-col)>=0
0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
4 3 2 1 0
row-col
Diagonal shapes require both row
and col
Linear shapes require either row or col.
Transformation > Move
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
(row+1, col)
(row+1)-col >= 0
-1 -2 -3 -4 -5
0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
(row+1)-col
0,1 0,2 0,3 0,4 0,5
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
4,1 4,2 4,3 4,4 4,5
To move a shape to left by 1 pixel,
replace "row" with "row+1"
Transformation > Horizontal Flip.
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
0,4 0,3 0,2 0,1 0,0
1,4 1,3 1,2 1,1 1,0
2,4 2,3 2,2 2,1 2,0
3,4 3,3 3,2 3,1 3,0
4,4 4,3 4,2 4,1 4,0
HorizontalFlip
(row, 4-col)
(row-(4-col))>=0
-4 -3 -2 -1 0
-3 -2 -1 0 1
-2 -1 0 1 2
-1 0 1 2 3
0 1 2 3 4
row-(4-col)
To flip a shape, multiple row or column by -1, and add size
-col
size-col
col
col
4 := size of the shape – 1Why -1? Because our row and
col index started from 0.
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
VerticalFlip
(4-row, col)
(4-row)-col >= 0
4 3 2 1 0
3 2 1 0 -1
2 1 0 -1 -2
1 0 -1 -2 -3
0 -1 -2 -3 -4
(4-row)-col
4,0 4,1 4,2 4,3 4,4
3,0 3,1 3,2 3,3 3,4
2,0 2,1 2,2 2,3 2,4
1,0 1,1 1,2 1,3 1,4
0,0 0,1 0,2 0,3 0,4
Transformation > Vertical Flip.
(row-col)>=0
0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
4 3 2 1 0
(row-(4-col))>=0
-4 -3 -2 -1 0
-3 -2 -1 0 1
-2 -1 0 1 2
-1 0 1 2 3
0 1 2 3 4
HorizontalFlip
(4-row)-col >= 0
4 3 2 1 0
3 2 1 0 -1
2 1 0 -1 -2
1 0 -1 -2 -3
0 -1 -2 -3 -4
Vertical flip
(4-row)-(4-col) >= 0
0 1 2 3 4
-1 0 1 2 3
-2 -1 0 1 2
-3 -2 -1 0 1
-4 -3 -2 -1 0
HorizontalFlip
col-row >= 0
Vertical flip
Oct 6th
Lab07.
Loop applications
public void commonFactor(int n1, int n2) {
for(int i=1; i<=min(n1,n2); i++) {
if(n1%i==0 && n2%i==0) {
System.out.println(i);
}
}
}
Finding common factors of two numbers
Common factors can divide both numbers.E.g. Common factors of 9 and 12 1 and 3
Common factors of 24 and 78 1, 2, 3, and 6
compareTo method
String s1 = "aaa";
String s2 = "aac";
int k = s1.compareTo(s2); // k => -2
Compares s1 and s2 lexicographically. Negative if s1 precedes s2
Positive if s1 follows s2
Zero if s1 is equal to s2
Get multiple words, find the first and the last words
1) Using while loop, keep asking words until "STOP"2) Using compareTo, update the first and the last words3) Print out
Oct 1st
Lab06.
2D drawing
SquareGrid.java
ExampleDriver.java• Prompt a shape question• Create an empty grid• Draw the requested shape
OperatorMaker.java
drawOp (SquareGrid grid, int symbol)
minus, plus, divide, multiply (SquareGrid grid) You will change only these methods
Drawing shapes on 2D grid
Single loop for drawing a line
1) How can we get the middle row number?0
size : 7
3
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
int size = grid.getHt();int midRow = size / 2;
2) How to draw a line?• Iterate over columns (0 – 4)
• Paint the middle cell
for (int iCol=0; iCol<size; iCol++) {grid.setColor(midRow, iCol, Color.BLUE);
}
Single loop for drawing a line
1) How can we get the middle column number?0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
int size = grid.getWd();int midCol = size / 2;
2) How to draw a line?• Iterate over rows (0 – 4)
• Paint the middle cell
for (int iRow=0; iRow<size; iRow++) {grid.setColor(iRow, midCol, Color.BLUE);
}
Notice that drawing horizontal and vertical lines are quite similar. We just switched row and column variables.
Single loop for drawing a line
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
1) How to draw a line?• Iterate over rows or columns (0-4)
• Paint diagonal cells.
for (int iRow=0; iRow<size; iRow++) {grid.setColor(iRow, iRow, Color.BLUE);
}
for (int iCol=0; iCol<size; iCol++) {grid.setColor(midRow, iCol, Color.BLUE);
}
for (int iRow=0; iRow<size; iRow++) {grid.setColor(iRow, midCol, Color.BLUE);
}
for (int iRow=0; iRow<size; iRow++) {grid.setColor(iRow, iRow, Color.BLUE);
}
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
for (int iCol=0; iCol<size; iCol++) {grid.setColor(iCol, iCol, Color.BLUE);
}
or
Single loop for drawing a line
Iterating over the columns, paint the middle cell.
Iterating over the columns, paint the middle cell.
Iterating over the rows, paint the center cell.
Iterating over the columns, paint i-th cell.
Draw Plus, Divide, and Divide (rotated).
Sep 29th
Lab05.1. Recap the quiz #1
2. String Class
3. static vs. instance method
Recap quiz #1.
PRINT your names in the grade server. NO nicknames.
Recap quiz #1.
Use specific technical keywordse.g. What does CVS “do” for us?
1. Check out / Download the starter files2. Store / Save multiple versions of the source codeshare, deliver, get, access, connected people, ...
Penalties for inaccurate extra infoe.g. CVS runs our code and give us grades. -1 for incorrect extra info.
String Class
String s = “hello”;
Create a new String object with an initial value “hello”
String objects have many convenient methods,
upperS = s.toUpperCase(); // will set upperS to “HELLO”
whereIsl= s.indexOf(‘l’); // will find the position of the first ‘l’
newS = s.replace(‘e’,’a’); // will set newS to “hallo”
int type vs. Integer Class
int i=0;
Primitive data type
Integer i = 17;
Wrapper Class
don’t have much method provide methods
- convert to string
- generate hash codes
Faster A little slower
Static vs. Instance method
Intance methods need a sheep as a subject.
bob.eat();
bob.smileTo(clara);
bob.getPenNumber();
Static methods are about all the sheeps.
Sheep.getTotalSheep();
Sheep.removeAll();
Sheep.addSheep(‘evan’);
Sep 24th
Lab04.Loop
Flow of Control
1. Top-to-bottom statements
2. Method calls
3. Conditional statements
4. Iteration (loop)for, while, ...
Two goals of iteration
1. AutomationReduce repetition of code
System.out.println(“****”);
System.out.println(“****”);
System.out.println(“****”);
How can we reduce?for(int i=0;i<3;i++) {
System.out.println(“****”);
}
2. AbstractionCode for various situations
System.out.println(“****”);
How can we print n-number of “*”?
From manual & concrete to automatic & abstract
Level 1. Draw 30 by 10 rectangle (hard-coded) System.out.println(“**********”);
System.out.println(“**********”);
System.out.println(“**********”);
... 27 more lines
Level 2. Draw 30 by 10 rectangle (single-loop)
Too many copy & paste. Hard to modify.
int row=0;
while(row<30) {
System.out.println(“**********”);
row++;
}
A little more compact. Still too many * for each line.
From manual & concrete to automatic & abstract
Level 3. Draw 30 by 10 rectangle (nested-loop) int row=0, col=0;
while(row<30) {
while(col<10) {
System.out.print(“*”);
}
System.out.println();
}
Much compact. Cannot change # of row and col
Level 4. Draw height by width (nested-loop, parameterized) int row=0, col=0;
int height=30, width=10;
while(row<height) {
while(col<width) {
System.out.print(“*”);
}
System.out.println();
} Compact Can draw any sized rectangle
iterartorline 1
0
valueline 2
0
targetline 4
answerline 1
1
iline 1
1
jline 1
0