### 一、三种基本的结构化流程
顺序结构是三种结构中最简单的一种,即语句按照书写的顺序一条一条依次执行;分支结构又称选择结构,它将根据计算所得的表达式的值来判断应选择哪一个流程分支去执行;循环结构则是在一定条件下反复执行某一段语句的流程结构。这三种结构构成了程序局部模块的基本框架,如图2.10所示。
![1631425476389](C:\Users\86172\AppData\Roaming\Typora\typora-user-images\1631425476389.png)
### 二、分 支 语 句
#### 1.if语句
**(****1****)****if****框架**
语法形式:
```
if (条件表达式) 语句;
```
如果条件为真,则执行语句。在语法上这里的语句是指单个语句,若想执行一组语句,可将这一组语句用“{”和“}”括起来构成一个语句块。在语法上,语句块就是一条语句,下面涉及的语句都是这个概念。
**例如:**
```
if ( x<0 ) x = x ; // 取x的绝对值
if (a+b>c && b+c>a && a+c>b) // 判断数据合法性
{
p = (a+b+c) / 2 ;
s = Math.Sqrt (p * (pa) * (pb) * (pc) ) ; // 求三角形面积
}
```
**(****2****)****if_else****框架**
语法格式:
```
if (条件表达式)
语句1;
else
语句2;
```
如果条件表达式为真,执行语句1;否则,执行语句2。
例如:
```
if (a+b>c && b+c>a && a+c>b) // 判断数据合法性
{
p = (a+b+c) / 2 ;
s = Math.Sqrt (p * (pa) * (pb) * (pc) ) ; // 求三角形面积
}
else
Console.WriteLine (" 三角形的三条边数据有错!" ) ;
```
**(****3****)****if_else** **if****框架**
语法形式:
```
if (条件表达式1)
语句1 ;
else if (条件表达式2)
语句2 ;
else if (条件表达式3)
语句3 ;
…
[ else
语句n ;]
```
这种语句执行时,从上往下地计算相应的条件表达式,如果结果为真则执行相应语句,跳过 if_else if 框架的剩余部分,直接执行框架后的下一条语句;如果结果为假,则继续往下计算相应的条件表达式,直到所有的条件表达式都不成立,则执行这个语句的最后部分 else所对应的语句,如果没有else语句则程序终止。
例如:
```
if (studentGrade>=90)
Console.WriteLine ("成绩优秀");
else if (studentGrade>=80)
Console.WriteLine ("成绩良好");
else if (studentGrade>=60)
Console.WriteLine ("成绩及格");
else
Console.WriteLine ("成绩不及格");
```
**(****4****)嵌套的****if****语句**
在if语句框架中,无论条件表达式为真或为假,将要执行的语句都有可能又是一个if语句,这种if语句包含if语句的结构就称为嵌套的if语句。为了避免二义性,C#规定:**else****语句与和它处于同一模块最近的****if****相匹配**。例如:
假设有一函数
![1631425598149](C:\Users\86172\AppData\Roaming\Typora\typora-user-images\1631425598149.png)
下面是用嵌套的if语句缩写的程序片段。
```
y=0;
if (x>=0)
if (x>0)
y=1 ;
else y=1;
```
这个else与最近的if匹配,那么else的含义就是x=0的情况,所以这个程序逻辑上是错误的,应修正为:
```
y=0;
if (x>=0)
{
if (x>0)
y=1 ;
}
else y=1;
`