计算机中级-数据库系统工程师-程序语言基础知识

一、程序语言基础知识
1. 本节主要考点
  • 主要考点:1)编译程序和解释程序;2)程序语言的数据成分和控制成分;3)编译程序的过程;4)中缀、前缀与后缀表达式
2. 程序语言概述
1)低级语言和高级语言
  • 低级语言:包括机器语言和汇编语言,面向机器的语言,格式取决于计算机指令。特点:难以理解、可读性差、程序设计效率低
  • 高级语言:如Java、C、Python等,面向应用的语言。特点:接近人类语言、便于理解、提高程序设计效率,但需要翻译才能被计算机识别
2)汇编、解释、编译
  • 汇编语言处理:需要汇编程序翻译成目标程序后执行
  • 高级语言处理:需要解释程序或编译程序进行翻译后运行
  • 核心区别:高级语言不能直接被机器识别,必须转换为机器可理解的形式
3)编绎程序和解释程序
  • 解释程序:
    • 工作方式:直接解释执行源程序或翻译成中间代码后执行
    • 执行特点:按语句顺序逐条翻译并立即执行(边解释边执行)
    • 示例:100行代码会翻译一条执行一条
  • 编译程序:
    • 工作方式:将源程序翻译成目标程序后再执行
    • 执行特点:分为编译阶段(翻译)和运行阶段(执行)
    • 示例:100行代码会全部翻译后再一次性执行
4)编绎和解释的区别
  • 编译方式:
    • 执行过程:运行的是目标程序,源程序和编译程序不再参与执行
    • 特点概括:"一次编译,多次执行"
  • 解释方式:
    • 执行过程:解释程序和源程序全程参与运行,控制权在解释程序
    • 特点概括:不生成独立目标程序,边翻译边执行
5)编绎和解释的比较
  • 效率比较:
    • 编译优势:可能取得更高效率(一次编译多次执行)
    • 解释劣势:重复执行需要重复解释(执行10次需解释10次)
  • 灵活性:
    • 解释优势:比编译方式更灵活
    • 可移植性:解释方式可移植性更好
  • 应用实例:
    • 编译语言:Java、C等高级语言通常采用编译方式
    • 解释语言:嵌入式JavaScript等要求可移植性的语言采用解释方式
3. 程序语言的数据成分
1)常量和变量
  • 定义: 按照程序运行时数据的值能否改变,将数据分为常量和变量。
  • 常量: 值固定,不能改变,如1、2、3、π。
  • 变量: 值可以改变,如a=1后,a的值可以变为2。
2)全局变量和局部变量
  • 全局变量: 作用域范围为整个程序,存储空间在程序运行过程中一般不改变。
  • 局部变量: 作用域范围仅限于某个函数内部,存储单元可以动态改变。
3)数据类型
  • 基本类型: 整型、字符型、实型、布尔类型。
  • 特殊类型: 空类型。
  • 用户定义类型: 枚举类型。
  • 构造类型: 数组、结构、联合。
  • 指针类型:type *。
  • 抽象数据类型: 类类型。
4. 程序语言的控制成分
1)顺序结构
  • 定义: 计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到序列的最后一个操作。
  • 示例: 如a=1, b=2, c=a+b,程序从上往下依次执行。
2)选择结构
  • 定义: 提供了在两种或多种分支中选择其中一个的逻辑。
  • 示例: 如if-else语句,根据条件选择执行不同的分支。
3)循环结构
  • 定义: 描述了重复计算的过程,通常由三部分组成:初始化、循环体和循环条件。
  • 组成: 初始化部分设置循环的初始状态,循环体包含重复执行的代码,循环条件决定循环是否继续。
  • 示例: 如do-while语句,满足条件时循环执行代码块。
5. 编译过程
1)词法分析
  • 任务: 对源程序从前到后(从左到右)逐个字符地扫描,识别出一个个"单词"符号。
  • 单词符号: 程序设计语言的基本语法单位,如关键字、标识符、常数、运算符和标点符号等。
  • 举例: 在int a, b, c;中,int、a、,、b等都是单词符号。
