第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx

上传人:b****3 文档编号:8069818 上传时间:2023-05-10 格式:DOCX 页数:32 大小:49.46KB
下载 相关 举报
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第1页
第1页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第2页
第2页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第3页
第3页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第4页
第4页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第5页
第5页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第6页
第6页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第7页
第7页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第8页
第8页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第9页
第9页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第10页
第10页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第11页
第11页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第12页
第12页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第13页
第13页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第14页
第14页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第15页
第15页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第16页
第16页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第17页
第17页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第18页
第18页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第19页
第19页 / 共32页
第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx

《第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx(32页珍藏版)》请在冰点文库上搜索。

第四章程序设计Visual Foxpro 程序设计教案Word格式文档下载.docx

⑵内存变量

独立于表文件而存在于内存中的存储单元,它可以用来在程序的执行过程中保留中间结果与最后结果。

内存变量的类型包括CDLNTY六种类型,类型取决于它所存放的值。

内存变量与字段变量同名,系统优先处理字段变量,可用前缀m.引用内存变量。

变量的初值:

在程序中若要使用变量,必须在使用之前为变量设定一个初值(以后根据需要还再改变它的值),这一操作可通过赋值语句实现。

赋值语句可以将指定的值赋给该变量。

一般格式为:

a.变量名=表达式

系统计算<

表达式>

的值,并将结果送入指定的变量。

b.store<

to<

内存变量名表>

的值,并将结果送入<

中的各个变量中。

说明:

Ⅰ、计算机先计算右边表达式的值,然后再将该值赋给指定变量。

Ⅱ、不要将赋值号(=)与是数学中的等号混淆,a=5应读作“将数值5赋给变量a”或是“使变量a的值等于5”。

不同于数学表达式,下面两个语句的作用是不同的

x=y

y=x

Ⅲ、不同于C语言,VFP是一种弱类型语言,它允许通过此语句随时定义一个变量,并其值可以随时改变。

x=10&

&

定义变量x,并赋初值

x=x+10&

将x的值在原来的基础上增10

x=x*x&

将x的值平方后再赋值给x

Ⅳ、z=x+y不能写成x+y=z

Ⅴ、在引用一个变量前必须确保它已经赋值。

x=3

y=x*10

y=z+2&

此时系统提示出错:

找不到变量z

[例1]

usesb

browse

?

名称&

显示字段名称的值

名称=”计算机”&

定义内存变量名称,c型,

m.名称&

显示内存变量姓名的值

[例2]

store28.21toa

store“宿州学院”tob

store.t.toc

d=$100

e={^2002.5.10}

store0tox,y,z

数组

运算符和表达式

运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,如加、减、乘、除,而参与运算的数据称为操作数。

表达式由运算符和配对的圆括号将常数、变量、函数等操作数以合理的形式组合而成的式子。

一、算术运算符及数值表达式

a.算术运算符。

它们运算的含义与数学中基本相同。

+加法、正号

-减法、负号

*乘法,同数学中的×

/除法,同数学中的÷

^或**乘方,同数学中的乘方,如4^3或4**3表示43

%求余,12%5表示12除以5所得的余数2

()括号,只允许出现圆括号

算术运算符在计算时的优先次序是:

()→^**→*/%→+-

b.算术表达式

50*2+(70-6)/8,

