有关程序语言的种类、特点、基本成分(函数、参数、语句和注释)及面向对象的基本概念等内容的出题频率比较高。

关于编译原理(有限自动机和正规式)的理论知识的考点,对我来说是难点。

程序语言

程序设计语言的多角度分类

一、 按语言级别分类

种类 优点 缺点
低级语言 机器语言、汇编语言 效率高 复杂、易出错且费时
高级语言 java、javascript等 易学、易用、易维护 效率低

二、 按照用户要求分类

种类 特点
过程式语言 FORTRAN、COBOL、ALGOL60等 有相应的计算过程
非过程式语言 表格的生成程序(RPG) 无法指定相应的计算过程

三、 按照应用范围分类

种类 特点
通用语言 FORTRAN、COBOL、ALGOL60、C++、java 目标非单一的语言
专用语言 API 目标单一的语言

注释:API第一个专用语言,用于数控机床加工

四、 按照使用方式分类

种类 特点
非交互式语言 FORTRAN、COBOL、ALGOL60、C++、java 语言成分不反映人机交互
交互式语言 BASIC语言 能反映人机交互

五、 按照成分性质分类

种类 特点
顺序语言 FORTRAN、COBOL 只含有顺序成分的语言
并发语言 ADA、MODULA 含有并发成分的语言
分布语言 MODULA 考虑分布计算要求的语言

六、 按照理论基础分类

种类 特点 适用范围
函数式语言 LISP 一类以λ演算为基础的语言 主要用于人工智能领域
逻辑型语言 PROLOG 一类以形式逻辑为基础的语言 适用于书写自动定理证明、专家系统和自然语言理解等问题的程序

考题1

下面关于编程语言的各种说法中,_____ 是正确的。(答案: B)

A. 由于C语言程序是由函数构成的,所以也属于函数型语言
B. Smalltalk、C++、Java、C#都是面向对象语言
C. 函数型语言适用于编写高速计算的程序,常用于超级计算机的模拟计算
D. 逻辑型语言是在Client/Server系统中用于实现负载分散的程序语言

考题2

开发专家系统时通过描述事实和规则由模式匹配得出结论,下面情况下适用的开发语言是 _____ 。(答案: D)

A. 面向对象语言             B. 函数式语言             C. 过程式语言             D. 逻辑式语言

考题3

关于汇编语言,一下叙述正确的是 _____ 。(答案: D)

A. 汇编语言源程序可以直接在计算机上运行
B. 将汇编语言源程序转换成目标程序的软件称为“解释程序”
C. 在汇编语言程序中,不能定义符号常量
D. 将汇编语言源程序翻译成机器语言程序的软件称为“汇编程序”

注:

函数型语言是以λ演算为基础的语言,代表为LISP,主要用于人工智能领域

逻辑型语言是以形式逻辑为基础的语言,适用于书写自动定理证明、专家系统和自然语言理解等问题的程序

用符号代替机器语言的二进制码把机器语言变成了汇编语言;汇编语言可以直接控制计算机上的硬件

汇编语言源程序不能直接在计算机上运行,必须翻译成机器语言才能执行

程序的基本成分

考题1

程序中常采用变量表示数据,变量具有名、地址、值、作用域以及生存期等属性。关于变量的叙述,_____ 是错误的。(答案: B)

A. 根据作用域规则,在函数中定义的变量只能在函数中引用
B. 在函数中定义的变量,其生存期为整个程序执行期间
C. 在函数中定义的变量不能与其所在函数的形参同名
D. 在函数中定义的变量,其存储单元在内存的栈区

考题2

函数调用时,基本的参数传递方式有传值与传地址两种 _____ 。(答案: C)

A. 在传值方式下,形参将值传给实参
B. 在传值方式下,实参不能是数组
C. 在传地址方式下,形参和实参间可以实现数据的双向传递
D. 在传地址方式下,实参可以是任意的变量和表达式

考题3

函数t()和f()的定义如下所示。若调用函数t()时传递给x的值为3
,并且调用函数f()时第一个参数采用传值的方式,第二个参数采用传引用的方式,则函数t()的返回值为 _____ 。(答案: B)

1
2
3
4
5
t(int x):
int a;
a = 3 * x - 1;
f(x, a);
return a + x;
1
2
3
4
5
6
f(int r, int s):
int x;
x = 2 * r + 1;
s = x * r;
r = s - x;
return;

A. 35             B.24             C. 22             D. 11

考题4

