主要议题:
掌握高级语言、低级语言的特点和应用场景;
程序编译,记词法、文法规则;
表达式主要考察中缀表达式和后缀表达式之间的相互转换;
传值与传址,分清特点,结合程序代码求值;
1.程序设计语言
机器语言:采用二进制方式编写的程序;
缺点:效率差(人手输入)、易出错;
优点:机器可以直接运行(运行效率高);
汇编语言:使用单词或字母缩写代替相关的指令;
汇编程序:用于写汇编语言的软件;
汇编语言程序:使用汇编语言写的代码;
高级语言种类较多,特点记下就行:
但凡产生目标程序,是编译器;比如.exe文件直接用就行,不需要它的源代码;
解释器不产生目标程序;需要源代码或者中间代码+解释器一起运行;
语义:语句运行时的含义;分为静态语义和动态语义;
语用:程序与用户之间的关系;
区分静态/动态类型语言:定义变量时,是否要明确它的数据类型;
2.程序编译
部分编译器没有中间代码生成、代码优化的过程,但是所有编译器都有词法分析、语法分析、语义分析、目标代码生成四个过程;
词法分析:从左往右扫描,识别一个个单词;
语法分析:查看代码是否符合语法规则;
语义分析:在编译过程中,只检查静态语义,即看看表达式的数据类型是否匹配,如int 1.0;错误;而动态语义是需要运行程序才能明确含义的;
符号表管理、出错处理,贯穿整个编译过程;
零除数、死循环都属于动态语义错误;
词法分析的语法,称为正规表达式;
全部掌握难度较大,只记住以下即可;
a|b 有a或b构成的字符串的集合;
(a|b)*:如空、a、b、aba、ab等;
自动机有两种类型,一种是确定的,一种是不确定的;
输入值后,从一个状态到另一个状态,则是确定的,反之则是不确定的;
考题一般要求将自动机转成正规式;
3.程序控制结构
考下列哪个不是程序控制结构;
下图仅考一次,看下就行;
4.表达式
5.传值和传址
定义函数时,为形参;
使用函数时,传给函数的值,即为实参;
传值调用会分配新的存储空间,给实际值的副本;
传址调用不会分配新的存储空间;