暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【软件评测师】考点59——程序设计语言的三种控制结构

昊洋与你一起成长 2021-10-14
2461

程序设计语言的三种控制结构是软件评测师考试的重要考点,经常出现在上午场的客观选择题当中,下午场白盒测试也会涉及控制成分指明语言允许表述的控制结构,程序开发人员使用控制成分来构造程序中的控制逻辑。理论上已经证明,可计算问题的程序都可以用顺序、选择和循环这三种控制结构来描述。下面就该知识点并结合例题进行总结学习。


一、顺序结构

顺序结构用来表示一个计算操作序列,整个程序整体上都是符合从上到下的顺序操作的。计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到序列的最后一个操作,顺序结构内也可以包含其他控制结构,其中各语句可以用“{”和“}”括起来表示自己的控制范围,被括起来的所有语句组成一个可执行的单元。如下图所示:

二、选择结构

选择结构提供了在两种或多种分支中选择其中之一的逻辑。基本的选择结构是指定一个条件P,然后根据条件的成立与否决定控制流走A还是走B,只能从两个分支中选择一个来执行,如下图(a)所示。这种结构经常用if...else语句来表示,格式为:

if(表达式)

    语句1;

else

    语句2;

选择结构中的A或B还可以包含顺序、选择和循环结构。

程序设计语言中通常还提供简化了的选择结构,当上面语句2为空语句时,可以简化为:

if(表达式)

    语句1;

如下图(b)所示,此时语句B是不存在的,但是不成立这条分支是存在的,此时经常用if语句表示。

使用if语句时,需要注意if和else的匹配关系,else总是与离它最近的尚没有else的if相匹配。

程序设计语言通常还提供描述多分支的选择结构,例如switch语句。switch语句描述了多分支的选择结构,其一般形式为:


switch (表达式) {

    case 常量表达式1:语句1;

    case 常量表达式2:语句2;

    ...

    case 常量表达式n:语句n;

    default:语句n+1;

}

执行switch语句时,首先计算表达式的值,然后用所得的值与列举的常量表达式的值依次比较,若常量表达式1至常量表达式n都不能与表达式的值相匹配,就执行在default部分的“语句序列n+1",然后结束switch语句。若所得的值与常量表达式i(i=1,…,n)的值相同,则执行“语句序列i”,当case i的语句序列i中没有break语句时,则执行随后的语句序列i+1,语句序列i+2...直到语句序列n+1执行完成后,才退出switch语句;或者遇到了break而跳出switch

语句。要使得程序在执行完“语句序列i”后结束整个switch语句,在语句序列i中应包含控制流能够到达的break语句。


三、循环结构

循环结构描述了重复计算的过程,通常由三个部分组成:初始化、需要重复计算的部分和重复的条件。其中,初始化部分有时在控制的逻辑结构中不进行显式的表示。重复结构主要有两种形式:while/for型重复结构和do-while型重复结构。while/for型结构的逻辑含义是先判断条件P,若成立,则进行需要重复的计算A,然后再去判断重复条件;否则,控制就退出重复结构,如下图所示。

(1)while语句

while语句描述了先判断条件再执行重复计算的控制结构,while语句的一般形式是:

while (条件表达式)

循环体语句;

其中,循环体语句是内嵌的语句,当循环体语句多于一条时,应使用“{”和“}”括起来。执行while语句时,先计算条件表达式的值,当值为非0时,就执行循环体语句,然后重新计算条件表达式的值后再进行判断,否则就结束while语句的执行过程。


(2)for语句

for语句的基本格式是:

for(表达式1;表达式2;表达式3)

循环体语句; 

一般表达式1用于赋初始值,表达式2用于判定循环条件是否成立,表达式3用于变量值的变化操作,例如自增1操作等。

用while语句等价地表示为:

表达式1;

while(表达式2){

循环体语句;

表达式3;

}

for语句的使用很灵活,其内部的三个表达式都可以省略,但用于分隔三个表达式的分号不能遗漏。



do-while型结构的逻辑含义是先执行循环体A,然后再判断条件P,若成立则继续执行循环体A的过程并判断条件;否则,控制就退出重复结构,如下图所示。

(3)do-while语句

do-while 语句描述了先执行需要重复的计算再判断条件的控制结构,其一般格式是:

do

    循环体语句;

while (条件表达式);

执行do-while语句时,先执行内嵌的循环体语句,然后再计算条件表达式的值,若值为非0,则再次执行循环体语句和计算条件表达式并判断,直到条件表达式的值为0时,才结束do-while语句的执行过程。所以do-while循环体的执行次数刚好等于循环条件的判断次数。




下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。

【2017年第18题】在单入口单出口的do...while循环结构中,( )

A、循环体的执行次数等于循环条件的判断次数

B、循环体的执行次数多于循环条件的判断次数

C、循环体的执行次数少于循环条件的判断次数

D、循环体的执行次数与循环条件的判断次数无关


解析:本题考查程序语言循环结构的基础知识。

do…while为先执行后判断,执行次数和判断次数相等。

故正确答案为:A


【2019年第22题】在C程序中,对于如下的两个for语句,其运行后a和b的值分别为( )。

for(int a=0;a==0; a++);             

for(int b=0; b=0;++b);

A、0,0      

B、0,1     

C、1,0      

D、1,1


解析:本题考查程序设计语言的基础知识。

本题主要是学会区分赋值“=”与判等号“==”的不同意义。

for(int a=0;a==0; a++);语句中a==0成立1次,所以执行一次循环体,执行完a++后,a的值为1,最后不满足判定,跳出循环。

for(int b=0; b=0; ++b);b的初值为0,然后把0赋给b,此时b的值为0,为假,所以条件第一次就不成立,一次也不执行,最终b=0。

故正确答案为:C



作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101

写于2021年10月14日

作者:昊洋讲师

版权所有,侵权必究

文章转载自昊洋与你一起成长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论