课程 1:Karel机器人


  1. Karel设计的目的: 学生能够以某种方式在简单的环境中学习编程思想,而不受大多数编程语言所特有的复杂性的影响,那么教授编程基础知识会更加容易。
    点击导航栏的 Karel学习 按钮开始学习。
  2. Karel世界: 通过网站在线课程动画演示认识
    Karel
    Karel机器人
    world
    世界
    beeper
    蜂鸣器
    wall
    墙
  3. Karel基本指令: 通过网站在线课程动画演示以及动手操作(点击按钮无需输入代码)认识四个基本指令
    • move():让Karel向前移动一格
    • turn_left():让Karel向左转90度
    • pick_beeper():让Karel捡起当前位置的蜂鸣器
    • put_beeper():让Karel在当前位置放下一个蜂鸣器
  4. Karel编程: 通过网站在线课程动画演示编程。先分析说明实现的功能,运行观察跟所描述的功能与实际是否一致。主要练习四个基本指令。
  5. 定义新函数: 在Karel编程中,可以通过组合已有的基本指令,定义新的函数,让程序更简洁、易读。
    • 使用 def 关键字定义新函数。
    • 例如:用 turn_left() 组合出 turn_right()turn_around()
    # 让Karel向右转,相当于左转三次
    def turn_right():
        turn_left()
        turn_left()
        turn_left()
    
    # 让Karel掉头,相当于左转两次
    def turn_around():
        turn_left()
        turn_left() 
    注释:
    • 注释是对代码的解释说明,不会被程序执行。
    • 可以帮助自己和他人理解代码的作用和思路。
    • 在Python中,使用 # 开头表示单行注释。
    # 这是一个注释,解释下面代码的作用
    move()  # 让Karel前进一步
            

    良好的注释习惯可以让程序更易读、易维护。

  6. 文档字符串:
    def greet(name):
        """
        打招呼函数
        参数:name - 要打招呼的对象
        返回:无
        """
        print("Hello,", name)
                

    可以通过 help(greet)greet.__doc__ 查看文档字符串内容。

  7. 任务分解: 任务分解是将一个复杂问题拆解为若干个简单、易于实现的小步骤,有助于理清思路、降低编程难度。
    • 例如“填补坑洼”问题,可以分解为:
      1.移动到坑洞处
      2.通过放下一个蜂鸣器来填补坑洞
      3.前往下一个角落
    • 每个小步骤可以用一个函数或一段代码实现,逐步组合成完整解决方案。
    # 代码示例
    def main ():
        move()
        fill_pothole()
        move()

     def fill_pothole ():
        turn_right()
        move()
        put_beeper()
        turn_around()
        move()
        turn_right()

    通过任务分解,可以让程序结构更清晰,便于调试和维护。

    任务分解的原则:

    • 自顶向下: 先整体分析任务,再逐步细化为小步骤或子任务。
    • 每步简单明确: 每个子任务应尽量简单、易于实现,避免一步包含过多操作。
    • 可复用性: 优先将重复出现的操作封装为函数,便于复用和维护。
    • 顺序与逻辑清晰: 分解后的步骤要有明确的执行顺序,逻辑关系清楚。
    • 迭代测试: 每完成一个小步骤或函数,及时测试,确保正确后再继续分解和实现。

    迭代测试有助于及时发现和修正问题,避免错误积累,提升编程效率和代码质量。

温馨提示:多动手实践,遇到问题多尝试,善用动画演示和按钮操作,逐步掌握Karel的基本指令和编程思路。
常见问题与调试建议:
1. 如果Karel没有按预期移动,请检查指令顺序和拼写。
2. 如果遇到错误提示,仔细阅读提示内容,定位问题所在。
3. 可以多运行几次,观察Karel的行为,逐步修正程序。
作业1:拾取报纸