第五章 程序设计初步
- 格式:doc
- 大小:231.00 KB
- 文档页数:23
第五章程序设计初步结构化程序设计功能模块(即过程、自定义函数)编制各个功能模块,再用主程序将它们串起来将应用程序分解成若干功能模块,通过各模块的相互调用来完成整个执行过程,是过程驱动的。
面向对象程序设计类、对象、属性、事件、方法设计类、子类、对象(设计外观、设置属性、为事件编写方法程序)将应用程序分解成具有特定属性的对象,通过调用各对象的不同方法来完成相关事件,是事件驱动的。
程序:为解决某一问题而设计的一系列指令。
主程序:通常被用户直接执行的程序。
子程序:在程序中被调用的程序。
源程序:由人用源语言编写的计算机程序,必须翻译成机器语言后才能被执行。
目标程序:是源程序经过编译后所产生的机器语言程序。
可执行程序:源程序被编译后产生的可被机器直接执行的程序,具有.EXE 扩展名。
在VFP中是指由项目管理器连编生成的、可脱离VFP环境运行的程序。
应用程序:指为完成专门工作而设计的一组相互联系的例行程序和子程序。
在VFP中是指一组Visual FoxPro 程序、表单、菜单和其他文件经项目管理器连编后形成的单个程序,不能脱离VFP环境运行,扩展名为.APP。
例行程序:按某种顺序排列的、使计算机能执行某种任务的指令集合,可以是一种专用的程序或作为程序的一部分。
它可由若干个子程序组成。
程序设计是利用系统所提供的设计工具,按照程序语言的规范,编写程序的过程。
Visual Foxpro包含了过程化程序设计与面向对象程序设计。
程序的优点:程序运行时自动执行多条命令;程序可被修改并重新运行,且可多次运行;一个程序可调用其它程序。
5.1程序文件5.1.1程序文件的建立与执行创建:(程序文件的扩展名为.PRG)方式一:通过菜单“文件”→“新建”→“程序”→“新建文件”建立方式二:通过项目管理器→“代码”→“程序”→“新建”建立方式三:通过命令“MODIFY COMMAND 程序文件名”建立修改:方式一:通过菜单“文件”→“打开”方式二:通过项目管理器→“代码”→“选中程序”→“修改”方式三:通过命令“MODIFY COMMAND 程序文件名”修改运行:方式一:通过菜单→“程序”→“运行”或直接单击工具栏中的运行图标方式二:通过项目管理器→“代码”→“选中程序”→“运行”方式三:通过命令“DO 程序文件名”运行【例1】创建一个名为“程序测试”的程序,在其窗口中输入以下命令:cleara=11b=22c=a+b?”c的结果等于:”??c5.1.2 程序文件中的专用命令一、清屏命令格式:CLEAR功能:清除输出屏幕(窗口工作区、主窗口)上的所有字符。
二、程序结尾的专用命令1.RETURN终止程序运行,返回到调用它的上级程序继续执行;若无上级程序则返回到命令窗口。
2.CANCEL终止程序运行,清除程序的私有内存变量,返回到命令窗口。
3.QUIT终止程序运行,关闭VFP,返回到操作系统。
三、程序注释命令程序注释命令是非执行命令,仅在程序中显示,用来提高程序的可读性。
1.行首注释命令NOTE|*格式:NOTE|*[注释内容]功能:在程序中加注释行信息2.行尾注释命令格式:&&[注释内容]功能:在命令语句的尾部加注释信息程序的通用性:程序的通用性指程序对多种场合的适用性,通用性好的程序的应用范围较广。
例1的程序只能求10与20两数之和,谈不上通用性;若将程序改为能计算任意两数之和,则通用性就大为增强。
例2:E6-02*本程序功能:求两数之和clear &&清屏input "a=" to a &&从键盘输入一个数input "b=" to b &&从键盘输入一个数s=a+b &&求两数之和?"a+b=",s &&显示两数之和return四、ACCEPT和INPUT格式:accept [<提示信息>] to <内存变量>input [<提示信息>] to <内存变量>功能:暂停程序的运行,在屏幕上显示提示信息,等待用户从键盘上给内存变量赋值。
说明:1.输入完后应回车,以示输入结束。
2.accept与input命令的区别:accept:①只接受字符型数据,输入时不加界限符。
②如仅输入回车,则内存变量的值将是空的。
input: ①可输入字符型、数值型、逻辑型、日期型数据。
②输入字符型数据必须加界限符。
③数值型数据可直接输入。
④输入逻辑型数据.T.与.F.时,圆点不能漏打。
⑤输入日期型数据时,需用{ }将日期型数据括起来。
⑥不接受直接回车。
例3:E6-03clearuse rsk*accept "输入姓名:" to xm &&输入姓名时,不要加界限符input "输入姓名:" to xm &&输入姓名时,必须加界限符locate for 姓名=xmdisp例4:E6-04CLEARUSE RSKINPUT "输入基本工资:" TO GZLOCATE FOR 基本工资=GZDISP例5:E6-05CLEARUSE RSKINPUT "输入工作日期:" TO RQ &&例:输入{^1972/04/30}或ctod("04/30/72")LOCATE FOR 工作日期=RQDISPUSE例6:E6-06clearuse rskinput "婚否:" to hflist for 婚否=hfuse五、W AIT命令格式:wait [<提示信息>] [to <内存变量>] [window [at <行>,<列>]]功能:暂停程序的运行,等待用户从键盘上输入单个字符。
也可只用于输出一条提示信息。
说明:①只接受一个字符,不用回车。
②只接受字符型,不管按什么键都作字符型处理,回答时也不能加引号。
③若选择[<提示信息>]选项,则执行此命令时,屏幕上先显示提示信息的内容;若未选择该项,系统提示“按任意键继续…”。
④如果有[to <内存变量>]选项,则把输入的单键字符存储到指定的内存变量中;如果输入的是回车键,则内存变量的内容是一个空字符。
⑤window选项使提示信息出现在提示窗口中,提示窗口位置由at选项指定。
若无at 选项,提示窗口在屏幕右上角。
例7:E6-07 暂停程序的运行,便于阅读显示。
clearuse rsklist for 基本工资>120waitlist for 性别="男"wait window at 10,10list for 工作日期<{^1970/01/01}use例8:E6-08 输入信息,控制程序的执行方向。
某班两个学期的学生成绩分别保存在表文件XSCJ1.DBF、XSCJ2.DBF,用户可根据需要选择要显示的成绩。
clearwait "请输入班级号:" to xwj="xscj"+xuse &wjlistuse六、文本输出命令TEXT …ENDTEXT格式:TEXT文本信息ENDTEXT功能:在屏幕上显示TEXT与ENDTEXT之间的文本信息。
例9:E6-09cleartext佛山科技学院a=100?a工学院endtext5.2 程序的控制结构与其它高级语言程序相似,VFP也有三种基本控制结构:顺序结构、分支结构(选择结构)、循环结构。
顺序结构按命令的书写顺序依次执行;分支结构根据指定条件的当前值在两条或多条程序路径中选择一条执行;循环结构则由指定条件的当前值来控制循环体中的语句(或命令)是否要重复执行。
5.2.1顺序结构顺序结构的程序运行时按照语句排列的先后顺序,一条接一条的执行;它是程序中最基本的结构。
例10:E6-10clearuse xscjlist for 语文>85.and.数学>85.and.英语>85waitdisplay all for 语文<60.or.数学<60.or.英语<60waitlist for 语文<60use5.2.2分支结构6.4.1 简单的条件语句一、格式:IF <条件表达式><命令序列>ENDIF二、说明:1.条件表达式可以是各种表达式的组合,其值必须是逻辑“真”或“假”。
2.当条件表达式的值为“真”时,先执行IF与ENDIF间的语句,然后执行ENDIF后面的语句;当条件表达式的值为“假”时,直接执行ENDIF后面的语句。
三、流程图:流程图(程序框图):用某些符号将处理问题的详细步骤的流程表示出来。
菱形框:判别框矩形框:处理框有向线段:程序走向四、例题例11:E6-11 从键盘输入一个数,若小于0,则显示“输入的是负数”。
clearinput "输入一个数:" to xif x<0?"输入的是负数"endif例12:E6-12F1 对RSK.DBF增加工资,要求:已婚者基本工资增加20元,未婚者不变。
clearuse rskdo while .not. eof()if 婚否replace 基本工资with 基本工资+20endifskipenddouse6.4.2 带ELSE的条件语句一、格式:IF <条件表达式><命令序列1>ELSE<命令序列2>ENDIF二、说明:当条件表达式的值为“真”时,先执行命令序列1,然后转去执行ENDIF后面的语句;当条件表达式的值为“假”时,先执行命令序列2,然后转去执行ENDIF后面的语句。
三、流程图:四、例题例13:E6-13从键盘输入一个数,若小于0,显示“输入的是负数”;否则显示“输入的是非负数”。
clearinput "输入一个数:" to xif x<0?"输入的是负数"else?"输入是非负数"endif例14:E6-14对RSK.DBF增加工资,要求:1970年以前(含70年)出生的人增资50元,1970年以后出生的人增资30元。
clearuse rskdo while .not. eof()if 工作日期<={^1970/12/31}replace 基本工资with 基本工资+50elsereplace 基本工资with 基本工资+30endifskipenddolistuse例15:E6-15.PRG铁路托运行李,按规定每张客票托运行李不超过50公斤时,每公斤收费025元;如果超过50公斤,超过部分每公斤收费045元。