软考备考——程序语言
程序语言设计这部分主要考察的是各种语言的基础语法,和一些和语言相关的知识。
通常考察较多的是python语言,对元祖、字典、等考察的较多。
此外还有一些没有学过的经常考察的知识点,比如
编译器和解释器的区别
解释器:
解释源程序时不生成独立的目标程序
解释程序和源程序要参与到程序的运行过程中
编译器:
编译时将源程序翻译成独立保存的目标程序
机器上运行的是与源程序等价的目标程序,
源程序和编译程序都不再参与目标程序的运行过程
还有传值调用和引用调用,通常考察的形式是给几个方法让我们来判断输出结果。
函数是程序模块的主要成分,它是一段具有独立功能的程序。函数的使用涉及3 个概念,即函数定义、函数声明和函数调用。
(1) 函数定义。包括函数首部和函数体两个部分。函数的定义描述了函数做什么和1么做。
(2)函数声明。函数应该先声明后引用。函数声明定义了函数原型。声明函数原型的目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义中的参数类型。函数原型可以使编译器检查源程序中对函数的调用是否正确。
(3) 函数调用。当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实现的功能时,便以函数名字进行调用,称为函数调用。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调两数:另一种是通过参数带回信息。西数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。
① 传值调用(Call by Value)。若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为传值调用。这种方式下形式参数不能向实际参数传递信息。在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参,本质上仍属于传值调用。这种方式实现了间接内存访问。
②引用调用(Call by Reference )。引用是 C++中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变。
最后就是编译基本原理
编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
解释方式:词法分析、语法分析、语义分析
要分清楚每一个代表的含意,在这一阶段是做什么的,经常会考察。
词法分析阶段
词法分析阶段的任务是对源程序从前到后(从左到右)逐个字符进行扫描,从中识别出一个个“单词”符号。“单词”符号是程序设计语言的基本语法单位,如关键词、标识符等。词法分析程序输出的“单词”常常采用二元组的方式,即单词类别和单词自身的值。
语法分析阶段
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。词法分析和语法分析本质上都是对源程序的结构进行分析。
语义分析阶段
语义分析阶段主要是审查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用,只有语法和语义都正确的源程序才能翻译成正确的目标代码。语义分析的一个主要工作是进行类型分析和检查。
中间代码生成阶段
中间代码是一种结构简单且含义明确的记号系统,可以有多种形式,它们的共同特征是与具体的机器无关。中间代码的设计原则主要有两点:一是容易生成;二是容易被翻译成目标代码。中间代码生成阶段的工作就是根据语义分析的输出生成中间代码。
语义分析和中间代码生成所依据的是语言的语义规则。
常见的中间代码有:后缀式、三地址码、三元式、四元式和树(图)等形式。
因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。
代码优化阶段
代码优化阶段的任务是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间。优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段进行。
目标代码生成阶段
目标代码生成阶段的任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与具体的机器密切相关。

浙公网安备 33010602011771号