第04章顺序结构程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

15第4章选择结构程序设计在前面的章节中,我们使用程序指令顺序执行完成相关的操作。一般情况下,每个程序要求在运行过程中,改变语句的执行顺序达到某种功能的实现,这种情况下要用到程序控制语句。C#程序的控制语句包括选择语句、循环语句和转移语句。本章主要介绍用于选择的选择结构。通过本章的学习,掌握以下内容:if语句的使用switch语句的使用及switch语句中break的使用goto语句的使用4.1选择结构程序结构的设计当程序中一个问题出现有两个或多个不同的分支要根据具体情况进行解决,需要使用选择语句控制程序的流程实现。选择语句根据布尔条件表达式的值选择要执行的分支语句,从而实现流程控制。如学生报到时,会根据不同的系别选择分配班级,同一个班级内根据不同的性别选择分配寝室。那么,本例中含有选择:不同系别分配不同的班级属于多分支条件选择,因为一个学生将从多个系中选择其中一个;同一个班级内根据性别的不同分配男生、女生寝室,属于单条件选择。在C#中,提供两种选择语句实现流程的改变:if语句,用于判断特定的条件能否满足,用于单分支选择,也可以通过嵌套实现多分支选择。switch语句,用于多分支选择。4.2单分支选择结构(if语句)if语句是程序设计中基本的选择语句,它根据条件表达式的值选择要执行的后面的内嵌语句序列。一般用于简单选择,即选择项中有一个或两个分支,语句执行的过程中根据不同的情况进行选择其中一个分支执行,格式:if(布尔条件表达式condition)内嵌语句序列1else图4-1if语句的流程图条件表达式内嵌语句序列1内嵌语句序列216内嵌语句序列2;说明:(1)若布尔表达式的值为真时,程序执行内嵌语句序列1,否则执行内嵌语句序列2。(2)ifelse语句中,内嵌语句序列1和内嵌语句序列2可以是简单语句,也可以是复合语句。(3)如果内嵌语句序列中为多个执行语句要使用花括号({…})组合为一个语句块。(4)也可以省去else和内嵌语句序列2,即当程序满足布尔表达式的值为真时,执行语句序列1。该结构的流程图如图4-1。4.2.1if…else语句根据布尔条件表达式的值进行判断,当该值为真时执行if语句后的语句序列,当为假时,执行else语句后的语句序列。该结构一般用于两种分支的选择。下面结合实例了解if…else语句的使用方法。例题采用WindowsApplication的项目开发方法进行编写。【例4-1】某商店为了吸引顾客,采取以下优惠活动:所购商品在1000元以下的,打9折优惠;所购商品多于1000元的,打8折优惠。试采用if语句实现该优惠。图4-2实现打折优惠分析:该问题属于数学分段函数问题,当所购商品总额1000元时,打折后的商品总额为(所购商品总额*0.9);当所购商品总额1000时,打折后的商品总额为(所购商品总额*0.8)。该问题可以选择所购商品总额1000作为条件,也可以选择所购商品总额1000为条件,本例中选择所购商品总额1000作为条件完成选择判断。根据以上分析,画出相应的流程图如图4-3。17总金额1000Ture总金额*0.8总金额*0.9False图4-3程序流程图设计步骤如下:(1)建立项目。在VisualStudio.NET中,打开“文件”菜单,依次选择“新建→项目”命令,打开“新建项目”对话框,选择“VisualC#项目”,选择“Windows应用程序”输入项目的名称和存放位置。(2)设计窗体。单击工作区左侧的“工具箱”或单击工具栏上工具箱图标,工具箱将显示在工作区左侧。本例中使用标签控件label显示相应的文本,使用旋钮控件NumericUpDown提供相关的数值,使用按钮控件Button实现交互。窗体及控件的主要属性设计见表4-1。表4-1窗体及控件的主要属性设计控件名属性属性值说明Form1Textif语句的使用显示窗口标题label1Namelabel1标识该控件Text根据所购商品的金额实现打折优惠在窗体中显示文本信息label2Namelabel2标识该控件Text请输入所购商品的总金额在窗体中显示文本信息label3Namelabel2标识该控件Text打折后商品总额在窗体中显示文本信息button1Namebutton1标识该控件Text打折文本显示numericUpDown1NamenumericUpDown1标识该控件Decimalplaces0描述该控件接受的数据为int类型Maximim1000000接受的最大值numericUpDown2NamenumericUpDown2标识该控件Decimalplaces0描述该控件接受的数据为int类型Maximim1000000接受的最大值(3)编辑代码。选中button1控件,单击鼠标右键,在弹出的菜单中选择“查看代码”命令,或通过“视18图”菜单中的“代码”命令,切换到代码视图。也可以双击控件直接在事件中添加代码。代码如下。privatevoidbutton1_Click(objectsender,System.EventArgse){doublek,m;k=(double)numericUpDown1.Value;if(k1000){m=k*0.9;}else{m=k*0.8;}numericUpDown2.Value=(decimal)m;}(4)编译、运行程序。单击工具栏上的启动按钮,或使用F5执行程序,显示Windows窗体,如图4-2右图所示。在numericUpDown1中输入相关金额,单击button1按钮,完成相应的功能。【例4-2】编辑框的PasswordChar属性可以隐蔽用户通过键盘输入的字符,常用来编写检查用户口令的程序。使用选择语句实现该操作。分析:本题使用编辑框实现命令接受工作,使用if语句实现判断。采用基本的控件实现如下所图3-4。(1)建立项目。建立一个Windows应用程序。(2)设计窗体。单击工作区左侧的“工具箱”或单击工具栏上工具箱图标,工具箱将显示在工作区左侧。本例中使用两个label控件、一个button控件、一个textBox控件实现程序界面。label1控件用于显示提示用户输入预先已经设置好的口令,本程序设置口令为“abc”,label2用于显示显示用户输入的口令正确与否,本例中设置当口令输入正确的情况下label2显示为“欢迎使用本系统!”,否则,显示“对不起,您的口令有误,您无权使用该系统!”。本例中所有控件的字体均设为四号、加粗字体。窗体及控件的主要属性设计见表4-2。图4-4口令验证表4-2窗体及控件的主要属性设计控件属性属性值说明19Form1Text使用基本控件实现口令判断显示窗体标题label1Text请输入口令显示相应文本TextAlignTopLeft文本显示位置为左上方label2Textlabel2显示相应文本TextAlignMiddleRight文本显示位置为中间button1Text验证显示相应文本(3)编辑代码。该程序通过对button1单击,实现对输入命令的验证。在窗体上双击button1控件,实现对该控件单击事件编程。代码如下。privatevoidbutton1_Click(objectsender,System.EventArgse){if(textBox1.Text==abc)//设口令为“abc”label2.Text=欢迎使用本系统!;//如果输入正确,显示欢迎使用本系统!else//如果输入不正确label2.Text=对不起,您的口令有误,您无权使用该系统!;}(4)编译、运行程序。执行程序,输入口令,单击“验证”按钮,实现程序的执行。如输入“abc”,运行结果见图-4右图。4.2.2if…else…if语句if…else语句也可以用于多种分支的选择结构,这种情况也就是if语句嵌套if语句的结构。if语句中,内嵌语句可以是复合语句,也就是说,内嵌语句中可以包含选择语句、循环语句等。那么,if语句可以嵌套,但应注意if-else的配对问题。在默认情况下,else语句总是和最近的【例4-3】if语句配对。根据【例4-3】了解if语句的嵌套方法。【例4-3】将百分制成绩转换为五分制成绩。转换标准如下:90分以上为“优秀”,80分以上为“良”,70分以上为“中”,60分以上为“及格”,60分以下为“不及格”。分析:该问题为多条件选择情况,在这种情况下,需进行选择实现问题的方法。本题中使用if语句可以由两种方法实现:一种自底向上,即是先判断是不是及格,然后根据及格情况再进行判断相应的五分制得分;一种是自顶向下,即先判断是不是优,然后依次判断。本题使用后一种方法实现。第一种方法的实现由读者尝试解决。该问题的流程图如图3-5。该问题的实现使用了一个numericUpDown控件,用于接收百分制成绩;使用两个label控件,用于显示提示文本;使用了两个button控件,用于实现成绩转换事件的实现和窗体的关闭。窗体及控件的属性设置见图3-6左图所示。在窗体上双击“转换”按钮,为其添加相应的代码实现成绩转换的功能。代码如下。privatevoidbutton1_Click(objectsender,System.EventArgse){intk;20k=(int)numericUpDown1.Value;if(k90)textBox1.Text=优;elseif(k80)textBox1.Text=良;elseif(k70)textBox1.Text=中;elseif(k60)textBox1.Text=及格;elseif(k60)//此条指令可以省略textBox1.Text=不及格;}双击“关闭”按钮,添加相应的是先窗体关闭的代码如下。privatevoidbutton2_Click(objectsender,System.EventArgse){this.Close();}执行运行命令,输入百分制成绩为“56”,单击转换按钮,在五分制成绩中将显示成绩为“不及格”。如图4-6右图。图4-6成绩转换设计上例中使用了if语句的嵌套实现,其中因为条件判断后只用一个语句,如“textBox1.Text=良;”,所以,可以省略{},当存在多条语句时,要使用{}表示为一个语句块。在程序的最后对不及格成绩的判断总使用“if(k60)”指令实现,该指令可以省略;该指令使用时,没有else语句进行配对。即在if语句中,可以不使用else语句。4.3多分支选择结构(switch语句)if语句每次判断只能有两个分支,如果在多重分支的情况下,使用if语句实现比较复杂,使用开关语句即switch语句可以方便解决这种问题。如【例4-3】中,使用多次if语句实现图3-5成绩转换流程图成绩90False成绩80False成绩70成绩60FalseFalse成绩为优成绩为良成绩为中及格不及格TrueTrueTrueTrue21了成绩转换的功能,如果使用switch语句很方便地解决。4.3.1switch语法格式和if语句相比,switch语句有一个控制表达式,其分支语句根据控制表达式的值执行不同的程序段。格式:switch(控制表达式){case常量表达式:内嵌语句default:内嵌语句}其中控制表达式所允许的数据类型为:整数类型(sbyte,byte,short,ushort,uint,long,ulong),字符类型(char),字符串类型(string),或者枚举类型以及能够隐式转换成上述的任何类型。各个case语句后的常量表达式的数据类型与控制表达式的类型相同或能够隐式转换为控制表达式的类型。switch语句基于控制表达式的值选择要执行的语句分支。switch语句按以下顺序执行:1、控制表达式求值。2、如果case标签后的常量表达式等于控制语句所求出的值,则其后的内嵌语句被执行。3、如果没有常量表达式等于控制语句的值,则执行default标签内的内嵌语句。4、如果控制表达式的值不满足case标签,并且没有default标

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功