程序设计基础课件.ppt

上传人:本田雅阁 文档编号:2978713 上传时间:2019-06-17 格式:PPT 页数:155 大小:1.49MB
返回 下载 相关 举报
程序设计基础课件.ppt_第1页
第1页 / 共155页
程序设计基础课件.ppt_第2页
第2页 / 共155页
程序设计基础课件.ppt_第3页
第3页 / 共155页
程序设计基础课件.ppt_第4页
第4页 / 共155页
程序设计基础课件.ppt_第5页
第5页 / 共155页
点击查看更多>>
资源描述

《程序设计基础课件.ppt》由会员分享,可在线阅读,更多相关《程序设计基础课件.ppt(155页珍藏版)》请在三一文库上搜索。

1、第4章 VF程序设计基础,2,本 章 内 容,常量和变量 表达式与常用函数 VF语法结构 多模块程序设计,3,VF 6.0的工作方式,VF的工作方式分为: 1.菜单操作方式 2.命令交互方式 3.程序执行方式,4,4.1 常量与变量,通常,数据存入到常量、变量、数组中,而在VF系统环境下,数据还可以存入到字段、记录和对象中。 这些供数据存储的常量、变量、数组、字段、记录和对象称为数据存储容器。 根据数据在执行时其值是否改变,把数据划分为常量和变量两种。,5,命令行: R=5 C=3.14*R*R ?“圆面积是“,C 显示结果:圆面积是 78.50,结果显示在窗口工作区,在命令窗口内输入命令行,

2、4.1 常量与变量,6,常量是取值固定不变的数据。 VFP支持字符型、数值型、逻辑型、货币型、符号型、日期型和日期时间型常量。 1.数值型常量 如:15、-3.9、0.54 可使用科学计数法的形式书写,如5.32491016,4.1.1 常量,7,2.字符型常量 字符型常量用定界符括起来的字符串 定界符: “ ” 或 或 ,使用字符型常量必须加定界符,而且定界符必须成对出现。 空格串“ ”和空串“”的区别: 空格串“ “,串长0。4个空格,串长为4。 空串“,串长=0。 如果使用2对以上的定界符,内外定界符必须不同。 “ABCDEFGH “ ABCDEFGH,4.1.1 常量,8,4.1.1

3、常量,3.-4.日期、日期时间型常量 定界符是: 大括号 日期型常量的严格格式YYYY-MM-DD , 如 1949-10-01 日期型时间性的严格格式 YYYY-MM-DD hh:mm:ss a|p 如: 1949-10-01 02:10:45 p 非严格的格式是:MM/DD/YY、 MM/DD/YY HH:MM:SS,系统默认状态下只能使用严格格式的日期。,9,4.1.1 常量,5.逻辑型常量 逻辑型常量只有真和假两个值 真: .T. .t. .Y. .y. 假: .F. .f. .N. .n. 定界符:原点 .,10,4.1.1 常量,6.货币型常量 以货币符号$开头 在存储和计算时四舍

4、五入到四位小数 小数位不足就在尾部补零 没有科学记数法形式 例:在命令窗口中输入命令 ?$1.23456789,则在主窗口中显示: A)$1.23456789 B)$1.2456 C)1.2346 D)错误,11,4.1.1 常量,7.符号常量 一种特殊常量,仅限在程序中使用 定义格式:DEFINE 常量名 数值 如:#DEFINE pi 3.1415 在程序中可直接用符号常量名代替常量值 如:20*pi 等价于 20* 3.1415,12,例:常量3.14 $3.14 $3.14分别是什么数据类型? 答案:数值型N、货币型Y、字符型C。 例:在命令窗口中输入 ?12+3,则主窗口中显示: 答

5、案: 15 例:在命令窗口中输入 ?”12+3”,则主窗口中显示: A)15 B)“15” C)”12+3” D)12+3 答案:D。只要有字符型定界符则必然是字符型常量,输出时,定界符并不输出,只将定界符内数据原样输出。,练 习,13,例题:以下是合法常量的是 ,数据类型分别为 。 A)$1.23456 B)¥1.234 C)2007/04/07 D)07/04/07 E).T. F).N. G)$1.6e3 H)2007/04/07 答案:A是合法的货币型常量,其值为1.2346; B不是合法的常量; C不是合法的常量,因为缺少; D是合法的字符型常量; E是合法的字符型常量; F是合法的

