编程是一门用电脑解决问题的学科,对问题的理解的不同会导致不同的代码编写过程;
编程前应该理解领域问题,并给出解决方案(算法),把算法实现为程序code。高效的code是因为采用的算法或者策略的不同;
例如用applet小程序打印如下画面:
的2中实现方法,package chapter2;
import java.awt.Color;
import acm.graphics.GRect;
import acm.program.GraphicsProgram;
public class XiYangTiaoPan extends GraphicsProgram{
private final int WINDOW_SIZE = 500;
private final int ROW_NUM = 10;
private final int COL_NUM = 10;
private boolean lastFilled = false;
public void run(){
this.setSize(WINDOW_SIZE, WINDOW_SIZE);
int width = WINDOW_SIZE/ROW_NUM;
int height = WINDOW_SIZE/COL_NUM;
for(int i = 0 ;i<ROW_NUM;i++){
drawLine(height*i,width,height);
}
}
public void drawLine(int y,int width,int height){
for(int i = 0;i<COL_NUM;i++){
GRect rect = new GRect(width*i,y,width,height);
rect.setFilled(lastFilled);
lastFilled = !lastFilled;
add(rect);
}
lastFilled = !lastFilled;
}
}
方法二:package chapter2;
import acm.graphics.GRect;
import acm.program.GraphicsProgram;
/**
*
*/
public class Checkerboard extends GraphicsProgram{
private static final int N_ROWS = 8;
private static final int N_COLUMNS = 8;
public void run(){
double sqSize = (double)getHeight()/N_ROWS;
for(int i=0;i<N_ROWS;i++){
for(int j=0;j<N_COLUMNS;j++){
double x = j*sqSize;
double y = i * sqSize;
GRect sq = new GRect(x,y,sqSize,sqSize);
sq.setFilled((i+j)%2==0);
add(sq);
}
}
}
}