程序设计语言知识
有关程序语言的种类、特点、基本成分(函数、参数、语句和注释)及面向对象的基本概念等内容的出题频率比较高。
关于编译原理(有限自动机和正规式)的理论知识的考点,对我来说是难点。
程序语言
程序设计语言的多角度分类
一、 按语言级别分类
种类 | 优点 | 缺点 | |
---|---|---|---|
低级语言 | 机器语言、汇编语言 | 效率高 | 复杂、易出错且费时 |
高级语言 | 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 | t(int x): |
1 | f(int r, int s): |
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