6、逻辑型常量; G不是合法的常量; H是合法的常量,数值的除法。,14,变量是取值能被程序改变的数据,4.1.2 变 量,15,1.内存变量,(1)内存变量的概念 内存变量是内存中的一个存储区域,存放程序运行的中间结果或最终结果。 命名规则 以字母、汉字或下划线开头 长度最多为128 由字母、汉字、数字或下划线组成的字符串 不能与系统保留字冲突 注意:VF中变量名不区分大小写。,16,(2)内存变量的建立 = STORE TO , 如:w=“Visual FoxPro” y2=2008-01-16 store 90 to y1, y2 内存变量可被先后多次赋予不同类型的值。,1.内存变量, “=

7、“与“STORE“的区别 “=“一次只能给一个变量赋值; “STORE“可以给多个变量赋值,但赋的是同一个值。,17,(3)内存变量的显示 格式:DISPLAYLIST MEMORY LIKE TO PRINTER PROMPT /TO FILE 例如:显示内存变量。 A=12 STORE “123“ TO N1,N2 B=2003-01-01 DISP MEMO LIKE N* DISP MEMO,显示所有N开头的内存变量,分页显示全部内存变量,1.内存变量,18,2.字段变量,(1)字段变量的概念 隶属表文件。 确定表结构就包括了定义字段变量。 命名规则: 以字母或汉字开头,长度对于自由表

8、不超过10个字符,对于数据库表不超过128个字符,由字母、汉字、数字或下划线组成的字符串,如:职工号。不能与系统保留字(如:character)冲突。,19,(2)字段变量的类型 多达13种。 常用类型如:字符型C、数值型N、货币型Y、日期型D、逻辑型L、备注型M、通用型G。,2.字段变量,20,字段变量与内存变量,字段变量与内存变量的区别: 定义方式不同。 字段变量在建立表结构时定义;而内存变量使用赋值命令进行定义。 使用方式不同。 字段变量在使用前必须用命令(USE 表名)打开;内存变量定义后就可使用。 生存期不同。 字段变量驻留在外存;内存变量驻留在内存,随着VF关闭而被消除。,21,字

9、段变量与内存变量,建立内存变量时不必指定变量的类型。存放什么类型的数据,该变量就是什么类型。 字段变量与内存变量同名时,字段变量名优先级高于同名的内存变量。 如现同时有: 字段变量:部门号 内存变量:部门号 则在使用内存变量部门号时,需写成: M.部门号 或 M-部门号 ,以示区别。,22,数 组是一组按照一定顺序排列的内存变量,各个变量称为数组元素,元素之间有序。 数组中数组元素的数据类型可以互不相同 通过数组下标来引用数组元素 一维数组如下: 二维数组如下: 和内存变量不同,数组必须先定义后使用。,3.数 组,23,3.数 组,(1)数组的定义 定义一维数组或二维数组及其下标的下界 DEC

10、LEAR | DIMENSION (下标) 如: DIMENSION A(3) DIMENSION B(2,3) 数组下标的下界为1 下标可以是常量、变量、函数或表达式,用圆括号括起来 对于一维数组,下标是数组元素的个数,如(3)表示该数组中有3个元素; 对于二维数组,下标是数组的最大行号和最大列号,如(2,3)表示数组为2行3列。,24,3.数 组,(2)数组的赋值 数组元素的数据类型可以修改,系统默认的赋值为.F. 赋值方法同内存变量,使用 STORE 或 = 若用赋值命令赋值时未指明下标,则数组中的所有数组元素同时被赋予同一个值; 若指明下标,则给指定的数组元素赋值。 同一数组各元素的数

