《VFP电子教案》PPT课件.ppt_第1页
《VFP电子教案》PPT课件.ppt_第2页
《VFP电子教案》PPT课件.ppt_第3页
《VFP电子教案》PPT课件.ppt_第4页
《VFP电子教案》PPT课件.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,目 录,VFP基本知识 控制结构及程序设计应用举例,2,clear s=0 for i=1 to 100 s=s+i endfor ? “s=”,s return,例1 编程求 1+2+3+100,第一讲 VFP基本知识,初始化部分,数据处理(循环)部分,输出部分,结束语句,3,1.1 程序的概念,程序设计:是计算机用户将解决某一实际问题所用的命令按一定的逻辑顺序编制成程序,并以文件的形式存放于磁盘的过程。执行程序时,计算机按顺序自动执行程序文件中的命令。,程序是为解决某一特定问题而编写的一组命令的有序集合。这些命令是按一定的逻辑顺序有机地结合在一起,并以文本文件的形式存储在外存上,称为程序文件或命令文件,可以被多反复调和执行。VFP系统的程序文件扩展名为.prg。在高级语言中,由于这些命令与我们日常生活中使用的自然语言和数学语言类似,所以,习惯地将程序文件中的命令称为语句。 当程序运行时,计算机系统是从头开始、按逻辑顺序自动地逐条执行程序中的语句的。,4,1.2 VFP语言基础,1. 常量,处理过程中其值不发生变化的量称为常量。常量用来表示一个具体的、不变的值。,字符型C 字符型常量也称字符串,通常用来表示文本类型信息。由中英文字符、数字、空格和特殊符号组成,其表示方法是用定界符将字符串括起来,定界符规定只能使用:一对双引号(“ “)、一对单引号( 或一对方括号( )。,一个字符型常量中字符的个数称为其长度。一个西文字符长度为1,一个中文字符长度为2,如字符串“Visual FoxPro“的长度为13、“重庆沙坪坝“的长度为10。不包含任何字符的字符串(“)叫空串,其长度为0。,数值型N 数值型常量也就是数学上的常数,用来表示一个数量的大小。由数字09、小数点和正负号组成,如12、3.1345、-6.78、8.5678E-10(科学计数形式,表示8.567810-10)等。,逻辑型L 逻辑型常量只有两个值:逻辑真和逻辑假,用来表示逻辑判断(运算)的结果。用.T.、.t.或.Y.、.y.表示逻辑真,用.F.、.f.或.N.、.n.表示逻辑假。逻辑型数据在内存中只占一个字节,长度为固定 1 。,比如:在命令窗口中输入如下命令: ? 123200, “重庆“=“上海“ 在Visual FoxPro主窗口中显示结果为: .F. .T.,6,2内存变量,内存变量是当前内存中的一个临时存储单元,其值是这个存储单元中存放的数据。内存变量一种临时变量,独立于数据表文件而存在,用来存放数据运算过程中所需要的常量、表达式值等中间结果或最终结果。 使用内存变量应遵守 “先定义后使用” 的原则,由赋值语句定义,其数据类型取决于所赋值数据的类型。可根据实际需要,对一个内存变量进行多次赋值,该内存变量的值为最后一次所赋的值。,内存变量的赋值,格式1:= 格式2:STORE TO ,7,功能:先计算表达式的值,再赋给变量(在内存中分配存储单元,将值存放其中,变量名为存储单元地址)。,内存变量的输出,格式:?|?AT ,AT 功能:计算并输出各个表达式的值。,例2:内存变量赋值过程及含义。,a=10 b=a+5,当前内存空间,2000H,2001H,2002H,a,b,内存地址,一个存储单元,8,数组是一批有序数据的集合,数组中的每个数据称为一个数组元素,是具有相同名称而下标不同的一组有序的内存变量。VFP系统允许定义一维和二维数组,数组也应遵守“先定义后使用”的原则。,3数组,格式:DIMENSION|DECLARE ( ,) ,(, ) 功能:定义一个或多个一维数组或二维数组。,数组中每个有序变量构成数组的成员,称之为数组元素。数组元素的名称由数组名和用括号括起来的下标组成。数组元素的下标必须用圆括号括起来;二维数组的下标用逗号间隔;数组的下标可以是常量、变量和表达式,在VFP系统中,二维数组是按行分配内存的,允许使用一维数组的形式访问二维数组。,9,4. 表达式,进行数据处理时,将会使用诸如加减乘除、连接、大于等于、或等进行运算的符号,称为运算符,由运算符和圆括号将各种数据(常量、变量、函数)连接起来的有实际意义的式子称为表达式。,算术表达式,算术运算符,其中,求余运算符%和求余函数MOD的功能一致,余数的符号与除数相同。如,表达式 25%3、-25%3、25%-3的值分别为1、2、-2。,10,算术表达式,注意:在书写VFP表达式时,需将数学式中所有的运算符(包括省略的运算符)和运算量改写为VFP所规定的运算符和运算量,并将所有的字符书写在同一水平线上,必要时需添加成对的括号,以保证二者等价。,算术表达式是用算术运算符将数值型常数、变量、函数等连接组成的表达式,其运算结果是一个数值型常量。,例3:将数学上的代数式 改写成VFP的算术表达式。应为:,(a*2+x1*2*y)/(5+x*y*2) 或 (a2+x12*y)/(5+x*y2) 或 (a*a+x1*x1*y)/(5+x*y*y),11,字符表达式,完全连接运算,字符表达式是由字符运算符将字符型常量、变量、字符处理函数连接组成的表达式,运算结果可能是逻辑值或字符串。,格式:+ 功能:将的首字符与的尾字符相连,组成一个新的字符串。,不完全连接运算,格式:- 功能:将的首字符与的尾部第一个非空格字符相连组成一个新的字符串,尾部。 同时将原来的尾部空格置于新字符串的,12,包含运算,格式:$ 功能:判断是否是的子串,若是则表达式值为逻辑值.T.,否则为逻辑值.F.。,13,算术表达式,关系运算符,是用关系运算符将两个同类型的运算对象连接起来的表达式。其值要么为.T.(真),要么为.F.(假)。格式: , = = != # 优 先 级 相 同,关系表达式,14,逻辑表达式,逻辑表达式,逻辑运算符,用逻辑运算符将两个逻辑型数据连接组成的表达式。逻辑表达式的运算结果为逻辑值真或假。 格式: ,15,函数调用的一般格式: 函数名(参数表) 使用时应注意几个问题: 函数名、参数、函数值称为函数的三要素; 所有函数名后必须有圆括号,不管是否有参数( 每个函数都有一个确定的返回值,使用时要特别注意函数值的数据类型。,5. 常用函数,(1) 取整函数,格式:INT() 功能:取数值表达式值的整数部分(去掉小数部分,不进行四舍五入)。,16,(2) 求余函数,格式:MOD(,) 功能:求除以所得的余数。余数的正负号与除数相同,如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。,(3) 四舍五入函数,格式:ROUND(,) 功能:对的值保留位小数,对+1位进行四舍五入后。若大于等于0,表示的是要保留的小数位数;若小于0,则表示的是整数部分的舍入位数。,17,INPUT “请输入任一个五位自然数:“ TO x a1=INT(x/10000) a2=MOD(INT(x/1000),10) a3=MOD(INT(x/100),10) a4=INT(x%100/10) a5=x%10 ?“自然数“+STR(x,5)+“的反序数为:“, a1+a2*10+a3*100+ a4*1000+a5*10000 ?“自然数“+STR(x,5)+“的各数位之和为:“, a1+a2+a3+ a4+a5,例4 已知任意一个五位自然数,要求将其反序输出,并求各数位之和。比如,输入数63378,要求通过数据处理输出数87336,各数位之和为27。,18,随机函数RAND()产生的纯小数是随机的,不受程序设计人员控制的。利用随机函数RAND()的特点,可很方便地解决一些常见的实现问题,如猜数游戏、随机抽奖等。,例5 随机生成一个60到250内的整数;随机生成两个两位整数,并进行减法运算。,? INT(60+RAND()*190) a=(10+INT(RAND()*90) b=(10+INT(RAND()*90) ? a,b,a-b,(4) 随机函数,格式:RAND(N) 功能:系统随机产生一个纯小数(01),三种情形: 若N=1,则每次产生一个相同的纯小数。,19,(5) 取子串函数,格式:SUBSTR(,) LEFT(,) RIGHT(,) 功能:SUBSTR()从指定字符表达式值的指定位置开始,取指定长度个字符串组成一个新的字符串作为函数值。在SUBSTR()函数中,若缺省参数,则函数从指定位置一直到最后一个字符;LEFT()从指定表达式值的左边开始取个字符组成一个新串作为函数值;RIGHT()从指定表达式值的右边开始取个字符组成一个新串作为函数值。,20,(6) 求字符串长度函数,格式:LEN() 功能:返回定字符表达式值的长度,即所包含的字符个数。若空串则其长度为0。函数值为数值型。,(7) 产生重复字符函数,格式:REPLICATE(,) 功能:将字符表达式值重复次组成的字符串作为函数值。,例6 取子串函数的使用。 STORE “My Computer“ TO c m=“宜居重庆、畅通重庆、森林重庆、平安重庆和健康重庆“ ? substr(c,4,3),left(m,4),sibs(m,21,8)+subs(m,41), right(m,18) Com 宜居 森林重庆健康重庆 平安重庆和健康重庆,21,格式:STR(,) 功能:将的值转换为字符串,转换时根据需要自动四舍五入。返回字符串的长度应为:的整数位数+1位小数点+负号(正号自动省略不占位数)。若大于字符串长度,则字符串加前导空格补齐;若大于等于的整数位数(包括负号)但又小于字符串长度,则优先满足整数部分而自动调整小数位数;若小于值的整数位数,则返回由“*”组成的字符串。默认值为0,默认值为10。,(9) 字符串转换为数值函数,格式:VAL() 功能:将数字形式的字符串(包括正负号、小数点)转换为相应的数值型数据。若字符串内遇到对数字无效的字符则停止转换,若字符串的首字符为非数字符,则返回值为0,但忽略前导空格。,(8) 数值转换成字符串函数,22,1.3 VFP程序设计基本语句,格式: STORE TO | 或:|=,赋值语句,格式 :DIME (),(,) 比如:DIME A(2), B(2,2) 表示数组A有两个元素,分别是A(1)和A(2)。数组B有4个元素,分别为B(1,1),B(1,2),B(2,1),B(2,2)。 引用:数组中每个有序变量构成数组的成员,称之为数组元素。数组元素的名称使用数组名和用括号括起来的下标组成。 数组下标可以是常量、变量和表达式,如A(l),A(b1),A(a+b);数组的第一个下标是1,也就是说数组下标是从1开始的;,数组定义语句,23,格式:?|? 功能:先计算各表达式值(逗号间隔)并按标准格式输出结果。 ? 表示先显示输出,后回车换行; ? 表示不回车换行输出;,显示输出语句,格式:INPUT TO | 功能:在屏幕上显示,并等待用户从键盘上输入表达式,再把表达式的值赋给指定的。 说明: 可接受任何类型的表达式的值。 选项省略时,屏幕上无提示信息而直接等待用户的输入。例如:PName=“张三” INPUT “请输入姓名为”+Pname+“的学生成绩:” TO SCORE, INPUT输入语句,24,格式:ACCEPT TO | 功能:在屏幕上显示,等待用户从键盘上输入,再把输入内容作为字符串常量赋值给指定的变量。 只能接受字符型数据。 接受的字符型数据在输入时不需要加定界符。, ACCEPT输入语句, 其它语句 clear 清屏 retrun 返回 cancel 终止,若接收字符型常量,则需要把该常量两边的定界符同时输入。若接收表达式,则得到的值为该表达式计算后的值。,25,第二讲 控制结构及程序设计 应用举例,算法:,对于一个实际问题,要编制一个程序,首先需要构建解决该问题的算法,即解决问题的方法和逻辑步骤,是对特定问题求解步骤的一种描述。,例7 问题求解:s=1+2+3+4+n 分析:这是一个典型的数学问题,可以描述为:先确定终值,再依次从数字1、2、3、n开始进行累加,记住每一次的中间结果,一直到完成为止。,26,程序流程图: 以特定的图形符号加上说明,表示算法的图,称为流程图或框图。,规则:从上到下,从左到右。,符号及其意义:,现在,我们换一种方式来进行描述: 第1步:输入终值,存放在变量n中 第2步:s=0 i=1 第3步:s=s+i 第4步:判断n的值是否小于等于n 如果是则转到第3步重复执行,否则执行第5步 第5步:输出s值 第6步:结束,27,顺序结构:就是计算机要按照程序中语句出现的先后次序依次执行各条语句的结构。顺序结构是程序设计中最常见、使用最多的结构。,2.1 顺序结构,A,B,入口,出口,clear input “请输入圆的半径:” to r s=3.14159*r*r ? “圆面积s=”, s return,例8 编程求圆面积。,28,例9 已知任意一个五位自然数,要求将其反序输出,并求各数位之和。比如,输入数63378,要求通过数据处理输出数87336,各数位之和为27。方法一,clear INPUT “请输入任一个五位自然数:“ TO x a1=INT(x/10000) a2=MOD(INT(x/1000),10) a3=MOD(INT(x/100),10) a4=INT(x%100/10) a5=x%10 ?“自然数“+STR(x,5)+“的反序数为:“,a1+a2*10+a3*100+ a4*1000+a5*10000 ?“自然数“+STR(x,5)+“的各数位之和为:“,a1+a2+a3+ a4+a5 return,29,方法二,clear INPUT “请输入任一个五位自然数:“ TO x k=ALLTRIM(STR(x) a1=SUBSTR(k,1,1) a2=SUBSTR(k,2,1) a3=SUBSTR(k,3,1) a4=SUBSTR(k,4,1) a5=SUBSTR(k,5,1) ? “自然数“+k+“的反序数为:“,VAL(a5+a4+a3+a2+a1) ? “自然数“+k+“各数位之和为:”, VAL(a1)+VAL(a2)+VAL(a3)+VAL(a4)+VAL(a5) return,30,2.2 选择结构,条件判断,双(单)分支选择格式: IF THEN ELSE EDNIF,条件,真,序列1,假,序列2,入口,出口,功能:若值为.T.,则执行,之后执行ENDIF的后继语句;若值为.F.,如果有ELSE选项,则执行,之后执行ENDIF的后继语句,如果没有ELSE选项,直接ENDIF的后继语句。,使用时,IF和ENDIF必须成对出现,否则,程序将无法正确执行。,31,例10 判断某一年是否是润年。 clear input “请输入年份:” to y if y%4=0 and y%1000 or y%400=0 ? y,”是闰年” else ? y,”不是闰年” endif cancel,润年条件:如是润年则能被4整除但不能被100整除,或能被400整除。,提示:判断一个数m能否被另一个数n整除,常见的有3种方法:若 m%n=0、MOD(m,n)=0、INT(m/n) =m/n,则m能被n整除。,32,多分支选择格式: DO CASE CASE 逻辑表达式1 命令序列1 CASE 逻辑表达式2 命令序列2 CASE 逻辑表达式n 命令序列N OTHERWISE 命令序列 ENDCASE,逻1,真,序列1,假,逻2,真,序列2,出口,假,逻n,真,序列N,假,序列,说明:从第一个条件开始,当找到一个逻辑表达式的值为.T.时,就执行紧跟其后的命令序列,直到下一个CASE或者ENDCASE语句为止,并跳出DO CASE语句。 如果所有CASE语句后的逻辑表达式的值都为.F.,此时,如果有OTHERWISE子句,则执行OTHERWISE后面的命令序列。如果没有OTHERWISE子句,就退出该结构执行EDNCASE语句后面的语句,如图所示。,33,例11 输入一个成绩,将百分制转化为五分制。,CLEAR INPUT “请输入学生成绩:” TO sc DO CASE CASE sc=90 ? “优秀” CASE sc=80 ? “良好” CASE sc=70 ? “中等” CASE sc=60 ? “及格” OTHERWISE ? “不及格” ENDCASE return,34,2.3 循环结构,程序经常会重复执行某些相同的操作,如: 求:s=1+2+3+4+100,此类根据某个条件重复执行相同算法的结构,称为循环。,clear s=0 for i=1 to 100 s=s+i endfor ? “s=”,s return,程序:,算法描述: s=0 i=1 s=s+i i=i+1 判断i是否小于等于100 如果i小于等于100,重复 否则,结束。,初始化部分,循环体,含有趋假的语句,循环条件,循环应在有限次完成,35,当循环,DO WHILE LOOP EXIT ENDDO,条件,真,循环体语句 LOOP EXIT,假,含有使条件趋假的语句,功能:执行过程描述如下: 当程序执行到DO While时,先计算的值; 对的值进行判断,即判断条件是否成立; 若值为.F.,则退出循环,执行enddo的后继语句; 若值为.T.,则执行循环体; 执行循环体时,当遇到LOOP语句,则结束本次循环,转到继续执行; 执行循环体时,当遇到EXIT语句,则结束本层循环,执行ENDDO的后继语句。,36,例12 用DO WHILE循环结构编程求: 1+2+3+100,CLEAR s=0 i=1 DO WHILE i=100 s=s+i i=i+1 ENDDO ? “1+2+3+100=“, s RETURN,分析:本问题可按以下步骤实现: 步骤一:初始化求和变量s和循环变量i。s用来保存每次累加的结果,初值为0;i既是被累加的数据,也是控制循环的变量,初值为1;,程序:,步骤二:每循环一次,s的值增加i,i的值增加1,直到i的值超过100; 步骤三:循环结束,输出结果。,37, FOR循环,FOR TO STEP EXIT LOOP ENDFOR|NEXT,i=,i超过终值,否,循环体 loop exit,i=i+步长,是,循环体,CLEAR s=0 input “请输入n的值” to n FOR i=1 TO n s=s+i ENDFOR ? “1+2+3+n=“, s RETURN,38,功能:执行过程描述如下: 当程序执行到FOR时,先将赋给循环变量; 判断循环变量的值是否超过; 若循环变量的值超过则转到,若循环变量的值没有超过则执行循环体; 执行循环体时,当遇到LOOP语句,则结束本次循环,转到继续执行; 执行循环体时,当遇到EXIT语句,则结束本层循环,执行ENDFOR的后继语句; 循环体执行完毕,循环变量自动增加一个步长,自动转到继续执行; 结束循环,执行ENDFOR的后继语句。,说明:当STEP省略时,默认为1;“循环变量的值超过”的含义是:大于等于0则增加,小于0则减少;结束语句ENDFOR也可用NEXT代替。,39,例13 输入10个自然数,统计其中偶数的个数及偶数值。,clear is=0 ic=0 For i=1 to 10 input “请输入第”+str(i,2)+“个数:” to x if i%2=0 is=is+x ic=ic+1 endif endfor ?”偶数个数为:”, ic ?”偶数之和为:”, is cancel,40,例14 编程实现:请输出右下图所示的任意行数的三角形。,程序:,CLEAR INPUT “请输入三角形的行数:“ TO n FOR i=1 TO n ? REPL(“*“,2*i-1) AT 51-i ENDFOR RETURN,分析:要编程输出该图形,主要需确定两个方面的问题:一是行数与“*”个数的关系(第i行的“*”个数为 2*i-1);二是各行输出的起始位置(若第1行为50,则第2行为49,以此类推,每行递减1)。,* * * * * * * * * *,41,例15 编程实现:先随机产生30个100500之间的整数,放在一个一维数组中并输出。然后,统计其中奇数和偶数的个数。,CLEAR DIME x(30) ? “随机产生的30个100500间的整数为:“ ? FOR i=1 TO 30 x(i)=100+INT(RAND()*400) ? STR(x(i),5) ENDFOR g=0 h=0 FOR i=1 TO 30 IF x(i)%2=0 g=g+1 ELSE h=h+1 ENDIF ENDFOR ? “奇数个数为:“, h ? “偶数个数为:“, g RETURN,程序:,42,例16 求100到200之间的所有素数(只能被1和自身整除的数)。,clear ?“100200间的素数有:“ for k=101 to 200 step 2 f=0 for j=2 to int(sqrt(k) if k % j=0 f=1 exit endif endfor if f=0 ? k endif endfor,如:设置变量f用于记录是否为素数, f=0是素数; f=1不是素数。,在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。, 多重循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论