序言性注释是指在每个程序或模块开头的一段说明,起辅助理解程序的作用,一般包括:程序的表示、名称和版本号;程序功能描述;接口与界面描述;输入/输出数据说明;开发历史;与运行环境有关的信息等。下面叙述中不属于序言性注释的是 _____ 。(答案: C)

A. 程序对硬件、软件资源的要求
B. 重要变量和参数说明
C. 嵌入在程序中的SQL语句
D. 程序开发的原作者、审查者、修改者、编程日期等

注释:

序言性注释:位于每个模块的起始部位
功能性注释:嵌入在源程序内部,用来说明程序段或语句的功能,以及数据的状态

面向对象

面向对象语言

面向对象语言是以对象作为基本程序结构单位的程序设计语言,设计以对象为核心。对象是程序运行时刻的基本成分,语言中提供了类、继承等成分。

面向对象语言的发展有两个方向:

一、纯面向对象语言,如Smalltalk以及EIFFEL
二、混合型面向对象语言,即过程式语言及其他语言中加入类及继承等成分

考题1

下面中叙述错误的是 _____ 。(答案: C)

A. 面向对象程序设计语言可支持过程化的程序设计
B. 给定算法的时间复杂性与实现该算法所采用的程序设计语言无关
C. 与汇编语言相比,采用脚本语言编程可以获得更高的运行效率
D. 面向对象程序设计语言不支持对一个对象的成员变量进行直接访问

注释: 算法有时间复杂度和空间复杂度
时间复杂度跟执行过程中的基本操作执行次数有关

考题2

_____ 是面向对象程序设计语言不同与其他语言的主要特点,是否建立了丰富的 _____ 是衡量一个面向对象程序设计语言成熟与否的重要标志之一。(答案: A、B)

(1)A. 继承性             B.消息传递性             C. 多态性             D. 静态联编
(2)A. 函数库             B.类库                     C. 类型库             D. 方法库

考题3

在面向对象的语言中, _____ 。(答案: C)

A. 类的实例化是指为类的实例分配存储空间
B. 每一类都必须创建一个实例
C. 每一类只能创建一个实例
D. 类的实例化是指初始化类

脚本语言

脚本语言一般有相应的脚本引擎来解释执行,由于是一种解释性语言,所以一般需要解释器才能运行

考题1

在下面关于程序语言的叙述中,错误的是 _____ 。(答案: C)

A. 脚本语言属于动态的语言,其程序结构可以在运行中改变
B. 脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序
C. PHP和Javascript属于静态语言,其所以成分可在编译时确定
D. C语言属于静态语言,其所以成分可在编译时确定

注释:脚本语言一般是动态语言,通过解释器解释执行,不需要编译成目标程序
C和C++是典型的静态语言,需要编译后才能执行

考题2

_____ 属于系统软件,她直接执行高级语言源程序或与源程序等价的某种中间代码。(答案: D)

A. 编译程序             B. 预处理程序                     C. 汇编程序             D. 解释程序

注:用高级语言编写的源程序通常有两种方式在计算机上执行
一是解释方式,即计算机运行解释程序,人机交互好,调试程序时,可一边执行,一边修改,可让解释执行中间代码
二是编译方式,即运行编译程序,目标运行程序快,但是修改源程序后,必须重新编译以产生新的目标程序

考题3

编译高级语言源程序时,可发现源程序中的 _____ 错误。(答案: B)

A. 堆栈溢出             B. 变量未定义                     C. 指针异常             D. 数组元素下标越界

考题4

目前比较热门的软件开发工具,如VB、PB以及Delphi等都是可视化的,这些工具都是一种 _____ 程序语言。(答案: D)

A. 事件驱动             B. 逻辑式                     C. 函数式             D. 命令式

编译原理

有限自动机转换成正规式就是讲图形形式转换成表达式

每个句型对应一棵语法树
每棵语法树的叶子结点从左到右排列构成一个句型
每棵语法树的子树的叶子结点从左到右排列构成一个短语
每棵语法树的简单子树(只有父子两层结点)的叶子结点从左到右排列构成一个简单(直接)短语
每棵语法树的最左简单子树(只有父子两层结点)的叶子结点从左到右排列构成句柄
素短语是至少包含一个终结符的短语,但它不能包含其它素短语
最左推导:在每个推导过程中,总是首先考虑对当前最左边的非终结符号进行推导
最右推导:在每个推导过程中,总是首先考虑对当前最右边的非终结符号进行推导

考题1

文法G[S]:S->xSx|y所描述的语法是 _____ 。(答案: D)

A. (xyx)n             B. xyx                     C. xynx             D. xnyxn