




已阅读5页,还剩150页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章VF程序设计基础 2 本章内容 常量和变量表达式与常用函数VF语法结构多模块程序设计 3 VF6 0的工作方式 VF的工作方式分为 1 菜单操作方式2 命令交互方式3 程序执行方式 4 4 1常量与变量 通常 数据存入到常量 变量 数组中 而在VF系统环境下 数据还可以存入到字段 记录和对象中 这些供数据存储的常量 变量 数组 字段 记录和对象称为数据存储容器 根据数据在执行时其值是否改变 把数据划分为常量和变量两种 5 命令行 R 5C 3 14 R R 圆面积是 C显示结果 圆面积是78 50 结果显示在窗口工作区 在命令窗口内输入命令行 4 1常量与变量 6 常量是取值固定不变的数据 VFP支持字符型 数值型 逻辑型 货币型 符号型 日期型和日期时间型常量 1 数值型常量如 15 3 9 0 54可使用科学计数法的形式书写 如5 3249 1016 4 1 1常量 7 2 字符型常量字符型常量 用定界符括起来的字符串定界符 或 或 使用字符型常量必须加定界符 而且定界符必须成对出现 空格串 和空串 的区别 空格串 串长 0 4个空格 串长为4 空串 串长 0 如果使用2对以上的定界符 内外定界符必须不同 ABC DEF GH ABC DEF GH 4 1 1常量 8 4 1 1常量 3 4 日期 日期时间型常量定界符是 大括号 日期型常量的严格格式 YYYY MM DD 如 1949 10 01 日期型时间性的严格格式 YYYY MM DD hh mm ss a p 如 1949 10 0102 10 45p 非严格的格式是 MM DD YY MM DD YYHH MM SS 系统默认状态下只能使用严格格式的日期 9 4 1 1常量 5 逻辑型常量逻辑型常量只有真和假两个值真 T t Y y 假 F f N n 定界符 原点 10 4 1 1常量 6 货币型常量以货币符号 开头在存储和计算时四舍五入到四位小数小数位不足就在尾部补零没有科学记数法形式例 在命令窗口中输入命令 1 23456789 则在主窗口中显示 A 1 23456789B 1 2456C 1 2346D 错误 11 4 1 1常量 7 符号常量一种特殊常量 仅限在程序中使用定义格式 DEFINE常量名数值如 DEFINEpi3 1415在程序中可直接用符号常量名代替常量值如 20 pi等价于20 3 1415 12 例 常量3 14 3 14 3 14 分别是什么数据类型 答案 数值型N 货币型Y 字符型C 例 在命令窗口中输入 12 3 则主窗口中显示 答案 15例 在命令窗口中输入 12 3 则主窗口中显示 A 15B 15 C 12 3 D 12 3答案 D 只要有字符型定界符则必然是字符型常量 输出时 定界符并不输出 只将定界符内数据原样输出 练习 13 例题 以下是合法常量的是 数据类型分别为 A 1 23456B 1 234C 2007 04 07 D 07 04 07 E T F N G 1 6e3H 2007 04 07答案 A是合法的货币型常量 其值为1 2346 B不是合法的常量 C不是合法的常量 因为缺少 D是合法的字符型常量 E是合法的字符型常量 F是合法的逻辑型常量 G不是合法的常量 H是合法的常量 数值的除法 14 变量是取值能被程序改变的数据 4 1 2变量 15 1 内存变量 1 内存变量的概念内存变量是内存中的一个存储区域 存放程序运行的中间结果或最终结果 命名规则以字母 汉字或下划线开头长度最多为128由字母 汉字 数字或下划线组成的字符串不能与系统保留字冲突注意 VF中变量名不区分大小写 16 2 内存变量的建立 STORETO 如 w VisualFoxPro y2 2008 01 16 store90toy1 y2 内存变量可被先后多次赋予不同类型的值 1 内存变量 与 STORE 的区别 一次只能给一个变量赋值 STORE 可以给多个变量赋值 但赋的是同一个值 17 3 内存变量的显示格式 DISPLAY LISTMEMORY LIKE TOPRINTER PROMPT TOFILE 例如 显示内存变量 A 12STORE 123 TON1 N2B 2003 01 01 DISPMEMOLIKEN DISPMEMO 显示所有N开头的内存变量 分页显示全部内存变量 1 内存变量 18 2 字段变量 1 字段变量的概念隶属表文件 确定表结构就包括了定义字段变量 命名规则 以字母或汉字开头 长度对于自由表不超过10个字符 对于数据库表不超过128个字符 由字母 汉字 数字或下划线组成的字符串 如 职工号 不能与系统保留字 如 character 冲突 19 2 字段变量的类型多达13种 常用类型如 字符型C 数值型N 货币型Y 日期型D 逻辑型L 备注型M 通用型G 2 字段变量 20 字段变量与内存变量 字段变量与内存变量的区别 定义方式不同 字段变量在建立表结构时定义 而内存变量使用赋值命令进行定义 使用方式不同 字段变量在使用前必须用命令 USE表名 打开 内存变量定义后就可使用 生存期不同 字段变量驻留在外存 内存变量驻留在内存 随着VF关闭而被消除 21 字段变量与内存变量 建立内存变量时不必指定变量的类型 存放什么类型的数据 该变量就是什么类型 字段变量与内存变量同名时 字段变量名优先级高于同名的内存变量 如现同时有 字段变量 部门号内存变量 部门号则在使用内存变量部门号时 需写成 M 部门号或M 部门号 以示区别 22 数组是一组按照一定顺序排列的内存变量 各个变量称为数组元素 元素之间有序 数组中数组元素的数据类型可以互不相同通过数组下标来引用数组元素一维数组如下 二维数组如下 和内存变量不同 数组必须先定义后使用 3 数组 23 3 数组 1 数组的定义定义一维数组或二维数组及其下标的下界DECLEAR DIMENSION 下标 如 DIMENSIONA 3 DIMENSIONB 2 3 数组下标的下界为1下标可以是常量 变量 函数或表达式 用圆括号括起来对于一维数组 下标是数组元素的个数 如 3 表示该数组中有3个元素 对于二维数组 下标是数组的最大行号和最大列号 如 2 3 表示数组为2行3列 24 3 数组 2 数组的赋值数组元素的数据类型可以修改 系统默认的赋值为 F 赋值方法同内存变量 使用STORE或 若用赋值命令赋值时未指明下标 则数组中的所有数组元素同时被赋予同一个值 若指明下标 则给指定的数组元素赋值 同一数组各元素的数据类型可以不同 A 4 T 逻辑型 DIMEA 6 store1toA 2 数值型 A 4 K 字符型 1 K T 25 3 数组与表的数据传递将当前记录传递到数组或内存变量中use借阅Go3Scattertotemp将数组或内存变量中的数据传递到当前记录中use借阅copystructuretotemptableusetemptableappendblankGatherfromtemp 3 数组 将当前记录值传送给数组temp 将数组temp的值传送到新表temptable新增的空白记录中 26 内存变量和数组的释放 清除 CLEARALL或CLEARMEMORY同时清除所有的内存变量 数组RELEASE RELEASEALL LIKE EXCEPT 清除指定的内存变量 数组 27 练习题 显示结果 a 5ab 7abc 7b 9releasealllikea ab abc breleasealllike b 28 系统变量是由VF系统提供的一组变量用于控制外部设备 如打印机 鼠标等 屏幕输出格式 或处理系统时间 剪贴板等内容的信息系统内存变量是指以下划线 开头的 由系统自动定义生成的变量 如 DIARYDATE用于存储系统当前日期 CLIPTEXT表示接受文本并送入剪贴板 4 系统变量 29 小结 目的要求 了解常量 变量 数组的含义 掌握常量的分类及每类常量的书写 掌握变量的分类 掌握内存变量的定义 赋值 显示 保存 释放 掌握数组的定义 构成 使用 重点 常量使用 变量的定义 使用 数组的定义 构成 使用 难点 数据的正确书写 数组的理解 30 4 2表达式与常用函数 4 2 1表达式由常量 变量 函数以及运算符连接起来的式子 形式为 操作数1运算符操作数2如 12 3包括下面几种数值表达式 字符表达式 日期表达式 关系表达式 逻辑表达式 31 1 数值表达式 数值表达式由算术运算符将数值类型的数据连接起来的式子 其运算结果仍为数值型数据 其中 为求余运算 和 为乘方运算 1 2 6 7 20 56 10 a 2 1 b c d 16 3 32 所有运算符都不能省略 运算数和运算符要写在同一行 同一级别的运算原则是从左到右计算 括号可以改变运算的顺序 即先括号内后括号外 多层括号则先内层后外层 所有括号都是小括号 1 数值表达式 33 2 字符表达式 字符表达式由字符运算符将字符类型的数据连接起来的式子 其运算结果仍为字符型数据 字符运算符包括 将前后两个字符串首尾连接 连接两个字符串 并将运算符左侧字符串的尾部空格移到右侧字符串的尾部 34 2 字符表达式 例如 x VisualFoxPro 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 日期表达式 练习题 设职工数据表和按 工作日期 索引的索引文件已经打开 要把记录指针定位到工作刚好满30天的职工 应当使用命令A GOB SEEKDATE 30C FINDDATE 30D SEEKDATE 30 37 D 练习题 设职工数据表和按 工作日期 索引的索引文件已经打开 要把记录指针定位到工作刚好满30天的职工 索引查找 seek日期表达式 date 30当前日期 30 工作日期 开始工作的那天 38 4 关系表达式 关系表达式由关系运算符将相同类型的数据连接起来的式子 其运算结果为逻辑型数据 如 45 56 T Month month F abc baa T 39 4 关系表达式 例 SETEXACTOFFSTORE 奥运会 TOs1STORE 奥运会 TOs2 s1 s2 s2 s1 s2 s1 F T F SETEXACTON s1 s2 s2 s1 s2 s1 T T F 是精确比较 两侧的字符串必须完全相同才为 T OFF状态时 系统默认以右串为结束标志 右侧的字符串与左侧的字符串的前部内容相匹配即真 ON状态时 要进行等长比较 先用空格补在短字符串右边 使左右两侧的字符串等长 40 关系运算符是对同类数据比较 操作数可以是数值型 日期型 字符型和逻辑型 数值型数据比较时 按数据的大小比较 字符串比较时 逐个比较每个字符的ASCII码大小 例如 abc bc 结果为 F 日期型数据比较时 日期晚则大 逻辑型数据比较时 真大于假 4 关系表达式 41 子串包含测试形式 字符表达式1 字符表达式2功能 若前者是后者的子串 返回结果为真 例 鲁迅 鲁迅杂文 鲁迅全集 鲁迅杂文 运算符 和 仅适用于字符型数据 4 关系表达式 42 5 逻辑表达式 逻辑表达式由逻辑运算符将逻辑类型的数据连接起来的式子 其运算结果仍为逻辑型数据 优先级从高到低为 非 与 或 43 5 逻辑表达式 字段有效性规则是逻辑表达式如 设置性别字段只能是男或女性别 男 OR性别 女 设置成绩字段的值在0 100之间成绩 0AND成绩 100 44 5 逻辑表达式 例 假定字符串A 123 B 234 则下列表达式的运算结果为逻辑假的是 A NOT A B OR B 13579 B NOT A ABC AND A B C NOT A B D NOT A B 注意 关系运算的优先级高于逻辑运算 算术 字符 日期运算又均高于关系运算 45 逻辑表达式的书写实例 1986年以前出生的男学生 出生日期18and年龄 90工龄大于30年 工资高于1500 低于1800元 30为 工龄 字段 工龄 30and 工资 1500and工资 1800 46 练习 假定N C L分别为数值型 字符型 逻辑型内存变量 在下面的表达式中错误的表达式是A 3 NB C A C N 10 OR LD C 10 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 len asdfgh 几点说明 1 函数名后面是一对圆括号 圆括号内可以有参数 也可以没有参数 2 参数可以是常量 也可以是变量 但参数的数据类型是固定的 3 函数运算后会返回一个值 称为函数值 49 4 2 2常用函数 VFP提供了多达200余种的函数 系统函数 实现数据计算 类型转换和逻辑运算等特定功能 按照函数的功能和返回值的类型分为 数值函数字符函数日期函数数据类型转换函数表函数测试函数 50 1 数值函数 1 取整函数1 截整函数格式 INT N 数值表达式功能 返回的值的整数部分 2 四舍五入取整函数格式 ROUND 功能 对的值进行四舍五入 若的值大于等于零 则表示要保留的小数位数 若是负值 则表示整数部分四舍五入的位数 3 上取整函数CEILING 4 下取整函数FLOOR 51 练习 例1 INT 123 45 123 INT 123 5 123例2 ROUND 123 435 2 123 44ROUND 123 5 0 124ROUND 125 5 1 130ROUND 125 5 2 100例3 CEILING 25 67 26大于25 67的最小整数例4 FLOOR 25 67 25小于25 67的最大整数 1 数值函数 52 2 求余数函数格式 MOD 功能 返回N1除以N2所得的余数 N2不能为零 求余运算也称为模运算 运算符为 如 mod 5 2 15 2 1mod 5 3 25 3 2 1 数值函数 53 3 求最大最小值1 最大值函数格式 MAX 功能 返回表达式中的最大值 2 最小值函数格式 MIN 功能 返回表达式中的最小值 表达式可为字符型 数值型 日期型和逻辑型等 但类型应相同 54 2 字符函数 1 取子串1 取子串函数格式 SUBSTR 功能 从中取子串 指定子串的开始位置 指定子串的长度 若缺省则从指定的开始位置取到最后 C 字符表达式 2 取左子串函数格式 LEFT 3 取右子串函数格式 RIGHT 55 例 执行STORE 1999年12月庆祝澳门回归祖国 TOXY命令之后 要在屏幕上显示 澳门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 RIGHT XY 19 10 SUBSTR XY 15 4 澳门LEFT XY 10 1999年12月RIGHT XY 10 回归祖国 2 字符函数 56 2 查找子串函数AT 功能 在中查找第次出现的位置 若找到 返回该位置 若找不到 函数值为0 函数值的类型为数值型 若缺省次数 则默认返回第一次出现的位置 例 执行命令 AT 中心 国家教委考试中心 的显示值是A 0B 12C 13D 16 2 字符函数 57 4 查找替换函数1 STUFF 功能 用C2替换C1的一个子串 子串由N1起始 长度为N2 若N2 0 则在C1中插入C2 若C2为空串 则在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 1 2 SPACE 2 的值是A 1B 2C 3D 5 7 删除子串函数TRIM expC 删除expC尾部空格形成的字符串 LTRIM expC 删除expC首部空格形成的字符串 ALLTRIM expC 删除expC首尾空格形成的字符串 2 字符函数 60 例 1 查找1998年以后出版的书名为 数据结构 或 C语言程序设计 的图书 2 查询清华大学出版社1998 2002年出版的图书 3 显示年龄是18 20岁的性别为女的学生的学号 姓名 1 LEFT ALLTRIM 出版日期 4 1998 AND 书名 数据结构 OR 书名 C语言程序设计 2 出版社 清华大学 AND LEFT ALLTRIM 出版日期 4 1998 AND LEFT ALLTRIM 出版日期 4 2002 注 在我们使用的图书管理信息系统数据库中 图书表中出版日期字段为字符型 不是日期型 逻辑表达式结合字符函数P76 61 9 宏代换函数格式 功能 取得字符型变量的值 说明 宏代换的作用范围是从符号 开始 遇到圆点符 或空白为止 例 执行如下命令序列 STORE100TOYASTORE A TONSTORE Y N TOM M最后一条命令的显示值应是 A 100B 200C 300D Y M 2 字符函数 62 A M Y N YA100 STORE100TOYASTORE A TONSTORE Y N TOM 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日命令如下 今天是 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 VAL函数是将字符型转换成数值型 转换部分是从第一个数字字符开始到非数字字符为止的数字串 小数位默认保留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 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 CTOD 04 05 97 04 05 97 70 5 表函数 系统对记录的三个控制标志记录开始标志 位于第一个记录之前 先gotop 然后skip 1 其值用函数BOF 进行测试 记录指针标志 指向当前记录 其值用函数RECNO 进行测试 记录结束标志 位于最后一个记录之后 其值用函数EOF 进行测试 记录指针可以理解为保存当前记录号的变量 它的初始值总是1 不可能为0或负数 最大值是表的记录总数 1 71 表文件首 指的是第一条记录的前面位置 BeginofFile BOF 表文件尾 指的是最后一条记录的后面位置 EndofFile EOF 表文件首 表文件尾 首记录 尾记录 72 刚打开表时记录指针的情况 5 表函数 73 use学生 recno skip 1 bof recno gobottomskip1 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 x 0 1 1 1若x 0为真 则返回1 否则返回 1 75 与 命令 从当前行的下一行第一列开始输出各个表达式的值 从当前行当前列开始输出各个表达式的值 76 与 命令 练习 今天 是 2007 年 则在vf主窗口中显示 今天是 2007年 77 数字输出时为什么前面有空白 当数字输出时 若位数不足十位 则系统会自动在数字前方补上空格显示 但不影响数值本身 a 1 aa 1111111111 aa 111111111 aa 111 a 4 3VisualFoxPro语法结构 79 4 3VisualFoxpro语法结构 程序文件顺序结构选择结构循环结构 80 4 3 1程序文件的建立 编辑与运行 1 程序的概念定义 在VFP中 将能完成一定功能的命令或语句序列称为程序 特点 程序可以以文件的形式保存到磁盘中 该文件称为程序文件 其扩展名为 PRG 可以对其编辑和运行 建立 编辑程序文件有两种方式 1 命令方式2 菜单方式 81 2 程序文件的建立 1 命令方式 MODIFYCOMMAND 程序文件名 若程序文件保存在当前盘当前路径下 则文件名前的盘符 路径可以缺省 在程序编辑窗口中可进行光标移动 删除 插入 剪切 复制和粘贴操作 2 菜单方式打开 文件 菜单 选择 新建 在 新建 窗口 选择 程序 再单击 新建文件 按钮 在 程序文件 编辑窗口 输入程序 保存并命名即可 82 2 程序文件的建立 程序编辑窗口 83 3 程序文件的运行 1 命令方式在命令窗口中 输入如下命令 则程序文件被调用 即运行 DO 程序文件名 如 doaverage2 菜单方式以菜单方式调用程序文件 操作方法如下 1 菜单 程序 运行 2 在 运行 窗口 选择或输入要运行的程序文件名 3 图标方式前提 程序编辑窗口打开状态下 84 4 3 2顺序结构 程序控制的基本结构有三种 顺序结构 选择结构和循环结构 1 顺序结构程序的执行是按其语句的排列先后顺序执行 这也是最简单 最基本的程序控制结构 如 x 1y 2z x y z 85 4 3 3选择结构 选择结构是根据条件的测试结果执行不同的操作 选择结构 1 IF条件语句2 CASE多分支语句 86 1 IF条件语句 1 简单的条件语句格式 IFENDIF功能 执行该语句时 首先判断条件是否成立 当条件为真时 执行语句序列 然后执行ENDIF后面的语句 当条件为假时 直接执行ENDIF后面的语句 条件一般是一个逻辑表达式 IF和ENDIF必须配对使用 缺一不可 87 1 IF条件语句 1 简单的条件语句如下例 A 8B 5IFA B A大于B ENDIF 执行完毕 A大于B A B Y t N f 开始 程序结束 执行完毕 A 8B 5 88 1 IF条件语句 2 二择一条件语句格式 IFELSEENDIF功能 条件为真时 执行语句序列1 否则执行序列2 序列1和2不能都执行 执行任一序列后继续执行ENDIF后面的语句 条件一般是一个逻辑表达式 IF ELSE和ENDIF必须配套使用 缺一不可 89 1 IF条件语句 2 二择一条件语句如下例 A 8B 5IFA B A大于B ELSE A小于或等于B ENDIF 执行完毕 90 1 IF条件语句 3 IF语句嵌套如下例 A 8B 5IFA B A大于B ELSEIFA B A小于B ELSE A等于B ENDIFENDIF 注意 IF和ENDIF要成对出现嵌套层数不限采用缩格形式 以便区分层次 91 2 CASE多分支语句 格式 DOCASECASECASE CASE OTHERWISE ENDCASE注 DOCASE和ENDCASE必须配对使用 功能 依次判断各条件 当条件为真时执行对应的语句系列 当所有条件为假时 则执行OTHERWISE对应的语句系列 Otherwise不再进行条件判断 92 2 CASE多分支语句 如下例 A 4B 5DOCASECASEA B A大于B CASEA B A等于B OTHERWISE A小于B ENDCASE A B的大小判断完毕 93 4 3 4循环结构 循环结构要注意的是要有控制条件的语句 以避免出现死循环现象 在VFP中有三种循环语句 DOWHILE ENDDOSCAN ENDSCANFOR ENDFOR 94 1 DOWHILE循环语句 格式 DOWHILEENDDO功能 当条件为真时 重复执行语句序列 直到条件为假时结束 95 1 DOWHILE循环语句 如下例 S 0K 1DOWHILEK 100S S KK K 1ENDDO S 此程序的功能及输出结果是什么 96 1 DOWHILE循环语句 EXIT和LOOPEXIT结束当前循环操作 跳到ENDDO后面继续执行 LOOP跳过LOOP后面的语句 结束本轮循环 直接回到循环起始语句DOWHILE 开始下一轮 注 EXIT和LOOP可以出现在循环体语句序列中的任意位置 在语句序列中 还可以出现IF语句或CASE语句或DOWHILE语句的嵌套 97 1 DOWHILE循环语句 如下例 S 0K 1DOWHILEK5EXITENDIFENDDO S 此程序的功能及输出结果又是什么 98 1 DOWHILE循环语句 如下例 S 0K 1DOWHILE T S S KK K 1IFK 5EXITENDIFENDDO S 此程序的功能及输出结果又是什么 99 1 DOWHILE循环语句 如下例 S 0K 1DOWHILEK5LOOPENDIF KENDDO S 此程序的功能及输出结果又是什么 100 1 DOWHILE循环语句 如下例 Step 2S 0K 1DOWHILEK 10S S KIFStep 1K K 1ENDIFIFStep 2K K 2ENDIFENDDO S 此程序的功能及输出结果又是什么 101 1 DOWHILE循环语句 如下例 USE学生DOWHILE NOT EOF DISPSKIPENDDO 利用该循环实现对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作 记录指针由SKIP语句控制 循环结束的条件由函数EOF 或BOF 控制 102 2 FOR循环语句 格式 FOR循环变量 初值TO终值 STEP步长 ENDFOR NEXT说明 循环变量为内存变量 不需要事先定义 初值 终值 步长均为数值 默认递增步长为1 ENDFOR和NEXT二者等价 二选一 103 2 FOR循环语句 S 0FORK 1TO100S S KENDFOR S S 0K 1DOWHILEK 100S S KK K 1ENDDO S 注 FORK 1TO100等价于FORK 1TO100STEP1 104 2 FOR循环语句 S 0FORK 100TO1STEP 1S S KENDFOR S S 0K 100DOWHILEK 1S S KK K 1ENDDO S 105 3 SCAN循环语句 格式 SCAN 范围 FOR WHILE ENDSCAN功能 对当前表在指定范围 满足条件的记录中自动进行自上而下逐个扫描 重复执行循环体 语句序列 说明 SCAN循环能自动移动指针 用DOWHILE循环也可以实现对表文件的逐个扫描操作 但需借助函数BOF 或EOF 测试状态 用SKIP命令移动指针 不如SCAN循环方便 106 3 SCAN循环语句 例 分别统计学生表中男生和女生的人数 USE学生STORE0TOX YSCANIF性别 男 X X 1ELSEY Y 1ENDIFENDSCAN 男生人数 X 女生人数 YUSE 107 3 SCAN循环语句 例 输出可以借阅的图书的书号 书名和出版社 USE图书 书号书名出版社 SCANALLFOR可借阅否 书号 书名 出版社ENDSCAN 108 4 3 4循环结构 注意事项 1 DOWHILE和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 请输入教师名 toxm 教师名 xm 1 字符串接收语句ACCEPT 112 格式 INPUT TO功能 将键盘输入的数据赋给指定的内存变量 注 input与accept类似 区别在于input从键盘输入的数据可以是常量 变量 函数或表达式 数据类型可以是除备注型和通用型外的所有类型 说明 用户在输入字符串 日期常量和逻辑型常量时 必须加上相应的分界符 2 数据输入命令INPUT 113 2 数据输入命令INPUT 例 邮费的计费标准为每克0 05元 但重量超过100克后 超出数为每克0 02元 编写程序计算邮费 input 请输入重量 towIfw 100f w 0 05Elsef 100 0 05 w 100 0 02Endif f 114 格式 WAIT TO WINDOW AT TIMEOUT 功能 将键盘输入的一个字符赋给指定的内存变量 注 从键盘输入的数据只能是一个单字符常量 不用按回车键 或者不输入字符直接按回车键 也可用于只输出一条提示信息而不输入字符 例如 WAIT 请准备好打印机 WINDOW 3 单字符接收语句WAIT 115 3 单字符接收语句WAIT 说明 用户在输入一个字符后 不需以回车键作为结束符 命令中若选用提示信息 将其输出至主窗口 若缺省 如 wait 则屏幕显示 按任意键继续 WINDOW子句使主窗口上出现一个WAIT提示窗口 窗口内显示提示信息 其位置由AT选项中的行 列指定 若缺省AT选项 提示窗口将显示在主窗口的右上角 TIMEOUT子句用来设定等待时间 秒数 一旦超时 则系统自动执行下一条命令 116 ACCEPT命令只能接受字符型数据 不需定界符 输入完毕按回车键结束 WAIT命令只能输入单个字符 且不需定界符 输入完毕不需按回车键 INPUT命令可接受数值型 字符型 逻辑型 日期型和日期时间型数据 除数值型均需定界符 输入完毕按回车键结束 三条输入命令的异同 117 程序执行时将跨过注释语句 不作任何操作 程序注释NOTE或 对一段程序的结构或功能进行注释 书写时独占一行 命令注释 在一条命令末尾注释 对当前一条命令语句进行说明 书写在被注释命令的右部 注释语句太长需要分行写时 注意行首加上命令保留字 2 注释命令 118 2 注释命令 例 将教师职称一栏由副教授改为教授 CLEARSETTALKOFF 设置系统对话方式为关 开头设为OFF 在程序结尾 再恢复为ON状态USE教职工ACCEPT 请输入要修改记录的教师名 toxmLOCATEFOR姓名 xmREPL职称WITH 教授 USESETTALKONRETURNnote该程序修改了教师的职称信息 119 3 设置命令 用于对程序执行的环境进行设置 这组命令均以SET开头 1 设置对话方式格式 SETTALKON OFF功能 设置系统的对话方式为开或关状态 默认值为ON 说明 一些命令在执行时会返回一些与执行状态有关的信息 该信息通常显示在主窗口或状态栏 对程序中输入 输出命令在主窗口显示的信息形成干扰 为此 一般在程序开头设置对话方式为OFF状态 在程序执行完毕后 再将其恢复至ON状态 120 3 设置命令 3 设置默认盘符 路径格式 SETDEFAULTTO 功能 设置系统默认的盘符 路径 即文件的存放位置 若缺省可选项 则系统默认的文件存放位置为C盘根目录 SETDEFAULTTO只是做临时设置 一旦关闭VF就失效 例如 SETDEFAULTTOd vfUSE图书 在d盘vf文件夹中打开图书表 121 4 清屏命令CLEAR 格式 CLEAR功能 清除主窗口中的输出信息 不能清除命令窗口中的信息 122 终止命令 CANCEL终止当前程序运行 菜单程序 取消 并返回到系统命令窗口 返回命令 RETURN返回到主调程序中调用行的下一行 无上级程序则返回到命令窗口 退出命令 QUIT退出VFP 返回到操作系统 并自动删去磁盘中的临时文件 同菜单 文件 退出 的操作 5 程序结束命令 123 IF条件语句程序举例 例 编程求任意三个数的最大数 SETTALKOFFCLEARINPUT 请输入第一个数 TOnum1INPUT 请输入第二个数 TOnum2INPUT 请输入第三个数 TOnum3IFnum1 num2max num1ENDIFIFNUM2 NUM1max num2ENDIFIFnum3 maxmax num3ENDIF 最大数为 maxSETTALKONRETURN 124 例 按学号查找学生信息 若找到 显示该生信息 否则 显示 找不到 提示信息CLEAUSE学生ACCEPT 请输入要查找的学生学号 TOXHLOCAALLFOR学号 XHIFFOUND DISPELSE 该生不存在 ENDIFUSE IF条件语句程序举例 125 CASE多分支语句程序举例 例 一个简单的购买图书计费程序 要求输入某种图书的金额和购买数量 按购书金额的大小 予以优惠收费 优惠额度为 若购书金额小于等于500元 优惠5 若购书金额大于500元 且小于等于1000元 优惠12 若购书金额大于1000元 且小于等于1500元 优惠15 若购书金额大于1500元 优惠20 126 CASEamount 500p 0 12CASEamount 0p 0 05OTHERWISE amount 0 数据错误 RETURNENDCASEamount amount 1 p 计算优惠金额 优惠 STR p 100 2 实际金额为 amountSETTALKONRETURN 程序如下 SETTALKOFFCLEARINPUT 请输入图书单价 TOpriceINPUT 请输入图书数量 TOnumamount price num 计算金额 未优惠 DOCASECASEamount 1500p 0 20CASEamount 1000p 0 15 127 DOWHILE循环语句程序举例 例 编写程序 查询1998年以后出版的图书 并输出书号 书名 作者及可借阅否等数据 USE图书DOWHILE NOT EOF IFLEFT ALLTRIM 出版日期 4 1998 DISPFIELDS书号 书名 作者 可借阅否ENDIFSKIPENDDO 128 DOWHILE循环语句程序举例 例 编写程序 查询1998年以后出版的图书 并输出书号 书名 作者及可借阅否等数据 USE图书SCANIFLEFT ALLTRIM 出版日期 4 1998 DISPFIELDS书号 书名 作者 可借阅否ENDIFENDSCAN 129 程序如下 USE图书DOWHILE T ACCEPT 请输入书名 TObooknameLOCATEFOR书名 booknameIF NOT FOUND 库内无 bookname ELSE 例 编写一个图书查询程序 要求按书名进行检索 若找到 则输出此书的书号 作者 出版社 可借阅否等信息 并且能够根据需要多次进行检索 DOWHILE NOT EOF 书号 书号 作者 作者 出版社 出版社 可借阅否 可借阅否CONTINUEENDDOENDIFWAIT 还继续检索吗 y N TO cntWINDOWIFLOWER ALLTRIM cnt n EXITENDIFENDDO 130 FOR循环语句程序举例 读程序写运行结果 SETTALKOFFCLEARS 0FORI 1TO10IFI 2 INT I 2 LOOPENDIFS S IENDFOR S SSETTALKON 4 4多模块程序设计 132 4 4多模块程序设计 目的要求 了解自定义过程 掌握自定义过程的格式 参数传递 子程序和过程调用 掌握有关形参与实参的概念 掌握调用过程与函数时参数的传递 重点 过程的格式 传递 子程序 过程调用及变量的作用域等 133 一个较大的应用程序通常可能由若干个模块构成 大模块又可以细分为小模块 每个小模块 完成一种基本功能 模块间存在着调用关系 程序模块 可单独命名的程序段 实现模块结构程序设计的工具如下 多模块程序设计 过程 子程序 自定义函数 134 4 4 1过程 1 定义过程可以一个过程包含在一个独立的程序文件中 也可以多个过程包含在同一个程序文件中 语法格式PROCEDURE PARAMETERS RETURN说明过程名字惟一 要注意区别过程名与过程文件名 PARAMETERS子句中的参数称为形式参数 简称形参 RETURN语句的功能是结束本过程运行 返回到调用它的程序 RETURNTOMASTER表示过程结束时返回到最高一级主程序 PROCEDURExsparametersmm m 4 mRETURN 135 4 4 1过程 2 过程的调用DO WITH IN 说明 调用过程时 会产生参数传递 DOWith子句中的参数称为实际参数 简称实参 值传递 将实参 常量或表达式 的值传递给形参 形参的任何变化不会影响到实参 地址传递 将实参 变量 的地址传递给形参 形参的变化会影响到实参 变量 如 n 5DOxsWITH5 值传递DOxsWITHn 5 值传递DOxsWITH n 值传递DOxsWITHn 地址传递 PROCEDURExsparametersmm m 4 mRETURN 136 4 4 1过程 2 过程的调用可把过程和主程序放入一个程序文件中 但是过程必须位于主程序的后面 也可将一个或多个过程放在一个文件中 称为过程文件 建立方法与建立程序文件相同 后缀仍为 PRG 若过程和主程序位于不同的程序文件中 调用过程时需用IN子句指定过程所在文件的文件名 n 5doxswithnPROCEDURExs RETURN n 5doxswithnin过程1 prg PROCEDURExs RETURN 过程1 prg 程序1 prg 程序2 prg 137 USE图书INDEXON书名TAGSMINPUT 请输入要查找的 书名 TOBNAMEDOCHAXUNWITHBNAME 主程序 例4 20 21 编写一个过程 按书名进行查询 PROCEDURECHAXUNPARABOOKNAMESEEKBOOKNAMEIFFOUND DISPELSE 无此书 ENDIFRETURN 过程 138 4 4 2子程序 定义 子程序是相对于主程序而言的一个独立的程序文件 其建立方法与建立程序文件的方法相同 扩展名为PRG 与过程相比 子程序在建立时无过程首部 且只能单独存放于一个程序文件中 子程序的定义 PARAMETERS RETURN子程序的调用和返回方法与过程相同 139 程序之间的调用和返回 4 4 2子程序 140 例 输入一个半径r值 求出圆的面积 P PRG 主程序 YMJ 0INPUT 请输入圆的半径 TOBJDOSUBWITHBJ YMJ 调用子程序 圆的面积 YMJ 显示圆面积RETURN 子程序 SUB PRG PARAMETERSR S 接收参数S PI R R 计算圆面积 PI 返回 值RETURN 返回主程序 要建立两个程序文件P PRG SUB PRG 141 4 4 3自定义函数 定义自定义函数自定义函数是一个子程序 PRG 它可以返回一个值到调用程序 格式 FUNCTION PARAMETERS RETURN与过程相似 自定义函数可以在一个独立的程序文件中 也可以在一个过程文件中 与过程不同 自定义函数必须返回一个值 若函数名缺省 表示是一个独立的程序文件 文件名可作为函数名 Return后的表达式若缺省 则默认返回逻辑值 T 142 4 4 3自定义函数 2 调用自定义函数格式 自定义函数名 例 编写一个程序 计算某一个数的阶乘 主程序 INPUT 请输入一个数M TOM M 的阶乘为 JC M 自定义阶乘函数 FUNCTIONJCPARANS 1FORJ 1TONS S JENDFORRETURNS 143 4 4 4过程文件 过程文件是指包含多个独立的过程或自定义函数的文件 建立过程文件的方法与建立程序文件相同 扩展名为 PRG 调用过程文件之前必须先打开过程文件 调用结束后关闭 过程文件的打开 SETPROCEDURETO 过程文件的关闭 SETPROCEDURETO或RELEASEPROCEDURE 144 例 演示过程文件 主程序MAIN PRGSETTALKOFFCLEAX 1SETPROCEDURETOPROFILEDOPRO1WITHX X XY 1Z 1DOPRO2 Y Y Z ZSETPROCEDURETOSETTALKON PROFILE PRGPROCEDUREPRO1PARANN 5RETURNPROCEDUREPRO2Y 10 XZ 5 Y 1DOPRO3RETURNPROCEDUREPRO3Z X XRETURN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025磁盘制作复制委托合同
- 茶叶知识直播考试内容及答案
- 现代俄语文学题目及答案
- 2025整车货物的运输合同
- 物体表面采样试题及答案
- 2025年公安辅警考核试题及答案
- 2025高考地理试题分类汇编:农业含解析
- 营运车辆保养课件
- 2025汽车租赁合同范本(简化版)
- 2025年人教版七年级语文上册月考试卷(含答案)
- 风电发电机组电控系统知识-安全链部分课件
- PMBOK指南第6版中文版
- 第五章-针织服装设计与样板制作经典版课件
- 肿瘤的介入治疗课件最新版
- 医疗质量管理工具课件
- 急性上呼吸道感染病人的护理
- 小学教师量化考核表
- 房建监理平行检查记录表格模板(参考版)
- 计算机操作系统(第四版)-汤小丹-课后习题答案
- 12生物分子网络ppt课件
- 手术室护士长工作手册-精品完整版
评论
0/150
提交评论