第三章 VF程序设计基础——课件.ppt

上传人:小飞机 文档编号:3908950 上传时间:2023-03-27 格式:PPT 页数:64 大小:661.84KB
返回 下载 相关 举报
第三章 VF程序设计基础——课件.ppt_第1页
第1页 / 共64页
第三章 VF程序设计基础——课件.ppt_第2页
第2页 / 共64页
第三章 VF程序设计基础——课件.ppt_第3页
第3页 / 共64页
第三章 VF程序设计基础——课件.ppt_第4页
第4页 / 共64页
第三章 VF程序设计基础——课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《第三章 VF程序设计基础——课件.ppt》由会员分享,可在线阅读,更多相关《第三章 VF程序设计基础——课件.ppt(64页珍藏版)》请在三一办公上搜索。

1、2023/3/27,1,第三章 Visual FoxPro程序设计基础,基本学习目标:1掌握建立、修改、运行程序的方法2掌握和使用顺序结构、选择结构和循环结构进阶学习目标:1灵活运用各种结构进行程序设计2了解多模块程序结构,2023/3/27,2,3.1 程序概述,程序:为了完成某项任务而编写的命令序列。程序的本质都是进行数值计算或数据处理,得出有用的信息。程序是完成大型的、复杂的、综合性较强而且需要多次重复执行的任务的最适合方式。VFP同时支持面向过程(OP)和面向对象(OO)的程序设计方法。其中OP是OO的基础。,2023/3/27,3,3.1.1 程序设计的步骤,建立编辑保存执行调试,相

2、关概念:程序代码:以命令形式出现的指令、函数或任何VFP能理解的操作指令。保存程序代码的文件称为命令文件、程序文件或程序。代码的使用:在程序、命令窗口中,以及表单、类、菜单、报表等的事件、过程或方法程序中。,2023/3/27,4,1.建立程序,建立程序:3种方法(1)命令:MODIFY COMMAND 文件名MODIFY FILE 文件名(2)选择“文件”|“新建”|选择文件类型为“程序”|单击“新建文件”按钮。(3)在项目管理器中选择“代码”选项卡|选择“程序”|单击“新建(N)”按钮。无论使用哪种方法,VFP都会打开程序窗口,用户就可在其中编制代码,完成程序设计。,2023/3/27,5

3、,2.程序的编辑和保存,(1)编辑:先打开:3种方法命令:MODIFY COMMAND|FILE 程序文件名 菜单:“文件”|“打开”|选择文件类型为“程序”|选择需要打开的程序文件|单击“确定”按钮。项目管理器:选“代码”选项卡,选中需打开的程序文件,再单击“修改(M)”按钮。(2)保存(应随时保存),默认扩展名.PRG。5种方法:按下 Ctrl+S快捷键,存盘但不退出程序窗口。按下Ctrl+W则存盘退出程序窗口。选择“文件”|“保存”或“另存为”命令。单击工具栏上的“保存”按钮。在关闭程序窗口系统询问是否保存时选择是即可保存,2023/3/27,6,3.执行程序:4法,(1)命令:DO 执

4、行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令:CANCEL:终止程序运行,清除所有的私有变量,返回命令窗口;RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;QUIT:结束程序执行并退出VFP,返回操作系统。(2)菜单:选“程序”|“运行”命令打开“运行”对话框,选择需执行的程序后单击“运行”按钮。(3)项目管理器:在“代码”选项卡中选择需要执行的程序文件再单击“运行(U)”按钮。(4)程序窗口中:按下Ctrl+E或单击工具栏上的“!”运行按钮,也可以右击程序窗口,从快捷菜单中选择“执行XXX.PRG”命令(XXX.PRG表示当前程

5、序窗口中的程序文件名),2023/3/27,7,3.1.2 程序中的常用命令,简单的输入输出数组与表中数据的传送命令内存变量与表中记录的传送命令,2023/3/27,8,1.简单的输入输出命令,ACCEPTINPUTWAIT SAY GETTEXTENDTEXT,2023/3/27,9,(1)ACCEPT命令,格式:ACCEPT TO 功能:提示并等待用户输入一个字符串给指定内存变量。注意:该命令只能输入字符型数据,所输入的字符串不需要加定界符。,2023/3/27,10,【例3-1】打开并显示数据表的内容,CLEARACCEPT“请输入数据库名:”TO kmOPEN DATABASE&kmA