2)语法分析
  • 任务: 根据语言的语法规则,分析单词串是否构成合法的表达式、语句和程序等基本语言结构,同时检查和处理语法错误。
  • 结果: 如果源程序没有语法错误,语法分析后能正确构造出语法树。
  • 举例: c = a + b;是一个合法的语句,但c = AB +;则不是。
3)语义分析
  • 任务: 分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供代码生成阶段使用。
  • 主要工作: 进行类型分析和检查。
  • 举例: 整除取余运算符只能对整型数据进行运算,若运算对象为浮点数,则为类型不匹配错误;除数不能为零,否则在语义分析阶段可检查出来。
4)中间代码生成
  • 任务: 根据语义分析的输出生成中间代码。
  • 常用中间代码: 后缀式(逆波兰式)、四元式(三地址码)、树形表示。
5)代码优化
  • 原因: 编译器将源程序翻译成中间代码的过程是机械的,效率较差,需进行优化以生成高效的目标代码。
  • 优化时机: 可在中间代码生成阶段或目标代码生成阶段进行。
6)目标代码生成
  • 任务: 把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码和汇编指令代码。
  • 特点: 此阶段工作与具体机器密切相关。
7)符号表管理
  • 作用: 记录源程序中各种符号的必要信息,辅助语义的正确性检查和代码生成。
  • 操作: 需对符号表进行快速有效的查找、插入、修改和删除等操作。
  • 举例: 符号表可能记录变量名、变量类型和变量值等信息,如变量a的类型为整型,值为1。
8)出错处理
  • 错误分类: 静态错误和动态错误。
    • 动态错误: 发生在程序运行时,如变量取零时作除数、引用数组下标错误等。
    • 静态错误: 编译阶段发现的程序错误,分为语法错误和静态语义错误。
      • 语法错误: 单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等。
      • 静态语义错误: 语义分析时发现的运算符和运算对象类型不合法等错误。
6. 中缀、前缀与后缀表达式
1)中缀、前缀与后缀表达式的定义
  • 中缀表达式: 是我们通常所使用的表达式,运算符位于操作数中间,如( a + b ) * c - d。
  • 前缀表达式(波兰式): 运算符位于操作数前面,不使用括号,如 -*+abcd。
  • 后缀表达式(逆波兰式): 运算符位于操作数后面,不使用括号,如a b + c ^ { 2 } d -。
2)三种表达式之间的转换
  • 中缀表达式转前缀表达式
    • 步骤:
      • 加括号: 按计算顺序给中缀表达式全部加上括号,如( ( a + b ) * c - d )。
      • 移运算符: 把每一对括号内的运算符移到括号前面,如-(*(+(ab)c)d)。
      • 去括号: 去掉所有括号,得到前缀表达式,如 -*+abcd。
  • 中缀表达式转后缀表达式
    • 步骤:
      • 加括号: 按计算顺序给中缀表达式全部加上括号,如( ( a + b ) * c - d )。
      • 移运算符: 把每一对括号内的运算符移到括号后面,如((ab)+c)*d)-。
      • 去括号: 去掉所有括号,得到后缀表达式,如ab+c*d-。
7. 传值调用和引用调用
1)传值调用
  • 定义: 信息传递是单向的,只能将实参的值传递给形参,形参不能再将值传递给实参。
  • 实参类型: 可以是常量(表达式),也可以是变量(数组元素)。
  • 举例:
  • 在此例中,2和3是实参,x和y是形参,形参接收实参的值,但形参的值不能传回给实参。
2)引用调用
  • 定义: 形参名实际上是实参的别名,被调函数中对形参的访问和修改实际上就是对实参的访问和修改,实现双向传递。
  • 参数类型: 只能是变量(数组元素),不能是常量(表达式)。
  • 举例:
  • 在此例中,a和b是实参,调用swap函数后,a和b的值会被交换,因为传的是地址,形参和实参实际上是同一个变量的两个别名。
