程序设计的基本元素

 每一种语言都提供了三种机制:

  1. 基本表达形式,用于表示语言所关心的最简单的个体。
  2. 组合的方法,通过它们可以从较简单的东西出发构造出复合的元素。
  3. 抽象的方法,通过它们可以为复合对象命名,并将它们作为单元去操作。

Define是该语言最简单的抽象方式

过程的一般定义形式为:

(define(<name>  <formal parameters>) <body>)

其中name是符号,过程定义将在环境中关联于这个符号,<formal parameters>(形式参数)用于对应过程中的各个实际参数。<body>是一个表达式,在应用这一过程时,这一表达式中的形式参数将用与之对应的实际参数取代,对这样取代后的表达式的求值,产生出这个过程应用的值。

 应用序和正则序:

             应用序:解释器首先对运算符和各个运算对象求值,而后将得到的过程应用于得到的实际参数。

             正则序:先不求出运算对象的值,直到实际需要它们的值。(得到一个只包含基本运算符的表达式。

     条件表达式: ( cond  (<p1>  <e1>)

(<p2>  <e2>)

(<pn>  <en>))  括号括起来的表达式称为对偶,每个对偶中的第一个表达式是一个谓词,它的值将被解释为真或假。求值方式:首先求值谓词<p1>,如果它的值是false,那么就去求值<p2>,继续下雨,直到某个谓词的值为真为止,此时解释器就返回相应子句中的序列表达式<e>的值。

(if <predicate> <consequent> <alternative>)

一个过程定义应该隐去一些细节,过程的使用者可以不必自己去写这些过程,而是从其他程序员那里作为一个黑箱而接受了它。用户在使用一个过程时,应该不需要去弄清它是如何实现的。

在一个过程定义里,被声明为这个过程的形式参数的那些约束变量,就以这个过程的体作为它们的作用域。

时间: 2024-10-05 08:10:59

程序设计的基本元素的相关文章

计算机程序的构造和解释笔录(1):构造过程抽象

Q: SICP是讲软件工程么? A:部分,但并非全部.主要是模块化和黑盒抽象,计算机中两大主要基本思想.SICP关心的是:"当系统复杂度爆炸时(或者在此之前),我们如何通过有效的方法和手段去控制系统的复杂度?" Q: SICP是讲编译原理么? A: 部分,另外,如同书名说描述的那样,SICP中的"编译"都是"解释",这种解释的行为,无外乎就是用一种机器的计算行为去模拟另一种机器. 一个计算机语言并不仅仅是让计算机去执行操作的一种方式,而是一种表达

SICP读书笔记(一)

第一章 构造过程抽象 计算过程是存在于计算机里的一类抽象事物,它在演化过程中会去操作一些被称为数据的抽象事物.我们通过创建被称为程序的规则模式来指导这类过程的进行.程序由程序设计语言编排而成. 我们将要使用Lisp表达过程性的思想,它是今天还在广泛使用的历史第二悠久的语言,本书将使用Lisp的一个方言,Scheme.我们之所以选择Lisp,是因为它有许多独特的特征,其中最重要的是:计算过程的Lisp描述本身又可以作为Lisp的数据来表示和操作. 1.1 程序设计的基本元素 为了能让我们通过程序语

SICP学习笔记及题解---构造过程抽象(一)

有段时间没看这本书了. 而且在做笔记的时候产生了一些疑问,觉得这样照着书做笔记没什么意义.于是乎,改变了一下做法.改成先提出疑问,记下重点,然后结合实际案例学习相关东西,最后附上题解, ok,下面就是第一次的笔记.(依旧是旧套路的) 本节内容 l  讨论基本的Scheme语法规则 l  过程的定义 l  代换模型 l  条件表达式和谓词 l  过程抽象 l  与C语言比较 程序设计的基本元素 所有的高级的语言都会在把简单的认知组合起来形成复杂认识的方法上有独到之处.而且每个强有力的语言都为此提供

《计算机程序的构造和解释(第2版)》【PDF】下载

<计算机程序的构造和解释(第2版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382255 内容简介 <计算机程序的构造和解释(原书第2版)>1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版.在过去的二十多年里,<计算机程序的构造和解释(原书第2版)>对于计算机科学的教育计划产生了深刻的影响.第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器.

SICP 第一章 构造过程抽象 1

Chapter 1 Building Abstractions with Procedures .title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal

重读《C程序设计语言》(2):导言

这一章主要是概要的介绍C语言,通过实际程序引入C语言的基本元素.至于具体细节,后续章节将进一步介绍. (1)学习一门新程序设计语言的唯一途径就是使用它编写程序. /* * Copyright (C) [email protected] */ #include <stdio.h> main() { printf("hello, world\n"); } (2)在UNIX中,要运行上述代码,首先要在某个文件中建立这个程序,并以" .c "作为文件的扩展名.通

C++基础—面向对象程序设计

一.面向对象程序设计        1.1什么是面向对象程序设计 面向过程的程序设计思想的核心是功能的分解.将数据结构和过程分离,着重点在过程,设计者首先考虑如何将功能分解,在每一个过程中安排程序的操作序列.缺点之一,当程序的数据结构需要变更的时候,需要修改与之相关的缩影模块,造成了可重用性差,维护代价高. 面向对象程序设计中,着重点在被操作的数据而不是实现这些操作的过程. 程序=对象+消息 基本元素是对象,主要结构特点:1)程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定他们

实验二 Java面向对象程序设计 20135321

课程:Java程序设计   班级:1353    姓名:余佳源  学号:20135321 成绩:             指导教师:娄嘉鹏      实验日期:2015-5-8 实验密级:         预习程度:           实验时间:3:15~6:45 仪器组次:          必修/选修:选修       实验序号:2 实验名称:                Java面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继

HTML5 程序设计 - 使用HTML5 Canvas API

请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方便查看. 学习笔记,纯手工码字,有错别字什么的请指出,觉得好的请点个赞小小的支持下.谢谢亲们. 本篇,我们将探索如何使用HTML5和Canvas API.Canvas API很酷,可以通过它来动态生成和展示图形.图表.图像以及动画. 本篇将使用渲染API(Rendering API)的基本功能来创建