11、据类型可以不同。,A(4)=.T. &逻辑型,DIME A(6),store 1 to A(2) &数值型,A(4)=“K“ &字符型,1,“K“,.T.,25,(3)数组与表的数据传递 将当前记录传递到数组或内存变量中 use 借阅 Go 3 Scatter to temp 将数组或内存变量中的数据传递到当前记录中 use 借阅 copy structure to temptable use temptable append blank Gather from temp,3.数 组,&将当前记录值传送给数组temp,&将数组temp的值传送到新表temptable新增的空白记录中,26,内存

12、变量和数组的释放(清除),CLEAR ALL 或 CLEAR MEMORY 同时清除所有的内存变量、数组 RELEASE , RELEASE ALL LIKE/EXCEPT 清除指定的内存变量、数组,27,练习题:显示结果,a=5 ab=7 abc=7 b=9 release all like a? ?ab ?abc ?b release all like * ?b,28,系统变量是由VF系统提供的一组变量 用于控制外部设备(如打印机、鼠标等)、屏幕输出格式,或处理系统时间、剪贴板等内容的信息 系统内存变量是指以下划线 _ 开头的、由系统自动定义生成的变量。 如:_DIARYDATE 用于存储

13、系统当前日期 _CLIPTEXT表示接受文本并送入剪贴板。,4. 系统变量,29,小 结,目的要求: 了解常量、变量、数组的含义; 掌握常量的分类及每类常量的书写; 掌握变量的分类; 掌握内存变量的定义、赋值、显示、保存、释放; 掌握数组的定义、构成、使用。 重点:常量使用;变量的定义、使用;数组的定义、构成、使用。 难点:数据的正确书写;数组的理解。,30,4.2 表达式与常用函数,4.2.1表达式 由常量、变量、函数以及运算符连接起来的式子,形式为: 操作数1 运算符 操作数2 如:12+3 包括下面几种 数值表达式、字符表达式、日期表达式、关系表达式、逻辑表达式,31,1.数值表达式,数

14、值表达式 由算术运算符将数值类型的数据连接起来的式子,其运算结果仍为数值型数据。,其中,%为求余运算,*和为乘方运算,?(1/2-6/7)*20.56 ?(10+a2)/(1+b(c*d) ?16%3,32,所有运算符都不能省略 。 运算数和运算符要写在同一行。 同一级别的运算原则是从左到右计算,括号可以改变运算的顺序,即先括号内后括号外,多层括号则先内层后外层。 所有括号都是小括号。,1.数值表达式,33,2.字符表达式,字符表达式 由字符运算符将字符类型的数据连接起来的式子,其运算结果仍为字符型数据。 字符运算符包括+、- + 将前后两个字符串首尾连接 - 连接两个字符串,并将运算符左侧字

15、符串的尾部空格移到右侧字符串的尾部,34,2.字符表达式,例如: x=“Visual FoxPro ” y=系统开发 ?x+y ?x-y,35,3.日期表达式,日期表达式 由日期型数据参与运算的式子,其运算结果为日期型数据或数值型数据 运算符包括+、- 日期型数据N:表示指定日期前N天或后N天 日期型数据-日期型数据:表示两个日期相差天数 如:,2006-09-12 + 10= 2006-09-22 2006-09-12 - 10= 2006-09-02 2006-09-12 - 2006-09-03=9,36,3.日期表达式,练习题: 设职工数据表和按“工作日期”索引的索引文件已经打开,要把

16、记录指针定位到工作刚好满30天的职工,应当使用命令 A)GO B)SEEK DATE() 30 C)FIND DATE() 30 D)SEEK DATE()-30,37,D,练习题: 设职工数据表和按“工作日期”索引的索引文件已经打开,要把记录指针定位到工作刚好满30天的职工: 索引查找:seek 日期表达式:date()-30 当前日期30 工作日期(开始工作的那天),38,4.关系表达式,关系表达式 由关系运算符将相同类型的数据连接起来的式子,其运算结果为逻辑型数据. 如: 45!=56 .T. Month=month .F. abcbaa .T.,39,4.关系表达式,例: SET EX

