ImageVerifierCode 换一换
格式:PPT , 页数:34 ,大小:146.50KB ,
资源ID:8010172      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8010172.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第6章 结构化程序设计.ppt)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第6章 结构化程序设计.ppt

1、1,第六章,结构化程序设计,2,本章目录,第一节 程序文件 第二节 程序的基本结构 第三节 程序的模块化 第四节 程序调试,3,第一节 程序文件,VF中的程序设计 程序文件的建立 结构化程序设计基础 编程的几点说明,4,一、VF中的程序设计,VF的工作方式有两种: 交互操作方式(命令、菜单) 程序文件方式Visual FoxPro系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。Visual FoxPro系统的程序有两个特点:一是程序控制流模式,由顺序、分支、循环三种基本结构构成。二是面向对象可视化的结构程序模块,在每个模块的内部也是由程

2、序控制流组成。,5,二、程序文件的建立,建立、修改程序文件Modify Command d:path程序文件名程序文件扩展名为.PRG 运行程序文件 Do d:path 程序文件名 With 参数表 程序文件名(参数表) 程序文件可被修改并重新运行,且可多次运行;一个程序可调用其他程序(子程序、过程),6,1原则和方法结构化程序设计是一种程序设计方法,其设计原则和方法是:自顶向下,逐步求精,程序结构模块化。2结构化程序的三种基本结构 顺序结构:在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。 选择结构:在程序执行时,根据不同的条件,选择执行不同的程序语句。 循环结构:使某些语句或程序

3、段重复执行若干次。 每一个基本结构可以包含一个或多个命令。 过程结构:如果一些程序段需要反复执行多次,但这些程序段不是集中在一个固定的位置上重复执行,就可把这些程序段独立出来形成一个过程或自定义函数。,三、结构化程序设计基础,7,图6-1 顺序结构流程图 图6-2 分支结构流程图,三、结构化程序设计基础,图6-3 当型循环结构流程图形 图6-4 直到型循环结构流程图,8,四、编程的几点说明,注释语句 以note、* 或 & 开头的代码行 命令后添加注释,则以&开头 命令如果分行书写,应在行尾加续行符; Quit:退出VF系统。 Wait语句Wait 提示符 windows at 行,列 Tim

4、eout 数值表达式 Set default to 默认路径 &设置默认路径 Set talk on|off &打开|关闭命令执行时的对话开关 Set century on | off &是否用四位表示年 Set fields to 字段名表 &设置字段筛选 Set filter to 条件 &设置记录筛选 Set sysmenu to default &恢复系统的默认菜单,9,第二节 程序的基本结构,顺序结构 选择结构 循环结构,10,一、顺序结构,顺序结构是指按程序书写的先后顺序执行。例:p1.prgset talk offset dafault to e:图书管理系统open datab

5、ase 学生管理学生管理wait “按任意键显示学生表的内容”select * from 学生 &显示学生表的内容close database all,11,二、分支结构,1.单向分支单向分支语句,即根据条件表达式的值,决定某一操作是否执行。If 条件命令行序列EndIf,12,2.双向分支双向分支语句,即根据条件表达式的值,选择两个操作中的一个来执行。IF 条件命令行序列1ELSE命令行序列2EndIf,二、分支结构,13,举例:闰年问题,输入一个年份,编程判断是否是闰年。一个年份满足以下条件之一即为闰年: 能被4整除且不能被100整除 能被400整除Input “请输入年份:” to ye

6、ar IF year%4=0 AND year%100!=0 or year%400=0? “是闰年“ELSE? “不是闰年“ENDIF,14,3.多向分支 Do CaseCase 条件1命令行序列1Case 条件2命令行序列2 Otherwise命令行序列n+1 EndCase举例:将求闰年问题改成多向分支结构,二、分支结构,15,举例:成绩判定,Input “请输入成绩:“ to 成绩 do casecase 成绩=85? “优秀“case 成绩=75? “良好“case 成绩=60? “及格“case 成绩=0? “不及格“otherwise? “成绩输入错误!“ENDcase,16,4

7、.使用分支语句应注意的几点 IfEndIf和Do CaseEndCase必须配对使用 条件可以是各种表达式或函数的组合,其值必须是逻辑值。 命令行序列:可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。 Do CaseEndCase命令中,若有多个Case的条件值为真时,只执行第一个条件值为真的,然后执行 EndCase的后面的第一条命令。,二、分支结构,17,三、循环结构,1.“当”型循环“当”型循环,即根据条件表达式的值决定循环体内语句的执行次数。Do While 条件命令行序列EndDo,18,举例:累加和累乘,求1+2+3+100 i=1 s=0 do while i=100

8、s=s+ii=i+1 enddo ? S思考:求10!程序怎样改?,求1!+2!+3!+10! n=1 sum=0 do while n=10i=1s=1do while i=ns=s*ii=i+1enddosum=sum+sn=n+1 enddo ? sum,19,2.“计数”型循环“计数”型循环,即根据循环变量的初值、终值和步长,决定循环体内语句的执行次数。For 循环变量=初值 To 终值 Step 步长命令行序列 EndForNext,三、循环结构,20,举例:累加和累乘,求1+2+3+100 s=0 for i=1 to 100 step 1s=s+i enddo ? S思考:求10

