第四章 程序设计---Visual Foxpro 程序设计教案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VisualFoxpro程序设计教案第四章程序设计[教学目的与要求]掌握结构化程序设计的三种结构控制语句的使用,在编程中能熟练使用程序模块,包括子程序、函数和过程。学会设计窗口的方法。[教学内容]结构化程序设计的三种结构;子程序,函数和过程的概念;窗口的设计。[教学重点与难点]结构化程序设计的三种结构;子程序,函数和过程。补充知识★★语言基础●数据类型数据类型决定了数据的取值范围和可以参加的运算,只有同种类型的数据之间才可以直接运算,否则系统提示“数据类型不匹配”的错误信息。VFP常用数据类型有:字符型(C),货币型(Y),数值型(N),日期型(D),日期时间型(T),逻辑型(L),备注型(M),通用型(G)等。常量和变量1.常量指一个具体的、不变的值。不同类型的常量有不同的书写格式。VFP6.0中只有6种常量:⑴数值型常量(N)用来表示数量,它由数字0~9,e,E、一个符号(+或-)和一个小数点(.)组成。例如:80,-52.6,3E+9(表示3×109),2e-3(表示2×10-3)等。⑵字符型常量(C)VisualFoxpro程序设计教案用定界符括起来的由键盘上英文字母、空格、数字和汉字等字符组成的字符串。这里的定界符可以是一对单引号或一对双引号或一对方括号。例如:”abcd”,’杨红’,[男]。注意:空串和空格串的区别;⑶逻辑型常量(L)只有两个值:真和假。“真”用.t..T.表示;“假”用.f..F.表示。⑷日期型常量格式为:{^yyyy/mm/dd},{^yyyy-mm-dd},{^yyyy.mm.dd}⑸日期时间型常量格式为:{^yyyy/mm/ddhh:mm:ss}⑹货币型常量$12.342.变量存放可变数据的内存单元为“变量”,其中存放的数据称为变量的值。在VFP中有3种变量:字段变量、用户内存变量和系统内存变量。系统内存变量由VFP定义;字段变量定义在数据表中;(用户)内存变量多定义在程序中。每个变量都有一个名称,叫做变量名,VFP通过引用相应的变量名来实现对变量操作。变量名的命名规则是:以字母、汉字或下划线开头,后跟字母、汉字、数字下划线等。例如变量名:姓名,出生日期,a,x1,x2,sum,delta,pi,max,zdz,stu_name。给变量命名时最好能“见名知义”。另外,使用变量名不区分大小写。⑴字段变量⑵内存变量独立于表文件而存在于内存中的存储单元,它可以用来在程序的执行过程中保留中间VisualFoxpro程序设计教案结果与最后结果。①内存变量的类型包括CDLNTY六种类型,类型取决于它所存放的值。②内存变量与字段变量同名,系统优先处理字段变量,可用前缀m.引用内存变量。③变量的初值:在程序中若要使用变量,必须在使用之前为变量设定一个初值(以后根据需要还再改变它的值),这一操作可通过赋值语句实现。赋值语句可以将指定的值赋给该变量。一般格式为:a.变量名=表达式系统计算表达式的值,并将结果送入指定的变量。b.store表达式to内存变量名表系统计算表达式的值,并将结果送入内存变量名表中的各个变量中。说明:Ⅰ、计算机先计算右边表达式的值,然后再将该值赋给指定变量。Ⅱ、不要将赋值号(=)与是数学中的等号混淆,a=5应读作“将数值5赋给变量a”或是“使变量a的值等于5”。不同于数学表达式,下面两个语句的作用是不同的x=yy=xⅢ、不同于C语言,VFP是一种弱类型语言,它允许通过此语句随时定义一个变量,并其值可以随时改变。x=10&&定义变量x,并赋初值x=x+10&&将x的值在原来的基础上增10x=x*x&&将x的值平方后再赋值给xⅣ、z=x+y不能写成x+y=zⅤ、在引用一个变量前必须确保它已经赋值。x=3y=x*10y=z+2&&此时系统提示出错:找不到变量zVisualFoxpro程序设计教案[例1]usesbbrowse?名称&&显示字段名称的值名称=”计算机”&&定义内存变量名称,c型,?名称&&显示字段名称的值?m.名称&&显示内存变量姓名的值[例2]store28.21toastore“宿州学院”tobstore.t.tocd=$100e={^2002.5.10}store0tox,y,z数组运算符和表达式运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,如加、减、乘、除,而参与运算的数据称为操作数。表达式由运算符和配对的圆括号将常数、变量、函数等操作数以合理的形式组合而成的式子。一、算术运算符及数值表达式a.算术运算符。它们运算的含义与数学中基本相同。+加法、正号-减法、负号*乘法,同数学中的×/除法,同数学中的÷^或**乘方,同数学中的乘方,如4^3或4**3表示43%求余,12%5表示12除以5所得的余数2()括号,只允许出现圆括号VisualFoxpro程序设计教案算术运算符在计算时的优先次序是:()→^**→*/%→+-b.算术表达式50*2+(70-6)/8,a+b/a-b,(a+b)/(a-b)(哪个相当于baba?)c.注意事项:算术表达式与数学中的数学表达式写法有所区别,在书写表达式时应当特别注意:①每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成2^3,X1十X2要写成X1+X2。②原来在数学表达式中省略的内容必须重新写上。例如:2X要写成2*X。③所有括号都用小括号(),且括号必须配对。例如:3[x+2(y+z)]必须写成3*(x+2*(y+z))。④要把数学表达式中的某些希腊、拉丁符号,改成VFP中可以表示的符号。例如:要把2πr改为2*pi()*r。例如:数学的求根公式2a4acbb2应写成(-b+sqrt(b^2-4*a*c))/(2*a)和(-b-sqrt(b^2-4*a*c))/(2*a),这里的sqrt是个数学函数,求数的平方根。二、字符串运算符及字符表达式字符串运算符c1+c2将c1和c2连接形成一个新串。c1-c2将c1的尾部空格移到c2后在连接成新串。ABCl23+666xyz连接后结果为:ABCl23666xyzVisualFoxpro程序设计教案ABC-DEFG连接后结果为:ABCDEFG三、日期表达式日期+天数、日期-天数、日期1-日期2四、关系运算符及关系表达式用于判定指定的数据是否满足给定的关系,若满足计算的值为.t.;否则结果为.f.(1)运算符=等于大于=大于等于小于=小于等于或#或!=不等于c1$c2判断c1是否包含在c2中==字符型数据的精确相等(2)表达式常用于表示条件?53&&结果为.t.x=3?x=3store“中国北京”tos1store“北京”tos2?s2$s1&&结果.t.?s1$s2&&结果.f.五、逻辑型运算符及逻辑型表达式逻辑型运算符将逻辑型数据连接起来的式子。前面关系运算的结果是逻辑型,因而逻辑型运算符常用于描述较复杂的关系,例如1≤x≤10等。(1)运算符①and与操作(.and.)格式:条件1and条件2例如:x=1andx=10VisualFoxpro程序设计教案说明:只有两个条件都为.t.时,结果为.t.(也称条件满足);否则结果为.f.(也称条件不满足)。②or或操作(.or.)格式:条件1or条件2例如:x=-1orx=1说明:两者中只要有一个条件.t.,结果为.t.;否则,结果为.f.③not条件取反(.not.)格式:not条件例如:notx1相当于x=1说明:对条件取反注意:复合条件运算符在计算时的优先次序是:not→and→or(2)表达式①数学式1≤x≤10(x=1)and(x=10)②a是偶数或是3的倍数a%2=0ora%3=0③a≤b也可以写成notab或a=b④任意三个数能否构成三角形的判定条件:a+bcanda+cbandb+ca⑤year是否闰年:(year%400=0)or(year%4=0andyear%1000)说明:一个表达式中出现多种运算,先进行算术运算,再比较大小,最后将比较结果进行复合。常用函数在VFP中,算术运算仅提供加减乘除的四则运算,如何求一些复杂的运算(例如正弦、余弦)呢?学过高数的同学知道有个“泰勒公式”,太复杂!事实上,为方便用户编程,每种程序设计语言都提供功能强大的系统函数(与数学上的函数没有什么区别)供用户调用,从而VisualFoxpro程序设计教案避免了一些繁琐的计算。从程序设计的角度来看,函数是子程序的一种,它能完成一种特定的运算。函数有三要素:函数名、逗号分开的参数、函数值。例如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)的值是3sqrt(n)求n的平方根(n=0)例如:sqrt(9)的值是3mod(m,n)求m%n的值,可用%替代。rand([n])返回0到1之间的随机数2.字符函数函数格式说明len(c)求字符串c长度。例如len(“a123bcde”)的值是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)结果”a”,substr(“abce”,2)结果”bce”。VisualFoxpro程序设计教案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.转换函数转换函数的作用是将某一种数据类型转换成另一种数据类型,以便在一起参加运算。函数格式说明str(n1[n2[,n3]])将数值n1转换成数字字符串(n→c)val(c)将字符串c转换成数值型数据(c→n)asc(c)求字符串c中首字符的asc值说明:”A”~”Z的asc值是65~90;”a”~”z”的asc值是97~122chr(n)根据asc值求对应的字符ctod(c)将形如日期的字符串c转换成日期型数据见例3-36,37,38,395.测试函数函数格式说明VisualFoxpro程序设计教案eof([n]),bof([n])判定表文件的记录指针是否到文件头或文件尾recno([n])求表文件的当前记录号reccount([n])求表文件的总记录个数found([n])测试针对表文件的查找是否成功ctod(c)将形如日期的字符串c转换成日期型数据type(“表达式”)测试表达式的类型例如:type(“12”)值是n,type(“[12]”)值为ciif(条件表达式,值1,值2)测试条件表达式的值,若为.t.,函数的值是值1;否则函数的值是值2。说明:⑴这里的n均指表所在的工作区,缺省时指当前工作区。⑵type函数形式较特殊。§4.1程序文件4.1.1程序文件的建立与执行一、程序文件(*.p

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功