二、知识小结

|-------------|--------------------------------------------------------------------------|-------------------------------------------|------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 程序语言分类 | 低级语言(机器指令)与高级语言(如JAVA/C)的区别:可读性、执行效率、转换方式(汇编/解释/编译) | 低级语言直接面向机器,高级语言需转换;编译与解释执行机制差异 | ⭐⭐ |
| 编译与解释程序 | - 编译:一次性翻译为目标程序,多次执行(高效) - 解释:逐条翻译并立即执行(灵活,可移植性好) | 编译不参与运行时,解释需全程参与;JavaScript常用解释,C/JAVA用编译 | ⭐⭐⭐ |
| 程序语言数据成分 | - 常量/变量作用域(全局/局部) - 数据类型:基本类型(整型/布尔)、构造类型(数组/结构体)、抽象类型(类) | 局部变量存储动态分配;类型不匹配错误(如整型运算浮点数) | ⭐⭐ |
| 程序控制结构 | 顺序结构(依次执行)、选择结构(if-else)、循环结构(while/do-while) | 循环三要素:初始化、循环体、循环条件 | ⭐ |
| 编译过程六个阶段 | 1. 词法分析(识别单词) 2. 语法分析(检查句子合法性) 3. 语义分析(类型检查) 4. 中间代码生成 5. 代码优化 6. 目标代码生成 | 前端(1-4)与语言相关,后端(5-6)与机器相关;符号表管理贯穿全程 | ⭐⭐⭐⭐ |
| 中缀/前缀/后缀表达式 | - 中缀:运算符居中(a+b) - 前缀:运算符在前(+ab) - 后缀:运算符在后(ab+) 转换方法:加括号→移动运算符→去括号 | 2018年考过转换题;优先级括号是关键 | ⭐⭐⭐ |
| 参数传递方式 | - 传值调用:单向传递(实参→形参) - 引用调用:双向传递(传地址,形参为实参别名) | 常量只能传值,变量可传引用;近年未考但需区分机制 | ⭐⭐ |
| 教材重点章节 | - 必读:42-52页(语言概述/数据控制成分) - 重点:54-58页(编译原理) - 跳过:文法形式描述(54页后)、汇编程序原理 | 近年考题偏教材原话,随机摘抄填空 | ⭐⭐ |

三、真题练习
1. 例题:算术表达式后缀式
  • 转换方法:
    • 第一步:按运算优先级添加括号,如(x−((y+c)∗8))
    • 第二步:将运算符移到对应括号外,如((yc+)8∗)
    • 第三步:去掉所有括号得到后缀式xyc+8∗−
  • 解题技巧:
    • 运算符优先级:括号>乘除>加减
    • 结合性遵循从左到右原则
  • 答案:D选项xyc+8∗−
2. 例题:解释程序和编译程序
  • 核心区别:
    • 编译程序:生成源程序的目标程序,执行时直接运行目标程序
    • 解释程序:不生成目标程序,逐行解释执行
  • 典型特征:
    • 编译型语言执行效率更高
    • 解释型语言具有更好的跨平台性
  • 答案:C选项(仅编译程序生成目标程序)
3. 例题:传值调用与引用调用
  • 传值调用:
    • 数据流向:仅实参→形参单向传递
    • 参数类型:允许变量、常量、表达式
    • 内存操作:创建形参副本
  • 引用调用:
    • 数据流向:形参与实参双向传递
    • 参数限制:必须为变量(不可为常量/表达式)
    • 实现原理:传递内存地址
  • 答案:C选项(②③正确)
4. 例题:编译过程变量存储单元地址
  • 地址类型:
    • 逻辑地址:编译阶段分配的地址空间
    • 物理地址:运行时实际内存地址
  • 转换时机:程序运行时由系统完成转换
  • 答案:A选项(逻辑地址)
5. 例题:动态网页处理程序设计语言
  • 语言特性:
    • PHP:专为Web开发设计,支持服务器端脚本
    • HTML:静态页面标记语言
    • LISP:函数式编程语言
    • JAVA/C++:通用编程语言
  • 选择依据:动态网页需要服务器端处理能力
  • 答案:C选项(PHP)
