软件设计师:程序设计语言基础知识
基本概念
- 低级语言:0、1组成的机器指令序列和汇编语言
 - 高级语言:程序设计语言,如Java(编译型),C++(编译型),Python(解释型)等
 

- 解释器:翻译时不生成独立的目标程序,解释程序和源程序都参与程序运行过程
 - 编译器:翻译时独立生成目标程序,源程序和编译程序不再参与目标程序的运行过程 如:javac->class
 
程序设计语言的控制成分
顺序结构、选择结构、循环结构
源程序中数据必须具有类型,便于为数据合理分配存储单元,便于对参与表达式计算的数据对象进行检查,便于规定数据对象的取值范围及能够进行的运算。
传值调用与传地址调用

- 传值调用:实参的值传递给形参
 - 传地址调用:实参的地址传递给形参,实参不能是常量、表达式(无地址),可以实现形参和实参数据的双向传递
 
例题:









答案 BD A D B D D B A C
编译程序基本原理
工作阶段


中间代码生成、代码优化可省略
源程序 -> 词法分析 -> 记号流 -> 语法分析 -> 分析树(语法树) -> 语义分析
符号表管理

词法分析
对源程序从前到后逐个字符扫描,识别一个个“单词”符号,如关键字、标识符、常数、运算符、分隔符等。
词法错误:非法字符,关键字/标识符拼写错误


语法分析
对各条语句的结构进行合法性分析
语法错误:缺括号/分号、if/elif不匹配、变量未声明


语义分析
对数据类型进行分析和检查,不能发现动态语义错误,运行时才能检测出来
语义错误:死循环(动态)、零除数(动态)、数据类型不匹配


中间代码生成

目标代码生成

正规式
词法分析的工具
| 正规式 | 正规集 | 
|---|---|
| Ab | 字符串ab构成的集合 | 
| a|b | 字符串a、b构成的集合 | 
| a* | 由0个或多个a构成的字符串集合 | 
| (a|b)* | 所有字符a和b构成的串的集合 | 
| a(a|b)* | 以a为首字符的a、b字符串的集合 | 
| (a|b)*abb | 以abb结尾的a、b字符串的集合 | 
*:代表0次或多次
| : 代表左边或者右边

有限自动机
词法分析的工具


ε : 无须识别直接通过


上下文无关文法
语法分析的工具

大写字母是非终结符,小写字母是终结符号,每条表达式都称为产生式

中缀后缀式

中序遍历 -> 中缀式  左根右
后序遍历 -> 后缀式  左右根
后缀式又称为逆波兰式



                
            
        
浙公网安备 33010602011771号