【c++基础】4.程序控制结构概述
来源:互联网 发布:网络贩枪案 编辑:程序博客网 时间:2024/05/24 00:47
【一】语句级控制结构
语句级控制结构是控制语句执行顺序的机制。语句就是以分号分隔的一个个执行句子。
1.顺序结构
顺序结构是最基本也是最简单的语句级控制结构,也就是语句按顺序执行。c++中语句是以分号分隔开的。
2.分支结构
c++中分支结构有两种实现方式,分别是if和switch语句。
if语句又有多种形式,如下:
//第一种,当满足条件时执行语句,不满足则跳过if(expression){//execute statement;...}
//第二种,当满足条件是执行,不满足时执行else部分if(expression){//execute statement;...}else{//execute statement;}
//第三种,else if可以嵌套,但每一个else都必须对应一个if,在c++中,else总是对应与其最近的前一个ifif(expression){//execute statement;...}else if{expression){//execute statement;}else{//execute statement;}
switch语句是通过expression的结果进行选择,执行与之匹配的value对应的case后面的语句,直到第一个break时结束,注意,如果某个case没有对应的break,那么将会继续执行下一个case,直到遇到break。
格式如下:
switch(expression){case value1://execute statement;break;case value2://execute statement;break;....defaule://表示没有对应expression的case时执行这个//execute statement;break;}
3.循环结构
c++中循环结构有三种实现方式,分别是for,while,do/while。
for语句的执行顺序为:
①首先执行expression1,可以是任何语句,这只会被执行一次,而且一定会被执行;
②然后执行expression2语句,这一般是一个判断表达式,如果值为TRUE,则继续执行,否则跳出循环。
③第三步是执行execute statement部分的语句,
④第四步是执行expression3
⑤ 然后跳回到第②步,如此循环。
值得注意的是:这三个表达式都可以为空,若第二个表达式即判断条件为空时,只有从循环内部中断循环,如使用break跳过循环或者exit()直接结束程序等。
格式如下:
for(expression1;expression2;expression3){//execute statement;....}
while语句的执行顺序为:
①执行expression,这个一般是一个判断语句,为TRUE时继续执行,否则跳出循环
②然后执行execute statement部分
③回到第①步,如此循环
while(expression){//execute statement;...}
do/while语句执行顺序如下:
①执行execute statement部分语句
②执行expression判断语句,若为TRUE,则返回①,否则跳出循环
do{//execute statement;...}while(expression)
总结:三个循环方式都可以达到循环的效果,没有优劣之分,只是有时候因应用场景不一样,比如do/while中,execute statement部分一定会被执行一次,而for和while语句可以不被执行直接跳过循环,具体选用哪种方法,还要看具体应用场景,多写代码吧。
提示:判断语句部分的表达式,结果不一定要bool值,c++中将非0值都当TRUE处理,为0时才为FALSE。
4、程序跳转
break语句
break顾名思义就是“打破”的意思,该语句用于结束循环语句(for/do…while/while)和switch分支语句块,跳转到该语句块的后面进行执行,switch语句的break上面已经讲过了,下面将循环语句的内部结束方式,以while语句为例,for和do…while大同小异:
int i=10;while(1){//这是一个死循环,必须从内部打破 i--; if(i==0)//判断若i=0,则跳出循环 break; cout<<i<<'\t';}
这完全等价于:
int i=10;while(i!=0){//这是一个死循环,必须从内部打破 i--; cout<<i<<'\t';}
输出为:
9 8 7 6 5 4 3 2 1
continue语句
continue语句用于跳过循环语句(for/do…while/while)的本次循环,进行下一次循环,依然以while为例:
int i=10;while(1){//这是一个死循环,必须从内部打破 i--; if(i==2)//如果i=2则跳过本次循环,进行下一次循环,continue后面的就不执行了 continue; if(i==0)//判断若i=0,则跳出循环 break; cout<<i<<'\t';}
输出为:
9 8 7 6 5 4 3 1
goto语句
goto语句是无条件转移指令(显式修改程序计数器ip指针)的抽象,用于在语句间进行跳转,其语法中,在跳转的目标语句前设置一个标签(label),在需要跳转的地方用goto label语句来进行跳转。如下例,实现了一个循环:
int main(){int a=10;loop:if(a>=0){a--;goto loop;}return 0;
goto语句的滥用会使程序可读性变差,使编译优化变得困难,而且90%以上的goto语句都可以使用其他语句来避免,故不是特别需要一般建议不要使用goto语句。
【二】单元级控制结构
1、显式调用
通过函数的显示调用,将程序执行顺序从主调函数转移到被调函数,在宏观上还是顺序执行。
2、异常处理—隐式调用
异常是程序运行过程中的异常错误,c++中以类进行封装,成为异常类。
C++的异常处理机制有3部分组成:try(检查),throw(抛出),catch(捕获)。try用于检查是否抛出异常,try语句块中至少包含一个throw,即抛出异常,发出错误信息,由catch来捕获异常信息,并加以处理。
一般throw抛出的异常要和catch所捕获的异常类型所匹配。catch只捕获与之类型匹配的异常,若该catch类型不匹配,就结束该函数,继续像外(主调函数)抛出该异常,直到有匹配的处理catch为止,若直到main函数都没找到匹配的catch,则程序调用库函数terminate,效果如下:
异常处理的一般格式为:
try{ 被检查语句 throw 异常 } catch(异常类型1){ 进行异常处理的语句1 } catch(异常类型2){ 进行异常处理的语句2 } ...
- 【c++基础】4.程序控制结构概述
- C语言程序控制结构
- C语言程序控制结构
- C语言中的程序控制结构
- MATLAB基础5-MATLAB程序控制结构
- python基础系列(二)程序控制结构
- 程序控制结构
- 黑马程序员——C语言基础04—程序控制
- PLSQL程序控制结构
- Python程序控制结构
- scala程序控制结构
- R语言程序控制结构
- unit7 程序控制结构
- Oracle 程序控制结构
- python 程序控制结构
- 三.python程序控制结构
- matlab程序控制结构
- 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构
- ES6中Json的与Map之间的转换
- Python nose单元测试框架的安装与使用
- 【stm32f407】时钟树以及SystemInit剖析
- Java多线程-停止线程
- nsurlprotocol的理解和使用, 含demo, nice!
- 【c++基础】4.程序控制结构概述
- 消费者rebalance机制分析
- ES6中Set和WeakSet的使用
- kotlin---使用注释处理的 Android 框架
- jmeter入门——第一个jmeter脚本
- 二叉树的后序遍历
- ES6中箭头函数的使用
- Server Tomcat v7.0 Server at localhost failed to start.错误
- Ubuntu14.04 64bit编译u-boot-2016.07提示 Your dtc is too old, please upgrade to dtc 1.4 or newer。