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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

第四章程序设计VisualFoxpro程序设计教案.docx

1、第四章程序设计VisualFoxpro程序设计教案第四章 程序设计 教学目的与要求 掌握结构化程序设计的三种结构控制语句的使用,在编程中能熟练使用程序模块,包括子程序、函数和过程。学会设计窗口的方法。 教学内容 结构化程序设计的三种结构;子程序,函数和过程的概念;窗口的设计。 教学重点与难点结构化程序设计的三种结构;子程序,函数和过程。 补充知识语言基础数据类型 数据类型决定了数据的取值范围和可以参加的运算,只有同种类型的数据之间才可以直接运算,否则系统提示“数据类型不匹配”的错误信息。 VFP常用数据类型有: 字符型(C),货币型(Y),数值型(N),日期型(D),日期时间型(T),逻辑型(

2、L),备注型(M),通用型(G)等。常量和变量1. 常量指一个具体的、不变的值。不同类型的常量有不同的书写格式。VFP6.0中只有6种常量:数值型常量(N) 用来表示数量,它由数字09,e,E、一个符号(或)和一个小数点(.)组成。例如:80,-52.6,3E+9(表示3109),2e-3(表示210-3)等。字符型常量(C) 用定界符括起来的由键盘上英文字母、空格、数字和汉字等字符组成的字符串。这里的定界符可以是一对单引号或一对双引号或一对方括号。例如:”abcd”,杨红,男。注意:空串和空格串的区别;逻辑型常量(L) 只有两个值:真和假。“真”用.t. .T.表示;“假”用.f. .F.表

3、示。日期型常量 格式为:yyyy/mm/dd,yyyy-mm-dd,yyyy.mm.dd日期时间型常量 格式为:yyyy/mm/dd hh:mm:ss货币型常量 $12.34 2.变量存放可变数据的内存单元为“变量”,其中存放的数据称为变量的值。在VFP中有3种变量:字段变量、用户内存变量和系统内存变量。系统内存变量由VFP定义;字段变量定义在数据表中;(用户)内存变量多定义在程序中。每个变量都有一个名称,叫做变量名,VFP通过引用相应的变量名来实现对变量操作。变量名的命名规则是: 以字母、汉字或下划线开头,后跟字母、汉字、数字下划线等。例如变量名:姓名,出生日期,a,x1,x2,sum,de

4、lta,pi,max,zdz,stu_name。给变量命名时最好能“见名知义”。另外,使用变量名不区分大小写。字段变量内存变量 独立于表文件而存在于内存中的存储单元,它可以用来在程序的执行过程中保留中间结果与最后结果。内存变量的类型包括CDLNTY六种类型,类型取决于它所存放的值。内存变量与字段变量同名,系统优先处理字段变量,可用前缀m.引用内存变量。变量的初值:在程序中若要使用变量,必须在使用之前为变量设定一个初值(以后根据需要还再改变它的值),这一操作可通过赋值语句实现。赋值语句可以将指定的值赋给该变量。一般格式为:a. 变量名 = 表达式 系统计算的值,并将结果送入指定的变量。 b. s

5、tore to 系统计算的值,并将结果送入中的各个变量中。说明:、计算机先计算右边表达式的值,然后再将该值赋给指定变量。、不要将赋值号(=)与是数学中的等号混淆,a=5应读作“将数值5赋给变量a”或是“使变量a的值等于5”。不同于数学表达式,下面两个语句的作用是不同的 x=y y=x、不同于C语言,VFP是一种弱类型语言,它允许通过此语句随时定义一个变量,并其值可以随时改变。 x=10 &定义变量x,并赋初值x=x+10 &将x的值在原来的基础上增10 x=x*x &将x 的值平方后再赋值给x、z=x+y不能写成x+y=z、在引用一个变量前必须确保它已经赋值。 x=3 y=x*10 y=z+2

6、 &此时系统提示出错:找不到变量z例1use sbbrowse?名称 &显示字段名称的值名称=”计算机” &定义内存变量名称,c型,?名称 &显示字段名称的值?m.名称 &显示内存变量姓名的值例2store 28.21 to astore “宿州学院” to bstore .t. to cd= $ 100e=2002.5.10store 0 to x,y,z数组运算符和表达式运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,如加、减、乘、除,而参与运算的数据称为操作数。表达式由运算符和配对的圆括号将常数、变量、函数等操作数以合理的形式组合而成的式子。一、 算术运算符及数值表达式a.

