在本页中:
程序设计方法教学包
7.0.0.18

程序设计方法教学包

教学语言是完整编程语言的小子集。虽然这种限制简化了错误的诊断和工具的构建,但这也使得编写某些有趣的程序变得不可能(或者至少很难)。为了规避这种限制,我们允许在教学语言编写的程序中导入教学包。

原则上,教学包只是用完整语言(而不是教学子集)编写的库。和任何其他的库一样,它可以导出值和函数等。然而,与普通库相比,教学包必须为它所支持的“最低”教学语言强制执行契约,并给出此语言级别中学生可以理解的错误信号。

本章介绍《程序设计方法》(又译《如何设计程序》)的教学包。

    1 HtDP教学包

      1.1 操作图像: "image.rkt"

        1.1.1 图像

        1.1.2 模式和颜色

        1.1.3 创建基本图形

        1.1.4 基本图像属性

        1.1.5 图像的组合

        1.1.6 图像的操作

        1.1.7 场景

        1.1.8 其他图像处理和创建函数

      1.2 模拟和动画: "world.rkt"

        1.2.1 简单的模拟

        1.2.2 交互

        1.2.3 第一个例子

          1.2.3.1 对门的理解

          1.2.3.2 世界的模拟

          1.2.3.3 门的模拟:数据

          1.2.3.4 门的模拟:函数

      1.3 温度转换: "convert.rkt"

      1.4 猜数字: "guess.rkt"

      1.5 猜颜色: "master.rkt"

      1.6 玩猜颜色: "master-play.rkt"

      1.7 简单的绘图: "draw.rkt"

        1.7.1 在画布上绘图

        1.7.2 与画布的交互

      1.8 刽子手: "hangman.rkt"

      1.9 玩刽子手: "hangman-play.rkt"

      1.10 管理控制箭头: "arrow.rkt"

      1.11 操作简单的HTML文档: "docs.rkt"

      1.12 使用文件和目录: "dir.rkt"

      1.13 函数的图像: "graphing.rkt"

      1.14 简单的图形用户界面: "gui.rkt"

      1.15 箭头GUI: "arrow-gui.rkt"

      1.16 控制电梯: "elevator.rkt"

      1.17 查找GUI: "lkup-gui.rkt"

      1.18 猜测GUI: "guess-gui.rkt"

      1.19 皇后问题: "show-queen.rkt"

      1.20 矩阵函数: "matrix.rkt"

        1.20.1 矩阵片断

    2 HtDP/2e教学包

      2.1 批量输入/输出: "batch-io.rkt"

        2.1.1 IO函数

        2.1.2 网页函数

        2.1.3 测试

      2.2 图像指南

        2.2.1 Overlay、Above和Beside:房子

        2.2.2 Rotate和Overlay:旋转拨号电话

        2.2.3 Alpha混合

        2.2.4 递归的图像函数

        2.2.5 旋转和图像中心

        2.2.6 图像的互操作性

        2.2.7 像素、画笔和线的细节

        2.2.8 Alpha混合的细节

      2.3 图像: "image.rkt"

        2.3.1 基本图像

        2.3.2 多边形

        2.3.3 图像的Overlay

        2.3.4 图像和场景的放置

        2.3.5 图像的旋转、缩放、翻转、裁剪和加框

        2.3.6 位图

        2.3.7 图像的属性

        2.3.8 图像的谓词

        2.3.9 图像相等

        2.3.10 Pinhole

        2.3.11 将图像导出到磁盘

      2.4 世界和宇宙: "universe.rkt"

        2.4.1 背景

        2.4.2 简单的模拟

        2.4.3 交互

        2.4.4 第一个世界的例子

          2.4.4.1 对门的理解

          2.4.4.2 关于设计世界的提示

        2.4.5 世界还不够

          2.4.5.1 消息

          2.4.5.2 发送消息

          2.4.5.3 连接到宇宙

          2.4.5.4 接收消息

        2.4.6 宇宙服务器

          2.4.6.1 世界与消息

          2.4.6.2 宇宙的描述

          2.4.6.3 探索宇宙

        2.4.7 第一个宇宙的例子

          2.4.7.1 两个扔球的世界

          2.4.7.2 关于设计宇宙的提示

          2.4.7.3 球宇宙的设计

          2.4.7.4 球服务器的设计

          2.4.7.5 球世界的设计

      2.5 网页IO: "web-io.rkt"

      2.6 iTunes: "itunes.rkt"

        2.6.1 数据定义

        2.6.2 Export的函数

      2.7 抽象: "abstraction.rkt"

        2.7.1 循环和解析

        2.7.2 模式匹配

        2.7.3 代数数据类型

      2.8 Planet Cute图像

        2.8.1 人物

        2.8.2 方块

        2.8.3 物品

        2.8.4 斜坡

        2.8.5 房屋

        2.8.6 阴影

      2.9 移植世界程序到宇宙

        2.9.1 世界还不够

        2.9.2 世界程序的移植

        2.9.3 图像程序的移植