第5章程序设计基础

上传人:沈*** 文档编号:119217487 上传时间:2022-07-14 格式:PPT 页数:71 大小:246.50KB
收藏 版权申诉 举报 下载
第5章程序设计基础_第1页
第1页 / 共71页
第5章程序设计基础_第2页
第2页 / 共71页
第5章程序设计基础_第3页
第3页 / 共71页
资源描述:

《第5章程序设计基础》由会员分享,可在线阅读,更多相关《第5章程序设计基础(71页珍藏版)》请在装配图网上搜索。

1、 VFP提供了一整套的程序设计语言,供用户进行提供了一整套的程序设计语言,供用户进行应用程序开发。应用程序开发。这些语言可以在命令窗口、程序设计、表单事件这些语言可以在命令窗口、程序设计、表单事件中使用。中使用。在命令窗口仅是了解或理解各种命令的功能及在命令窗口仅是了解或理解各种命令的功能及语法,但有些命令在窗口中是不能使用的。语法,但有些命令在窗口中是不能使用的。在程序设计、表单事件中使用,才能达到某种要在程序设计、表单事件中使用,才能达到某种要求。求。程序设计方法程序设计方法程序设计方法程序设计方法面向过程的程序设计(结构化程序设计)面向过程的程序设计(结构化程序设计)程序由三种基本结构组

2、成,程序按照开发者规定程序由三种基本结构组成,程序按照开发者规定的流程进行。的流程进行。面向对象的程序设计面向对象的程序设计结构化程序设计的概念结构化程序设计的概念创建程序创建程序方法之一:方法之一:“项目管理器项目管理器”-“代码代码”选项卡选项卡-“程序程序”项项-“新建新建”按钮按钮方法之二:主菜单的方法之二:主菜单的“文件文件”-“新建新建”命令命令-“程序程序”项项-“新建文新建文件件”按钮按钮方法之三:常用工具栏方法之三:常用工具栏“新建新建”按钮按钮-“程序程序”项项-“新建文件新建文件”按按钮钮方法之四:命令窗口:方法之四:命令窗口:MODIFY COMMAND 程序名程序名注

3、意:注意:1、只有方法之一,新建的程序在只有方法之一,新建的程序在“项目管理器项目管理器”中能见到,其中能见到,其他三种方法都不见到,必须在他三种方法都不见到,必须在“项目管理器项目管理器”中用中用“添加添加”按钮按钮,才能加入在,才能加入在“项目管理器项目管理器”中。中。2、创建程序后,注意保存文件:主菜单的创建程序后,注意保存文件:主菜单的“文件文件”-“保存保存”命命令令3、扩展名为:扩展名为:.PRG输入下列程序段,看执行的结果是什么输入下列程序段,看执行的结果是什么CLEARNEWNUM=0FOR I=1 TO 100 NEWNUM=NEWNUM+IENDFOR?NEWNUM另一程序

4、为:另一程序为:CLEARNEWNUM=0FOR I=1 TO 9?FOR J=1 TO 9?STR(I,2)+*+STR(J,1)+=+STR(I*J,2)ENDFORENDFOR修改程序修改程序修改程序前,要打开指定的程序,其方法:修改程序前,要打开指定的程序,其方法:方法之一:方法之一:“项目管理器项目管理器”-“代码代码”选项卡选项卡-“程序程序”项项-选定要修改的程序选定要修改的程序-“修改修改”按钮按钮方法之二:主菜单的方法之二:主菜单的“文件文件”-“打开打开”命令命令-在对话在对话框中选定要修改的程序框中选定要修改的程序-“确定确定”按钮按钮方法之三:常用工具栏方法之三:常用工

5、具栏“打开打开”按钮按钮-选定要程序的选定要程序的程序程序-“确定确定”按钮按钮方法之四:命令窗口:方法之四:命令窗口:MODIFY COMMAND 程序程序名名/?运行程序运行程序方法之一:方法之一:“项目管理器项目管理器”-选定要执行的程序序选定要执行的程序序-“运运行行”按钮(常用工具栏的按钮(常用工具栏的“运行运行”按钮)按钮)方法之二:命令窗口:方法之二:命令窗口:DO 程序名程序名.PRG 面向过程程序设计面向过程程序设计 (结构化程序设计结构化程序设计)过程和用户自定义函数过程和用户自定义函数过程和用户自定义函数过程和用户自定义函数(UDF)(UDF)的概念的概念用户自定义函数扩

