VF 第章 结构化程序的设计_第1页
VF 第章 结构化程序的设计_第2页
VF 第章 结构化程序的设计_第3页
VF 第章 结构化程序的设计_第4页
VF 第章 结构化程序的设计_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-11-812021-11-82第第9章章 第第9 9章章2021-11-8滕永晨39.1.2 9.1.2 程序的控制结构程序的控制结构 任何复杂的程序都由任何复杂的程序都由3 3种基本控制结构组成。它们是种基本控制结构组成。它们是顺序结构、选择结构和循环结构。顺序结构、选择结构和循环结构。 图图9.19.1程序的控制结构程序的控制结构 第第9 9章章2021-11-8滕永晨49.1.3 结构化程序设计方法 结构化程序设计采用自顶向下、逐步求精和结构化程序设计采用自顶向下、逐步求精和模块化的分析方法。模块化的分析方法。 自顶向下是指对设计的系统要有一个全面自顶向下是指对设计的系统要有一

2、个全面的理解,从问题的全局入手,把一个复杂问题分的理解,从问题的全局入手,把一个复杂问题分解成若干个相互独立的子问题解成若干个相互独立的子问题 。逐步求精是指。逐步求精是指程序设计的过程是一个渐进的过程,先把一个子程序设计的过程是一个渐进的过程,先把一个子问题用一个程序模块来描述,再把每个模块的功问题用一个程序模块来描述,再把每个模块的功能逐步分解细化为一系列的具体步骤能逐步分解细化为一系列的具体步骤 。模块化。模块化是结构化程序的重要原则。所谓模块化就是把大是结构化程序的重要原则。所谓模块化就是把大程序按照功能分为较小的程序。程序按照功能分为较小的程序。 第第9 9章章2021-11-8滕永

3、晨59.1.4 9.1.4 程序文件的建立与执行程序文件的建立与执行 1 1命令方式建立或修改程序文件命令方式建立或修改程序文件命令格式:命令格式: modify command modify command ? ? modify.file.modify.file.文件名文件名? ? 功能:启动功能:启动vfpvfp提供的文本编辑器来建立或提供的文本编辑器来建立或编辑程序文件。编辑程序文件。2 2菜单方式建立编辑程序文件菜单方式建立编辑程序文件 第第9 9章章2021-11-8滕永晨6命令格式:命令格式: do do 程序文件名程序文件名 功功 能能 : 将程序文件从磁盘调入内存将程序文件从磁

4、盘调入内存, , 编译编译成成.fxp.fxp目标文件后并执行目标文件后并执行。3.3.程序文件的执行程序文件的执行 菜单方式:菜单方式:.cancel.cancel:终止程序运行,清除所:终止程序运行,清除所有的私有变量,返回命令窗口。有的私有变量,返回命令窗口。.return.return:结束程序执行,返回调用它的上级:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口。程序,若无上级程序则返回命令窗口。.quit.quit:结束程序执行并退出:结束程序执行并退出visual.foxprovisual.foxpro系统,返回操作系统。系统,返回操作系统。 第第9 9章章202

5、1-11-8滕永晨79.2 顺序结构程序 顺序结构是最简单、最基本的一种程序结顺序结构是最简单、最基本的一种程序结构。在顺序结构程序中,各命令按照各自出构。在顺序结构程序中,各命令按照各自出现的先后顺序,依次执行。现的先后顺序,依次执行。第第9 9章章2021-11-8滕永晨89.2.1 9.2.1 程序文件中的程序文件中的辅助命令辅助命令 一输入类语句一输入类语句 格格 式式1 1: store store 表达式表达式 to to 内存变量名内存变量名表表 格格 式式2 2: 内存变量内存变量 表达式表达式 功功 能:给内存变量赋值。能:给内存变量赋值。. . 赋值语句赋值语句第第9 9章

6、章2021-11-8滕永晨9. . 交互式语句交互式语句/ /键盘输入命令键盘输入命令 1. 1. 字符串数据输入命令字符串数据输入命令格式:格式: accept accept to to 功能:在屏幕上显示提示信息,等待用户从功能:在屏幕上显示提示信息,等待用户从键盘输入,再把输入内容赋值给指定的内存键盘输入,再把输入内容赋值给指定的内存变量。变量。 注:注:acceptaccept命令只能接受字符型常量,输入时不需加命令只能接受字符型常量,输入时不需加定界符。定界符。 键盘输入命令主要用于程序执行过程中原始数据的输入键盘输入命令主要用于程序执行过程中原始数据的输入。第第9 9章章2021-

