可视化编程:一种通过图形化界面和视觉元素来编写程序的编程方式,它让编程过程更加直观和易于理解。
在Karel课程中,可视化编程让学生能够通过动画理解指令作用、通过点击按钮体验编程过程、通过观察Karel的行为学习编程逻辑,为后续学习更复杂的编程语言打下基础。
点击导航栏的 Karel学习 按钮开始学习。共10个单元,每个单元有若干课时。内容简介如下:
move()(点击按钮无需输入)move()(点击按钮无需输入)turn_left()(点击按钮无需输入)move()、turn_left() 两个指令让Karel执行一项简单的任务(简单迷宫)。put_beeper()(点击按钮无需输入)move()、put_beeper() 两个指令让Karel执行一项简单的任务(在第一行的中间放置一个beeper)move()、pick_beeper() 两个指令让Karel执行一项简单的任务(捡起在第一行的中间放置的beeper)move()、put_beeper()、 turn_left()、pick_beeper() 让Karel执行一项简单的任务(捡起台阶下的beeper,把它放置在台阶上).turn_right() 并在 main() 中调用turn_around() 使 Karel 能后转facing_east()、facing_west()、facing_south()、facing_north()front_is_clear()、not_facing_east()、left_is_clear()、beepers_present()not_facing_south()、front_is_blocked()、no_beepers_present()、right_is_blocked()beepers_present():拿起一堆蜂鸣器(数量未知)front_is_clear():一直前进直到遇墙(世界多大都可)paint_corner("blue")(接受 HTML 颜色名)paint_corner()
move():让Karel向前移动一格turn_left():让Karel向左转90度pick_beeper():让Karel捡起当前位置的蜂鸣器put_beeper():让Karel在当前位置放下一个蜂鸣器facing_east():检查Karel是否面向东方facing_west():检查Karel是否面向西方facing_south():检查Karel是否面向南方facing_north():检查Karel是否面向北方front_is_clear():检查前方是否有路front_is_blocked():检查前方是否被阻挡left_is_clear():检查左侧是否有路right_is_clear():检查右侧是否有路right_is_blocked():检查右侧是否被阻挡beepers_present():检查当前位置是否有蜂鸣器no_beepers_present():检查当前位置是否没有蜂鸣器not_facing_east():检查是否不面向东方not_facing_west():检查是否不面向西方not_facing_south():检查是否不面向南方not_facing_north():检查是否不面向北方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()
例如:用 move()、front_is_clear() 组合出 move_to_wall() 。
# 让Karel一直前进直到遇到墙
def move_to_wall():
while front_is_clear():
move()
# 这是一个注释,解释下面代码的作用
move() # 让Karel前进一步
良好的注释习惯可以让程序更易读、易维护。
def greet(name):
"""
打招呼函数
参数:name - 要打招呼的对象
返回:无
"""
print("Hello,", name)
可以通过 help(greet) 或 greet.__doc__ 查看文档字符串内容。
1.移动到坑洞处
2.通过放下一个蜂鸣器来填补坑洞
3.前往下一个角落
# 代码示例
def main():
move()
fill_pothole()
move()
# 让Karel在坑洞处填补一个蜂鸣器
def fill_pothole():
turn_right()
move()
put_beeper()
turn_around()
move()
turn_right()
通过任务分解,可以让程序结构更清晰,便于调试和维护。
任务分解的原则:
迭代测试有助于及时发现和修正问题,避免错误积累,提升编程效率和代码质量。