17、ACT OFF STORE “奥运会” TO s1 STORE “奥运会 ” TO s2 ?s1=s2,s2=s1,s2= =s1 & .F. .T. .F. SET EXACT ON ?s1=s2,s2=s1,s2= =s1 & .T. .T. .F. “= =”是精确比较,两侧的字符串必须完全相同才为.T.。 OFF状态时,系统默认以右串为结束标志, “”右侧的字符串与左侧的字符串的前部内容相匹配即真。 ON状态时,要进行等长比较,先用空格补在短字符串右边,使左右两侧的字符串等长。,40,关系运算符是对同类数据比较,操作数可以是数值型、日期型、字符型和逻辑型。 数值型数据比较时,按数据的大

18、小比较。 字符串比较时,逐个比较每个字符的ASCII码大小。例如:“abc”“bc”结果为.F.。 日期型数据比较时,日期晚则大。 逻辑型数据比较时,真大于假。,4.关系表达式,41,子串包含测试 形式: 字符表达式1 $ 字符表达式2 功能:若前者是后者的子串,返回结果为真。 例: ?“鲁迅“$“鲁迅杂文“ ?“鲁迅全集“$“鲁迅杂文“ 运算符$ 和=仅适用于字符型数据。,4.关系表达式,42,5.逻辑表达式,逻辑表达式 由逻辑运算符将逻辑类型的数据连接起来的式子,其运算结果仍为逻辑型数据。,优先级从高到低为:非-与-或,43,5.逻辑表达式,字段有效性规则是逻辑表达式 如: 设置性别字段只

19、能是男或女 性别=男 OR 性别=女 设置成绩字段的值在0100之间 成绩=0 AND 成绩=100,44,5.逻辑表达式,例:假定字符串A=“123”,B=“234”。则下列表达式的运算结果为逻辑假的是()。 A).NOT.(A=B).OR.B$(“13579”) B).NOT.A$(“ABC”).AND.(AB) C).NOT.(AB) D).NOT.(A=B),注意,关系运算的优先级高于逻辑运算。 算术、字符、日期运算又均高于关系运算。,45,逻辑表达式的书写实例,1986年以前出生的男学生 (出生日期18 and 年龄=90 工龄大于30年,工资高于1500、低于1800元 (30为“

20、工龄”字段) 工龄30 and (工资1500 and 工资1800),46,练习:假定N、C、L分别为数值型、字符型、逻辑型内存变量。在下面的表达式中错误的表达式是 A)3*N B)C-“A” C)N=10.OR.L D)C10,5.逻辑表达式,47,D,关系运算优先级高于逻辑运算, 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 ”,48,4.2.2 常用函数,函数由函数名、参数和函数值三部分组成 函数的基本形式是:函数名() 如:date()

21、 ,len (asdfgh) 几点说明: (1)函数名后面是一对圆括号,圆括号内可以有参数,也可以没有参数。 (2)参数可以是常量,也可以是变量,但参数的数据类型是固定的。 (3)函数运算后会返回一个值,称为函数值。,49,4.2.2 常用函数,VFP提供了多达200余种的函数(系统函数),实现数据计算、类型转换和逻辑运算等特定功能。 按照函数的功能和返回值的类型分为: 数值函数 字符函数 日期函数 数据类型转换函数 表函数 测试函数,50,1.数值函数,(1)取整函数 1)截整函数 格式:INT() N:数值表达式 功能:返回的值的整数部分。 2)四舍五入取整函数 格式:ROUND(,) 功

22、能:对的值进行四舍五入。若的值大于等于零,则表示要保留的小数位数;若是负值,则表示整数部分四舍五入的位数。 3)上取整函数 CEILING() 4)下取整函数 FLOOR(),51,练习: 例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.数值函数,52,(2)求余

23、数函数 格式:MOD(,) 功能: 返回N1除以N2所得的余数,N2不能为零。 求余运算也称为模运算,运算符为%。 如: mod(5,2)=1 5%2 = 1 mod(5,3)=2 5%3=2,1.数值函数,53,(3)求最大最小值 1)最大值函数 格式:MAX(,) 功能:返回表达式中的最大值。 2)最小值函数 格式:MIN(,) 功能:返回表达式中的最小值。 表达式可为字符型、数值型、日期型和逻辑型等,但类型应相同。,54,2.字符函数,(1)取子串 1)取子串函数 格式:SUBSTR( , ,) 功能:从中取子串,指定子串的开始位置;指定子串的长度,若缺省则从指定的开始位置取到最后。(C

24、:字符表达式) 2)取左子串函数 格式:LEFT(,) 3)取右子串函数 格式:RIGHT(,),55,例:执行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)+RIGH