6. 例题:引用调用方式定义
  • 本质特征:传递实参的内存地址
  • 实现效果:形参修改直接影响实参
  • 对比记忆:与传值调用形成鲜明对比
  • 答案:B选项(传递地址)
7. 例题:编译过程符号表
  • 符号表功能:
    • 记录标识符的类型信息
    • 存储变量的特征属性
    • 支持编译各阶段查询
  • 典型内容:变量名、数据类型、作用域等
  • 答案:A选项(符号表)
8. 例题:程序设计语言叙述判断
  • 正确叙述:
    • 基本成分包含数据、运算、控制和传输(A)
    • 高级语言不依赖具体硬件(B)
    • 常量值运行时不可变(D)
  • 错误叙述:
    • 局部变量值运行时不可变(C错误)
  • 易错点:混淆常量与变量的可变性
  • 答案:C选项(错误选项)
9. 例题:语法树
  • 题目解析
    • 考查表达式(a+(b−c))×d的语法树表示
    • 运算优先级分析:
      • 先计算括号内b−c
      • 再计算a+(b−c)
      • 最后进行乘法运算×d
    • 选项分析:
      • A选项错误:表示(a+b)×(c−d)
      • B选项正确:符合运算优先级顺序
      • C选项错误:表示(a−(b+c))×d
    • 答案: B
    • 考点: 语法树的构建需要严格遵循运算符优先级规则
10. 例题:全局变量存储空间
  • 题目解析
    • 存储区域分类:
      • 代码区
      • 静态数据区
      • 动态数据区(包含栈区和堆区)
    • 全局变量特性:
      • 存储空间在程序运行过程中一般不变
      • 分配在静态数据区
    • 局部变量特性:
      • 存储单元可动态改变
      • 分配在动态数据区(栈区或堆区)
    • 答案: B(静态数据区)
    • 参考依据: 教材47页关于全局变量和局部变量的存储分配说明
    • 记忆点: "静态数据存全局,动态数据存局部"
11. 例题:高级程序设计语言实现
1)编译与解释的区别
  • 编译程序特点:将高级语言源程序编译成目标程序后,用户程序运行时只需运行目标程序,源程序和编译程序都不再参与运行控制。
  • 解释程序特点:直接解释执行源程序,解释程序需要全程参与用户程序的运行控制。
2)例题解析
  • 题目解析
    • 选项分析
      • A选项:正确,符合编译和解释的基本区别
      • B选项:错误,教材未限定解释程序只能用汇编语言编写
      • C选项:错误,教材未说明编译方式不进行优化
      • D选项:错误,未在讲解中提及相关内容
    • 答案:A
    • 解题技巧:使用排除法,优先选择明确学过的知识点作为正确答案
12. 例题:脚本语言
1)脚本语言特性
  • 通用性:脚本语言(如JavaScript)不是通用的程序设计语言,通用程序设计语言包括C、Java、C++等。
  • 应用场景:不适合用于系统级程序开发,主要用于实现网页动态效果等轻量级应用。
  • 实现方式:主要采用解释方式实现,因为需要即时执行(如网页加载时立即解释执行)。
  • 函数支持:脚本语言中可以定义和调用函数,如JavaScript支持函数定义和调用。
2)例题解析
  • 题目解析
    • 选项分析
      • A选项:错误,脚本语言不是通用的程序设计语言
      • B选项:错误,脚本语言不适合系统级开发
      • C选项:正确,脚本语言主要采用解释方式实现
      • D选项:错误,脚本语言支持函数定义和调用
    • 答案:C
    • 考点:脚本语言的基本特性和实现方式
13. 例题:编译器的常见处理方式
  • 题目解析
    • 中间代码类型:现代编译器常将高级语言源程序转化为中间代码,常见形式包括后缀式、三地址码和树等
    • 教材依据:教材57页明确指出,最常用的中间代码是与汇编语言指令相似的三地址码
    • 实现方式:三地址码通常采用四元式实现
    • 答案:B(三地址码)
