stanford编程方法学karel作业一problem1

这两天准备把java的基础重新看一下,刚好看到之前只看了一个开头的斯坦福的编程方法学的视频,于是就重新开始从头看起。

刚看了第一章,收获还是蛮大的。老师讲到编程的重点不在于语言,而在于思想。好比一个人只知道语言的词汇和语法,他是无法写出好文章的。所以,老师利用一个小的工具--karel来让同学入门,着重于编程的思想,不让java的语言特性分心。不得不说,斯坦福的教学理念确实很先进。

在老师的例子中,强调的是自顶向下的设计方法,要完成一个任务,需要将一个大任务分解为一个一个的小任务,再将小任务继续分解,直到每个任务都解决一个问题为止

  • solve a problem
  • methods (1-15 lines)
  • good names
  • comments

以下是karel编程第一题的解决方法

/*
 * File: CollectNewspaperKarel.java
 * --------------------------------
 * At present, the CollectNewspaperKarel subclass does nothing.
 * Your job in the assignment is to add the necessary code to
 * instruct Karel to walk to the door of its house, pick up the
 * newspaper (represented by a beeper, of course), and then return
 * to its initial position in the upper left corner of the house.
 * 
 * author:zhendongYi
 * 2016/06/27
 */    
import stanford.karel.*;
public class CollectNewspaperKarel extends SuperKarel {

  /*
   * 主方法
   * @see stanford.karel.SuperKarel#run()
   */
  public void run(){
      CollectNewspaper();       //取报纸
      GoBack();             //返回
  }

  /*
   * 取报纸
   */
  private void CollectNewspaper() {
      GoWithFloor();            //沿着天花板走
      GoWithWall();         //沿着墙走
      PickNewspaper();      //捡报纸
  }

  /*
   * 沿着墙走
   */
  private void GoWithWall() {
      while(leftIsBlocked()){       //前进
          move();
      }
      turnLeft();                   //右转
  }

  /*
   * 沿着天花板走
   */
  private void GoWithFloor() {
      while(frontIsClear()){    //前进
          move();
      }
      turnRight();              //右转
  }

  private void PickNewspaper() {
      move();
      pickBeeper();
  }

  private void GoBack() {
      turnAround();
      while(frontIsClear()){
          move();
      }
      turnRight();
      move();   
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,751评论 25 709
  • 计算机编程语言可用于将指令传达给计算机。它们基于某些句法和语义规则,定义了编程语言中每种结构的含义。 现在我得到了...
    幻凌风阅读 8,252评论 1 26
  • 睡前 “抱抱” “不要” “为什么?” “太热了” “所以冬天就可以吗?” “是的” “你根本不爱我,你爱的只是我...
    捍道阅读 167评论 0 1