6、CCEPT 请输入表名 TO bmUSE&bmLISTUSE,2023/3/27,11,(2)INPUT命令,格式:INPUT TO 功能:用以提示并等待用户输入数据。可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入。系统会将用户输入数据(若需要,则先行计算出结果)赋值给指定内存变量。,2023/3/27,12,【例3-2】输入长方形的长和宽,求面积,CLEARINPUT“长方形的长为:”TO changINPUT“长方形的宽为:”TO kuans=chang*kuan?“长方形的面积为:”,s,2023/3/27,13,

7、(3)WAIT命令,格式:WAIT TO WINDOW AT,NOWAIT CLEAR|NOCLEAR TIMEOUT功能:暂停并显示提示信息,用户按任意键或单击鼠标时才继续执行程序。说明:可选项TO,将输入的单个字符存入指定的;若用户是按Enter键或单击鼠标,的值为空串。若省略所有可选项,屏幕显示“键入任意键继续”的默认提示信息。,2023/3/27,14,【例3-3】按学号查“学生成绩”,CLEARUSE 学生成绩ACCEPT“请输入待查学生的学号:TO nIF LEN(n)=0WAIT“输入无效,结束程序运行!”;WINDOW TIMEOUT 5ELSELIST FOR n=学号END

8、IFUSE,2023/3/27,15,ACCEPT、WAIT、INPUT比较,ACCEPT命令只能接受字符串,不需要定界符,输入完毕按回车键结束WAIT命令只能输入单个字符,也不需定界符,但输入完毕不需按回车键INPUT命令功能最强,可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需要用定界符,输入完毕按回车键结束。,2023/3/27,16,(4)定位输入输出命令,SAY GET DEFAULT,功能:在指定行列位置显示的值,并允许修改的值。,指定数据起始显示位置,需要显示的串,需要输入或修改的变量,变量的初值,说明:行号和列号都从

9、0开始的十进制整数。先输出表达式1(背景色以标准型显示),再空一格后接着显示变量值(背景色以增强型显示),无SAY子句则从指定位置显示变量值。变量要有初值(可用DEFAULT 指定)其类型在编辑期间不能改变,字符型的宽度和数值型的小数位数也不可更改。GET子句必须由READ子句激活后才能编辑GET变量值。直到光标移出由这些GET变量组成的区域时READ命令才算执行结束。,2023/3/27,17,CLEARUSE 学生成绩2,5 SAY 待修改的记录号:GET JLH DEFA 1READGO JLHSCATTER MEMV&将记录数据导出到与字段变量同名的一组内存变量中4,5 SAY 学号:

10、GET M.学号6,5 SAY 高数:GET M.高数8,5 SAY 英语:GET M.英语10,5 SAY 计算机:GET M.计算机READ14,5 SAY 保存修改?(Y/N):GET OK DEFA yREADIF UPPER(OK)=“Y GATHER MEMV 16,5 SAY 存盘完毕!ELSE 16,5 SAY 你放弃了修改。ENDIFUSE,【例3-4】修改“学生成绩”记录,2023/3/27,18,(3)文本输出命令、,或 命令格式:|文本串功能::先换行,再原样输出文本串中的所有字符。:不换行直接输出。若文本串中有需要计算的表达式,可先用命令 SET TEXTMERGE

11、ON 设置文本的合并计算,然后用一对将要计算的表达式括起来。这样,在输出到部分时,先计算出其中的表达式的值,再将该值和剩余文本串输出来。如:SET TEXTMERGE ON今天是月日&若今天是9月5日则会输出“今天是9月5日”的文本。,2023/3/27,19,textend text 命令格式:TEXT文本行1文本行2文本行3 END TEXT功能:先换行,然后将textend text之间的所有文本行原样输出。,2023/3/27,20,2.数组与表中数据的传送命令,(1)将表中数据传送给数组格式:COPY TO ARRAY FIELDS|FIELDS LIKE|FIELDS EXCEPT