14. 例题:用户定义标识符
  • 题目解析
    • 可命名对象:
      • 变量:可直接由程序员命名(如x、sum等)
      • 函数:定义时可自定义名称(如求和函数命名为sum,交换函数命名为sw)
      • 数据类型:特定用户定义类型可命名,如枚举类型(参见教材47页用户定义类型部分)
    • 不可命名对象:
      • 关键字/保留字:由语言预定义,用户不可修改
      • 注释:直接书写内容,无需命名
    • 枚举类型特点:属于用户自定义数据类型,在Java/C++中可由用户命名
    • 答案:应选择变量、函数、数据类型(具体选项根据题目设置)
15. 例题:编译阶段划分
1)例题:标识符命名对象
  • 题目解析
    • 常见命名对象:变量、函数、数据类型是用户可定义的标识符对象
    • 非命名对象:关键字/保留字(语言预定义)、注释(非程序对象)
    • 答案:B(②③④)
2)例题:编译阶段判断语句形式
  • 题目解析
    • 词法分析:识别单词符号(如int识别为保留字,a识别为变量)
    • 语法分析:组合单词为表达式/语句(如"int a,b;"识别为完整语句)
    • 语义分析:分析语句含义(如类型匹配检查)
    • 考点:形式正确性判断属于语法分析阶段
    • 答案:B
3)例题:后缀式表示计算
  • 题目解析
    • 后缀式特点:无需括号,运算符在操作数后(如ab+表示a+b)
    • 求值方法:使用栈结构,遇操作数入栈,遇运算符弹出栈顶元素运算
    • 转换步骤:
      • 给中缀式加括号:(a−(b∗(c+d)))
      • 运算符移到括号外:(a(b(cd)+)∗)−
      • 去掉括号:abcd+∗−
    • 语法树构建:从最内层运算开始(先c+d,再b*,最后a-)
    • 答案:C(栈)、D(abcd+∗−)、D(对应语法树)
16. 例题:编译和解释
  • 题目解析
    • 编译过程:源代码→目标代码(正确)
    • 解释过程:边解释边执行(非完整转换)
    • 执行效率:编译方式更快(已生成目标代码直接执行)
    • 易错点:解释语句的转换对象描述错误
    • 答案:A(①③)
17. 例题:函数调用控制
  • 题目解析
    • 实现原理:函数调用遵循"先进后出"原则(类似栈结构)
    • 嵌套调用示例:
    • 错误选项:
      • 哈希表:用于快速查找
      • 符号表:存储编译期符号信息
      • 队列:先进先出结构
    • 记忆点:函数调用栈与数据结构栈特性一致
    • 答案:C
18. 例题:高级设计语言
1)语言控制结构
  • 题目解析
    • 基本结构:顺序、选择(if/else)、循环(while/for)
    • 错误选项:
      • 递归:算法实现方式
      • 递推:数学推导方法
      • 函数:程序组织单元
    • 答案:A
2)程序设计语言成分
  • 题目解析
    • 基本成分:数据、运算、控制、传输(教材P46)
    • 数据类型分类:
      • 枚举:用户定义类型(需显式声明取值)
      • 数组:构造类型(由基本类型组合而成)
    • 考点:教材P47原知识点
    • 答案:C(传输)、B(用户定义)、C(构造)
19. 例题:程序设计语言
  • 语用概念:表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响(教材第43页黑体字第三段)
  • 语境组成:指理解和实现程序设计语言的环境,包括编译环境和运行环境
  • 考点提示:2020年后出题趋势更注重教材原话的概念性知识考察
20. 例题:程序编译过程
1)编译阶段分析
  • 类型检查阶段:在程序编译过程中,执行类型分析和检查是在语义分析阶段完成(教材第56页原话)
  • 编译解释区别:
    • 编译:将高级语言源代码转换成目标代码的过程
    • 解释:逐行执行源代码不生成目标代码
    • 速度比较:编译方式下用户程序运行速度更快
