第4章 结构化程序设计new
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语句块n 语句块n+1
4.2.1 条件语句
1.if语句 语法形式: if (表达式) { 语句; } 说明:如果表达式的值为true,则执行后面if语句所 控制的语句;如果表达式的值为false,则不执行if语 句控制的语句,而直接跳转执行后面的语句。 注意:如果if语句块中只有一条语句,则大括号“{ }” 可以省略。
C#异常处理机制 创建和引发异常
目的要求:
理解算法的概念 掌握 if语句、switch分支语句、循环语句和异常处理语句的含义
重点难点:
if语句、循环语句和异常处理语句
4.1 顺序结构
4. 1.1 顺序结构的概念: 有些简单的程序是按程序语句的编写顺序依次执行的,这种 结构称为顺序结构。
语句块1
语句块2
2.if…else语句
语法: if (表达式) { 语句块1; } else { 语句块2; } 语句块3 说明:
Y
表达式!=0?
N 语句块2
语句块1 语句块3
如果表达式的值为true,则执行if语句所控制的语句块1,然后执行 语句块3; 如果表达式的值为false,则执行else语句所控制的语句块2 ,然后 执行语句块3 。
补充
Parse( )方法: 主要用于将数字的字符串表示形式转换为它的等效的 其他基本数字类型。 数据类型.Parse(字符串) 注意:数据类型可以使用C#数据类型,也可以使用CTS 例: string s=“18”; int a=int.Parse(s)-10; //a=8 int b=a+int.Parse(Console.ReadLine());
练习:
1.若int m, n, r; 则以下正确的是( b ) A.if (m<>n) r--; B.if (m==n) r--; C.if (!m) r--; D.if (m=<n) r--;
2. 程序改错。 if(x=1) y+=5; else; y+=10;
[思考与练习]
1.为铁路编写计算运费的程序。假设铁路托运行李,规定每张 客票托运费的计算方法是: 行李重量不超过 50 kg时,每千克0.25元;超过 50 kg而不超 过 100 kg时,其超过部分每千克0.35元;超过 100 kg时,其超 过部分每千克0.45元。 (编写完整的程序,上机实现) 分析:托运费的分段函数是什么?
答:设行李重量为w公斤,应付托运费为x元,则托运费 的分段函数是: (1)w<=50时, x=0.25*w (2)50<w<=100时,x=0.25*50+0.35*(w-50) (3)w>100时,x=0.25*50+0.35*50+0.45*(w-100)
double w,x=0; Console.Write(“请输入重量”); w = double.Parse(Console.ReadLine()) if (w <= 50) x = 0.25 * w; //不能写成: 50<w<=100 if (w>50 &&w <= 100) x = 0.25 * 50 + 0.35 * (w - 50); if (w>100) x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w - 100) Console.WriteLine(“运费为{0}”,x);
4-3-NestedIf.cs
【4-3-NestedIf.cs】多种分支逻辑实现
4.2.2 分支语句
格式:switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; …… [default: 语句n; break; ] }
控制表达式 取值1 语句块1 取值2 语句块2
Console.Write(“Enter a character:"); char Name=(char)Console.Read(); switch(Name) { case 'k': Console.WriteLine("Kate."); break; case 'm': Console. WriteLine("Mary."); break; case 'r': Console. WriteLine("Rose."); break; case 'T': Console. WriteLine("Tom."); break; default: Console.WriteLine("Other students. "); break; }
编程:计算下面公式中的b的值。 2a+1 (a ≤100) b= a (a >100)
using System; class value { static void Main( ) { Console.Write("请输入a的值:"); int a=int.Parse(Console.ReadLine()); int b=a; if(a<=100) { b=2*a+1; } Console.WriteLine("b={0}",b); } }
语句块3
语句块(Block)
{}括住的若干条语句构成一个语句块 语句块内可以定义变量
变量仅在定义它的语句块内(包括下层语句块)有效(局部变 量) 同一个语句块内的变量不可同名,不同语句块可同名 各司其职、下层优先 尽量不要定义同名变量
语句块可以用在任何可以使用语句的地方,但没有道理 要乱加语句块
4.1.2 顺序结构的实例
【例4.2】计算分段函数(4-2-SegFunction.cs)
sinx 2 x e 4 ( x 1) 3 x0 y x 2 8x e x0 ln(5 x) 7x
提示: Math.Sqrt() 平方根 Math.Sin() Math.Log() 对数
已知三角形的三条边(为简单起见,假设这三条边可 以构成三角形),求三角形的面积
4.2 选择结构
C#包括两种控制分支的条件语句:if语句和switch语句 if条件语句包含多种形式:单分支、双分支和多分支
条件1 假
条件
真 假
真
条件
假
真
条件2 假 真
„„
语句块
语句块1
语句块2
Hale Waihona Puke Baidu
条件n 假 真
„
语句块1 语句块2
例:编写程序计算圆的周长和面积。 using System; class Circle { static void Main( ) { const double PI= 3.141; double R, L, S; Console.Write("请输入圆的半径值:"); R=double.Parse(Console.ReadLine( )); L=2*PI*R; S=PI*R*R; Console.WriteLine("圆的周长为:{0}",L); Console.WriteLine("圆的面积为:{0} ",S); } }
语句块5
例:编写一个实现如下函数值的程序 -1, x<0 f(x)= 0, x=0 1, x>0
using System; class Test { static void Main( ) { Console.Write(“请输入x的值: "); double x=double.Parse(Console.ReadLine( )); int y; if (x>0) y=1; else if (x==0) y=0; else y=-1; Console.WrteLine(“Y={0}“,y); } }
练习:
1.下列程序运行后,输出的结果是( )。 double x=17.9; int y=3; y=(int)x%5; Console.WriteLine(y); 2. 若x=10, y=20, z=0,则表达式 “((m=(x>y)?x:y)>z)?m:z”的值为( )。
编程练习TriangleArea.cs
只用这三种结构的程序,叫结构化程序
流程图
选择结构 顺序结构 true false
循环结构
true
false
内容提要:
顺序结构 选择结构:if语句、switch语句 循环结构:for语句、while语句、do...while语句和foreach语句
跳转语句:goto、break、continue、return、throw
【例4.1】单分支示例:产生两个0~100之间的随机数a和b,比较两者大小,使得a大于b
编程:输入三个数,将它们从大到小排序
int a, b, c, t=0; Console.Write(“请输入第一个数:”); a= int.Parse(Console.ReadLine()); Console.Write(“请输入第二个数:”); b= int.Parse(Console.ReadLine()); Console.Write(“请输入第三个数:”); c= int.Parse(Console.ReadLine()); if (a < b) //本条件语句实现a>=b { t = a; a = b; b = t; } if (a < c) //本条件语句实现a>=c { t = a; a = c; c = t; } if (b < c) //本条件语句实现b>=c { t = b; b = c; c = t; } Console.WriteLine(“排序结果为: {0},{1},{2}”,a,b,c);
3.else if语句
else if语句是if语句和if…else语句的组合,其一般形式如下: if (表达式1) N 表达式1!=0? 语句1; N else if (表达式2) Y 表达式2!=0? 语句2; N 语句块1 Y 表达式3!=0? …… 语句块2 Y else if (表达式n-1) 语句n-1; 语句块3 else 语句块4 语句n;
在使用这种结构时,要注意else和if的配对关系,其原则是:从第1个 else开始,一个else总和它上面离它最近的可配对的if配对。
例:
int a=int.Parse(Console.ReadLine( )); if (a>0) { if (a>20) a=2*a; { if (a<100) a=a-50; } else a=a+10; //这个else与if (a>100)相配 } else a=-a; // 这个else与if (a>0)相配 Console.WriteLine(“a=”,a);
„„ „„
取值n 语句块n
其他 语句块n+1
注意: C#要求每个case后使用break语句或跳转语句goto。所 有常量表达式的值不能相同。
编程:查询学生姓名,输入一个字符,如输入“k”时,显示Kate;输入“m”时, 显示Mary;输入“r”时,显示Rose;输入“T”时,显示Tom ;输入其他字符时, 显示Other Students.
Math.Abs() 绝对值 Math.Exp() e的指数 Math.Pow(x,y) 指数 xy Math.E e
ln5 :Math.Log(5) ; log45 :Math.Log(4,5) ;lg5: Math.Log10(5)
if…else语句嵌套
if (表达式1) if(表达式2) if(表达式3) …… 语句1; else 语句2; else 语句3; else 语句4;
编程:计算下面公式中的b的值。 2a+1 (a ≤100) b= a (a >100)
using System; class value { static void Main( ) { Console.Write("请输入a的值:"); int a=int.Parse(Console.ReadLine()); if(a<=100) { b=2*a+1; } else { b=a; } Console.WriteLine("b={0}",b); } }
第4章 结构化程序设计
三种基本结构
顺序结构、选择结构、循环结构 已经证明,任何程序均可只用这三种结构实现
BÖhm, Corrado, and Jacopini Guiseppe. "Flow diagrams, Turing machines and languages with only two formation rules." Communication of ACM, 9(5):366-371, May 1966.