6、充了用户自定义函数扩充了VFPVFP语言,通过定语言,通过定义义UDFUDF来为自己的应用程序建立一些专用函数。来为自己的应用程序建立一些专用函数。UDFUDF包括保存在包括保存在独立程序文件(独立程序文件(.PRG.PRG)中、程)中、程序中的过程和函数、以及数据库的存储过程中序中的过程和函数、以及数据库的存储过程中。在在VFPVFP中,过程和函数的区别不大中,过程和函数的区别不大。为了创建一个过程或函数,需要使用为了创建一个过程或函数,需要使用PROCEDUREPROCEDURE或或FUNCTIONFUNCTION命令给过程或函数赋予命令给过程或函数赋予一个过程名或函数名,其后可是任意条数

7、的其一个过程名或函数名,其后可是任意条数的其他语句,以实现特定的功能。他语句,以实现特定的功能。UDF的保存的保存 将一个自定义函数以独立文件保存(文件名将一个自定义函数以独立文件保存(文件名应与函数名同名)应与函数名同名)保存在一个程序文件的最后保存在一个程序文件的最后 例题例题 作为过程文件(将几个函数保存在一个文件作为过程文件(将几个函数保存在一个文件中。中。例题例题 存储在数据库当中,作为数据库的存储过程存储在数据库当中,作为数据库的存储过程例题:求例题:求1到到10的阶乘的和的阶乘的和CLEARnResult=0FOR n=1 TO 10nResult=nResult+jc(n)EN

8、DFOR?nResult*以下部分为自定义函数以下部分为自定义函数FUNCTION JC PARAMETERS num&传递一个数值参数传递一个数值参数num,返回,返回num的阶乘的阶乘s=1FOR n=1 TO nums=s*nENDFORRETURN s例题:例题:*自定义函数自定义函数JC()用于计算阶乘用于计算阶乘FUNCTION jcPARAMETERS num&传递一个数值参数传递一个数值参数num,返回,返回num的阶乘的阶乘s=1FOR n=1 TO nums=s*nENDFORRETURN s*自定义函数自定义函数LJH()用于计算累加和用于计算累加和FUNCTION lj

9、h PARAMETERS num&传递一个数值参数传递一个数值参数num,返回,返回num的累加和的累加和s=0FOR n=1 TO nums=s+nENDFORRETURN s参数传递的两种方式参数传递的两种方式FUNCTION plu para a a=a+1Return aSet udfparams to valueStore 1 to gnz?plu(gnz),gnzSet udfparams to refeStore 1 to gnz?plu(gnz),gnz按值传递按值传递按地址传递按地址传递Store 1 to gnz?plu(gnz),gnzStore 1 to gnz?plu

10、(gnz),gnz例:把普通的日期改写成汉语字符形式例:把普通的日期改写成汉语字符形式function dtocc para dedate cyear=str(year(dedate),4)+年年 cmonth=str(month(dedate),2)+月月 cday=str(day(dedate),2)+日日 retu cyear-cmonth-cdayendfunc 程序的创建和保存程序的创建和保存运行程序运行程序【Ctrl+ECtrl+E】。】。顺序顺序(sequential)条件分支条件分支(conditional branching)IFELSEENDIF语句语句例例3:Dbirth

11、day=1985/10/15If dbirthday=600 S1=S1+1例例:教师表(教师表(JS.DBF)中有)中有10条记录,且基本工资字段条记录,且基本工资字段(JBGZ)中的值在中的值在300以下有以下有2人,人,300至至599之间有之间有3人,人,600元及以上有元及以上有5人。人。case JBGZ=300 s2=s2+1 OTHERWISE S2=S2+1 ENDCASE ENDSCAN?S1,S2,s3循环循环(Looping)SCANSCANENDSCANENDSCAN 语句语句XHXHKCDMKCDMCJCJ950101950101010190909501029501

12、020202858595010195010103037777例例2:2:已知已知CJCJ表中含有如下表中含有如下3 3条记录条记录:现运行包含以下代码现运行包含以下代码的程序:的程序:CLOSE ALLCLOSE ALLUSE CJUSE CJS=0S=0CNT=0CNT=0SCAN FOR CJ=60SCAN FOR CJ=60 IF CJ=80 IF CJ=80 S=S+1 S=S+1 ENDIF ENDIF CNT=CNT+CJ CNT=CNT+CJENDSCANENDSCAN?S,CNT?S,CNT clear clear n=0 n=0 m=0 m=0 use xs use xs s

13、can all while xb scan all while xb=男男 n=n+1 n=n+1 endscan endscan m=reccount m=reccount()-n()-n?m,n?m,n例例3 3:clearstore 0 to;a1,a2,a3,a4,a5use cjgo topscan do case case cj60 a1=a1+1 case cj70 a2=a2+1 case cj80 a3=a3+1 case cj=8 CASE I=8 S1=S1+1 S1=S1+1 CASE I=9 CASE I=9 S2=S2+1 S2=S2+1 ENDCASE ENDCA

14、SEENDFORENDFOR?S1,S2?S1,S2例例5:5:程序清单如下程序清单如下S=0S=0P=0P=0FOR I=1 TO 20FOR I=1 TO 20 DO CASE DO CASE CASE I%2=0 CASE I%2=0 S=S+1 S=S+1 CASE I%3=0 CASE I%3=0 P=P+1 P=P+1 ENDCASE ENDCASEENDFORENDFOR?S,P?S,PDO WHILEDO WHILEENDDOENDDO语句语句DO WHILEDO WHILEENDDOENDDO语句语句流程图流程图例例2:输出:输出26个字母个字母clearSET TALK O

15、FFCRT=AN=1DO WHILE N0cResult=LEFT(cString,1)+cResultcString=SUBSTR(cString,2)ENDDO?cResult例例4:程序功能:将非汉字字符组成的字符串反序显示(例如:程序功能:将非汉字字符组成的字符串反序显示(例如将将MicrosoftMicrosoft显示为显示为tfosorciMtfosorciM)CLEARcString=DO WHILE.ENDDO CommandcResult=space(0)DO WHILE LEN(cString)0cResult=cResult+RIGHT(cString,1)cString

16、=SUBSTR(cString,1,LEN(cString)-1)ENDDO?cResult例例5:程序功能:将含有汉字字符组成的字符串反序显示:程序功能:将含有汉字字符组成的字符串反序显示CLEARStore“nanjing南京南京”to c,cp=space(0)Do while len(c)0 x=asc(left(c,1)if x127 i=2 else i=1 endif p=left(c,i)+p c=substr(c,i+1)enddo?cc+”的反序为的反序为”+p 例例6:程序功能:统计由:程序功能:统计由ASCIIASCII码字符组成的字符串中包含字母的码字符组成的字符串中

17、包含字母的个数个数CLEARcString=The United States of America is abbreviated to U.S.A.nResult=0DO WHILE LEN(cString)0c=LEFT(cString,1)IFBETWEEN(c,a,z)or BETWEEN(c,A,B)nResult=nResult+1ENDIFcString=SUBSTR(cString,2)ENDDO?包含包含+ALLT(STR(nResult+ALLT(STR(nResult)+)+个英文字母个英文字母 短路语句短路语句LOOPLOOP程序功能:统计由程序功能:统计由ASCIIA

18、SCII码字符组成的字符串中包含字母的个数码字符组成的字符串中包含字母的个数CLEARcString=The United States of America is abbreviated to U.S.A.nResult=0m=LEN(cString)FOR n=1 TO mc=SUBSTR(cString,n,1)IF!BETWEEN(c,a,z)AND!BETWEEN(c,A,B)LOOPENDIFnResult=nResult+1ENDFOR?包含包含+ALLT(STR(nResult+ALLT(STR(nResult)+)+个英文字母个英文字母 退出语句退出语句EXITEXIT例:程

19、序功能:计算数列例:程序功能:计算数列1 1,1/21/2,1/31/3,1/41/4,1/n1/n之和,当某一之和,当某一项的值与前一项的值之差小于项的值与前一项的值之差小于0.0010.001时停止计算。时停止计算。CLEARn=1m=1nSum=0DO WHILE.T.nSum=nSum+1/nm=1/nn=n+1IF m-1/n0.001EXITENDIFENDDO?该数列的和为:该数列的和为:,nSum,nSum在程序中使用在程序中使用IIF()IIF()函数实现条件分支函数实现条件分支示例示例1 1(累加)(累加)计算计算 S=1*1+3*3+5*5+.+25*25示例示例2 2(

20、累乘)(累乘)计算计算 P=3P=3*5 5*7 7*9 9*1111*.*2525示例示例3 3(累加(累加+累乘)累乘)计算计算 S=1!+2!+3!+20!S=0P=1FOR I=1 TO 20 P=P*IS=S+PENDFOR?S示例示例4 4(随机数的产生之一)(随机数的产生之一)产生产生5050个随机数。个随机数。DIMENSION A(50),B(5,10)FOR I=1 TO 50A(I)=RAND()?A(I)ENDFORFOR I=1 TO 5FOR J=1 TO 10B(I,J)=RAND()?B(I,J)ENDFORENDFOR示例示例5 5(随机数的产生之二)(随机数的产生之二)产生产生1010个个(10-50)(10-50)之间的随机整数。之间的随机整数。DIMENSION X(10)FOR I=1 TO 10N=5 赋初值赋初值DO WHILE N50N=INT(RAND()*100)ENDDO X(I)=NENDFOR 取数

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!