7、11-8滕永晨10例例9-1:要求用户从键盘上输入用户名,然后:要求用户从键盘上输入用户名,然后把输入的用户名显示出来。把输入的用户名显示出来。accept “请输入用户名:请输入用户名:” to name?name第第9 9章章2021-11-8滕永晨11格式:格式:input input to to 2. 2. 数据输入命令数据输入命令功能:在屏幕上显示提示信息,等待用户从键盘输入,功能:在屏幕上显示提示信息,等待用户从键盘输入,再把输入内容赋值给指定的内存变量再把输入内容赋值给指定的内存变量。 注:注:inputinput命令能接受任何类型的表达式:命令能接受任何类型的表达式: 输入输入

8、c 型数据时,要使用型数据时,要使用 或或 “ ” 作为定界符;作为定界符; 输入输入l 型数据时,型数据时,.t. 和和 .f. ,两边的,两边的 . 不能省;不能省; 输入输入d 型数据时,要用型数据时,要用 或或ctod( ) 将字符串转成将字符串转成日期型变量。日期型变量。第第9 9章章2021-11-8滕永晨12例例9-2:求任意两数之和。:求任意两数之和。?x+yx+yinput “input “请输入另一个数请输入另一个数y y:” ” to yto yinput “input “请输入另一个数请输入另一个数x x:” ” to xto x第第9 9章章2021-11-8滕永晨1

9、3 j=2800j=2800 input “ input “输入输入 j+200 j+200 :” ” to ato a accept “ accept “输入输入 j+200 j+200 :” ” to bto b ?“a=”a=”,a a ? “b=” ? “b=”,b b 注:执行时,先后两次输入同样的内容:注:执行时,先后两次输入同样的内容:j+200j+200例例9-39-3: 给出下列给出下列a a、b b的结果的结果第第9 9章章2021-11-8滕永晨14格式:格式:wait wait to to timeout timeout 3. 3. 只能输入一个字符的命令只能输入一个字

10、符的命令功能:当程序执行某一处需要暂停时使用此命令。功能:当程序执行某一处需要暂停时使用此命令。 注:注:wait命令响应速度快,它只接受一个字符,不命令响应速度快,它只接受一个字符,不需用户键入回车键。需用户键入回车键。第第9 9章章2021-11-8滕永晨15* * * * * 数据表操作命令菜单数据表操作命令菜单 * * * * *1.1. 打开工作数据表打开工作数据表2.2. 增加数据表记录增加数据表记录3.3. 删除数据表记录删除数据表记录4.4. 修改数据表记录修改数据表记录5.5. 打印数据表记录打印数据表记录6.6. 关闭工作数据表关闭工作数据表? “您选择的是第您选择的是第”

11、 + choice + “个选项个选项”wait “请选择相应代码:请选择相应代码:” to choice例例9-4:第第9 9章章2021-11-8滕永晨16格式:格式: say say get get range range 1, 2 readread4. 4. 格式输入语句格式输入语句功能:在屏幕指定的坐标位置上显示提示或输入数据。功能:在屏幕指定的坐标位置上显示提示或输入数据。 read 一般与一般与get 联合起来用:联合起来用:当有当有read时,时, get 的内容可以从键盘上修改;的内容可以从键盘上修改;没有没有read时,时,get 后的变量只能显示内容,不能修改;后的变量只

12、能显示内容,不能修改;一个一个read可以修改它前面的多个可以修改它前面的多个get项的内容,但它可以项的内容,但它可以由由cleargets命令隔断。命令隔断。 注:注: :该变量应在其前面定义过:该变量应在其前面定义过 ( 赋初值赋初值 ) 。第第9 9章章2021-11-8滕永晨17 8, 18 say “* 数据表操作命令菜单数据表操作命令菜单 *” 9, 18 say “ 1.1.打开工作数据表打开工作数据表 ” 10, 18 say “ 2. 增加数据表记录增加数据表记录 ” 11, 18 say “ 3. 删除数据表记录删除数据表记录 ” 12, 18 say “ 4. 修改数据