7、算术运算符。它们运算的含义与数学中基本相同。+ 加法、正号- 减法、负号* 乘法,同数学中的/ 除法,同数学中的或* 乘方,同数学中的乘方,如43或4*3表示43 求余,125表示12除以5所得的余数2( ) 括号,只允许出现圆括号算术运算符在计算时的优先次序是:( )*/+ -b.算术表达式 50*2+(70-6)8,a+b/a-b , (a+b)/(a-b) (哪个相当于?)c.注意事项:算术表达式与数学中的数学表达式写法有所区别,在书写表达式时应当特别注意:每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成23,X1十X2要写成X

8、1+X2。原来在数学表达式中省略的内容必须重新写上。例如:2X要写成2*X。所有括号都用小括号(),且括号必须配对。例如:3x+2(y+z)必须写成3*(x+2*(y+z)。要把数学表达式中的某些希腊、拉丁符号,改成VFP中可以表示的符号。例如:要把2r改为2*pi()*r。例如:数学的求根公式应写成(-b+sqrt(b2-4*a*c)/(2*a)和(-b-sqrt(b2-4*a*c)/(2*a),这里的sqrt是个数学函数,求数的平方根。二、字符串运算符及字符表达式 字符串运算符c1 c2 将c1和c2连接形成一个新串。c1 - c2 将c1的尾部空格移到c2后在连接成新串。ABCl23+6

9、66xyz 连接后结果为:ABCl23666xyzABC - DEFG 连接后结果为:ABC DEFG 三、日期表达式日期+天数、日期-天数、日期1-日期2四、关系运算符及关系表达式 用于判定指定的数据是否满足给定的关系,若满足计算的值为.t.;否则结果为.f.(1) 运算符 = 等于 大于= 大于等于 小于= 小于等于或#或!= 不等于 c1$c2 判断c1是否包含在c2中= 字符型数据的精确相等(2) 表达式 常用于表示条件? 53 &结果为.t.x=3?x=3store “中国北京” to s1store “北京” to s2?s2$s1 &结果.t. ?s1$s2 &结果.f. 五、逻

10、辑型运算符及逻辑型表达式 逻辑型运算符将逻辑型数据连接起来的式子。前面关系运算的结果是逻辑型,因而逻辑型运算符常用于描述较复杂的关系,例如1x10等。(1) 运算符 and 与操作 (.and.)格式:条件1 and 条件2 例如:x=1 and x=10说明:只有两个条件都为.t.时,结果为.t.(也称条件满足);否则结果为.f. (也称条件不满足)。 or 或操作 ( .or.)格式:条件1 or 条件2 例如: x=1说明:两者中只要有一个条件.t.,结果为.t.;否则,结果为.f. not 条件取反 (.not.) 格式:not 条件 例如: not x1 相当于x=1) and (x

11、b 或 ac and a+cb and b+ca year是否闰年:( year%400=0) or (year%4=0 and year%1000) 说明:一个表达式中出现多种运算,先进行算术运算,再比较大小,最后将比较结果进行复合。常用函数 在VFP中,算术运算仅提供加减乘除的四则运算,如何求一些复杂的运算(例如正弦、余弦)呢?学过高数的同学知道有个“泰勒公式”,太复杂!事实上,为方便用户编程,每种程序设计语言都提供功能强大的系统函数(与数学上的函数没有什么区别)供用户调用,从而避免了一些繁琐的计算。从程序设计的角度来看,函数是子程序的一种,它能完成一种特定的运算。函数有三要素:函数名、逗

12、号分开的参数、函数值。例如 abs(-9),max(9,-3)等。我们用户在学习使用这些函数时要注意参数的个数、参数的约束条件及函数值的类型,比如date()是无参函数,返回一个日期值;求平方根函数sqrt需要一个参数,并且只能是个非负数。1. 数值函数 函数格式说 明abs(n)求n的绝对值例如:abs(-9)的值是9int(n)取n的整数部分 例如:int(4.5)的值是4,int(-4.5)的值是-4sin(n)cos(n)对n分别求正弦和余弦值max(n1,n2,)min(n1,n2,)求n1、n2中的最大者 例如:max(9,3)的值是9求n1、n2中的最小者 例如:min(9,3)

13、的值是3sqrt(n)求n的平方根(n=0)例如:sqrt(9)的值是3mod(m,n)求m%n的值,可用%替代。rand(n)返回0到1之间的随机数2. 字符函数函数格式说 明len(c)求字符串c长度。例如len(“a123bc de”)的值是9。Len(“奥运会”)的值为6,len(”)的值为0space(n)产生含有n个空格的字符串。例如space(5)得到字符串” ”。 alltrim(c)删除字符串c的首尾空格。substr(c,n,m)求子串。从字符串c中提取从n开始的m个字符的子串。substr(“abcde”,2,3) 结果”bcd”,substr(“abce”,1,1) 结

14、果”a”, substr(“abce”,2) 结果”bce”。left(c,n)right(c,n)右或左取字符串c 的n的字符形成一个新串upper(c),lower(c)求字符串c的大写或小写形式的字符串replicate(c,n)将指定的c重复n次,形成一个字符串at(c1,c2)求串c1在c2中第一次出现的位置;若不出现c2中,返回值为03. 日期函数 函数格式说 明date()返回系统日当前日期time()返回系统日当前时间year(d)month(d)day(d)对一个日期求四位年份、月份、日数4. 转换函数转换函数的作用是将某一种数据类型转换成另一种数据类型,以便在一起参加运算。

15、 函数格式说 明str( ,n3)将数值n1转换成数字字符串(nc)val(c)将字符串c转换成数值型数据(cn)asc(c)求字符串c中首字符的asc值说明:”A”Z的asc值是6590;”a”z”的asc值是97122chr(n)根据 asc值求对应的字符ctod(c)将形如日期的字符串c转换成日期型数据 见例3-36,37,38,395. 测试函数 函数格式说 明eof(n),bof(n)判定表文件的记录指针是否到文件头或文件尾recno(n)求表文件的当前记录号reccount(n)求表文件的总记录个数found(n)测试针对表文件的查找是否成功ctod(c)将形如日期的字符串c转换成

16、日期型数据type(“表达式”)测试表达式的类型 例如:type(“12”)值是n,type(“12”)值为ciif(,)测试条件表达式的值,若为.t.,函数的值是;否则函数的值是。 说明:这里的n均指表所在的工作区,缺省时指当前工作区。type函数形式较特殊。4.1 程序文件4.1.1 程序文件的建立与执行一、程序文件(*.prg)的建立与修改命令格式: modify command 说明:(1)程序文件由VFP命令组成。 文件名前也可以指明路径,如:modify command e:s12qh(2)关闭编辑窗口的方法:Ctrl+W;Esc;双击控制菜单;关闭按钮(3)文本编辑窗口也可以编辑

17、由ASCII字符组成的非.PRG文件。二、程序的运行命令格式:Do 功能:执行程序说明: Do也可以运行其它程序,必须包含扩展名。三、程序书写规则1、命令分行 续行符;2、命令注释 独立的注释行是以*开头;注释部分以&开头。例*本程序用于修改表的指定记录set date USA &日期格式设置为 MM-DD-YY四、求解的基本逻辑与程序通用性1、求解的基本逻辑 输入数据 处理数据 输出数据r=3s=3.14*r*r?”圆面积=”,s2、程序的通用性4.1.2 程序文件中的专用命令一、程序结尾的专用命令return:使程序结束执行,返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。一

18、般缺省。cancel:能使程序运行终止,清除程序的私有变量,并返回到命令窗口。quit:正常退出VFP,自动保存文件,并删除磁盘中的临时文件,程序终止运行后返回到Windows。二、输入输出专用命令命令基本格式: say get default (1)表示数据在窗口中显示的位置。(2)say子句用来输出数据,get子句用来输入数据及编辑数据。(3)get子句中的变量必须具有初值,或用default子句的指定初值。(4)get子句的变量必须用read命令来击活。例4-1 编程根据记录号来修改某设备的价格和部门。*e4-1.prgclearuse sbjlh=12,10 say “请输入记录号:”

19、 get jlhreadgo jlh4,10 say “请修改第”+str(jlh,1)+”个设备的数据:” &输出提示字符串6,10 say “价格” get 价格8,10 say “部门” get 部门readuse三、wait命令命令格式:wait to windows at , nowaitclear | nocleartimeout说明:(1)wait命令使VFP程序暂停执行,等用户按任一键后,程序继续执行。(2)用来保存键入的字符,如果不选to子句,则输入的数据不予保存。(3)如果缺省,则执行命令后屏幕显示”按任意键继续”,提示按任一键继续执行。(4)Windows子句可使主屏幕上

20、出现一个wait提示窗口,位置由wait选项的,来指定。若缺省at选项,将显示在主屏幕右上角。(5)若使用nowait选项,系统将不等用户按键,立即往下执行。(6)clear选项用来关闭提示窗口。Noclear表示不关闭提示窗口,wait窗口将在执行到下一个waitwindow命令时自动关闭。(7)timeout子句用来设定等待时间(秒数),一旦超时自动往下执行命令。例4-2 wait命令输出信息示例 wait “请检查输入内容!” window4.2 程序的控制结构4.2.1 顺序结构 按照语句排列顺序的先后执行。4.2.2 分支结构一、简单的条件语句语句格式: if endif例4-3 将

21、sb.dbf中第一个非主要设备的价格减少10%。*e4-3.prguse sblocate foe not 主要设备if found( ) display 名称,价格 replace 价格 with 价格*(1-0.1) display 名称,价格endifuse return二、带else的条件语句语句格式:if else endif宏代换函数格式:& ,功能:替换出字符型内存变量的值。例4-4 宏代换示例m=5x=”m” & x为字符型内存变量?x & 显示m?&x & 显示5,得到了变量x的值。例4-5 试编一程序,能打开任意一个表来浏览。*4-5.prg5,10 say “请输入表名:

22、” get bm default space(10)readbm=alltrim(bm)if file(“&bm.dbf”) use &bm browseelse wait ”该文件不存在!” windowendif注意:VFP不允许直接用变量名作为表名。还可以用use (bm)。三、多分支语句语句格式:do case case case case otherwise endcase例4-6 显示当前季节程序*e4-6.prgyue=month(date()do case case inlist(yue,3,4,5)jj=”春” case inlist(yue,6,7,8)jj=”夏” cas

23、e inlist(yue,9,10,11)jj=”秋” case inlist(yue,12,1,2)jj=”冬”endcasewait jj window注意:(1)if和endif必须成对出现;do case和endcase必须成对出现。(2)采用缩进的书写格式,便于理解和阅读。(3)表达分支和循环的语句不能在一行写完,必须一行一行的写。4.2.3 循环结构一、条件循环语句格式: do while enddo例4-7 试编一个程序,显示sb.dbf中所有单价超过10000元的设备名称。*e4-7.prguse sbdo while not eof( ) if 价格10000 ?名称 end

24、if skipenddouse例4-8 按9万元以上,19万元,1万元以下三级价格分档统计sb.dbf中设备的个数。*e4-8.prgstore 0 to k1,k2,k3use sbdo while not eof( ) do case case 价格90000 k1=k1+1 case 价格10000 k3=k3+1 otherwise k2=k2+1 endcase skipenddo?”9万元以上设备个数:”+str(k1)?”19万元设备个数:”+str(k2)?”1万元以下设备个数:”+str(k3)use二、步长循环语句格式:for = to step endfor | next

25、说明:内存变量称为循环变量;称为初值;称为终值;称为步长,缺省为1。例4-9 编写计算s=1+2+3+100的程序。*e4-9.prgs=0for i=1 to 100 s=s+inext?”s=”,s三、扫描循环语句格式:scan for endscan说明:scan针对于当前表进行循环。例4-10 根据4-7的要求,用扫描循环语句编程。*e4-10.prguse sbscan for 价格10000 ?名称endscanuse四、循环辅助语句do while do while Loop exitenddoenddo 例4-11 编程计算s=1+2+3+100,并求1100之间的奇数之和。*

26、e4-11.prgstore 0 to i,s,tdo while i100 i=i+1 s=s+i if int(i/2)=i/2 Loop endif t=t+ienddo?”1+2+3+100=”,s?”1100奇数和为:”,t五、多重循环(循环的嵌套)例4-12 在sb.dbf表中找出所有价格超过P的设备的编号、名称与价格,并要求在各输出行下显示一行虚线。*e4-12.prgclearuse sb5,10 say”请输入价格:” get jg default 0readscan if 价格jg ?编号+space(3)+名称+space(3)+str(价格,9,2) ? for i=1 to 30 ?”-“ endfor endifendscanuse4.3 多模块程序4.3.1 子程序一、调用和返回调用:Do返回:Return二、带参数子程序的调用与返回命令格式:do with in 说明:(1)中的参数可以是表达式,但若是内存变量必须具有初值。(2)当是in子句中的一个过程时,Do命令调用该过程。子程序中的参数格式:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1