专升本VF教材.docx

上传人:b****3 文档编号:6975571 上传时间:2023-05-10 格式:DOCX 页数:40 大小:30.14KB
下载 相关 举报
专升本VF教材.docx_第1页
第1页 / 共40页
专升本VF教材.docx_第2页
第2页 / 共40页
专升本VF教材.docx_第3页
第3页 / 共40页
专升本VF教材.docx_第4页
第4页 / 共40页
专升本VF教材.docx_第5页
第5页 / 共40页
专升本VF教材.docx_第6页
第6页 / 共40页
专升本VF教材.docx_第7页
第7页 / 共40页
专升本VF教材.docx_第8页
第8页 / 共40页
专升本VF教材.docx_第9页
第9页 / 共40页
专升本VF教材.docx_第10页
第10页 / 共40页
专升本VF教材.docx_第11页
第11页 / 共40页
专升本VF教材.docx_第12页
第12页 / 共40页
专升本VF教材.docx_第13页
第13页 / 共40页
专升本VF教材.docx_第14页
第14页 / 共40页
专升本VF教材.docx_第15页
第15页 / 共40页
专升本VF教材.docx_第16页
第16页 / 共40页
专升本VF教材.docx_第17页
第17页 / 共40页
专升本VF教材.docx_第18页
第18页 / 共40页
专升本VF教材.docx_第19页
第19页 / 共40页
专升本VF教材.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

专升本VF教材.docx

《专升本VF教材.docx》由会员分享,可在线阅读,更多相关《专升本VF教材.docx(40页珍藏版)》请在冰点文库上搜索。

专升本VF教材.docx

专升本VF教材

专升本VF教材

VFO程序设计复习

1程序设计概述

一、程序的概念

概念:

具有一定功能的计算机能执行的指令的集合。

例1:

显示表XSDA可编写成如下命令序

SETDEFATOF:

\表

USEXSDA

LIST

CLOSEALL

例2:

求a=3,b=2,c=5求a+b-c=?

程序test.prg代码如下:

a=3

b=2

c=5

x=a+b-c

?

x

二、常见的程序设计方法

1、 结构化程序设计(模块化)

结构化程序设计是一个面向过程的概念。

把一个实际问题分为两部分,即数据和过程。

经过动态的程序执行过程来对静态的数据进行处理,得出正确的结果。

由VFP命令和程序设计命令的组合,需编制和调试;

2、 面向对象的程序设计

3、结构化程序设计

它是面向过程程序设计的另一种描述,面向过程程序设计有如下特点:

①整个程序分为若干个模块,模块之间相衔接,且相对独立。

②第个模块只有一个入口和一个出口。

③第个模块都能单独执行,且在有限时间内执行完。

④采用自顶向下、逐步求精的方法。

三、程序三大基本结构

1、顺序结构:

执行是按命令出现的先后顺序执行。

2、分支结构:

按给定的条件成立与否来决定程序起向,分单向选择分支、双向选择分支和多路分支。

有以下两种

IF语句DOCASE

ENDIFENDCASE

3、循环结构:

程序的执行发生了自下而上的往复,某一程序段将重复执行。

有以下三种

DoWhileForSCAN

ENDDOENDFORENDSCAN

四、算法和流程图

算法:

解决某一问题的方法与步骤。

见教材例。

流程图:

算法的描述,除用自然语言描述外,计算机领域常见流程图(ANSI图和N-S图)描述。

见教材例。

例如:

乐山到成都怎么去?

1、 解一元二次方程的算法。

Ax2+bx+c=0,求x

2、 求出1-100之间的质数。

X/=>2到SQRT(X)

2程序的建立和执行

一、程序的扩展名:

PRG

实质:

文本文件(ASCII编码)执行时,会产生编译文件FXP后让计算机执行。

二、程序文件的建立和编辑

1、命令方式:

MODICOMM程序名.PRG(.PRG可省)

2、菜单方式;

文件=>新建=>程序

3、项目管理器中建立的方法:

建立项目管理器=>新建程序

4、其它方法:

其它可编辑文本的软件:

记事本\写字板\WORD\其它程序编辑器

注意:

希望编写程序之前事先设置好默认目录(setdefato……)然后我们编写的程序就会自动存储在那个目录中。

例如:

setdefatod:

\ks

modicommTest(相当于是:

modicommD:

\ks\test.prg)

