收藏 分享(赏)

第五章循环结构.doc

上传人:gnk289057 文档编号:6994554 上传时间:2019-04-29 格式:DOC 页数:52 大小:431KB
下载 相关 举报
第五章循环结构.doc_第1页
第1页 / 共52页
第五章循环结构.doc_第2页
第2页 / 共52页
第五章循环结构.doc_第3页
第3页 / 共52页
第五章循环结构.doc_第4页
第4页 / 共52页
第五章循环结构.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、5.1 While 语句While 语句属于前测型循环结构。首先判断条件,根据条件决定是否执行循环,执行循环的最少次数为 0。其流程图如图所示。While 条件 条件判断 循环体 条件成立时所执行的语句 5.1.1 While 语句的语法WHILE 语句常用在不能预先确定重复次数的情况。WHILE 语句的语法格式:While Do;说明:(1) 是 一 个 具 有 Boolean 值 的 条 件 表 达 式 , 为 循 环 的 条 件 。(2) 可 以 是 简 单 语 句 、 复 合 语 句 和 其 他 结 构 语 句 。(3) While 循 环 的 执 行 过 程 : 首 先 计 算 的

2、值 , 如 果 为真 (True), 则 执 行 Do 后 面 的 循 环 体 , 执 行 完 后 , 再 开 始 一 个 新 的 循 环 ;如 果 为 假 (False), 则 终 止 循 环 , 执 行 后 面 的 语 句 。(4) 可 以 在 中 的 任 何 位 置 放 置 Break 语 句 来 强 制 终 止While 循 环 随 时 跳 出 While 循 环 。 Break 语 句 通 常 用 于 If 语 句之 后 。(5) 可 以 在 中 的 位 置 放 置 Continue 语 句 , 在 整 个 循 环 体 执行 完 就 重 新 判 断 , 以 决 定 是 否 开 始 新

3、 的 循 环 。 Continue 语 句通 常 用 于 If 语 句 之 后 。语义:WHILE 语句是在循环体执行之前判断重复终止条件:当布尔表达式为false,跳过循环体执行 WHILE 语句的下一条语句;当布尔表达式值为 true 时,重复执行循环体,直到布尔表达式的值为 false 时才终止。一般来说,在循环体内应有修改布尔表达式中的变量的语句。如果布尔表达式的值在开始时就为false,则此循环体中的语句一次也不执行。循环语句中有多个语句时,必须构成复合语句。WHILE 语句逻辑功能如下图:5.1.2 While 语句的应用【例 5-1】求累加和 1+2+3+100 【例 5-2】输

4、入一个正整数,判断是否是素数。 【例 5-1】求累加和 1+2+3+100 分析:采用累加的方法,用变量 s 来存放累加的和(开始为 0),用变量 n 来存放“加数 ”(加到 s 中的数)。这里 n 又称为计数器,从 1 开始到 100 为止。根据以上分析画出流程图,如图所示。s 0 累加器赋初值 n 1 计数器赋初值While n #8)and(Key#46)and(Key #57);if B then Key:= #0;end;另外,编写按钮 Button2 的 OnClick 事件代码:procedure TForm1.Button2Click(Sender: TObject);begi

5、nClose;end;编写窗体的 OnActivate 事件代码:procedure TForm1.FormActivate(Sender: TObject);beginEdit1.SetFocus;end;5.2 Repeat 语句Repeat 语句属于后测型循环结构。首先执行循环体,然后判断条件,根据条件决定是否继续执行循环,因此执行循环的最少次数为 1.其流程图如图所示。循环体 条件成立时所重复执行的语句 Unit1 条件 条件不成立或成立时5.2.1 Repeat 语句的语法Repeat 语句的语法格式为:RepeatUnit1 ;说明:(1) 是一个具有 Boolean 值的条件表达

6、式,为循环的条件。(2) 可以是一条语句,也可以是多条语句。多条语句无须用BeginEnd 括起来,而由保留字 Repeat 与 Unitl 将其括起。(3) Repeat 循环的执行过程:首先执行,然后计算的值,如果为假(False),则开始一个新的循环;如果为真(True ),则终止循环,执行 Unit1 后面的语句。(4)可以在 循环体中的任何位置放置 Break 语句来强制终止循环随时跳出 Repeat 循环。Break 语句通常用于 If 语句之后。(5)可以在循环体中的任何位置放置 Continue 语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。Continu

