第 5 章用伪代码描述算法——本章把伪代码升级为真正的语言:让人读得懂,也让机器跑得了。从 0/1 到对象,语言层次的每一次跃升,都让“人想出的办法”更容易变成“机器能执行的程序”。
每节末尾附“本节小结”;每节配 2 道课堂选择题(A/B/C/D),共 10 题,参考答案见页面底部。
| 小节 | 核心问题 | 关键概念 |
|---|---|---|
| 6.1 历史回顾 | 语言如何从 0/1 进化到接近人类语言? | 机器/汇编/高级语言 · 翻译器 · 四大范型 |
| 6.2 传统的程序设计概念 | 程序由哪些基本成分构成? | 变量 · 数据类型 · 赋值 · 控制语句 |
| 6.3 过程单元 | 函数如何实现模块化与复用? | 形参/实参 · 按值/按引用传递 · return |
| 6.4 语言实现 | 高级语言怎样变成机器可执行的形式? | 词法分析 · 语法分析 · 代码生成 |
| 6.5 面向对象程序设计 | 如何用对象组织软件系统? | 类与对象 · 构造器 · 继承/多态/封装 |
| *6.6 / *6.7 并发与说明性 | 顺序之外还有哪些程序组织方式? | 并发活动 · 说明性程序设计 |
程序设计语言的目标:让算法的表达既便于人理解,又便于转换为机器语言指令。
点击下面的标签,看“把寄存器 5 与 6 的和存入寄存器 7”在三代语言中分别长什么样——体会抽象层次的跃升。
范型 paradigm:构建程序的风格或方法论。许多现代语言是多范型的(如 Python 同时支持命令式、函数式、面向对象)。
语言三代:机器语言(数字编码)→ 汇编语言(助记符 + 汇编器)→ 高级语言(机器无关,需翻译器/解释器)。
四大范型:命令式、说明性、函数式、面向对象;几乎所有语言都能表达任何算法,但清晰度与可读性不同。
高级语言的抽象分层:简单(常量/字面量/变量)→ 中等复杂(语句/表达式/控制结构)→ 深奥(过程单元/模块/库)。
变量(variable):与存储位置相关联的名字——位置里的值随程序执行而改变。数据类型(data type)= 编码方式 + 可执行的操作。
| 数据类型 | English | 编码方式 / 可执行的操作 |
|---|---|---|
| 整型 | integer | 整数,常以二进制补码记数法存储;算术运算与大小比较 |
| 浮点型(实型) | float / real | 可含小数,以浮点记数法存储;操作与整型一致 |
| 布尔型 | Boolean | 值仅为真或假;用于 if (LimitExceeded) 之类的条件判断 |
程序语句分三类:声明语句(定义术语)、命令语句(描述算法步骤)、注释(解释给人看)。
变量 = 名字 + 存储位置;数据类型 = 编码方式 + 可执行的操作(整型/浮点型/布尔型);数据结构是数据的概念形态,数组用索引访问元素。
函数是命令式语言获得程序模块化表示的主要技术——完成一个任务的一组指令,可用作其他程序单元的抽象工具。
参数(parameter):函数内部的通用项——形参像函数体上的“槽口”,调用时实参被塞入槽口,按位置一一对应。
同一个函数 Modify(n)(把形参加 10),分别以两种方式传递变量 x = 5。点击“执行调用”,观察调用单元的 x 是否被改变。
函数 = 完成一个任务的一组指令;调用 = 控制权转移,执行完返回。形参是函数内的通用“槽口”,实参在调用时按位置塞入。
按值传递改副本,按引用传递改原件;有返回值的函数用 return 送回计算结果。通用性来自参数,而非写死的对象。
翻译 translation:把程序从一种语言转换成另一种语言。源程序 source program →(翻译)→ 目标程序 object program。
点击“下一步”,看一条赋值语句如何依次经过词法分析、语法分析、代码生成,最终变成机器指令。
翻译三活动:词法分析(认标记)→ 语法分析(组语句、建语法分析树)→ 代码生成(产出机器指令并优化),三者交织进行。
IDE 把编辑器、翻译器、调试工具组合成一个包:面对需要修改和测试的程序,可以在编辑器与测试工具之间轻松来回切换。
OOP:软件系统看作对象的集合——每个对象执行与自己相关的动作并响应其他对象的请求,相互作用共同解题。
OOP 四支柱:类是模板、对象是实例;构造器自动初始化;继承复用特征,多态同调异应,封装隐藏内部。
*6.6 并发 = 同时执行多个任务;*6.7 说明性 = 描述目标而非步骤,形式逻辑是底层引擎。
先独立完成上面的练习,再来这里核对——错题对应的小节值得回看一遍。
| 小节 | 题号 | 答案 | 一句话解析 |
|---|---|---|---|
| 6.1 | Q1 | C | 汇编器(assembler)把助记符形式的汇编语言转换为机器语言。 |
| 6.1 | Q2 | D | 说明性范型:描述“要解决什么问题”,通用求解算法负责“怎么解”。 |
| 6.2 | Q3 | C | 声明语句定义程序后面要用的术语,赋初值不改变其声明本质。 |
| 6.2 | Q4 | B | 数据类型 = 编码方式 + 可执行的操作,二者缺一不可。 |
| 6.3 | Q5 | B | 按值传递只给函数一个副本,原件受保护。 |
| 6.3 | Q6 | D | return 终止函数并把值送回调用处。 |
| 6.4 | Q7 | B | 词法分析认标记 → 语法分析组语句 → 代码生成产指令。 |
| 6.4 | Q8 | C | 词法分析器逐个符号读源程序,识别并分类标记,跳过注释。 |
| 6.5 | Q9 | B | 类是模板,对象是实例;A 说反了。 |
| 6.5 | Q10 | C | 封装 = 限制对内部属性的访问;私有特性只有对象自己能访问。 |
从 0/1 到对象:语言层次的每一次跃升,都让“人想出的办法”更容易变成“机器能执行的程序”。
| 小节 | 一句话总结 | 关键术语 |
|---|---|---|
| 6.1 历史回顾 | 机器语言 → 汇编语言 → 高级语言;四大范型组织程序 | mnemonic · compiler · paradigm |
| 6.2 传统概念 | 声明/命令/注释三类语句;变量、类型、数组、赋值 | variable · data type · array |
| 6.3 过程单元 | 函数实现模块化;形参/实参;按值与按引用传递 | function · parameter · return |
| 6.4 语言实现 | 词法分析 → 语法分析 → 代码生成;IDE 一体化开发 | token · parse tree · IDE |
| 6.5 面向对象 | 类是模板对象是实例;继承、多态、封装 | class · object · encapsulation |
| *6.6 / *6.7 | 并发同时执行多任务;说明性描述“是什么” | concurrency · declarative |
重点名词双语对照 + 一句话释义;建议结课时自查一遍。