三、程序的执行

1、命令方式

命令格式:

DO[盘符][路径]程序名

2、菜单方式:

“程序”菜单->“运行”命令

在“运行”窗口中输入被运行的程序文件名,即可运行程序。

四、VFP程序的分类:

数学类程序、涉及到表操作的程序

如果本程序是涉及到表操作的程序,那么:

1、在程序开始部分能够先加语句CLEAR和CLOSEALL

2、程序最后能够使用命令CLOSEALL

3、然后使用RETURN或CANCEL或QUIT

例:

找出并显示所有三好生

CLEAR

CLOSEALL

USE学生

LOCATEFOR三好生

DOWHILENOTEOF()

DISP

CONTINUE

ENDDO

CLOSEALL

RETUREN

3顺序程序设计与常见语句

一、程序设计中的常见语句

1、输入命令

(1)赋值命令

命令一:

STORE<表示式>TO<内存变量>

命令二:

<内存变量>=<表示式>

(2)交互式输入命令(注意:

输入数据是在程序执行的时候)

INPUT[提示信息]TO<内存变量>

ACCEPT[提示信息]TO<内存变量>

WAIT[提示信息][TO<内存变量>][TIMEOUT<等待时间>

说明:

①提示信息是C型,它会在屏幕上原样输出.

②WAIT命令的功能:

暂停程序执行,显示提示信息等待用户按键。

Wait命令中输入的只能是一个字符(C型)。

③Input适用于全部类型内存变量,输入时需要加定界符

④Accept只适用于C型,而且C型不加定界符

注意:

Input和accept在编写程序时语句都一样,只是执行程序(do)时,主屏幕上要求输入的类型和格式不同。

例1:

输入a、b、c的值,对2ax+b=c求x的值。

Clear

Input“现在计算2ax+b=c,请输入a的值:

”toa

Input“请输入b的值:

”tob

Input“请输入c的值:

”toc

x=(c-b)/(2*a)

?

’x的值为:

’,x&&比较使用?

’x的值为:

’+str(x,3)有何区别

return

例2、查找学生.dbf中的指定记录

clear

closeall

use学生

list

accept“请输入您想查找的姓名:

”toxm

Locatefor姓名=XM&&或命令SEEKXM

iffound()

DISP

else

?

’对不起,没有找到此人’

endif

list

closeall

Return

思考:

如果accept换成input,输入的时候该怎么输入?

例3、删除学生.dbf中的指定记录

clear

closeall

use学生

list

input“请输入您想删除的记录号:

”tox

delerecox

wait“你想彻底删除这条记录吗?

(y/n)”toask

ifask=’Y’orask=’y’

pack

endif

list

closeall

注意区分交换方式和程序方式:

有的命令能够在两种状态下执行(例如:

刚才的输入命令),但有些命令只能在程序方式下执行(例如:

循环语句和分支语句)

(3)格式输入命令

格式一:

@行,列say提示信息

格式二:

@行,列say提示信息get变量

……

READ

格式三:

@行,列say提示信息get变量default常量

功能:

在屏幕指定的坐标位置上显示提示信息,然后经过READ命令激活GET子句的变量值。

说明:

①GET后的变量能够是内存变量或当前打开的数据文件中的字段变量,若是内存变量,应在执行该命令前对内存变量赋值,否则就必须使用default参数赋初值。

②输入的值类型应该与初值类型相同。

③READ命令与GET命令必须配合使用。

多个GET命令能够只用一个READ命令配合。

如果没有read则表示只显示内容,不输入值。

例1:

编写程序完成在学生.DBF中追加记录

CLEAR

USE学生

APPENDBLANK

@5,20SAY“学号”GET学号

@5,40SAY“姓名”GET姓名

@7,20SAY“性别”GET性别

@7,40SAY“出生年月”GET出生年月

@9,20SAY“入校总分”GET入校总分

@9,40SAY“三好生”GET三好生

READ

CLEAR

LIST

CLOSEALL

RETURN

例2:

编程求长方形的面积。

CLEAR

X=0&&X为内存变量,赋初值

Y=0

@1,5SAY“计算长方形的面积”

@2,5SAY“输入长方形的长:

”GETX&&第2行5列显示提示信息并等待输入

@3,5SAY“输入长方形的宽:

”GETY&&第3行5列显示提示信息并等待输入

READ&&从键盘输入X,Y的值

S=X*Y&&计算长方形的面积

?

“长方形的面积:

”,S&&显示长方形的面积

CANCEL

 

思考题1:

如将上述例1程序改为按照指定学号来修改记录应该怎样做?

(答案见课件后)

3、输出命令

⑴:

非格式输出命令

?

和?

⑵:

格式化输出命令

@行,列say表示式

说明:

行和列都能够是表示式,常常能够使用函数ROW()和COL()

ROW()表示返回当前行的行号COL()表示返回当前列的列号

例1:

N=1

CH=“VF程序设计”

@N,26SAYSPACE(60)

@N+1,26SAYCH

例2:

循环输入值

clear

dimexh(10)

store0toxh

@10,10say'请输入数字:

'getxh

(1)

i=2

dowhilei<=10

@row()+1,10say'请输入数字:

'getxh(i)

i=i+1

enddo

read

listmemolikexh

4、其它程序运行命令

(1)终止程序执行命令

 CANCEL、QUIT和RETURN

QUIT:

退出程序运行而且退出VisualFoxpro

CANCEL:

退出程序运行

RETURN:

返回上级程序调用点,如果是主程序就表示退出程序。

主程序可缺省此命令返回(结束),即默认使用了return

注意:

上述命令执行完后都会自动clearmemory。

可是如果有数据库和表打开不会自动关闭,因此使用数据库和表后在程序结束时我们常常需要加命令:

closeall

(2)清屏命令

CLEAR

(3)注释命令( NOTE、*和&&)

注释的含义:

程序员对程序语句功能的说明,执行程序的时候不执行注释中的内容,注释只起到一个对语句说明的目的。

一般复杂程序中应有30%以上的注释。

(4)TEXT语句:

原样输出(参考书143例4.15)

(5)系统设置命令

set…on/off或者是set…to

1、设置会话状态

SETTALKON/OFF

2、设置跟踪状态

SETECHOON/OFF

3、设置打印状态

SETPRINTERON/OFF

4、设置定向输出状态

SETDEVICETOSCREEN

5、设置精确比较状态

SETEXACTTOON/OFF

6、设置日期格式

SETDATEANSI

7、色绘制系统提供的保护状态

SETSAFETYON/OFF

8、设置删除记录标记状态(掌握)

SETDELETEDON/OFF

功能:

屏蔽或处理有删除标记的记录

说明:

在命令格式中选择ON时,各命令当不对有删除标记的记录进行操作,但索引除外。

系统默认值为OFF

思考题1答案:

CLEAR

USE学生

ACCEPT"请输入需修改记录的学号:

"TONUM

LOCATEFOR学号=NUM

@5,20SAY"学号"GET学号

@5,40SAY"姓名"GET姓名

@7,20SAY"性别"GET性别

@7,40SAY"出生年月"GET出生年月

@9,20SAY"入校总分"GET入校总分

@9,40SAY"三好生"GET三好生

READ

CLEAR

LIST

CLOSEALL

RETURN

4顺序结构和分支结构

一、顺序结构

例1:

求圆的面积(公式S=ΠR2)

CLEAR

INPUT“请输入半径R的值:

”TOR

S=3.1416*R*R

”圆面积为:

”,S

CANCEL

二、分支结构(选择结构)

1、IF语句

(1)单向选择:

双向选择:

IF条件IF条件

执行语句执行语句

ENDIFELSE

执行语句

ENDIF

(2)单向选择分支

例如:

求任意一个数值的绝对值

CLEAR

SETTALKOFF

INPUT“请输入数值:

”TON

IFN<0

N=-N

ENDIF

”|N|的绝对值为:

”,N

CANCEL

(3)双向选择分支

例1:

用户输入数据表文件名,判断它存在否,如果存在则打开数据表文件并显示表中的全部记录

clear

accept'请输入数据库文件名:

'toheng&&想想为什么不用input

iffile(heng+‘.dbf’)&&了解file()的使用方法

use&heng&&想想这儿为什么要用&代换

list

else

?

'sorry,文件不存在:

('

endif

closeall&&关闭所有打开的表,如果不涉及多工作区,能够只使用use

例2:

判断输入的整数为奇数还是偶数。

CLEAR

INPUT“请输入整数:

”TON

IFN%2=0&&该表示式还可用MOD(N,2)=0来表示

?

STR(N,4)+”是偶数”

ELSE

?

STR(N,4)+”是奇数”

ENDIF

CANCEL

(4)IF语句的嵌套

例如:

将用户输入的小写英文字母转化成大写

CLEAR

ACCEPT“请输入1个字母:

”TOSTR1

IFSTR1>=’a’ANDSTR1<=’z’

STR1=UPPER(STR1)

?

SPACE(40)+STR1

ELSE

IFSTR1>=’A’ANDSTR1<=’Z’

?

SPACE(40)+STR1

ELSE

?

’您输入的不是英文字母’

ENDIF

ENDIF

2、多向选择

DOCASE

CASE<条件表示式1>

<命令序列1>

CASE<条件表示式2>

<命令序列2>

……

OTHERWISE&&其它情况

<命令序列>

ENDCASE

说明:

OTHERWISE能够没有.

例1:

比较A、B的大小

CLEAR

INPUT“请输入A的值:

”TOA

INPUT“请输入B的值:

”TOB

DOCASE

CASEA>B

?

”A大于B”

CASEA

?

”A小于B”

CASEA=B

”A等于B”

ENDCASE

例2:

邮局负责邮购小物品规则如下:

50公里及以内收取额外金额5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。

CLEAR

INPUT“请输入您想邮购物品的路程(公里数):

”TOX

DOCASE

CASEX<=50

Y=5

CASEX>50ANDX<=100

Y=10

CASEX>100ANDX<=200

Y=20

CASEX>200ANDX<=500

Y=40

OTHERWISE

Y=50

ENDCASE

?

’对不起,您需要付款:

’,Y,’元人民币’

5循环程序设计

1、条件循环

格式一:

DOWHILE条件

命令序列

ENDDO

格式二:

DOWHILE条件

语句序列

[LOOP]

语句序列

[EXIT]

语句序列

ENDDO

要退出循环,需要条件为假的时候(条件=.F.时)

说明:

(1)LOOP和EXIT命令一般放在IF条件中,也能够出现在循环体内的任何位置。

若执行循环体时遇到LOOP命令,则直接返回执行DO命令,测试条件以决定是否继续循环。

若遇到EXIT命令,则不执行下面的命令序列,直接跳出循环,执行ENDDO后面的命令。

(2)条件表示式的值确定了循环是否继续,当条件表示式的值始终为真(即永真循环),则应使用EXIT命令来控制循环结束

例1:

将字符“欢迎进入乐山师范学院”从屏幕的顶部移至底部

CLEAR

CH=“欢迎进入乐山师范学院”

N=1

DOWHILEN<=23

@N,26SAYSPACE(60)

@N+1,26SAYCH

T=INKEY(0.2)&&等待0.2秒

N=N+1

ENDDO

RETURN

注:

INKEY([<数值表示式>])

功能:

等待用户按键或鼠标输入,等待时间由数值表示式确定(单位为秒)返回由按键而产生的一个整数值.

例2:

实现显示出全部的男生

CLEAR

CLOSEALL

USE学生

DOWHILENOTEOF()

IF性别=’男’

DISP

ENDIF

SKIP

ENDDO

CLOSEALL

 

LOOP循环实例

例1:

I=0

DOWHILEI<10

I=I+1

IFINT(I/2)=I/2

LOOP

ENDIF

?

”*”

ENDDO

例2:

CLOSEALL

CLEAR

USE学生

DOWHILENOTEOF()

DISP

WAIT‘你想修改本记录吗?

(Y/N)’TOX

IFX=’N’ORX=‘n’

SKIP

LOOP

ENDIF

EDIT

SKIP

ENDDO

CLOSEALL

程序执行到WAIT语句后,如果用户输入的是’N’或’n’,那么就LOOP

(也就跳过本次循环,不执行后面的EDIT)

永真循环

DOWHILE.T.DOWHILE.T.

IFY>0IFY>0

EXITQUIT

ENDIFENDIF

ENDDOENDDO

如果Y>0,则退出本循环如果Y>0,则退出程序,退出VF

DOWHILE.T.DOWHILE.T.

IFY>0IFY>0

RETURNCANCEL

ENDIFENDIF

ENDDOENDDO

如果Y>0,则退出程序返回上层如果Y>0,则退出程序,回到VF中

上述语句LOOP、EXIT、QUIT、RETURN、CANCEL等也能够在后面讲的其它循环语句中使用。

例1:

经过键盘输入三角形的边长,若边长正确,立即在屏幕上显示三角形的面积,若边长不正确,重新输入边长,若输入的边长中任意一边为0则程序立即结束。

CLEAR

?

”现在计算三角型的面积,如果想退出程序请输入0。

DOWHILE.T.

INPUT“请输入边长a:

”TOA

INPUT“请输入边长b:

”TOB

INPUT“请输入边长c:

”TOC

IFA=0ORB=0ORC=0

?

’结束’

RETURN

ENDIF

IFA+B<=CORA+C<=BORB+C<=A

?

’错误的三角型,请重新输入!

LOOP

ENDIF

S=(A+B+C)/2

AREA=SQRT(S*(S-A)*(S-B)*(S-C))

?

’该三角型的面积是:

’,area

ENDDO

例2:

有下列表:

book(书名C(20),作者C(8),出版日期D,内容简介M)编写程序:

查询关于foxpro的图书. 

USEBOOK

LOCATEFOR‘foxpro’$书名

IF!

FOUND()

?

’没有关于foxpro的图书’

ELSE

`

DOWHILE!

EOF()

CLEAR

?

书名,作者,出版日期

?

内容介绍

WAIT“是否继续查找?

(Y/N)”TOM

IFM$’nN’

EXIT

ENDIF

CONTINUE

ENDDO

?

”全部显示完成”

ENDIF

2、计数循环

FOR循环变量=初值TO终值[STEP步长]

语句序列

ENDFOR

说明:

(1)当省略步长值时,系统默认步长值为1.当初值小于终止值时,步长值为正值,当初值大于终值时,步长值为负值.步长值不能为0,否则会造成死循环.

(2)可在循环体内嵌入[LOOP]和[EXIT]命令,功能和用法与条件循环中该命令的用法相同.

例1:

求1~100的和

SUM=0

FORn=1TO100

SUM=SUM+n

ENDFOR

?

’1~100的总和为:

’,SUM

使用DOWHILE实现:

SUM=0

n=1

DOWHILEn<=100

SUM=SUM+n

n=n+1

ENDDO

?

’1~100的总和为:

’,SUM

FOR和IF语句嵌套

例2:

求1到N之间能被3整除的数的和

CLEAR

M=0

INPUT“请输入N的值:

”TON

FORX=1TON

IFMOD(X,3)=0

M=M+X

ENDIF

ENFOR

”M的值为:

”,M

RETURN

例3:

找出2-100之间所有的质数

算法研究:

FORI=1TO100

如果此数是质数

显示这个数

ENDFOR

判断一个数是不是质数,应该看它是否能被其它数整除.

当一个数I,从I从2到SQRT(X)都没有数能被整除,那么它就是

FORJ=2TOINT(SQRT(I))

IFIMODJ=0

EXIT

ENDIF

ENDFOR

IFJ>INT(SQRT(I))

?

I,’是质数’

ENDIF

特别:

2是个质数.

综上所叙述:

完成程序为:

CLEAR

?

’2是质数’

FORI=3TO10

FORJ=2TOINT(SQRT(I))

IFMOD(I,J)=0

EXIT

ENDIF

ENDFOR

IFJ>INT(SQRT(I))

?

I,’是质数’

ENDIF

ENDFOR

3、库文件扫描循环

SCAN范围FOR/WHILE条件

语句序列

ENDSCAN

例1:

查询所有入校总分在570以上的人.

CLEAR

CLOSEALL

USE学生

SCANFOR入校总分>570

DISP

ENDSCAN

CLOSEALL

 

例2:

用户能够循环输入并查找入校总分,直到输入的是负数就退出.

CLEAR

CLOSEALL

USE学生

INPUT“请输入你要查找的入校总分,输入负数则退出:

”TOX

DOWHILEX>=0

SCANFOR入校总分=X

DISP

ENDSCAN

INPUT“请输入你要查找的入校总分:

”TOX

ENDDO

例3:

编写程序,对于学生.dbf能够在程序末尾循环插入新记录(掌握)

 

CLEAR

CLOSEALL

USE学生

DOWHILE.T.

APPEBLANK

@5,20SAY'学号'GET学号

@5,40SAY'姓名'GET姓名

@7,20SAY'性别'GET性别

@7,30

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

当前位置:首页 > 小学教育 > 语文

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

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