




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据与数据运算 东方一诺 VisualFoxPro有常量 变量 表达式和函数四种形式的数据 数据类型决定了数据的存储方式和运算方式 常量 内存变量 函数及表达式的类型包括字符型 数值型 货币型 逻辑型 日期型和日期时间型等6种 常量变量 一 常量 常量通常是指以字符串形式出现在代码中的数据 常量代表一个具体的 不变的值 在程序运行过程中 常量是固定不变的 常量的类型包括 数值型 货币型 字符型 日期型 日期时间型和逻辑型 1 数值型常量 即常数 用来表示一个数量的大小 由数字0 9 小数点和正负号构成 也可以用科学记数法表示 数值型数据在内存用8个字节表示 例 10 100 2 8182 0 8281E2 2 货币型常量 用来表示货币 其书写格式和数值型类似 但要加上一个前置符号 数据在存储和计算时 采用4位小数 货币型常量没有科学记数形式 在内存中占用8个字节 3 字符型常量 用双引号 单引号或方括号等定界符括起来的字符 字符型常量的定界符必须成对匹配 不能一边用单引号而另一边用双引号 如果某种定界符本身也是字符串的内容 则需要用另一种定界符为该字符串定界 注意 不包含任何字符的字符串 叫空串 空串与包含空格的字符串 不同 例 计算机 科学 文化 abx xyz 例 下列字符型常量的表示中 错误的是 A 计算机世界 B 电脑报 C 中国 D 12345 4 日期型常量 日期型常量的定界符是一对花括号 花括号内包括年 月 日三部分内容 各部分内容之间用分隔符分隔 分隔符可以是斜杠 连字号 句点 分号 和空格 其中斜杠是系统在显示日期型数据时使用的默认分隔符 日期型数据用8个字节表示 取值范围是 0001年1月1日 9999年12月31日 日期型有两种格式 1 严格的日期格式 yyyy mm dd 用这种格式书写的日期型常量要注意 花括号内第一个字符必须是脱字符 年份必须是4位 年月日的次序不能颠倒 不能缺省 能表达一个确定的日期 它不受setdateto的影响 严格的日期格式可在任何情况下使用 2 传统的日期格式 传统日期格式中的月 日各为2位数字 而年份可以是2位数字 也只可以是4位数字 如 10 08 01 10 08 01 10082001 这种格式要受到setdateto和setcenturyto设置的影响 而且这种格式只能在setstrictdateto0的状态下使用 这种格式有时会引起岐义 为什么 3 影响日期格式的设置命令setmarkto日期分隔符功能 用于指定显示日期型数据时使用的分隔符 若缺省表示恢复系统默认的斜杠分隔符 日期分隔符有 setdate to american ansi british French german italian japan usa mdy dmy ymd功能 用来设置日期显示的格式 该格式也决定系统如何解释一个传统格式的日期常量 常用日期格式见下页表 例1setcenturyonsetmarktosetdatetoymd 2001 08 26 例2setcenturyoffsetmarkto setdatetomdy 2001 08 26 主屏幕显示 2001 08 26 主屏幕显示 08 26 01 setcenturyon off功能 用于设置显示日期型数据时是否显示世纪 Setcenturyto世纪值rollover年份参照值功能 用于解释一个用2位数字年份所表示的日期所处的世纪 具体的说 如果2位数字年份大于等于年份参照值 则它所处的世纪即为世纪值 否则为世纪值 1 setcenturyonsetdatetomdysetmarktosetstrictdateto0setcenturyto19rollover52 02 15 25 02 15 56 主屏幕显示 02 15 2025 主屏幕显示 02 15 1956 setstrictdateto0 1 2功能 用于设置是否对日期格式进行检查 0表示不进行严格日期检查 1表示进行严格日期检查 2表示进行严格日期检查 并且对ctod 和ctot 函数的格式也有效 设置日期格式的命令 SetmarktoSetdatetoSetcenturyon offSetcenturyto世纪值rollover年份Setstrictdateto0 1 2 5 日期时间型常量 包括日期和时间两部分内容 日期 时间 也可以表示为 日期时间 日期部分与日期型常量相似 也有传统的和严格的两种格式 时间部分的格式为 hh mm ss a p 其中hh mm dd分别代表时 分 秒 a代表上午 p代表下午 在内存用8个字节存储 注意 日期和时间中间的分隔符可以是逗号或空格 时间的表示存在着许多等价的方法 见教材P51 6 逻辑型常量 逻辑型只有逻辑真和逻辑假两个值 逻辑真的常量表示形式有 T t Y 和 y 逻辑假的常量表示形式有 F f N 和 n 前后的两个句点作为逻辑型常量的定界符是必不可少的 否则会被误认为是变量名 逻辑型数据只占用一个字节 常量的类型 货币型 数值型 日期型 字符型 日期时间型 逻辑型 二 变量 变量的值是能够随时更改的 每个变量有一个变量名 代码通过变量名来访问变量的取值 变量名以字母 汉字和下划线开头 后接字母 数字 汉字和下划线构成 变量分为字段变量和内存变量两大类 1 字段变量 表的每一个字段都是字段变量 说字段是变量 是由于对于某一字段 它的值允许因记录而异 因此 打开表之后的字段名就是字段变量 2 内存变量 内存变量是内存的一个存储区域 变量值就是存放在这个存储区域里的数据 变量的类型取决于变量值的类型 内存变量的类型包括 字符型 数值型 货币型 逻辑型 日期型和日期时间型 1 简单内存变量 每一个变量都有一个名字 可以通过变量名访问变量 如果当前表中存在一个同名的字段变量 则在访问内存变量时 必须在变量名前加上前缀M 或M 否则系统将访问同名的字段变量 要记住我哦 2 数组数组是内存中连续的一片存储区域 它由一系列元素组成 每个数组元素可通过数组名及相应的下标来访问 每个数组元素相当于一个简单变量 可以给各元素分别赋值 在VF中 一个数组中各元素的数据类型可以不同 与简单内存变量不同 数组在使用之前一般要用dimension或declare命令显式创建 规定数组是一维数组还是二维数组 数组名和数组大小 数组大小由下标值的上 下限决定 下限规定为1 创建数组的命令格式为 dimension数组名 下标上限1 declare数组名 下标上限1 以上两种格式的功能完全相同 数组创建后 系统自动给每个数组元素赋以逻辑假 f 例如 dimensionx 5 y 2 3 命令定义了两个数组一维数组X含5个元素 X 1 X 2 X 3 X 4 X 5 二维数组Y含6个元素 Y 1 1 Y 1 2 Y 1 3 Y 2 1 Y 2 2 Y 2 3 整个数组的数据类型为A Array 而各个数组元素可以分别存放不同类型的数据 在使用数组和数组元素时 应注意如下问题 在一切使用简单内存变量的地方 均可以使用数组元素 在赋值和输入语句中使用数组名时 表示将同一个值同时赋给该数组的全部数组元素 在同一个运行环境下 数组名不能与简单变量名重复 在赋值语句中的表达式位置不能出现数组名 可以用一维数组的形式访问二维数组 例如 数组Y中的各元素用一维数组形式可依次表示为 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 其中Y 4 与Y 2 1 是同一变量 三 内存变量常用命令 1 内存变量的赋值格式1 内存变量名 表达式功能 给一个内存变量赋值 格式2 store表达式to内存变量表功能 同时给多个内存变量赋予相同的值 说明 当给内存变量赋值时 如果该变量不存在 那么系统会自动建立它 可以通过对内存变量的重新赋值来改变其取值和类型 例 n 21store5toa b cn 同学 2 表达式值的显示格式1 表达式表格式2 表达式表格式3 功能 计算表达式中的各表达式并输出各表达式值 格式1在下一行的第一列显示表达式的值 格式2在当前行的当前列显示表达式的值 格式3输出一个回车换行符 例 store5toa b c a b c 3 内存变量的显示格式 list displaymemorylike通配符toprinter tofile文件名功能 显示内存变量的当前信息 包括变量名 作用域 类型 取值 1 选用LIKE短语只显示与通配符相匹配的内存变量 通配符包括 和 表示任意多个字符 表示任意一个字符 2 可选子句toprinter或tofile文件名用于在显示的同时送往打印机 或者存入给定文件名的文本文件中 文件的扩展名为 txt 3 List可连续显示 display可分屏显示 4 内存变量的清除格式1 clearmemory格式2 release内存变量名表格式3 releaseall extended 格式4 releasealllike通配符格式5 releaseallexcept通配符功能 格式1清除所有内存变量 格式2清除指定的内存变量 格式3清除所有的内存变量 若在程序中应加上extended 否则不能清除全局内存变量 格式4选用like短语清除与通配符相匹配的内存变量格式5选用except短语清除与通配符不相匹配的内存变量 5 表中数据与数组数据之间的交换将表的当前记录复制到数组格式 scatterto数组名功能 功能是将表的当前记录中复制到数组中 将数组数据复制到表的当前记录格式 gatherfrom数组名功能 将数组中的数据作为一个记录复制到表的当前记录中 表达式 所谓表达式 就是把常量 变量和函数通过特定的运算符连接在一起的式子 无论是什么表达式都能按其运算规则计算出一个结果 这个结果就是表达式的值 根据表达式的值的类型 表达式可分为数值表达式 字符表达式 日期表达式 关系表达式和逻辑表达式 一 数值表达式算术表达式又叫做算术表达式 是由算术运算符将数值型常量 变量及数值型函数连接起来的式子 其运算结果仍然是数值型数据 1 算术运算符包括 2 算术运算的操作数必须是数值 运算的结果也是数值 运算顺序是先乘除与取模 后加减 同一级别要从左向右 有圆括号时圆括号内先算 若有圆括号嵌套 则按先内后外次序处理 3 求余运算求余运算 和取余函数mod 的作用相同 余数的正负号与除数一致 如果被除数和除数同号 那么运算结果即为两数相除的余数 如果被除数与除数异号 则运算结果为两数相除的余数再加上除数 规则 余数的符号首先与被除数一致 如果被除数和除数异号 则结果为余数的值加上除数 如果被除数和除数同号 结果即为两数相除的余数 例 15 4 15 4 15 4 15 4 3 1 1 3 二 字符表达式字符表达式由字符运算符将字符型数据连接起来形成 其运算结果仍然是字符型数据 字符运算符 为完全连接符 将包括空格在内的两个字符串首尾相连接形成一个新的字符串 为不完全连接符 用于连接两个字符串 并将前一个字符串尾部的空格移到合并后的新字符串的尾部 例 我们都是 中国人 我们都是 中国人 我们都是中国人 我们都是中国人 三 日期时间表达式日期运算符 表示数据相加 表示数据相减 日期时间表达式的格式 四 关系表达式1 关系表达式 关系表达式通常也称为简单逻辑表达式 它由关系运算符将两个运算对象连接起来形成 格式为 关系运算符的作用是比较两个表达式的大小或前后 其运算结果是逻辑型数据 运算符 和 仅适用于字符型数据 其他运算符适用于任何类型的数据 用来对两个类型的数据进行比较 比较的结果是逻辑值 数值型数据和货币型数据按数值大小进行比较日期型数据按年月的先后进行比较 越早的时间越小 越晚的时间越大 字符型数据按相应位置上两个字符的ASCII码值的大小进行比较 逻辑型数据 t 大于 f 子串包含测试 功能 左边字符串是右边字符串的子串才是真 2 设置字符的排序次序字符的大小取决于字符集中字符的排序次序 排在前面的字符小 排在后面的字符大 在VF中 默认的字符排序次序为pinyin 也可以进行设置 工具 选项 数据 排序序列 选择machine 机器 pinyin stroke 在命令窗口中输入setcollateto 排序次序名 排序次序名必须放在引号中 次序名可以是machine 机器 pinyin stroke machine 机器 指定的字符按照机内码顺序排序 空格在最前面 大写ABCD字母序列在小写abcd字符序列的前面 因此 大写字母小于小写字母 pinyin 拼音 按照拼音次序排序 空格在最前面 小写abcd字母序列在前 大写ABCD字母序列在后 因此 大写字母大于小写字母 Stroke 笔画 无论什么字符 按照书写笔画的多少排序 3 字符串精确比较与exact设置在用双等号运算符 比较两个字符串时 只有当两个字符串完全相同 包括空格以及各字符的位置 时 运算结果才会是逻辑真 t 否则为逻辑假 f 在用单等号运算符 比较两个字符时 运算结果与setexacton off设置有关 ON 先在较短字符串的尾部加上若干个空格 使两个字符串的长度相等 然后再进行精确比较 OFF默认值 当处于OFF状态时 只要右边的字符串与左边的字符串的前面部分内容相匹配 即可得到逻辑真 T 的结果 也就是说 字符串的比较以右面的字符串为目标 右字符串结束即终止比较 例 字符串比较与exact设置示例 SetexactoffStore 计算机 tos1Store 计算机 tos2Store 计算机世界 tos3 s1 s3 s3 s1 s1 s2 s2 s1 s2 s1 f t f t f setexacton s1 s3 s3 s1 s1 s2 s2 s1 s2 s1 f f t t f 五 逻辑表达式逻辑表达式是由逻辑运算符将关系表达式 逻辑值连接起来形成的 其运算结果仍然是逻辑型数据 逻辑运算符有3个 Or and Not 也可以写成or and not 其优先级顺序为 not and or 逻辑非是单目运算符 其运算结果与操作数的值正好相反 逻辑与具有 并且 的含义 只有当两个操作数的值均为逻辑真时 运算结果才为逻辑真 否则 运算结果为逻辑假 逻辑或具有 或者 的含义 两个操作数中 只要有一个为逻辑真 则运算结果就为逻辑真 否则 运算结果为逻辑假 六 运算符的优先级在一个比较复杂的逻辑表达式中 可能包含多种运算 此时应首先是算术运算 字符运算和日期时间运算 其次是关系运算 最后是逻辑运算 在每种运算中对按各自的优先级别依次进行指定的运算 表达式小结 数值表达式 字符表达式 日期时间表达式 关系表达式 逻辑表达式 函数 函数的要素函数是用程序来实现的一种数据运算和转换 每一个函数都有特定的数据运算和转换功能 它往往需要若干个自变量 即运算对象 但只有一个运算结果 称为函数值或返回值 函数可以用函数名加一对圆括号加以调用 自变量放在圆括号里 函数的要素分为 函数名 参数名和函数值 函数名起标识作用 参数是自变量 一般是表达式 写在括号内 函数运算后会返回一个值称为函数值 这就是函数的功能 1 绝对值函数格式 abs 功能 返回的绝对值 2 求符号函数格式 sign 功能 返回的符号 当表达式的运算结果为正 负和零时 函数值分别为1 1 0 3 求平方根函数格式 sqrt 功能 求的平方根 自变量的值不能为负 数值函数 4 圆周率函数格式 pi 功能 返回圆周率 数值型 该函数没有自变量 5 整数函数格式 int 格式 ceiling 格式 floor 功能 int 返回的整数部分 ceiling 返回大于或等于指定的最小整数 floor 返回小于或等于指定的最大整数 6 四舍五入函数格式 round 功能 返回指定的表达式在指定位置四舍五入后的结果 指明四舍五入的位置 若大于等于零 则表示要保留的小数位数 若小于等于零 则表示整数部分的舍入位数 例 round 345 345 2 round 345 345 1 345 35345 3 round 345 345 0 round 345 345 1 345350 round 123 4567 3 123 457 7 求余数函数格式 mod 功能 返回两个数值相除后的余数 是被除数 是除数 余数的正负号与除数相同 如果被除数与除数同号 那么函数值即为两数相除的余数 如果被除数与除数异号 则函数值为两数相除的余数再加上除数的值 例 mod 10 3 mod 10 3 1 2 mod 10 3 mod 10 3 2 1 8 求最大值和最小值函数格式 max 格式 min 功能 max 计算各自变量的值 并返回其中的最大值 min 计算各自变量的值 并返回其中的最小值 自变量可以是任何类型 但所有表达式的类型必须一致 例 max 2 12 05 min 中国 日本 主屏幕显示 2日本 字符函数 1 求字符串长度函数格式 len 功能 返回字符的长度 即字符的个数 例 len abcd len 中华人民共和国 2 大小写转换函数格式 upper 格式 lower 功能 upper 将表达式中的小写字母转换成大写字母 lower 将表达式中的大写字母转换成小写字母 3 空格字符串生成函数格式 space 功能 返回由指定数目的空格组成的字符串 4 删除前后空格函数格式 trim 格式 ltrim 格式 alltrim 功能 trim 返回指定值去掉尾部空格后形成的字符串 ltrim 返回指定值去掉前导空格后形成的字符串 alltrim 返回指定值去掉前导和尾部空格后形成的字符串 5 取子串函数格式 left 格式 right 格式 substr 功能 left 从指定表达式值的左端取一个指定长度的子串作为函数值 Right 从指定表达式值的右端取一个指定长度的子串作为函数值 Substr 从指定表达式值的指定起始位置取指定长度的子串作为函数值 若缺省则函数从指定位置一直取到最后 6 计算子串出现次数函数格式 occurs 功能 返回第一个字符串在第二个字符串中出现的次数 函数值为数值型 若第一个字符串不是第二个字符串的子串 则函数值为0 例 store thisisaprogram toa occurs s a occurs a a occurs t a 221 occurs 电脑 计算机俗称电脑 1 7 求子串位置函数格式 at atc 功能 at 的函数值为数值型 如果是的子串 则返回值的首字符在值中的位置 若不是子串 则返回0 atc 与at 功能类似 但在子串比较时不区分字母大小写 第三个自变量用于表明要在值中搜索值的第几次出现 其默认值是1 8 子串替换函数格式 stuff 功能 用值替换中由和指明的一个子串 替换和被替换的字符个数不一定相等 如果值是0 则插在由指定的字符前面 如果值是空串 那么中由和指明的子串被删去 stuff Goodbye 6 3 morning Goodmorning 9 字符替换函数格式 chrtran 功能 该函数的自变量是三个字符表达式 当第一个字符串中的一个或多个字符与第二个字符串中的某个字符串相匹配时 就用第三个字符串中的对应字符 相同位置 替换这些字符 如果第三个字符串包含的字符个数少于第二个字符串包含的字符个数 因而没有对应字符 那么第一个字符串中相匹配的各字符将被删除 如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数 多余字符被忽略 例 x1 chrtran abacad acd x12 Y1 chrtran 计算机abc 计算机 电脑 z1 chrtran 大家好 大家 东方一诺 x1 y1 z1xbx1x2电脑abc东方好 习题 chrtran 电脑信息时代 电脑 计算机 occurs Fox VisualFoxPro at Fox VisualFoxPro 已知X 2008年奥运中国申办成功 在下面的括号中填入合适的语句 使其显示结果为 中国成功申办2008年奥运 Substr X 11 4 substr X 15 4 10 字符串匹配函数格式 like 功能 比较两个字符串对应位置上的字符 若所有对应字符都相匹配 函数返回逻辑真 t 否则返回逻辑假 f 中可以包含通配 和 可与任何数目的字符相匹配 可以与任何单个字符相匹配 like a dadd like abc b 日期和时间函数 1 系统日期和时间函数格式 date 格式 time 格式 datetime 功能 date 返回当前系统日期 函数值为日期型 time 以hh mm ss的格式返回系统当前时间 函数值为字符型 Datetime 返回当前系统日期时间 函数值为日期时间型 2 求年份 月份和天数函数格式 year 格式 month 格式 day 功能 year 从指定的或中返回年份 month 从指定的或中返回月份 day 从指定的或中返回月里面的天数 这三个函数的返回值都是数值型 3 时 分和秒函数格式 hour 格式 minute 格式 sec 功能 hour 从指定的日期时间表达式中返回小时部分 minute 从指定的日期时间表达式中返回分钟部分 sec 从指定的日期时间表达式中返回秒数部分 这三个函数的返回值都是数值型 数据类型类型转换函数 1 数值转换成字符串格式 str 功能 将的值转换成字符串 转换时根据需要自动进行四舍五入 返回字符串的理想长度L应该是值的整数部分位数加上值 再加上一个小数点 如果值大于L 则字符串加前导空格以满足规定的要求 如果值大于等于值的整数部分位数 包括负号 但又小于L 则优先满足整数部分而自动调整小数位数 如果值小于值的整数部分位数 则返回一串星号 的默认值为0 的默认值为10 例 store 1456 45132ton str n 11 5 str n 13 5 str n 9 3 1456 45132 1456 45132 1456 451 str n 6 3 str n 7 3 str n 5 3 str n 3 3 1456 1456 5 1456 下列表达式中 肯定不是vf的合法表达式的是 A 9999 ABB NAME name C 05 01 03D 经理 or 副经理 2 字符串转换成数值格式 val 功能 将由数字符号 包括正负号 小数点 组成的字符型数据转换成相应的数值型数据 若字符串内出现非数字字符 那么只转换前面部分 若字符串的首字符不是数字符号 则返回数值零 但忽略前导空格 例 val 123 4a56 val 12ab34 123 4012 00 val b1230 0 3 字符串转换成日期或日期时间格式 ctod 格式 ctot 功能 ctod 将值转换成日期型数据 ctot 将值转换成日期时间型数据 字符串中的日期格式要与setdateto命令设置的格式一致 其中的年份可以用四位 也可以用两位 如果用两位 则世纪由setcenturyto语句指定 4 日期或日期时间转换成字符串格式 dtoc 1 格式 ttoc 1 功能 dtoc 将日期型数据或日期时间数据的日期部分转换成字符串 ttoc 将日期时间数据转换成字符串 字符串中日期部分的格式与setdateto语句的设置和setcenturyon off语句的设置有关 对dtoc 来说 如果使用选项1 则字符串的格式总是为yyyymmdd 共8个字符 对ttoc来说 如果使用选项1 则字符串的格式总是为yyyymmddhhm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士支援发言稿
- 2025年核试验反应堆及其配套产品项目提案报告
- 光的反射和折射课件
- 2025年丙烯酸酯外墙涂料项目立项申请报告模板
- 护理子宫破裂课件
- 2025-2030中国正丙苯行业现状规模及供需趋势预测报告
- 2025秋湘教版数学九年级上册-课件 1.2反比例函数的图像与性质(第3课时)
- 光泽月嫂培训基本知识课件
- 护理PDCA持续质量改进
- 延安财务发言稿
- 医学技术专业讲解
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 共青团中央所属事业单位2024年度社会公开招聘笔试备考题库参考答案详解
- 2025年《分级护理制度》考试试题(及答案)
- 高中喀斯特地貌说课课件
- 气候变化与健康课件
- 公司电脑配备管理办法
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
- 娱乐直播培训课件下载
- 细胞生物学复习资料非常详细
- 留疆战士考试试题及答案
评论
0/150
提交评论