a+b/a-b,(a+b)/(a-b)(哪个相当于

c.注意事项:

算术表达式与数学中的数学表达式写法有所区别,在书写表达式时应当特别注意:

每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。

23要写成2^3,

X1十X2要写成X1+X2。

原来在数学表达式中省略的内容必须重新写上。

2X要写成2*X。

所有括号都用小括号(),且括号必须配对。

3[x+2(y+z)]必须写成3*(x+2*(y+z))。

要把数学表达式中的某些希腊、拉丁符号,改成VFP中可以表示的符号。

要把2πr改为2*pi()*r。

数学的求根公式

应写成(-b+sqrt(b^2-4*a*c))/(2*a)和(-b-sqrt(b^2-4*a*c))/(2*a),这里的sqrt是个数学函数,求数的平方根。

二、字符串运算符及字符表达式

字符串运算符

c1+c2将c1和c2连接形成一个新串。

c1-c2将c1的尾部空格移到c2后在连接成新串。

"

ABCl23"

+"

666xyz"

连接后结果为:

ABCl23666xyz"

ABC"

-"

DEFG"

ABCDEFG"

三、日期表达式

日期+天数、日期-天数、日期1-日期2

四、关系运算符及关系表达式

用于判定指定的数据是否满足给定的关系,若满足计算的值为.t.;

否则结果为.f.

(1)运算符

=等于

>

大于

=大于等于

<

小于

=小于等于

>

或#或!

=不等于

c1$c2判断c1是否包含在c2中

==字符型数据的精确相等

(2)表达式常用于表示条件

5>

3&

结果为.t.

x=3

store“中国北京”tos1

store“北京”tos2

s2$s1&

结果.t.

s1$s2&

结果.f.

五、逻辑型运算符及逻辑型表达式

逻辑型运算符将逻辑型数据连接起来的式子。

前面关系运算的结果是逻辑型,因而逻辑型运算符常用于描述较复杂的关系,例如1≤x≤10等。

(1)运算符

①and与操作(.and.)

格式:

条件1and条件2

x>

=1andx<

=10

只有两个条件都为.t.时,结果为.t.(也称条件满足);

否则结果为.f.(也称条件不满足)。

②or或操作(.or.)

条件1or条件2

x<

=-1orx>

=1

两者中只要有一个条件.t.,结果为.t.;

否则,结果为.f.

③not条件取反(.not.)

not条件

notx>

1相当于x<

对条件取反

复合条件运算符在计算时的优先次序是:

not→and→or

(2)表达式

数学式1≤x≤10

(x>

=1)and(x<

=10)

a是偶数或是3的倍数

a%2=0ora%3=0

a≤b也可以写成

nota>

b或a<

=b

任意三个数能否构成三角形的判定条件:

a+b>

canda+c>

bandb+c>

a

year是否闰年:

(year%400=0)or(year%4=0andyear%100<

0)

一个表达式中出现多种运算,先进行算术运算,再比较大小,最后将比较结果进行复合。

常用函数

在VFP中,算术运算仅提供加减乘除的四则运算,如何求一些复杂的运算(例如正弦、余弦)呢?

学过高数的同学知道有个“泰勒公式”,太复杂!

事实上,为方便用户编程,每种程序设计语言都提供功能强大的系统函数(与数学上的函数没有什么区别)供用户调用,从而避免了一些繁琐的计算。

从程序设计的角度来看,函数是子程序的一种,它能完成一种特定的运算。

函数有三要素:

函数名、逗号分开的参数、函数值。

例如abs(-9),max(9,-3)等。

我们用户在学习使用这些函数时要注意参数的个数、参数的约束条件及函数值的类型,比如date()是无参函数,返回一个日期值;

求平方根函数sqrt需要一个参数,并且只能是个非负数。

1.数值函数

函数格式

说 

明 

abs(n)

求n的绝对值 

abs(-9)的值是9

int(n)

取n的整数部分例如:

int(4.5)的值是4,int(-4.5)的值是-4

sin(n)

cos(n)

对n分别求正弦和余弦值

max(n1,n2,…)

min(n1,n2,…)

求n1、n2…中的最大者例如:

max(9,3)的值是9

求n1、n2…中的最小者例如:

min(9,3)的值是3

sqrt(n) 

求n的平方根(n>

=0) 

sqrt(9)的值是3

mod(m,n)

求m%n的值,可用%替代。

rand([n])

返回0到1之间的随机数

2.字符函数

len(c)

求字符串c长度。

例如len(“a123bcde”)的值是9。

Len(“奥运会”)的值为6,len(””)的值为0

space(n)

产生含有n个空格的字符串。

例如space(5)得到字符串””。

alltrim(c)

删除字符串c的首尾空格。

substr(c,n[,m])

求子串。

从字符串c中提取从n开始的m个字符的子串。

substr(“abcde”,2,3)结果”bcd”,substr(“abce”,1,1)结果”a”,substr(“abce”,2)结果”bce”。

left(c,n)

right(c,n)

右或左取字符串c的n的字符形成一个新串

upper(c),lower(c)

求字符串c的大写或小写形式的字符串

replicate(c,n)

将指定的c重复n次,形成一个字符串

at(c1,c2)

求串c1在c2中第一次出现的位置;

若不出现c2中,返回值为0

3.日期函数

函数格式

date()

返回系统日当前日期

time()

返回系统日当前时间

year(d)

month(d)

day(d)

对一个日期求四位年份、月份、日数

4.转换函数

转换函数的作用是将某一种数据类型转换成另一种数据类型,以便在一起参加运算。

str(<

n1>

[<

n2>

[,n3]])

将数值n1转换成数字字符串(n→c)

val(c)

将字符串c转换成数值型数据(c→n)

asc(c)

求字符串c中首字符的asc值

”A”~”Z"

的asc值是65~90;

”a”~”z”的asc值是97~122

chr(n)

根据asc值求对应的字符

ctod(c)

将形如日期的字符串c转换成日期型数据

见例3-36,37,38,39

5.测试函数

eof([n]),bof([n])

判定表文件的记录指针是否到文件头或文件尾

recno([n])

求表文件的当前记录号

reccount([n])

求表文件的总记录个数

found([n])

测试针对表文件的查找是否成功

type(“表达式”)

测试表达式的类型例如:

type(“12”)值是n,type(“[12]”)值为c

iif(<

条件表达式>

<

值1>

值2>

测试条件表达式的值,若为.t.,函数的值是<

否则函数的值是<

说明:

⑴这里的n均指表所在的工作区,缺省时指当前工作区。

⑵type函数形式较特殊。

§

4.1程序文件

4.1.1程序文件的建立与执行

一、程序文件(*.prg)的建立与修改

命令格式:

modifycommand<

文件名>

(1)程序文件由VFP命令组成。

文件名前也可以指明路径,如:

modifycommande:

\s12\qh

(2)关闭编辑窗口的方法:

Ctrl+W;

Esc;

双击控制菜单;

关闭按钮

(3)文本编辑窗口也可以编辑由ASCII字符组成的非.PRG文件。

二、程序的运行

Do<

功能:

执行程序

Do也可以运行其它程序,<

必须包含扩展名。

三、程序书写规则

1、命令分行

续行符’;

2、命令注释

独立的注释行是以*开头;

注释部分以&

开头。

[例]

*本程序用于修改表的指定记录

setdateUSA&

日期格式设置为MM-DD-YY

四、求解的基本逻辑与程序通用性

1、求解的基本逻辑

输入数据处理数据输出数据

r=3

s=3.14*r*r

”圆面积=”,s

2、程序的通用性

4.1.2程序文件中的专用命令

一、程序结尾的专用命令

return:

使程序结束执行,返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。

一般缺省。

cancel:

能使程序运行终止,清除程序的私有变量,并返回到命令窗口。

quit:

正常退出VFP,自动保存文件,并删除磁盘中的临时文件,程序终止运行后返回到Windows。

二、输入输出专用命令

命令基本格式:

@<

行,列>

[say<

表达式1>

][get<

变量名>

][default<

表达式2>

]

(1)<

表示数据在窗口中显示的位置。

(2)say子句用来输出数据,get子句用来输入数据及编辑数据。

(3)get子句中的变量必须具有初值,或用default子句的<

指定初值。

(4)get子句的变量必须用read命令来击活。

[例4-1]编程根据记录号来修改某设备的价格和部门。

*e4-1.prg

clear

jlh=1

@2,10say“请输入记录号:

”getjlh

read

gojlh

@4,10say“请修改第”+str(jlh,1)+”个设备的数据:

”&

输出提示字符串

@6,10say“价格”get价格

@8,10say“部门”get部门

use

三、wait命令

wait[<

信息文本>

][to<

内存变量>

][windows[at<

行>

列>

]]

[nowait][clear|noclear][timeout<

数值表达式>

(1)wait命令使VFP程序暂停执行,等用户按任一键后,程序继续执行。

(2)<

用来保存键入的字符,如果不选to子句,则输入的数据不予保存。

(3)如果缺省<

,则执行命令后屏幕显示”按任意键继续…”,提示按任一键继续执行。

(4)Windows子句可使主屏幕上出现一个wait提示窗口,位置由wait选项的<

来指定。

若缺省at选项,<

将显示在主屏幕右上角。

(5)若使用nowait选项,系统将不等用户按键,立即往下执行。

(6)clear选项用来关闭提示窗口。

Noclear表示不关闭提示窗口,wait窗口将在执行到下一个wait…window命令时自动关闭。

(7)timeout子句用来设定等待时间(秒数),一旦超时自动往下执行命令。

[例4-2]wait命令输出信息示例

wait“请检查输入内容!

”window

4.2程序的控制结构

4.2.1顺序结构

按照语句排列顺序的先后执行。

4.2.2分支结构

一、简单的条件语句

语句格式:

if<

逻辑表达式>

<

语句序列>

endif

[例4-3]将sb.dbf中第一个非主要设备的价格减少10%。

*e4-3.prg

locatefoenot主要设备

iffound()

display名称,价格

replace价格with价格*(1-0.1)

endif

use

return

二、带else的条件语句

if<

<

语句序列1>

else

语句序列2>

宏代换函数格式:

字符型内存变量>

[,<

字符表达式>

替换出字符型内存变量的值。

[例4-4]宏代换示例

m=5

x=”m”&

x为字符型内存变量

x&

显示m

显示5,得到了变量x的值。

[例4-5]试编一程序,能打开任意一个表来浏览。

*4-5.prg

@5,10say“请输入表名:

”getbmdefaultspace(10)

bm=alltrim(bm)

iffile(“&

bm.dbf”)

use&

bm

browse

else

wait”该文件不存在!

VFP不允许直接用变量名作为表名。

还可以用use(bm)。

三、多分支语句

docase

case<

逻辑表达式1>

逻辑表达式2>

……

逻辑表达式n>

语句序列n>

[otherwise

<

语句序列n+1>

endcase

[例4-6]显示当前季节程序

*e4-6.prg

yue=month(date())

caseinlist(yue,3,4,5)

jj=”春”

caseinlist(yue,6,7,8)

jj=”夏”

caseinlist(yue,9,10,11)

jj=”秋”

caseinlist(yue,12,1,2)

jj=”冬”

waitjjwindow

(1)if和endif必须成对出现;

docase和endcase必须成对出现。

(2)采用缩进的书写格式,便于理解和阅读。

(3)表达分支和循环的语句不能在一行写完,必须一行一行的写。

4.2.3循环结构

一、条件循环

dowhile<

enddo

[例4-7]试编一个程序,显示sb.dbf中所有单价超过10000元的设备名称。

*e4-7.prg

dowhilenoteof()

if价格>

10000

?

名称

skip

enddo

[例4-8]按9万元以上,1~9万元,1万元以下三级价格分档统计sb.dbf中设备的个数。

*e4-8.prg

store0tok1,k2,k3

docase

case价格>

90000

k1=k1+1

case价格<

k3=k3+1

otherwise

k2=k2+1

endcase

”9万元以上设备个数:

”+str(k1)

”1~9万元设备个数:

”+str(k2)

”1万元以下设备个数:

”+str(k3)

二、步长循环

for<

=<

数值表达式1>

数值表达式2>

[step<

数值表达式3>

endfor|next

内存变量称为循环变量;

称为初值;

称为终值;

称为步长,缺省为1。

[例4-9]编写计算s=1+2+3+…+100的程序。

*e4-9.prg

s=0

fori=1to100

s=s+i

next

”s=”,s

三、扫描循环

scan[<

范围>

][for<

][<

endscan

scan针对于当前表进行循环。

[例4-10]根据4-7的要求,用扫描循环语句编程。

*e4-10.prg

scanfor价格>

四、循环辅助语句

dowhile<

Loop

exit

[例4-11]编程计算s=1+2+3+…+100,并求1~100之间的奇数之和。

*e4-11.prg

store0toi,s,t

dowhilei<

100

i=i+1

ifint(i/2)=i/2

Loop

t=t+i

”1+2+3+…+100=”,s

”1~100奇数和为:

”,t

五、多重循环(循环的嵌套)

[例4-12]在sb.dbf表中找出所有价格超过P的设备的编号、名称与价格,并要求在各输出行下显示一行虚线。

*e4-12.prg

@5,10say”请输入价格:

”getjgdefault0

scan

if价格<

jg

编号+space(3)+名称+space(3)+str(价格,9,2)

fori=1to30

”-“

endfor

4.3多模块程序

4.3.1子程序

一、调用和返回

调用:

Do

返回:

Return

二、带参数子程序的调用与返回

do<

程序名1>

[with<

参数表>

][in<

程序名2>

中的参数可以是表达式,但若是内存变量必须具有初值。

(2)当<

是in子句<

中的一个过程时,Do命令调用该过程。

子程序中的参数格式

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2