流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
控制语句分为三类:顺序、选择和循环。
这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。上述两种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述两种结构。

循环结构

if单选择结构

if(布尔表达式){ 执行语句 }; if(布尔表达式){ 执行语句 };

if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。

if-else双选择结构

if(布尔表达式){ 语句块1 }else{ 语句块2 } if(布尔表达式){ 语句块1 }else{ 语句块2 }

当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。

if-else if-else多选择结构

if(布尔表达式1){ 语句1; } else if(布尔表达式2){ 语句2; } else if(布尔表示式n){ 语句n; } else { 语句n+1; } if(布尔表达式1){ 语句1; } else if(布尔表达式2){ 语句2; } else if(布尔表示式n){ 语句n; } else { 语句n+1; }

当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。

switch多选择结构

switch (表达式) { case 值1: 语句序列1; [break]; case 值2: 语句序列2; [break]; … … … … … [default: 默认语句;] } -- []可选 可写可不写 switch (表达式) { case 值1: 语句序列1; [break]; case 值2: 语句序列2; [break]; … … … … … [default: 默认语句;] } -- []可选 可写可不写

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。

循环结构

循环结构

循环结构分两大类,一类是当型,一类是直到型

当型:

当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。

直到型:

先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。

while循环

while(布尔表达式){ 循环体; } while(布尔表达式){ 循环体; }

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。

语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。

for循环

语法结构:

for(初始表达式;布尔表示式;迭代因子){ 循环体 } for(初始表达式;布尔表示式;迭代因子){ 循环体 }

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。

A. 初始化部分设置循环变量的初值

B. 条件判断部分为任意布尔表达式

C. 迭代因子控制循环变量的增减

for循环在执行条件判定后,先执行的循环体部分,再执行步进。

for循环结构的流程图如图3-18所示。
....