|
| 1 | +<SECTION> |
| 2 | + <NAME> |
| 3 | + <SPLITINLINE> |
| 4 | + 程序 |
| 5 | + <JAVASCRIPT>函数</JAVASCRIPT> |
| 6 | + </SPLITINLINE> |
| 7 | + 及其生成的过程 |
| 8 | + </NAME> |
| 9 | + |
| 10 | + <SECTIONCONTENT></SECTIONCONTENT> |
| 11 | + |
| 12 | + <LABEL NAME="sec:procedures-and-processes"></LABEL> |
| 13 | + |
| 14 | + <TEXT> |
| 15 | + 我们现在已经考虑了编程的元素:我们使用了 |
| 16 | + 原始算术操作,组合了这些操作,并且 |
| 17 | + 通过 |
| 18 | + <SPLITINLINE> |
| 19 | + 将其定义为复合程序。 |
| 20 | + <JAVASCRIPT>将其声明为复合函数。</JAVASCRIPT> |
| 21 | + </SPLITINLINE> |
| 22 | + 但这还不足以让我们说我们知道如何编程。我们的情况类似于一个已经 |
| 23 | + 学会了国际象棋棋子如何移动规则的人,但对典型开局、战术或策略一无所知。像初学者的棋手一样, |
| 24 | + 我们尚不知道该领域的常见使用模式。 |
| 25 | + 我们缺乏对哪些移动是值得做的知识 |
| 26 | + <SPLITINLINE> |
| 27 | + (哪些程序值得定义) |
| 28 | + <JAVASCRIPT>(哪些函数值得声明)</JAVASCRIPT> |
| 29 | + </SPLITINLINE> |
| 30 | + 我们缺乏预测移动后果的经验 |
| 31 | + <SPLITINLINE> |
| 32 | + (执行一个程序)。 |
| 33 | + <JAVASCRIPT>(执行一个函数)。</JAVASCRIPT> |
| 34 | + </SPLITINLINE> |
| 35 | + </TEXT> |
| 36 | + |
| 37 | + <TEXT> |
| 38 | + 视觉化所考虑的行动后果的能力对于成为一名专家程序员至关重要,正如在任何合成的创造性活动中一样。例如,成为一名专家摄影师,必须学会如何观察一个场景,并知道每个可能的曝光选择下,图像中每个区域在打印时将显得多么黑暗,以及 |
| 39 | + <SPLITINLINE> |
| 40 | + 显影。 |
| 41 | + <JAVASCRIPT>处理选项。</JAVASCRIPT> |
| 42 | + </SPLITINLINE> |
| 43 | + <COMMENT> |
| 44 | + 术语<QUOTE>显影</QUOTE>可能对数字时代的主流受众并不熟悉。 |
| 45 | + </COMMENT> |
| 46 | + 只有这样,人才能向后推理,规划构图、照明、曝光和 |
| 47 | + <SPLITINLINE> |
| 48 | + 显影 |
| 49 | + <JAVASCRIPT>处理</JAVASCRIPT> |
| 50 | + </SPLITINLINE> |
| 51 | + 以获得所需的效果。因此编程也是如此,我们在规划一个过程的行动方案,并通过程序控制该过程。要成为专家,我们必须学会可视化各种类型生成的 |
| 52 | + <SPLITINLINE> |
| 53 | + 程序。 |
| 54 | + <JAVASCRIPT>函数。</JAVASCRIPT> |
| 55 | + </SPLITINLINE> |
| 56 | + 只有在我们培养出这样的技能之后,才能可靠地构造出表现出所需行为的程序。 |
| 57 | + </TEXT> |
| 58 | + |
| 59 | + <TEXT> |
| 60 | + 一个 |
| 61 | + <SPLITINLINE> |
| 62 | + 程序 |
| 63 | + <JAVASCRIPT>函数</JAVASCRIPT> |
| 64 | + </SPLITINLINE> |
| 65 | + 是一个 |
| 66 | + <INDEX><FUNCTION></FUNCTION><SUBINDEX><ORDER>模式</ORDER>作为过程的局部演化模式</SUBINDEX></INDEX> |
| 67 | + 用于计算过程的<EM>局部演化</EM>的模式。它指定了过程的每个阶段如何建立在上一个阶段之上。我们希望能够对局部 |
| 68 | + <INDEX>过程的局部演化</INDEX> |
| 69 | + <INDEX>过程<SUBINDEX>局部演化</SUBINDEX></INDEX> |
| 70 | + 已由 |
| 71 | + <SPLITINLINE> |
| 72 | + 程序 |
| 73 | + <JAVASCRIPT>函数</JAVASCRIPT> |
| 74 | + </SPLITINLINE> |
| 75 | + 指定的过程的整体或<EM>全局</EM>行为做出陈述。一般来说,这很难做到,但我们至少可以尝试描述一些典型的过程演化模式。 |
| 76 | + </TEXT> |
| 77 | + |
| 78 | + <TEXT> |
| 79 | + 在本节中,我们将检查一些由简单 |
| 80 | + <SPLITINLINE> |
| 81 | + 程序 |
| 82 | + <JAVASCRIPT>函数</JAVASCRIPT> |
| 83 | + </SPLITINLINE> |
| 84 | + 生成的常见<QUOTE>形状</QUOTE>。我们还将研究这些过程消耗时间和空间这两种重要计算资源的速率。我们将考虑的 |
| 85 | + <SPLITINLINE> |
| 86 | + 程序 |
| 87 | + <JAVASCRIPT>函数</JAVASCRIPT> |
| 88 | + </SPLITINLINE> |
| 89 | + 非常简单。它们的作用类似于摄影中的测试模式:作为过于简化的原型模式,而不是实际的例子。 |
| 90 | + </TEXT> |
| 91 | + |
| 92 | + <!-- Subsection 1 : Linear Recursion and Iteration --> |
| 93 | + &subsection1.2.1; |
| 94 | + |
| 95 | + <!-- Subsection 2 : Tree Recursion --> |
| 96 | + &subsection1.2.2; |
| 97 | + |
| 98 | + <!-- Subsection 3 : Orders of Growth --> |
| 99 | + &subsection1.2.3; |
| 100 | + |
| 101 | + <!-- Subsection 4 : Exponentiation --> |
| 102 | + &subsection1.2.4; |
| 103 | + |
| 104 | + <!-- Subsection 5 : Greatest Comman Divisors --> |
| 105 | + &subsection1.2.5; |
| 106 | + |
| 107 | + <!-- Subsection 6 : Example: Testing for Primality --> |
| 108 | + &subsection1.2.6; |
| 109 | + |
| 110 | +</SECTION> |
0 commit comments