




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二讲 程序设计初步(2) 要点: 掌握表达式、函数的基本用法 编写程序的基本元素: 命令 常量 变量 表达式 函数 对象 表单 标签 文本框 命令按钮 表达式 运算符及表达式 运算符是在VFP中用来进行运算的符号。 表达式是由数据、数据存储容器和运算符 组成的运算式。 在VFP系统中根据不同的运算符及表达式结果的不 同,表达式可以分为以下五种: 1 1、算术表达式、算术表达式 2 2、字符表达式、字符表达式 3 3、日期表达式和日期时间表达式、日期表达式和日期时间表达式 4 4、关系表达式、关系表达式 5 5、逻辑表达式、逻辑表达式 1.常见的表达式 (1 1)算术表达式)算术表达式 算术表达式的运算结果是数值型常数数值型常数。 算术运算符:算术运算符: ( ) ( ) 分组括号分组括号 *或或 乘方乘方 % % 取模取模( (除法的余数除法的余数) *) *、/ / 乘、除乘、除 + +、 - - 加、减加、减 特别注意 符号的变化 优 先 性 由 高 到 低 仔细体会教科书P25【例2-3】 【例】写出数学式 所对应 的算术表达式 该数学式子对应的VFP算术表达式为 g*m1*m2/(2+r*2) 或 g*m1*m2/(2+r2) 或 g*m1*m2/(2+r*r) 使用表达式可以计算某些数学式子的值, 如下例题说明了表达式的一种应用方法。 例题: 将如下4个数学表达式改写成符合 VFP语法规则的表达式,并计算出它们的结果 ,设x=1,y=5,z=9,a=6,b=2。 书写规则: 1、凡是分母为多项,都要加括弧。 2、凡是分子有加减,都要加括弧。 3、凡是省略的乘号,要补上。 (2 2)字符表达式)字符表达式 字符表达式运算的结果是 字符型常数或逻辑型常数字符型常数或逻辑型常数。 字符运算符:字符运算符: + + 连接运算连接运算 - - 连接运算连接运算 $ $ 包含运算包含运算 字符型常数字符型常数 逻辑型常数逻辑型常数 “+”与 “-”都是字符连接运算符,都将两边 的字符串顺序连接,但“+”是直接连接,“-” 则将串1尾部所有空格移到串2尾部后再连接; 表示空格 “XXXX”+“YYYY” “XXXXYYYY” “XXXX”-“YYYY” “XXXXYYYY” 【例2-5】设计并运行如图2-12所示的表单,体会运算结果。表 单分别有4个标签、2个命令按钮,其caption属性如图2-12所示 ;2个文本框,其value属性的初值均为空串。 “连接(+)”命令按钮的“Click”事件代码: c1=ALLTRIM(Thisform.Text1.Value) c2=ALLTRIM(Thisform.Text2.Value) thisform.label3.caption= c1+“ “+ c2 + c1 “连接(-)”命令按钮的“Click”事件代码: c1=ALLTRIM(Thisform.Text1.Value) c2=ALLTRIM(Thisform.Text2.Value) thisform.label4.caption= c1+“ “- c2 + c1 串1$串2 “$”运算实质上是比较两个串的包含关系, 其作用是比较、判断串1 是否为串2的子串,如果 串1是串2的子串,运算结果为“真”,否则为“ 假”。 所谓子串,如果串1中所有字符均包含在串2中 、且与串1中排列方式与顺序完全一致,则称串1 为串2的子串。 【修改例2-4】设计并运行如图所示的表单,体会 运算结果。表单分别有1个标签、3个文本框、1个 命令按钮,其caption属性如图所示。 “计算”命令按钮的“Click”事件代码 : A=alltrim(thisform.text1.value) B=thisform.text2.value thisform.text3.value=A$B 文本框默认的值为字符型, alltrim( )是一个函数,功能是去 掉文本框中前后空格,不删除串 中间的空格 。 (3 3)日期表达式或日期时间表达式)日期表达式或日期时间表达式 日期和日期时间运算符分为“+”和“-”两种,其作用分 别是在日期数据上增加或减少天数,在日期时间数据 上增加或减少秒数。 运算分三中情况: (1) D-D=N (2) D+N=D (3) D-N=D 注意: 如果D为日期型数据,N就为天数 如果D为日期时间型数据,N就为秒数 日期型不能和日期型数据相加 格式结果及类型示例 +日期型。指定日 期若干天后的日 期 2002/12/16+10 +日期型。指定日 期若干天后的日 期 10+2002/12/16 -日期型。指定日 期若干天前的日 期 2002/12/16-10 - 数值型。两个指 定日期相差的天 数 2002/12/16- 2002/12/26 格式结果及类型示例 + 日期时间型。指定 日期时间若干秒后 的日期时间 2002/12/16 8:20:40+10 + 日期时间型。指定 日期时间若干秒后 的日期时间 10+2002/12/16 8:20:40 - 日期时间型。指定 日期时间若干秒前 的日期时间 2002/12/16 8:20:40-10 - 数值型。两个指定 日期时间相差的秒 数 2002/12/16 8:20:40- 2002/12/16 8:20:30 【修改例2-6】设计并运行如图所示的表单,体会 运算结果。3个文本框,text1、text2可以接收日期 型的值。表单form1的load事件代码如下: set century on &将日期的年份值设置成4位显 示 set date to ymd &日期的显示为年月日 set mark to “-“ &日期分隔符为“-” 双击“计算”命令按钮,编写该按钮的“Click”事件代 码。其对应的事件代码为: thisform.text3.value=abs(thisform.text1.value- thisform.text2.value) abs函数的格式为:ABS()。其功能是求数值型表 达式的绝对值。 关系运算符关系运算符: 大于大于 = =等于等于 = = 大于或等于大于或等于 、!= != 、# # 不等于不等于 = = 完全等于完全等于 ( (注注: :只适用于字符型只适用于字符型) ) (4 4)关系表达式)关系表达式 关系表达式的运算结果为逻辑型常量逻辑型常量。关关 系成立结果为(系成立结果为(. .T T. .););反之,结果为(反之,结果为(. .F F . . )。 各种类型数据的比较规则如下: 数值型和货币型数据根据其代数 值的大小进行比较。 日期型和日期时间型数据进行比较 时,越新的日期或时间越大。 逻辑型数据比较时,.T.比.F.大。 操作符描述举例 运算结 果 大于 45 78, “a“ “b“ .F. ,.F. =等于 2=1+1 , “2“=“1+1“ .T.,.F. 3 , 2#3 , 2!=3 .T.,.T. ,.T. =大于等于 32=12.T. =精确等于 “ab“=“ab“, “ab“=“abc“ .T.,.F. 字符型数据(字符串)比较P32的温馨提示 当字符串比较时,可用命令SET EXACT ON/OFF来设置“=”是 否为精确比较。 在非精确比较(set exact off默认状态)时,在关系表达式 的格式中,只要后一个表达式是前一个表达式的前缀,其结果 便为真。 例:”ABCDE”=“A” “ABCDE”=“AB” “ABCDE”=“ABC” “ABCDE”=“ABCD” “ABCDE”=“ABCDE” .T. 例:”A”=“ABCDE” “AB”=“ABCDE” “ABC”=“ABCDE” “ABCD”=“ABCDE” .F. 【例】关系运算示例。 ?1244.3322 结果 ?“A”“B” 结果 ?“男”“女“ 结果 ?“ABV”“ABT”.f. 结果 ?321 结果 【例2-7】设计并运行如下如图2-16所示的表单,体 会运算结果。 (5 5)逻辑表达式逻辑表达式 逻辑表达式的运算结果仍是 逻辑型常量逻辑型常量。 逻辑运算符:逻辑运算符: ! !、NOTNOT、. NOT. . NOT. 逻辑非逻辑非 OROR、. OR. . OR. 逻辑或逻辑或 ANDAND、. AND. . AND. 逻辑与逻辑与 该运算符 只有一个 操作对象 逻辑运算真值表 AB A .AND.B A .OR. B .NOT. A .T.T.T.T.F. .T.F.F.T.F. .F.T.F.T.T. .F.F.F.F.T. 【例2-8】设计并运行如下如图2-18所示的表单,体 会运算结果。 “计算”命令按钮的“Click”事件代码为: if thisform.text1.value=60 and thisform.text2.value=60 thisform.label3.caption=“该同学的计算机等级考试成绩为:通过“ else thisform.label3.caption=“该同学的计算机等级考试成绩为:不通过“ endif 表达式值为真表示通过,表达式 值为假表示不通过 总结: 1、各种运算的优先级: 最高级为( ),-(取负)和!,算术(日 期),关系,逻辑 2、表达式: 算术运算关系运算逻辑运算 3、表达式的输出命令格式: ?|? , , , 2, 练习:使用关系表达式和逻辑表达式书写各种条件 1、n是偶数 n%2=0 2、n是奇数 n%2=1 3、n是整数 int(n)=n 4、n的取值范围是(-100100) -100 90 4、n保存的是用户登录时间,判断用户是否是上午。 登录。 8) 格式: 无条件去掉小数 部分,不进行四 舍五入 【例】INT() 函数的使用。 x=-26.72 ?INT(x),INT(-x) -26,26 2)求余数函数 格式: MOD(,) 例如: MOD(38,5),MOD(38,-5),MOD(-38,5), MOD(-38,-5) 38%5,38%-5,-38%5,-38%-5 函数值与同号 3 -2 2 -3 3 -2 2 -3 【例】将一个3位整数X的百位数字和个位数字取 出来。 X的百位数字: X1=INT(X/100) X的个位数字: X2=MOD(X,10) 取第n位数的方法: 1、先用第n+1位的权10 来对该数求模,使n+1位 以上的数剔除掉。 2、再除以第n位的权10 来缩小10 倍,最后再取 整,使n-1位以后的数剔除掉。 n N-1 N-1 (最高位的求法:除以最高位的权,再取整) (最低位的求法:对10求模。) 【例2-10】设计一表单,要求能输入一个3位数, 并逆序显示(如输入756,则显示657)。表单设计 界面如图2-22所示,运行结果如图2-23所示。 设计如图2-22所示表单,文本框text1的value属性的初值为0。 命令按钮“逆序显示”的“click”事件代码如下: x=thisform.text1.value x1= INT(x/100) x2= INT(MOD(x,100)/10) x3= x%10 y=x1+10*x2+100*x3 thisform.label2.caption=“结果为:“+STR(y,3) 3)四舍五入函数 格式: ROUND(,) 【例】ROUND()函数的使用。 x=486.735 ROUND(x,4-2), ROUND(x,1), ROUND(x,0), ROUND(x,-1),ROUND(X,-2) 4 8 6 . 7 3 5 位置: -2 -1 0 1 2 3 对+1位四舍五入 486.74 486.7 487 490 500 5)随机函数 格式: RAND() 6)函数 格式: PI() 4)求平方根函数 格式: SQRT( ) 产生01之间的随机数 圆面积S=PI()*R*R 例如:INT(RAND()*100)(0,100)的整数 二、 字符串处理函数 1)求字符串长度函数 LEN()格式: 2)生成空格函数 SPACE()格式: 【例】LEN(SPACE(8)-SPACE(3) 11 【例】RTRIM()、LTRIM()、ALLTRIM()函数的 使用。 STORE SPACE(1)+“FOX“+SPACE(3) TO SS ? RTRIM(SS)+LTRIM(SS)+ALLTRIM(SS) 结果 3)删除字符串前后空格函数 RTRIM() LTRIM() ALLTRIM() 格式: 删除后面的空格 删除前面的 空格 删除前后 空格 4)求子串位置函数 格式: AT(, ,) 【例】 AT() 函数的使用。 STORE “This is Visual FoxPro“ TO x ? AT(“FOX“,x), AT(“is“,x,3),AT(“xo“,x) 结果: 0 10 0 5)取子串函数 格式:LEFT(S1,N)-从字符串S1的左边开始取N个 字符。 LEFT(“SDFGHJKL”,3) SDF 格式:RIGHT(S1,N)-从字符串S1的右边开始取N 个字符。 RIGHT(“SDFGHJKL”,3) JKL 格式:SUBSTR(S1,N1,N2)-从字符串S1 的第N1个字符开始取,取N2个字符。 SUBSTR(“SDFGHJKL”,3,4) FGHJ SUBSTR(“SDFGHJKL”,3) FGHJKL 【例2-11】设计并运行如图2-24所示表单,体会表单运行结果。 表单分别有4个标签、1个命令按钮,其caption属性如图2-24所 示;3个文本框。其功能是能在文本框text1中输入一字符串,根 据文本框text2和text3中输入的数值,取出子串,运行结果如图2 -25所示。 “取子串”命令按钮的“Click”事件代码为: C=alltrim(thisform.text1.value) N1=thisform.text2.value N2=thisform.text3.value thisform.label4.caption= substr(c,n1,n2) 6)宏替换函数 格式:& . 分界符必须有 【修改例2-12】表单界面如图2-26所示,体会运算 结果。 命令按钮“计算”的“click”事件代码如下: x1=thisform.text1.value x2=thisform.text3.value fh=alltrim(thisform.text2.value) y= x1&fh.x2 thisform.text4.value=y 【例】宏替换函数的使用。 K=“32*SQRT(4)“ ? INT(34.15+&K) 结果 N=“2012“ M=“+“ Y=“&N.&M.1“ ? Y ? &Y 结果 ?INT(34.15+32*SQRT(4) ? “2012+1“ ? 2012+1 主窗口显示: 98 2012+1 2013 【例】宏替换函数的使用。 i=1 j=2 x12=“Good“ Good=“make in china“ ? x&i.&j ? &x12 结果 A1= 457 A2= “23“ ? “abc&a1.457“ ? “abc&a2bc“ 结果 ? x12 ? Good 三、 日期时间函数 1)系统日期和系统时间函数 格式: DATE() -返回系统的当前日期 TIME() -返回系统的当前时间 DATETIME() -返回系统的当前日期时间 字符型 2)求年份、月份和天数函数 格式: YEAR(|) MONTH(|) DAY(|) 【例】YEAR()、MONTH()、DAY()函数的使用。 STORE 2011-10-07 TO d ? YEAR(d),MONTH(d),DAY(d) 结果 返回值4位 主窗口显示:2011 10 7 四、数据类型转换函数 VAL( ) 字符型数值型 STR( ) 字符型 ASCII值 ASC( ) CHR( ) 日期或日期时间型 字符型 CTOD( ) DTOC( ) 1)字符串转换为数值函数 格式:VAL() 【例】VAL()函数的使用。 VAL(“X12.8“),VAL(“-35.875“),VAL(“3A.79“) VAL(”32”+”18”) 0.00 -35.88 3.00 3218.00 VAL(”32+18”) 32.00 如有小数点,只取小 数点后两位. 2)数值转换成字符串函数 格式: STR(1234.5678)-“ 1235” 缺省值为10 STR(1234.5678,3)-错误(*) 至少要等于的整数位数 STR(1234.5678,4)-“1235” STR (1234.5678,7,2)-“1234.57” 位数不够(要四舍五入) STR (1234.5678,9,4)-”1234.5678” STR(,) 【例】STR()函数的使用。 P=-348.387 STR(P,9,2) STR(P,6,2) STR(P,3) STR(P,6) STR(P) STR(P,10,4) -348.39 表示空格 -348.4 * -348 -348 -348.3870 【例】修改【例1-1】设计如图表单,圆面积用标签输出。 【例】命令按钮“计算圆面积”的“click”事件代码如下: R=thisform.text1.value S= pi() *r*r thisform.label3.caption= alltrim(str(s,8,1) 只接收字符类型 标签除了可以显示 说明文本,还可以 用来输出结果 3)字符与ASCII之间的转换函数 格式:ASC() CHR() 【例2-15】如图2-32所示为表单的设计界面,运行该表单,在文 本框Text1中输入一字符R,单击“转换”命令按钮后,标签label2 的位置将显示什么? “转换” 命令按钮的CLICK 事件代码: x=thisform.text1.value y=CHR(ASC(x)+1) thisform.label2.caption=y 4)日期或日期时间与字符串转换函数 格式: CTOD() DTOC(| ,1) ?year(CTOD(“1999/10/13”) &显示结果为:1999 五、测试函数 1)条件测试函数 格式: IIF(,) thisform.label1.caption= iif(thisform.text1.value10,“hello“,“你好“) thisform.label1.caption=iif(rand()0.5,“YES“,“NO“) 【例】在标签label1中随机显示“YES”和 “NO”。 2)数据类型测试函数 格式: VARTYPE() 返回的 字母 数据类类型返回的 字母 数据类类型 C字符型或备备注型G通用型 N数值值型、整型、浮 点型或双精度型 D日期型 Y货币货币 型T日期时间时间 型 L逻辑逻辑 型XNull值值 O对对象型U未定义义 六、系统对话框函数 格式: MESSAGEBOX(, ,) 函数名不能省略 【功能】暂停程序的执行,弹出Windows警告窗 口,等待用户做出选择,返回值为数字。 对话框类型及含义 按钮类钮类 型值值 对话对话 框按钮钮图标图标 类类型值值 图标图标默认认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁合金成品工安全演练评优考核试卷含答案
- 机舱拆解工诚信评优考核试卷含答案
- 2025年生活垃圾分类知识问答题(试题及答案)
- 2025年煤矿瓦斯检查考试题模拟考试题库及答案
- 康乐服务员安全文明强化考核试卷含答案
- 热力站运行工岗前品质考核试卷含答案
- 混凝土机械维修工岗前安全应急考核试卷含答案
- 数控激光切割机操作工安全强化知识考核试卷含答案
- 电线电缆制造工岗前安全培训效果考核试卷含答案
- 水解设备搪砌工班组协作评优考核试卷含答案
- 电力设施维护质量保证体系及措施
- 四大名著三国演义课件
- T/CHES 115-2023水库淤积及其影响评价技术规程
- 2025年河北省公需课《双碳目标下绿色能源转型趋势》答案
- 联通运营合作协议合同
- 8.1 走进人工智能 课件 2024-2025学年浙教版(2023)初中信息技术八年级下册
- 鄂尔多斯盆地地质特征与沉积模式分析
- 数字化赋能设计企业转型升级
- 鼻部解剖结构及其临床表现
- 生鲜农产品配送商业计划书模板
- 2025年股东退股权益申请协议书范例
评论
0/150
提交评论