软考在线  |  计算机技术与软件专业技术资格(水平)考试   |   [请选择科目]
[ 成为 VIP会员 ]        登录  |  注册      我的  购物车
 
科目切换  联系我们 
    
  |   [请选择科目]

VIP:有效提升20分!  真题  历年真题 (可免费开通)/  百科全书/ 机考模拟平台/  最难真题榜/  自测/  攻打黄金十二宫/  真题检索/  真题下载/  真题词库
知识   必会知识榜/  最难知识榜/  知识点查询/      文档   学习计划/  精华笔记/  试题文档     纸质图书   《百科全书》HOT!!/         /        首页/  2025年上半年专区/  手机版/ 
免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2020年下半年 嵌入式系统设计师 上午试卷 综合知识
  第13题      
  知识点:   程序设计语言的基本成分   数组   程序语言的基本成分   分包
  关键词:   对象   分包   枚举   数据   数组   语言        章/节:   嵌入式系统程序设计       

 
程序语言的基本成分包括数椐、运算、控制和(13)。数据是程序操作的对象,按照数椐组织形式可以分为多种类型,其中枚举属于(14)类型;数组属于(15)类型。
 
 
  A.  存储
 
  B.  分配
 
  C.  传输
 
  D.  函数
 
 
 确定 并 查看答案解析     知识点讲解  我要标记      有奖找茬      上一题        下一题 
 

 
  第18题    2019年下半年  
   63%
将编译器的工作过程划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成时,语法分析阶段的输入是(18)。..
  第19题    2024年上半年  
   0%
下列关于C语言中结构类型的叙述中,错误的是(40)。
  第34题    2023年上半年  
   0%
