版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录VFP基本知识控制构造及程序设计应用举例1第1页clears=0fori=1to100s=s+iendfor?“s=”,sreturn例1编程求1+2+3+……+100第一讲VFP基本知识初始化部分数据处理(循环)部分输出部分结束语句2第2页1.1程序概念
程序设计:是计算机顾客将处理某一实际问题所用命令按一定逻辑次序编制成程序,并以文献形式寄存于磁盘过程。执行程序时,计算机按次序自动执行程序文献中命令。程序是为处理某一特定问题而编写一组命令有序集合。这些命令是按一定逻辑次序有机地结合在一起,并以文本文献形式存放在外存上,称为程序文献或命令文献,能够被多反复调和执行。VFP系统程序文献扩展名为.prg。在高级语言中,由于这些命令与我们日常生活中使用自然语言和数学语言类似,因此,习惯地将程序文献中命令称为语句。当程序运行时,计算机系统是从头开始、按逻辑次序自动地逐条执行程序中语句。3第3页1.2VFP语言基础1.常量处理过程中其值不发生变化量称为常量。常量用来表达一种详细、不变值。字符型C字符型常量也称字符串,一般用来表达文本类型信息。由中英文字符、数字、空格和特殊符号组成,其表达办法是用定界符将字符串括起来,定界符要求只能使用:一对双引号("")、一对单引号(''或一对方括号([])。一种字符型常量中字符个数称为其长度。一种西文字符长度为1,一种汉字字符长度为2,如字符串"VisualFoxPro"长度为13、"重庆沙坪坝"长度为10。不包括任何字符字符串("")叫空串,其长度为0。4第4页数值型N数值型常量也就是数学上常数,用来表达一种数量大小。由数字0~9、小数点和正负号组成,如12、3.1345、-6.78、8.5678E-10(科学计数形式,表达8.5678×10-10)等。逻辑型L逻辑型常量只有两个值:逻辑真和逻辑假,用来表达逻辑判断(运算)成果。用.T.、.t.或.Y.、.y.表达逻辑真,用.F.、.f.或.N.、.n.表达逻辑假。逻辑型数据在内存中只占一种字节,长度为固定1。例如:在命令窗口中输入如下命令:?123>200,"重庆"<="上海"在VisualFoxPro主窗口中显示成果为:.F..T.5第5页2.内存变量内存变量是目前内存中一种临时存放单元,其值是这个存放单元中寄存数据。内存变量一种临时变量,独立于数据表文献而存在,用来寄存数据运算过程中所需要常量、体现式值等中间成果或最后止果。使用内存变量应遵守“先定义后使用”标准,由赋值语句定义,其数据类型取决于所赋值数据类型。可根据实际需要,对一种内存变量进行数次赋值,该内存变量值为最后一次所赋值。内存变量赋值格式1:<内存变量>=<体现式>格式2:STORE<体现式>TO<内存变量表>6第6页功能:先计算体现式值,再赋给变量(在内存中分派存放单元,将值寄存其中,变量名为存放单元地址)。内存变量输出格式:?|??[<体现式1>[AT<N1>]][,<体现式2>[AT<N2>]……]功能:计算并输出各个体现式值。例2:内存变量赋值过程及含义。a=10b=a+51015目前内存空间2023H2023H2023Hab内存地址一种存放单元7第7页数组是一批有序数据集合,数组中每个数据称为一种数组元素,是具有相同名称而下标不一样一组有序内存变量。VFP系统允许定义一维和二维数组,数组也应遵守“先定义后使用”标准。3.数组格式:DIMENSION|DECLARE<数组名1>(<N11>[,<N12>])[,<数组名2>(<N21>[,<N22>])……功能:定义一种或多种一维数组或二维数组。数组中每个有序变量组成数组组员,称之为数组元素。数组元素名称由数组名和用括号括起来下标组成。数组元素下标必须用圆括号括起来;二维数组下标用逗号间隔;数组下标能够是常量、变量和体现式,在VFP系统中,二维数组是按行分派内存,允许使用一维数组形式访问二维数组。8第8页4.体现式进行数据处理时,将会使用诸如加减乘除、连接、大于等于、或等进行运算符号,称为运算符,由运算符和圆括号将多种数据(常量、变量、函数)连接起来有实际意义式子称为体现式。算术体现式算术运算符括号正负乘方乘除求余加、减()+-**或^*/%+-
高优先级低其中,求余运算符%和求余函数MOD功能一致,余数符号与除数相同。如,体现式25%3、-25%3、25%-3值分别为1、2、-2。9第9页算术体现式注意:在书写VFP体现式时,需将数学式中所有运算符(包括省略运算符)和运算量改写为VFP所要求运算符和运算量,并将所有字符书写在同一水平线上,必要时需添加成正确括号,以确保二者等价。算术体现式是用算术运算符将数值型常数、变量、函数等连接组成体现式,其运算成果是一种数值型常量。例3:将数学上代数式改写成VFP算术体现式。应为:(a**2+x1**2*y)/(5+x*y**2)或(a^2+x1^2*y)/(5+x*y^2)或(a*a+x1*x1*y)/(5+x*y*y)10第10页字符体现式完全连接运算字符体现式是由字符运算符将字符型常量、变量、字符处理函数连接组成体现式,运算成果也许是逻辑值或字符串。格式:<字符串1>+<字符串2>功能:将<字符串2>首字符与<字符串1>尾字符相连,组成一种新字符串。不完全连接运算格式:<字符串1>-<字符串2>功能:将<字符串2>首字符与<字符串1>尾部第一种非空格字符相连组成一种新字符串,尾部。同步将<字符串1>本来尾部空格置于新字符串11第11页包括运算格式:<字符串1>$<字符串2>功能:判断<字符串1>是否是<字符串2>子串,若是则体现式值为逻辑值.T.,不然为逻辑值.F.。字符体现式运算结果"重庆"$"中国重庆大学城".T."zgl"$"ZGL".F."张
"+"曦予"张
曦予"计算机
"-"世界"计算机世界
12第12页算术体现式关系运算符是用关系运算符将两个同类型运算对象连接起来体现式。其值要么为.T.(真),要么为.F.(假)。格式:<体现式><关系运算符><体现式><>=<=>=<>!=#
优先级相同关系体现式关系体现式运算结果"重庆">="中国重庆".T.n%2<>0若n值为偶数,则体现式值为.F."Com"=="Computer".F.x>y若变量x值大于变量y值,则体现式值为.T.,不然为.F.13第13页逻辑体现式逻辑体现式逻辑运算符用逻辑运算符将两个逻辑型数据连接组成体现式。逻辑体现式运算成果为逻辑值真或假。格式:<关系体现式><逻辑运算符><关系体现式>逻辑非(否)逻辑与(乘)逻辑或(加)!,NOT或.NOT.AND或.AND.OR或.OR.
高优先级低逻辑体现式含义x>yANDy>z若x=5,y=2,z=3,则值为.F.n%7=0ANDn/2=INT(n/2)自然数n能被7整除且能被2整除("张"$姓名or性别="女")and职称="副专家"职称是副专家、姓张或性别为女14第14页函数调用一般格式:
函数名([参数表])使用时应注意几个问题:函数名、参数、函数值称为函数三要素;所有函数名后必须有圆括号,不论是否有参数(&函数除外);每个函数都有一种确定返回值,使用时要尤其注意函数值数据类型。5.常用函数(1)取整函数格式:INT(<N>)功能:取数值体现式值整数部分(去掉小数部分,不进行四舍五入)。15第15页(2)求余函数格式:MOD(<N1>,<N2>)功能:求<N1>除以<N2>所得余数。余数正负号与除数相同,假如被除数与除数同号,那么函数值即为两数相除余数;假如被除数与除数异号,则函数值为两数相除余数再加上除数值。(3)四舍五入函数格式:ROUND(<N1>,<N2>)功能:对<N1>值保存<N2>位小数,对<N2>+1位进行四舍五入后。若<N2>大于等于0,表达是要保存小数位数;若<N2>不大于0,则表达是整数部分舍入位数。16第16页INPUT"请输入任一种五位自然数:"TOxa1=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。17第17页随机函数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])功能:系统随机产生一种纯小数(0~1),三种情形:若N<=0则每次产生一种不一样纯小数,默以为0;若0<N<1,则每次均产生数值0;若N>=1,则每次产生一种相同纯小数。18第18页(5)取子串函数格式:SUBSTR(<C>,<N1>[,<N2>])
LEFT(<C>,<N>)RIGHT(<C>,<N>)功能:SUBSTR()从指定字符体现式<C>值指定位置<N1>开始,取指定长度<N2>个字符串组成一种新字符串作为函数值。在SUBSTR()函数中,若缺省参数<N2>,则函数从指定位置<N1>始终到最后一种字符;LEFT()从指定体现式<C>值左边开始取<N>个字符组成一种新串作为函数值;RIGHT()从指定体现式<C>值右边开始取<N>个字符组成一种新串作为函数值。19第19页(6)求字符串长度函数格式:LEN(<C>)功能:返回定字符体现式<C>值长度,即所包括字符个数。若空串则其长度为0。函数值为数值型。(7)产生反复字符函数格式:REPLICATE(<C>,<N>)功能:将字符体现式<C>值反复<N>次组成字符串作为函数值。例6
取子串函数使用。
STORE"My
Computer"TOcm="宜居重庆、通畅重庆、森林重庆、平安重庆和健康重庆"?substr(c,4,3),left(m,4),sibs(m,21,8)+subs(m,41),right(m,18)Com宜居森林重庆健康重庆平安重庆和健康重庆20第20页格式:STR(<N>[,<长度>[,<小数位数>]])功能:将<N>值转换为字符串,转换时根据需要自动四舍五入。返回字符串长度应为:<N>整数位数+<小数位数>+1位小数点+负号(正号自动省略不占位数)。若<长度>大于字符串长度,则字符串加前导空格补齐;若<长度>大于等于<N>整数位数(包括负号)但又不大于字符串长度,则优先满足整数部分而自动调整小数位数;若<长度>不大于<N>值整数位数,则返回由“*”组成字符串。<小数位数>默认值为0,<长度>默认值为10。(9)字符串转换为数值函数格式:VAL(<数字字符串>)功能:将数字形式字符串(包括正负号、小数点)转换为对应数值型数据。若字符串内遇到对数字无效字符则停顿转换,若字符串首字符为非数字符,则返回值为0,但忽视前导空格。(8)数值转换成字符串函数21第21页1.3VFP程序设计基本语句格式:
STORE<体现式>TO<内存变量表>|<数组元素表>
或:<内存变量>|<数组元素>=<体现式>⒈赋值语句格式:DIME<数组名1>(<N1>)[,<数组名2>(<N2>[,<N3>])…
例如:DIMEA(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开始;⒉数组定义语句22第22页格式:?|??<体现式表>功能:先计算各体现式值(逗号间隔)并按标准格式输出成果。?表达先显示输出,后回车换行;??表达不回车换行输出;⒊显示输出语句格式:INPUT[<提醒信息>]TO<内存变量>|<数组元素>功能:在屏幕上显示[<提醒信息>],并等候顾客从键盘上输入体现式,再把体现式值赋给指定<内存变量>。说明:♥<内存变量>可接收任何类型体现式值。选项[<提醒信息>]省略时,屏幕上无提醒信息而直接等候顾客输入。例如:PName=“张三”INPUT“请输入姓名为”+Pname+“学生成绩:”TOSCORE⒋INPUT输入语句23第23页格式:ACCEPT[<提醒信息>]TO<内存变量>|<数组元素>功能:在屏幕上显示[<提醒信息>],等候顾客从键盘上输入,再把输入内容作为字符串常量赋值给指定变量。<内存变量>只能接收字符型数据。<内存变量>接收字符型数据在输入时不需要加定界符。⒌
ACCEPT输入语句⒍
其他语句clear清屏retrun返回cancel终止若接收字符型常量,则需要把该常量两边定界符同步输入。若接收体现式,则得到值为该体现式计算后值。24第24页第二讲控制构造及程序设计
应用举例算法:对于一种实际问题,要编制一种程序,首先需要构建处理该问题算法,即处理问题办法和逻辑步骤,是对特定问题求解步骤一种描述。例7
问题求解:s=1+2+3+4+…+n分析:这是一种典型数学问题,能够描述为:先确定终值,再依次从数字1、2、3、…、n开始进行累加,记住每一次中间成果,始终到完成为止。25第25页程序流程图:以特定图形符号加上说明,表达算法图,称为流程图或框图。规则:从上到下,从左到右。符号及其意义:流程线处理框判断框I/O框目前,我们换一种方式来进行描述:第1步:输入终值,寄存在变量n中第2步:s=0i=1第3步:s=s+i第4步:判断n值是否不大于等于n
假如是则转到第3步反复执行,不然执行第5步第5步:输出s值第6步:结束26第26页次序构造:就是计算机要按照程序中语句出现先后次序依次执行各条语句构造。次序构造是程序设计中最常见、使用最多构造。
2.1次序构造AB入口出口clearinput“请输入圆半径:”tors=3.14159*r*r?“圆面积s=”,sreturn例8编程求圆面积。27第27页例9已知任意一种五位自然数,要求将其反序输出,并求各数位之和。例如,输入数63378,要求通过数据处理输出数87336,各数位之和为27。办法一clearINPUT"请输入任一种五位自然数:"TOxa1=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+a5return28第28页办法二clearINPUT"请输入任一种五位自然数:"TOxk=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)return29第29页2.2选择构造⒈条件判断
双(单)分支选择格式:IF<逻辑体现式>[THEN]<命令序列1>[ELSE<命令序列2>]EDNIF条件真序列1假序列2入口出口功能:若<逻辑体现式>值为.T.,则执行<语句序列1>,之后执行ENDIF后继语句;若<逻辑体现式>值为.F.,假如有ELSE选项,则执行<语句序列2>,之后执行ENDIF后继语句,假如没有ELSE选项,直接ENDIF后继语句。使用时,IF和ENDIF必须成对出现,不然,程序将无法正确执行。30第30页例10判断某一年是否是润年。clearinput“请输入年份:”toyify%4=0andy%100<>0ory%400=0?y,”是闰年”else?y,”不是闰年”endifcancel润年条件:如是润年则能被4整除但不能被100整除,或能被400整除。
提醒:判断一种数m能否被另一种数n整除,常见有3种办法:若m%n=0、MOD(m,n)=0、INT(m/n)=m/n,则m能被n整除。31第31页多分支选择格式:DOCASECASE逻辑体现式1命令序列1
[CASE逻辑体现式2命令序列2…CASE逻辑体现式n命令序列N]
[OTHERWISE命令序列]ENDCASE逻1真序列1假逻2真序列2出口假逻n真序列N假序列说明:从第一种条件开始,当找到一种逻辑体现式值为.T.时,就执行紧跟其后命令序列,直到下一种CASE或者ENDCASE语句为止,并跳出DOCASE语句。假如所有CASE语句后逻辑体现式值都为.F.,此时,假如有[OTHERWISE]子句,则执行OTHERWISE背面命令序列。假如没有[OTHERWISE]子句,就退出该构造执行EDNCASE语句背面语句,如图所示。32第32页例11
输入一种成绩,将百分制转化为五分制。
CLEARINPUT“请输入学生成绩:”TOscDOCASECASEsc>=90?“优秀”CASEsc>=80?“良好”CASEsc>=70?“中等”CASEsc>=60?“及格”OTHERWISE?“不及格”ENDCASEreturn33第33页2.3循环构造程序经常会反复执行某些相同操作,如:求:s=1+2+3+4+…+100此类根据某个条件反复执行相同算法构造,称为循环。clears=0fori=1to100s=s+iendfor?“s=”,sreturn程序:算法描述:①s=0i=1②s=s+ii=i+1③判断i是否不大于等于100假如i不大于等于100,反复②不然,结束。初始化部分循环体,具有趋假语句循环条件,循环应在有限次完成34第34页⒈当循环DOWHILE<逻辑体现式>[<命令序列>][LOOP][EXIT]ENDDO条件真循环体语句LOOPEXIT假具有使条件趋假语句功能:执行过程描述如下:①当程序执行到DOWhile时,先计算<逻辑体现式>值;②对<逻辑体现式>值进行判断,即判断条件是否成立;③若<逻辑体现式>值为.F.,则退出循环,执行enddo后继语句;④若<逻辑体现式>值为.T.,则执行循环体;⑤执行循环体时,当遇到LOOP语句,则结束本次循环,转到②继续执行;⑥执行循环体时,当遇到EXIT语句,则结束本层循环,执行ENDDO后继语句。35第35页例12用DOWHILE循环构造编程求:1+2+3+…+100CLEARs=0i=1DOWHILEi<=100s=s+ii=i+1ENDDO?"1+2+3+…+100=",sRETURN分析:本问题可按下列步骤实现:步骤一:初始化求和变量s和循环变量i。s用来保存每次累加成果,初值为0;i既是被累加数据,也是控制循环变量,初值为1;程序:步骤二:每循环一次,s值增加i,i值增加1,直到i值超出100;步骤三:循环结束,输出成果。36第36页⒉FOR循环FOR<循环变量>=<初值>TO<终值>[STEP<步长>]<命令序列>[EXIT][LOOP]ENDFOR|NEXTi=<初值>i超出终值否循环体loopexiti=i+步长是循环体CLEARs=0input“请输入n值”ton
FORi=1TOns=s+iENDFOR?"1+2+3+…+n=",sRETURN37第37页功能:执行过程描述如下:①当程序执行到FOR时,先将<初值>赋给循环变量;②判断循环变量值是否超出<终值>;③若循环变量值超出<终值>则转到⑦,若循环变量值没有超出<终值>则执行循环体;④执行循环体时,当遇到LOOP语句,则结束本次循环,转到②继续执行;⑤执行循环体时,当遇到EXIT语句,则结束本层循环,执行ENDFOR后继语句;⑥循环体执行完成,循环变量自动增加一种步长,自动转到②继续执行;⑦结束循环,执行ENDFOR后继语句。说明:当STEP<步长>省略时,默以为1;“循环变量值超出<终值>”含义是:<步长>大于等于0则增加,不大于0则减少;结束语句ENDFOR也可用NEXT替代。38第38页例13输入10个自然数,统计其中偶数个数及偶数值。clearis=0ic=0Fori=1to10input“请输入第”+str(i,2)+“个数:”toxifi%2=0is=is+xic=ic+1endifendfor?”偶数个数为:”,ic?”偶数之和为:”,iscancel39第39页例14编程实现:请输出右下列图所示任意行数三角形。程序:CLEARINPUT"请输入三角形行数:"TOnFORi=1TOn?REPL("*",2*i-1)AT51-iENDFORRETURN分析:要编程输出该图形,主要需确定两个方面问题:一是行数与“*”个数关系(第i行“*”个数为2*i-1);二是各行输出起始位置(若第1行为50,则第2行为49,以此类推,每行递减1)。****************************************************************************************************40第40页例15编程实现:先随机产生30个100~500之间整数,放在一种一维数组中并输出。然后,统计其中奇数和偶数个数。CLEARDIMEx(30)?"随机产生30个100~500间整数为:"?FORi=1TO30x(i)=100+INT(RAND()*400)??STR(x(i),5)ENDFORg=0h=0FORi=1TO30IFx(i)%2=0g=g+1ELSEh=h+1ENDIFENDFOR?"奇数个数为:",h?"偶数个数为:",gRETURN程序:41第41页例16
求100到200之间所有素数(只能被1和本身整除数)。clear?“100~200间素数有:“fork=101to200step2f=0forj=2toint(sqrt(k))ifk%j=0f=1exitendifendforiff=0??kendifendfor如:设置变量f用于统计是否为素数,
f=0是素数;f=1不是素数。在程序设计中,经常要统计某些状态,作为判断条件。因此需要在程序中设置某些标志,一般标志是整型变量。⒊多重循环构造多重循环构造:是指循环体中又包括其他循环复杂程序构造。
42第42页⒋排序算法例17
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税务自查报告(3篇)
- 北京交通直博生就业分析
- 现代殡仪管理职业前景
- 2026事业单位工勤技能-江苏-江苏水生产处理工二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏城管监察员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆防疫员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆兽医防治员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-山东-山东家禽饲养员四级(中级工)历年参考题库含答案详解3套试卷
- DDIM技术就业前景分析
- 2026年秋季开学高二学习节奏学期安排课件
- 消除艾梅乙反歧视培训课件
- 煤矿110KV变电设备检修技术协议
- 2025版国际压疮指南
- 2025年农产品品牌授权
- 大疆在线测试题和答案
- 商务礼仪培训课程教学方案
- 设备维保三级管理制度
- 2026年云南省弥勒市房地产行业现状与前景分析
- 【2025年公基题库100】时政、公基常识试题及答案解析
- NY-T+541-2016+兽医诊断样品采集、保存与运输技术规范
- GB/T 9869.3-2025橡胶用硫化仪测定硫化特性第3部分:无转子硫化仪
评论
0/150
提交评论