12、范围子句 条件子句 NOOPTIMIZE功能:将当前工作区中打开的表中的数据传送到一维/二维数组中。一维数组仅存一条记录,二维数组可存多条记录。,2023/3/27,21,数组与表中数据的传送说明:如右图所示:,表中的备注字段不会存入数组,如:COPY TO ARRAY aTemp FIELDS LIKE a*,p*FIELDS LIKE A*,P*EXCEPT PARTNO*&把表中符合字段首字符为A或P但以PARTNO开头的字段 除外的记录数据存入数组aMyArray中,说明,2023/3/27,22,如:USE 学生成绩&打开“学生成绩”表DIMENSION a(3,4)&定义3行4列的

13、二维数组COPY NEXT 3 TO ARRAY a&把表中头3条记录存入二维数组a中。DISPLAY MEMORY LIKE a&显示数组中各元素信息,结果如图所示:,2023/3/27,23,(2)将数组中的数据添加到数据表中格式:APPEND FROM ARRAY FOR 条件;FIELDS|FIELDS LIKE|FIELDS EXCEPT 功能:与COPY TO ARRAY刚好相反,是将数组中符合条件的数据追加到当前工作区中打开的数据表中。,说明:若数组列数多,则忽略多余列。反之,若数组列数少,则多出的字段被置为相应类型的空值。如字符型的则置为指定宽度的空格串。忽略数组中的备注型、通

14、用型数据。若数组中某列的值与相应字段的类型不匹配,则对应字段也被置为相应类型的空值。二维数组中有多少行,则在表中追加相应行数的记录。若是一维数组,仅追加一行,具体参照二维数组中的一行来处理。,2023/3/27,24,如:DIMENSION a(4)a=60a(1)=2000130205USE 学生成绩&打开“学生成绩”表APPEND FROM ARRAY aUSE,该段代码将在“学生成绩”表中追加一条新记录,其学号、高数、英语、计算机字段的值分别为2000130205,60,60,60。,2023/3/27,25,3.内存变量与表中记录的传送命令,(1)将当前记录传送到数组或内存变量中格式:

15、SCATTER FIELDS TOMEMVAR BLANK功能:与COPY TO ARRAY功能相似。用来将数据表中当前记录的内容导出到数组或者与字段变量同名的内存变量中。,2023/3/27,26,说明,当使用TO子句时,相当于COPY TO ARRAY到一维数组中。但不同的是当数组列数少于表中字段数时,会自动扩大数组到适合大小。当使用MEMVAR子句时,将数据表中当前记录的内容导出到与字段变量同名的一组内存变量中。若这些同名的内存变量不存在,则自动创建这组变量。若同时还有BLANK子句,则只创建这组变量,并不传送数据。忽略表中的备注型、通用型字段数据。,2023/3/27,27,(2)用数

16、组或内存变量值替换当前记录格式:GATHER FROMMEMVAR|NAME FIELDS|FIELDS LIKE|FIELDS EXCEPT MEMO功能:与SCATTER命令的传送方向刚好相反,是以数组或指定内存变量中的数据替换当前工作区里打开的数据表中的当前记录。,2023/3/27,28,说明:若选用FROM子句,则与APPEND FROM ARRAY 从一维数组中添加记录类似,只是此处是替换当前记录而不是追加记录。当数组列数大于表中字段数,则忽略多余的元素。反之,表中多出的字段的值不受影响。若选用MEMV子句,则使用同名的内存变量值来替换表中相应的字段值。若需要替换表中的备注字段值,