7、e 语句通常用于 If语句之后。REPEAT 语句的逻辑功能图如下:5.2.2 Repeat 语句的应用 【 例 5-3】输入有效数字的位数,利用下述公式计算圆周率的近似值:【例 5-4】输入两个正整数,求他们的最大公约数,【例 5-3】输入有效数字的位数,利用下述公式计算圆周率的近似值:分析:首先找到公式中无穷乘积各项的规律:设第 n 项的分母为 Pn ,则地第 n+1 项的分母为 Pn+1 =Sqrt(2+Pn )。若设前 n 项的乘积为 Sn,则前 n 项乘积为 Sn+1=2 Sn/ Pn+1 。据此,画出流程图所示。设计步骤:(1)应用程序用户界面的建立与属性设置如下图。输入小数点后有

8、效数字位数 kS 2, p 0t Sp Sqrt(2+p)S2*S/p直到t-S:= TO DO ;For := DOWNTO DO ;说明:(1) 循环变量 为必要参数,用做循环计数器,只能是顺序类型。(2) 初值 和表示循环变量的初值和终值,可以是表达式,但应与循环变量的类型相同,若为表达式,则在进入循环之前已被计算确定,在循环体中改变初值或终值表达式中变量的值,并不影响循环的次数。(3) To 表示计数器递增, DownTo 表示计数器递减。(4) 循环体 可以是简单语句,复合语句和其他结构语句。(5) For 循环的执行过程:首先判断循环变量的值是否“超过” 终值,若已超过则跳出循环执

9、行循环体后的语句;若未超过则执行 Do 后的循环体,然后循环变量自动增量并开始一个新的循环。(6) 可以在 循环体 中的任何位置放置 Break 语句来强制终止循环随时跳出 For 循环。Break 语句通常用于 If 语句之后。(7) 可以在循环体中的任何位置放置 Continue 语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。Continue 语句通常放于 If 语句之后。 我们用 FOR 语句的逻辑功能图来说明 TO,DOWNTO 的执行步骤。如下图:5.3.2 For 语句的应用【例 5-5】:利用循环显示 4000 以内所有能被 97 整除的自然数。【例 5-6