13、表记录修改数据表记录 ” 13, 18 say “ 5. 打印数据表记录打印数据表记录 ” 14, 18 say “ 6. 关闭工作数据表关闭工作数据表 ” 18, 28 say “您选择的是您选择的是:” + ltrim(str(choice) 16, 28 say “ 请选择相应代码:请选择相应代码:” get choiceread例例9-5:第第9 9章章2021-11-8滕永晨18二输出类语句二输出类语句1. 1. 非格式输出语句非格式输出语句 格式格式1 1: ? 内存变量名表内存变量名表格式格式2: ? 内存变量名表内存变量名表注:语句注:语句1 1 是在光标所在行的下一行开始显示

14、,是在光标所在行的下一行开始显示, 语句语句2 2 则是在当前光标位置开始显示。则是在当前光标位置开始显示。功功 能:显示内存变量、常量或表达式的值。能:显示内存变量、常量或表达式的值。第第9 9章章2021-11-8滕永晨19格式:格式: say say functionfunction picturepicture 2. 2. 格式输出语句格式输出语句功能:按指定的坐标位置在屏幕上输出表达式的值。功能:按指定的坐标位置在屏幕上输出表达式的值。 注:注: 若选用若选用picturepicture、 functionfunction子句,则按一定的格式子句,则按一定的格式输出输出 ,分别见教材

15、,分别见教材p131p131的表的表6.16.1、6.26.2。第第9 9章章2021-11-8滕永晨20格式:格式: texttext endtext endtext 3. 3. 文本输出语句文本输出语句功能:在屏幕上原样显示功能:在屏幕上原样显示texttext和和endtextendtext之间的内容。之间的内容。 注:注: texttext、endtextendtext是一条子句,不能省略其中任一条是一条子句,不能省略其中任一条子句子句。第第9 9章章2021-11-8滕永晨21* 数据表操作命令菜单数据表操作命令菜单 * * * * *1.1. 打开工作数据表打开工作数据表2.2.

16、增加数据表记录增加数据表记录3.3. 删除数据表记录删除数据表记录4.4. 修改数据表记录修改数据表记录5.5. 打印数据表记录打印数据表记录6.6. 关闭工作数据表关闭工作数据表? “您选择的是第您选择的是第” + choice + “个选项个选项”wait “请选择相应代码:请选择相应代码:” to choice例例6-6textendtext第第9 9章章2021-11-8滕永晨22三三. . 设置会话状态语句设置会话状态语句语句格式语句格式2 2: set talk offset talk off功能功能 语句语句1 1:设置会话状态开通。:设置会话状态开通。 语句语句2 2:设置会话

17、状态关闭。:设置会话状态关闭。语句格式语句格式1 1: set talk onset talk on第第9 9章章2021-11-8滕永晨23四四. . 清屏与注释语句清屏与注释语句语句格式:语句格式: clearclear1. 1. 清屏语句清屏语句功功 能能 :清除屏幕上所有显示内容,光标回到屏幕左:清除屏幕上所有显示内容,光标回到屏幕左上角。上角。第第9 9章章2021-11-8滕永晨242. 2. 注释语句注释语句语句格式语句格式2 2: * * 注:语句注:语句1 1、2 2、3 3 在程序中,系统不执行在程序中,系统不执行。语句格式语句格式1 1: note note 功功 能能

18、: 在程序中加入说明性语句。在程序中加入说明性语句。语句格式语句格式3 3: & & 第第9 9章章2021-11-8滕永晨25五五. return. return命令命令注:一般注:一般returnreturn出现于程序末尾。出现于程序末尾。格式:格式: return return /to master/to /to master/to 功能功能 : 结束一个程序的执行。结束一个程序的执行。第第9 9章章2021-11-8滕永晨26六六. . 终止程序执行语句终止程序执行语句语句格式语句格式2 2: quitquit注注: : 语句语句1 1:在终止程序执行后,返回到:在终止

19、程序执行后,返回到vfpvfp命令状态;命令状态; 语句语句2 2:返回到操作系统状态。:返回到操作系统状态。语句格式语句格式1 1: cancelcancel功能:终止程序执行,关闭所有打开的命令文件。功能:终止程序执行,关闭所有打开的命令文件。第第9 9章章2021-11-8滕永晨27顺序结构程序:按语句的顺序结构程序:按语句的先后顺序组织的程序,即把处先后顺序组织的程序,即把处理过程的各个步骤按执行的先理过程的各个步骤按执行的先后顺序列出。后顺序列出。其流程图如右图所示。其流程图如右图所示。顺序结构程序设计顺序结构程序设计 a b c n图中箭头表示程序执行的图中箭头表示程序执行的方向,

20、方框代表不同的可执行方向,方框代表不同的可执行语句。语句。 第第9 9章章2021-11-8滕永晨28例例9-7 变量的初始化和变量的赋值变量的初始化和变量的赋值。set talk off store 0 to x,y,za=3b=a+1c=a*b? x, y, z? a, b, cset talk on 第第9 9章章2021-11-8滕永晨29例例9-8 执行以下命令序列,问答问题:执行以下命令序列,问答问题:最后显示的值是:最后显示的值是:a.a. 所有职工的平均工资;所有职工的平均工资;b.b. 所有工资在所有工资在10001000元以上元以上的职工的平均工资;的职工的平均工资;c.c

21、. 所有工资在所有工资在10001000元以上元以上的职工人数;的职工人数;d.d. 所有职工人数所有职工人数 。useusezgbzgbsum sum 基本工资基本工资 for for 基本工资基本工资1000 to sgz1000 to sgzcopy for copy for 基本工资基本工资1000 to gzk21000 to gzk2use gzk2use gzk2num=reccount( )num=reccount( )ave=sgz/numave=sgz/num? ave? ave第第9 9章章2021-11-8滕永晨30在计算机应用的许多场合,要求程序根据不同的在计算机应用

22、的许多场合,要求程序根据不同的条件采用不同的处理方法。如果条件满足,则执行某条件采用不同的处理方法。如果条件满足,则执行某一些语句;如果条件不满足,则执行另一些语句。这一些语句;如果条件不满足,则执行另一些语句。这些需要根据判断条件来控制程序走向的程序设计称为些需要根据判断条件来控制程序走向的程序设计称为选择结构程序设计,又称分支结构程序设计。选择结构程序设计,又称分支结构程序设计。visual foxprovisual foxpro提供双分支选择语句、多分支选提供双分支选择语句、多分支选择语句两种选择结构。择语句两种选择结构。第第9 9章章2021-11-8滕永晨31 endifendif后

23、的语句后的语句语句序列语句序列1 1 endifendif后的语句后的语句语句格式:语句格式:if if 条件条件 语句序列语句序列1 1endif endif 条件条件9.3.1 9.3.1 双分支选择语句双分支选择语句( (选择判断语句选择判断语句) ) 条件条件.t.f.语句序列语句序列1 1.y.n.语句序列语句序列2 2 elseelse 语句序列语句序列2 2 第第9 9章章2021-11-8滕永晨32注:注:(1) if和endif必须配对使用,而else可选。(2) if、else、endif必须各占一行。(3) 可以为关系表达式、逻辑表达式。(4)在语句序列1和语句序列2中可

24、以嵌套if语句。执行过程执行过程:如果成立,就执行语句序列1;如果不成立,执行语句序列2。 第第9 9章章2021-11-8滕永晨33例例 请改用分支结构语句编程计算电费请改用分支结构语句编程计算电费: : 不超过不超过5050度度, , 每度每度0.520.52元元; ; 超过超过5050度时度时, , 超出部分每度超出部分每度0.750.75元。元。set talk offset talk offinput “input “请输入所用电量请输入所用电量: to dl: to dldf=iifdf=iif(dl=50dl=50,0.520.52* *dldl,0.520.52* *50+0.

25、7550+0.75* *(dl-50)(dl-50))? “? “应缴电费为应缴电费为:” + ltrim(str(df,10,2) + :” + ltrim(str(df,10,2) + 元元 set talk onset talk onreturn return 第第9 9章章2021-11-8滕永晨34set talk off input 请输入行李重量请输入行李重量: to wif 1 yf=0.22*w else yf= 0.22*40 + 1endif ? 应交托运费为应交托运费为:+ltrim(str(yf,10,2)+元元set talk onreturn 例例 火车托运行李火

26、车托运行李: : 每人不超过每人不超过4040公斤公斤, ,每公斤每公斤0.220.22元;超过元;超过4040公斤时公斤时, , 超出部分每公斤超出部分每公斤0.400.40元。填空完成以下程序。元。填空完成以下程序。w 40(w-40) * 0.4第第9 9章章2021-11-8滕永晨35set talk offset talk offset defa to f:jfvfpprgset defa to f:jfvfpprguse zgbuse zgbaccept “accept “请输入要查找人的姓名请输入要查找人的姓名: ” to n: ” to nlocate all for xm=n

27、locate all for xm=nif found( )if found( ) dispdisp else else ? ? 查无此人查无此人 endifendifuseuseset talk onset talk onreturnreturn例例 编程:在编程:在zgb.dbfzgb.dbf中查找某人。中查找某人。第第9 9章章2021-11-8滕永晨369.3.2 9.3.2 多分支选择语句多分支选择语句( (选择语句选择语句| |情况语句情况语句) )说明说明:do casedo case和第一个和第一个casecase子句之间不能插入任何子句之间不能插入任何语句。语句。do cas

28、edo case和和endcaseendcase必必须配对使用,且须配对使用,且do casedo case,casecase,otherwiseotherwise和和endcaseendcase各子句必须各占各子句必须各占一行。一行。在语句序列中可在语句序列中可嵌套情况语句。嵌套情况语句。 语句格式语句格式: : do case do case case case 条件表达式条件表达式1 1 语句序列语句序列1 1 case case 条件表达式条件表达式2 2 语句序列语句序列2 2 case case 条件表达式条件表达式n n 语句序列语句序列n n otherwise otherwi

29、se 语句序列语句序列n+1n+1 endcase endcase 第第9 9章章2021-11-8滕永晨37功能:系统依次测试语句中各个条件表达式的值功能:系统依次测试语句中各个条件表达式的值: : 若为真,若为真,即执行相应条件表达式后的语句序列即执行相应条件表达式后的语句序列, , 然后脱离情然后脱离情况语句况语句, ,执行执行endcaseendcase的下一语句。若所有的条件表达式的值的下一语句。若所有的条件表达式的值均为假,则执行均为假,则执行otherwiseotherwise后面的语句序列后面的语句序列, , 然后脱离情况然后脱离情况语句语句, ,执行执行endcaseendc

30、ase下一语句下一语句 。 开始判断开始判断语句序列语句序列1 1序列序列2 2序列序列n n序列序列n+1n+1endcaseendcase后面的语句后面的语句条件条件1条件条件2条件条件n其它其它第第9 9章章2021-11-8滕永晨38例例 已知cjb.dbf中包含xingming,avcj等字段。试用avcj来判断该生成绩属于优(90)、良(80)、及格(60)或不及格(60)。use cjbaccept 请输入姓名: to xmlocate for alltrim(xingming)=alltrim(xm)navcj第第9 9章章2021-11-8滕永晨39do case case

31、n=90 dj=优 case n=80 dj=良 case n=60 dj=及格 otherwise dj=不及格endcase5,10 say xingming+同学的成绩等级为:+ dj第第9 9章章2021-11-8滕永晨40a=3000a=3000do casedo case case a1000 case a=1000 case a=1000 b=a b=a case a=2000 case a=2000 b=2 b=2* *a a case a=3000 case a=3000 b=3 b=3* *a aendcaseendcase? b? b例例 阅读下列程序段,写出运行结果:

32、第第9 9章章2021-11-8滕永晨41set talk offset talk offset defa to f:yyfoxset defa to f:yyfoxclearclearcho=0cho=0 8, 18 say “* 数据表操作命令菜单数据表操作命令菜单 *” 9, 18 say “ 1. 打开工作数据表打开工作数据表 ” 10, 18 say “ 2. 增加数据表记录增加数据表记录 ” 11, 18 say “ 3. 删除数据表记录删除数据表记录 ” 12, 18 say “ 4. 修改数据表记录修改数据表记录 ” 14, 18 say “ 5. 关闭工作数据表关闭工作数据表

33、 ” 15, 28 say “ 请选择相应代码:请选择相应代码:” get choreaddo case case cho=1 accept “请输入表文件名请输入表文件名:” to bm use &bm例例 利用利用casecase语句实现简单的菜单功能语句实现简单的菜单功能 第第9 9章章2021-11-8滕永晨42 case cho=2 append case cho=3 input “请输入要删除的记录号请输入要删除的记录号:” to jlh go jlh dele case cho=4 browse case cho=5 use otherwise 15, 28 say “

34、15, 28 say “ 选择代码错选择代码错!”!” endcaseset talk on return第第9 9章章2021-11-8滕永晨43 循环,就是按给定的条件连续地重复执行一段特循环,就是按给定的条件连续地重复执行一段特定功能的程序。循环结构也称为重复结构。定功能的程序。循环结构也称为重复结构。 visual foxprovisual foxpro给出了三种循环结构:给出了三种循环结构:条件循环(条件循环(do whiledo whileenddoenddo)计算循环(计算循环(forforendforendfor)扫描循环(扫描循环(scanscanendscanendscan

35、)第第9 9章章2021-11-8滕永晨44语句格式:语句格式: do while do while 1 looploop 2 exitexit 3 enddo enddo 循环体循环体 enddoenddo后的语句后的语句条件条件.t.f.条件循环结构流程图条件循环结构流程图一、条件循环一、条件循环循环体循环体功能:有条件连续地重复执行功能:有条件连续地重复执行do whiledo while与与enddoenddo之间的语句序列,直到之间的语句序列,直到 为为假或因执行假或因执行exitexit语句而结束。语句而结束。条件条件第第9 9章章2021-11-8滕永晨45(2 2)循环体中的)

36、循环体中的looploop是可选项。遇到是可选项。遇到looploop时,不再执行后面的语句,时,不再执行后面的语句,转回转回do whiledo while处重新判断。其作用相当于一个特殊的处重新判断。其作用相当于一个特殊的“短路短路”返回控返回控制。制。(3 3)循环体中的)循环体中的exitexit也是可选项。遇到它时便无条件地退出循环,转也是可选项。遇到它时便无条件地退出循环,转到到enddoenddo后面的语句。其作用相当于一个紧急出口。后面的语句。其作用相当于一个紧急出口。(4 4)通常)通常looploop或或exitexit出现在循环体内嵌套的分支语句中,根据条件来出现在循环体

37、内嵌套的分支语句中,根据条件来决定是决定是looploop回去,还是回去,还是exitexit出去。出去。功能说明:功能说明:(1 1)系统执行该语句时,先判断循环开始)系统执行该语句时,先判断循环开始do whiledo while的条件是否成立,的条件是否成立, 如果条件为真,则执行循环体中的语句序列。当执行到如果条件为真,则执行循环体中的语句序列。当执行到enddoenddo时,返回时,返回到到do whiledo while,再次判断条件是否为真,以确定是否再次执行循环体。,再次判断条件是否为真,以确定是否再次执行循环体。若条件为假,则结束循环若条件为假,则结束循环 ,执行,执行end

38、doenddo后面的语句。后面的语句。 如果第一次判断如果第一次判断条件时,条件即为假,则循环体一次都不执行,这就是称为条件时,条件即为假,则循环体一次都不执行,这就是称为“先判断先判断后执行后执行”的语句。的语句。第第9 9章章2021-11-8滕永晨46set talk off set talk onreturnclear?ok?ok?ok例例 在屏幕上换行显示字符串在屏幕上换行显示字符串“ok”20ok”20次次第第9 9章章2021-11-8滕永晨47i=1? oki=i+1enddodo whileset talk off set talk onreturncleari=20循环次数

39、循环次数循环前循环前i值值循环后循环后i值值112223202021&设置循环变量初值&修改循环变量例例 在屏幕上换行显示字符串在屏幕上换行显示字符串ok20ok20次次? ok第第9 9章章2021-11-8滕永晨48 do while do while 语句之前一定要有语句之前一定要有设置循环变量初设置循环变量初 值值的语句。的语句。 在以循环变量作为循环控制参数的条件循环中在以循环变量作为循环控制参数的条件循环中 循环体内一定要有循环体内一定要有修改循环变量修改循环变量的语句,否则的语句,否则 就会出现就会出现死循环死循环。注意注意第第9 9章章2021-11-8滕永晨4

40、9例 求自然数1至4的和。 分析算法分析算法: :s= s+i ;s= s+i ;i= i+1 ;i= i+1 ;1. i=1 , s=0 ;1. i=1 , s=0 ;2. 2. 累加第累加第 i i 个数个数3. 3. 累加次数加累加次数加1 1 4. 4. 当当 i= 4 i= 4 重复做重复做2 2 ;5. ? s 5. ? s 。第第9 9章章2021-11-8滕永晨50例 求自然数1至4的和。 set talk offs=0 &定义一个变量表示和,并初始化&指定以循环次数作判断条件 s=s+i&把s的值加上i后再赋给s,即求和&修改循环变量i=1do

41、 while i=4i=i+1enddo? s&输出求和的结果 set talk on return&设置循环变量的初值第第9 9章章2021-11-8滕永晨51程序流程图程序流程图s=0i=11=4s=0+1i=1+1.t.2=4s=1+2i=2+13=4s=3+3i=3+14=4s=6+4i= 4+15=4.f.? 10set talk offs=0i=1do while i=4 s=s+i i=i+1enddo? sset talk onreturn第第9 9章章2021-11-8滕永晨52 若求自然数若求自然数1 1至至n n的和呢?的和呢? 程序:求自然数1至4的和s

42、et talk offs=0 i=1input input 请输入请输入n n的值的值: : to n to n do while i=4 s=s+ii=i+1enddo?s set talk on returni=ni=n推广推广1第第9 9章章2021-11-8滕永晨53 若求自然数若求自然数1 1至至n n的积呢?的积呢? 程序:求自然数1至n的和set talk offs=0 i=1input input 请输入请输入n n的值的值: : to n to n do while i=n s =s + ii =i + 1enddo?s set talk on return推广推广2s=1s

43、=1s=ss=s* *i i第第9 9章章2021-11-8滕永晨54例例 阅读程序,并说出程序的运行结果阅读程序,并说出程序的运行结果if i=3 loopendif程序结果程序结果23456程序结果程序结果2456 return set talk onset talk offi=1do while i=5 i=i+1 enddo ? i? “e”ee第第9 9章章2021-11-8滕永晨55例例 求求1100以内所有奇数的和。以内所有奇数的和。 set talk offs=0i=0do while i100 i = i + 1 if int(i/2) = i/2 loop endif s

44、= s + ienddo? “1 1到到100100的奇数和的奇数和 s= ”, sset talk onreturn以循环变量作为控以循环变量作为控制参数控制循环。制参数控制循环。s=0i=1do while i 720 exitendif第第9 9章章2021-11-8滕永晨58例 求1,100内所有能被3或被5整除的数的个数。i=1do while i=100i=i+1enddo if mod(i,3)=0 .or. mod(i,5)=0n=n+1endifn= 0&定义一个变量表示个数,并初始化&总个数增加1 set talk off? ? 满足条件的数的个数为满足条件

45、的数的个数为,n,nset talk on return? i&显示满足条件的这个数第第9 9章章2021-11-8滕永晨59语句格式语句格式: for x xa a to b b step c c loop exit endfor | next 二、计数循环二、计数循环循环体循环体功能:将功能:将forforendforendfor循环中的循环中的 执行指定的次数。执行指定的次数。循环变量循环变量循环初值循环初值步长值步长值循环终值循环终值第第9 9章章2021-11-8滕永晨60例例 求求1100之和。之和。 set talk offset talk offclear clear

46、s=0s=0for i=1 to 100 for i=1 to 100 s = s + is = s + iendforendfor? “s = ”, s? “s = ”, sset talk onset talk onreturnreturn 若求若求100100的阶乘呢?的阶乘呢?思考思考1第第9 9章章2021-11-8滕永晨61例例 求求1100之奇数和。之奇数和。 set talk offset talk offclear clear s=0s=0for i=1 to 100 step 2for i=1 to 100 step 2 s = s + is = s + inext nex

47、t ? “s = ”, s? “s = ”, sset talk onset talk onreturnreturn 若求若求1 1100100的偶数和呢?的偶数和呢?思考思考2第第9 9章章2021-11-8滕永晨62例例 阅读程序,写出程序运行结果阅读程序,写出程序运行结果 set talk onset talk offs=0 for k=1 to 10 step 2 s=s+k endfor ? s returnif k=7loopendif思考思考3 3若改成若改成exitexit呢?呢?第第9 9章章2021-11-8滕永晨63语句格式语句格式: scan for loop exit

48、 endscan 三、表文件扫描循环三、表文件扫描循环循环体循环体功能:在指定的范围内,扫描满足给定条件的记录,执行相应的语句。功能:在指定的范围内,扫描满足给定条件的记录,执行相应的语句。第第9 9章章2021-11-8滕永晨64set talk offset talk offuse zgbuse zgbaccept “accept “请输入要查找人的姓名请输入要查找人的姓名: ” to n: ” to nscan for xm=n scan for xm=n dispdisp wait “ wait “按任意键继续,按按任意键继续,按escesc键退出键退出”endscanendscanu

49、seuse?“查找结束查找结束”set talk onset talk onreturnreturn例例 用用scanscan语句语句编程:在编程:在zgb.dbf中查找某人。中查找某人。第第9 9章章2021-11-8滕永晨65对数据表扫描时三种循环的等价格式对数据表扫描时三种循环的等价格式表文件扫描循环表文件扫描循环: scan for endscan条件循环条件循环: do whiledo while .not. eof() .not. eof()skipskip enddo enddo计数循环计数循环: n=reccount()n=reccount() for i=1 to n for

50、 i=1 to n go i go i endfor endfor第第9 9章章2021-11-8滕永晨66循环嵌套循环体内又设置循环的情况称为循环体内又设置循环的情况称为多重循环多重循环,又称为,又称为循环嵌循环嵌套套。内外循环的层次必须分明,不允许有交叉现象出现。内外循环的层次必须分明,不允许有交叉现象出现。循环结构可以与分支结构嵌套,同样不允许有交叉现象出循环结构可以与分支结构嵌套,同样不允许有交叉现象出现。现。 以下交叉情形不允许出现:以下交叉情形不允许出现: for if for scan do while do case endfor endif endfor endscan en

51、ddo endcase 图6.7 嵌套不允许交叉 第第9 9章章2021-11-8滕永晨67例例 已知已知s s1 1=1=1,s s2 2=1+2=1+2,s s3 3=1+2+3=1+2+3, s sn n=1+2+3+=1+2+3+n+n,编程求,编程求s s1 1+s+s2 2+ +s+s100100的和。的和。s=0n=1do while n=100 i=1 sub=0 do while i800s800时退出,求此时最小的时退出,求此时最小的s s值值!1!21!111ns(4 4)求)求ny21132112111(5 5)求)求第第9 9章章2021-11-8滕永晨699.5 程

52、序的模块化 9.5.1 子程序、过程和函数 1.1.子程序子程序(1).(1).子程序的结构子程序的结构子程序与其他程序文件的惟一区别是其末尾或返回子程序与其他程序文件的惟一区别是其末尾或返回处必须有返回语句。处必须有返回语句。命令格式:命令格式:return.to.masterto.程序文件名表达式 第第9 9章章2021-11-8滕永晨70 (2). (2).子程序的调用子程序的调用 子程序调用命令与主程序执行命令相同,其格式都子程序调用命令与主程序执行命令相同,其格式都是:是:do程序文件名过程名with.参数表(3).(3).子程序的嵌套调用子程序的嵌套调用 主程序可以调用子程序,子程

53、序还可以调用另外的主程序可以调用子程序,子程序还可以调用另外的子程序,这就是子程序的嵌套调用。实际上,子程子程序,这就是子程序的嵌套调用。实际上,子程序和主程序都是相对的,任何一个程序可以调用其序和主程序都是相对的,任何一个程序可以调用其他程序,也可以被其他程序调用。每个被调用程序他程序,也可以被其他程序调用。每个被调用程序的末尾或返回处都要加上的末尾或返回处都要加上returnreturn命令。命令。 第第9 9章章2021-11-8滕永晨712.2.自定义函数自定义函数(1).(1).自定义函数的结构自定义函数的结构 function.函数名parameters.参数表命令组 return

54、.表达式(2).(2).自定义函数的调用自定义函数的调用 调用格式是:调用格式是: 函数名(自变量表) 第第9 9章章2021-11-8滕永晨723.过程与过程文件(1).过程的结构 过程的一般格式是:procedure过程名parameters参数表命令组 return (2).过程文件 一个过程可以以文件形式单独存在,也可以将多个过程合并到一个文件中,这个文件称为过程文件。在过程文件中,每个过程仍然是独立的,可以单独调用。 第第9 9章章2021-11-8滕永晨73(3).(3).过程文件的打开与关闭过程文件的打开与关闭 打开过程文件命令格式是:打开过程文件命令格式是: set.proce

55、dure.to.过程文件名关闭过程文件命令格式是:关闭过程文件命令格式是:set.procedure.to或者close.procedure 第第9 9章章2021-11-8滕永晨749.5.2 内存变量的作用域 1.1.全局内存变量全局内存变量定义全局变量的命令格式:定义全局变量的命令格式:命令格式命令格式1 1:public内存变量表allall link通配符all except通配符命令格式命令格式2 2:public.array数组名(下标上界1,下标上界2),数组名(下标上界1,下标上界2),功能:定义全局内存变量或数组。功能:定义全局内存变量或数组。 第第9 9章章2021-11-8滕永晨752.2.局部内存变量局部内存变量 局部内存变量只能在定义它的程序及其下级程局部内存变量只能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论