资源预览内容
第1页 / 共72页
第2页 / 共72页
第3页 / 共72页
第4页 / 共72页
第5页 / 共72页
第6页 / 共72页
第7页 / 共72页
第8页 / 共72页
第9页 / 共72页
第10页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 结构化程序设计,Visual FoxPro 程序设计,主讲教师:高骏 Emil:,本章要求: 1. 掌握VFP程序的建立、修改、运行。 2. 掌握程序的三种基本结构。 3. 了解过程和过程文件。 本章要点: 程序的三种控制结构。 学时安排: 6学时(理论)+6学时(实践),课程要求,结束,作业,第8章 程序设计基础,8.1 程序文件及其编辑环境 8.2 程序中几种常用命令 8.3 程序的基本控制结构 8.4 过程和用户自定义函数,8.1 程序文件及其编辑环境,在Viusal FoxPro中,程序是由一系列Viusal FoxPro可以理解的命令、函数和操作组成的,这些命令和函数可以在Viusal FoxPro中的命令窗口和以人工方式逐一执行,也可以把它们放在一个程序文件中,以文件的形式来执行。 【8.1】 假定学号的前四位为入学年份,第5,6位为专业代码.编写命令文件test.prg,分别统计所有学生和2010年入学,专业代码为03的学生选修课程号为101课程的平均成绩.,SET TALK OFF SET DEFAULT TO d:学生管理 OPEN DATA 学生管理 SELECT AVG(成绩) FROM 成绩 WHERE; 课程号=“101” INTO ARRAY m1 SELECT AVG(成绩) FROM 成绩 WHERE; 课程号=“101” AND LEFT(学号,4)=“2010”; AND SUBS(学号,5,2)=“03” INTO ARRAY m2 CLEAR ?”所有学生的平均成绩:” font “宋体”,20,m1(1) font “宋体” ?”指定学生的平均成绩:” font “宋体”,20, m2(1) , font “宋体” CLOSE DATASE SET TALK ON RETURN,(1) 以命令方式建立、修改程序文件,Modify Command ,格式:,功能:,创建、编辑以“程序文件名”为名的程序文件,说明:,1.在编辑窗口输入一条条命令。 2.w或关闭窗口存盘、q或者放弃存盘 3.程序文件的扩展名为.prg,可以省略。,(2) 以菜单方式建立、修改程序文件,文件,新建,文件,打开,已有的程序文件,.prg,8.1.1 程序文件的建立和运行,1程序文件的建立,(2) 命令方式,(1) 菜单方式,程序,运行,Do ,格式:,功能:,运行程序文件,程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。,选中,运行,2. 程序文件的运行、调用,8.1.2 Visual FoxPro编程特点,1. 变量不区分大小写,建议的变量命名约定,2. 变量不需预先声明,当把一个值保存到某一变量而该变量原先不存在时,Visual FoxPro系统会隐含地声明它,并有初始值存在。用户在变量里放什么数据,变量就是什么类型。,3. 命令分行,程序中每条命令都以回车键结尾,一行只能写一条命令。若需分行书写,可以使用分号“;”表示续行。,4. 添加注释,Visual FoxPro 系统对整行注释和行中部分注释有不同的格式。整行注释使用“*”引导,行中部分注释使用“ where 职称=zc,【例8.3】 输入姓名,在人才档案表中查询某编号对应的姓名,【例8.4】编写程序,浏览专业特长表中不同职称的记录集。,Do 8.4 请输入职称:教授,Do 8.3 请输入编号:sh01001 Sh01001 金银桥,输入字符串时不加定界符,3.Input命令,Input To ,格式:,功能:,(1)如果选用 ,那么系统会首先显示该提示信息的值,作为提示信息。 (2)输入的数据可以是常量、变量,也可以是一般的表达式。但不能不输入任何内容直接按回车键。 (3)输入字符串是必须加定界符“ ”,输入逻辑型常量要用圆点定界符(如.T.,.F.),输入日期时间型常量是要用大括号(如 2012-03-01)。,说明:,等待用户从键盘输入数据,用户可以输入任意合法的表达式。当以回车键结束输入时,系统将表达式的值存入指定的内存变量,程序继续运行。,【例8.5】编写命令文件test1.prg,查找指定日期 以后出生的学生 SET DEFAULT TO d:学生管理 OPEN DATABASE 学生管理 INPUT 输入日期: TO mrq SELECT 学号,姓名,出生日期 FROM 学生; WHERE 出生日期 mrq; NOWAIT CLOSE DATABASE RETURN,Do test1 输入日期:1993-01-01,Clear Input “长方形一边的长为:” TO A Input “长方形另一边的长为:” TO B S=A*B ? 长方形的面积为: , S,【例8.6】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为8.6.prg,在命令窗口中输入: Modify Command 8.6,Do 8.6 长方形一边的长为:5 长方形另一边的长为:6 运行结果: 长方形的面积为: 30,屏幕显示,键盘输入,Set default to d:人才管理 Input 请输入要删除的人的出生日期: to Csrq Delete from 人才档案 where 出生日期=Csrq Select 人才档案 Brow Close data,【例8.7】 编写程序,将人才档案表中指定的出生日期的记录逻辑删除。,请输入要删除的人的出生日期:1969-02-03,4. 格式输入语句,格式:, Say get Say get . Read,功能:,在指定的行、列位置输入一个常量,当执行到Read语句时,将常量赋值给指定的变量。,说明:,1、多个语句可以配置一个Read语句。但是中间不能有别的语句。 2、Get后面的变量要先赋值。,Clear Set default to d:人才管理 Use 专业特长 Exclusive Accept 请输入职称: to zc Locate All For 职称 = zc 2,10 Say 编号 Get 编号 3,10 Say 专业 Get 专业 4,10 Say 毕业学校 Get 毕业学校 5,10 Say 专业年限 Get 专业年限 6,10 Say “职称” Get 职称 Read Close data,【例8.8】 编写程序,在指定的位置显示修改“专业特长”表中指定职称的记录。, Say Picture ,格式:,功能:,(1)在指定的行、列输出表达式的值。 (2)格式描述符用来限定数据输出的类型、长度及格式。,8.2.2 基本输出语句,1. 格式输出语句,常用格式描述符的功能,Use 人才档案 Exclusive Accept 请输入编号: to bh Locat For 编号=bh 13,20 Say 编号 Picture ! 14,20 Say 姓名 Picture xxxxxxxxx Use,【例8.9】 输入编号,在人才档案表中查询某编号对应的姓名。,字符转换成大写,任意字符,x1=Messagebox(您真的要退出系统吗?,4+16+0, 退出系统) If x1=6 Return Endif,Messagebox(,),格式:,功能:,在屏幕上弹出一个指定格式的对话框。,说明:,对话框类型是由“ 按钮个数+显示图标+默认按钮” 组成。,提示信息,对话框标题,提示信息,对话框标题,对话框类型,按钮个数,显示图标,默认按钮,2. 对话框MessageBox函数,P67,按钮个数代码,显示图标代码,默认焦点按钮的代码,单击对话框按钮的返回值,4+16+0,单击“否”,返回7,返回值送到x1,如果x1=“是”,返回系统,单击“是”,返回6,8.2.3 程序结尾命令,1、程序的末尾可以使用Return命令,能使程序执行结束,并返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。 2、使用另一条命令为Cancel,它可以中止程序运行,并返回到命令窗口。 3、使用Quit命令可以结束程序运行退出Visual FoxPro系统,8.3 程序的基本控制结构,常见的控制结构如下: 1顺序结构 顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。Visual FoxPro系统中的大多数命令都可以作为顺序结构中的语句。 2分支结构 分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。 3循环结构 循环结构则能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。,8.3.1 顺序结构,顺序结构是一种线性结构。是程序设计中最简单同时也是最基本的结构。它要求顺序地执行每一个基本的加工处理单位。,【例8.10】计算圆的周长和面积。,Clear Input 请输入圆的半径: To r & 输入半径 c=2*3.14*r & 计算圆的周长 s=3.14*r*r & 计算圆的面积 ?圆的周长:,c & 输出周长 ?“圆的面积:”,s & 输出面积 Return,8.3 程序的基本控制结构,分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句。,If EndIf,格式:,功能:,首先计算条件表达式的值,当条件表达式的值为真时,执行语句序列 ;否则,执行EndIf后面的第一条语句。,1.简单的条件语句,8.3.2 条件分支结构,Clear Input X= TO x Input Y= TO y If x/3=Int(x/3) y=y+x EndIf ?Y=,y,【例8.11】编写程序:先从键盘接收两个数x和y,然后判断x能否被3整除。如果x能被3整除,那么y的值增加x;否则y的值不变。,If mod(X,3)=0,【例8.12】编写程序:修改“专业特长”表中的数据,把编号为“zj01002”的职称从“副教授”改为“教授”。,Clear Use 专业特长 Exclusive Locate For 编号= zj01002 If 职称= 副教授 Replace 职称 With 教授 EndIf Browse Last,2. 带Else的条件语句,If条件表达式 语句序列1 Else 语句序列2 EndIf,格式:,功能:,该语句首先计算条件表达式的值,当条件表达式的值为真时,执行语句序列1中的命令;否则,执行语句序列2中的命令;执行完命令行序列1或命令行序列2后都将执行EndIf后面的第一条语句。,【例8.13】输入一个姓名,在“学生”表中查找该姓名的学生,如果找到,显示该记录的姓名、性别和出生日期,否则显示“查无此人!”,程序名为test2.prg,SET DEFAULT TO d:学生管理 OPEN DATABASE 学生管理 USE 学生 IN 0 SELECT 学生 ACCEPT “请输入待查学生姓名:” TO NAME LOCATE FOR 姓名=NAME IF EOF( )=.F. ?”姓名:”+姓名 FONT “宋体”,20 ?”性别:”+IIF(性别=.t.,“男”, ”女”) FONT “宋体”,20 ?”出生日期:”+DTOC(出生日期,1) FONT “宋体”,20 ELSE ?”查无此人!” FONT “宋体”,20 ENDIF CLOSE DATABASE RETURN,messagebox(“查无此人!”,0+48+0,”例8.13”),语句执行时,依次判断Case后面的条件是否成立。当发现某个Case后面的条件成立时,就执行该Case和下一个Case之间的语句序列,然后执行EndCase后面的语句令。如果所有的条件都不成立,则执行Otherwise与EndCase之间的语句序列,然后转向EndCase后面的语句。,3. 多分支语句,Do Case Case条件表达式1 语句序列1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号