9、!程序怎样改?,求1!+2!+3!+10! sum=0 For n=1 to 10s=1for i=1 to n s=s*iendfor sum=sum+s endfor ? sum,21,3.“指针”型循环“指针”型循环,即根据表中的当前记录指针决定循环体内语句的执行次数。只适合于表循环。Scan 范围 For 条件命令行序列EndScan,三、循环结构,22,程序举例,求每门课程的前三名,包含课程号,学号和成绩,并将结果存放 在表result中。 select 课程号,学号,成绩 from 成绩 where .f. into dbf result select dist 课程号 from

10、成绩 into cursor kcID select kcid scan select 课程号,学号,成绩 from 成绩 where 成绩.课程号=kcid.课程号;order by 成绩 desc top 3 into array szinsert into result from array sz endscan,23,4.使用循环语句应注意的几点 Do While和EndDo、For和EndFor、Scan和EndScan必须配对使用。 命令行序列:可以是任何FoxPro命令或语句,也可以是循环语句,即可以为多重循环。 循环变量:应是数值型的内存变量或数组元素。 Exit和Loop命令

11、嵌入在循环体内,可以改变循环次数,但是不能单独使用。 Exit:退出循环。 Loop:重新下一次循环。,三、循环结构,24,编程示例:随机产生x个09的随机整数,para xDIME A(x) FOR I=1 TO xA(I)=INT( 10*RAND() ) ? A(I) ENDFOR,25,编程示例:求水仙花数,for i=1 to 9 for j=0 to 9 for k=0 to 9if(i*3+j*3+k*3=i*100+j*10+k)? i*100+j*10+kendif endfor endfor endfor,for i=100 to 999x=i%10y=int(i/10)%

12、10z=int(i/100)%10if (x*3+y*3+z*3=i)? iendif endfor,26,编程示例:x元钱买x只鸡,*para x x=100 for cock=1 to int(x/5) for hen=1 to int(x/3) for chick=1 to x-2 if (cock+hen+chick=x and; cock*5+hen*3+chick/3=x)? Cock,hen,chick endif endfor endfor endfor,27,第二节 过程和过程文件,过程和过程文件 过程和过程文件的建立 过程和过程的使用 变量的作用域 参数传递,28,一、过程

13、与过程文件,过程是由一个或多个命令、语句构成的程序段。它以过程说明语句Proc开头,以返回语句Return结束。 过程文件可以存储多个过程。 打开一个过程文件后,就可以调用其中定义的每个过程。 使用过程时,通过过程名调用并执行。,29,1. 过程文件的建立modify command 过程文件名 2. 过程的定义(放在过程文件中)Proc 过程名Para 参数表 命令行序列Return 返回值EndProc,二、过程与过程文件的创建,function 过程名Para 参数表 命令行序列Return 返回值Endfunc,30,1. 过程文件的打开Set Proc to 过程文件名 2. 过程的

14、调用 Do 过程名 过程名() Do 过程名 with 实参表 过程名(实参表) 3. 过程文件的关闭 Set Proc to Close Proc,三、过程与过程文件的使用,31,4. 参数传递 Do 过程名 with 实参表 如果参数是常量或表达式,则按值传递; 如果参数是变量,则按引用传递(实参和形参是同一变量,尽管它们的名字可能不同)。 过程名(实参表) 默认为按值传递 使用命令可改变参数传递方式:set UDFP to value &设置成按值传递set UDFP to refe &设置成按引用传递,三、过程与过程文件的使用,32,Clear all X=100 ? XProc su

15、b1x=20 Endproc,函数参数传递举例,Clear all X=100 ? XProc sub1local xx=20 Endproc,Clear all X=100 ? XProc sub1private xx=20 Endproc,33,VF中的内存变量按作用域可分为三类:公共变量、私有变量和局部变量 1. 公共变量:在任何模块中都可使用的变量。Public 内存变量表 2. 私有变量:在建立它的模块及其下属各层模块中使用的变量。 3. 局部变量:只在建立它的模块中使用的变量。Local 内存变量表 4. 变量的隐藏private 内存变量表功能:隐藏上层模块中可能存在的同名内存变

16、量。说明: 1. 程序中没有说明的内存变量,均为私有变量。 2. 命令窗口中建立的内存变量,均为公共变量。 3. 用Para说明的形参为私有变量,用Lpara说明的则为局部变量。,四、变量的作用域,34,Clear all mx=“Visual Foxpro“ my=“二级“ Do sub1 with mx ? my+mx ReturnProc sub1 Para my Local mx mx=“Visual Foxpro DBMS 考试“ my=“计算机等级“+my Return,变量作用域举例,结果为:二级计算机等级Visual Foxpro,如果将para my 替换成:para mx1,则结果为:计算机等级二级Visual Foxpro,

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


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

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

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