《程序设计基础课件.pptx》由会员分享,可在线阅读,更多相关《程序设计基础课件.pptx(154页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1VF 6.0VF 6.0的工作方式的工作方式VFVF的工作方式分为:1.1.菜单操作方式2.2.命令交互方式 3.3.程序执行方式 第1页/共154页24.1常量与变量通常,数据存入到常量、变量、数组中,而在VFVF系统环境下,数据还可以存入到字段、记录和对象中。这些供数据存储的常量、变量、数组、字段、记录和对象称为数据存储容器。根据数据在执行时其值是否改变,把数据划分为常量和变量两种。第2页/共154页3命令行:R=5C=3.14*R*R?圆面积是,C显示结果:圆面积是78.50结果显示在窗口工作区在命令窗口内输入命令行4.1常量与变量第3页/共154页4常量是取值固定不变的数据。VFP支
2、持字符型、数值型、逻辑型、货币型、符号型、日期型和日期时间型常量。1.数值型常量如:15、-3.9、0.54可使用科学计数法的形式书写,如5.324910164.1.1常量第4页/共154页52.字符型常量字符型常量用定界符括起来的字符串定界符:“”或或,使用字符型常量必须加定界符,而且定界符必须成对出现。空格串“”和空串“”的区别:空格串,串长0。4个空格,串长为4。空串,串长=0。如果使用2对以上的定界符,内外定界符必须不同。ABCDEFGH ABCDEFGH4.1.1常量第5页/共154页64.1.1常量3.-4.日期、日期时间型常量定界符是:大括号日期型常量的严格格式YYYY-MM-D
3、D,如1949-10-01日期型时间性的严格格式YYYY-MM-DDhh:mm:ssa|p如:1949-10-0102:10:45p非严格的格式是:MM/DD/YY、MM/DD/YYHH:MM:SS系统默认状态下只能使用严格格式的日期。系统默认状态下只能使用严格格式的日期。第6页/共154页74.1.1常量5.逻辑型常量逻辑型常量只有真和假两个值真:.T.t.Y.y.假:.F.f.N.n.定界符:原点.第7页/共154页84.1.1常量6.货币型常量以货币符号$开头在存储和计算时四舍五入到四位小数小数位不足就在尾部补零没有科学记数法形式例:在命令窗口中输入命令?$1.23456789,则在主窗
4、口中显示:A)$1.23456789B)$1.2456C)1.2346D)错误第8页/共154页94.1.1常量7.符号常量一种特殊常量,仅限在程序中使用定义格式:DEFINE常量名数值如:#DEFINEpi3.1415在程序中可直接用符号常量名代替常量值如:20*pi等价于20*3.1415第9页/共154页10例:常量3.14$3.14$3.14分别是什么数据类型?答案:数值型N、货币型Y、字符型C。例:在命令窗口中输入?12+3,则主窗口中显示:答案:15例:在命令窗口中输入?”12+3”,则主窗口中显示:A)15B)“15”C)”12+3”D)12+3答案:D。只要有字符型定界符则必然
5、是字符型常量,输出时,定界符并不输出,只将定界符内数据原样输出。练习第10页/共154页11例题:以下是合法常量的是,数据类型分别为。A)$1.23456B)¥1.234C)2007/04/07D)07/04/07E).T.F).N.G)$1.6e3H)2007/04/07答案:答案:A A是合法的货币型常量,其值为是合法的货币型常量,其值为1.23461.2346;B B不是合法的常量;不是合法的常量;C C不是合法的常量,因为缺少不是合法的常量,因为缺少;D D是合法的字符型常量;是合法的字符型常量;E E是合法的字符型常量;是合法的字符型常量;F F是合法的逻辑型常量;是合法的逻辑型常量
6、;G G不是合法的常量;不是合法的常量;H H是合法的常量是合法的常量,数值的除法。数值的除法。第11页/共154页12变量是取值能被程序改变的数据4.1.2变量字段变量(存放在表文件中的字段)内存变量一般内存变量(存放在内存单元的单个数据)系统内存变量(由VF系统提供)数组变量(存放在内存单元组的多个数据)变量第12页/共154页131.内存变量(1)内存变量的概念内存变量是内存中的一个存储区域,存放程序运行的中间结果或最终结果。命名规则以字母、汉字或下划线开头长度最多为128由字母、汉字、数字或下划线组成的字符串不能与系统保留字冲突注意:注意:VFVF中变量名不区分大小写。中变量名不区分大
7、小写。第13页/共154页14(2)内存变量的建立=STORETO,如:w=“VisualFoxPro”y2=2008-01-16store90toy1,y2内存变量可被先后多次赋予不同类型的值。1.内存变量=与STORE的区别=一次只能给一个变量赋值;STORESTORE可以给多个变量赋值,但赋的是同一个值。第14页/共154页15(3)内存变量的显示格式:DISPLAYLISTMEMORYLIKE TO PRINTER PROMPT/TO FILE例如:显示内存变量。A=12STORE“123TON1,N2B=2003-01-01DISPMEMOLIKEN*DISPMEMO显示所有N开头的
8、内存变量分页显示全部内存变量1.内存变量第15页/共154页162.字段变量(1 1)字段变量的概念)字段变量的概念隶属表文件。隶属表文件。确定表结构就包括了定义字段变量。确定表结构就包括了定义字段变量。命名规则:命名规则:以字母或汉字开头,长度对于自由表不超以字母或汉字开头,长度对于自由表不超过过1010个字符,对于数据库表不超过个字符,对于数据库表不超过128128个字符,个字符,由字母、汉字、数字或下划线组成的字符串,由字母、汉字、数字或下划线组成的字符串,如:职工号。不能与系统保留字(如如:职工号。不能与系统保留字(如:character:character)冲突。)冲突。第16页/共
9、154页17(2 2)字段变量的类型)字段变量的类型多达多达1313种。种。常用类型如:字符型常用类型如:字符型C C、数值型、数值型N N、货币型、货币型Y Y、日期型日期型D D、逻辑型、逻辑型L L、备注型、备注型M M、通用型、通用型G G。2.字段变量第17页/共154页18字段变量与内存变量字段变量与内存变量的区别:定义方式不同。字段变量在建立表结构时定义;而内存变量使用赋值命令进行定义。使用方式不同。字段变量在使用前必须用命令(USE表名)打开;内存变量定义后就可使用。生存期不同。字段变量驻留在外存;内存变量驻留在内存,随着VF关闭而被消除。第18页/共154页19字段变量与内存
10、变量建立内存变量时不必指定变量的类型。存放什么类型的数据,该变量就是什么类型。字段变量与内存变量同名时,字段变量名优先级高于同名的内存变量。如现同时有:字段变量:部门号 内存变量:部门号 则在使用内存变量部门号时,需写成:M.M.部门号 或 M-M-部门号 ,以示区别。第19页/共154页20数组是一组按照一定顺序排列的内存变量,各个变量称为数组元素,元素之间有序。数组中数组元素的数据类型可以互不相同通过数组下标来引用数组元素一维数组如下:二维数组如下:和内存变量不同,数组必须先定义后使用。3.数组A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)A(1,1)A(1,2)A(1,
11、3)A(1,4)A(2,1)A(2,2)A(2,3)A(2,4)第20页/共154页213.数组(1)数组的定义定义一维数组或二维数组及其下标的下界DECLEAR|DIMENSION(下标)如:DIMENSIONA(3)DIMENSIONB(2,3)数组下标的下界为数组下标的下界为1 1下标可以是常量、变量、函数或表达式,用圆括号括起来下标可以是常量、变量、函数或表达式,用圆括号括起来对于一维数组,下标是数组元素的个数,如对于一维数组,下标是数组元素的个数,如(3)(3)表示该数组中表示该数组中有有3 3个元素;个元素;对于二维数组,下标是数组的最大行号和最大列号,如对于二维数组,下标是数组的
12、最大行号和最大列号,如(2,3)(2,3)表示数组为表示数组为2 2行行3 3列。列。第21页/共154页223.数组(2)数组的赋值数组元素的数据类型可以修改,系统默认的赋值为.F.赋值方法同内存变量,使用STORE或=若用赋值命令赋值时未指明下标,则数组中的所有数组元素同时被赋予同一个值;若指明下标,则给指定的数组元素赋值。同一数组各元素的数据类型可以不同。A(4)=.T.&逻辑型DIME A(6)store 1 to A(2)&数值型A(4)=K&字符型.F.F.F.F.F.F.1K.T.第22页/共154页23(3)数组与表的数据传递将当前记录传递到数组或内存变量中use借阅Go3Sc
13、attertotemp将数组或内存变量中的数据传递到当前记录中use借阅copystructuretotemptableusetemptableappendblankGatherfromtemp3.数组&将当前记录值传送给数组temp&将数组temp的值传送到新表temptable新增的空白记录中第23页/共154页24内存变量和数组的释放(清除)CLEARALL或CLEARMEMORY同时清除所有的内存变量、数组RELEASE,RELEASEALLLIKE/EXCEPT清除指定的内存变量、数组第24页/共154页25练习题:显示结果a=5ab=7abc=7b=9releasealllikea
14、?ab?abc?breleasealllike*?b第25页/共154页26系统变量是由VF系统提供的一组变量用于控制外部设备(如打印机、鼠标等)、屏幕输出格式,或处理系统时间、剪贴板等内容的信息系统内存变量是指以下划线_ _ 开头的、由系统自动定义生成的变量。如:_DIARYDATE用于存储系统当前日期_CLIPTEXT表示接受文本并送入剪贴板。4.系统变量第26页/共154页27小结目的要求:了解常量、变量、数组的含义;掌握常量的分类及每类常量的书写;掌握变量的分类;掌握内存变量的定义、赋值、显示、保存、释放;掌握数组的定义、构成、使用。重点:常量使用;变量的定义、使用;数组的定义、构成、
15、使用。难点:数据的正确书写;数组的理解。第27页/共154页284.2表达式与常用函数4.2.1表达式由常量、变量、函数以及运算符连接起来的式子,形式为:操作数1运算符操作数2如:12+3包括下面几种数值表达式、字符表达式、日期表达式、关系表达式、逻辑表达式第28页/共154页291.数值表达式数值表达式由算术运算符将数值类型的数据连接起来的式子,其运算结果仍为数值型数据。其中,%为求余运算,*和为乘方运算?(1/2-6/7)*20.56?(10+a2)/(1+b(c*d)?16%3第29页/共154页30所有运算符都不能省略。运算数和运算符要写在同一行。同一级别的运算原则是从左到右计算,括号
16、可以改变运算的顺序,即先括号内后括号外,多层括号则先内层后外层。所有括号都是小括号。1.数值表达式第30页/共154页312.字符表达式字符表达式由字符运算符将字符类型的数据连接起来的式子,其运算结果仍为字符型数据。字符运算符包括+、-+将前后两个字符串首尾连接-连接两个字符串,并将运算符左侧字符串的尾部空格移到右侧字符串的尾部第31页/共154页322.字符表达式例如:x=“VisualFoxPro”y=系统开发?x+y?x-y 第32页/共154页333.日期表达式日期表达式由日期型数据参与运算的式子,其运算结果为日期型数据或数值型数据运算符包括+、-日期型数据N:表示指定日期前N天或后N
17、天日期型数据-日期型数据:表示两个日期相差天数如:2006-09-12+10=2006-09-222006-09-12-10=2006-09-022006-09-12-2006-09-03=9第33页/共154页343.日期表达式练习题:设职工数据表和按“工作日期”索引的索引文件已经打开,要把记录指针定位到工作刚好满30天的职工,应当使用命令A)GOB)SEEKDATE()30C)FINDDATE()30D)SEEKDATE()-30第34页/共154页35D练习题:设职工数据表和按“工作日期”索引的索引文件已经打开,要把记录指针定位到工作刚好满30天的职工:索引查找:seek日期表达式:da
18、te()-30当前日期30工作日期(开始工作的那天)第35页/共154页364.关系表达式关系表达式由关系运算符将相同类型的数据连接起来的式子,其运算结果为逻辑型数据.如:45!=56 .T.45!=56 .T.MonthMonth=monthmonth .F.F.abcabc baabaa .T.T.运算符运算符说明说明大于大于=等于等于#!=不等于不等于=大于等于大于等于=完全相等完全相等$子串包含测试子串包含测试第36页/共154页374.关系表达式例:SET EXACT OFF SET EXACT OFF STORE STORE“奥运会”TO s1TO s1STORE STORE“奥运
19、会 ”TO s2TO s2?s1=s2,s2=s1,s2=s1&.F.T.F.?s1=s2,s2=s1,s2=s1&.F.T.F.SET EXACT ON SET EXACT ON?s1=s2,s2=s1,s2=s1?s1=s2,s2=s1,s2=s1&.T.T.F.&.T.T.F.“=”是精确比较,两侧的字符串必须完全相同才为.T.T.。OFFOFF状态时,系统默认以右串为结束标志,“”右侧的字符串与左侧的字符串的前部内容相匹配即真。ONON状态时,要进行等长比较,先用空格补在短字符串右边,使左右两侧的字符串等长。第37页/共154页38 关系运算符是对同类数据比较,操作数可以是数值型、日期
20、型、字符型和逻辑型。数值型数据比较时,按数据的大小比较。字符串比较时,逐个比较每个字符的ASCII码大小。例如:“abc”“bc”结果为.F.。日期型数据比较时,日期晚则大。逻辑型数据比较时,真大于假。4.关系表达式第38页/共154页39子串包含测试形式:字符表达式1$字符表达式2功能:若前者是后者的子串,返回结果为真。例:?鲁迅$鲁迅杂文?鲁迅全集$鲁迅杂文运算符$和=仅适用于字符型数据。4.关系表达式第39页/共154页405.逻辑表达式逻辑表达式由逻辑运算符将逻辑类型的数据连接起来的式子,其运算结果仍为逻辑型数据。XANDY结果结果.T.T.T.T.F.F.F.T.F.F.F.F.XO
21、RY结果结果.T.T.T.T.F.T.F.T.T.F.F.F.优先级从高到低为:非-与-或第40页/共154页415.逻辑表达式字段有效性规则是逻辑表达式如:设置性别字段只能是男或女性别=男OR性别=女设置成绩字段的值在0100之间成绩=0AND成绩=100第41页/共154页425.逻辑表达式例:假定字符串A=“123”,B=“234”。则下列表达式的运算结果为逻辑假的是()。A).NOT.(A=B).OR.B$(“13579”)B).NOT.A$(“ABC”).AND.(AB)C).NOT.(AB)D).NOT.(A=B)注意,关系运算的优先级高于逻辑运算。算术、字符、日期运算又均高于关系
22、运算。第42页/共154页43逻辑表达式的书写实例1986年以前出生的男学生(出生日期18and年龄=90工龄大于30年,工资高于1500、低于1800元(30为“工龄”字段)工龄30and(工资1500and工资105.逻辑表达式第44页/共154页45D关系运算优先级高于逻辑运算,n=10.or.L等价于(n=10).or.L若L=.T.,n=10.or.L 为.T.若L=.F.,n=10.or.L 为.F.C-“A”,假定c=“b”,则C-“A”=“bA”第45页/共154页464.2.2常用函数函数由函数名、参数和函数值三部分组成 函数的基本形式是:函数名()如:date(),len(
23、asdfgh)几点说明:(1)函数名后面是一对圆括号,圆括号内可以有参数,也可以没有参数。(2)参数可以是常量,也可以是变量,但参数的数据类型是固定的。(3)函数运算后会返回一个值,称为函数值。第46页/共154页474.2.2常用函数VFP提供了多达200余种的函数(系统函数),实现数据计算、类型转换和逻辑运算等特定功能。按照函数的功能和返回值的类型分为:数值函数字符函数日期函数数据类型转换函数表函数测试函数第47页/共154页481.数值函数(1)取整函数1)截整函数 格式:INT()N:数值表达式 功能:返回的值的整数部分。2)四舍五入取整函数 格式:ROUND(,)功能:对的值进行四舍
24、五入。若的值大于等于零,则表示要保留的小数位数;若是负值,则表示整数部分四舍五入的位数。3)上取整函数 CEILING()4)下取整函数 FLOOR()第48页/共154页49练习:例1:?INT(123.45)123?INT(123.5)123例2:ROUND(123.435,2)=123.44 ROUND(123.5,0)=124 ROUND(125.5,-1)=130 ROUND(125.5,-2)=100例3:CEILING(25.67)=26 大于25.67的最小整数例4:FLOOR(25.67)=25 小于25.67的最大整数1.数值函数第49页/共154页50(2)求余数函数 格
25、式:MOD(,)功能:返回N1除以N2所得的余数,N2不能为零。求余运算也称为模运算,运算符为%。如:mod(5,2)=1 5%2=1 mod(5,3)=2 5%3=21.数值函数第50页/共154页51(3)求最大最小值 1)最大值函数格 式:MAX(,)功能:返回表达式中的最大值。2)最小值函数格 式:MIN(,)功能:返回表达式中的最小值。q表达式可为字符型、数值型、日期型和逻辑型等,但类型应相同。第51页/共154页522.字符函数(1)取子串 1)取子串函数 格式:SUBSTR(,)功能:从中取子串,指定子串的开始位置;指定子串的长度,若缺省则从指定的开始位置取到最后。(C:字符表达
26、式)2)取左子串函数 格式:LEFT(,)3)取右子串函数 格式:RIGHT(,)第52页/共154页53例:执 行 STORE“1999年 12月 庆 祝 澳 门 回 归 祖 国!”TO XY命令之后,要在屏幕上显示“澳门1999年12月回归祖国!”,应使用命令 A.?SUBSTR(XY,15,4)+SUBSTR(XY,1,10)+SUBSTR(XY,10)B.?SUBSTR(XY,15,4)+LEFT(XY,1,10)+RIGHT(XY,19)C.?SUBSTR(XY,15,4)+LEFT(XY,10)+RIGHT(XY,10)D.?SUBSTR(XY,15,4)+LEFT(XY,10)+
27、RIGHT(XY,19,10)SUBSTR(XY,15,4)澳门LEFT(XY,10)1999年12月RIGHT(XY,10)回归祖国!2.字符函数第53页/共154页54(2)查找子串函数 AT(,)功能:在中查找第次出现的位置。若找到,返回该位置;若找不到,函数值为0。函数值的类型为数值型。若缺省次数,则默认返回第一次出现的位置。例:执行命令?AT(“中心”,“国家教委考试中心”)的显示值是 A)0 B)12 C)13 D)162.字符函数第54页/共154页55(4)查找替换函数 1)STUFF(,)功能:用C2替换C1的一个子串,子串由N1起始,长度为N2,若N2=0,则在C1中插入C
28、2;若C2 为空串,则在C1中删除由N1起长度为N2的子串。?stuff(“怪物史莱克”,5,6,“动画片”)怪物动画片?stuff(怪物史莱克,5,6,)怪物?stuff(怪物史莱克,5,0,动画片)怪物动画片史莱克2.字符函数第55页/共154页56(5)字符串匹配函数 LIKE(,)判断C1与C2对应位置的字符是否匹配 C1中可包含通配符*或?like(史莱克,怪物史莱克).F.?like(*史莱克,怪物史莱克).T.2.字符函数第56页/共154页57(6)空格串生成函数SPACE(expN)功能:返回由expN个空格构成的字符串。例:字符串长度函数LEN(SPACE(1+2)-SPA
29、CE(2)的值是 A)1 B)2 C)3 D)5(7)删除子串函数TRIM(expC)删除expC尾部空格形成的字符串;LTRIM(expC)删除expC首部空格形成的字符串;ALLTRIM(expC)删除expC首尾空格形成的字符串;2.字符函数第57页/共154页58例:1 1、查找19981998年以后出版的书名为数据结构或C C语言程序设计的图书。2 2、查询清华大学出版社1998199820022002年出版的图书。3 3、显示年龄是18-2018-20岁的性别为女的学生的学号、姓名。1 1、LEFTLEFT(ALLTRIM(ALLTRIM(出版日期),4 4)=“19981998”
30、.AND.AND.(书名=“数据结构”.OR.OR.书名=“C C语言程序设计”)2 2、出版社=“清华大学”.AND.AND.LEFT LEFT(ALLTRIM(ALLTRIM(出版日期),4 4)=“19981998”.AND.AND.LEFT LEFT(ALLTRIM(ALLTRIM(出版日期),4 4)=“20022002”)注:在我们使用的图书管理信息系统数据库中,图书表注:在我们使用的图书管理信息系统数据库中,图书表中出版日期字段为字符型,不是日期型。中出版日期字段为字符型,不是日期型。逻辑表达式结合字符函数P76第58页/共154页59(9)宏代换函数 格式:&.功能:取得字符型
31、变量的值。说明:宏代换的作用范围是从符号“&”开始,遇到圆点符“.”或空白为止。例:执行如下命令序列:STORE 100 TO YA STORE“A”TO N STORE“Y&N”TO M?&M 最后一条命令的显示值应是()。A)100 B)200 C)300 D)Y&M2.字符函数第59页/共154页60A?&M?Y&N?YA100STORE100TOYASTORE“A”TONSTORE“Y&N”TOM?&M第60页/共154页613.日期函数DATE()返回系统当前日期YEAR()返回年份值(N)MONTH()返回月份值(N)DAY()返回日期值(N)DOW()返回星期值(N)?date(
32、)主窗口显示:11/01/2007?month(2007/11/01)主窗口显示:11第61页/共154页623.日期函数任务:请在vf主窗口中显示:今天是:2007年11月22日命令如下:?“今天是:?year(date()?年?month(date()?月?day(date()?日注意?与?命令的不同之处第62页/共154页634.类型转换函数(1)数值型字符型转换函数 格式:STR(,)功能:STR函数是将数值型数据N1转换成字符型。是转换的长度,缺省时转换整个长度;是指定转换的小数位数,缺省时不转换小数位。str(1234.567,7,2)“1234.57“如果指定长度小于小数点左边的
33、数字位数,STR()返回一串星号,表示数值溢出。str(1234.567,3,2)“123”*“第63页/共154页644.类型转换函数(2)字符型数值型转换函数 格式:VAL()VAL函数是将字符型转换成数值型。转换部分是从第一个数字字符开始到非数字字符为止的数字串,小数位默认保留2位(四舍五入)。?val(11.278hk56)11.28?val(11.b78)11.00?val(123a.2ghr6)123.00?val(1b6.278hk56)1.00第64页/共154页65(3)日期型与字符型的转换函数 格式:CTOD()DTOC(,1)功能:CTOD函数是将字符型转换成日期型;DT
34、OC函数是将日期型转换成字符型,加参数1,则输出格式转换成年月日(年份4位)a=CTOD(09/23/2007)?a 输出:09/23/07 即 09/23/2007?DTOC(a,1)输出:20070923 即 20070923?DTOC(DATE()输出:09/23/07 即 09/23/2007 4.类型转换函数第65页/共154页66练习例:在下列表达式中,运算结果为字符串的是 A)“1234”-“43”B)“ABCD”+“XYZ”=“ABCDXYZ”C)DTOC(DATE()“04/05/97”D)CTOD(“04/05/97”)第66页/共154页67A A)“1234”-“43”
35、“123443”B)“ABCD”+“XYZ”=“ABCDXYZ”.T.C)DTOC(DATE()“04/05/97”.T.D)CTOD(“04/05/97”)04/05/97第67页/共154页685.表函数系统对记录的三个控制标志记录开始标志:位于第一个记录之前(先gotop,然后skip-1)。其值用函数BOF()进行测试。记录指针标志:指向当前记录。其值用函数RECNO()进行测试。记录结束标志:位于最后一个记录之后。其值用函数EOF()进行测试。记录指针可以理解为保存当前记录号的变量,它的初始值总是1,不可能为0或负数,最大值是表的记录总数+1。第68页/共154页69表文件首:指的是
36、第一条记录的前面位置-Begin of File-Begin of File(BOFBOF)表文件尾:指的是最后一条记录的后面位置End of File End of File(EOFEOF)表文件首表文件尾首记录尾记录第69页/共154页70刚打开表时记录指针的情况表中记录情况 BOF()的值RECNO()的值EOF()的值无记录.T.1.T.有记录.F.1.F.5.表函数第70页/共154页71 use use 学生学生?recno()?recno()skip-1skip-1?bof(),recno()?bof(),recno()go bottomgo bottom skip 1skip
37、1?eof(),recno()?eof(),recno()第71页/共154页726.测试函数?between(c,a,d).T.(即判断a=c=d)?between(10,5,9).F.(即判断5=10=9)判断参数1是否在参数2和3之间,三个参数类型必须一致,可为字符、数值、日期型X=3?iif(x0,1,-1)-1若x0为真,则返回1,否则返回-1.第72页/共154页73?与?命令?,从当前行的下一行第一列开始输出各个表达式的值?,从当前行当前列开始输出各个表达式的值第73页/共154页74?与?命令练习:?今天?是:?2007?年则在vf主窗口中显示:今天是:2007年第74页/共1
38、54页75数字输出时为什么前面有空白?当数字输出时,若位数不足十位,则系统会自动在数字前方补上空格显示,但不影响数值本身。a=1?aa=1111111111?aa=111111111?aa=111?a 第75页/共154页 4.3 Visual 4.3 Visual FoxPro FoxPro 语法结构第76页/共154页77 4.3 Visual Foxpro 4.3 Visual Foxpro 语法结构F程序文件F顺序结构F选择结构F循环结构第77页/共154页784.3.14.3.1程序文件的建立、编辑与运程序文件的建立、编辑与运行行1.1.程序的概念定义:在VFPVFP中,将能完成一定
39、功能的命令或语句序列称为程序。特点:程序可以以文件的形式保存到磁盘中,该文件称为程序文件,其扩展名为.PRG.PRG,可以对其编辑和运行。建立、编辑程序文件有两种方式:1.1.命令方式 2.2.菜单方式第78页/共154页792.2.程序文件的建立1.1.命令方式:MODIFY COMMAND MODIFY COMMAND 程序文件名若程序文件保存在当前盘当前路径下,则文件名前的盘符、路径可以缺省。在程序编辑窗口中可进行光标移动、删除、插入、剪切、复制和粘贴操作。2.2.菜单方式 打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再单击“新建文件”按钮;在“程序文件”编辑窗口,输入
40、程序,保存并命名即可。第79页/共154页802.2.程序文件的建立程序编辑窗口第80页/共154页813.3.程序文件的运行1.1.命令方式命令方式 在命令窗口中,输入如下命令,则程序文件被调用(即运行)。DO DO 程序文件名如:doaverage2.2.菜单方式菜单方式 以菜单方式调用程序文件,操作方法如下:(1(1)菜单“程序”“运行”。(2 2)在“运行”窗口,选择或输入要运行的程序文件名。3.3.图标方式 前提:程序编辑窗口打开状态下。第81页/共154页824.3.2顺序结构程序控制的基本结构有三种:顺序结构、选择结构和循环结构。1.顺序结构程序的执行是按其语句的排列先后顺序执行
41、,这也是最简单、最基本的程序控制结构。如:x=1y=2z=x+y?z第82页/共154页834.3.3选择结构选择结构是根据条件的测试结果执行不同的操作。选择结构:1.1.IFIF条件语句2.2.CASECASE多分支语句第83页/共154页841.IF条件语句(1)简单的条件语句格式:IFENDIF功能:执行该语句时,首先判断条件是否成立:当条件为真时,执行语句序列,然后执行ENDIF后面的语句;当条件为假时,直接执行ENDIF后面的语句。条件一般是一个逻辑表达式。IF和ENDIF必须配对使用,缺一不可!第84页/共154页851.IF条件语句(1)简单的条件语句如下例:A=8B=5IFAB
42、?A大于BENDIF?执行完毕语句组条件Y(.t.)N(.f.)开始结束?A大于B ABY(.t.)N(.f.)开始程序结束?执行完毕A=8B=5第85页/共154页861.IF条件语句(2)二择一条件语句格式:IFELSEENDIF功能:条件为真时,执行语句序列1;否则执行序列2。序列1和2不能都执行,执行任一序列后继续执行ENDIF后面的语句。条件一般是一个逻辑表达式。IF、ELSE和ENDIF必须配套使用,缺一不可!第86页/共154页871.IF条件语句(2)二择一条件语句如下例:A=8B=5IFAB?A大于BELSE?A小于或等于BENDIF?执行完毕第87页/共154页881.IF
43、条件语句(3)IF语句嵌套如下例:A=8B=5IFAB?A大于BELSEIFAB?A小于BELSE?A等于BENDIFENDIF注意:IF和ENDIF要成对出现嵌套层数不限采用缩格形式,以便区分层次第88页/共154页892.CASE多分支语句格式:DO CASEDO CASE CASECASE 1 CASE CASE 2 CASECASE n OTHERWISEOTHERWISE n+1 ENDCASEENDCASE注:DO CASEDO CASE和ENDCASEENDCASE必须配对使用。功能:依次判断各条件,当条件为真时执行对应的语句系列;当所有条件为假时,则执行OTHERWISE对应的
44、语句系列。Otherwise不再进行条件判断。第89页/共154页902.CASE多分支语句如下例:A=4B=5DOCASECASEAB?A大于BCASEA=B?A等于BOTHERWISE?A小于BENDCASE?A、B的大小判断完毕第90页/共154页914.3.4循环结构循环结构要注意的是要有控制条件的语句,以避免出现死循环现象。在VFP中有三种循环语句:DO WHILE ENDDOSCAN ENDSCANFOR ENDFOR第91页/共154页921.DOWHILE循环语句格式:DOWHILE ENDDO功能:当条件为真时,重复执行语句序列,直到条件为假时结束。第92页/共154页931
45、.DOWHILE循环语句如下例:S=0K=1DOWHILEK=100S=S+KK=K+1ENDDO?S此程序的功能及输出结果是什么?第93页/共154页941.DOWHILE循环语句EXIT和LOOPEXIT结束当前循环操作,跳到ENDDO后面继续执行。LOOP跳过LOOP后面的语句,结束本轮循环,直接回到循环起始语句DOWHILE,开始下一轮。注:EXIT和LOOP可以出现在循环体语句序列中的任意位置;在语句序列中,还可以出现IF语句或CASE语句或DOWHILE语句的嵌套。第94页/共154页951.DOWHILE循环语句如下例:S=0K=1DOWHILEK5EXITENDIFENDDO?
46、S此程序的功能及输出结果又是什么?第95页/共154页961.DOWHILE循环语句如下例:S=0K=1DOWHILE.T.S=S+KK=K+1IFK5EXITENDIFENDDO?S此程序的功能及输出结果又是什么?第96页/共154页971.DOWHILE循环语句如下例:S=0K=1DOWHILEK5LOOPENDIF?KENDDO?S此程序的功能及输出结果又是什么?第97页/共154页981.DOWHILE循环语句如下例:Step=2S=0K=1DOWHILEK=10S=S+KIFStep=1K=K+1ENDIFIFStep=2K=K+2ENDIFENDDO?S此程序的功能及输出结果又是什
47、么?第98页/共154页991.DOWHILE循环语句如下例:USE学生DOWHILE.NOT.EOF()DISPSKIPENDDO利用该循环实现对当前打开的表利用该循环实现对当前打开的表文件中的记录自上而下或自下而上文件中的记录自上而下或自下而上地逐条进行操作。地逐条进行操作。记录指针由记录指针由SKIPSKIP语句控制,循语句控制,循环结束的条件由函数环结束的条件由函数EOFEOF()或()或BOFBOF()控制。()控制。第99页/共154页1002.FOR循环语句格式:FOR循环变量=初值TO终值STEP步长ENDFOR|NEXT 说明:说明:循环变量为内存变量,不需要事先定义。循环变
48、量为内存变量,不需要事先定义。初值、终值、步长均为数值。初值、终值、步长均为数值。默认递增步长为默认递增步长为1 1。ENDFORENDFOR和和NEXTNEXT二者等价,二选一。二者等价,二选一。第100页/共154页1012.FOR循环语句S=0FORK=1TO100S=S+KENDFOR?SS=0K=1DOWHILEK=1S=S+KK=K-1ENDDO?S第102页/共154页1033.SCAN循环语句格式:SCAN 范围 FOR WHILE ENDSCAN 功能:对当前表在指定范围,满足条件的记录中自动进功能:对当前表在指定范围,满足条件的记录中自动进行自上而下逐个扫描,重复执行循环体
49、(语句序列)。行自上而下逐个扫描,重复执行循环体(语句序列)。说明:说明:SCANSCANSCANSCAN循环能自动移动指针循环能自动移动指针。用。用DO WHILEDO WHILEDO WHILEDO WHILE循环也循环也可以实现对表文件的逐个扫描操作,但需借助函数可以实现对表文件的逐个扫描操作,但需借助函数BOFBOFBOFBOF()()()()或或EOF()EOF()EOF()EOF()测试状态,用测试状态,用SKIPSKIPSKIPSKIP命令移动指针,不如命令移动指针,不如SCANSCANSCANSCAN循环方便。循环方便。第103页/共154页1043.SCAN循环语句【例】分别
50、统计学生表中男生和女生的人数。USE学生STORE0TOX,YSCANIF性别=男X=X+1ELSEY=Y+1ENDIFENDSCAN?男生人数,X,女生人数,YUSE第104页/共154页1053.SCAN循环语句【例】输出可以借阅的图书的书号、书名和出版社。USE图书?“书号书名出版社”SCANALLFOR可借阅否?书号,书名,出版社ENDSCAN第105页/共154页1064.3.4循环结构注意事项:(1)DOWHILE和ENDDO、FOR和ENDFOR、SCAN和ENDSCAN必须配对使用。(2)语句序列可以是任何VFP命令或语句,也可以是循环语句,即可以为多重循环。(3)循环变量应是