17、可加上MEMO子句,但是不能替换通用字段值。若选用NAME 子句,则可用指定对象中的同名属性值来替换表中当前记录相应的字段值。,2023/3/27,29,USE 学生成绩&打开“学生成绩”表SCATTER MEMV BLANKM.学号=2000130209STORE 70 TO M.高数,M.英语,M.计算机APPEND BLANKGATHER MEMV USE,在“学生成绩”表追加一条新记录,其学号、高数、英语、计算机字段值分别为2000130209,70,70,70,2023/3/27,30,3.1.3 系统运行环境的命令设置,(1)SET DEFAUT TO&设置默认搜索目录搜索顺序:I

18、.当前目录,II.命令指定的目录,III.系统默认目录。若都找不到,才报告出错信息。(2)SET CENTURY ON|OFF设置D、T型“年”的显示位数。默认OFF,2位;ON,4位。(3)SET FIELDS TO|ALL|ALL LIKE|EXCEPT&设置字段表(投影),选取用户关心的字段,不在中的字段数据不显示。用SET FIELDS OFF恢复所有字段。(4)SET SAFETY ON|OFF&设置安全操作提示若设为ON,将同名新文件覆盖旧文件时会询问是否覆盖,此时选择否可不覆盖,否则覆盖;用ZAP命令彻底删除表中的所有记录时也会询问是否彻底删除表中的所有记录,选择否可不删除,否则

19、删除。若设为OFF,则遇到上面两种情况都不提示而直接覆盖或删除。默认为ON。,2023/3/27,31,(5)SET TALK ON|OFF 功能:打开或关闭对话开关,默认为ON。若设为ON,允许把对话结果发送到VFP主窗口、系统信息窗口、图形状态栏或用户自定义窗口中。若先为OFF后再改为ON,那么对话结果将传送到发出 SET TALK OFF命令之前的输出位置。若设为OFF:阻止把对话结果发送到VFP主窗口、系统信息窗口、图形状态栏或用户自定义窗口中,2023/3/27,32,3.2 程序的基本结构,1.顺序结构:按语句的书写顺序依次执行。VFP中的大多数命令都可以作为顺序结构中的语句。2.

20、分支结构:根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题的控制结构。3.循环结构:使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。4.过程结构:在许多应用程序中,有一些程序段需要反复执行多次,这些程序段不在一个固定的位置上,而是分散在程序的许多位置上重复执行,可将其与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。这样做增强了程序的可读性和模块化。我们称这种具有独立功能而且可以被其它程序调用的程序序列为过程。,2023/3/27,33,3.2.1 分支结构,分支结构形式