25、T(XY,19,10) SUBSTR(XY,15,4) 澳门 LEFT(XY,10) 1999年12月 RIGHT(XY,10) 回归祖国!,2.字符函数,56,(2)查找子串函数 AT(,) 功能:在中查找第次出现的位置。若找到,返回该位置;若找不到,函数值为0。函数值的类型为数值型。若缺省次数,则默认返回第一次出现的位置。 例:执行命令?AT(“中心”,“国家教委考试中心”)的显示值是 A)0 B)12 C)13 D)16,2.字符函数,57,(4)查找替换函数 1)STUFF(,) 功能:用C2替换C1的一个子串,子串由N1起始,长度为N2, 若N2=0,则在C1中插入C2; 若C2 为

26、空串,则在C1中删除由N1起长度为N2的子串。 ?stuff(“怪物史莱克”,5,6,“动画片”) 怪物动画片 ?stuff(“怪物史莱克“,5,6,“) 怪物 ?stuff(“怪物史莱克“,5,0,“动画片“) 怪物动画片史莱克,2.字符函数,58,(5)字符串匹配函数 LIKE(,) 判断C1与C2对应位置的字符是否匹配 C1中可包含通配符*或? ?like(“史莱克“,“怪物史莱克“) .F. ?like(“*史莱克“,“怪物史莱克“) .T.,2.字符函数,59,(6)空格串生成函数 SPACE(expN) 功能:返回由expN个空格构成的字符串。 例:字符串长度函数LEN(SPACE

27、(1+2)-SPACE(2)的值是 A)1 B)2 C)3 D)5 (7)删除子串函数 TRIM(expC) 删除expC尾部空格形成的字符串; LTRIM(expC)删除expC首部空格形成的字符串; ALLTRIM(expC)删除expC首尾空格形成的字符串;,2.字符函数,60,例:1、查找1998年以后出版的书名为数据结构或C语言程序设计的图书。 2、查询清华大学出版社19982002年出版的图书。 3、显示年龄是18-20岁的性别为女的学生的学号、姓名。 1、LEFT(ALLTRIM(出版日期),4)=“1998” .AND. (书名=“数据结构”.OR. 书名=“C语言程序设计”)

28、 2、出版社=“清华大学” .AND. LEFT(ALLTRIM(出版日期),4)=“1998” .AND. LEFT(ALLTRIM(出版日期),4)=“2002”) 注:在我们使用的图书管理信息系统数据库中,图书表中出版日期字段为字符型,不是日期型。,逻辑表达式 结合 字符函数 P76,61,(9)宏代换函数 格式:&. 功能:取得字符型变量的值。 说明:宏代换的作用范围是从符号“&”开始,遇到圆点符“.”或空白为止。 例:执行如下命令序列: STORE 100 TO YA STORE “A” TO N STORE “Y&N”TO M ? &M 最后一条命令的显示值应是()。 A)100

29、B)200 C)300 D)Y&M,2.字符函数,62,A,?&M ?Y&N ? YA 100,STORE 100 TO YA STORE “A” TO N STORE “Y&N”TO M ? &M,63,3.日期函数,DATE() 返回系统当前日期 YEAR() 返回年份值(N) MONTH() 返回月份值(N) DAY() 返回日期值(N) DOW() 返回星期值(N) ?date() 主窗口显示:11/01/2007 ?month(2007/11/01) 主窗口显示: 11,64,3.日期函数,任务:请在vf主窗口中显示: 今天是: 2007年11月22日 命令如下: ?“今天是:“ ?

