程序编程入门基础1-参考《java语言的科学与艺术》感悟

本文通过两种不同的编程方法实现棋盘绘制,一种通过切换填充状态来绘制,另一种利用坐标计算奇偶性确定填充色。展示了算法设计对代码效率的影响。

编程是一门用电脑解决问题的学科,对问题的理解的不同会导致不同的代码编写过程;

编程前应该理解领域问题,并给出解决方案(算法),把算法实现为程序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);
      }
    }
  }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值