11<SECTION >
2- <NAME >编程元素</NAME ><NAME >编程元素</NAME >
3- <LABEL NAME =" sec:elements-of-programming" ></LABEL ><NAME >编程元素</NAME >
2+ <NAME >编程要素</NAME >
43 <LABEL NAME =" sec:elements-of-programming" ></LABEL >
54
6- <INDEX >编程<SUBINDEX >元素</SUBINDEX ><OPEN ></OPEN ></INDEX ><NAME >编程元素</NAME >
7- <LABEL NAME =" sec:elements-of-programming" ></LABEL >
8-
9- <INDEX >编程<SUBINDEX >元素</SUBINDEX ><OPEN ></OPEN ></INDEX >
10-
11- <SECTIONCONTENT ></SECTIONCONTENT ><NAME >编程元素</NAME >
12- <LABEL NAME =" sec:elements-of-programming" ></LABEL >
13-
14- <INDEX >编程<SUBINDEX >元素</SUBINDEX ><OPEN ></OPEN ></INDEX >
15-
16- <SECTIONCONTENT ></SECTIONCONTENT >
17-
18- <TEXT >
19- 一个强大的编程语言不仅仅是用于指示计算机执行任务的工具。该语言还作为一个框架,用于组织我们关于过程的想法。因此,当我们描述一种语言时,我们应特别关注该语言提供的将简单想法结合成更复杂想法的方法。每一种强大的语言都有三种实现此目的的机制:
20- <UL >
21- <LI >
22- <B >原始表达式</B >,
23- <INDEX >原始表达式</INDEX >
24- 代表语言所关注的最简单的实体,
25- </LI >
26- <LI >
27- <B >组合方法</B >, 通过
28- <INDEX >组合方法</INDEX >
29- <INDEX >组合,方法<FRAGILE ></FRAGILE ></INDEX >
30- 从简单的元素构建复合元素,以及
31- </LI >
32- <LI >
33- <B >抽象方法</B >,
34- <INDEX >抽象方法</INDEX >
35- 通过它可以命名和操作复合元素作为单位。
36- </LI >
37- </UL >
38- </TEXT > <NAME >编程元素</NAME >
39- <LABEL NAME =" sec:elements-of-programming" ></LABEL >
5+ <INDEX >编程<SUBINDEX >要素</SUBINDEX ><OPEN ></OPEN ></INDEX >
406
41- < INDEX >编程< SUBINDEX >元素</ SUBINDEX >< OPEN ></ OPEN ></ INDEX >
7+ < SECTIONCONTENT ></ SECTIONCONTENT >
428
43- <SECTIONCONTENT ></SECTIONCONTENT >
44-
45- <TEXT >
46- 一个强大的编程语言不仅仅是用于指示计算机执行任务的工具。该语言还作为一个框架,用于组织我们关于过程的想法。因此,当我们描述一种语言时,我们应特别关注该语言提供的将简单想法结合成更复杂想法的方法。每一种强大的语言都有三种实现此目的的机制:
9+ <TEXT >
10+ 一种强大的编程语言不仅仅是指示计算机执行任务的手段。该语言也是一个框架,在其中我们组织关于过程的想法。因此,当我们描述一种语言时,我们应特别注意该语言提供的将简单思想组合成更复杂思想的方法。每种强大的语言都有三种机制来实现这一点:
4711 <UL >
4812 <LI >
49- <B >原始表达式 </B >,
50- <INDEX >原始表达式 </INDEX >
51- 代表语言所关注的最简单的实体 ,
13+ <B >原语表达式 </B >,
14+ <INDEX >原语表达式 </INDEX >
15+ 它们表示语言所关心的最简单实体 ,
5216 </LI >
5317 <LI >
54- <B >组合方法 </B >, 通过
55- <INDEX >组合方法 </INDEX >
56- <INDEX >组合,方法< FRAGILE ></ FRAGILE > </INDEX >
57- 从简单的元素构建复合元素,以及
18+ <B >组合的方法 </B >, 通过
19+ <INDEX >组合的方法 </INDEX >
20+ <INDEX >组合, 方法 </INDEX >
21+ 复合元素是由更简单的元素构建而成的,
5822 </LI >
5923 <LI >
60- <B >抽象方法 </B >,
61- <INDEX >抽象方法 </INDEX >
62- 通过它可以命名和操作复合元素作为单位 。
24+ <B >抽象的方法 </B >,
25+ <INDEX >抽象的方法 </INDEX >
26+ 通过它复合元素可以作为单位被命名和操作 。
6327 </LI >
6428 </UL >
65- </TEXT >
29+ </TEXT >
6630
67- <TEXT >
68- 在编程中,我们处理两种类型的元素 :
31+ <TEXT >
32+ 在编程中,我们处理两种元素 :
6933 <SPLITINLINE >
70- < SCHEME >
34+
7135 <INDEX >过程</INDEX >
7236 过程
73- </ SCHEME >
37+
7438 <JAVASCRIPT >
75- <INDEX >< FUNCTION ></ FUNCTION ></ INDEX >
39+ <INDEX >< 函数 >< /函数 >
7640 函数
77- </JAVASCRIPT >
41+ </INDEX ></ JAVASCRIPT >
7842 </SPLITINLINE >
7943 和
8044 <INDEX >数据</INDEX >
81- 数据。(稍后我们会发现它们实际上并不那么不同。)非正式地,数据是我们想要操作的 <QUOTE >东西</QUOTE >,而
45+ 数据。(稍后我们将发现它们实际上并不那么不同。)非正式地说,数据是我们希望操作的 <QUOTE >东西</QUOTE >,而
8246 <SPLITINLINE >
83- < SCHEME >过程</ SCHEME >
47+ 过程
8448 <JAVASCRIPT >函数</JAVASCRIPT >
8549 </SPLITINLINE >
86- 是操作数据规则的描述。因此,任何强大的编程语言都应该能够描述原始数据和原始
50+ 是操作数据规则的描述。因此,任何强大的编程语言都应该能够描述
51+ 原语数据和原语
8752 <SPLITINLINE >
88- < SCHEME >过程</ SCHEME >
53+ 过程
8954 <JAVASCRIPT >函数</JAVASCRIPT >
9055 </SPLITINLINE >
91- 并且应该拥有组合和抽象
56+ 并且应该有组合和抽象
9257 <SPLITINLINE >
93- < SCHEME >过程</ SCHEME >
58+ 过程
9459 <JAVASCRIPT >函数</JAVASCRIPT >
9560 </SPLITINLINE >
9661 和数据的方法。
97- </TEXT > <NAME >The Elements of Programming</NAME >
98- <LABEL NAME =" sec:elements-of-programming" ></LABEL >
62+ </TEXT >
9963
100- <INDEX >programming <SUBINDEX >元素</SUBINDEX ><OPEN ></OPEN > </INDEX >
101-
102- <SECTIONCONTENT ></SECTIONCONTENT >
103-
104- <TEXT >
105- A powerful programming language is more than just a means for
106- instructing a computer to perform tasks. The language also serves as
107- a framework within which we organize our ideas about processes. Thus,
108- when we describe a language, we should pay particular attention to the
109- means that the language provides for combining simple ideas to form
110- more complex ideas. Every powerful language has three mechanisms for
111- accomplishing this:
112- <UL >
113- <LI >
114- <B >原始表达式</B >,
115- <INDEX >原始表达式</INDEX >
116- 代表语言所关注的最简单的实体,
117- </LI >
118- <LI >
119- <B >组合方法</B >, 通过
120- <INDEX >组合方法</INDEX >
121- <INDEX >组合,方法<FRAGILE ></FRAGILE ></INDEX >
122- 从简单的元素构建复合元素,以及
123- </LI >
124- <LI >
125- <B >抽象方法</B >,
126- <INDEX >抽象方法</INDEX >
127- 通过它可以命名和操作复合元素作为单位。
128- </LI >
129- </UL >
130- </TEXT >
131-
132- <TEXT >
133- In programming, we deal with two kinds of elements:
134- <SPLITINLINE >
135- <SCHEME >
136- <INDEX >过程</INDEX >
137- 过程
138- </SCHEME >
139- <JAVASCRIPT >
140- <INDEX ><FUNCTION ></FUNCTION ></INDEX >
141- 函数
142- </JAVASCRIPT >
143- </SPLITINLINE >
144- 和
145- <INDEX >数据</INDEX >
146- 数据。(稍后我们会发现它们实际上并不那么不同。)非正式地,数据是我们想要操作的<QUOTE >东西</QUOTE >,而
147- <SPLITINLINE >
148- <SCHEME >过程</SCHEME >
149- <JAVASCRIPT >函数</JAVASCRIPT >
150- </SPLITINLINE >
151- 是操作数据规则的描述。因此,任何强大的编程语言都应该能够描述原始数据和原始
152- <SPLITINLINE >
153- <SCHEME >过程</SCHEME >
154- <JAVASCRIPT >函数</JAVASCRIPT >
155- </SPLITINLINE >
156- 并且应该拥有组合和抽象
157- <SPLITINLINE >
158- <SCHEME >过程</SCHEME >
159- <JAVASCRIPT >函数</JAVASCRIPT >
160- </SPLITINLINE >
161- 和数据的方法。
162- </TEXT >
163-
164- <TEXT >
165- In this chapter we will deal only with simple
166- <INDEX >数值数据</INDEX >
167- <INDEX >数据<SUBINDEX >数值</SUBINDEX ></INDEX >
168- 数值数据,以便我们可以专注于构建
169- <SPLITINLINE ><SCHEME >过程</SCHEME ><JAVASCRIPT >函数</JAVASCRIPT ></SPLITINLINE >的规则。<FOOTNOTE >对于数字的
170- <LABEL NAME =" foot:number-representation" ></LABEL >
171- 特征描述为<QUOTE >简单数据</QUOTE >是一个完全的伪装。实际上,数字处理是任何编程语言中最棘手和最令人困惑的方面之一。涉及到的一些典型问题如下:
64+ <TEXT >
65+ 在本章中,我们只处理简单的
66+ <INDEX > 数值数据 </INDEX >
67+ <INDEX > <DATA >数值<SUBINDEX >数据</SUBINDEX ></DATA > </INDEX >
68+ 数值数据,以便我们可以专注于构建规则
69+ <SPLITINLINE ><SCHEME >procedures</SCHEME > <JAVASCRIPT >函数</JAVASCRIPT > </SPLITINLINE >.<FOOTNOTE > 这 <LABEL NAME =" foot:number-representation" ></LABEL >
70+ 将数字特征化为<QUOTE >简单数据</QUOTE >是一种赤裸裸的虚张声势。事实上,对数字的处理是任何编程语言中最棘手和最令人困惑的方面之一。相关的典型问题包括:
17271 <INDEX >整数</INDEX >
17372 <INDEX >实数</INDEX >
174- <INDEX >数< SPACE ></ SPACE >整数与< SPACE ></ SPACE >实数 </INDEX >
175- 一些计算机系统区分出 <EM >整数</EM >,例如2, 与<EM >实数</EM >,例如2 .71。实数2.00与整数2不同吗?用于整数的算术运算与用于实数的运算相同吗?6除以2得3,还是3 .0?我们可以表示多大的数字?我们可以表示多少位小数?整数的范围与实数的范围相同吗 ?
73+ <INDEX >数字< SUBINDEX >整数与实数</ SUBINDEX > </INDEX >
74+ 一些计算机系统区分 <EM >整数</EM >(如 2) 与<EM >实数</EM >(如 2 .71)。实数 2.00 是否与整数 2 不同?用于整数的算术运算是否与用于实数的运算相同?6 除以 2 产生 3 还是 3 .0?我们可以表示多大的数字?我们可以表示多少位小数的精度?整数的范围是否与实数的范围相同 ?
17675 <INDEX >数值分析</INDEX >
17776 <INDEX >舍入误差</INDEX >
17877 <INDEX >截断误差</INDEX >
179- 当然,除了这些问题之外,还有一系列关于舍入和截断误差的问题<EMDASH ></EMDASH >即整个数值分析科学。由于本书的重点是大型程序设计,而不是数值技术,我们将忽略这些问题。本章中的数值示例将展示通常在使用保持非整数操作中的有限小数位精度的算术运算时观察到的舍入行为。
180- </FOOTNOTE >
181- 在后面的章节中,我们将看到这些相同的规则也允许我们构建
78+ 当然,除了这些问题之外,还有一系列与舍入和截断误差有关的问题——数值分析的整个科学。由于本书的重点是大规模程序设计,而不是数值技术,我们将忽略这些问题。本章中的数值示例将展示使用保持有限的十进制精度进行非整数运算时通常观察到的舍入行为。
79+ </FOOTNOTE >
80+ 在后面的章节中,我们将看到这些相同的规则允许我们构建
81+
18282 <SPLITINLINE >
183- < SCHEME >过程</ SCHEME >
83+ 过程
18484 <JAVASCRIPT >函数</JAVASCRIPT >
18585 </SPLITINLINE >
186- 来操作复合数据。
187- <INDEX >编程<SUBINDEX >元素</SUBINDEX ><CLOSE ></CLOSE ></INDEX >
188- </TEXT ></SECTION >
86+ 以操作复合数据。
87+ <INDEX >编程<SUBINDEX >要素</SUBINDEX ><CLOSE ></CLOSE ></INDEX >
88+ </TEXT >
89+
90+ <!-- Subsection 1 : Expressions -->
91+ & subsection1.1.1;
92+
93+ <!-- Subsection 2 : Naming and the Environment -->
94+ & subsection1.1.2;
95+
96+ <!-- Subsection 3 : Evaluating Combinations -->
97+ & subsection1.1.3;
98+
99+ <!-- Subsection 4 : Compound Procedures -->
100+ & subsection1.1.4;
101+
102+ <!-- Subsection 5 : The Substitution Model for Procedure Application -->
103+ & subsection1.1.5;
104+
105+ <!-- Subsection 6 : Conditional Expressions and Predicates -->
106+ & subsection1.1.6;
107+
108+ <!-- Subsection 7 : Example: Square Roots by Newtons Method -->
109+ & subsection1.1.7;
110+
111+ <!-- Subsection 8 : Procedures as Black-Box Abstractions -->
112+ & subsection1.1.8;
113+
114+ </SECTION >
0 commit comments