VFP第6章2009.ppt

上传人:bao****ty 文档编号:144340603 上传时间:2020-09-07 格式:PPT 页数:21 大小:657KB
返回 下载 相关 举报
VFP第6章2009.ppt_第1页
第1页 / 共21页
VFP第6章2009.ppt_第2页
第2页 / 共21页
VFP第6章2009.ppt_第3页
第3页 / 共21页
VFP第6章2009.ppt_第4页
第4页 / 共21页
VFP第6章2009.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《VFP第6章2009.ppt》由会员分享,可在线阅读,更多相关《VFP第6章2009.ppt(21页珍藏版)》请在金锄头文库上搜索。

1、Visual Foxpro程序设计,上海交通大学出版社,15:04,2,第6章 结构化程序设计,程序设计概念,使用计算机解决实际问题,首先要对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。,算法,算法是解决问题的逻辑步骤,是对特定问题求解步骤的一种描述。只有通过算法能够描述的问题,才能通过计算机求解。对同一个问题,可以有不同的解题方法和步骤,也就有不同的算法。,计算机算法:用程序解决问题的逻辑步骤,是指令的有限序列。可分为科学计算领域(处理数值数据)和数据处理领域(处理非数值领域)两大类。,算法的基本特征,输

2、入:有零个或多个数据的输入。,输出:有一个或多个数据的输出。,有穷性:一个算法应包含有限的操作步骤,而不能是无限的。,确定性:算法中每一个步骤应当是确定的,不应是含糊、模棱两可的。,可行性:算法中每一个步骤应当能有效地执行,并得到确定的结果。,15:04,3,第6章 结构化程序设计,算法的表示,用自然语言表示:自然语言可以是中文、英文、数学表达式等,通俗易懂但表达文字可能过长,表示不太严格,对分支和循环结构表示很不方便。,【例】求数列1+2+m的值N,当N10000时结束。算法可表示如下:,N=0; m=0; m加1; N加m 判断N是否大于10000,如果满足条件则结束,不满足条件则再从开始

3、继续执行。,【例】对于一个大于或等于n的正整数,判断它是不是一个素数,算法可表示如下:,输入n的值; i=2; n被i除,得余数r; 如果r=0,表示n能被i整除,则打印“n不是素数”,算法结束;否则执行; i+1i; 如果in-1,返回;否则打印“n是素数”;算法结束(或如果i ,返回;否则打印“n是素数”;算法结束) 。,15:04,4,第6章 结构化程序设计,用流程图表示:用一些符号来表示各种操作,形象直观、简单,易于理解、修改和交流。,【例】用框图描述 如下函数的求解过程:,start,Input x,X0 ?,y=5,y=-5,Output y,end,N,Y,用伪代码表示 利用介于

4、自然语言和计算机语言之间的文字和符号来描述算法,它不用图形符号,这种表示方法书写方便,格式紧凑,容易理解,也便于向计算机语言算法转换。,【例】用伪代码表示计算10!的算法:,Begin(开始) 置t的初值为1(1t) 置i的初值为2(2i) 当(while) i=10,执行(do),Begin 使t=tI 使i=i+1 End 打印t 的值(print t) End(结束),15:04,5,6.1 程序文件程序文件建立与修改: 通过菜单、项目管理器或在命令窗口中输入命令,打开编辑命令的文本编辑窗口。 命令格式:MODIFY COMMAND 功能:打开文本编辑窗口,用来建立或修改程序文件,文件名

5、由用户指定,缺省的扩展名为.PRG。 程序中每条命令都以回车键结尾,一行只能写一条命令。若命令需分行书写,应在一行终了时键入续行符“;”,然后按回车键。 程序的运行命令: 通过菜单、项目管理器或在命令窗口中输入命令,可以运行程序。 命令格式: DO DO命令默认运行.PRG程序(扩展名可省略),如要运行其它程序,文件名中须包括扩展名。 程序结尾的专用命令: RETURN &结束程序执行并返回到调用它的上级环境中继续。允许缺省。 CANCEL &终止程序的运行并清除程序的私有变量,返回到命令窗口。 QUIT &退出VFP系统,返回到操作系统状态。,第6章 结构化程序设计,15:04,6,第6章

6、结构化程序设计,非格式输入命令: 命令格式:Input ”提示信息” To 功能:在屏幕上显示“提示信息”后,暂停程序运行,等待从键盘输入数据,一旦敲“Enter”键后,停止输入数据,并将之前输入的数据赋给“To” 后面指定的内存变量。 输入的数据可以是常见的C、N、D、L类型, 命令格式:Accept ”提示信息” To 功能:在屏幕上显示“提示信息”后,暂停程序运行,等待从键盘输入数据,一旦敲“Enter”键后,停止输入数据,并将之前输入的数据赋给“To” 后面指定的内存变量。 输入的数据只能是字符型数据,因此不需加定界符。,非格式输出命令: 命令格式:?|? 功能:一个问号是从屏幕下一行

7、的第一列开始显示表达式表的结果,二个问号是从屏幕当前行、当前列开始显示表达式表的结果。“表达式表”可以由一个或多个表达式组成的输出项,若多个表达式,则表达式之间用逗号“,”分隔。 (建立p6-1.prg),程序注释命令: 命令格式:note | * 注释 & 注释 功能:第一个命令在程序中加注释行信息,第二个命令在命令语句的尾部加注释信息。注释是不可执行的部分,它对程序的运行结果不会产生任何影响。,15:04,7,信息对话框函数 函数格式: MESSAGEBOX(,),功能:供用户定义信息对话框,按下一次按钮即返回一个数值。 用于指定在对话框中显示的信息文本。 用于指定对话框标题栏的显示文本。