30、year(date() ?“年“ ?month(date() ?“月“ ?day(date() ?“日“,注意?与?命令的不同之处,65,4.类型转换函数,(1)数值型字符型转换函数 格式:STR(,) 功能:STR函数是将数值型数据N1转换成字符型。 是转换的长度,缺省时转换整个长度; 是指定转换的小数位数,缺省时不转换小数位。 str(1234.567,7,2) “1234.57“ 如果指定长度小于小数点左边的数字位数,STR( ) 返回一串星号,表示数值溢出。 str(1234.567,3,2) “123”*“,66,4.类型转换函数,(2)字符型数值型转换函数 格式: VAL() VA

31、L函数是将字符型转换成数值型。 转换部分是从第一个数字字符开始到非数字字符为止的数字串,小数位默认保留2位(四舍五入)。 ?val(“11.278hk56“) 11.28 ?val(“11. b78“) 11.00 ?val(“123a.2ghr6“) 123.00 ?val(“1b6.278hk56“) 1.00,67,(3)日期型与字符型的转换函数 格式:CTOD() DTOC(,1) 功能:CTOD函数是将字符型转换成日期型; DTOC函数是将日期型转换成字符型,加参数1,则输出格式转换成年月日(年份4位) a=CTOD(“09/23/2007“) ?a 输出:09/23/07 即 09

32、/23/2007 ? DTOC(a,1) 输出:20070923 即 “20070923“ ?DTOC(DATE() 输出: 09/23/07 即“ 09/23/2007 “,4.类型转换函数,68,练 习,例:在下列表达式中,运算结果为字符串的是 A)“1234”-“43” B)“ABCD”+“XYZ”=“ABCDXYZ” C) DTOC(DATE()“04/05/97” D) CTOD(“04/05/97”),69,A,A)“1234”-“43” “123443” B)“ABCD”+“XYZ”=“ABCDXYZ” .T. C)DTOC(DATE()“04/05/97” .T. D) CTO

33、D(“04/05/97”) 04/05/97,70,5.表函数,系统对记录的三个控制标志 记录开始标志:位于第一个记录之前(先go top,然后 skip -1)。其值用函数BOF()进行测试。 记录指针标志:指向当前记录。其值用函数RECNO()进行测试。 记录结束标志:位于最后一个记录之后。其值用函数EOF()进行测试。 记录指针可以理解为保存当前记录号的变量,它的初始值总是1,不可能为0或负数,最大值是表的记录总数+1。,71,表文件首:指的是第一条记录的前面位置-Begin of File(BOF) 表文件尾:指的是最后一条记录的后面位置End of File (EOF),表文件首,表

34、文件尾,首记录,尾记录,72,刚打开表时记录指针的情况,5.表函数,73,use 学生 ?recno() skip -1 ?bof(), recno() go bottom skip 1 ?eof(),recno(),74,6.测试函数,?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.,75,?与?命令,? ,从当前行的下一行第一列开始输出各个表达式

35、的值 ? ,从当前行当前列开始输出各个表达式的值,76,?与?命令,练习:?“今天“ ? “是: “ ? “2007 “ ?“年“ 则在vf主窗口中显示: 今天是: 2007年,77,数字输出时为什么前面有空白?,当数字输出时,若位数不足十位,则系统会自动在数字前方补上空格显示,但不影响数值本身。 a=1 ?a a=1111111111 ?a a=111111111 ?a a=111 ?a,4.3 Visual FoxPro 语法结构,79,4.3 Visual Foxpro 语法结构,程序文件 顺序结构 选择结构 循环结构,80,4.3.1程序文件的建立、编辑与运行,1.程序的概念 定义:在

36、VFP中,将能完成一定功能的命令或语句序列称为程序。 特点:程序可以以文件的形式保存到磁盘中,该文件称为程序文件,其扩展名为.PRG,可以对其编辑和运行。 建立、编辑程序文件有两种方式: 1.命令方式 2.菜单方式,81,2.程序文件的建立,1.命令方式: MODIFY COMMAND 程序文件名 若程序文件保存在当前盘当前路径下,则文件名前的盘符、路径可以缺省。 在程序编辑窗口中可进行光标移动、删除、插入、剪切、复制和粘贴操作。 2.菜单方式 打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再单击“新建文件”按钮;在“程序文件”编辑窗口,输入程序,保存并命名即可。,82,2.程