2)程序设计语言成分
  • 基本成分:包括数据、运算、控制和传输
    • 数据分类:
      • 枚举属于用户定义类型
      • 数组属于构造类型
  • 控制结构:包含顺序、选择(即分支)和循环三种基本结构
  • 函数调用机制:函数调用和返回控制是通过栈数据结构实现的
21. 例题:算术表达式处理
  • 转换方法:
    • 第一步:给所有运算部分加括号。例如78+21×(36-34)先给36-34加括号,再给21×(...)加括号,最后给78+...加括号
    • 第二步:将运算符移到对应括号的后面。如(36-34)变为(36\ 34\ -)
    • 第三步:去掉所有括号得到后缀表达式。最终结果为78\ 21\ 36\ 34\ -\ *\ +
  • 计算工具:计算机处理后缀表达式时使用栈(stack)数据结构进行计算
  • 答案:第一空选B(78 21 36 34-*+),第二空选A(栈)
22. 例题:系统为全局变量分配的存储空间
  • 存储特性:
    • 全局变量:系统分配的存储空间在程序运行过程中一般不变
    • 局部变量:分配的存储单元可以动态改变
  • 分类依据:
    • 按作用域分为全局变量和局部变量
    • 按运行时的值可变性分为常量和变量
  • 答案:选C(全局变量)
23. 例题:C语言函数说法判断
  • 正确说法:
    • 函数是具有独立功能的程序单元(如专门实现加法运算的函数)
    • 需要先声明后引用
    • 定义包含函数首部和函数体
  • 错误说法:
    • 函数不允许嵌套定义(教材第50-51页明确指出)
  • 答案:选D(函数允许嵌套定义)是不正确的
24. 例题:脚本语言判断
  • 关键特征:
    • 解释性:无需编译直接执行
    • 面向对象:支持类和对象
    • 动态类型:变量类型运行时确定
  • 典型代表:
    • Ruby:教材第44页明确说明其符合全部特征
    • JavaScript:虽然是脚本语言但不完全符合题目所有特征
  • 易错点:容易因熟悉JavaScript而误选
  • 答案:选C(Ruby)
四、程序控制结构
1. 选择结构
  • 基本概念:在两种或多种分支中选择其中一个的逻辑结构
  • 类型对比:
    • 顺序结构:按照代码书写顺序依次执行
    • 选择结构:通过条件判断选择执行路径
    • 循环结构:在条件满足时重复执行特定代码块
    • 函数:不属于基本控制结构
  • 典型考题:2023年第22题正确答案为B(选择)
2. 枚举类型
  • 分类依据:按照数据组织形式的不同
  • 类型归属:
    • 基本类型:整型、字符型、实型和布尔类型
    • 用户定义类型:枚举类型(明确说明"枚举属于用户定义类型")
    • 构造类型:数组、结构、联合
    • 指针类型:type *
    • 抽象数据类型:类类型
  • 典型考题:2023年第23题正确答案为B(用户定义)
五、编译过程
1. 词法分析
  • 核心任务:逐个字符扫描源程序,识别"单词"符号
  • 处理对象:
    • 关键字/保留字
    • 标识符
    • 常数
    • 运算符
    • 标点符号
  • 输出结果:构成语法分析的基本单位
2. 语法分析
  • 核心任务:分析单词串是否构成合法语法结构
  • 主要工作:
    • 验证表达式、语句的合法性
    • 检查和处理语法错误
    • 构造语法树(无语法错误时)
  • 阶段关系:在词法分析基础上进行
六、程序语言数据成分
1. 变量分类
  • 按可变性:
    • 常量:值不可变
    • 变量:值可变
  • 按作用域:
    • 全局变量:存储空间固定
    • 局部变量:存储单元动态分配
2. 例题解析
  • 题目22-23:
    • 语法:表示语言记号和使用者关系(A正确)
    • 语境:包括开发环境和运行环境(A正确)
  • 题目24:
    • 类型检查和语义分析阶段执行(C正确)
  • 解题要点:
    • 区分语法分析和语义分析阶段
    • 注意语境包含的两种环境类型
