null第11章 VFP程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
基础程序文件(简称程序)也称命令文件。
在Visual FoxPro环境下,利用程序文件方式进行数据库管理,是通过程序文件编辑工具,将对数据库操作的一系列命令或对系统环境进行设置的一系列命令,集中在一个以(.prg)为扩展名的程序文件中,然后再通过菜单方式或命令方式运行该程序文件。
程序文件方式的工作特点是: 通过程序文件中的命令完成对数据库的操作和系统环境的设置。第11章 VFP程序设计基础null2、命令动词和VFP保留字均可用前4个或4个以上字母简写。 1、每一行只能书写一条命令。命令行的总长度不得超过2048个字符(包括空格在内),若命令较长,在显示器上显示不下时,可以分几行写,但除最后一行以外,每行的未尾以“;”结束。 3、命令、关键字、变量名和文件名中的字母既可以大写也可以小写,还可以大写、小写混合,三者等效。 VFP的源程序是由若干条命令组成。4、源程序的注释符: (NOTE,*(单独注释),&&(与命令行结合在一起))(一)、书写规则null(二)、源程序编写方法
1、通过VFP提供的集成环境来进行(项目管理器)
2、通过命令方式来进行。
具体的实现方法: (在命令窗口中)
modify command 文件名
(三)、源程序执行方法
DO 文件名
返回第二节、常用的命令语句第二节、常用的命令语句1、输入语句(P219)
input 提示信息 to 变量名
accept 提示信息 to 变量名
说明:
1)input可以用来输入各种类型的数据。输入相应的数据时,对应的定界符不能缺省。
2)accept只能用来输入字符型数据。(输入字符数据时不需要定界符)
null2、输出命令
1) ?表达式
??表达式
区别:
?输出结果之前光标定位在下一行进行输出
??输出结果之前光标定位不改变
2) \Textline:输出文本信息之前先换行
\\Textline:输出文本信息前不换行.
null3、赋值语句
1)简单赋值语句:
变量名=表达式
2)多变量赋值语句(同一个变量给予同一个值)
store 表达式 to 变量表列
例如:C=10; STORE 10.2 TO C1,C2
4、简单控制语句
1) do 程序名/子程序名:执行一个VFP程序或子程序
2)clear : 清除主窗口显示的内容。
3)set talk off/ON :禁止非输出性的执行结果显示在屏幕上或打印出来。 null例1:输入三角形3条边,求其面积。源程序代码如下:clear
Input ‘ 请输入第一条边’ to a
Input ‘请输入第二条边’ to b
Input ‘请输入第三条边’ to c
P=(a+b+c)/2
S=sqrt(p*(p-a)*(p-b)*(p-c))
?’三角形面积=‘+str(s)返回null1、选择结构程序的实现语句(p224)
1)单条件双分支语句
if <条件>
<语句组1>
[else
< 语句组2>
]
endifInput '请输入第一条边' to a
Input '请输入第二条边' to b
Input '输入第三条边' to c
if (a+b>c)and(a+c>b)and(b+c>c)
P=(a+b+c)/2
S=sqrt(p*(p-a)*(p-b)*(p-c))
?'三角形面积='+str(s)
else
?'输入的三条边不正确'
endif
retu null2)多条件多分支语句DO CASE
CASE<条件表达式1>
<语句组1>
CASE <条件表达式2>
<语句组2>
……
OTHERWISE
<语句组n+1>
ENDCASE
set talk off
clear
input '请输入成绩' to grade
do case
case grade>=90 and grade<=100
?'优秀'
case grade>=80 and grade<90
?'良好'
case grade>=70 and grade<80
?'中'
case grade>=60 and grade<70
?'合格'
case grade>=0 and grade<60
?'不及格'
otherwise
?'输入数据错误'
endcasenull2、循环结构程序的语句实现
在VFP中的循环结构有三种形式
1)条件型:DO WHILE……ENDDO
2)固定次数的步长型:FOR……ENDFOR
3)处理数据表的扫描型循环:SCAN……ENDSCAN<1>、条件型:
DO WHILE<循环条件>
<循环体>
[EXIT]/[LOOP]
ENDDOnull例如:输入10个正整数,求其和.N=1
s=0
Do while n<=10
input "一个整数" to x
s=s+x
N=n+1
Enddo
?"结果是="+str(s)null<2>固定次数循环语句
FOR <循环控制变量>=<初值> TO <终值> [STEP <步长>]
<循环体>
[EXIT]/[LOOP]
ENDFOR <循环控制变量>/NEXT<循环控制变量>例如:输入10个正整数,求其和.null返回 s=0
for n=1 to 10 step 1
input "一个整数" to x
s=s+x
Endfor
?"结果是="+str(s)null第四节、数组及其应用(P82)数组是一组有序内存变量的集合。
所有的数组元素是用一个变量名命名的一个集合体,而且每一个数组元素在内存中独占一个内存单元,视同一个简单内存变量。为了区分不同的数组元素,每一个数组元素都是通过数组名和下标来访问的
在Visual FoxPro系统环境下,同一个数组元素在不同时刻可以存放不同类型的数据,在同一个数组中,每个元素的值可以是不同的数据类型。一、数组定义null在使用数组时一定要先定义 ,有两条命令可以定义数组。DIMENSION <数组名1>(<行>[,<列>])[,<数组名2> (<行>[,<列>])……] DECLARE<数组名1>(<行>[,<列>])[,<数组名2> (<行>[,<列>])……] 功能:定义一个或多个一维或二维的内存变量数组。
参数描述:DIMENSION和DECLARE为定义数组的命令动词。
<数组名1>:指定数组的名称,其规定与内存变量名相同。
(<行>[,<列>]):定义数组的维数和大小 。
说明:1、数组的下标的起始值为1 。
2、同一数组中的数组元素可以有不同的数据类型 。
3、二维数组中各元素按行的顺序依次排列 。二、定义数组null4、除了可以分别对数组元素赋值以外,也可对数组中的所有元素赋同一初值。
5、DIMENSION和DECLARE功能完全相同,常用DIMENSION。DIMENSION <数组名1>(<行>[,<列>])[,<数组名2> (<行>[,<列>])……]
DIMENSION A ( 2 , 3 ), BB ( 4 , 8 ) 定义数组: DIMENSION A(2,3),BB(4,8)
也可以一次只定义一个数组: DIMENSION A(2,3)
也可以只定义一维数组: DIMENSION A(6)定义数组命令使用示例nullSTORE <表达式> TO <数组名/数组元素> 格式一命令动词去向子句包含值的表达式接收值的数组名或元素STORE 0 TO A 将数值0赋给数组A的所有元素
STORE "李磊" TO A(2,1) 将字符串“李磊”赋给数组A的第2行第1列的元素。例格式二<数组名/数组元素>=<表达式> 接收值的数组名或元素赋值操作符包含值的表达式例A=.T. 将逻辑真值赋给数组A的所有元素三、数组元素的赋值操作返回第五节、VFP中子程序的应用第五节、VFP中子程序的应用在程序中可以调用用户根据问题需要而定义的子程序。(一)子程序的两种形式
1)过程
2)函数
(二)子程序的两种定义形式:
(1)与主调程序在同一文件中,放在主程序的后面进行定义。
(2)与主调程序不在同一文件中,但其文件名必须与子程序的名字相同。null1、过程
A、声明:
PROC 过程名 [形式参数表]
<过程体>
RETU
说明:形式参数表:可以是内存变量或数组变量。
若为数组变量,必须在过程体中用EXTERAL
ARRAY进行声明。
B、调用:
DO <过程名>WITH [实参数表]nullC、例:
Clear
Public sum
Sum=0
Do jc with 2
S=S+sum
Do jc with 3
S=S+sum
Do jc with 4
S=S+sum
?s
retuProc jc(t)
Jc=1
For I=1 to t
Jc=jc*I
Next
Sum=jc
Retu
nullClear
Dimension dgai(3),mm(5)
Dgai=3
Mm=‘student’
Do disp with dgai,mm
For I=1 to 3
??dgai(I),””
Next
For I=1 to 5
??mm(I),””
NextProc disp(aaa,bbb)
External array aaa,bbb
For j=1 to 3
??aaa(j),””
Next
For j=1 to 5
??bbb(j),””
Next
Aaa=‘teacher’
Bbb=5
retunull2、函数A、声明:
FUNCTION <函数名> [形式参数表]
<函数体>
RETU <表达式>
B、调用
=函数名 ([实参列表])
C、举例
null clear
dime bb(3,3)
bb=5
sum=s(@bb,3)
?sum
rutuFunc s(a,n)
external array a
s=0
for I=1 to n
for j=1 to n
s=s+a(I,j)
next j
next I
retu(s)例如:编制函数过程,计算矩阵的元素之和结果是:45null小结:数据的传递方式:
1)传址方式:把主调程序实参所在的内存单元地址传送给被调程序的形式参数,两者共用同一存储单元。被调程序在该单元上的改变必然可以在主调程序中反映出来。
注意:数组作为参数是,必须是传址方式。
在过程中若没有进行特别声明,参数传递都是传址方式。
在函数中,表传址时,在实参前加上符号“@”
2)传值方式:
在主调程序中,把实参的值存放到一个临时的内存单元中,然后把该临时单元的地址传送给过程中的形参。当被调程序的值改变时,仅仅是把临时单元的值改变,对主调的值不影响。null对过程:把变量变成表达式实现:加括号;
对函数:没有作特别声明时,是传值。
为统一起见,把变量加上一对圆括号,变成表达式,以实现数据的传值。Clear
q1=1
q2=2
Dimension q(3)
q=9
Do sub1 with (q1),(q2),q
?q1,q2,q(1)Proc sub1(t1,t2,t)
External array t
T1=t1+1
T2=t2+1
T(1)=t(1)+1
Retu
nullClear
Dimension dgai(3),mm(5)
Dgai=3
Mm=‘student’
=disp(@dgai,@mm)
For I=1 to 3
??dgai(I),””
Next
For I=1 to 5
??mm(I),””
Next主调程序Func disp(aaa,bbb)
External array aaa,bbb
For j=1 to 3
??aaa(j),””
Next
For j=1 to 5
??bbb(j)
Next
Aaa=‘teacher’
Bbb=5
retunull变量属性小结1)全局变量(public):在所有程序段中都可以使用的内存变量。必须先定义后使用。
2)局部变量(程序中没有加任何修饰符的变量):其作用域本程序段(包括所调用的子程序)内有效。执行完本程序段系统自动回收。
3)私有变量(local):其作用域在本程序段内有效(不包括所调用的子程序)。不能被更高层或更低层的程序访问。
4)屏蔽变量(private):将主调程序中定义的变量在当前程序中隐藏起来。在当前程序中其功能类似于局部变量。nullclear
a=5
b=3 (局部变量)
c=0
?'调用PROD前',a,b,c
do prod
?'调用PROD后',a,b,c
?'调用SUM前',a,b,c
DO SUM
?'调用SUM后',a,b,c
retuproc prod
c=a*b
?"prod子程序",a,b,c
retu
proc sum
private a,b,c(屏蔽变量)
a=3
b=4
c=a+b
?"SUM子程序",a,b,c
do prod
retu5,3,05,3,155,3,155,3,153,4,73,4,125,3,15nullclear
public a,b,c(全局变量)
a=5
b=3
c=0
?'调用PROD前',a,b,c
do prod
?'调用PROD后',a,b,c
?'调用SUM前',a,b,c
DO SUM
?'调用SUM后',a,b,c
retuproc prod
c=a*b
?"prod子程序",a,b,c
retu
proc sum
local a,b,c(私有变量)
a=3
b=4
c=a+b
?"SUM子程序",a,b,c
do prod
retu5,3,05,3,155,3,155,3,153,4,75,3,155,3,15返回nullclear
input"请输入第一个数"to a
input"请输入第二个数"to b
if a
本文档为【第11章VFP程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。