第3章三种结构的程序设计 本章要点: 区顺序控制结构的程序设计 区选择控制结构的程序设计 区循环控制结构的程序设计
本章要点: 顺序控制结构的程序设计 选择控制结构的程序设计 循环控制结构的程序设计 第3章 三种结构的程序设计
31顺序控制结构 顺序控制结构是程序设计中最简单、最常用的基本结构。在顺序控 制结构中,各程序段按照出现的先后顺序依次执行。它是任何程序的基 本结构。 3.1.1程序流程控制语句 程序流程控制语句是用来控制程序中各语句执行顺序的语句,是程 序中非常关键和基本的部分。程序流程控制语句可以把单个的语句组合 成有意义的、能完成一定功能的小逻辑模块。1966年Bohm和 Jacopini 证明了任何复杂的算法都可以用顺序、选择、循环三种结构组合而成, 所以这三种结构称为程序的三种基本控制结构。合理地使用流程控制语 句在很大程度上影响了编写程序的质量。在一段程序中,计算机按照语 句顺序执行,当遇到选择结构、循环结构时,就有可能改变执行顺序。 Inprise Dephi
3.1 顺序控制结构 顺序控制结构是程序设计中最简单、最常用的基本结构。在顺序控 制结构中,各程序段按照出现的先后顺序依次执行。它是任何程序的基 本结构。 程序流程控制语句是用来控制程序中各语句执行顺序的语句,是程 序中非常关键和基本的部分。程序流程控制语句可以把单个的语句组合 成有意义的、能完成一定功能的小逻辑模块。1966年Bohm和Jacopini 证明了任何复杂的算法都可以用顺序、选择、循环三种结构组合而成, 所以这三种结构称为程序的三种基本控制结构。合理地使用流程控制语 句在很大程度上影响了编写程序的质量。在一段程序中,计算机按照语 句顺序执行,当遇到选择结构、循环结构时,就有可能改变执行顺序。 3.1.1 程序流程控制语句
312顺序控制结构(1) 顺序控制结构是计算机按照语句的前后顺序依次执行的程序结构。在顺 序控制结构中,程序依次地经过输入、处理到最后的输出。 Delphi7.0提供 了基本的输入输出控件(在第7章中将给予介绍)。对于顺序控制结构来说, 组成程序体主要语句就是赋值语句。接下来通过一个实例来说明顺序控制结 构的程序设计方法 【例3-1】大小写转换程序。 1.主要步骤 ⊙进入 Delphi7.0后在 standard标签页中找到相关组件,设计如图3-1窗体 及有关对象 ③分别在窗体的建立、小写按钮单击和大写按钮单击事件中输入如下代 码。 procedure TForm1. FormCreate (Sender: TObject edit1.Text:=";∥初始化文本框,使其为空 end procedure TForm1. Button1 Click(Sender: TObject) var s: string 图3-1大小写转换 egIn 程序 s: =edit Text edit1ext:= lowercase(s);∥转换成小写 end Inprise Dephi
3.1.2 顺序控制结构(1) 顺序控制结构是计算机按照语句的前后顺序依次执行的程序结构。在顺 序控制结构中,程序依次地经过输入、处理到最后的输出。Delphi 7.0提供 了基本的输入/输出控件(在第7章中将给予介绍)。对于顺序控制结构来说, 组成程序体主要语句就是赋值语句。接下来通过一个实例来说明顺序控制结 构的程序设计方法。 1. 主要步骤 进入Delphi 7.0后在standard标签页中找到相关组件,设计如图3-1窗体 及有关对象。 分别在窗体的建立、小写按钮单击和大写按钮单击事件中输入如下代 码。 图3-1 大小写转换 程序 procedure TForm1.FormCreate(Sender: TObject); begin edit1.Text:=''; //初始化文本框,使其为空 end; procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=edit1.Text; edit1.Text:=lowercase(s); // 转换成小写 end; 【例3-1】大小写转换程序
312顺序控制结构(2) procedure TForm1. Button2Click(Sender: TObject) var s: string; begin s: =editText edt.Text:= uppercase(s);∥转换成大写 end 2.分析 在窗体的建立事件中,首先将文本框的内容进行清空(以便输入)。在 button1按钮事件中有两个语句,先将文本框的内容赋给一个字符串变量s, 然后通过一个 owercasel函数将其转换成小写后再在文本框中显示。而 button2按钮事件和butn1基本类似,惟一不同的是将其转换成大写而已。可 以看到,在每一个事件代码中,其语句都是顺序执行的。这就是这种结构的 特点 7'Forml 3.运行结果 WR242EASDXASFASDFR 图3-2大小写转 换程序运行结果) 程序运行结果如图3-2所示。 Inprise Dephi
3.1.2 顺序控制结构(2) procedure TForm1.Button2Click(Sender: TObject); var s:string; begin s:=edit1.Text; edit1.Text:=uppercase(s); //转换成大写 end; 2. 分析 在窗体的建立事件中,首先将文本框的内容进行清空(以便输入)。在 button1按钮事件中有两个语句,先将文本框的内容赋给一个字符串变量s, 然后通过一个lowercase函数将其转换成小写后再在文本框中显示。而 button2按钮事件和button1基本类似,惟一不同的是将其转换成大写而已。可 以看到,在每一个事件代码中,其语句都是顺序执行的。这就是这种结构的 特点。 3. 运行结果 程序运行结果如图3-2所示。 (图3-2 大小写转 换程序运行结果)
3.2选择控制结构 标识符是 object Pascal语言中用来表示应用程序量的名称。包括: 变量(va)、常量( Const、类型(Type)、过程( Procedure)、方法( Method) 等 在日常生活和工作中,经常需要根据给定的条件进行分析、比较和判断,以 采取相应的操作。例如,有如下分段函数 ct/ (x0 在计算函数值时,首先应根据x的值进行判断,当x0时,y的值是x的平方; 否则y的值是x的三次方。 选择控制结构是计算机用来描述自然界和社会生活中分支现象的重要手段。其特 点是:根据所给定的条件为真与否,决定从各实际可能的不同分支中执行某一个 分支的相应操作,并且任何情况下总有一种分支相对应。 object Pascal中的分支语句有语句和case语句 Inprise Dephi
3.2 选择控制结构 标识符是Object Pascal语言中用来表示应用程序量的名称。包括: 变量(Var)、常量(Const)、类型(Type)、过程(Procedure)、方法(Method) 等。 在日常生活和工作中,经常需要根据给定的条件进行分析、比较和判断,以 采取相应的操作。例如,有如下分段函数: 在计算函数值时,首先应根据x的值进行判断,当x≥0时,y的值是x的平方; 否则y的值是x的三次方。 选择控制结构是计算机用来描述自然界和社会生活中分支现象的重要手段。其特 点是:根据所给定的条件为真与否,决定从各实际可能的不同分支中执行某一个 分支的相应操作,并且任何情况下总有一种分支相对应。 Object Pascal中的分支语句有If语句和Case 语句。 = ( 0) ( 0) 3 2 x x x x y
321语句(1) I语句又称为条件语句,是最常用的单条件选择结构。f语句的语法格式 为 f≤条件>then条件语句1语句2假真 [] ese =; 真 假 条件 其中可以是关系表示式或布尔 表达式,它的值是真(True)或假 ( False)。如果的值为真则执行 ,否则执行,F语句所语句 语句二 对应的流程图如图3-3所示 因为f.then.else语句是一个完整的 语句,因此在else之前没有分号,如果加 入分号将产生编译错误。可以是 简单语句也可以是复合语句还可以为空语 句。当然,、同时为 图33语句 空语句时语句就失去了意义。 Inprise Deph
3.2.1 If语句(1) If语句又称为条件语句,是最常用的单条件选择结构。If语句的语法格式 为: if <条件> then 条件语句1语句2假真 [<语句1>] [else <语句2>=; 条件 语句一 语句二 真 假 其中<条件>可以是关系表示式或布尔 表达式,它的值是真(True)或假 (False)。如果<条件>的值为真则执行 <语句1>,否则执行<语句2>,If语句所 对应的流程图如图3-3所示。 图3-3 if语句 因为if…then…else语句是一个完整的 语句,因此在else之前没有分号,如果加 入分号将产生编译错误。<语句>可以是 简单语句也可以是复合语句还可以为空语 句。当然,<语句1>、<语句2>同时为 空语句时If语句就失去了意义
321语句(2) f语句分为简单条件语句和复合条件语句两种 1.简单条件语句 简单条件语句的中不包含 2x+1……(x1) 其他的条件语句。 【例3-2】输入x计算y的值,其中: x2+2x……(x1) 分析:这是一个分支函数,对应x的值不同,计算时使用的表达式不同,因 此可以用条件语句实现对表达式的选择 var x,y: double begin if xe= 1 then y:=×*x+2*X else y:=2*X+ end 注意:f.then.eSe语句是一个完整的语句,因此在else之前没有分号,如 果加入分号则产生错误 Inprise Dephi
3.2.1 If语句(2) If语句分为简单条件语句和复合条件语句两种。 1. 简单条件语句 简单条件语句的<语句>中不包含 其他的条件语句。 【例3-2】输入x计算y的值,其中: 分析:这是一个分支函数,对应x的值不同,计算时使用的表达式不同,因 此可以用条件语句实现对表达式的选择。 var x,y:double; begin if x>=1 then y:=x*x+2*x else y:=2*x+1; end; 注意:if…then…else语句是一个完整的语句,因此在else之前没有分号,如 果加入分号则产生错误。 + + = 2 ( 1) 2 1 ( 1) 2 x x x x x y
321语句(2) 2.复合条件语句 如在|语句格式中的或本身又是一个语句,则称为lf 语句的嵌套。嵌套的f语句又被称为复合条件语句。来看本教程P40页的例子。 由于语句有两种,一种是有else语句,一种无else语句。对复合条件语句 有可能有二义性,即可能有两种不同的理解,如下所示: fthen fthen 种理解是else语句是与后一个then语句配对,另一种理解是else语句 是与前一个then语句配对,两种理解的效果是不一样的。 Object Pascal规定: else总是与同一层的前面最靠近它的、还没有ese语句与之配对的hen配对。 因此第一种理解是正确的,else语句是与后一个Then语句配对 Inprise Dephi
3.2.1 If语句(2) 2. 复合条件语句 如在If语句格式中的<语句1>或<语句2>本身又是一个If语句,则称为If 语句的嵌套。嵌套的If语句又被称为复合条件语句。来看本教程P40页的例子。 由于If语句有两种,一种是有else语句,一种无else语句。对复合条件语句 有可能有二义性,即可能有两种不同的理解,如下所示: if <条件1> then if <条件2> then <语句1> else <语句2> 一种理解是else 语句是与后一个then 语句配对,另一种理解是else 语句 是与前一个then 语句配对,两种理解的效果是不一样的。Object Pascal规定: else总是与同一层的前面最靠近它的、还没有else语句与之配对的then配对。 因此第一种理解是正确的,else语句是与后一个Then 语句配对
322case语句 对于多分支选择的情况,若仍然使用丨f语句就会出现多层嵌套,非常烦 琐。为此 Object Pasca传专门提供了Case语句来实现多分支选择结构。 case语句可以根据“选择器表达式”的值来决定执行相应的选择语句。 caseof : : se 其他语句列 nd en 情况常量表>中的值应当是可能具有的值,各常量之间 用逗号分隔。所有常量表中的值必须互不相同。可以是简单语句也 可以是复合语句。Case语句首先计算的值,然后判断该值 是否等于某个常量,若相等则执行该常量后面的语句,执行完该语句后,跳 过所有其他语句执行end后面的语句。若与所有情况常量表中所列的常量都 不同,则执行else后面的语句。 Inprise Dephi
3.2.2 case语句 对于多分支选择的情况,若仍然使用If语句就会出现多层嵌套,非常烦 琐。为此Object Pascal专门提供了Case 语句来实现多分支选择结构。 Case 语句可以根据“选择器表达式”的值来决定执行相应的选择语句。 case <选择器表达式> of <情况常量表1>:<语句1> … <情况常量表n>:<语句n> [else <其他语句列>;] end; <情况常量表>中的值应当是<选择器表达式>可能具有的值,各常量之间 用逗号分隔。所有常量表中的值必须互不相同。<语句>可以是简单语句也 可以是复合语句。Case 语句首先计算<选择器表达式>的值,然后判断该值 是否等于某个常量,若相等则执行该常量后面的语句,执行完该语句后,跳 过所有其他语句执行 end 后面的语句。若与所有情况常量表中所列的常量都 不同,则执行else 后面的语句
3.3循环控制结构 循环是计算机解题的一个重要特征。计算机运算速度快, 最宜于做重复性工作。在程序设计时,人们也总是把复杂的 不易理解的求解过程转化为易于理解的操作的多次重复。这 样一方面可以降低问题的复杂性,减低程序设计难度;另 方面也发挥了计算机速度快的优势 循环控制有两种方法:标志法与计数法。标志法是达到 某一目标后使循环结束;计数法要先确定循环次数,然后逐 次测试,完成测试次数后循环结束。 Object Pascal中提供了 三种循环语句: Repeat语句、 While语句、For语句。 Repeat 语句和 While语句采用标志法实现循环,而For语句采用计数 法实现循环。 Inprise Dephi
3.3 循环控制结构 循环是计算机解题的一个重要特征。计算机运算速度快, 最宜于做重复性工作。在程序设计时,人们也总是把复杂的 不易理解的求解过程转化为易于理解的操作的多次重复。这 样一方面可以降低问题的复杂性,减低程序设计难度;另一 方面也发挥了计算机速度快的优势。 循环控制有两种方法:标志法与计数法。标志法是达到 某一目标后使循环结束;计数法要先确定循环次数,然后逐 次测试,完成测试次数后循环结束。Object Pascal中提供了 三种循环语句:Repeat语句、While语句、For语句。Repeat 语句和While语句采用标志法实现循环,而For语句采用计数 法实现循环