37、序文件的建立,程序编辑窗口,83,3.程序文件的运行,1.命令方式 在命令窗口中,输入如下命令,则程序文件被调用(即运行)。 DO 程序文件名 如:do average 2.菜单方式 以菜单方式调用程序文件,操作方法如下: (1)菜单“程序” “运行” 。 (2)在“运行”窗口,选择或输入要运行的程序文件名。 3.图标方式 前提:程序编辑窗口打开状态下。,84,4.3.2 顺序结构,程序控制的基本结构有三种: 顺序结构、选择结构和循环结构。 1. 顺序结构 程序的执行是按其语句的排列先后顺序执行,这也是最简单、最基本的程序控制结构。 如: x=1 y=2 z=x+y ?z,85,4.3.3 选

38、择结构,选择结构是根据条件的测试结果执行不同的操作。 选择结构: 1.IF条件语句 2.CASE多分支语句,86,1. IF条件语句,(1)简单的条件语句 格式:IF ENDIF 功能:执行该语句时,首先判断条件是否成立: 当条件为真时,执行语句序列,然后执行ENDIF后面的语句; 当条件为假时,直接执行ENDIF后面的语句。 条件一般是一个逻辑表达式。 IF和ENDIF必须配对使用,缺一不可!,87,1. IF条件语句,(1)简单的条件语句 如下例: A=8 B=5 IF AB ? A大于B ENDIF ? 执行完毕,? A大于B,AB,Y(.t.),N(.f.),开始,程序结束,? 执行完

39、毕,A=8 B=5,88,1. IF条件语句,(2)二择一条件语句 格式:IF ELSE ENDIF 功能:条件为真时,执行语句序列1;否则执行序列 2。序列1和2不能都执行,执行任一序列后继续执行ENDIF后面的语句。 条件一般是一个逻辑表达式。 IF、ELSE和ENDIF必须配套使用,缺一不可!,89,1. IF条件语句,(2)二择一条件语句 如下例: A=8 B=5 IF AB ? A大于B ELSE ? A小于或等于B ENDIF ? 执行完毕,90,1. IF条件语句,(3)IF语句嵌套 如下例: A=8 B=5 IF AB ? A大于B ELSE IF AB ? A小于B ELSE

40、 ? A等于B ENDIF ENDIF,注意: IF和 ENDIF要成对出现 嵌套层数不限 采用缩格形式,以便区分层次,91,2. CASE多分支语句,格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE 注:DO CASE和ENDCASE必须配对使用。,功能:依次判断各条件,当条件为真时执行对应的语句系列;当所有条件为假时,则执行OTHERWISE对应的语句系列。Otherwise不再进行条件判断。,92,2. CASE多分支语句,如下例: A=4 B=5 DO CASE CASE AB ? A大于B CASE A=B ? A等于B OTHERWISE ?

41、 A小于B ENDCASE ? A、B的大小判断完毕,93,4.3.4 循环结构,循环结构要注意的是要有控制条件的语句,以避免出现死循环现象。 在VFP中有三种循环语句: DO WHILE ENDDO SCAN ENDSCAN FOR ENDFOR,94,1. DO WHILE循环语句,格式: DO WHILE ENDDO 功能: 当条件为真时,重复执行语句序列 ,直到条件为假时结束。,95,1. DO WHILE循环语句,如下例: S=0 K=1 DO WHILE K=100 S=S+K K=K+1 ENDDO ?S,此程序的功能及输出结果是什么?,96,1. DO WHILE循环语句,EX

42、IT 和LOOP EXIT 结束当前循环操作,跳到ENDDO后面继续执行。 LOOP 跳过LOOP后面的语句,结束本轮循环,直接回到循环起始语句DO WHILE,开始下一轮。 注:EXIT 和LOOP可以出现在循环体语句序列中的任意位置;在语句序列中,还可以出现IF语句或CASE语句或DO WHILE语句的嵌套。,97,1. DO WHILE循环语句,如下例: S=0 K=1 DO WHILE K5 EXIT ENDIF ENDDO ?S,此程序的功能及输出结果又是什么?,98,1. DO WHILE循环语句,如下例: S=0 K=1 DO WHILE .T. S=S+K K=K+1 IF K

