第五节
符号信息
这些日子计算机大多数用来处理符号信息,像名字,单词,地址或图像。所有的现代程序设计语言支持至少一种标识符号信息的方式。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语言 两个表达式形式:and和or表达式。
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是一个位更大的,我们将去了解更多在本书的其余部分。
分享到:
相关推荐
第一部分(第1~5章)是引言,包括C++的背景知识,C++语言及其标准库的简要介绍;第二部分(第6~15章)介绍C++的内置类型和基本特性,以及如何用它们构造程序;第三部分(第16~29章)介绍C++的抽象机制及如何用这些...
python程序设计-第一章-基础知识.pptx" python程序设计-第二章-判断语句与循环语句 python程序设计-第三章-字符串、列表、元组与字典.pptx" python程序设计-第四章-函数.pptx" python程序设计-第五章-文件操作.pptx...
一共共8个章节,大纲如下:【大纲】Python语言程序设计-课后练习-第1周作业练习题 共7页Python语言程序设计-课后练习-第2周作业练习题 共5页Python语言程序设计-课后练习-第3周作业练习题 共8页Python语言程序设计-...
C++程序设计语言 -第4部分标准库-第4版-高清版-2016年8月
c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集c语言程序设计-习题集...
一共共8个章节,大纲如下:【大纲】Python语言程序设计-课后练习-第1周作业练习题 共7页Python语言程序设计-课后练习-第2周作业练习题 共5页Python语言程序设计-课后练习-第3周作业练习题 共8页Python语言程序设计-...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序...
因为上传文件大小限制,将本书拆分为2部分,这是本书的第1部分,需要2部分放在一起才能解压缩。 C++之父作品新版,无可替代的C++领域经典的参考书。介绍了C++11的各项新特性、功能等。 《C++程序设计语言》(原书...
毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程设计&毕设&课设-微信小程序-3C手机商城小程序 2.zip 毕业设计&课程...
该书的第一部分“基本概念”是C++学习的起点。在这里,读者可以系统地了解C++语言的基础结构,包括变量、控制结构、函数、数据类型等基本元素。这些概念是编程的基石,也是任何一名程序员必备的知识。作者不仅讲解了...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程设计)C语言程序设计作业-图书管理系统源码+报告(课程...
微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-毕业设计期末大作业前端项目源码 微信小程序源码-...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
本书主要阐述80X86汇编...\r\n 本书适用于高等院校以及大、中专院校作为“汇编语言程序设计”课程的教材,本书也适于初学者使用,只要具有一种高级语言程序设计基础的读者,都可通过学习本书掌握汇编语言程序设计技术。