2.1.3 命题特点 纵观历次试卷,本章知识点是以选择题的形式出现在试卷中的。在历��考试上午试卷中,所考查的题量大约为6道选择题,所占分值为6分(约占试卷总分值75分中的8%)。本章试题主要考查考生是否掌握了相关的理论知识,难度中等。有限自动机是本章的**,也是难点。 2.2 考点串讲 2.2.1 程序语言概述 一、程序设计语言的基本概念 1.低级语言和**语言 1) 低级语言 通常称机器语言和汇编语言为低级语言。机器语言是指用0、1字符串组成的机器指令序列,是*基本的计算机语言;汇编语言是指用符号表示指令的语言。 2) **语言 **语言是从人类的逻辑思维角度出发、面向各类应用的程序语言,其抽象程度大大提高,需要编译成特定机器上的目标代码才能执行。这类语言与人们使用的自然语言比较接近,大大提高了程序设计的效率。 2.编译程序和解释程序 用某种**语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。如果源程序是使用汇编语言编写的,则需要一个称为汇编程序的翻译程序将其翻译成目标程序后才能执行。如果源程序是使用某种**语言编写的,则需要相应的解释程序或编译程序对其进行翻译,然后才能在机器上运行。 3.程序设计语言的定义 程序设计语言的定义一般都涉及语法、语义、语用和语境等方面。 (1) 语法:由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则,其中由基本字符构成的符号(单词)书写规则称为词法规则,由符号(单词)构成语法成分的规则称为语法规则。程序语言的语法可通过形式语言进行描述。 (2) 语义:程序语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义。 (3) 语用:表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。 (4) 语境:理解和实现程序设计语言的环境,包括编译环境和运行环境。 4.程序设计语言的分类 1) 命令式程序设计语言 命令式程序设计语言是基于动作的语言,在这种语言中,计算被看作是动作的序列。命令式语言族开始于Fortran、Pascal和C语言,体现了命令式程序设计的关键思想。 2) 面向对象的程序设计语言 面向对象的程序设计在很大程度上应归功于从模拟领域发展而来的Simula,Simula提出了对象和类的概念。C++、Java和Smalltalk是面向对象程序设计语言的代表。 3) 函数式程序设计语言 函数式程序设计语言是一类以 -演算为基础的语言。该语言的代表是LISP,其中大量使用了递归。 4) 逻辑型程序设计语言 逻辑型程序设计语言是一类以形式逻辑为基础的语言。该语言的代表是建立在关系理论和一阶谓词理论基础上的Prolog。 二、程序设计语言的基本成分 1.数据成分 程序语言的数据成分是指一种程序语言的数据类型。 1) 常量和变量 按照程序运行时数据的值能否改变,可将数据分为常量和变量。程序中的数据对象可以具有左值和(或)右值,左值是指存储单元(或地址、容器),右值是指具体值(或内容)。变量具有左值和右值,在程序运行过程中其右值可以改变;常量只有右值,在程序运行过程中其右值不能改变。 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++)语言提供的控制语句 C(C++)语言提供的控制语句如下。 (1) 复合语句。复合语句用于描述顺序控制结构。复合语句是一系列用“{”和“}”括起来的声明和语句,其主要作用是将多条语句组成一个可执行单元。复合语句是一个整体,要么全部执行,要么一条语句也不执行。 (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)循环体语句;