43、5 EXIT ENDIF ENDDO ?S,此程序的功能及输出结果又是什么?,99,1. DO WHILE循环语句,如下例: S=0 K=1 DO WHILE K5 LOOP ENDIF ?K ENDDO ?S,此程序的功能及输出结果又是什么?,100,1. DO WHILE循环语句,如下例: Step=2 S=0 K=1 DO WHILE K=10 S=S+K IF Step=1 K=K+1 ENDIF IF Step=2 K=K+2 ENDIF ENDDO ?S,此程序的功能及输出结果又是什么?,101,1. DO WHILE循环语句,如下例: USE 学生 DO WHILE .NOT.

44、EOF( ) DISP SKIP ENDDO,利用该循环实现对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作。 记录指针由SKIP语句控制,循环结束的条件由函数EOF()或BOF()控制。,102,2. FOR循环语句,格式: FOR 循环变量=初值 TO 终值 STEP步长 ENDFOR | NEXT 说明: 循环变量为内存变量,不需要事先定义。 初值、终值、步长均为数值。 默认递增步长为1。 ENDFOR和NEXT二者等价,二选一。,103,2. FOR循环语句,S=0 FOR K=1 TO 100 S=S+K ENDFOR ?S,S=0 K=1 DO WHILE K=100 S

45、=S+K K=K+1 ENDDO ?S,注: FOR K=1 TO 100 等价于 FOR K=1 TO 100 STEP 1,104,2. FOR循环语句,S=0 FOR K=100 TO 1 STEP -1 S=S+K ENDFOR ?S,S=0 K=100 DO WHILE K=1 S=S+K K=K-1 ENDDO ?S,105,3. SCAN循环语句,格式: SCAN 范围 FOR WHILE ENDSCAN 功能:对当前表在指定范围,满足条件的记录中自动进行自上而下逐个扫描,重复执行循环体(语句序列)。 说明:SCAN循环能自动移动指针。用DO WHILE循环也可以实现对表文件的逐

46、个扫描操作,但需借助函数BOF()或EOF()测试状态,用SKIP命令移动指针,不如SCAN循环方便。,106,3. SCAN循环语句,【例】分别统计学生表中男生和女生的人数。 USE 学生 STORE 0 TO X,Y SCAN IF 性别=“男“ X=X+1 ELSE Y=Y+1 ENDIF ENDSCAN ?“男生人数“,X,“女生人数“,Y USE,107,3. SCAN循环语句,【例】输出可以借阅的图书的书号、书名和出版社。 USE 图书 ?“ 书号 书名 出版社” SCAN ALL FOR 可借阅否 ?书号,书名,出版社 ENDSCAN,108,4.3.4 循环结构,注意事项: (

47、1)DO WHILE和ENDDO、FOR和ENDFOR、 SCAN和ENDSCAN必须配对使用。 (2)语句序列可以是任何VFP命令或语句,也可以是循环语句,即可以为多重循环。 (3)循环变量应是数值型的内存变量或数组元素。 (4)EXIT和LOOP命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。,109,1.数据输入输出命令 2.注释命令 3.设置命令 4.清屏命令 5.程序结束命令,4.3.5 程序设计中的常用命令,110,1.数据输入输出命令 接收字符串命令 accept 数据输入命令 input 等待命令 wait 文本输出命令 定位输出命令 定位输入命令,4.3.5 程序设计中的常用命令,111,格式:ACCEPT TO 功能:将键盘输入的字符串赋给指定的内存变量。 执行该命令时,首先在主窗口显示提示信息,并暂停程序的执行,等待用户从键盘输入数据后继续执行程序。 用户只能输入字符型常量,不加定界符,以回车结束。 如: ACCEPT “请输入教师名:“ to xm ?“教师名:“,xm,(1)字符串接收语句 ACCEPT,112,格式:INPUT TO 功能:将键盘输

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1