21、有三种单向分支双向分支多向分支。,2023/3/27,34,1.单向分支:有条件执行某一操作。,(1)单向分支语句:IF条件表达式语句序列ENDIF,(2)执行过程:第一步:计算条件表达式的值。第二步:决定是否执行语句序列。若该值为真,则执行语句序列;否则,不执行。第三步:执行ENDIF后面的第一条命令。,2023/3/27,35,【例3-5】求一元二次方程ax2bxc0的实根。INPUT TO aINPUT TO bINPUT TO czb2-4*a*cIF z=0 x1=(-b+SQRT(z)/(2*a)x2=(-b-SQRT(z)/(2*a)?x1,x2ENDIF,2023/3/27,3

22、6,2.双向分支:从两个分支中选择一个执行。,(1)语句格式:IF条件表达式语句序列1ELSE语句序列2ENDIF,(2)执行过程:第一步:计算条件表达式的值。第二步:决定执行哪个操作。当该值为真时,执行语句序列1中的命令;否则,执行语句序列2中的命令。第三步:执行ENDIF后面的第一条命令。,2023/3/27,37,【例3-6】编写一密码校验程序(假设密码为ABC)CLEARACCEPT“请输入您的密码:”TO mmIF mm=”ABC”CLEAR?”欢迎使用本系统!”ELSEWAIT”密码错误!”ENDIF,2023/3/27,38,3.多向分支:从多个分支中选择一个执行,(1)语句格式

23、:DO CASE CASE条件表达式1 CASE条件表达式2 CASE条件表达式n语句序列n OTHERWISE 语句序列n+1ENDCASE,2023/3/27,39,(2)执行过程:第一步:计算条件表达式1的值。第二步:决定下一步的操作。若该值为真,执行语句序列1,转第2n+2步,否则执行第三步的操作。第三步:计算条件表达式2的值。第四步:决定下一步的操作。若该值为真,执行语句序列2,转第2n+2步,否则执行第五步的操作。第五步:计算条件表达式3的值。第六步:决定下一步的操作。若该值为真,执行语句序列3,转第2n+2步,否则执行第七步的操作。第2n-1步:计算条件表达式n的值。第2n 步:

24、决定下一步的操作。若该值为真,执行语句序列n,转第2n+2步,否则执行第2n+1步的操作。第2n+1步:若有OTHERWISE子句则执行语句序列n+1。第2n+2步:执行ENDCASE后的第一条命令。,2023/3/27,40,CLEARINPUT“请输入收入:”TO pDO CASECASE p800r=0CASE p2000r=0.05CASE p5000r=0.08OTHERWISEr=0.1ENDCASETax=p*r?”税金为:”,taxRETURN,【例3-7】如表5-1,编程求税金。,2023/3/27,41,4.使用分支语句的注意事项,(1)IF ENDIF和DO CASE E

25、NDCASE 必须配对使用,DO CASE与第一个CASE条件表达式之间不应有任何命令。(2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。(3)语句序列可以由一个或多个命令组成,也可以是条件控制语句和循环控制语句组成的嵌套结构。(4)DO CASE ENDCASE 命令根据给出的n个条件表达式的值,选择n+1个语句序列中的一个执行。每次最多只能执行一个语句序列。在多个CASE项的条件表达式值为真时,只执行第一个条件表达式值为真的语句序列。当所有CASE中条件表达式的值都是假时,如果有OTHERWISE项,则执行语句序列n+1,否则一个分支也不执行。,2023/3/27,42,3.

26、2.2 循环结构,循环结构有三种语句:DO WHILEFOR SCAN,2023/3/27,43,1.DO WHILE循环,DO WHILE LOOP EXIT ENDDO,执行过程:参阅图5-6第一步:求解循环头DO WHILE 后的,若值为.T.,则依次执行循环体中的语句,否则转第五步。循环体为位于DO WHILE和ENDDO之间的语句序列。第二步:循环体执行过程中,若执行了LOOP语句,则结束本次循环,转到第一步。第三步:循环体执行过程中,若执行了EXIT语句,则强行跳出循环,转到第五步。第四步:若循环体中所有语句均已经执行,转第一步。第五步:本循环语句执行结束,转去执行ENDDO之后的

27、语句。,2023/3/27,44,【例3-8】用DO WHILE循环将学生档案表中“张三”之前(含“张三”)的所有学生的数据显示出来。Clearuse 学生档案do while.not.eof()DISPif 姓名 张三 skiploopendifexitenddouseRETURN,2023/3/27,45,FOR 循环变量=初值 TO 终值 STEP 步长 LOOP EXIT ENDFOR|NEXT,2.FOR循环,执行过程:参阅图5-7。第一步:将初值赋给循环变量。第二步:判断循环变量的值是否超过终值。超过的含义是:若步长大于0,则循环变量大于终值即为超过终值;若步长小于0,则循环变量小

28、于终值就是超过。根据判断的结果决定本结构的是否再执行。若未超过,则执行循环体(为FOR到与之配对的ENDFOR或NEXT之间的所有语句。若超过,转第六步。第三步:若执行LOOP命令,结束本次循环,循环变量增加一个步长值,转第二步。若省略STEP,则步长为默认值1。第四步:若执行EXIT命令,转第六步。第五步:若循环体中所有语句均已经执行,转第二步。第六步:结束FOR循环,执行其后的语句。,2023/3/27,46,CLEARs=1fh=1FOR i=2 TO 100s=s+i*fhfh=-1*fhENDFOR?”12-3100”,sRETURN,【例3-9】编程求1234599100之和。,2

29、023/3/27,47,CLEARINPUT“请从键盘输入一个数:”TO xSTORE x TO max,minFOR i=2 TO 10INPUT“请从键盘输入一个数:”TO xIF max x min=xENDIFENDFOR?“最大值为:”,max?“最小值为:”,minRETURN,【例3-10】从键盘输入10个数,编程找出其中的最大值和最小值,2023/3/27,48,3.“指针”型循环:SCAN ENDSCAN,SCAN FOR|WHILE ENDSCAN,功能:在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,

30、结合或,执行语句序列(满足条件时执行);然后,记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。,2023/3/27,49,CLEARUSE 学生档案SCAN FOR NOT 是否贷款?姓名,出生地ENDSCANUSERETURN,【例3-11】输出“学生档案”表中所有未贷款学生的姓名和出生地。,2023/3/27,50,4.使用循环语句的说明,(1)DO WHILEENDDO、FORENDFOR、SCANENDSCAN须配对使用。(2)语句序列可以是任何VFP命令或语句,若为循环语句则构成多重循环。(3)循环变量应是数值型的内存变量

31、或数组元素。(4)EXIT和LOOP命令嵌入在循环体内,可以出现在语句序列的任意位置,用以改变循环次数,但是不能单独使用。(5)EXIT的功能是跳出循环,转去执行ENDDO、ENDFOR、ENDSCAN后面的第一条命令(6)LOOP的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次ENDDO、ENDFOR、ENDSCAN命令,它可以改变语句序列中部分命令的执行次数。,2023/3/27,51,3.2.3 结构的嵌套应用,顺序、分支和循环等结构可以相互嵌套,但不允许交叉,必须保证下一个嵌套要完整地包含在上一个的结构体内。正确的嵌套关系如:,DO WHILE FOR=TO STE

32、P SCAN 范围 FOR|WHILE ENDSCANENDFORENDDO,2023/3/27,52,【例3-12】用多重循环编程输出下三角形乘法口诀表,2023/3/27,53,【例3-12】程序:CLEARFOR i=1 TO 9 j=1 DO WHILE j=ik=i*j?STR(j,1)+*+STR(i,1)+=+STR(k,2)+j=j+1 ENDDO?ENDFORRETURN,2023/3/27,54,3.3 自定义函数和过程,在程序设计中,常把完成一个功能的程序编写成一个单元,以便在其他程序中使用该功能时调用该程序。这种为完成一个特定功能而编写的程序称为自定义函数或过程。函数的

33、特点:有返回值过程的特点:忽略返回值,重视处理流程,2023/3/27,55,3.3.1 自定义函数,Visual FoxPro8虽然提供了三百多种函数,但不可能完全满足用户的各种需求,为了满足某些特殊需要,Visual FoxPro允许用户根据需要编写一个专用函数,这就是自定义函数。自定义函数的语法如下:,FUNCTION 函数名 PARAMETERS 参数表语句序列RETURN 返回值 ENDFUNC,定义函数名称,其他程序要通过这个名称来调用这个函数。,定义形式参数,用来接收主调程序传递过来的数据(实参)。若无需接收参数,此句可省略。,将处理结果值带回主调程序,无此语句将带回.T.,“F

34、UNCTION 函数名”表示函数的开始,缺省时文件名即为函数名。“ENDFUNC”表示函数的结束,缺省时在遇到下一个Function或者文件结束时结束。,语句序列是用户为完成应用需要而编写的代码。,2023/3/27,56,CLEAR INPUT“x=”TO x?x,”的阶乘为:”,jc(x)FUNCTION jc PARAMETERS n y=1 FOR i=1 TO n y=y*i ENDFOR RETURN y ENDFUNC,【例3-13】将计算阶乘的程序写成自定义函数并调用。,2023/3/27,57,3.3.2过程,过程的实现和函数基本相同,一般无返回值。若需要,可以通过PARAM

35、ETERS语句返回。过程定义的语法如下:,PROCEDURE 过程名PARAMETERS 参数表语句序列ENDPROC,定义过程名称,其他程序要通过这个名称来调用这个过程。,定义形式参数,用来接收主调程序传递过来的数据(实参),并可将处理结果值带回主调程序。若无需接收参数,此句可省略。,“PROCEDURE 过程名”表示过程的开始,缺省时文件名即为过程名。“ENDPROC”表示过程的结束,缺省时在遇到下一个Function、PROCEDURE 或者文件结束时结束。,语句序列是用户为完成应用需要而编写的代码。,过程调用格式:DO 过程名 WITH 参数表 如果没有参数,可省略 WITH 参数表,

36、2023/3/27,58,【例3-14】实现一个字符串输出的过程。CLEAR DO ss PROCEDURE ss?欢迎使用VFP8系统!ENDPROC,【例5-15】实现一个传参求累加和的过程。CLEARINPUT 输入一个数 TO xDO addou WITH xPROCEDURE addouPARAMETERS xsum=0FOR i=1 TO xsum=sum+IENDFOR?从1累加到,x,的和为:,sumENDPROC,2023/3/27,59,3.3.3 变量的作用域,变量的作用域是指变量的有效范围,即变量的“可见性”。定义一个变量时,应该明确要在程序的什么地方使用该变量,以决定

37、其“权力级别”。在VFP中,有三种级别的作用范围,即全局变量(或称公共变量)、私有变量和局部变量(或称本地变量)。,1.全局变量:作用范围最大,在所有程序模块中都有效。初值为.F.。定义格式为:PUBLIC 2.私有变量:未经定义就直接使用的变量,在本(子)程序及下属的子程序内有效。说明格式为:PRIVATE 3.局部变量:作用范围最小,只能在建立它的模块中使用,在高层和底层模块中均不能使用,该模块运行结束时局部变量就自动释放。定义格式为:LOCAL,2023/3/27,60,【例3-16】变量隐藏与恢复的示例。CLEARRELEASE ALL&清除用户定义的所有内存变量mj=0&在命令窗口设

38、置的变量是公共变量bj=3?程序执行前的变量清单:LIST MEMO LIKE?j&显示变量清单DO gc WITH bj&bj传入gc?程序执行后的变量清单:&显示变量清单LIST MEMO LIKE?j&程序执行结束时,被屏蔽的变量mj,bj被恢复PROCEDURE gcPARAMETERS sj&sj为私有变量,程序调用前的bj被隐藏起来PRIVATE mj&mj为私有变量,调用前同名变量mj被隐藏起来mj=3.14*sj*sj?程序执行时的变量清单:sj=1&改变sj的值就是改变主程序中bj变量的值LIST MEMO LIKE?j RETURN,2023/3/27,61,3.4 程序的

39、调试,在程序开发过程中发生各种错误是在所难免的。程序调试的目的就是检查并纠正程序中的各种错误,以保证程序的可靠运行。VFP提供的调试器可以动态监测程序的执行情况,帮助程序设计者较快地找出并纠正这些错误,使程序达到预定设计要求。,2023/3/27,62,调试器窗口,选择“工具”菜单中的“调试器”,或用命令DEBUG即可打开如图5-12所示的调试器窗口。,追踪窗口,执行位置指示,监视窗口,调用栈窗口,局部窗口,变量值及其类型列表,调试输出窗口,2023/3/27,63,调试器的使用,单击“打开程序”按钮,在跟踪窗口中打开程序单击“执行程序”按钮执行程序在局部窗口中可以显示变量的名称、值和类型。在追踪窗口中“执行位置指示”是一个小箭头,表示程序执行的当前位置。单击“单步执行”按钮就执行一条语句。在调试程序过程中,经常需要将程序执行到一个位置上停下来,该位置称为断点。设置断点的方法是:将鼠标移到指定语句处双击,在该语句左边就会显示一个小红圆点,当程序执行到该位置就中断,以便分析当前程序执行的变量输出情况。再次双击即可取消断点。,2023/3/27,64,作业:本章课后习题,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号