




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,本章要点:,顺序控制结构的程序设计选择控制结构的程序设计循环控制结构的程序设计,第3章三种结构的程序设计,3.1顺序控制结构,顺序控制结构是程序设计中最简单、最常用的基本结构。在顺序控制结构中,各程序段按照出现的先后顺序依次执行。它是任何程序的基本结构。,程序流程控制语句是用来控制程序中各语句执行顺序的语句,是程序中非常关键和基本的部分。程序流程控制语句可以把单个的语句组合成有意义的、能完成一定功能的小逻辑模块。1966年Bohm和Jacopini证明了任何复杂的算法都可以用顺序、选择、循环三种结构组合而成,所以这三种结构称为程序的三种基本控制结构。合理地使用流程控制语句在很大程度上影响了编写程序的质量。在一段程序中,计算机按照语句顺序执行,当遇到选择结构、循环结构时,就有可能改变执行顺序。,3.1.1程序流程控制语句,3.1.2顺序控制结构(1),顺序控制结构是计算机按照语句的前后顺序依次执行的程序结构。在顺序控制结构中,程序依次地经过输入、处理到最后的输出。Delphi7.0提供了基本的输入/输出控件(在第7章中将给予介绍)。对于顺序控制结构来说,组成程序体主要语句就是赋值语句。接下来通过一个实例来说明顺序控制结构的程序设计方法。,1.主要步骤进入Delphi7.0后在standard标签页中找到相关组件,设计如图3-1窗体及有关对象。分别在窗体的建立、小写按钮单击和大写按钮单击事件中输入如下代码。,图3-1大小写转换程序,procedureTForm1.FormCreate(Sender:TObject);beginedit1.Text:=;/初始化文本框,使其为空end;procedureTForm1.Button1Click(Sender:TObject);vars:string;begins:=edit1.Text;edit1.Text:=lowercase(s);/转换成小写end;,【例3-1】大小写转换程序。,3.1.2顺序控制结构(2),procedureTForm1.Button2Click(Sender:TObject);vars:string;begins:=edit1.Text;edit1.Text:=uppercase(s);/转换成大写end;,2.分析在窗体的建立事件中,首先将文本框的内容进行清空(以便输入)。在button1按钮事件中有两个语句,先将文本框的内容赋给一个字符串变量s,然后通过一个lowercase函数将其转换成小写后再在文本框中显示。而button2按钮事件和button1基本类似,惟一不同的是将其转换成大写而已。可以看到,在每一个事件代码中,其语句都是顺序执行的。这就是这种结构的特点。,3.运行结果程序运行结果如图3-2所示。,(图3-2大小写转换程序运行结果),3.2选择控制结构,标识符是ObjectPascal语言中用来表示应用程序量的名称。包括:变量(Var)、常量(Const)、类型(Type)、过程(Procedure)、方法(Method)等。,在日常生活和工作中,经常需要根据给定的条件进行分析、比较和判断,以采取相应的操作。例如,有如下分段函数:,在计算函数值时,首先应根据x的值进行判断,当x0时,y的值是x的平方;否则y的值是x的三次方。选择控制结构是计算机用来描述自然界和社会生活中分支现象的重要手段。其特点是:根据所给定的条件为真与否,决定从各实际可能的不同分支中执行某一个分支的相应操作,并且任何情况下总有一种分支相对应。ObjectPascal中的分支语句有If语句和Case语句。,3.2.1If语句(1),If语句又称为条件语句,是最常用的单条件选择结构。If语句的语法格式为:if条件then条件语句1语句2假真语句1else语句2;,其中条件可以是关系表示式或布尔表达式,它的值是真(True)或假(False)。如果条件的值为真则执行语句1,否则执行语句2,If语句所对应的流程图如图3-3所示。,图3-3if语句,因为ifthenelse语句是一个完整的语句,因此在else之前没有分号,如果加入分号将产生编译错误。语句可以是简单语句也可以是复合语句还可以为空语句。当然,语句1、语句2同时为空语句时If语句就失去了意义。,3.2.1If语句(2),If语句分为简单条件语句和复合条件语句两种。,1.简单条件语句简单条件语句的语句中不包含其他的条件语句。【例3-2】输入x计算y的值,其中:,分析:这是一个分支函数,对应x的值不同,计算时使用的表达式不同,因此可以用条件语句实现对表达式的选择。varx,y:double;beginifx=1theny:=x*x+2*xelsey:=2*x+1;end;注意:ifthenelse语句是一个完整的语句,因此在else之前没有分号,如果加入分号则产生错误。,3.2.1If语句(2),2.复合条件语句如在If语句格式中的语句1或语句2本身又是一个If语句,则称为If语句的嵌套。嵌套的If语句又被称为复合条件语句。来看本教程P40页的例子。由于If语句有两种,一种是有else语句,一种无else语句。对复合条件语句有可能有二义性,即可能有两种不同的理解,如下所示:if条件1thenif条件2then语句1else语句2一种理解是else语句是与后一个then语句配对,另一种理解是else语句是与前一个then语句配对,两种理解的效果是不一样的。ObjectPascal规定:else总是与同一层的前面最靠近它的、还没有else语句与之配对的then配对。因此第一种理解是正确的,else语句是与后一个Then语句配对。,3.2.2case语句,对于多分支选择的情况,若仍然使用If语句就会出现多层嵌套,非常烦琐。为此ObjectPascal专门提供了Case语句来实现多分支选择结构。Case语句可以根据“选择器表达式”的值来决定执行相应的选择语句。,case选择器表达式of情况常量表1:语句1情况常量表n:语句nelse其他语句列;end;,情况常量表中的值应当是选择器表达式可能具有的值,各常量之间用逗号分隔。所有常量表中的值必须互不相同。语句可以是简单语句也可以是复合语句。Case语句首先计算选择器表达式的值,然后判断该值是否等于某个常量,若相等则执行该常量后面的语句,执行完该语句后,跳过所有其他语句执行end后面的语句。若与所有情况常量表中所列的常量都不同,则执行else后面的语句。,3.3循环控制结构,循环是计算机解题的一个重要特征。计算机运算速度快,最宜于做重复性工作。在程序设计时,人们也总是把复杂的不易理解的求解过程转化为易于理解的操作的多次重复。这样一方面可以降低问题的复杂性,减低程序设计难度;另一方面也发挥了计算机速度快的优势。循环控制有两种方法:标志法与计数法。标志法是达到某一目标后使循环结束;计数法要先确定循环次数,然后逐次测试,完成测试次数后循环结束。ObjectPascal中提供了三种循环语句:Repeat语句、While语句、For语句。Repeat语句和While语句采用标志法实现循环,而For语句采用计数法实现循环。,3.3.1Repeat语句(1),Repeat语句属于后测型循环结构。首先执行循环体,然后判断条件,根据条件决定是否继续执行循环,因此执行循环的最少次数为1。Repeat语句的语句格式为:repeat条件循环体假真循环体until条件;说明:条件是一个具有布尔值的表达式,是循环的条件。图3-4Repeat语句,循环体可以是一条语句,也可以是多条语句。多条语句无需用beginend括起来,而由保留字repeat与until将其括起。Repeat循环的执行过程是:首先执行循环体,然后计算条件的值,如果条件的值为假,则开始一个新循环;如果条件的值为真,则终止循环,执行until条件后面的语句。可以在循环体中的任何位置放置Break语句来强制终止Repeat循环(随时跳出Repeat循环)。也可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。,图3-4Repeat语句,3.3.1Repeat语句(2),【例3-5】利用公式计算sinx。,1.主要步骤进入Delphi7.0在新建窗体中添加有关组件。其中第一个编辑框用于输入数据,另一个编辑框用于数据的正弦值。如图3-5所示。,sinx=x,直到最后一项的绝对值小于10-7为止。,图3-5计算sinx的值,3.3.1Repeat语句(3),在button1按钮的单击事件中输入如下代码:procedureTForm1.Button1Click(Sender:TObject);varn:integer;x,temp,sum:double;beginx:=strtofloat(edit1.Text);/从第一个编辑框中读入x的值n:=1;temp:=x;sum:=x;repeat/循环语句开始n:=n+2;temp:=temp*(-x*x)/(n-1)*n);sum:=sum+temp;untilabs(temp)1e-7;/当最后一项的绝对值小于10-7时循环语句结束edit2.Text:=format(%f,sum);/输出sinx的值end;,3.3.1Repeat语句(5),2.分析这是一个级数求和问题,其项数决定于最后一项的绝对值是否小于10-7,如果它大于10-7,则计算该项,并继续求下一项,否则结束求和。但是单独求解每一项比较麻烦,可以利用前一项求解后一项,让每一项与n的一个值相对应,其中n的值依次为1,3,5,7,从前一项求后一项只需乘以一个因子,因此,只需确定当n=1时的第一项即可,然后依次求出后一项并求和。当然,在程序运行过程中,需要在edit1文本框中输入数字,否则会引起错误。3.运行结果在第一个文本框中输入一个数字后单击button1按钮即在第二个文本框中得到答案。,3.3.2While语句(1),While语句属于前测型循环结构。首先判断条件,根据条件决定是否执行循环,执行循环的最少次数为0。While语句的语句格式为:条件循环体假真while条件do循环体;说明:条件是判断循环的条件。循环体可以是简单语句、复合语句和其他结构语句。While循环的执行过程:首先计算条件的值,如果条件的值为真,则执行do后面的循环体,执行完后,再开始一个新的循环,如果条件的值为假,则终止循环,执行循环体后面的语句。可以在循环体中的任何位置放置Break语句来强制终止循环;也可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。,【例3-6】判断一个正整数是否是素数。,1.主要步骤进入Delphi7.0在新建窗体中添加有关组件,其中编辑框用于输入一个整数,标签用于显示结果。如图3-7所示。,图3-7判断一个正整数是否是素数,3.3.2While语句(2),在button1按钮的单击事件中输入如下代码:vars,n,i:integer;str:string;beginn:=strtoint(edit1.Text);/从编辑框得到n的值,注意必须输入一个正整数s:=0;i:=2;/s作为判断是否是素数的标志,i做除数ifn=3thenlabel2.caption:=输入的整数是素数elsewhile(i=sqrt(n)and(s=0)dobeginifnmodi=0thenbegins:=1;break;/若以判断出n不为素数则可以用break语句跳出循环语句endelsei:=i+1;end;,3.3.2While语句(3),2.分析所谓素数是指除了1和该数本身,不能被任何整数整除的数。如果正整数n小于等于3则该数是一个素数,判断一个大于3的正整数是否是素数,只要依次用2作除数去除n,若n不能被其中任何一个数整除,则n为素数。3.运行结果略。,ifs=0thenlabel2.caption:=输入的整数是素数elselabel2.caption:=输入的整数不是素数;end;,3.3.3For语句(1),如果不知道需要执行多少次循环,应该用While或Repeat循环。如果知道要执行多少次循环,最好用For循环结构。For循环与前两种循环不同,使用一个循环变量,每重复一次循环之后,循环变量的值就会自动增加或减少。For语句的语句格式为:for循环变量:=初值to|DownTo终值do循环体;说明:循环变量为必要参数,用做循环计数器。初值和终值表示循环变量的初值和终值,可以是表达式,但应与循环变量的类型相同。若为表示式,则在进入循环之前已被计算确定,在循环体中改变初值或终值表达式中变量的值,并不影响循环的次数。to表示计数器递增,DownTo表示计数器递减。循环体可以是简单语句、复合语句和其他结构语句。for循环的执行过程:首先判断循环变量的值是否“超过”终值(对于递增循环为大于,对于递减循环为小于),若已超过则跳出循环执行循环体后面的语句;若未超过则执行do语句后面的循环体,然后循环变量自动“增量”(递增或递减)并开始一个新的循环。可以在循环体中的任何位置放置Break语句来强制终止循环,也可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。,3.3.3For语句(2),【例3-7】百钱百鸡问题。公元前五世纪,我国古代数学家张丘建在算经一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册会计师招聘面试要点及模拟题解析
- 2025年采购管理专员求职攻略与模拟题集全解
- 电信网络安全知识培训课件
- 2025年热切割技术面试模拟题及答案
- 2025年医疗技术专家中级面试预测题及备考指南
- 2025年美妆行业:谷雨品牌拆解-解数咨询
- 某中小学二年级新学期家长会-动态
- 停顿和重音课件教学
- 田字演变课件
- 24孝图教学课件
- 2025年跨境电商物流服务佣金结算合作协议
- 2025年公司主要负责人安全培训考试试题有完整答案
- 医院检验科微生物进修汇报
- 主播跟运营合作合同协议
- 化工操作工培训课件
- 血透室设备维护与操作规范
- 2025至2030高校后勤行业发展趋势分析与未来投资战略咨询研究报告
- 2025中国电信安全公司春季校园招聘笔试参考题库附带答案详解(10套)
- 通信技术未来发展趋势
- 整形美容外科进修汇报
- 立达RSBD并条机培训资料讲课文档
评论
0/150
提交评论