前言

拓宽软件教育视野

编写本书的目的,是让从事软件教育的老师或学生家长们避免软件教育业中“只见树木,不见森林”的情况。

近来,软件教育的重要性使得相关教育正在蓬勃发展,但绝大多数的教育是以编程语言为中心进行教学的。然而,仅以语言为中心进行教育势必会使思维受到局限,无法开发出更先进的软件。

本书就是为了解决这些问题而编写的,它涵盖了进行软件教育或开发软件所必知的编程原理。

本书的独特之处在于,以习题的形式,通过生动多样的条件设置,帮助读者理解编程原理。基于习题的学习是一种经过验证的教育模式,通过讨论习题的多样性和解决策略,为学习者提供乐趣和动力,培养解决问题的能力。

解决这些难题之后,书中讲解了与习题相关的编程原理。使用 Scratch 或 App Inventor 创建程序,了解编程原理如何实际应用于软件。

这样的板块设置会使对编程原理的理解变得简单而有趣,同时又能培养解决问题的创造性思维。

这本书能够顺利出版,首先要感谢金泰轩代表给予我们的机会和帮助。同时要向包括李美香科长在内的所有(株)HanbitMedia 员工们表示诚挚的感谢。

希望读者中的有志者能通过这本书顺利进入软件教育行业。

全体作者

2017 年 7 月

目录

  • 前言
  • 本书结构
  • 习题 01 捕手暗号
  • 习题 02 求糖果数量
  • 习题 03 分组游戏
  • 习题 04 求自行车大盘转动圈数
  • 编程 原理 进制转换
  • 习题 05 推测纸条内容
  • 习题 06 以0和1表示的电话号码
  • 习题 07 用数字表示的开机密码
  • 编程 原理 计算机中的字符表示方式
  • 习题 08 寻找隐藏的信息
  • 习题 09 用命令提示符绘图
  • 编程 原理 计算机中的图像表示方式
  • 习题 10 控制机器人1 
  • 习题 11 控制机器人2 
  • 习题 12 制作智能机器人
  • 编程 原理 计算机中的图像表示方式
  • 编程 03 绘制正六边形
  • 习题 13 交换烧杯中的液体
  • 习题 14 挪动水果 
  • 习题 15 确定最终菜单
  • 编程 原理 交换变量的值
  • 编程 04 交换两个变量的值
  • 编程 05 交换3个变量的值
  • 习题 16 确定观众入场顺序
  • 习题 17 寻找停车位 
  • 编程 原理 数组
  • 编程 06 求最大值 
  • 编程 07 求众数
  • 习题 18 点亮灯泡
  • 习题 19 普通游客年龄段
  • 习题 20 如何成功登录?
  • 习题 21 通过搜索ID添加SNS好友
  • 编程 原理 布尔代数 
  • 编程 08 判断3或5的倍数
  • 编程 09 游乐园门票标准
  • 习题 22 1年后有多少对兔子?
  • 习题 23 斐波那契数列
  • 习题 24 移动两个圆盘
  • 习题 25 移动3个圆盘
  • 习题 26 汉诺塔
  • 编程 原理 递归
  • 编程 10 用递归算法求阶乘
  • 编程 11 用递归算法求斐波那契数列
  • 习题 27 驶离停车场
  • 习题 28 利用魔术盒变换珠子的顺序
  • 编程 原理 栈和队列
  • 编程 12 栈 
  • 编程 13 队列
  • 习题 29 按重量为球排序
  • 编程 原理 排序
  • 编程 14 冒泡排序
  • 编程 15 选择排序 
  • 习题 30 幸运抽奖
  • 习题 31 寻找卡片
  • 编程 原理 查找
  • 编程 16 线性查找
  • 编程 17 二分查找
  • 习题 32 安排游乐设施
  • 习题 33 整顿停车场的车
  • 编程 原理 散列算法
  • 编程 18 安排游乐设施
  • 习题 34 打开魔法之门!
  • 习题 35 创造魔法数字
  • 编程 原理 树状结构
  • 习题 36 定位数字7和16
  • 习题 37 创建二叉查找树 
  • 编程 原理 二叉查找树 
  • 习题 38 传教士与食人族过河问题
  • 编程 原理 树查找
  • 习题 39 8字拼图游戏
  • 习题 40 井字游戏 
  • 编程 原理 人工智能搜索
  • 习题 41 以图表标识出行路线
  • 习题 42 巧排座位
  • 编程 原理 图
  • 习题 43 节约颜料种数
  • 习题 44 创建课程表
  • 编程 原理 图的着色
  • 习题 45 盗取宝箱
  • 习题 46 盗取7个宝箱
  • 编程 原理 最小生成树
  • 习题 47 快速奔向新德里
  • 编程 原理 最短路径
  • 习题 48 用数字表示图片
  • 习题 49 缩写句子
  • 编程 原理 压缩
  • 习题 50 是外星文字吗?
  • 习题 51 必须快速破解!
  • 编程 原理 密码
  • 编程 19 用凯撒密码加密 
  • 习题 52 找出颜色不一致的方块
  • 习题 53 国际标准书号
  • 习题 54 居民身份证号码
  • 编程 原理 奇偶校验位
  • 编程 20 求奇偶校验位
  • 习题 55 恢复硬盘数据1
  • 习题 56 恢复硬盘数据2
  • 编程 原理 磁盘冗余阵列
  • 习题 57 安排服务顺序
  • 习题 58 公平地给予指导
  • 编程 原理 进程调度
  • 习题 59 减少找零 
  • 习题 60 以最大收益挑选粮食
  • 编程 原理 贪心算法 
  • 编程 21 减少找零 
  • 习题 61 N皇后问题
  • 编程 原理 回溯法
  • 习题 62 up & down游戏 
  • 习题 63 三格板拼图
  • 编程 原理 分治法
  • 编程 22 up & down游戏
  • 习题 64 节约米袋
  • 习题 65 占有大量宝藏 
  • 编程 原理 动态规划
  • 编程 23 基于动态规划方法的斐波那契数列