《VF程序设计基础 (2)培训课件》由会员分享,可在线阅读,更多相关《VF程序设计基础 (2)培训课件(107页珍藏版)》请在金锄头文库上搜索。
1、1,第二章:VF程序设计基础,2,考核知识点,常量、变量和表达式 常用函数:字符处理函数,数值计算函数,日期时间函数,数据类型转换函数和测试函数。 程序与程序文件:程序的概念,程序的基本结构,多模块程序设计。,3,重要考点:,常量和变量的概念、类型及特点; 表达式的类型; 函数的使用:trim, left, right, substr, at, like, date, str, val, isnull, empty, vartype, eof, bof, iif 程序与程序文件、程序的选择结构、程序的循环结构、多模块程序设计。,4,考点一:常量,常量用以表示一个具体、不变的值。 不同类型常量的
2、书写格式不同。分为: 数值型:代码N,用来表示一个数量的大小。无定界符。如:0,20,-3.14 ,1.25E-2 货币型:代码Y,用来表示货币值,定界符:$。 字符型:代码C,就是一串字符,定界符:“ ” , , BOF()测试指针是否指到了表文件的开始;,44,考点 十,3.条件测试IIF(Lexp,exp1,exp2) 若逻辑表达式为真,则返回exp1的值,否则返 回exp2的值,X=100 Y=300 ?IIF(X100,X-50,X+50) ?IIF(Y100,Y-50,Y+50),45,函数部分练习题:,填空题: 1.将数值型转换成字符型的函数是( )。 2.将字符型转换成数值型的
3、函数是( )。 3.求当前系统时间的函数是( ),当前系统时间的返回值的数值类型是( )。 4.求当前年份的函数是( ),他的返回值的数值类型是( ),46,5.?len(alltrim(“ 计算机等级 ”)的结果是: 6.表示”1962年10月27日”的日期型常量应该写为: 7.下列符号中,不常作为日期型常量分隔符的是: A.斜杠(/) B.连字符(-) C.句点(.) D.脱字符() 8.在下面的数据类型中,默认值为.F.的是: A.数值型 B.字符型 C.逻辑性 D.日期型 9.在VF中,内存变量的数据类型不包括的是: A.数值型 B.货币型 C.备注型 D.逻辑型,47,10.在下列函
4、数中,函数值为数值型的是: A.AT(“中国”,”中国计算机”) B.CTOD(“04/30/2004”) C.BOF() D.SUBSTR(DTOC(DATE(),7) 11.函数STUFF(“计算机”,5,4,”信息报”)的返回值: A.计算机信息报 B.计算信息报 C.计算机信息 D.机信息报 12.已知X=45,则函数VARTYPE(X)的结果是: 13.假定系统日期就是今天的日期,则执行命令 X1=MOD(YEAR(DATE()-2000,3)后,X1的值是: 14.STR(123.5454,6,3)的值是:,48,15.在命令窗口输入如下命令: STORE 2*3 TO X ?X
5、的返回值是: 16.Store 3*5=15 to x Y=.F. ?x .AND. Y 的返回值是: 17.有如下赋值语句,结果为”大家好”的表达式是: A=“你好” B=“大家” A.b+AT(a,1) B.b+RIGHT(a,1) C. b+LEFT(a,3,4) D. b+RIGHT(a,2),49,2.4 程序与程序文件,考点十一:基础 概念:程序是能够完成一定任务的命令的集合。当运行程序时,系统会按照一定的次序自动执行程序中的命令。 程序文件的建立“文件”“新建”“程序” 或者 modify command 程序文件的执行1)单击工具栏上的“!” 2)Ctrl + E3) 命令:
6、do 程序文件名,50,4) CANCEL i 既作为被累加的数据,也作为控制循环条件是否成立的变量,初值为1. 重复执行命令:s=s+i 和 i=i+1,直到 i 的值超过100,每执行一次,s 的值增加i ,i 的值增加1。,clear S=0 i=1 Do while i=100 s=s+I i=i+1 Enddo ?”s=“,s,76,例4:编写程序,判断一个大于等于3的自然数 是否为素数。,Input “请输入自然数(=3)” to n F=0 i=2 Do while i0 i=i+1 loop else f=1 exit endif Enddo,If f=0 ? Str(n,3)
7、+”是素数” Else ? Str(n,3)+”不是素数” Endif return,77,Input “请输入自然数(=3)” to n F=0 i=2 Do while i=n-1 if mod(n,i)=0 f=1 exit endif Enddo,78,FOR 变量=初值 TO 终值 STEP步长 语句序列 ENDFOR|NEXT 变量,2. FOR循环,*循环体中不应包含改变循环 变量值的命令,否则循环次数 将改变,79,该语句通常用于实现循环次数已确定的情况。执行该语句时,首先将初值赋给循环变量,然后判断条件是否成立,若循环条件成立,则执行循环,然后循环变量增加一个步长值再次判断循
8、环条件是否成立,若循环条件不成立,则结束该循环语句。,80,功能注释: 步长默认值为1; 初值、终值和步长的值一旦确定,不再改变; 步长为正数,初值小于终值;为负数,初值大于终值; 循环次数的计算:int ( (终值初值) / 步长) +1 用exit 可以退出循环,循环不再执行;用 loop 可以结束本次循环,再到循环的开始处继续执行循环。,81,例1:,Clear Dimension A(6) For k=1 to 6 A(k)=20-2*k Endfor ?A(1),A(2), A(3), A(4), A(5), A(6),82,练习题,1.分别用FOR循环和DO WHILE循环计算1+
9、2+3+30的值? 2.用FOR循环输出1100之间所有不能被7整除的数?(提示:使用LOOP),83,练习题答案,S=0 FOR I=1 TO 30 S=S+I ENDFOR ?S,S=0 I=0 DO WHILE I=30 S=S+I I=I+1 ENDDO ?S,FOR I=1 TO 100 IF I%7=0 LOOP ENDIF ?I ENDFOR,84,2、Loop 和 exit,clear s=0 for i=1 to 5 if i=2 Loop endif s=s+i endfor ?s,clear s=0 for i=1 to 5 if i=2 exit endif s=s+i
10、 endfor ?s,85,Clear Dimension A(6) For k=1 to 6 A(k)=20-2*k Endfor K=5 Do while k=1 A(K)= A(K)- A(K+1) K=K-1 ENDDO ?A(1),A(3),(5),86,例3:从键盘上输入10个数,然后找出其中最大值和最小值。 思路:假定已经找出n-1个数中的最大值ma (或最小值mi),现在再读入第n个数a,那么a和ma(或mi)中的较大者(或较小者)就是n个数中的最大值(或最小值)。,clear input 请输入入一个数: to a stor a to ma,mi for i=2 to 10
11、input 请输入一个数: to a if maa ma=a endif,if mia mi=a endif endfor ?最大值:,ma ?最小值:,mi,87,3.SCAN循环,SCAN 范围FOR条件 语句序列 ENDSCAN *特别适合对表记录 进行某种处理,88,例1:,删除所有性别为男的记录 Use 学生 Scan for 性别=“男” delete endscan,89,自治区考题:,多项选择题 以下是循环结构的有: A.DO WHILE B.for endfor C.SCAN ENDSCAN D.DO CASE E.IF ENDIF F. INPUT,90,例2:统计职工表中
12、性别的人数, 并删除相关记录,s=0 scan for 性别=男 disp wait s=s+1 endscan ?男生人数是:,s,91,2.6 多模块程序设计,应用程序一般是多模块程序,包含多个程序模块.模块是一个相对独立的程序段.它可以被其它模块调用,也可以去调用其他模块。通常,把被其它模块调用的模块称为子程序,把调用其他模块而没有被其他模块调用的程序称为主程序。 将一个程序划分为一个个功能相对简单、单一的模块程序,不仅便于程序的开发,也利于程序的阅读和维护。,92,显示实例: 主程序:PP 内容: set procedure to p1 do p1,子程序:P1 内容: procedu
13、re p1 a=3 b=5 ?a,b,a+b endproc,93,考点十五:模块的定义和调用,定义模块 procedure | function return Endproc | endfunc 注释:1)proce用来定义过程,function 定义函数。函数和过程有一些差别。 2)过程名必须以字母或下划线开头,可包含字母、数字和下划线。 3)执行时碰到return,则返回主程序。,94,2. 调用模块 格式1: do 过程名 或 do 函数名 格式2: 过程名 ( ) 或 函数名( ) 注意:如果主程序和子程序在两个文件中,则调用前先要用set procedure to 文件名 命令打开
14、过程文件 示例如前所示,95,考点十六:参数传递,模块程序可以接收调用程序传递来的参数,并根据接收到的参数控制流程或对接收到的参数进行处理,从而大大提高了程序的灵活性。 传递参数的命令: 格式1:do 过程名|函数名 with 实参1,实参2 格式2:过程名(实参1,实参2 ) 或 函数名(实参1,实参2 ) 2. 接收参数 parameters 形参1,形参2 注释:实参可以是常量,变量或表达式。调用模块时,系统会自动把实参传递给对应的形参。形参的数目要大于或等于实参的数目。,96,例: 主程序:PP 内容: input “请输入一个加数“ to x input “请输入一个加数“ to y
15、 set procedure to p1 do p1 with x,y,子程序:P1 内容: procedure p1 parame a,b a=3 b=5 ?a,b,a+b endproc,97,3. 参数传递时可以按引用传递,也可以按值传递。 引用传递:当形参的值发生改变时,实参的值也一起改变; 值传递:当形参的值发生改变时,实参的值不会改变; 采用 do 命令调用时,若实参是常量或表达式,则是值传递;若是变量,则是引用传递。 采用过程名(实参)调用时,都是值传递方式。 请观察以下几个程序执行的结果:,98,例1: 主程序:PP_1 内容: input “请输入一个加数“ to x inp
16、ut “请输入一个加数“ to y set procedure to p1_1 do p1_1 with x,y ?”x和y的值分别是:”,x,y,子程序:P1_1 内容: procedure p1_1 parame a,b a=1.25 b=2 ?”a,b的值是:“,a,b endproc,99,例2: 主程序:PP_2 内容: input “请输入一个加数“ to x input “请输入一个加数“ to y set procedure to p1_2 do p1_2 with (x),y ?”x和y的值分别是:”,x,y,子程序:P1_2 内容: procedure p1_2 parame a,b a=1.25 b=2 ?”a,b的值是:“,a,b endproc,100,例3: 主程序:PP_3 内容: input “请输入一个加数“ to x input “请输入一个加数“ to y set procedure to