`
civili
  • 浏览: 23988 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[译]如何设计程序-第一部分(续)

阅读更多

 

第五节

 

符号信息

 

这些日子计算机大多数用来处理符号信息,像名字,单词,地址或图像。所有的现代程序设计语言支持至少一种标识符号信息的方式。Scheme支持几种表达符号信息的方法:符号,串,(键盘)字符,和图像。一个符号(Symbol)是一个键盘字符序列被一个单引号标记:

 

'the 'dog 'ate 'a 'chocolate 'cat! 'two^3 'and%so%on?

和数一样,符号没有继承的意义。

 

和数一样,符号是原子数据片。它们的目的是为了表示这些事物,像家庭和姓,工作标题,命令,等等。Scheme对符号仅仅提供一个基本操作:symbol=?一个比较操作。它 两个符号产生真当且仅当两个符号是一样的时:

 

1. (symbol=? 'Hello 'Hello) = true

2. (symbol=? 'Hello 'Hewdy) = false

3. (symbol=? 'Hello x) = true 如果x代表'Hello

4. (symbol=? 'Hello x) = false 如果x代表'Howdy

 

符号第一次被介绍进计算是通过研究人工智能想要设计函数。 考虑函数reply

 

5.1 符号练习

 

 

第六节 复合数据,第一部分:结构

 

函数的输入

 

6.1 结构

 

假设我们希望表示像素(有颜色的点)在我们的计算机监视器上。像素非常像一个笛卡尔点。它有一个x坐标,告诉我们像素的水平位置,和一个y坐标,告诉我们像素的垂直位置。给出两个数,我们能定位一个像素在监视器上,并且能成为一个计算机程序。

 

DrScheme的教学包用posn结构表示像素。一个posn结构组合两个数。那就是说,posn是一个包含两个值的单个值。我们能建立posn结构通过make-posn组合两个数产生一个posn。例如:

 

(make-posn 3 4)

(make-posn 8 6)

(make-posn 5 12)

 

posn结构。每个结构有同样的状态。

 

6.2 扩展练习:画一幅简单的图

 

DrScheme提供了图形教学包draw.ss,介绍简单的图形操作:

 

1.draw-solid-line,组合两个posn结构,开始点和结束点在画布上,和一个颜色。

2.draw-solid-rect组合四个参数:一个posn结构

3.draw-solid-disk,

4.draw-circle,

每个操作产生真,如果它成功的改变了画布。我们

 

6.3 结构定义

 

6.4 数据定义

 

考虑以下的表达式:

 

(make-posn 'Albert 'Meyer)

 

它包含来自两个符号的posn结构。如果我们现在应用distance-to-0对这个结构,计算失败:

 

(distance-to-0 (make-posn 'Albert 'Meyer))

=(sqrt

(+ (sqr (posn-x (make-posn 'Albert 'Meyer)))

 

6.5 为复合数据定义函数

 

6.1节到6.4节建议了函数设计

 

6.6 扩展练习:移动园和矩形

 

实现一个计算机游戏经常需要移动一个图像在一个计算机监视器上。在图13中,例如,

 

6.7 扩展练习Hangman

 

 

第七节 数据种类

 

前面的几节 我们的数据世界。我们现在必须处理包含布尔,符号和许多种类的结构的整个宇宙。让我们给这个世界引入一些秩序吧。

 

这点,我们的函数总是处理四个不同数据类的子类:

 

数字:表示数值信息

布尔:真和假

符号:表示符号信息;还有

结构:表示复合信息

 

然而,有时,函数必须处理一类数据包含数字和结构或者结构和几个不同的种类。我们学习设计这样的函数在本节。另外,我们学习如何保护函数从坏的使用。在这里,坏的使用意思是一些用户使用本来用来画圆的函数去画矩形。尽管我们

 

7.1 混合和区分数据

 

 

7.2 为混合数据设计函数

 

7.3 复合函数回顾

 

7.4 扩展练习:移动形状

 

7.5 输入错误

 

第八节 插曲1:语法和语义

 

8.2 Scheme词汇

 

Scheme的基本词汇包含五类单词

 

8.3 Scheme文法

 

许多其他程序设计语言,Scheme有一个简单的文法。

 

8.4 Scheme的含义

 

一个合法的DrScheme程序包含两个项:一个函数定义序列(Definitions窗口)和一个交互序列(在交互窗口)。每个交互 一个Scheme表达式的求值,

 

DrSheme对一个表达式求值时,它除了使用算术和代数定律转换一个表达式到一个值外不做任何事。在 数学课程,值仅仅是数字。我们也包含符号,布尔量和确实所有的常量:

 

<val>=<con>

 

值集因此仅仅是表达式集合的子集。

 

8.5 错误

 

表达式求值指导。

 

8.6 布尔表达式

 

我们当前的定义初级学生Scheme语言 两个表达式形式:andor表达式。

 

8.7 变量定义

 

程序不仅仅包含函数定义也包含变量定义,但是这些没有包含在我们的第一个文法中。

 

这儿是变量定义的文法规则:

 

<def>=(define <var><exp>)

 

8.8 结构定义

 

我们仍然不得不理解语法和语义一个Scheme结构

 

使用DrSheme验证你的解决方案

 

<def>=(define(<var><var>...<var>)<exp>)

|(define<var><exp>)

|(define-struct<var0>(var-1>...<var-n>))

<exp>=<var>

|<con>

|(<prm><exp>...<exp>)

|

 

--------------------------------------------------------------

27 我们使用不同的字体区分不同范畴的单词。常量和原始操作使用sans serif字体,变量使用斜体,关键字使用黑体。

28 这个文法描述仅仅是我们使用的部分(减去变量和结构定义),仍然覆盖一个大的子集整个语言的。Scheme是一个位更大的,我们将去了解更多在本书的其余部分。

分享到:
评论

相关推荐

    C++ 程序设计语言(第 1 - 3 部分)(原书第 4 版)

    第一部分(第1~5章)是引言,包括C++的背景知识,C++语言及其标准库的简要介绍;第二部分(第6~15章)介绍C++的内置类型和基本特性,以及如何用它们构造程序;第三部分(第16~29章)介绍C++的抽象机制及如何用这些...

    python程序设计基础-PPT课件;自己授课整理的ppt

    python程序设计-第一章-基础知识.pptx" python程序设计-第二章-判断语句与循环语句 python程序设计-第三章-字符串、列表、元组与字典.pptx" python程序设计-第四章-函数.pptx" python程序设计-第五章-文件操作.pptx...

    Python语言程序设计-课后练习-第1周作业练习题 共7页.pdf

    一共共8个章节,大纲如下:【大纲】Python语言程序设计-课后练习-第1周作业练习题 共7页Python语言程序设计-课后练习-第2周作业练习题 共5页Python语言程序设计-课后练习-第3周作业练习题 共8页Python语言程序设计-...

    C++程序设计语言 -第4部分标准库-第4版-高清版-2016年8月

    C++程序设计语言 -第4部分标准库-第4版-高清版-2016年8月

    2024最全+c语言程序设计-习题集2.0

    c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集...

    Python语言程序设计-课后练习-第3周作业练习题 共8页.pdf

    一共共8个章节,大纲如下:【大纲】Python语言程序设计-课后练习-第1周作业练习题 共7页Python语言程序设计-课后练习-第2周作业练习题 共5页Python语言程序设计-课后练习-第3周作业练习题 共8页Python语言程序设计-...

    【微信小程序源码-毕业设计期末大作业】小程序.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)

    单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计...

    【微信小程序源码-毕业设计期末大作业】赞赏.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    【微信小程序源码-毕业设计期末大作业】生鲜商城.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    单片机C语言程序设计 K1-K4 控制LED移位(有源码)

    单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序...

    C++程序设计语言.第1~3部分 原书第4版 part1

    因为上传文件大小限制,将本书拆分为2部分,这是本书的第1部分,需要2部分放在一起才能解压缩。 C++之父作品新版,无可替代的C++领域经典的参考书。介绍了C++11的各项新特性、功能等。 《C++程序设计语言》(原书...

    毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip

    毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程...

    C++程序设计语言第四版(全套1-4部分)pdf带目录全

    该书的第一部分“基本概念”是C++学习的起点。在这里,读者可以系统地了解C++语言的基础结构,包括变量、控制结构、函数、数据类型等基本元素。这些概念是编程的基石,也是任何一名程序员必备的知识。作者不仅讲解了...

    【微信小程序源码-毕业设计期末大作业】微信.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    C语言程序设计作业-图书管理系统源码+报告(课程设计)

    C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程...

    【微信小程序源码-毕业设计期末大作业】09_月饼类展示小程序.zip

    微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-...

    【微信小程序源码-毕业设计期末大作业】知乎.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    【微信小程序源码-毕业设计期末大作业】小程序版2048.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    IBM-PC汇编语言程序设计(第2版)

    本书主要阐述80X86汇编...\r\n 本书适用于高等院校以及大、中专院校作为“汇编语言程序设计”课程的教材,本书也适于初学者使用,只要具有一种高级语言程序设计基础的读者,都可通过学习本书掌握汇编语言程序设计技术。

Global site tag (gtag.js) - Google Analytics