第2章 程序设计语言基础 大纲要求: ·汇编、编译、解释系统的基础知识和基本工作原理。 ●程序设计语言的基本成分一数据、运算、控制和传输以及过程(函数)调用。 ●各类程序设计语言的主要特点和适用情况。 2.1程序设计基础知识 2.1.1考点辅导 2.1.1.1程序设计语言的基本概念 1.低级语言和高级语言 1)低级语言 通常称机器语言和汇编语言为低级语言。机器语言是指用0、1字符串组成的机器指令 序列,是最基本的计算机语言:汇编语言是指用符号表示指令的语言。 2)高级语言 高级语言是从人类的逻辑思维角度出发、面向各类应用的程序语言,抽象程度大大提 高,需要经过编译成特定机器上的目标代码才能执行。这类语言与人们使用的自然语言比 较接近,大大提高了程序设计的效率。 2.编译程序和解释程序 尽管人们可以借助高级语言和计算机进行交互,但是计算机仍然只能理解和执行由0、 1序列构成的机器语言,因此高级程序语言需要翻译,担任这一任务的程序称为语言处理程 序。用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。 如果源程序是使用汇编语言编写的,则需要一个称为汇编程序的翻译程序将其翻译成目标 程序后才能执行。如果源程序是使用某种高级语言编写的,则需要相应的解释程序或编译 程序对其进行翻译,然后才能在机器上执行。 解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间 表示形式后再执行:而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机 上执行目标程序。 3.程序设计语言的定义 下面介绍关于程序设计语言的定义。 (1)语法。由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规
第 2 章 程序设计语言基础 大纲要求: 汇汇、汇编、解解解解解解解解解解解解解解解解。 程程程程程程解解解程程——数数、运运、控控解控控控控控程(函数)调调。 各各程程程程程程解各各各各解各调各各。 2.1 程序设计基础知识 2.1.1 考点辅导 2.1.1.1 程序设计语言的基本概念 1.低低程程解低低程程 1) 低低程程 通常称机器程程解汇汇程程为低低程程。机器程程是指调 0、1 字符串组程解机器指令 程列,是最解解解程运机程程;汇汇程程是指调符号表示指令解程程。 2) 低低程程 低低程程是从人各解逻辑思维角度出发、面向各各应调解程程程程,抽象程度大大提 低,需各经控汇编程各定机器上解目标代码才能执行。这各程程与人们使调解自然程程比 较接近,大大提低了程程程程解效率。 2.汇编程程解解解程程 尽管人们可控借助低低程程解程运机进行交互,但是程运机仍然只能解解解执行由 0、 1 程列构程解机器程程,因此低低程程程程需各翻编,担任这一任务解程程称为程程处解程 程。调某种低低程程或汇汇程程汇写解程程称为源程程,源程程不能直接在程运机上执行。 如果源程程是使调汇汇程程汇写解,则需各一个称为汇汇程程解翻编程程将其翻编程目标 程程后才能执行。如果源程程是使调某种低低程程汇写解,则需各相应解解解程程或汇编 程程对其进行翻编,然后才能在机器上执行。 解解程程也称为解解器,它或者直接解解执行源程程,或者将源程程翻编程某种中间 表示形式后再执行;而汇编程程(汇编器)则是将源程程翻编程目标程程程程,然后在程运机 上执行目标程程。 3.程程程程程程解定程 下面介绍关于程程程程程程解定程。 (1) 程法。由程程程程程程解解解符号组程程程中解各个程法程程(包括程程)解一组规
软件设计师考试同步辅导(上午科目)(第4版) 则,其中由基本符号构成的符号(单词)书写规则称为词法规则,由符号(单词)构成语法成分 的规则称为语法规则。程序语言的语法可通过形式语言进行描述。 (2)语义。程序语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动 态语义。 (3)语用。表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。 (4)语境。理解和实现程序设计语言的环境,包括编译环境和运行环境。 4.程序设计语言的分类 1)命令式程序设计语言 命令式程序设计语言是基于动作的语言,在这种语言中,计算被看作动作的序列。命 令式语言族开始于FORTRAN、PASCAL和C语言,体现了命令式程序设计的关键思想。 2)面向对象的程序设计语言 (1)对象。对象是指人们要进行研究的任何事物,它具有状态和操作。面向对象的语 言把状态和操作封装于对象实体之中,并提供一种访问机制。用户只能通过向允许公开的 操作提出要求,才能查询和修改对象的状态。 (2)类。类是面向对象语言必须提供的、由用户定义的数据类型,它将具有相同状态、 操作和访问机制的多个对象抽象成一个对象类。在定义类以后,属于这种类的一个对象被 称为类实例或类对象。 (3)继承。继承是面向对象语言的另一个基本要素。继承实现了一般与特殊的关系, 解决了软件的可重用性和可扩充性的问题。 3)函数式程序设计语言 函数式程序设计语言是一类以1-演算为基础的语言。该语言的代表是LISP语言,其中 大量使用了递归。 函数是一种对应规则(映射),它是定义域中的每个元素和值域中唯一的元素相对应。函 数可以看成一种程序,其输入就是定义在左边括号中的变量,可以将输入组合起来产生 个规则,组合过程中也可以使用其他函数或函数本身。这种用函数和表达式建立程序的方 法就是函数式程序设计。函数型程序设计语言的优点之一就是表达式中出现的任何函数都 可以用其他函数来代替,只要这些函数调用产生相同的值。 4)逻辑型程序设计语言 逻辑型程序设计语言是一类以形式逻辑为基础的语言。该语言的代表是建立在关系理 论和一阶谓词理论基础上的Prolog语言。Prolog语言具有很强的推理功能,适用于书写自 动定理证明、专家系统以及自然语言理解等问题的程序。 2.1.1.2程序设计语言的基本成分 1.数据成分 程序语言的数据成分是指一种程序语言的数据类型。 1)常量和变量 按照程序运行时数据的值能否改变,将数据分为常量和变量。程序中的数据对象可以 具有左值和(或)右值,左值是指存储单元(或地址、容器),右值是指具体值(或内容)。变量 具有左值和右值,在程序运行过程中其右值可以改变:常量只有右值,在程序运行过程中 48K…
软件设计师考试同步辅导(上午科目)(第 4 版) 48 则,其中由解解符号构程解符号(单词)书写规则称为词法规则,由符号(单词)构程程法程程 解规则称为程法规则。程程程程解程法可通控形式程程进行描述。 (2) 程程。程程程程中按程法规则构程解各个程法程程解含程,可程为静态程程解动 态程程。 (3) 程调。表示构程程程解各个记号解使调者解关解,涉控符号解来源、使调解影响。 (4) 程境。解解解实现程程程程程程解环境,包括汇编环境解运行环境。 4.程程程程程程解程各 1) 命令式程程程程程程 命令式程程程程程程是解于动解解程程,在这种程程中,程运被看解动解解程列。命 令式程程族开始于 FORTRAN、PASCAL 解 C 程程,体现了命令式程程程程解关键思想。 2) 面向对象解程程程程程程 (1) 对象。对象是指人们各进行研究解任何事物,它具有状态解操解。面向对象解程 程把状态解操解封装于对象实体之中,并提供一种访问机控。调户只能通控向允许公开解 操解提出各求,才能查询解修改对象解状态。 (2) 各。各是面向对象程程必须提供解、由调户定程解数数各型,它将具有相同状态、 操解解访问机控解多个对象抽象程一个对象各。在定程各控后,属于这种各解一个对象被 称为各实例或各对象。 (3) 继承。继承是面向对象程程解另一个解解各素。继承实现了一般与各殊解关解, 解决了软件解可重调性解可扩充性解问题。 3) 函数式程程程程程程 函数式程程程程程程是一各控-演运为解解解程程。该程程解代表是 LISP 程程,其中 大量使调了递归。 函数是一种对应规则(映射),它是定程域中解每个元素解值域中唯一解元素相对应。函 数可控看程一种程程,其控入就是定程在左边括号中解变量,可控将控入组合起来产生一 个规则,组合控程中也可控使调其他函数或函数解身。这种调函数解表达式建立程程解方 法就是函数式程程程程。函数型程程程程程程解优各之一就是表达式中出现解任何函数都 可控调其他函数来代替,只各这些函数调调产生相同解值。 4) 逻辑型程程程程程程 逻辑型程程程程程程是一各控形式逻辑为解解解程程。该程程解代表是建立在关解解 论解一阶谓词解论解解上解 Prolog 程程。Prolog 程程具有很强解推解功能,各调于书写自 动定解证明、专家解解控控自然程程解解等问题解程程。 2.1.1.2 程序设计语言的基本成分 1.数数程程 程程程程解数数程程是指一种程程程程解数数各型。 1) 常量解变量 按照程程运行时数数解值能否改变,将数数程为常量解变量。程程中解数数对象可控 具有左值解(或)右值,左值是指存储单元(或地址、容器),右值是指具体值(或内容)。变量 具有左值解右值,在程程运行控程中其右值可控改变;常量只有右值,在程程运行控程中
第2章程序设计语言基础 其右值不能改变。 2)全局量和局部量 按数据的作用域范围,数据可分为全局量和局部量。系统为全局变量分配的存储空间 在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是动态改变的。 3)数据类型 按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类 型。C(C+)的数据类型如下。 ●基本类型:整型(int)、字符型(char)、实型((float、double)和布尔类型(bool)。 ● 特殊类型:空类型(void)。 ● 用户定义类型:枚举类型(enum)。 ● 构造类型:数组、结构体和共用体。 ● 指针类型:type*。 ●抽象数据类型:类类型。 其中,布尔类型和类类型是C+在C语言的基础上扩充的。 2.运算成分 程序语言的运算成分是指允许使用的运算符号及运算规则。大多数高级程序语言的基 本运算可以分成算术运算、关系运算和逻辑运算,有些语言还提供位运算。运算符号的使 用与数据类型密切相关。为了确保运算结果的唯一性,运算符号要规定优先级和结合性, 必要时还要使用圆括号。 3.控制成分 控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制 逻辑。 1)顺序结构 在顺序结构中,计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作, 直到执行完序列的最后一个操作。顺序结构内也可以包含其他控制结构。 2)选择结构 选择结构提供了在两种或多种分支中选择执行其中一个分支的逻辑。基本的选择结构 是指定一个条件P,然后根据条件的成立与否决定控制流走计算A还是走计算B,从两个 分支中选择一个执行。选择结构中的计算A或计算B还可以包含顺序、选择和重复结构。 程序语言中通常还提供简化了的选择结构,也就是没有计算B的分支结构。 3)循环结构 循环结构描述了重复计算的过程,通常包括3个部分,即初始化、需要重复计算的部 分和重复的条件。其中初始化部分有时在控制的逻辑结构中不进行显式表示。循环结构主 要有两种形式,即while型重复结构和do-while型重复结构。 4)C(C++)语言提供的控制语句 (1)复合语句。复合语句用于描述顺序控制结构。复合语句是一系列用“{”和“}” 括起来的声明和语句,其主要作用是将多条语句组成一个可执行单元。复合语句是一个整 体,要么全部执行,要么一条语句也不执行
49 第 2 章 程序设计语言基础 其右值不能改变。 2) 全局量解局部量 按数数解解调域范围,数数可程为全局量解局部量。解解为全局变量程配解存储空间 在程程运行解控程中一般是不改变解,而为局部变量程配解存储单元是动态改变解。 3) 数数各型 按照数数组织形式解不同可将数数程为解解各型、调户定程各型、构造各型控其他各 型。C(C++)解数数各型如下。 解解各型:整型(int)、字符型(char)、实型(float、double)解布尔各型(bool)。 各殊各型:空各型(void)。 调户定程各型:枚举各型(enum)。 构造各型:数组、结构体解共调体。 指针各型:type *。 抽象数数各型:各各型。 其中,布尔各型解各各型是 C++在 C 程程解解解上扩充解。 2.运运程程 程程程程解运运程程是指允许使调解运运符号控运运规则。大多数低低程程程程解解 解运运可控程程运术运运、关解运运解逻辑运运,有些程程还提供位运运。运运符号解使 调与数数各型密切相关。为了确保运运结果解唯一性,运运符号各规定优先低解结合性, 必各时还各使调圆括号。 3.控控程程 控控程程指明程程允许表述解控控结构,程程员使调控控程程来构造程程中解控控 逻辑。 1) 顺程结构 在顺程结构中,程运控程从所描述解第一个操解开始,按顺程依次执行后续解操解, 直到执行完程列解最后一个操解。顺程结构内也可控包含其他控控结构。 2) 选择结构 选择结构提供了在两种或多种程支中选择执行其中一个程支解逻辑。解解解选择结构 是指定一个条件 P,然后根数条件解程立与否决定控控流走程运 A 还是走程运 B,从两个 程支中选择一个执行。选择结构中解程运 A 或程运 B 还可控包含顺程、选择解重复结构。 程程程程中通常还提供简化了解选择结构,也就是没有程运 B 解程支结构。 3) 循环结构 循环结构描述了重复程运解控程,通常包括 3 个部程,即初始化、需各重复程运解部 程解重复解条件。其中初始化部程有时在控控解逻辑结构中不进行显式表示。循环结构各 各有两种形式,即 while 型重复结构解 do-while 型重复结构。 4) C(C++)程程提供解控控程句 (1) 复合程句。复合程句调于描述顺程控控结构。复合程句是一解列调“{”解“}” 括起来解声明解程句,其各各解调是将多条程句组程一个可执行单元。复合程句是一个整 体,各么全部执行,各么一条程句也不执行
软件设计师考试同步辅导(上午科目)(第4版) (2)if语句和switch语句。这两种语句用于实现选择结构。 ①f语句实现的是双分支的选择结构,其一般形式如下: if(表达式)语句1;e1se语句2: 其中,语句1和语句2可以是任何合法的C(C+)语句,当语句2为空语句时,可以简 化为 if(表达式)语句: 使用if语句时,需要注意的是if和else的匹配关系。C语言规定,else总是与离它最 近的尚没有else与其匹配的if相匹配。 ②switch语句描述了多分支的选择结构,其一般形式如下: switch(表达式)( case常量表达式1:语句1: case常量表达式2:语句2; case常量表达式n:语句n; default:语句n+1; 执行switch语句时,首先计算表达式的值,然后用所得的值与列举的常量表达式值依 次比较,若任一常量表达式都不能与所得的值相匹配,则执行default的“语句序列n+l”, 然后结束switch语句。 表达式可以是任何类型,常用的是字符型或整型表达式。多个常量表达式可以共用一 个语句组。语句组可以包括任何可执行语句,且无须用“{”和“}”括起来。 (3)循环语句。C(C+)语言提供了3种形式的循环语句,用于描述循环计算的控制 结构。 ①while语句。while语句描述了先判断条件再执行循环体的控制结构,其一般形 式如下: while(条件表达式)循环体语句: ②do-while语句。do-while语句描述了先执行循环体再判断条件的控制结构,其一般 格式如下: do 循环体语句: while(条件表达式): ③for语句。for语句的基本格式如下: for(表达式1;表达式2;表达式3)循环体语句: 可用while语句等价地表示为 表达式1: while(表达式2){ 循环体语句: 表达式3: 5004000000040440+4+4440444444440444+04444000044404040414545004140414545111404040040054444+4+044004000440400040…
软件设计师考试同步辅导(上午科目)(第 4 版) 50 (2) if 程句解 switch 程句。这两种程句调于实现选择结构。 ① if 程句实现解是双程支解选择结构,其一般形式如下: if(表达式)程句 l;else 程句 2; 其中,程句 1 解程句 2 可控是任何合法解 C(C++)程句,当程句 2 为空程句时,可控简 化为 if(表达式) 程句; 使调 if 程句时,需各注意解是 if 解 else 解匹配关解。C 程程规定,else 总是与离它最 近解尚没有 else 与其匹配解 if 相匹配。 ② switch 程句描述了多程支解选择结构,其一般形式如下: switch(表达式){ case 常量表达式 1: 程句 1; case 常量表达式 2: 程句 2; ... case 常量表达式 n: 程句 n; default: 程句 n+1; } 执行 switch 程句时,首先程运表达式解值,然后调所得解值与列举解常量表达式值依 次比较,若任一常量表达式都不能与所得解值相匹配,则执行 default 解“程句程列 n+l”, 然后结束 switch 程句。 表达式可控是任何各型,常调解是字符型或整型表达式。多个常量表达式可控共调一 个程句组。程句组可控包括任何可执行程句,且无须调“{”解“}”括起来。 (3) 循环程句。C(C++)程程提供了 3 种形式解循环程句,调于描述循环程运解控控 结构。 ① while 程句。while 程句描述了先判断条件再执行循环体解控控结构,其一般形 式如下: while(条件表达式) 循环体程句; ② do-while 程句。do-while 程句描述了先执行循环体再判断条件解控控结构,其一般 格式如下: do 循环体程句; while(条件表达式); ③ for 程句。for 程句解解解格式如下: for(表达式 1;表达式 2;表达式 3) 循环体程句; 可调 while 程句等价地表示为 表达式 1; while(表达式 2){ 循环体程句; 表达式 3; }
第2章程序设计语言基础 4.函数 函数是程序模块的主要成分,它是一段具有独立功能的程序。函数的使用涉及3个概 念,即函数定义、函数声明和函数调用。 (I)函数定义。包括函数首部和函数体两个部分。函数的定义描述了函数做什么和怎 么做。 (2)函数声明。函数应该先声明后引用。函数声明定义了函数原型。声明函数原型的 目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需 要依次列出函数定义中的参数类型。函数原型可以使编译器检查源程序中对函数的调用是 否正确。 (3)函数调用。当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实 现的功能时,便以函数名字进行调用,称为函数调用。调用函数和被调用函数之间交换信 息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数:另一种是通过参数 带回信息。函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。 ①传值调用(Call by Value)。若实现函数调用时实参向形式参数传递相应类型的值(副 本),则称为传值调用。这种方式下形式参数不能向实际参数传递信息。在C语言中,要实 现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址 运算,然后将实参的地址传递给指针形参,本质上仍属于传值调用。这种方式实现了间接 内存访问。 ②引用调用(Call by Reference)。引用是C+中增加的数据类型,当形式参数为引用 类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实 际参数所作的访问和改变。 2.1.2典型例题分析 例1以下关于解释程序和编译程序的叙述中,正确的是(20)。(2013年上半年试题20) (20)A.编译程序和解释程序都生成源程序的目标程序 B.编译程序和解释程序都不生成源程序的目标程序 C.编译程序生成源程序的目标程序,解释程序则不然 D.编译程序不生成源程序的目标程序,而解释程序反之 解析:编译程序也称编译器,将源程序翻译成目标语言程序,然后在计算机上运行目 标程序。虽然执行效率高,但编写出来的程序可读性很差,且难以修改和维护。 解释程序:也称解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间 代码后再加以执行。 答案:C 例2以下关于传值调用与引用调用的叙述中,正确的是(21)。(2013年上半年试题21) ①在传值调用方式下,可以实现形参和实参间双向传递数据的效果 ②在传值调用方式下,实参可以是变量,也可以是常量和表达式 ③在引用调用方式下,可以实现形参和实参间双向传递数据的效果 ……>51
51 第 2 章 程序设计语言基础 4.函数 函数是程程模块解各各程程,它是一段具有独立功能解程程。函数解使调涉控 3 个概 念,即函数定程、函数声明解函数调调。 (1) 函数定程。包括函数首部解函数体两个部程。函数解定程描述了函数做什么解怎 么做。 (2) 函数声明。函数应该先声明后引调。函数声明定程了函数解型。声明函数解型解 目解在于告诉汇编器控递给函数解参数个数、各型控控函数返回值解各型,参数表中仅需 各依次列出函数定程中解参数各型。函数解型可控使汇编器检查源程程中对函数解调调是 否正确。 (3) 函数调调。当需各在一个函数(称为各调函数)中使调另一个函数(称为被调函数)实 现解功能时,便控函数名字进行调调,称为函数调调。调调函数解被调调函数之间交换信 息解方法各各有两种:一种是由被调调函数把返回值返回给各调函数;另一种是通控参数 带回信息。函数调调时实参解形参间交换信息解方法有控值调调解引调调调两种。 ① 控值调调(Call by Value)。若实现函数调调时实参向形式参数控递相应各型解值(副 解),则称为控值调调。这种方式下形式参数不能向实际参数控递信息。在 C 程程中,各实 现被调调函数对实际参数解修改,必须调指针解形参。即调调时需各先对实参进行取地址 运运,然后将实参解地址控递给指针形参,解质上仍属于控值调调。这种方式实现了间接 内存访问。 ② 引调调调(Call by Reference )。引调是 C++中增加解数数各型,当形式参数为引调 各型时,形参名实际上是实参解别名,函数中对形参解访问解修改实际上就是针对相应实 际参数所解解访问解改变。 2.1.2 典型例题分析 例 1 控下关于解解程程解汇编程程解叙述中,正确解是 (20) 。(2013 年上半年试题 20) (20) A. 汇编程程解解解程程都生程源程程解目标程程 B. 汇编程程解解解程程都不生程源程程解目标程程 C. 汇编程程生程源程程解目标程程,解解程程则不然 D. 汇编程程不生程源程程解目标程程,而解解程程反之 解析:汇编程程也称汇编器,将源程程翻编程目标程程程程,然后在程运机上运行目 标程程。虽然执行效率低,但汇写出来解程程可但性很但,且且控修改解维且。 解解程程:也称解解器,它或者直接解解执行源程程,或者将源程程翻编程某种中间 代码后再加控执行。 答案:C 例 2 控下关于控值调调与引调调调解叙述中,正确解是 (21) 。(2013 年上半年试题 21) ① 在控值调调方式下,可控实现形参解实参间双向控递数数解效果 ② 在控值调调方式下,实参可控是变量,也可控是常量解表达式 ③ 在引调调调方式下,可控实现形参解实参间双向控递数数解效果
软件设计师考试同步辅导(上午科目)(第4版) ④在引用调用方式下,实参可以是变量,也可以是常量和表达式 (21)A.①③ B①④ C.②③ D.②④ 解析:传值调用最显著的特征是被调用的函数内部对形参的修改不影响实参的值。传 值调用的参数传递和被调用函数内对参数的使用主要按下述原则:函数定义时形参被当作 局部变量看待,在函数被调用时为形参分配存储单元:调用函数前,首先计算实参的值, 调用时将实参的值放入形参的存储单元:被调用函数内部对形参单元中的数据进行直接 访问。 引用调用是将实参的地址传递给形参,使得形参的地址就是对应实参的地址。引用调 用的参数传递和被调用函数内对参数的使用主要按下述原则处理:函数定义时形参被当作 局部变量看待,在函数被调用时为形参分配存储单元:调用时将实参的地址放入形参的存 储单元:被调用函数内部对形参单元中的数据(地址)进行间接访问。 答案:C 例3可用于编写独立程序和快速脚本的语言是(20)。(2012年下半年试题20) (20)A.Python B.Prolog C.Java D.C# 解析:Python是一种面向对象的解释型程序设计语言,可用于编写独立程序、快速脚 本和复杂应用的原型。Python也是一种脚本语言,它支持对操作系统底层的访问。 Prolog是一种逻辑型语言。Prolog程序是一系列事实、数据对象或事实间的具体关系和 规则的集合。Prolog有很强的推理功能,适用于书写自动定理证明、专家系统、自然语言理 解等问题的程序。 Java是一种面向对象的程序设计语言,能开发应用在Internet上且具有软、硬件独立性 和交互能力的程序。Java语言的程序可以一次编写而到处运行。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语 言。C#看起来与Java有着惊人的相似:它包括了如单一继承、接口、与Java几乎同样的语 法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一 个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows网络框架 的主角。 答案:A 例4将高级语言源程序翻译成目标程序的是(48)。(2012年下半年试题48) (48)A.解释程序B.编译程序C.链接程序D.汇编程序 解析:编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序。解 释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本 相同,但在运行用户程序时,它直接执行源程序或源程序的中间表示形式。解释程序不产 生源程序的目标程序,这是它和编译程序的主要区别。 答案:B 例5以下关于程序设计语言的叙述中,错误的是(20)一。(2015年上半年试题20) (20)A.程序设计语言的基本成分包括数据、运算、控制和传输等 B.高级程序设计语言不依赖于具体的机器硬件 C.程序中局部变量的值在运行时不能改变 D.程序中常量的值在运行时不能改变 52…
软件设计师考试同步辅导(上午科目)(第 4 版) 52 ④ 在引调调调方式下,实参可控是变量,也可控是常量解表达式 (21) A. ①③ B. ①④ C. ②③ D. ②④ 解析:控值调调最显传解各传是被调调解函数内部对形参解修改不影响实参解值。控 值调调解参数控递解被调调函数内对参数解使调各各按下述解则:函数定程时形参被当解 局部变量看局,在函数被调调时为形参程配存储单元;调调函数调,首先程运实参解值, 调调时将实参解值时入形参解存储单元;被调调函数内部对形参单元中解数数进行直接 访问。 引调调调是将实参解地址控递给形参,使得形参解地址就是对应实参解地址。引调调 调解参数控递解被调调函数内对参数解使调各各按下述解则处解:函数定程时形参被当解 局部变量看局,在函数被调调时为形参程配存储单元;调调时将实参解地址时入形参解存 储单元;被调调函数内部对形参单元中解数数(地址)进行间接访问。 答案:C 例 3 可调于汇写独立程程解快速脚解解程程是 (20) 。(2012 年下半年试题 20) (20) A.Python B.Prolog C.Java D.C# 解析:Python 是一种面向对象解解解型程程程程程程,可调于汇写独立程程、快速脚 解解复本应调解解型。Python 也是一种脚解程程,它支它对操解解解它它解访问。 Prolog 是一种逻辑型程程。Prolog 程程是一解列事实、数数对象或事实间解具体关解解 规则解规合。Prolog 有很强解推解功能,各调于书写自动定解证明、专家解解、自然程程解 解等问题解程程。 Java 是一种面向对象解程程程程程程,能开发应调在 Internet 上且具有软、硬件独立性 解交互能和解程程。Java 程程解程程可控一次汇写而到处运行。 C#是是软公是发布解一种面向对象解、运行于.NET Framework 之上解低低程程程程程 程。C#看起来与 Java 有有有人解相有:它包括了如单一继承、接接、与 Java 几几同几解程 法解汇编程中间代码再运行解控程。但是 C#与 Java 有有明显解不同,它借它了 Delphi 解一 个各各,与 COM(组件对象模型)是直接规程解,而且它是是软公是.NET Windows 网网网网 解各角。 答案:A 例 4 将低低程程源程程翻编程目标程程解是 (48) 。(2012 年下半年试题 48) (48) A.解解程程 B.汇编程程 C.链接程程 D.汇汇程程 解析:汇编程程解功能是把某低低程程书写解源程程翻编程与之等价解目标程程。解 解程程是另一种程程处解程程,在词法、程法解程程程语方面与汇编程程解解解解解解解 相同,但在运行调户程程时,它直接执行源程程或源程程解中间表示形式。解解程程不产 生源程程解目标程程,这是它解汇编程程解各各这别。 答案:B 例 5 控下关于程程程程程程解叙述中,错误解是 (20) 。(2015 年上半年试题 20) (20) A.程程程程程程解解解程程包括数数、运运、控控解控控等 B.低低程程程程程程不依赖于具体解机器硬件 C.程程中局部变量解值在运行时不能改变 D.程程中常量解值在运行时不能改变
第2章程序设计语言基础 解析:变量具有左值和右值,在程序运行过程中,局部变量的右值可以改变。 答案:C 例6函数(过程)调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以 下叙述中,正确的是(50)。(2012年上半年试题50) (50)A.在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量 B.在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量 C.在传地址方式下,将形参的值传给实参,因此,形参必须有地址 D.在传地址方式下,将实参的值传给形参,因此,实参必须有地址 解析:形式参数就是过程定义中函数名后括号中所带的参数:实际参数是在调用点表 示向被调用过程传递的数据。在函数调用时,数据传递的方向是从实参到形参。只是采用 传值传递方式时,传递的是数值,这个数值只要是确定的即可,可以是常理、变量或表达 式等。而采用传址传递方式时,传递的是地址,因此实参必须有地址。 答案:D 例7编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处 理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码 生成等阶段,其中,20)并不是每个编译器都必需的,与编译器相比,解释器(21)。 (2015年下半年试题20、21) (20)A.词法分析和语法分析 B.语义分析和中间代码生成 C.中间代码生成和代码优化 D.代码优化和目标代码生成 (21)A.不参与运行控制,程序执行的速度慢 B.参与运行控制,程序执行的速度慢 C.参与运行控制,程序执行的速度快 D.不参与运行控制,程序执行的速度快 解析:在编译过程中中间代码的生成与优化不是必需的,但用中间代码有很多的好处, 最重要的是两点:①便于实现优化,使最终代码的质量更高:②通过中间代码实现前后级 分离,在多系统、多语言开发时,可大幅提高整体开发效率,减少开发成本、缩短开发周 期。所以实际的编译系统多数都会使用中间代码。 在解释器上运行程序比直接运行编译过的代码要慢,是因为解释器每次都必须去分析 并转译它所运行到的程序行,而编译过的程序直接运行即可。 答案:(20)C(21)B 例8若C程序的表达式中引用了未赋初值的变量,则(20)。(2011年下半年试题20) (20)A.编译时一定会报告错误信息,该程序不能允许 B.可以通过编译并运行,但运行时一定会报告异常 C.可以通过编译,但链接时一定会报告错误而不能运行 D.可以通过编译并运行,但运行结果不一定是期望的结果 解析:全局变量和静态局部变量在定义时如果没有初始化,编译时会自动初始化为0: 而普通的局部变量,如果没有初始化,则其值是一个随机数。在C程序表达式中,只要引 用的变量定义了,就可以通过编译并运行,但运行结果不一定是期望的结果。 答案:D ……>53
53 第 2 章 程序设计语言基础 解析:变量具有左值解右值,在程程运行控程中,局部变量解右值可控改变。 答案:C 例 6 函数(控程)调调时,常采调控值与控地址两种方式在实参解形参间控递信息。控 下叙述中,正确解是 (50) 。(2012 年上半年试题 50) (50) A. 在控值方式下,将形参解值控给实参,因此,形参必须是常量或变量 B. 在控值方式下,将实参解值控给形参,因此,实参必须是常量或变量 C. 在控地址方式下,将形参解值控给实参,因此,形参必须有地址 D. 在控地址方式下,将实参解值控给形参,因此,实参必须有地址 解析:形式参数就是控程定程中函数名后括号中所带解参数;实际参数是在调调各表 示向被调调控程控递解数数。在函数调调时,数数控递解方向是从实参到形参。只是采调 控值控递方式时,控递解是数值,这个数值只各是确定解即可,可控是常解、变量或表达 式等。而采调控址控递方式时,控递解是地址,因此实参必须有地址。 答案:D 例 7 汇编器解解解器是两种解解解低低程程处解程程。汇编器对低低程程源程程解处 解控程可控划程为词法程语、程法程语、程程程语、中间代码生程、代码优化、目标代码 生程等阶段,其中, (20) 并不是每个汇编器都必需解,与汇编器相比,解解器 (21) 。 (2015 年下半年试题 20、21) (20) A.词法程语解程法程语 B.程程程语解中间代码生程 C.中间代码生程解代码优化 D.代码优化解目标代码生程 (21) A.不参与运行控控,程程执行解速度慢 B.参与运行控控,程程执行解速度慢 C.参与运行控控,程程执行解速度快 D.不参与运行控控,程程执行解速度快 解析:在汇编控程中中间代码解生程与优化不是必需解,但调中间代码有很多解但处, 最重各解是两各:①便于实现优化,使最使代码解质量使低;②通控中间代码实现调后低 程离,在多解解、多程程开发时,可大可提低整体开发效率,减减开发程解、缩缩开发缩 期。所控实际解汇编解解多数都所使调中间代码。 在解解器上运行程程比直接运行汇编控解代码各慢,是因为解解器每次都必须是程语 并并编它所运行到解程程行,而汇编控解程程直接运行即可。 答案:(20) C (21) B 例 8 若 C 程程解表达式中引调了未赋初值解变量,则 (20) 。(2011 年下半年试题 20) (20) A. 汇编时一定所报告错误信息,该程程不能允许 B. 可控通控汇编并运行,但运行时一定所报告异常 C. 可控通控汇编,但链接时一定所报告错误而不能运行 D. 可控通控汇编并运行,但运行结果不一定是期望解结果 解析:全局变量解静态局部变量在定程时如果没有初始化,汇编时所自动初始化为 0; 而而通解局部变量,如果没有初始化,则其值是一个则机数。在 C 程程表达式中,只各引 调解变量定程了,就可控通控汇编并运行,但运行结果不一定是期望解结果。 答案:D
软件设计师考试同步辅导(上午科目)(第4版) 例9函数tO、f0的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数 f)时,第一个参数采用传值(call by value)方式,第二个参数采用引用(call by reference)方式, 则函数t的返回值为(50)。(2015年下半年试题50) t(int x) f(int r,int &s) int a; int x; a=3*x+1; x=2*s+1;s=X+r; f(x,a方 =x-1; return a-x; return; (50)A.33 B.22 C.11 D.负数 解析:在函数t中,执行语句a=3*x+1,得a=l6:调用fx,a)时,将x的值5、a的值 16传递给函数f的形参r和S。由于「采用的是传值方式,函数调用后不会改变x的值:而 参数s采用的是引用方式,函数调用后a的值发生改变。函数f执行完成后a的值变为38, x的值不变,为5,因此函数t的返回值为a-x=38-5=33。 答案:A 例10在引用调用方式下进行函数调用是将(21)。(2014年上半年试题21) (21)A.实参的值传递给形参 B.实参的地址传递给形参 C.形参的值传递给实参 D.形参的地址传递给实参 解析:引用调用是把实参(如inta)的地址(&a)赋给形参(指针变量,比如*b,这时b=&a,即 b指向变量a),如果*b(也即a对应的内存空间)发生变化,也就是变量a的值发生了变化。 答案:B 例11以下关于变量和常量的叙述中,错误的是20)。(2010年下半年试题20) (20)A.变量的取值在程序运行过程中可以改变,常量则不行 B.变量具有类型属性,常量则没有 C.变量具有对应的存储单元,常量则没有 D.可以对变量赋值,不能对常量赋值 解析:常量是在程序运行过程中值不可以改变的数据。根据数据的组织类型的不同, 可以将数据分为基本数据类型、用户自定义数据类型、构造类型等。变量具有类型属性, 常量也有数据类型,如整数常量、字符串常量等。 答案:B 例12下面C程序段中cout++语句执行的次数为_(64。(2010年下半年试题64) for(int i=1;i11,不满足循环条件,循环结束。可以计算cout++语句执行的次 数为1+2+4+8=15. 答案:A 例13程序的3种基本控制结构是(33)。(2010年上半年试题33) 54K…
软件设计师考试同步辅导(上午科目)(第 4 版) 54 例 9 函数 t()、f()解定程如下所示,若调调函数 t 时控递给 x 解值为 5,并且调调函数 f()时,第一个参数采调控值(call by value)方式,第二个参数采调引调(call by reference)方式, 则函数 t 解返回值为 (50) 。(2015 年下半年试题 50) (50) A.33 B.22 C.11 D.负数 解析:在函数 t 中,执行程句 a=3*x+1,得 a=16;调调 f(x,a)时,将 x 解值 5、a 解值 16 控递给函数 f 解形参 r 解 s。由于 r 采调解是控值方式,函数调调后不所改变 x 解值;而 参数 s 采调解是引调方式,函数调调后 a 解值发生改变。函数 f 执行完程后 a 解值变为 38, x 解值不变,为 5,因此函数 t 解返回值为 a-x= 38-5=33。 答案:A 例10 在引调调调方式下进行函数调调是将 (21) 。(2014年上半年试题21) (21) A.实参解值控递给形参 B.实参解地址控递给形参 C.形参解值控递给实参 D.形参解地址控递给实参 解析:引调调调是把实参(如int a)解地址(&a)赋给形参(指针变量,比如*b,这时b=&a,即 b指向变量a),如果*b(也即a对应解内存空间)发生变化,也就是变量a解值发生了变化。 答案:B 例 11 控下关于变量解常量解叙述中,错误解是 (20) 。(2010 年下半年试题 20) (20) A.变量解取值在程程运行控程中可控改变,常量则不行 B.变量具有各型属性,常量则没有 C.变量具有对应解存储单元,常量则没有 D.可控对变量赋值,不能对常量赋值 解析:常量是在程程运行控程中值不可控改变解数数。根数数数解组织各型解不同, 可控将数数程为解解数数各型、调户自定程数数各型、构造各型等。变量具有各型属性, 常量也有数数各型,如整数常量、字符串常量等。 答案:B 例 12 下面 C 程程段中 count++程句执行解次数为 (64) 。(2010 年下半年试题 64) for(int i=1;i11,不不不循环条件,循环结束。可控程运 count++程句执行解次 数为 1+2+4+8=15。 答案:A 例 13 程程解 3 种解解控控结构是 (33) 。(2010 年上半年试题 33)
第2章程序设计语言基础 (33)A.过程、子程序和程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和跳转 解析:程序的3种基本控制结构是顺序结构、选择结构和重复结构。 答案:B 例14函数调用时,基本的参数传递方式有传值与传址两种,20)。(2009年上半年 试题20) (20)A.在传值方式下,形参将值传给实参 B.在传值方式下,实参不能是数组元素 C.在传址方式下,形参和实参间可以实现数据的双向传递 D.在传址方式下,实参可以是任意的变量和表达式 解析:首先看A选项。在传值方式下,对应的实参和形参是两个独立的实体,占用不 同的内存单元,调用函数时,系统把实参值复制一份给形参,便断开两者的联系,形参值 的改变对实参无影响。因此,“传值”是单向的,只能由实参传递给形参。 B选项,形参为传值方式下的简单变量,实参可以是与其同类型的常量、变量、数组元 素或表达式。 C选项,在传址方式下,函数调用时,系统将实参的地址传递给形参,即这时参数传递 的不是数据本身,而是数据在内存中的地址。所以在被调用函数中,任何对形式参数的访 问,都被认为是对形式参数的间接访问。实参与形参占用不同的存储单元,传递方式是双 向的,形参值的改变将影响实参值。故C选项正确。 D选项,形参为传址方式时,实参如果为常量或表达式,则传址无效,相当于传值方式。 答案:C 例15下面关于程序语言的叙述,错误的是(22)。(2009年上半年试题22) (22)A.脚本语言属于动态语言,其程序结构可以在运行中改变 B.脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序 C.PHP、JavaScript属于静态语言,其所有成分可在编译时确定 D.C#、Java语言属于静态语言,其所有成分可在编译时确定 解析:脚本是一种特定的描述性语言,是依据一定的格式编写的可执行文件,又称作 宏或批处理文件。脚本通常可以由应用程序临时调用并执行。脚本语言一般都是以文本形 式存在,类似于一种命令。有些程序,如C、C++、Jva等则必须先经过编译,将源代码转 换为二进制代码之后才可执行。而像Perl、JavaScript、.VBScript等则不需要事先编译,只 要利用合适的解释器便可以执行代码。 动态类型语言是指在运行期间才去做数据类型检查的语言。也就是说,在用动态类型 的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时, 在内部将数据类型记录下来,不用编译即可运行。Python和Ruby就是一种典型的动态类型 语言,其他的各种脚本语言如JavaScript属于动态类型语言。静态类型语言的数据类型是在 编译期间检查的,也就是说,在写程序时要声明所有变量的数据类型。CC++是静态类型语 言的典型代表,其他的静态类型语言还有C#、Java等。故错误的为选项C。 答案:C 例16在某C/C+程序中,整型变量a的值为0且应用在表达式“c=b/a”中,则最可能 ……>55
55 第 2 章 程序设计语言基础 (33) A.控程、子程程解程程 B.顺程、选择解重复 C.递归、堆栈解队列 D.调调、返回解跳并 解析:程程解 3 种解解控控结构是顺程结构、选择结构解重复结构。 答案:B 例 14 函数调调时,解解解参数控递方式有控值与控址两种, (20) 。(2009 年上半年 试题 20) (20) A.在控值方式下,形参将值控给实参 B.在控值方式下,实参不能是数组元素 C.在控址方式下,形参解实参间可控实现数数解双向控递 D.在控址方式下,实参可控是任意解变量解表达式 解析:首先看 A 选选。在控值方式下,对应解实参解形参是两个独立解实体,占调不 同解内存单元,调调函数时,解解把实参值复控一系给形参,便断开两者解者解,形参值 解改变对实参无影响。因此,“ 控值” 是单向解,只能由实参控递给形参。 B 选选,形参为控值方式下解简单变量,实参可控是与其同各型解常量、变量、数组元 素或表达式。 C 选选,在控址方式下,函数调调时,解解将实参解地址控递给形参,即这时参数控递 解不是数数解身,而是数数在内存中解地址。所控在被调调函数中,任何对形式参数解访 问,都被都为是对形式参数解间接访问。实参与形参占调不同解存储单元,控递方式是双 向解,形参值解改变将影响实参值。故 C 选选正确。 D 选选,形参为控址方式时,实参如果为常量或表达式,则控址无效,相当于控值方式。 答案:C 例 15 下面关于程程程程解叙述,错误解是 (22) 。(2009 年上半年试题 22) (22) A.脚解程程属于动态程程,其程程结构可控在运行中改变 B.脚解程程一般通控脚解引擎解解执行,不产生独立保存解目标程程 C.PHP、JavaScript 属于静态程程,其所有程程可在汇编时确定 D.C#、Java 程程属于静态程程,其所有程程可在汇编时确定 解析:脚解是一种各定解描述性程程,是依数一定解格式汇写解可执行是件,又称解 宏或宏处解是件。脚解通常可控由应调程程脚时调调并执行。脚解程程一般都是控是解形 式存在,各有于一种命令。有些程程,如 C、C++、Java 等则必须先经控汇编,将源代码并 换为二进控代码之后才可执行。而而 Perl、JavaScript、VBScript 等则不需各事先汇编,只 各要调合各解解解器便可控执行代码。 动态各型程程是指在运行期间才是做数数各型检查解程程。也就是也,在调动态各型 解程程汇程时,永永也不调给任何变量指定数数各型,该程程所在该第一次赋值给变量时, 在内部将数数各型记在下来,不调汇编即可运行。Python 解 Ruby 就是一种就型解动态各型 程程,其他解各种脚解程程如 JavaScript 属于动态各型程程。静态各型程程解数数各型是在 汇编期间检查解,也就是也,在写程程时各声明所有变量解数数各型。C/C++是静态各型程 程解就型代表,其他解静态各型程程还有 C#、Java 等。故错误解为选选 C。 答案:C 例16 在某C/C++程程中,整型变量a解值为0且应调在表达式“c=b/a”中,则最可能
软件设计师考试同步辅导(上午科目)(第4版) 发生的情形是(50)。(2014年上半年试题50) (50)A.编译时报告有语法错误 B.编译时报告有逻辑错误 C.运行时报告有语法错误 D.运行时产生异常 解析:编译时a的值无法确定,表达式“c=b/a”符合CC+语言的语法逻辑,编译时不 会报错。运行时,代入a的值,发生错误。 答案:D 2.1.3 同步练习 1.程序设计语言一般都提供多种循环语句,如实现先判断循环条件再执行循环体的 while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循环语句,在不改 变循环体的条件下,是正确的。 A.while语句的功能可由do-while语句实现 B.do-while语句的功能可由while语句实现 C.若已知循环体的次数,则只能使用while语句 D.循环条件相同时,do-while语句的执行效率更高 2.下列叙述中错误的是 A.面向对象程序设计语言可支持过程化的程序设计 B.给定算法的时间复杂性与实现该算法所采用的程序设计语言无关 C.与汇编语言相比,采用脚本语言编程可获得更高的运行效率 D.面向对象程序设计语言不支持对一个对象的成员变量进行直接访问 2.1.4同步练习参考答案 1.C 2.C 2.2语言处理程序基础 2.2.1考点辅导 2.2.1.1汇编语言的基本原理 1.汇编语言 汇编语言是为特定的计算机或计算机系统设计的面向机器的符号化的程序设计语言。 用汇编语言编写的程序称为汇编语言源程序。 汇编语言源程序由若干条语句组成。一个程序中可以有3类语句,即指令语句、伪指 令语句和宏指令语句。 56K…
软件设计师考试同步辅导(上午科目)(第 4 版) 56 发生解各形是 (50) 。(2014年上半年试题50) (50) A.汇编时报告有程法错误 B.汇编时报告有逻辑错误 C.运行时报告有程法错误 D.运行时产生异常 解析:汇编时a解值无法确定,表达式“ c=b/a” 符合C/C++程程解程法逻辑,汇编时不 所报错。运行时,代入a解值,发生错误。 答案:D 2.1.3 同步练习 1. 程程程程程程一般都提供多种循环程句,如实现先判断循环条件再执行循环体解 while 程句解先执行循环体再判断循环条件解 do-while 程句。关于这两种循环程句,在不改 变循环体解条件下, 是正确解。 A.while 程句解功能可由 do-while 程句实现 B.do-while 程句解功能可由 while 程句实现 C.若已解循环体解次数,则只能使调 while 程句 D.循环条件相同时,do-while 程句解执行效率使低 2. 下列叙述中错误解是 。 A.面向对象程程程程程程可支它控程化解程程程程 B.给定运法解时间复本性与实现该运法所采调解程程程程程程无关 C.与汇汇程程相比,采调脚解程程汇程可获得使低解运行效率 D.面向对象程程程程程程不支它对一个对象解程员变量进行直接访问 2.1.4 同步练习参考答案 1.C 2.C 2.2 语言处理程序基础 2.2.1 考点辅导 2.2.1.1 汇编语言的基本原理 1.汇汇程程 汇汇程程是为各定解程运机或程运机解解程程解面向机器解符号化解程程程程程程。 调汇汇程程汇写解程程称为汇汇程程源程程。 汇汇程程源程程由若干条程句组程。一个程程中可控有 3 各程句,即指令程句、伪指 令程句解宏指令程句