七、知识小结

|-------------|----------------------------------------------------------|---------------------|------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 中缀表达式转后缀表达式 | 1. 按运算优先级加括号 2. 运算符移到括号外 3. 去掉所有括号 例:x-y+c*8 → xyc+8*- | 括号处理顺序和运算符位置易错 | ★★★ |
| 编译与解释程序区别 | - 编译:生成目标程序,执行效率高 - 解释:逐行解释执行,不生成目标程序 | 编译程序是否参与运行控制(编译不参与) | ★★ |
| 函数调用方式 | - 传值调用:单向传递,实参可为变量/常量 - 引用调用:双向传递,实参必须为变量 | 引用调用下常量/表达式不可用 | ★★★ |
| 变量存储地址分配 | 编译时为变量分配逻辑地址,运行时转为物理地址 | 逻辑地址与物理地址的转换阶段 | ★★ |
| 动态网页处理语言 | PHP是动态网页处理的典型语言(对比HTML/LISP) | 早期考题,需注意现代技术演进 | ★ |
| 符号表作用 | 存储编译过程中符号的类型、特征等信息 | 符号表与中间代码(如3地址码)的区别 | ★★ |
| 程序设计语言成分 | 基本成分:数据、运算、控制、传输 - 枚举:用户定义类型 - 数组:构造类型 | 枚举与数组的类型归属易混淆 | ★★ |
| 语法分析阶段 | 判断语句形式是否正确(词法分析仅识别单词符号) | 与语义分析(类型检查)的区分 | ★★★ |
| 后缀表达式求值 | 使用栈结构:遇操作数入栈,遇运算符弹出计算 | 栈的先进后出特性匹配函数调用 | ★★★ |
| 全局变量存储 | 全局变量在静态数据区分配,空间固定 | 局部变量存储在动态数据区(栈/堆) | ★★ |
| 脚本语言特性 | - 解释性执行(如JavaScript/PHP) - 不生成目标程序,适合轻量级任务 | 脚本语言非通用程序设计语言 | ★★ |
| 中间代码形式 | 常用3地址码(四元式实现),类似汇编指令 | 中间代码与目标代码的差异 | ★★ |
| 函数调用控制 | 通过栈实现嵌套调用的返回控制(后进先出) | 栈与队列(先进先出)的应用场景对比 | ★★★ |
| 程序控制结构 | 顺序、选择(分支)、循环 | 选择结构实现多分支逻辑 | ★ |
| 语义分析任务 | 类型分析和检查(如变量类型匹配) | 与语法分析(形式正确性)的区分 | ★★★ |

相关推荐
Whoami!4 小时前
⋐ 17-1 ⋑ 软考高项 | 第 23 章:组织通用管理 [ 上 ]
软考·信息系统项目管理师·流程管理·人力资源·组织通用管理
Kethy__13 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
@insist12315 小时前
网络工程师-信道容量计算与 PCM 编码:数据通信核心原理及软考考点解析
网络·网络工程师·pcm·软考·软件水平考试
猹叉叉(学习版)1 天前
【系统分析师_知识点整理】 10.软件需求工程
笔记·需求分析·软考·系统分析师
haokan_Jia1 天前
3.31软考高项-每日5题
软件工程·软考·高项
编程小海浪1 天前
系统架构设计师备考资料
架构师·软考·软考架构师·2026软考
@insist1232 天前
数据库系统工程师-分布式数据库与数据仓库核心考点及应用体系
数据库·数据仓库·分布式·软考·数据库系统工程师·软件水平考试
CappuccinoRose2 天前
输入/输出及其控制 - 软考备战(五)
计算机·dma·软考·通道·中断·外设·程序查询
Whoami!2 天前
⋐ 15-2 ⋑ 软考高项 | 第 20 章:高级项目管理 [ 下 ]
软考·高项·信息系统项目管理师·量化项目管理