第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) ① 在控值调调方式下,可控实现形参解实参间双向控递数数解效果 ② 在控值调调方式下,实参可控是变量,也可控是常量解表达式 ③ 在引调调调方式下,可控实现形参解实参间双向控递数数解效果