400 likes | 611 Views
第 5 章 FoxPro 语言基础. 5.1 数据类型 5.2 常量与变量 5.3 运算符与表达式 5.4 数组 5.5 流程控制 5.6 过程与函数 5.7 实例. 第 5 章 FoxPro 语言基础. 本章将介绍 FoxPro 的程序设计部分,包括数据类型、函数、程序流程、过程和函数以及程序控制等。. 5.1 数据类型. ( 1 )字符型( Character ) ( 2 )日期型( Date ) ( 3 )日期时间型( DateTime ) ( 4 )数值型( Numeric )
E N D
第5章 FoxPro语言基础 • 5.1 数据类型 • 5.2 常量与变量 • 5.3 运算符与表达式 • 5.4 数组 • 5.5 流程控制 • 5.6 过程与函数 • 5.7 实例
第5章 FoxPro语言基础 • 本章将介绍FoxPro的程序设计部分,包括数据类型、函数、程序流程、过程和函数以及程序控制等。
5.1 数据类型 (1)字符型(Character) (2)日期型(Date) (3)日期时间型(DateTime) (4)数值型(Numeric) (5)逻辑型(Logical) (6)货币型(Currency)
5.2 常量与变量5.2.1 常量 (1)常量名。 (2)常量值。 • 【例5-1】使用命令定义圆周率nPI。 • 在命令窗口中依次输入如下代码: • # DEFINE nPI 3.1415926 • 5 + nPI • 3.1415926,实际运行的是5 + 3.1415926 • # UNDEF nPI • 3.1415926
5.2.2 变量 1. 内存变量 • 【例5-2】在命令窗口中用两种赋值法分别将var_Age赋值为13和28。 • 在命令窗口中输入以下代码: • var_Age=13 &&定义变量var_Arg,并用第一种方法赋值为13。 • ?var_Age &&显示var_Age的值。 • store 28 to var_Age &&用第二种方法赋值为28。 • ?var_Age
2. 字段变量 • 字段变量是一种只在数据库里出现的变量 • 如一个表中有字段“姓名”、“学号”、“性别”等,而“黎明”、“15”、“男”则是相应的字段值。 • 3. 系统变量 • 系统变量是指以字符“_”开头的,由FoxPro系统自动定义生成的变量。它的名称是系统已定义好的,如:_HTML
5.3 运算符与表达式 5.3.1 算术运算符与算术表达式 5.3.2 字符串运算符与字符串表达式 5.3.3 关系运算符与表达式 5.3.4 逻辑运算符与逻辑表达式
5.3 运算符与表达式 (1)算术运算符和算术表达式。 (2)字符串运算符和字符串表达式。 (3)日期运算符和日期表达式。 (4)关系运算符和关系表达式。 (5)逻辑运算符和逻辑表达式。
5.3.1 算术运算符与算术表达式 表5-2 算术运算符
5.3.2 字符串运算符与字符串表达式 表5-3 字符串运算符
5.3.3 关系运算符与表达式 表5-4 关系运算符
5.3.4 逻辑运算符与逻辑表达式 表5-5 逻辑运算符
5.4 数组 数组变量是FoxPro中的特殊的内存变量,它是名字相同而下标不同的一组有序变量,其中的每个有序变量构成数组的成员,称为数组元素。 【例5-7】创建一个4行5列的数组,并为数组的第1行第2列元素赋值。 在命令窗口中输入代码如下: DIMENSION ArrayName[4,5] ArrayName[1,2]=3 ?ArrayName[1,2]
5.5 流程控制 • 5.5.1 条件语句 • 5.5.2 分支语句 • 5.5.3 循环语句
5.5.1 条件语句 条件结构如图5-14所示 图5-14
Visual FoxPro条件选择语句由if…else…endif关键字构成,其语法结构及格式如下: IF 逻辑表达式 程序体1 [ ELSE 程序体2 ] ENDIF
5.5.2 分支语句 FoxPro分支选择语句主要由do…case…endcase关键字构成。 其语法结构及格式如下: DO CASE CASE 逻辑表达式1 程序体 [ CASE 逻辑表达式2 程序体 … CASE 逻辑表达式N 程序体 ] [ OTHERWISE 程序体 ] ENDCASE
分支语句的执行过程 图5-21
5.5.3 循环语句 1. 循环语句的设计思想 循环结构如图5-23 所示。当条件p 成立时,反复执行A 操作直到条件p 不成立为止。 图5-23
2. for…endfor语句 语法结构及格式如下: FOR 内存变量 = 初值 TO 终值[STEP步长] 程序体 [ LOOP ] [ EXIT ] ENDFOR | NEXT
【例5-11】求10的阶乘 建立程序“程序1”,在“程序1”中输入如下代码: CLEAR I = 1 Result = 1 DO WHILE I<=10 && 保证10是最大的界限。 Result = Result * I && 计算从1乘到I的乘积。 ? ″ 当 I 为″ , I , ″时,乘得的值是:″ , Result I = I+1 && 循环结束。 ENDDO ? && 空一行。 ? ″所以从1乘到10所得的值是″,Result RETURN
图5-24 图5-25
5.6 过程与函数 • 5.6.1 常用函数 • 5.6.2 过程和自定义函数
5.6.1 常用函数 1. 子串函数SUBSTR() 2. 删除空格函数ALLTRIM() 3. 取整函数INT() 4. 四舍五入函数ROUND() 5. 数值转数字字符串函数STR() 6. 字符转数值函数VAL() 7. 字符转日期函数CTOD() 8. 测试文件尾函数EOF() 9. 测试文件头函数BOF() 10. 测试当前记录号函数RECNO()
1. 子串函数SUBSTR() 函数SUBSTR()的功能是从字符串表达式或者备注型字段中截取指定的字符个数。在命令窗口中输入如下代码: stor ″2001-11-15″ to crq ?SUBSTR(crq,1,4)
2. 删除空格函数ALLTRIM() 函数ALLTRIM()的功能是删除字符表达式的值前后的空格。在命令窗口中输入如下代码: stor″ 2001-11-15 ″ to crq ?ALLTRIM(crq)
3. 取整函数INT() 函数INT()的功能是取指定数值表达式计算结果的整数部分。在命令窗口中输入如下代码: ?INT(-198.21)
4. 四舍五入函数ROUND() 函数ROUND()的功能是按给定的四舍五入小数位数,对数值表达式的计算结果作四舍五入的处理。 在命令窗口中输入如下代码: ?ROUND(192.5637,3)
5. 数值转数字字符串函数STR() 函数STR()的功能是将数值转换为字符串。在命令窗口中输入如下代码: ?STR(198.5633)
6. 字符转数值函数VAL() 函数VAL()的功能是将字符数据转换为数值型数据。在命令窗口中输入如下代码: ?VAL(″2001″)
7. 字符转日期函数CTOD() 函数CTOD()的功能是将字符表达式中字符型日期转换为日期型数据。在命令窗口中输入如下代码: set date ansi ?ctod(″1999.10.30″)
8. 测试文件尾函数EOF() 函数EOF()的功能是测试由区号或者表别名指定文件中的记录指针是否指向文件尾。如果是则返回真值,否则返回假值。在命令窗口中输入如下代码: Use d:\vfp\职工表 GO bott Skip ?EOF()
9. 测试文件头函数BOF() 函数BOF()的功能是测试由区号或者表别名指定文件记录指针是否指向文件头。如果是则返回真值,否则返回假值。在命令窗口中输入代码: Use d:\vfp\职工表 GO 1 Skip -1 ?BOF()
10. 测试当前记录号函数RECNO() 函数RECNO()的功能是测试由区号或表别名指定文件中的记录指针的记录号。在命令窗口中输入代码: Use d:\vfp\职工表 GO 5 ?RECNO()
5.6.2 过程和自定义函数 1. 创建过程和函数 可以使用procedure…endproc命令定义过程。 基本语法结构及格式如下: PROCEFURE 过程名 过程体 [RETURN [表达式]] ENDPROC
2. 调用过程和函数 以下是函数调用的几种方式。 (1)作为表达式的一部分:vartype(myfunc())。 (2)以过程方式调用:DO myfunc。 (3)作为命令使用:myfunc() 或=myfunc()。 例如过程MyProc存放在文件 Func_Proc.PRG中,调用它们的命令语句是: SET PROCEDURE TO Func_Proc.prg DO MyProc
3. 使用参数 很多时候程序需要向过程或函数传递值来解决问题,这时就要使用参数。Visual FoxPro的过程使用小括号“()”或者命令 LPARAMETERS引进参数。 格式: PROCEDURE 过程名 [(参数列表)] [LPARAMETER 参数列表] 代码段 ENDPROC
5.7 实例 (1)加解密字符串。 (2)如果有人非法修改密码,将提示非法修改。
小结 • 要建立数据库应用程序,就要进行程序设计,本章主要介绍如何在FoxPro中进行程序设计。内容包括FoxPro中使用的数据类型和文件类型以及程序设计的常量、变量和表达式。这些知识是设计数据库应用程序的基础,只有了解并掌握这些基础知识,才能进一步学习程序设计中的选择结构和循环结构及过程与函数。 • 通过本章的学习,可以看出程序设计在数据库中的使用,它与其他程序设计语言有一定的差距,FoxPro中的程序设计简单、易用且功能强大,结合SQL语言结构化查询语言一起使用,可以很方便地创建功能强大的数据库应用程序。