C#结构化程序设计ppt课件.ppt
《C#结构化程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《C#结构化程序设计ppt课件.ppt(98页珍藏版)》请在三一办公上搜索。
1、第4章 结构化程序设计,本章主要介绍结构化程序设计的概念,三种基本控制结构以及C#中的常用语句。程序是由语句构成的,C#的常用语句包括:简单语句、条件语句、分支语句、循环语句、跳转语句等。只有很好地掌握程序设计语言的各种语句,才能构造正确的和结构良好、清晰的程序。,2,C#程序设计实用教程,4.1 结构化程序设计的概念,结构化程序设计的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都是由顺序、选择、循环三种基本控制结构进行构造 。,3,C#程序设计实用教程,4.1.1 结构化程序设计的概念及算法的概念,结构化程序设计是以模块化设计为中心,将待开发的软件系
2、统划分为若干个相互独立的模块。由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便。按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。,4,C#程序设计实用教程,4.1.1 结构化程序设计的概念及算法的概念,结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。“自顶向下、逐步求精”的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本
3、程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。,5,C#程序设计实用教程,4.1.1 结构化程序设计的概念及算法的概念,结构化程序设计的实质是控制编程中的复杂性。在此,我们来关注一下程序设计的主要步骤:(1)分析问题。 (2)确定算法。(3)画出程序流程图。(4)编写程序。 (5)调试程序。 (6)建立健全的文档资料。,6,C#程序设计实用教程,4.1.1 结构化程序设计的概念及算法的概念,其中,关键问题在于第2个步骤,即“算法设计”。 所谓“算法”,
4、粗略地讲,是为解决一个特定问题而采取的确定的有限的步骤。这里所说的算法,是指计算机能执行的算法。只有算法是正确的,写程序就不会有太大的困难。一个程序员应该掌握如何设计一个问题的算法或者采用已有的可行算法。计算机算法可以采用流程图来表示。,7,C#程序设计实用教程,4.1.2 流程图,流程图(Flowchart),它是用一些几何框图、流向线和文字说明来表示各种类型的操作。计算机算法可以用流程图来表示,图4-1、图4-2、图4-3和图4-4是用流程图表示了结构化程序设计的3种基本结构。,8,C#程序设计实用教程,4.2 顺序结构,顺序结构的流程图如图4-1所示,先执行A语句,再执行B语句,两者是顺
5、序执行的关系。A、B可以是一个简单语句,也可以是一个基本结构,即顺序结构、选择结构或者循环结构之一。常用的简单语句包括空语句、复合语句、标签语句、声明语句和表达式语句等。,9,C#程序设计实用教程,4.2.1 空语句,空语句是一种最简单的语句,它不实现任何功能,C#的空语句的形式如下:;即只有一个分号的语句。在不需要执行任何操作但又需要一条语句时,可以采用空语句来表示。,10,C#程序设计实用教程,4.2.2 复合语句,可以用把一些语句包括起来成为复合语句,或者称为块。例如,下面就是一条复合语句: int X, Y, Z; X = 9; Y = X + 10; Z = X * Y;,11,C#
6、程序设计实用教程,4.2.3 标签语句,C#程序允许在一条语句前面使用标签前缀,其形式如下:标签名称:语句标签语句主要用于配合goto语句来完成程序的跳转功能,例如:if (X 0) goto Large;X = -X;Large: return X;,12,C#程序设计实用教程,4.2.4 顺序结构的实例,【例4-1】编写程序计算圆的面积。using System;namespace OrderStructure class Circle static void Main() const double PI = 3.14159; double R, S; Console.WriteLine(
7、请输入圆的半径:); R = double.Parse(Console.ReadLine(); S = PI * R * R; Console.WriteLine(圆的面积为:0, S); ,13,C#程序设计实用教程,4.2.4 顺序结构的实例,上面这段程序就是一个典型的顺序结构。在Circle类的Main方法中,程序根据语句出现的顺序依次执行,先是在程序中输入一个半径值,然后根据计算公式计算出圆的面积,最后将圆的面积的值进行输出。,14,C#程序设计实用教程,4.3 选择结构,在实际的运算中,往往要进行复杂的逻辑判定,即给出一些条件,让程序判定是否满足条件,并按不同的情况让程序进行不同的处
8、理。比如,输入一个考试成绩,判定它是优、良、中、及格或不及格等。或者输入两个字母,比较其ASCII码的大小,然后根据不同的情况进行相应的处理。这些问题是需要由程序按给定的条件进行比较和判定,并按判定后的不同情况进行处理,这时就需要用到选择结构。,15,C#程序设计实用教程,4.3 选择结构,选择结构也是一种常用的基本结构,是根据所定选择条件为真与否,而决定从各个不同的操作分支中执行某一分支的相应操作。常用的选择结构有条件语句和分支语句。,16,C#程序设计实用教程,4.3.1 条件语句,常用的条件语句有如下几种。1. if语句if语句是基于布尔表达式的值来判定是否执行后面的内嵌的语句块,其语法
9、形式如下:if(表达式)语句块;,17,C#程序设计实用教程,4.3.1 条件语句,说明:如果表达式的值为true(即条件成立),则执行后面的if语句所控制的语句块,如果表达的值为false(即条件不成立),则不执行if语句控制的语句块。然后再执行程序中的后一条语句。if语句的程序流程图如图4-5所示。如果if语句只控制一条语句,则大括号“”可以省略。,18,C#程序设计实用教程,【例4-2】编写程序实现从键盘上输入一个数,输出它的绝对值。using System;class AbsDemo static void Main() int x, y; string str; Console.Wr
10、iteLine(请输入x的值:);,str = Console.ReadLine(); x = Convert.ToInt32(str); y = x; if(x0) y=-x; Console.WriteLine(|0|=1, x, y); ,19,C#程序设计实用教程,4.3.1 条件语句,说明:在上例中,if条件表达式是判定x的取值是否小于0,如果x小于0,则执行if语句的控制语句“y=-x”,即将y赋值为x的绝对值;否则,不执行该控制语句,而保持y为x的输入数。,20,C#程序设计实用教程,4.3.1 条件语句,2. ifelse语句ifelse语句是一种更为常用的选择语句。ifels
11、e语句的语法如下:if(表达式)语句块1;else语句块1;,21,C#程序设计实用教程,4.3.1 条件语句,说明:如果表达式的值为true(即条件成立),则执行后面的if语句所控制的语句块1,如果表达的值为false(即条件不成立),则执行if语句控制的语句块2。然后再执行程序中的后一条语句。if语句的程序流程图如图4-6所示。,22,C#程序设计实用教程,下面通过一个实例来说明ifelse语句的用法。【例4-3】根据输入的学生成绩Score的值,显示其是否及格。using System;class Score static void Main() Console.WriteLine(请您
12、输入学生成绩:); int Score = int.Parse(Console.ReadLine();/转换为整数,if (Score = 60) Console.WriteLine(该成绩合格。); else Console.WriteLine(该成绩不合格。); ,23,C#程序设计实用教程,4.3.1 条件语句,说明:上例中if语句和else语句后的大括号“”可以省略,因为它们都只控制一条语句。但显而易见,加上大括号,程序的结构更加分明。,24,C#程序设计实用教程,4.3.1 条件语句,如果程序的逻辑判定关系比较复杂,通常会用到ifelse嵌套语句,if语句可以嵌套使用,即在判定之中又
13、有判定。其一般形式如下:if(表达式1) if(表达式2) if(表达式3) . 语句1; else 语句2; else 语句3;else 语句4;,在应用这种ifelse结构时,要注意else和if的配对关系,此配对关系是:从第1个else开始,一个else总是和它上面离它最近的可配对的if配对。,25,C#程序设计实用教程,请看下例:if (i = 80) if (j 100) c = d; else /这个else与if (k 100)相匹配, a = c; else /这个else与if (k = 80)相匹配 a = d; 注意:在此建议在应用ifelse嵌套语句时,即使控制一条语句
14、,也应该加上一对“”。,26,C#程序设计实用教程,4.3.1 条件语句,【例4-4】假设考查课的成绩按优秀、良好、中等、及格和不及格分为五等,但是实际的考试成绩是百分制的,分别对应的分数段为90100、8089、7079、6069、059。使用嵌套的ifelse语句将考试成绩转换为考查课成绩。程序代码如下所示:using System;class TestScore static void Main() int InputScore; string OutputScore; Console.WriteLine(请输入百分制分数:); InputScore = Convert.ToInt32(
15、Console.ReadLine();,27,C#程序设计实用教程,4.3.1 条件语句,if (InputScore = 70) if (InputScore = 80) if (InputScore = 90) OutputScore = 优秀; /优秀 else OutputScore = 良好; /良好 else OutputScore = 中等; /中等 ,28,C#程序设计实用教程,4.3.1 条件语句, else if (InputScore = 60) OutputScore = 及格; /及格 else OutputScore = 不及格; /不及格 Console.Writ
16、eLine(百分制下0分经转换,为5分制下的1, InputScore, OutputScore); ,29,C#程序设计实用教程,4.3.1 条件语句,3. else if语句else if语句是if语句和ifelse语句的组合,其一般形式如下:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式n-1)语句n-1;else语句n;,说明:当表达式1为true时,执行语句1,然后跳过整个结构执行下一条语句;当表达式1为false时,将跳过语句1去判定表达式2。若表达式2为true,则执行语句2,然后跳过整个结构去执行下一条语句,若表达式2为false则跳过语句2去
17、判定表达式3,依次类推,当表达式1、表达式2、表达式n-1全为假时,将执行语句n,再转而执行下一条语句。,30,C#程序设计实用教程,4.3.1 条件语句,【例4-5】实现如下功能,检查输入字符是否为小写字符、大写字符或为数字,否则,输入字符不是数字字符。程序代码如下所示:using System;public class Character static void Main() Console.Write(Enter a character:); char c = (char)Console.Read();,31,C#程序设计实用教程,4.3.1 条件语句,if (char.IsUpper(
18、c) Console.WriteLine(The character is uppercase.); else if(char.IsLower(c) Console.WriteLine(The character is lowercase.); else if(char.IsDigit(c) Console.WriteLine(The character is number.); else Console.WriteLine(The character is not alphanumeric.); ,32,C#程序设计实用教程,引申:若转换大小写的程序,怎么实现?,/ 三种方法实现的。usin
19、g System;using System.Collections.Generic;using System.Text;namespace 大小写转换 class Program static void Main(string args) /int x = Console.Read(); /char y = (char)x; /if (y = a ,注意这个句子是错误的:char x = char.Parse(Console.Read();Console.Read()返回的是一个unicode编码值,而不是字符串。,char x = Console.ReadKey().KeyChar;,4.3
20、.2 分支语句,当判定的条件有多个时,如果使用else if语句将会让程序变得难以阅读。而分支语句(switch语句)提供一个更为简洁的语法,以便处理复杂的条件判定。switch语句的一般格式如下:switch(表达式)case 常量表达式1;语句1;break;case 常量表达式1;语句2;break;,case 常量表达式n;语句n;break;default:语句n+1;break; ,37,C#程序设计实用教程,4.3.2 分支语句,说明:(1)首先计算switch后面的表达式的值。(2)如果表达式的值等于“case 常量表达式1”中常量表达式1的值,则执行语句1,然后通过break
21、语句退出switch结构,执行位于整个switch结构后面的语句;如果表达式的值不等于“case 常量表达式1”中常量表达式1的值,则判定表达式的值是否等于常量表达式2的值,依次类推,直到最后一个语句。(3)如果switch后的表达式与任何一个case后的常量表达式的值都不相等,若有default语句,则执行default语句后面的语句n+1,执行完毕后退出switch结构,然后执行位于整个switch结构后面的语句;若无default语句则退出switch结构,执行位于整个switch结构后面的语句。,38,C#程序设计实用教程,4.3.2 分支语句,【例4-6】假设考查课的成绩按优秀、良好
22、、中等、及格和不及格分为五等,但是实际的考试成绩是百分制的,分别对应的分数段为90100、8089、7079、6069、059。使用嵌套的switch语句将考试成绩转换为考查课成绩。程序代码如下所示:using System;class TestScore static void Main() int InputScore; string OutputScore; Console.WriteLine(请输入百分制分数:);,39,C#程序设计实用教程,4.3.2 分支语句,InputScore = Convert.ToInt32(Console.ReadLine(); int temp=Inp
23、utScore/10; switch (temp) case 10: OutputScore = 优秀; break; case 9: OutputScore = 优秀; break; case 8: OutputScore = 良好; break;,40,C#程序设计实用教程,4.3.2 分支语句,case 7: OutputScore = 中等; break; case 6: OutputScore = 及格; break; default: OutputScore = 不及格; break; Console.WriteLine(百分制下0分经转换,为5分制下的1, InputScore,
24、 OutputScore); ,说明:对比例4-4和本例的所示程序,可以发现在多分支选择结构中使用switch语句具有结构清晰、可读性强等优点。,41,C#程序设计实用教程,4.3.2 分支语句,另外,针对C#中的switch语句说明以下几点:(1)case后面的常量表达式的类型必须与switch后面的表达式的类型相匹配,比如上例中都是整数类型。(2)如果在同一个switch语句中有两个或多个case后面常量表达式具有相同的值,将会出现编译错误。(3)在switch语句中,至多只能出现一个default语句。(4)在C#中,switch语句中的各个case语句及default语句的出现次序不是
25、固定的,它们出现的次序不同不会对执行结果产生任何影响。(5)不允许遍历。在C#中,要求每个case语句后使用break语句或跳转语句goto,即不允许从一个case自动遍历到其他case,否则编译时将报错。(6)在C#中,多个case语句可以共用一组执行语句。,42,C#程序设计实用教程,4.3.2 分支语句,以上面的程序代码为例,如将switch语句中的代码改为:switch (temp) case 10: case 9: OutputScore = 优秀; break; case 8: OutputScore = 良好; break; case 7: OutputScore = 中等; b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 结构 程序设计 ppt 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2002323.html