VFP第6章 程序设计基础
第六章 Visual FoxPro程序设计基础

12
6.1.3 程序文件的编译和执行(1)
1. 编译 编译是将源程序转换成目标程序。 编译有命令和菜单两种方式。 (1)命令方式
– 命令格式:
Compile <程序文件名>|?
– 命令功能:对指定的程序文件进行编译。
(2)菜单方式
详见课本6.1.3节
13
6.1.3 程序文件的编译和执行(2)
2. 执行 程序文件输入存盘或再经编译后,系统可自动连 续执行文件中的每条命令或语句。 程序文件的执行有命令和菜单两种方式。 (1)命令方式
姑娘爱小伙(搞笑版)
if( boy.有房() and boy.有车() ){ boy.set(nothing); return girl.嫁给(boy); } else{ 年龄++; girl.感情--; } return girl.goto( another_boy);
}
6
result love(boy, girl ){ if( boy.有房() and boy.有车()){ boy.set(nothing); return girl. 嫁给(boy); } if( girl.愿意等 ()){ while(!(boy.赚钱 > 100,000 and girl.感情 > 8 )){ for ( day=1; day <=365; day++){ if( (day == 情人节 or day == girl.生日)& and boy.givegirl(玫瑰)) girl.感情++; else girl. 感情--; boy.拼命赚钱(); }//for }//while if( boy.有房() and boy.有车() ){ boy.set(nothing); return girl.嫁给(boy); } else{ 年龄++; girl.感情--; }//if愿意等 return girl.goto( another_boy); }
vfp5

24
例:随机产生一个70~80之间的数:
x=0 do while .T. x=RAND()*100 if x>70 and x<80 exit endif enddo ?x
25
输出借阅表 中还书日期 从2011年开 始的读者的 借书证号、 条形码和还 书日期,并 统计这些读 者的人数。
USE 借阅 STORE 0 TO n DO WHILE !EOF() IF hsrq<{^2011/1/1} SKIP LOOP ENDIF ?jszh,txm,hsrq n=n+1 SKIP ENDDO ?"还书日期从2011年开始的 读者有:"+STR(n,3)+"人" USE
store 0 to n0,n1,n2,n3,n4,n5,n6,n7,n8,n9
35
过程与用户自定义函数
自定义函数或过程可存放在独立的程序文 件(.PRG)中或数据库文件(存储过程) 中。
自定义函数: FUNCTION myfunc [PARAMETERS] 代码区 [RETURN] ENDFUNC
28
死循环
x=1 do while x>0 x=x+1 enddo
按ESC键退出
29
SCAN---ENDSCAN
只适用于对表记录的操作 设教师(js)表中有100条记录,运行
下列程序后,屏幕上显示的记录有 _____条
30
clear use js scan ?recno() endscan use
26
store 0 to m,n do while m<10 n=n+2 m=m+n enddo ?m,n
VFP课件第6章-程序设计基础

6.4.2 分支结构
分支结构能根据指定条件的当前值在两条或 多条程序路径中选择一条执行,这样,程序中便能 处理多种情况的复杂问题。Visual FoxPro提供三 种格式的分支结构。
1.单分支选择命令
命令格式: If <条件> <命令序列> Endif 功能:条件表达式的值为.T. 时,执行命令序列, 然后执 行Endif后的命令;条件表达 式的值为.F.时,不执行命令 序列, 直接执行Endif后的命 令。
2.数据输出命令 格式:?/?? [<表达式表>] 功能:计算并输出表达式的值 说明: ① 命令中的表达式可以包含字段变量和内存变量, 表达式之间以逗号分隔。 ② 两个命令的区别在于:? 命令先换行,再开始输 出,?? 命令不换行即开始输出。 ③ ? 命令后面若没有表达式表,则只进行换行操作。
6.3.2 其它常用程序命令
说明: ① 执行此命令时,先在屏幕上显示提示信息,然后暂停程 序运行,等待用户从键盘输入数据,并以回车键结束。系 统将输入的数据存入指定的内存变量中,然后,继续运行 程序。 ② Accept命令只能接收字符型数据,因此所有输入的数据 都被作为字符型,并且不需要加定界符。 ③ 如果内存变量未定义,将在执行此命令时建立内存变量, Accept命令所定义的内存变量为字符型。 ④ <提示信息>可以省略。
教学重点与难点
重点:
程序文件的建立、编辑与执行;常用程序设计 辅助命令、控制结构、子程序、过程文件和自定义 函数的使用。
难点:
程序控制结构、子程序、过程文件以及函数的 使用。
6.1 结构化程序设计概述
6.1.1 程序的概念
程序就是计算机能够分析执行的指令集合。 在Visual FoxPro中,程序文件也称为命令文件, 其扩展名为.prg。
VFP第六章课件2(循环结构)

控制循环执行的方式
控制循环执行的方式
3)用记录指针控制循环 学院英语比赛成绩数据表SH.DBF SH.DBF中包 例2:学院英语比赛成绩数据表SH.DBF中包 括以下字段:姓名( ),班级 班级( 括以下字段:姓名(C,8),班级(C, 10),英语(N ),英语(N, 0)和备用(N, 和备用(N 10),英语(N,3,0)和备用(N,3,0) ;其 中除备用字段外,其他字段均已有值。 中除备用字段外,其他字段均已有值。 编程序统计各班英语的平均成绩, 编程序统计各班英语的平均成绩,并显示平 均分前三名的班级和平均成绩( 均分前三名的班级和平均成绩(假设平均成绩 都不相同)。 都不相同)。 ( 见“程序168.PRG” 程序文件 )
<内存变量>为循环变量,作为计数器控制循环。<数 内存变量>为循环变量,作为计数器控制循环。 值表达式1>为循环变量初值; 数值表达式2> 1>为循环变量初值 2>为循环 值表达式1>为循环变量初值;<数值表达式2>为循环 变量终值,循环变量超过终值循环结束。 变量终值,循环变量超过终值循环结束。 FOR语句每循环一次 语句每循环一次, FOR语句每循环一次,自身便改变一次循环变量的 STEP短语设置改变的增量 短语设置改变的增量, 数值表达式3> 值,STEP短语设置改变的增量,由<数值表达式3> 设置。正值为增加,负值为减少,缺省默认为1 设置。正值为增加,负值为减少,缺省默认为1。在 循环中允许使用赋值语句修改循环变量的值。 循环中允许使用赋值语句修改循环变量的值。 FOR语句可以嵌套 语句可以嵌套。 NEXT任选其一 任选其一。 FOR语句可以嵌套。ENDFOR 和NEXT任选其一。
VFP 第6章

目录
上一张
结束
3.WAIT命令 . 命令 WAIT [ <字符表达式>] [TO <内存变量>]
功能:该命令显示字符表达式之值作为提示信息,暂停程序的执行 ,直到用户按任意键或单击鼠标时继续程序的执行。 说明:
如果 <字符表达式>值为空串,那么不会显示任何提示信息。如果没 有指定 <字符表达式>,则显示默认的提示信息:“按任何键继续...”。 <内存变量>用来保存用户键人的字符,其类型为字符型。
INPUT “请输入货物重量:” TO w IF w<=50 f=w*0.1 ELSE f=50*01+(w-50)*0.2 ENDIF ? “托运费为:”,f 目录 上一张 结束
&&货物重量超过50公斤时的计算公式 &&货物重量没有超过50公斤时的计算公式
用单分支选择编写YH2.prg程序如下:
VFP的结构化程序设计 第6章 VFP的结构化程序设计
6.1 程序与程序文件 6.2 程序的基本结构 6.3 模块化程序设计 本章要点
目录
上一张
结束
前面各章都是以交互方式,即在命令窗口中逐条输入命 令或通过选择菜单来执行Visual FoxPro命令的。除此之外, 常常采用程序的方式来完成更为复杂的任务。 VFP程序设计包括结构化程序设计和面向对象程序设计。 前者是传统的程序设计方法;后者面向对象,用户界面可利 用VFP提供的辅助工具来设计,应用程序可自动生成,但是 仍需用户编写一些过程代码。就此而言,结构化程序设计仍 是面向对象程序设计的基础。
,若无上级程序则返回命令窗口。 ④ QUIT:退出Visual FoxPro系统,返回到操作系统。
VFP第六章对象模型和事件模型

第六章对象模型与事件模型从程序设计的方法来看,Visual FoxPro不仅支持结构化的程序设计,而且支持面向对象的程序设计(object-oriented programming,简称OOP),并提供了许多相关的可视化的开发工具。
6.1 面向对象的程序设计概述面向对象的程序设计是通过对类、子类和对象等的设计来体现的。
类(class)和对象(object)的关系密切,但并不相同。
类定义了对象特征以及对象外观和行为的模板,它刻划了一组具有共同特性的对象。
对象是类的一个实例,包括了数据和过程(操作)。
例如“汽车”就是一个类,它抽取了各种汽车的共同特性,而每一部具体的汽车就是一个对象,它是“汽车”这个类的一个实例。
在一个运行表单上的控件就是一个对象。
在Visual FoxPro中,应用程序对象主要指表单、表单集,以及表单中所包含的多个控件。
表单(form)就是用户在Windows环境下所看到的各种窗口与对话框;表单集(formset)是指包含一个或多个表单的集合,表单集中的表单可以统一处理;控件(control)对象是放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形化对象,如文本框、标签或命令按钮等。
在Visual FoxPro中,系统提供了一些类,用户也可以根据需要自定义类。
基类(base class)是Visual FoxPro 系统提供的内部定义的类,可用作其他用户自定义类的基础。
用户自定义类(user-defined class)与Visual FoxPro 基类相似,但由用户定义,并且可用来派生子类。
在面向对象的程序设计中,通过类可以简化应用程序的设计,因为类具有继承性、多态性、封装性、抽象性等特点。
继承性(inheritance)说明了子类延用父类特征的能力。
如果父类特征发生改变,则子类将继承这些新特征。
例如,如果为一个编辑控件添加了一个新属性IsBold,那么以此控件为基础派生的子类也将拥有IsBold属性。
第六章 VFP6.0程序设计基础

第六章VFP6.0程序设计基础第六章Visual FoxPro6.0程序设计基础上一章下一章返回VFP教学主页引言章本章介绍FoxPro程序设计,这是本课程的重点内容。
前面所学的选单方式和命令交互方式固然重要,但为了末端用户、为了简化和优化具体问题的操作,需要将选单方式或命令交互方式的步骤记录下来,成为方便使用的程序(软件)。
本章分为:6.1 程序文件6.2 程序的控制结构6.3 模块化程序设计6.4 事件处理6.5 常见计算和字符图形编程实例工具: ☆FoxBase ☆FoxPro 2.5 ☆VFP 6.0 ☆写字版☆绘图板☆DOS状态6.1 程序文件下一节前几章介绍了FoxPro的命令、若干函数及FoxPro的交互执行方式,交互执行方式能灵活地解决即席提出的问题,为用户使用数据库提供了很大便利。
但交互执行方式要求用户掌握较多的计算机知识:对非程序员用户、或称为未端用户而言,由于这些用户大多为组织中的各级管理人员,要求他们掌握较多的计算机知识是比较困难的。
FoxPro还提供另一种执行方式,即程序方式。
所谓程序方式是指计算机程序人员根据用户功能需求,将FoxPro的操作命令组织成程序,未端用户通过运行程序完成预定功能,同时程序方式还能解决一些复杂的问题,所以对于成功的数据库管理系统而言,交互方式和程序方式互为补充,缺一不可。
在FoxPro的程序方式中,通过流程控制等语句,将前几章介绍的命令或函数组织成程序,程序方式中的命令也称为语句。
程序组织在命令文件或过程文件中。
命令文件和过程文件的区别在于,在命令文件中只包括一个可执行的程序,多个程序组织在一文件中构成过程文件。
过程文件中的每个程序也称为一个过程。
本书将命令文件和过程文件统称为程序文件,本章讨论程序的构造及运行。
命令文件和过程文件都是文件扩展名为.PRG的文本文件,这两种文件统称为程序文件。
程序文件可用任何一种编辑程序建立和修改,FoxPro系统本身也包含了编辑程序,使用该编辑程序可在FoxPro系统内编辑修改程序文件,和调用其它编辑程序相比,减少了在FoxPro系统和系统外编辑程序之间切换的开销。
第六章 面向对象程序设计基础

第六章面向对象程序设计基础例题1、类是一组具有相同属性和相同操作对象的集合,类之间共享属性和操作的机制称为()。
A、多态性B、动态绑定C、静态绑定D、继承2、以下有关VFP表单的叙述中,不正确的是()。
A、所谓表单就是数据表清单B、VFP表单是一个容器类的对象C、VFP的表单可以用来设计类似于窗口或对话框的用户界面D、在表单上可以设置各种控件对象3、表单内的控件都有一个默认名称,下拉列表框的默认名称是()。
A、combo1B、command1C、check1D、caption4、关于表单中的列表框和组全框的区别,下面叙述不正确的是()。
A、列表框提供一个列表给用户选择,而组合框不提供列表B、列表框任何时候都显示它的列表,而组合框通常只显示一项内容C、列表框中只能选择数据不能输入数据,而组合框可以选择或输入数据D、列表框只能显示数据列表供选择,而组合框兼有列表框和文本框的功能5、在表单中加入一个复选框check1和一个文本框text1,编写check1的click事件代码如下:thisform.text1.visable=this.value,则单击复选框后()。
A、文本框可见B、文本框不可见C、文本框是否可见由复选框当前值决定D、文本框是否可见与复选框当前值无关6、以下各项中,不可以作为文本框控件数据来源的是()。
A、数值型字段B、内存变量C、字符型字段D、备注型字段A类基础训练题一、填空题1、在面向对象程序设计中,类具有三个主要的特性,它们分别是_________、_________和_________。
2、VFP提供了一系列基类来支持用户派出生新类,VFP的基类有两种,它们是_________和_________。
3、在面向对象的程序设计中,对象所具有的特征被称为_________;对象的_________就是对象可以执行的动作或它的行为。
4、VFP提供了三种方式来创建表单,它们分别是使用_________创建表单;使用_________创建一个新的表单或修改一个已经存在的表单;使用“表单”菜单中的_________创建一个简单的表单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例6.7 编程显示下列三角形图案 * *** ***** 程序: clear ? “ *” ?” ***” ?”*****” return 作业: 编程显示下列平行四边形图案: ***** ***** *****
4.注释 (1)注释语句 1)格式 */NOTE <注释内容> 2)功能 注释语句是非执行语句,它们不对计算机产生任何操 作,• 仅对程序起注解作用。 仅 (2)行末注释 行末注释用在语句(命令)末尾,以“&&”起头,后 跟本行的注释内容。
例: 从键盘输入若干个非零的数值,当输入数值“0”时结束输入, 统计有效数值的个数和它们的平均值。 CLEAR S=0 &&存放累加和 N=0 &&存放数值个数 DO WHILE .T. &&这是一个永真循环 INPUT "请输入一个数值,[输入零时结束]" TO SZ IF SZ=0 EXIT ENDIF S=S+SZ N=N+1 ENDDO ? "共输入有效数值个数:",N ? "平均值是:",S/N RETURN
例6.6: MESSAGEBOX函数举例
MESSAGEBOX函数举例
MESSAGEBOX(“欢迎使用本系统!”)
对话框图示ቤተ መጻሕፍቲ ባይዱ
MESSAGEBOX(“删除记录?”,1+48+256)
MESSAGEBOX(“继续执行吗?”,3,”请确认”)
3.环境设置语句 (1)清屏语句:CLEAR 1)格式:CLEAR 2)功能:清空屏幕或当前窗口中显示的内容。 (2)环境设置语句:SET 设置系统环境和状态的语句为 SET语句,SET语句实际上是一个语句组, 分为两种格式: 格式Ⅰ SET <参数> ON/OFF 格式Ⅱ SET <参数> TO <参数值> 常用的几个SET语句: (1) SET DEFAULT TO <路径> 功能:设置默认的工作目录。 (2) SET PATH TO <路径> 功能:设置搜索路径。 (3) SET TALK ON/OFF 功能:控制是否使某些命令产生屏幕显示(P131提 示) (4) SET PRINT ON/OFF 功能:控制屏幕上的输出内容是否同时送打印机打 印。
例:从键盘接收两个数, 在屏幕输出大数。 INPUT "X=" TO X INPUT "Y=" TO Y IF X<Y &&如果X<Y, 把X与Y交换 T=X &&引入第三 个变量T,进行三角交换 X=Y Y=T ENDIF ?X RETURN
2.双分支选择结构 (1)格式 IF <条件> <语句序列1> ELSE <语句序列2> ENDIF (2)功能: 双分支选择结构流程图 程序执行时,先判断条件的 值是否为真, 然后决定程序 运行的走向。 (3)P133 提示
6.1 程序文件的建立与运行
1.程序文件的概念 程序是为实现某一具体任务而按照一定的控制结构编制的命令序 列。将程序以文件的形式存储在磁盘上,这种文件称为“程序文 件”。 程序一般由以下要素组成: (1)变量:参与运算,用于记录、存储程序的中间及最终结果。 (2)普通语句:操作数据库的命令(含SQL命令)和专用于程序设 计的输入输出等语句。 (3)程序流程语句:控制程序走向的语句,如选择、循环等。 (4)过程与函数:完成特定功能或计算的子程序模块。 2.程序文件的建立与编辑 三种建立方法: 1)从项目管理器新建程序文件 2)从“文件”菜单新建程序文件。 3)在命令窗口中执行命令:MODIFY COMMAND <程序文件名>
6.3 顺序结构程序设计
1.顺序结构 程序运行时,按照命令(语句)的排列顺序逐条执行,这种结构 就称为顺序结构。 2.简单的输入输出语句 (1)数据输入语句:INPUT 1)格式: INPUT [<提示信息>] TO <内存变量名> 2)功能:暂停程序运行,显示提示信息,等待用户从键盘上输入数 据,用户可以输入任意合法的表达式。 例6.4 运行下段程序: input “请输入一个数字:” to a1 input “请输入一个字符串:” to b1 (4)简单输出语句:?、?? 1)格式:?/?? <表达式表>
条件2
条件n
语句序列2
语句序列n
语句序列n+1
ENDCASE的下一语句
多分支选择结构流程图
例:当输入0~6之间的整数时,系统便显示星期日、星期一……星期六的英语单词,否则 显示“输入数据出错”的信息,试编程实现之。 clear input “请输入一个整数” to n do case case n=0 ? “Sunday” case n=1 ? “Monday” case n=2 ? “Tuesday” case n=3 ? “Wednesday” case n=4 ? “Thursday” case n=5 ? “Friday” case n=6 ? “Saturday” otherwise ? “输入数据出错” endcase retu
作业 :书本P161 三.操作题 2(参考学习指导书P87 3)
6.5 循环结构
循环结构是指根据指定条件的当前值 来决定一行或多行语句(命令)是否要重 复执行。VFP6.0提供了三种循环结构。 1. DO WHILE循环 (1)DO WHILE循环结构 (1)格式 DO WHILE <条件> <循环体语句序列> ENDDO (2)功能 执行DO WHILE语句时,首先计算判 断条件的值,若条件的值为真,则顺序执 行循环体,然后再返回到do while,再次 计算判断条件的值,若条件为真,则重复 上述过程;若条件为假,则执行enddo的 下一个语句。 (3)注意:do while与enddo必须成对出现; 防止死循环
作业:统计1~50间能被6整除的数的个数,并求这些数的和。
3.SCAN循环 SCAN循环专用于控制对 数据表中记录进行逐条操作。 (1)格式 SCAN [<范围>] [FOR/WHILE <条件>] <循环体语句序列> ENDSCAN (2)功能 针对当前表中指定范围 内满足条件的每条记录,逐 一执行SCAN与ENDSCAN 之间的语句序列。
最常用的流程图符号如下所示:
半圆框称为起止框,用来表示程序的开始和结束; 矩形框称为处理框,用来表示数据的输入、输出及加工等问题; 菱形框称为判断框,用来表示条件判断; 箭头即指向线,用来表示程序的流向或途径。
S:存储每次累加的 部分和,n:表示每 次应加的数
计算1+2+3+……+100。 的流程图
2)功能:依次计算并显示表达式表中各表达式的值,所 显示的值与值之间间隔一个空格。 例6.5 运行下段程序 input “a=?” to a ? A*5,a+8 (5) 信息显示函数: MESSAGEBOX( ) 1)格式: MESSAGEBOX(<提示信息>[,<按钮类型>][,< 对话框标题>]) 2)功能:暂停程序运行,在对话框中显示提示信息,等 待用户单击按钮,并返回一个整数表示单击的是哪个按钮。 <按钮类型>由三个数码相加产生,即: <按钮类型码 >+<图标类型码>+<默认按钮码>
6.4 程序的选择结构
选择结构是指在程序执行 过程中,根据指定条件的当前 值在两条或多条程序路径中选 择一条执行。通常选择结构有 三种形式。 1.单分支选择结构 (1)格式 IF <条件> <语句序列> ENDIF (2)功能:执行该语句,先判断 条件的值是否为真,然后决定 程序运行的走向。 (3)注意:成对出现。 (P133提示)
FOR循环流程图
例:统计1~50间不能被7整除的数的个数,并求这些数的积。 clear num=0 fact=1 for i=1 to 50 step 1 if mod(I,7) !=0 num=num+1 fact=fact*I endif endfor ? “1~50间不能被7整除的数的个数是”,num ? “它们的连乘积是”,fact
(2)循环体中两条特殊语 句:EXIT和LOOP (1)格式 跳出循环语句:EXIT 短跳循环语句:LOOP (2)功能 在循环体中执行到 EXIT时,立即无条件跳出 循环,转去执行 ENDDO 的后一个语句。若执行到 LOOP语句,则立即返回 DO WHILE重判循环条件, 而不再执行循环体内的其 他语句。
2.程序文件的保存 程序输入完毕后,从 “文件”菜单选择“保存”或按CTRL+W保 存程序文件。 3.程序文件的修改 方法1)若程序文件已建在某一项目中,则从项目管理器中选定它 并单击“修改”按钮。 方法2)从“文件”菜单选择“打开”, 或者单击常用工具栏上的 “打开”按钮,在“打开”对话框选定要修改的程序文件后单击“确 定”按钮。 方法3)在命令窗口中执行:MODIFY COMMAND <程序文件名> 4.程序文件的运行 方法1)若程序文件已建在某一项目中,则从“项目管理器”中选 定它并单击“运行”按钮。 方法2)从“程序”菜单中选择“运行”,选定要运行的程序文件 后单击“运行”按钮。 方法3)在命令窗口中执行命令:DO <程序文件名>
例6.1 请编写一程序文件,名为:学生人数.prg,实现统计student表中奖学金在 200—300元之间的学生人数,并与书中例5.4(p88)进行比较。
6.2 结构化程序设计初步
1.算法及流程图 (1)算法的概念:根据问题要求拟定用计算机求解的策 略和步骤,并把它用某种工具描述出来,称之为“算法设 计”。 (2)算法的流程图描述 :用一些简单的几何框图表示各 种类型的操作,然后用带箭头的有向流线将各个框图连结 起来,以表示其执行的先后顺序,这种框图称为“流程 图”。 例6.2 试写出算法,以交换变量x 和y的值。 例6.3 试画出流程图,以计算自然数1—100的和。 (如下图) 2.结构化程序设计方法 结构化程序指整个程序由顺序、选择、循环三种基本 结构组成。