8、 用于根据表中的内容设定对话框中的按钮、图标和默认按钮,缺省该参数表示取0。 函数返回值是一个数值,用户将根据操作时点击的按钮来获得相应的返回值,编程时则根据返回值来设置动作。,第6章 结构化程序设计,Ans=messagebox(”是否确认删除文件?”,4+32+0,”删除文件”),15:04,8,6.2 程序的控制结构 1.顺序结构 这是最简单的一种结构,语句或基本结构的执行按照它们出现的先后顺序。 A块执行完毕后,再执行B块,该结构只有一个入口,只有一个出口。A块、B块可以是一条语句,也可以是一个基本结构。 (建立p6-2.prg),分支语句格式: IF ELSE (建立p6-3.prg

9、) ENDIF,该结构的特点是根据条件真假,选择两个或两个以上分支中的一个分支来执行。 选择结构有两种变形;一是没有B2块,条件成立时执行B1块,条件不成立时直接转到B处;二是多重选择,即有三个以上的分支供选择。,第6章 结构化程序设计,2.选择结构,15:04,9,【例】试编一程序,删除磁盘上任一文件。,【例】试编一程序,根据输入的三角形边长,求三角形面积。,第6章 结构化程序设计,*p4-4.prg clea accept ”请输入文件名(包括扩展名):” to bm bm=allt(bm) If file(“&bm”) delete file &bm Else messagebox(”你

10、要删除的文件不存在,是否输入有误!”) Endif retu,*p4-5.prg clea input ”请输入边长a:” to a input ”请输入边长b:” to b input ”请输入边长c:” to c if a+bc or b+ca or c+ab messagebox(”输入的三个边长不能组成三角形”) retu endif l=(a+b+c)/2 ? ”三角形面积s=”,sqrt(l*(l-a)*(l-b)*(l-c) retu,15:04,10,多分支语句格式: DO CASE CASE CSAE CASE OTHERWISE ENDCASE (建立p6-6.prg),3

11、. 循环结构 该结构的特点是根据条件,重复执行一个语句块。当给定条件满足时,执行B块,执行B块后再返回测试条件是否满足,如此循环反复执行B块,直到条件测试不满足为止。 B块可以是单个语句,也可以是基本块。该结构只有一个入口,只有一个出口。,第6章 结构化程序设计,15:04,11,第6章 结构化程序设计,条件循环语句格式,DO WHILE EXIT 语句序列2 LOOP 语句序列3 ENDDO,【例】编程计算S=1+2+3+100,并求1100之间奇数之和。,【例】编程逐行显示学生表中入学成绩大于600分的学生学号、姓名、性别和入学成绩。,clear use students go top d

12、o while not eof() if rxcj600 ? xh,xm,xb,rxcj endif skip enddo use,*p6-11.prg clea store 0 to i,s,t do while i100 i=i+1 s=s+i if int(i/2)=i/2 loop endif t=t+1 enddo ? 1+2+3+100=,s ? 1100奇数和为:,t retu,15:04,12,第6章 结构化程序设计,FOR循环语句格式,FOR = TO STEP EXIT 语句序列2 LOOP 语句序列3 ENDFOR|NEXT,*p6-9 clea s=0 for i=1

13、to 100 s=s+i next ? s=,s retu,【例】编程求s=1+2+3+100。,【例】编程输出如右侧图案。,clea for i=1 to 4 ? space(4-i) for j=1 to 2*i-1 ? * next next for i=1 to 3 ? space(i) for j=1to 6-(2*i-1) ? * next next retu,【例】编程输出如下图乘法口诀表。,note 打印乘法口诀表 clear for a=1 to 9 ? for b=1 to a p=a*b ? str(a,1)+str(b,1)+=+str(p,2)+space(2) ne

14、xt next retu,15:04,13,第6章 结构化程序设计,扫描循环语句格式,SCAN FOR EXIT 语句序列2 LOOP 语句序列3 ENDSCAN,【例】在Students.DBF中找出所有入学成绩在590至600的学生的学号、姓名、性别、入学成绩,并要求在各输出行下显示一行虚线。,*p6-12.prg clea use students ? replicate(-,30) ? 学 号 , 姓名 ,性别,入学成绩 ? replicate(-,30) scan if between(rxcj,590,600) ? xh,xm,xb,rxcj ? replicate(-,30) e

15、ndif endscan use retu,【例】在逐行输出Students表中女团员的姓名、性别、出生日期、是否团员和班号的信息。,* p6-11.prg clea USE students ? 姓 名 ,性别,出生日期,是否团员,班号 ? replicate(-,32) SCAN FOR xb=女 and ynty ? xm,xb,csrq,ynty,bh ENDSCAN USE retu,15:04,14,多模块程序 模块是可以命名的一个程序段,可指主程序、子程序或自定义函数。对于两个具有调用关系的程序文件,常称调用程序为主程序,被调用程序为子程序,子程序的末尾中返回处必须有返回语句。,*MAIN.PRG DO B RETURN,*B.PRG DO C1 DO C2 RETURN,*C1.PRG RETURN,*C2.PRG RETURN TO MASTER,第6章 结构化程序设计,15:04,15,第6章 结构化程序设计,【例】设计一个计算圆面积的子程序,并要求在主程序中带参数调用它,*js.prg parameters r,s s=pi()*r*r retu,*p6-13.prg clea ymj=0 input 请输入半径: to bj do js with bj,ymj ? ymj=,ymj retu,15:04,16,变量的作用域,第6章 结构化程序设计,15

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号