免费智能真题库 > 历年试卷 > 软件设计师 > 2022年下半年 软件设计师 上午试卷 综合知识
  第48题      
  知识点:   程序设计语言的基本成分   异常处理   异常
  章/节:   计算机软件知识       

 
在Python3,()不是合法的异常处理结构。
 
 
  A.  try... except..
 
  B.  try...except...finally
 
  C.  try... catch...
 
  D.  raise
 
 
 

 
  第50题    2019年上半年  
   39%
函数f、g的定义如下,执行表达式“y = f(2)”的运算时,函数调用g(la)分别采用引用调用(call by reference)方式和值调用(call by..
  第64题    2010年下半年  
   32%
下面C程序段中count++语句执行的次数为(64)。
  第50题    2018年下半年  
   53%
函数f和g的定义如下图所示。执行函数f时若采用引用(call by reference)方式调用函数g(a),则函数f的返回值为( )。
   知识点讲解    
   · 程序设计语言的基本成分    · 异常处理    · 异常
 
       程序设计语言的基本成分
               数据成分
               程序语言的数据成分是指一种程序语言的数据类型。
               1)常量和变量
               按照程序运行时数据的值能否改变,将数据分为常量和变量。程序中的数据对象可以具有左值和(或)右值,左值是指存储单元(或地址、容器),右值是指具体值(或内容)。变量具有左值和右值,在程序运行过程中其右值可以改变;常量只有右值,在程序运行过程中其右值不能改变。
               2)全局量和局部量
               按数据的作用域范围,数据可分为全局量和局部量。系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是动态改变的。
               3)数据类型
               按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类型。C(C++)的数据类型如下。
               .基本类型:整型(int)、字符型(char)、实型(float、double)和布尔类型(bool)。
               .特殊类型:空类型(void)。
               .用户定义类型:枚举类型(emum)。
               .构造类型:数组、结构体和共用体。
               .指针类型:type*。
               .抽象数据类型:类类型。
               其中,布尔类型和类类型是C++在C语言的基础上扩充的。
               运算成分
               程序语言的运算成分是指允许使用的运算符号及运算规则。大多数高级程序语言的基本运算可以分成算术运算、关系运算和逻辑运算,有些语言还提供位运算。运算符号的使用与数据类型密切相关。为了确保运算结果的唯一性,运算符号要规定优先级和结合性,必要时还要使用圆括号。
               控制成分
               控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制逻辑。
               1)顺序结构
               在顺序结构中,计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到执行完序列的最后一个操作。顺序结构内也可以包含其他控制结构。
               2)选择结构
               选择结构提供了在两种或多种分支中选择执行其中一个分支的逻辑。基本的选择结构是指定一个条件P,然后根据条件的成立与否决定控制流走计算A还是走计算B,从两个分支中选择一个执行。选择结构中的计算A或计算B还可以包含顺序、选择和重复结构。程序语言中通常还提供简化了的选择结构,也就是没有计算B的分支结构。
               3)循环结构
               循环结构描述了重复计算的过程,通常包括3个部分,即初始化、需要重复计算的部分和重复的条件。其中初始化部分有时在控制的逻辑结构中不进行显式表示。循环结构主要有两种形式,即while型重复结构和do-while型重复结构。
               4)C(C++)语言提供的控制语句
               (1)复合语句。复合语句用于描述顺序控制结构。复合语句是一系列用"{"和"}"括起来的声明和语句,其主要作用是将多条语句组成一个可执行单元。复合语句是一个整体,要么全部执行,要么一条语句也不执行。
               (2)if语句和switch语句。这两种语句用于实现选择结构。
               ①if语句实现的是双分支的选择结构,其一般形式如下:
               
               其中,语句1和语句2可以是任何合法的C(C++)语句,当语句2为空语句时,可以简化为
               
               使用if语句时,需要注意的是if和else的匹配关系。C语言规定,else总是与离它最近的尚没有else与其匹配的if相匹配。
               ②switch语句描述了多分支的选择结构,其一般形式如下:
               
               执行switch语句时,首先计算表达式的值,然后用所得的值与列举的常量表达式值依次比较,若任一常量表达式都不能与所得的值相匹配,则执行default的"语句序列n+1",然后结束switch语句。
               表达式可以是任何类型,常用的是字符型或整型表达式。多个常量表达式可以共用一个语句组。语句组可以包括任何可执行语句,且无须用"{"和"}"括起来。
               (3)循环语句。C(C++)语言提供了3种形式的循环语句,用于描述循环计算的控制结构。
               ①while语句。while语句描述了先判断条件再执行循环体的控制结构,其一般形式如下:
               
               ②do-while语句。do-while语句描述了先执行循环体再判断条件的控制结构,其一般格式如下:
               
               ③for语句。for语句的基本格式如下:
               
               可用while语句等价地表示为
               
               函数
               函数是程序模块的主要成分,它是一段具有独立功能的程序。函数的使用涉及3个概念,即函数定义、函数声明和函数调用。
               (1)函数定义。包括函数首部和函数体两个部分。函数的定义描述了函数做什么和怎么做。
               (2)函数声明。函数应该先声明后引用。函数声明定义了函数原型。声明函数原型的目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义中的参数类型。函数原型可以使编译器检查源程序中对函数的调用是否正确。
               (3)函数调用。当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实现的功能时,便以函数名字进行调用,称为函数调用。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数;另一种是通过参数带回信息。函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。
               ①传值调用(Call by Value)。若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为传值调用。这种方式下形式参数不能向实际参数传递信息。在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参,本质上仍属于传值调用。这种方式实现了间接内存访问。
               ②引用调用(Call by Reference)。引用是C++中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变。
 
       异常处理
        1)异常概念
        异常,即出错,比如0作为除数、找不到类、打开文件错误、数组越界等。异常如果不进行处理,那么程序运行就会结束;如果进行处理,那么会在执行完异常处理代码后继续运行。
        Java中所有异常类均继承自类Exception。
        Java中的异常类层次结构如下:
        
        此外,还有EOFException、 FileNotFoundException、 MalformedURLException等。
        2)捕获异常
        异常处理的典型用法如下,将可能出现异常的代码放在try块中,其后由一个或多个catch捕获相应异常进行处理,注意只执行第一个匹配的catch块,忽略后面的。
        
        如果某个方法中所产生的异常该方法自己没有处理,那么可以在调用该方法的方法中进行处理,如果自己处理了,那么调用它的方法就无法得到该异常。
        3)抛出异常
        异常除了运行中系统产生的之外,也可以主动抛出异常,用关键字throw,如throw new Exception()。注意:throw只能抛出Throwable子类的异常。
        4)带throws关键字的方法
        带throws关键字的方法声明如下:
        
        强制调用该方法的方法必须处理可能发生的异常,或者将异常重新定向。假定方法A带throws关键字,而方法B中调用了方法A,则方法B中必须有处理方法A中可能产生的异常的语句,或者方法B也带throws关键字,指明调用方法B的方法必须处理异常。
 
       异常
        异常是一种形式的异常控制流,它一部分是由硬件实现的,一部分是由操作系统实现的。因为它们有一部分是由硬件实现的,所以具体细节将随系统的不同而有所不同。然而,对于每个系统而言,基本的思想都是相同的。
        异常(exception)就是控制流中的突变,用来响应处理器状态中的某些变化。异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和中止(abort)。下表对这些类别的属性做了小结。
        
        异常的类别
        (1)陷阱。陷阱是有意的异常,是执行一条指令的结果。就像中断处理程序一样,陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。
        用户程序经常需要向内核请求服务,例如读一个文件、创建一个新的进程、加载一个新的程序或者中止当前进程。为了允许对这些内核服务的受控的访问,处理器提供了一条特殊的syscall指令,当用户程序想要请求服务n时,可以执行这条指令。执行syscall指令会导致一个到异常处理程序的陷阱,这个处理程序对参数解码,并调用适当的内核程序。
        (2)故障。故障由错误情况引起,它可能被故障处理程序修正。当一个故障发生时,处理器将控制转移给故障处理程序。如果处理程序能够修正这个错误情况,它就将控制返回到故障指令,从而重新执行它。否则,处理程序返回到内核中的abort例程,abort例程会中止引起故障的应用程序。
        (3)中止。中止是不可恢复的致命错误造成的结果,典型的是一些硬件错误,例如DRAM或者SRAM位被损坏时发生的奇偶错误。中止处理程序从不将控制返回给应用程序。处理程序将控制返回给一个abort例程,该例程会中止这个应用程序。
   题号导航      2022年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第48题    在手机中做本题