执行下面的一段C程序后,变量result的值应为(62)。(08年55)(09年49)
   知识点讲解    
   · 程序设计语言的基本成分    · 数组    · 程序语言的基本成分    · 分包
 
       程序设计语言的基本成分
        程序设计语言的基本成分包括数据、运算、控制和传输等。
               程序设计语言的数据成分
               程序中的数据对象总是对应着应用系统中某些有意义的东西,数据表示则指示了程序中值的组织形式。数据类型用于描述数据对象,还用于在基础机器中完成对值的布局,同时还可用于检查表达式中对运算的应用是否正确。
               数据是程序操作的对象,具有类型、名称、作用域、存储类别和生存期等属性,在程序运行过程中要为它分配内存空间。数据名称由用户通过标识符命名,标识符常由字母、数字和称为下画线的特殊符号“_”组成;类型说明数据占用内存空间的大小和存放形式;作用域则说明可以使用数据的代码范围;存储类别说明数据在内存中的位置;生存期说明数据占用内存的时间范围。从不同角度可将数据进行不同的划分。
               (1)常量和变量。按照程序运行时数据的值能否改变,将数据分为常量和变量。程序中的数据对象可以具有左值和(或)右值。左值指存储单元(或地址、容器),右值是值(或内容)。变量具有左值和右值,在程序运行的过程中其右值可以改变;常量只有右值,在程序运行的过程中其右值不能改变。
               (2)全局变量和局部变量。按作用域可将变量分为全局变量和局部变量。一般情况下,系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是动态改变的。
               (3)数据类型。按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类型。以C/C++为例,其数据类型如下。
               .基本类型:整型(int)、字符型(char)、浮点型(float、double)和布尔类型(bool)。
               .特殊类型:空类型(void)。
               .用户定义类型:枚举类型(enum)。
               .构造类型:数组、结构、联合。
               .指针类型:type*。
               .抽象数据类型:类类型。
               其中,布尔类型和类类型是C++在C语言的基础上扩充的。
               程序设计语言的运算成分
               程序设计语言的运算成分指明允许使用的运算符号及运算规则。大多数高级程序设计语言的基本运算可以分成算术运算、关系运算和逻辑运算等类型,有些语言如C(C++)还提供位运算。运算符号的使用与数据类型密切相关。为了明确运算结果,运算符号要规定优先级和结合性,必要时还要使用圆括号。
               程序设计语言的控制成分
               控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序的控制逻辑。理论上已经证明,可计算问题的程序都可以用顺序、选择(分支)和循环这三种控制结构来描述。
               (1)顺序结构。顺序结构用来表示一个计算操作序列。计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到序列的最后一个操作,如下图所示。
               
               顺序结构示意图
               (2)选择结构。选择结构提供了在两种或多种分支中选择其中之一的逻辑。基本的选择结构是指定一个条件P,然后根据条件的成立与否决定控制流走分支A还是分支B,只能从两个分支中选择一个来执行,如下图(a)所示。选择结构中的A或B还可以包含顺序、选择和重复结构。程序设计语言中通常还提供简化了的选择结构,如下图(b)所示,还有描述多个分支的选择结构。
               
               选择结构示意图
               例如,C/C++提供了if、switch语句实现选择控制结构。
               (3)循环结构。循环结构描述了重复计算的过程,通常由三个部分组成:初始化、需要重复计算的部分和重复的条件。其中,初始化部分有时在控制的逻辑结构中不进行显式的表示。重复结构主要有两种形式:while型重复结构和do-while型重复结构。while型结构的逻辑含义是先判断条件P,若成立,则进行需要重复的计算A,然后再去判断重复条件;否则,控制就退出重复结构,如下图(a)所示。do-while(或repeat-until)型结构的逻辑含义是先执行循环体A,然后再判断条件P,若成立则继续执行循环体A的过程并判断条件;否则,控制就退出重复结构,如下图(b)所示。
               
               循环结构示意图
               例如,C/C++提供了while、for和do-while语句来实现循环控制结构。
               此外,C语言中还提供了实现控制流跳转的return、break、continue、goto语句。
               程序设计语言的传输成分指明语言允许的数据传输方式,如赋值、数据的输入和输出等。
               函数
               函数是程序模块的主要成分,它是一段具有独立功能的程序。C程序由一个或多个函数组成,每个函数都有一个名字,其中有且仅有一个名字为main的函数,作为程序运行时的起点。函数的使用涉及三个概念:函数定义、函数声明和函数调用。
                      函数定义
                      函数的定义描述了函数做什么和怎么做,包括两部分:函数首部和函数体。函数定义的一般格式是:
                      
                      函数首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数及类型。函数所实现的功能在函数体部分描述。如果函数没有返回值,则函数返回值的类型声明为void。函数名是一个标识符,函数名应具有一定的意义(反映函数的功能)。形式参数表列举了函数要求调用者提供的参数的个数、类型和顺序,是函数实现功能时所必需的。若形式参数表为空,可用void说明。
                      C程序中所有函数的定义都是独立的。在一个函数的定义中不允许定义另外一个函数,也就是不允许函数的嵌套定义。有些语言(如PASCAL)允许在函数内部定义函数。
                      函数声明
                      函数应该先声明后调用。如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为:
                      
                      使用函数原型的目的是告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义时参数的类型。函数原型可以使编译器更彻底地检查源程序中对函数的调用是否正确。
                      函数调用
                      当在一个函数(称为调用函数)中需要使用另一个函数(称为被调用函数)实现的功能时,便以名字进行调用,称为函数调用。在使用一个函数时,只要知道如何调用即可,并不需要关心被调用函数的内部实现。因此,程序员需要知道被调函数的名字、返回值和需要向被调函数传递的参数(个数、类型、顺序)等信息。
                      函数调用的一般形式为:
                      
                      在C程序的执行过程中,通过函数调用使得被调用函数得以执行。函数体中若调用自己,则称为递归调用。
                      C语言采用传值方式将实参传递给形参。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给调用函数,另一种是通过参数带回信息。函数调用时,实参与形参间交换信息的主要有传值调用和引用调用两种方法。
                      (1)传值调用(Call by value)。若实现函数调用时实参向形参传递相应类型的值,则称为是传值调用。这种方式下形参不能向实参传递信息。
                      例如,下面给出函数swap定义,其功能是交换两个整型变量值。
                      
                      函数调用为:swap(a,b);
                      因为是传值调用,swap函数运行后只能交换x和y的值,而实参a和b的值并没有交换。
                      在C语言中,要实现被调用函数对实参的修改,必须用指针作形参,调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。本质上仍属于传值调用。
                      下面给出函数swap的定义,其功能是交换两个整型变量值。
                      
                      函数调用为:swap(&a,&b);
                      由于形参px、py分别得到了实参变量a、b的地址,所以px指向的对象*px即为a,py指向的对象*py就是b,因此在函数中交换*px和*py的值实际上就是交换实参a和b的值,从而实现了调用函数中两个整型变量值的交换。这种方式是通过数据的间接访问来完成运算要求的。
                      (2)引用调用。引用是C++中增加的数据类型,当形参为引用类型时,函数中对形参的访问和修改实际上就是针对相应实参所作的访问和改变。例如:
                      
                      函数调用为:swap(a,b);
                      引用调用方式下调用swap(a,b)时,x、y就是a、b的别名,因此,函数调用完成后,交换了实参a和b的值。
 
       数组
        数组是一种集合数据类型,它由多个元素组成,每个元素都有相同的数据类型,占有相同大小的存储单元,且在内存中连续存放。每个数组有一个名字,数组中的每个元素有一个序号(称为下标),表示元素在数组中的位序(位置),数组的维数和大小在定义数组时确定,程序运行时不能改变。
        一维数组的定义形式为:
        
        其中,“类型说明符”指定数组元素的类型;“数组名”的命名规则与变量相同;“常量表达式”的值表示数组元素的个数,必须是一个正整数。例如:
        
        在C程序中,数组元素的下标总是从0开始的,如果一个数组有n个元素,则第一个元素的下标是0,最后一个元素的下标是n-1。例如,在上面定义的temp数组中,第一个元素是temp[0],第二个元素是temp[1],以此类推,最后一个元素是temp[99]。访问数组元素的方法是通过数组名及数组名后的方括号中的下标。例如:
        
        程序员需确保访问数组元素时下标的有效性,访问一个不存在的数组元素(例如temp[100]),可能会导致严重的错误。
        定义数组时就给出数组元素的初值,称之为初始化,数组的初始化与简单变量的初始化类似。初值放在一对花括号中,各初值之间用逗号隔开,称为初始化表。例如:
        
        对于没有给出数组元素个数而给出了初始化表的数组定义,编译器会根据初值的个数和类型,为数组分配相应大小的内存空间。初始化表中值的个数必须小于或等于数组元素的个数。
        对于“int primes[10]={1,2,3,5,7};”,前5个数组元素的初值分别为1,2,3,5,7,后5个元素的初值都为0。
        二维数组可视为是一个矩阵,定义形式为:
        
        其中,“类型说明符”指定数组元素的类型,“常量表达式1”指定行数,“常量表达式2”指定列数。例如,可以定义一个二维数组:
        
        这个数组在内存中占用能存放12个double型数据且地址连续的存储单元。
        C语言中二维数组在内存中按行顺序存放。
        可以用sizeof计算数组空间的大小,即字节数。例如,
        
        二维数组可以看作元素是一维数组的一维数组,三维数组可看作元素是二维数组的一维数组,以此类推。
 
       程序语言的基本成分
        程序语言的基本成分包括数据、运算、控制和传输。
               程序语言的数据成分
               程序语言的数据成分指其程序中的数据对象。数据对象总是对应着应用系统中某些有意义的东西,数据表示则指示了程序中值的组织形式。数据类型用于描述数据对象,还用于在基础机器中完成对值的布局,同时还可用于检查表达式中对运算的应用是否正确。
               数据是程序操作的对象,具有存储类别、类型、名称、作用域和生存期等属性,使用时要为它分配内存空间。数据名称由用户通过标识符命名,在一些语言中,标识符是由字母、数字和下画线“_”组成的标记;类型说明数据占用内存的大小和存放形式;存储类别说明数据在内存中的位置和生存期;作用域则说明可以使用数据的代码范围;生存期说明数据占用内存的时间范围。从不同角度可将数据进行不同的划分。
                      常量和变量
                      按照程序运行时数据的值能否改变,将程序中的数据分为常量和变量。程序中的数据对象可以具有左值和(或)右值,左值指存储单元(或地址、容器),右值是值(或内容)。变量具有左值和右值,在程序运行过程中其右值可以改变;常量只有右值,在程序运行过程中其右值不能改变。
                      全局变量和局部变量
                      按数据的作用域范围,可将其分为全局量和局部量。系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是可以动态改变的。
                      数据类型
                      按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类型。以C/C++为例,其数据类型如下:
                      (1)基本类型:整型(int)、字符型(char)、实型(float、double)和布尔类型(bool)。
                      (2)特殊类型:空类型(void)。
                      (3)用户定义类型:枚举类型(enum)。
                      (4)构造类型:数组、结构、联合。
                      (5)指针类型:type*。
                      (6)抽象数据类型:类类型。
                      其中,布尔类型和类类型由C++语言提供。
               程序语言的运算成分
               程序语言的运算成分指明允许使用的运算符号及运算规则。大多数高级程序语言的基本运算可以分成算术运算、关系运算和逻辑运算等,有些语言如C/C++还提供位运算。运算符号的使用与数据类型密切相关。为了明确运算结果,运算符号要规定优先级和结合性,必要时还要使用圆括号。
               程序语言的控制成分
               控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制逻辑。理论上已经证明,可计算问题的程序都可以用顺序、选择和循环这三种控制结构来描述。
                      顺序结构
                      顺序结构用来表示一个计算操作序列。计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到序列的最后一个操作,如下图所示。顺序结构内也可以包含其他控制结构。
                      
                      顺序结构示意图
                      选择结构
                      选择结构提供了在两种或多种分支中选择其中一个的逻辑。基本的选择结构是指定一个条件P,然后根据条件的成立与否决定控制流走计算A还是计算B,从两个分支中选择一个执行,如下图(a)所示。选择结构中的计算A或计算B还可以包含顺序、选择和重复结构。程序语言中通常还提供简化了的选择结构,也就是没有计算B的分支结构,如下图(b)所示。
                      
                      选择结构示意图
                      循环结构
                      循环结构描述了重复计算的过程,通常由三部分组成:初始化、循环体和循环条件。其中初始化部分有时在控制的逻辑结构中不进行显式的表示。循环结构主要有两种形式:while型循环结构和do-while型循环结构。while型结构的逻辑含义是先判断条件P,若成立则执行循环体A,然后再去判断条件P;否则控制流就退出循环结构,如下图(a)所示。do-while型结构的逻辑含义是先执行循环体A,然后再判断条件P,若成立则继续执行A的过程并判断条件;否则控制流就退出循环结构,如下图(b)所示。
                      
                      循环结构示意图
                      C/C++语言中的控制语句
                      (1)复合语句。复合语句用于描述顺序结构。复合语句是一系列用“{”和“}”括起来的声明和语句,其主要作用是将多条语句组成一个可执行单元。语法上能出现语句的地方都可以使用复合语句。复合语句是一个整体,要么全部执行,要么一条语句也不执行。
                      (2)if语句和switch语句。
                      ①if语句实现的是双分支的选择结构,其一般形式为:
                      
                      其中,语句1和语句2可以是任何合法的C/C++语句,当语句2为空语句时,可以简化为:
                      
                      使用if语句时,需要注意if和else的匹配关系。C/C++语言规定,else总是与离它最近的尚没有else的if相匹配。
                      ②switch语句描述了多分支的选择结构,其一般形式为:
                      
                      执行switch语句时,首先计算表达式的值,然后用所得的值与列举的常量表达式值依次比较,若任一常量表达式都不能与所得的值相匹配,则执行default的“语句n+1”,然后结束switch语句。若表达式的值与常量表达式i(i=1,2,…,n)的值相同,则执行“语句序i”,当case i的语句i中无break语句时,则执行随后的语句i+1,语句i+2……直到执行完语句n+1后,才退出switch语句;或者遇到break时跳出switch语句。要使得程序在执行“语句i”后结束整个switch语句,则语句i中应包含控制流能够到达的break语句。
                      常量表达式通常为字符型或整型。多个常量表达式可以共用一个语句组。
                      (3)循环语句。C/C++语言中有while、do-while和for三种循环语句,用于描述循环计算的控制结构。
                      ①while语句。while语句描述了先判断条件再执行循环体的控制结构,其一般形式是:
                      
                      其中,循环体语句多于一条时,应使用“{”和“}”括起来。执行while语句时,先计算条件表达式的值,当值为非0时,就执行循环体语句,然后重新计算条件表达式的值后再进行判断,否则就结束while语句的执行过程。
                      ②do-while语句。do-while语句描述了先执行循环体再判断条件的控制结构,其一般格式是:
                      
                      执行do-while语句时,先执行其循环体语句,然后再计算条件表达式的值,若值为非0,则再一次地执行循环体语句,计算条件表达式并进行判断,直到条件表达式的值为0时,才结束do-while语句的执行过程。
                      ③for语句。for语句的基本格式是:
                      
                      可用while语句等价地表示为:
                      
                      for语句的使用是很灵活的,其内部的三个表达式都可以省略,但用于分隔三个表达式的分号“;”不能遗漏。
                      C/C++语言中还有实现控制流跳转的goto、break和continue语句,由于使用goto有可能导致程序的逻辑结构不够清晰,因此不提倡使用。
                      程序语言的传输成分指明语言允许的数据传输方式,如赋值处理、数据的输入和输出等。
               函数
               函数是程序模块的主要成分,它是一段具有独立功能的程序代码。C程序由一个或多个函数组成,每个函数都有一个名字,其中有且仅有一个名字为main的函数,作为程序运行时的起点。函数的使用涉及三个概念:函数定义、函数声明和函数调用。
                      函数定义
                      函数的定义包括两部分:函数首部和函数体。函数的定义描述了函数做什么和怎么做。函数定义的一般格式是:
                      
                      函数首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数及类型。函数所实现的功能在函数体部分进行描述。
                      C/C++程序中所有函数的定义都是独立的。在一个函数的定义中不允许定义另外一个函数,也就是不允许函数的嵌套定义。
                      函数声明
                      对于函数,应该先声明后引用。如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为:
                      
                      使用函数原型的目的是告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义时参数的类型,以使编译器能更彻底地检查源程序中对函数的调用是否合适。
                      函数调用
                      当在一个函数(称为主调函数)中需要使用另一个函数(称为被调函数)实现的功能时,便以名字进行调用,称为函数调用。在使用一个函数时,只要知道如何调用就可以了,并不需要了解被调用函数的内部实现。因此,主调函数需要知道被调函数的名字、返回值和需要向被调函数传递的参数(个数、类型、顺序)等信息。函数调用的一般形式为:
                      
                      在C程序的执行过程中,通过函数调用实现了函数定义时描述的功能。函数体中若调用自己,则称为递归调用。
                      调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数;另一种是通过参数带回信息。函数调用时实参与形参间交换信息的方法有值调用和引用调用两种。
                      (1)值调用(Call by value)。若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为是传值调用。这种方式下形参不能向实参传递信息。
                      在C语言中,要实现被调用函数对实参的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。本质上仍属于值调用。这种方式实现了间接内存访问。
                      (2)引用调用(Call by Reference)。引用是C++中增加的数据类型,当形参为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变。例如:
                      
                      函数调用:swap(a,b);。
                      在实现调用swap(a,b)时,x、y就是a、b的别名,因此,函数调用完成后,交换了a和b的值。
 
       分包
        中标人应当按照合同约定履行义务,完成中标项目。中标人不得向他人转让中标项目,也不得将中标项目肢解后分别向他人转让。中标人按照合同约定或者经招标人同意,可以将中标项目的部分非主体、非关键性工作分包给他人完成。接受分包的人应当具备相应的资格条件,并不得再次分包。中标人应当就分包项目向招标人负责,接受分包的人就分包项目承担连带责任。
   题号导航      2020年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第13题    在手机中做本题
    在线人数   共计 15700人 在线 
    115472160@..     lirunsheng..     szphjs@163..     haioufei18..     mtq518@163..     liyingxia_..
    xinzhonga3..     657245894@..     0533chugua..     shaoqinliu..     fuliangfen..     tly256688@..
    guyeli2518..     zhandl@263..     344175482@..     cyryx@126...     whneeds@12..     ailism@126..
    yjli@se.cu..     laoliu6258..     zhangfangx..     chenxiaohw..     learningto..     guxunmin@s..
    happy_yqb@..     635097875@..     LY9851201@..     xibaomin@s..     408718571@..     cpl008@163..
    fengyunk83..     lwq2211@si..     mayue_1206..     dzzz0305@1..     heweiping2..     wangfengyu..
    38200328@q..     mould-mast..     refel@126...     dengxiaole..     lqx.phy@16..     xq1968@163..

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。



京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2025 All Rights Reserved 软考在线版权所有