10、】: 斐波那契(Fibonacci)数列问题。【例 5-5】:利用循环显示 4000 以内所有能被 97 整除的自然数。 其流程图为: n 从 1 开始 到 4000 如果 n 被 97 整除 真 输出 n 设计步骤:(1)应用程序用户界面的建立与属性设置如下图。(2) 程序设计编写按钮 Button1 的 OnClick 事件代码: procedure TForm1.Button1Click(Sender: TObject);varN: integer;beginfor N:= 1 To 4000 doIf N mod 97 =0 thenMemo1.Lines.Add( IntToStr(

11、N);end; 另外,编写按钮 Button2 的 OnClick 事件代码:procedure TForm1.Button2Click(Sender: TObject);beginClose;end;程序下载 【例 5-6】: 斐波那契(Fibonacci)数列问题。 Fibonacci 数列问题来源于一个古老的有关兔子繁殖的问题:假设在第 1 个月时有一对小兔子,第 2 个月时成为大兔子,第 3 个月时成为老兔子,并生出一对小兔子(一对老,一对小)。 第 4 个月时成为老兔子又生出一对小兔子,上个月的小兔子变成大兔子(一对老,一对大,一对小)。第 5 个月时上个月的大兔子变成老兔子,上个月

12、的小兔子变成大兔子,两对老兔子生出两对小兔子(两对老,一对中,两对小) 这样,各月的兔子对数为:1,1 ,2,3,5,8 , 这就是 Fibonacci 数列,其中第 n 项的计算公式为: 为了避免定义许多的变量,采用“迭代”的算法:即只定义少量的变量,如f1,f2,f3,在每一次的循环计算中它们代表不同的数,不断以新的值来取代原有的值。 其流程图为: n 15 f1 1; f2 1 k 从 3 到 nf3 f1+ f2 输出 f3f1 f2 f2 f3 设计步骤:(1) 应用程序用户界面的建立与属性设置如下图。(2)、编写程序代码: 按钮 Button1 的 OnClick 事件代码: pr

13、ocedure TForm1.Button1Click(Sender: TObject);varK,F1,F2,F3:integer;beginMemo1.Lines.Clear;Memo1.Lines.Add(1 1);Memo1.Lines.Add(2 1);F1:= 1;F2:= 1;for K:= 3 To 15 dobeginF3:= F1+F2;Memo1.Lines.Add(Format(%2d %3d, K,F3);F1:= F2;F2:= F3;end;end; 5.4 循环的嵌套 5.5 列表框和组合框列表框(ListBox)、 组合框(ComboBox)和 备注框(Mem

14、o)都可用来处理多行文本的输入与输出。与备注框(Memo)不同的是,列表框和组合框为用户提供了更为方便的多项选择和信息输入。列表框和组合框二者的不同在于:组合框不仅提供选项供用户选择,而且还允许用户通过键盘输入数据,相当于 编辑框 EditBox 和列表框 ListBox 的结合。5.5.1 列表框 ListBox 控件1、列表框 ListBox 的常用属性2、列表框 ListBox 的使用3、选择和移动数据【例 5-9】:将【例 5-7】中的备注框改为列表框:【例 5-11】:小学生做加减法的算术练习程序。计算机连续到随机到给出两位数的加减法算术题,要求学生回答,答对的打“”,答错的打“”。

15、将作过的题目存放在列表框中备查,并随机地给出答题的正确率【例 5-12】:利用循环结构和列表框控件,设计的“选项移动”窗体1、列表框 ListBox 的常用属性当列表框不能同时显示所有数据时,将自动加上一个垂直的滚动条,是用户可以上下滚动列表框,以查阅所有的选项。列表框的主要属性见表:属性名 属性类型 意义Items TStrings 以行为单位,列表框中选项的集合,组合框也有ItemsIndex Integer 选项的索引值,组合框夜也有Sorted Boolean 决定选项是否排序,组合框也有Columns Integer 决定列表框的列数,列表框独有MultiSelect Boolean

16、 是否可以选择多项,列表框独有SelCount Integer 表示被选中项的数目,只读,列表框独有Selected Boolean 用来设置或返回某选项是否被选中说明 在代码中可以调用 TStrings 类的相应方法来处理 Items 中的数据: ListBox1.Lines.Add(增加一个新行。); /在最后增加一个新行ListBox1.Lines.Delete(5); /删除第六行 ListBox1.Lines.Insert(3,插入一行) /在第四行处插入一个新行ListBox1.Lines.Move(2,4); /将第三行移至第五行 2、列表框 ListBox 的使用【例 5-9】

17、:将 【例 5-7】中的备注框改为列表框:设计步骤:(1) 建立应用程序用户界面。选择“新建 ”工程,进入窗体设计器,在窗体中增加 1 个列表框。(2) 程序设计编写按钮 Button1 的 OnClick 事件代码: procedure TForm1.Button1Click(Sender: TObject);varN,M,I,s: integer;F: single;Beginfor N:=1 to 50 dobeginM:= 2*N+1;S:= 0;I:= 2;F:= StrToFloat(IntToStr(M);while (I = Sqrt(F) and (S=0) dobeginI

18、f M mod I=0 Then s:= 1else I:= I+1;end;If S=0 then ListBox1.Items.Add(inttostr(M);end;end; 程序下载【例 5-11】:小学生做加减法的算术练习程序。计算机连续到随机到给出两位数的加减法算术题,要求学生回答,答对的打“”,答错的打“”。将作过的题目存放在列表框中备查,并随机地给出答题的正确率分析:随机函数 Random(n)返回一个 0-n 之间的随机实数为了生成某个范围内的随机整数,可以使用以下公式:Trunc(Random(最大值 - 最小值 + 1)+最小值)(1) 建立应用程序用户界面。选择“新建

19、”工程,进入窗体设计器,在窗体中做如下设计。(2) 程序设计 出题部分由窗体的激活(OnActive) 事件代码: procedure TForm1.FormActivate(Sender: TObject);varA,B,P,T: integer;beginRandomize;A:= Trunc(10+Random(90);B:= Trunc(10+Random(90);P:= Trunc(Random(2);if P = 0 thenbeginEdit1.Text:= Format(%3d + %3d = , A,B);Edit1.Tag:= A+B;endelse Beginif A B

20、 thenbeginT:=A; A:=B; B:=T;end;Edit1.Text:= format(%3d - %3d = , A,B);Edit1.Tag:= A-B;end;Edit2.Selstart:= 0;Edit2.Text:= ;Edit2.SetFocus;end;答题部分由编辑框 Edit2的按键(OnKeyPress) 事件代码: procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);varX: single;S: string;beginif Key=#13 thenbeginForm1.Tag:=

21、 Form1.Tag+1;if StrToInt(Edit2.Text) = Edit1.Tag thenbeginListBox1.Items.Insert(0, format(Edit1.Text+%3s ,Edit2.TExt);Listbox1.Tag:=ListBox1.Tag+1;endelseListBox1.Items.Insert(0,format(Edit1.Text+%3s , Edit2.TExt);Form1.FormActivate(Sender);X:= ListBox1.Tag*100/(Form1.Tag);S:= 共做 %d 题+#13+#13+#13+正确率为:+#13+#13+%f%;Label1.Caption:= Format(S,Form1.Tag,X);end;end;编写“清除”按钮 Button1 的 OnClick 事件代码: procedure TForm1.Button1Click(Sender: TObject);beginForm1.Tag:= 0;ListBox1.Tag:= 0;ListBox1.clear;Label1.Caption:= Format(#13+start again!#13+#13+#13+正确率为:+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报