程序设计技术和方法_sicp02-2.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计技术和方法_sicp02-2

2. 构造数据抽象(2) 本节进一步讨论数据抽象的问题,包括 一个图形语言 如何应用数据抽象的概念建立一个图形语言 该语言能很好地支持各种复杂的抽象和组合 符号数据(与数值数据对应) 如何表示符号数据 符号表达式处理(符号计算,symbolic computation ) 抽象数据的多重表示 程序设计技术和方法 裘宗燕,2012-10-17 -1- 一个图形语言 以一个构造简单图形语言为例,展示数据抽象和闭包的作用和威力 其中高阶过程起着关键作用 主要功能:构造重复元素的图形,元素可以按规则改变形状/大小 两个这种图形的例子: 具有Escher 一些画的风格,当然远没有Escher 的画复杂和深刻 程序设计技术和方法 裘宗燕,2012-10-17 -2- 图形语言:基本想法 基本元素:painter。一个painter 的功能是画出一种特定图像,它 可以根据要求对所画图像进行变形(改变形状和大小) 图像的变形基于给定的具体框架: wave 画的图 rogers 画的图 图像组合操作:(现在假设定义了几种组合操作,具体实现见后) beside 使用两个painter,让它们分别在左右两个半区画图 below 使用两个painter,让它们分别在上下两个半区画图 flip-vert 使用一个painter,画出上下反转后的图 flip-hozil 使用一个painter,画出左右反转后的图 程序设计技术和方法 裘宗燕,2012-10-17 -3- 图形语言:组合 painter 的组合还是painter,例: 从一个过程中可 能抽取出多个不 (define wave2 (beside wave (flip-vert wave))) 同的模式 (define wave4 (below wave2 wave2)) 如wave4,也可 以把反转方式抽 出来作为参数 可以有其他考虑 可以考虑painter 组合的重要模式,将其实现为Scheme 过程 例如,抽象出wave4 里的模式,定义为对图形的操作: (define (flipped-pairs painter) (let ((painter2 (beside painter (flip-vert painter)))) (below painter2 painter2))) (define wave4 (flipped-pairs wave)) 这样定义好的操作可以 用于任何painter 程序设计技术和方法 裘宗燕,2012-10-17 -4- 图形语言:组合 组合操作:向右分割和分支: (define (right-split painter n) (if (=

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档