版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 程序设计基础, 5、1 程序设计概述,一、程序的概念 程序:完成一定任务的一组命令的有序集合。 程序设计:计算机用户将解决某一实际问题所用的命令 按一定的逻辑顺序编制成程序, 并以文件的形式存放于磁盘的过程。 优点:(1)可以利用编辑器,方便的输入、修改、保存文件。 (2)可用多种方式,多次运行程序。 (3)可在一个程序中调用另一个程序。,Visual FoxPro 的工作方式,程序文件方式,交互式方式,单命令方式,菜单方式,菜单方式、命令方式、程序方式、工具方式,1.单命令方式 单命令方式:输入一条命令,完成一个操作的工作方式。 注: (1)VFP单命令方式:利用Command窗口来
2、实现的。 (2)Command 窗口不仅是VFP命令的执行窗口, 也是VFP命令文件的编辑窗口。 2.菜单方式 通过打开不同的菜单选择并完成不同的操作。 3.程序文件方式 程序文件(简称程序)也叫做命令文件。 命令方式:通过程序文件中的命令完成不同的操作。,二、程序文件的建立、执行与编辑,说明:程序由命令语句、函数、过程等程序代码组成; 通过调用系统内置的文本编辑器进行建立和修改; 程序文件的扩展名为.prg 1、建立程序文件 A、菜单方式 B、项目管理器中创建 C、命令方式 格式:MODIFY COMMAND | ? 2、保存程序,3、编辑、修改程序文件 格式:MODIFY COMMAND
3、| ? 4、运行程序 格式:DO WITH 5、使用VFP设计工具编写代码 三、程序文件的注释命令与程序结束命令 1、注释命令 格式:NOTE | * | & 注释行:以* 、 NOTE开头的命令行(独成一行) 且只能出现在一行的开始 命令行后的注释: & (在其他命令行之后),2、程序结束命令 格式:CANCEL 说明:执行CANCEL将释放所有私有内存变量 程序中的常用命令 程序开头常用命令:CLEAR SET TALK OFF 程序末尾常用命令:RETURN CANCEL SET TALK ON QUIT 输入输出命令,(1)标题部:通常由注释语句组成, 说明程序的名称,功能,作者等。
4、(2)初始化部:通常由各种SET命令及CLEAR命令等组成, 用于设定程序运行时的初始环境。 (3)程序主体:为完成特定任务所需的命令的有序集合。 (4)结束返回部:由关闭文件命令,恢复程序运行前的环境 的SET命令及RETURN,QUIT等返回语句组成。,程序的几个部分,(1)、首先遵守命令的基本书写规则; (2)、命令分行书写,一行只能写一条命令, 若命令较长需分行书写,要在一行结束时输入; 程序中每条命令都以回车键结尾; (3)、擅长使用注释语句,提高程序的可读性。,程序书写规则, 5、2 基本输入输出命令,一、交互式输入命令 交互式输入:根据屏幕的提示,通过键盘等输入设备输入数据。 1
5、、INPUT 命令 格式:INPUT TO 说明: (1)以表达式的值作为提示信息 (2)可以是含有变量的字符型表达式 (3)内存变量可接受任何类型的表达式的值 (4)不能不输入任何内容按回车键 (5)输入字符串时,必须加定界符 L常量要加圆点定界符 T型常量要用大括号,2、ACCEPT 命令 格式:ACCEPT TO 功能:等待用户从键盘输入字符串 说明:(1)在输入字符串时不需要加定界符, (2)可以不输入任何内容直接按回车键。 3、WAIT 命令 格式:WAIT TO WINDOW AT, NOWAIT CLEAR | NOCLEAR TIMEOUT 说明:该命令只接收字符型数据,说明:
6、(1)若字符串表达式为空,不会显示任何提示信息; 若没有指定字符串表达式, 则默认为按任意键继续 (2)若用户按的是Enter键或单击了鼠标, 内存变量中保存空串; 若没有 TO 项,输入的单字符不保留。 (3)WAIT提示窗口(默认在主窗口的右上角) (4)同时选用 NOWAIT短语 和 WINDOWS子句, 系统不等待用户按键,直接往下执行,4、INKEY 函数 格式:INKEY ( ,) 功能:等待用户输入内容,等待时间由数值表达式确定 (单位为秒),返回由按键而产生的一个整数值。 说明:(1)INKEY函数只能返回用户按键的ASCII码值, 还能接受键盘上各种不可打印的控制键、功能键等
7、。 (2)关于等待时间: 超过预定的等待时间用户仍未按键,则返回0; 数值表达式为0,则无限期等待,直到用户按键为止; 格式中缺少可选项,则不等待,直接返回0。 (3)功能字符:S 、H、 M 控制光标的显示或隐藏, 检查鼠标器按钮的状态。,二、一般输出命令 1、文本行输出命令 格式: | 功能:将信息的内容按原样显示出来。 说明:?/? 2、文本输出命令 格式: TEXT ENDTEXT 说明:该命令只能在程序设计中用,不能在命名窗口中用; 屏幕画面; 中允许出现变量、函数、表达式,,本命令能识别他们不显示其值,但需事先设定状态 SET TEXTMERGE ON,并用 将其括起来, 以区别其
8、他一般的文本信息。 三、格式化输入输出命令 格式: SAY 如: 6,8 SAY “请输入查询条件:” 格式: SAY GET DEFAULT 说明:变量必须事先赋初值(类型、长度); GET 必须要READ命令激活; READ命令的格式:READ SAVE,例: SET TALK OFF USE RCDA ACCEPT “请输入编号:” TO BH LOCATE FOR 编号=BH ?“工资:”+STR(工资) INPUT “请输入工资:” TO GZ LOCATE FOR 工资=GZ ?姓名:+姓名 4,10 SAY “工资为1000的人的编号为:” 4,25 SAY BH USE SET
9、 TALK ON RETURN, 5、3 程序设计的控制结构,程序结构:程序中命令或语句执行的流程结构。 Visual FoxPro系统的程序有两个特点: 一是程序控制流模式, 由顺序、分支(选择)、循环三种基本结构构成。 二是面向对象可视化的结构程序模块, 在每个模块的内部也是由程序控制流组成。,常见的控制结构如下: 1顺序结构 顺序结构:在程序执行时,根据程序中语句的书写顺序 依次执行的命令序列。 2分支结构 分支结构:在程序执行时,根据不同的条件, 选择执行不同的程序语句, 用来解决有选择、有转移的诸多问题。,3循环结构 循环结构:能够使某些语句或程序段重复执行若干次。 如果某些语句或程
10、序段需要在一个固定的位置上 重复操作,使用循环是最好的选择。 4过程结构(可读性、模块化) 过程:具有独立功能而且可以被其它程序调用的程序序列 在许多应用程序中,有一些程序段需要反复执行多次, 这些程序段不在一个固定的位置上, 而是分散在程序的许多位置上重复执行, 可将其与嵌入它的程序分开,形成独立的程序序列, 待使用时再调入程序中,以实现不同位置上的重复操作。,一、顺序结构,例:程序A1. PRG SET TALK OFF Z=0 INPUT “输入X的值:” TO X INPUT “输入Y的值:” TO Y Z=X+Y ?Z=,Z SET TALK ON RETURN,二、选择结构,支持选
11、择结构的语句:条件语句、分支语句 1、条件语句 (单分支、双分支) 格式:IF ELSE ENDIF,语句序列1,有ELSE的选择语句,无ELSE的选择语句,例:A2.PRG SET TALK OFF Z=0 INPUT “输入X的值:” TO X INPUT “输入Y的值:” TO Y IF XY Z=X+Y ENDIF ?Z=,Z RETURN,例:A3.PRG SET TALK OFF Z=0 INPUT “输入X的值:” TO X INPUT “输入Y的值:” TO Y IF XY Z=X+Y ELSE Z=X*Y ENDIF ?Z=,Z RETURN,2、分支语句 DO CASE C
12、ASE条件表达式1 命令行序列1 CASE条件表达式2 命令行序列2 CASE条件表达式N 命令行序列N OTHERWISE 命令行序列N+1 ENDCASE,ENDCASE后面的语句,例:A4.PRG 设X代表货物重量,Y代表运费,其关系如下式: X*15 X1000,SET TALK OFF INPUT“输入货物重量:” TO X IF X=50 Y=X*15 ELSE IF X=100 Y=X*10 ELSE IF X=1000 Y=X*8 ELSE Y=X*5 ENDIF ENDIF ENDIF ?”运费为:”+STR(Y,8,2) RETURN,SET TALK OFF INPUT“
13、输入货物重量:” TO X DO CASE CASE X50.AND. X100.AND.X1000 Y=X*5 ENDCASE ?“运费为:”+STR(Y,8,2) RETURN,例:A5、PRG求一元二次方程AX2+BX+C=0的实根。 SET TALK OFF INPUT“请输入二次项系数:” TO A INPUT “请输入一次项系数:” TO B INPUT TO “请输入常数项:” C K=B*B-4*A*C S=IIF(K0,SQRT(K),0),DO CASE CASE A=0 ?“唯一实根:”,-C/B CASE A0.AND.K=0 ?“两个相等实根:”,B/(2*A) CA
14、SE A0.AND.K0 ?“第一个实根:”,(-B+S)/(2*A) ? “第二个实根:”,(-B-S)/(2*A) OTHERWISE ?“本方程无实根!” ENDCASE,使用分支语句应注意的问题: (1)IF ENDIF 和 DO CASE ENDCASE 必须 配对使用,DO CASE与第一个CASE条件表达式之间 不应有任何命令。 (2)条件表达式可以是各种表达式或函数的组合, 其值必须是逻辑值。 (3)命令行序列可以由一个或多个命令组成, 可以是条件控制语句组成的嵌套结构。 (4)DO CASE ENDCASE 命令, 每次最多只能执行一个命令行序列。 在多个CASE项的条件表达
15、式值为真时, 只执行第一个条件表达式值为真的命令行序列, 然后执行ENDCASE的后面的第一条命令。,三、循环结构(重复结构),1、DO WHILE ENDDO 语句(“当” 循环、条件循环) 根据条件表达式的值,决定循环体内语句的执行次数。 格式:DO WHILE LOOP EXIT ENDDO,说明:(1)若第一次判断条件为假,循环体一次都不执行 (2)若循环体中包含 LOOP 命令, 遇到 LOOP 时,结束循环体的本次执行, 不再执行其后面的语句, 而是转回 DO WHILE 处重新判断条件 (3)若循环体中包含 EXIT 命令, 遇到 EXIT 时,结束该语句的执行, 转去执行 EN
16、DDO 后面的语句,例:SET TALK OFF ?“开始跑步” N=0 DO WHILE N=10 ?”开始的圈数是:”,N N=N+1 ENDDO ?”你可以休息了!” ?”呼呼累死人了!”,例:SET TALK OFF STORE 0 TO S,N DO WHILE .T. N=N+1 S=S+N IF N=10 EXIT ENDIF ENDDO ?S=+STR(S,2) RETURN,SET TALK OFF INPUT 请输入一个大于1的自然数 TO N K=0 & K=0表示输入的数为质数,K=1不是质数 J=2 DO WHILE J 0 J=J+1 LOOP ELSE K=1 E
17、XIT ENDIF ENDDO,IF K=0 ? N,是质数 ENDIF SET TALK ON RETURN,2、FORENDFOR 语句(“计数”循环、步长循环) 根据用户设置的循环变量的初值、终值和步长, 决定循环体内语句的执行次数据。 格式:FOR = TO STEP ENDFOR|NEXT,注 :(1)当无STEP语句时,默认步长为1。 (2)初值、终值、步长都可以是数值表达式, 却仅在循环语句执行开始时被计算一次。 (3)可在循环体内改变循环变量的值, 但会影响循环体的执行次数 (4)步长为零时,FOR循环为死循环, 步长可以是正值,也可以是负值。 (5)步长是正值时,超过的含义是
18、大于 步长是负值时,超过的含义是小于。 (6)ENDFOR 可以换成NEXT。 (7)LOOP、EXIT,例:对给定的自然数K,求不大于K的奇数之和 SET TALK OFF CLEAR INPUT请输入一个自然数: TO K S=0 FOR I=1 TO K STEP 2 S=S+I ENDFOR ?S=,S SET TALK ON RETURN,3、SCANENDSCANE 语句(“指针”型循环控制语句) 根据用户设置的表中的当前记录指针, 决定循环体内语句的执行次数据。 格式:SCAN FOR WHILE ENDSCAN 执行该语句时, 记录指针自动、依次地在制定范围内满足条件的记录上移
19、动, 对每一条记录执行循环体内的命令。,注:(1)SCANENDSCAN循环结构隐含EOF()和 SKIP处理。 (2)无范围选项则默认值为所有记录ALL。 (3)如使用WHILE选项,遇到该选项的条件为假时, 便结束循环。 (4)LOOP和EXIT选项可以在该循环中使用, 使用方法同DO循环。,使用循环语句时应注意的几点 (1)DO WHILE 和 ENDDO、FOR 和 ENDFOR、SCAN 和 ENDSCAN 必须配对使用。 (2)命令行序列可以是任何FoxPro命令或语句, 也可以是循环语句,即可以为多重循环。 (3)循环变量应是数值型的内存变量或数组元素。 (4)EXIT和LOOP
20、命令嵌入在循环体内, 可以改变循环次数,但是不能单独使用。 EXIT:跳出循环,转去执行ENDDO、ENDFOR、ENDSCAN 后面的第一条命令; LOOP:转回到循环的开始处,重新对“条件”进行判断, 相当于执行了一次ENDDO、ENDFOR、ENDSCAN命令, 可改变命令行序列中部分命令的执行次数。 EXIT、LOOP可以出现在命令行序列的任意位置。,四、编程实例,B1.PRG *a,b,c从大到小排序 set talk off Clear input 请输入数值a: to a input 请输入数值b: to b input 请输入数值c: to c,if ab temp=a a=b
21、 b=temp endif if ac temp=a a=c c=temp endif,if bc temp=b b=c c=temp endif set talk on ?a,b,c return,B2.PRG *求n个数中的最大数 set talk off clear input 请输入要比较的数值个数n: to n dimension a(n) for i=1 to n input 请输入数值: to a(i) endfor,for i=2 to n if a(1)a(i) temp=a(1) a(1)=a(i) a(i)=temp endif endfor ?最大数为: ?a(1) r
22、eturn,例:B3、PRG求0-10之间奇数之和。 SET TALK OFF I=0 &用于表示数值大小 S=0 &用于求和 DO WHILE I10 I=I+1 IF INT(I/2)=I/2 & MOD(I,2)=0 I为偶数 LOOP ELSE S=S+I ENDIF ENDDO ?“S=”,S RETURN,例:B4、PRG SET TALK OFF STORE 0 TO X,Y DO WHILE .T. X=X+1 DO CASE CASE MOD(X,2)0 &奇数 ?X Y=Y+X &奇数之和 CASE X=10 EXIT OTHERWISE &不是10以内的奇数 LOOP &
23、10以内的偶数 ENDCASE ENDDO ?“Y=” ?Y SET TALK ON RETURN,例:B5.PRG 求4! SET TALK OFF CLEAR J=1 R=1 DO WHILE J=4 R=R*J &求阶乘 J=J+1 &改变数值的大小 ENDDO ?“R=”,R RETU,例21:A21PRG求1!+2!+3!+4! +5!的和。 SET PROC TO PROC1 SET TALK OFF I=1 S=0 DO WHILE I=5 Y=1 DO SUB WITH I,Y S=S+Y I=I+1 ENDDO RETU,*PROC1PRG* PROC SUB &J的阶乘 P
24、ARA P,R J=1 DO WHILE J=P R=R*J J=J+1 ENDDO RETU,例:B6.PRG 用户从键盘上任意输入一个字符串,并以相反顺序显示出来 set talk off clear accept 任意输入一字符串: to zf s=0 do while slen(zf) a=substr(zf,len(zf)-s,1) 4,s say a s=s+1 enddo return,方法2: CLEA ACCEPT “请输入字符串:” TO ZF FOR I=LEN(ZF) TO 1 STEP -1 A=SUBS(A,I,1) 8,LEN(ZF)-I SAY A ENDFOR
25、,SET TALK OFF USE RCDA I=0 DO WHILE .NOT.EOF( ) IF 性别=男 I=I+1 ENDIF SKIP ENDDO ?I=,I USE RETURN,SET TALK OFF USE RCDA COUNT ALL TO N GO TOP M=0 FOR I=1 TO N IF 性别=男 M=M+1 ENDIF SKIP ENDFOR ?M=,M USE RETURN,例:B7、PRG统计RCDA数据表中男性人数。(3种方法),例:B8PRG用FOR语句改写例B7.PRG。 SET TALK OFF USE RCDA S=0 SCAN ALL FOR 性
26、别=男 S=S+1 ENDSCAN 4,5 SAY男性人数为: 4,20 say s Use retu,例:B9PRG在RCDA数据表中, 对60年以后出生的女职工,输出其编号,姓名。 SET TALK OFF CLEAR USE RCDA SCAN FOR 出生日期CTOD(“01/01/60”) IF 性别=女 ?编号,姓名 ELSE LOOP ENDIF ENDSCAN RETU,例:B10PRG打开RCDA表,只显示3位男性的记录。 SET TALK OFF CLEAR USE RCDA N=0 SCAN FOR 性别=男 WHILE N3 ?编号,姓名 N=N+1 ENDSCAN U
27、SE RETU, 5、4 模块化程序设计,应用程序一般是多模块程序,包含多个模块程序。 模块:一个相对独立的程序段。 可以是主程序、子程序、过程或自定义函数。 VFP中,模块可以是命令文件,也可以是过程。 主程序:调用其他程序而自身不被其它程序调用的程序。 子程序:被调用的以PRG为扩展名的独立的程序文件。 是有相对独立性、通用性的程序。,子程序与主程序的区别 (1)子程序的第一条语句可以是PARAMETERS命令, 用来实现参数的传递, 主程序中不包含此语句。 (2)主程序里必须包含调用子程序的语句。 子程序的大致结构 PARA RETURN | RETRY,一、子程序和参数传递 1、子程序
28、的建立、调用和返回 建立:MODIFY COMMAND | ? 调用:DO WITH 返回:RETURN | TO | TO MASTER,2、子程序调用中的参数传递 说明:当调用命令含参数时,子程序中一定要有参数说明语句 发送数据命令:主程序、调用程序 DO WITH DO | (,) 默认按值传递 如果实参是变量,可通过命令重新设置参数传递的方式 SET UDFPARMS TO VALUE | REFERENCE,接收数据命令:子程序、被调用程序 PARAMETERS ,(私有变量) LPARAMETERS ,(局部变量) 以上两条命令都是模块程序的第一条可执行命令。 (1) PARAME
29、TERS出现在它定义的参数被使用前, 先定义,后使用 (2)参数的位置、个数、类型 实参类型:常量、变量、一般格式的表达式 形参的数目不能少于实参的数目 (3)主程序中的参数是 单个变量: 按地址传递 表达式或常量:按值传递。,主程序:,Parameters sonv ?sonv Sonv=son return,Mainv=main Do son with mainv ?mainv Cancel,子程序:,二、自定义函数和过程,1、自定义函数的设计 (1)定义 FUNCTION PARAMETERS RETURN ENDFUNC 说明:如果用一个独立文件形式存储, FUNCTION 语句可省略
30、; 函数名就是程序文件名。,说明: (1)若无ENDFUNC, 过程结束于下一条PROCEDURE|FUNCTION命令 或文件结尾处。 (2)执行到RETURN语句,则返回到调用程序(或命令窗口) 若缺省RETURN命令,则在过程结束处自动执行一条 隐含的RETURN命令。 若RETURN命令不带,则返回逻辑真.T.,(2)调用 函数名 (参数表) 说明: A、自定义函数能以一个独立的文件存储, 也可包含在调用它的程序中作为它的一部分出现; B、自定义函数名不能与VFP的系统函数同名, 也不能与内存变量同名; 最多由10个字符组成, 以字母或下划线开头,可含字母、数字和下划线。,2、过程的设
31、计 PROCEDURE PARAMETERS ENDPROC 例: SET TALK OFF CLEA ?这是主程序 DO PROC1 RETURN,PROCDURE PROC1 ?调用过程PROC1 ENDPROC SET TALK ON,过程返回语句:返回过程的调用处 (1)语句格式: RETURNTO MASTER | TO 过程| RETRY (2)语句功能: 将控制返回到调用程序中调用命令的下一语句。 RETURN TO MASTER: 执行到该语句时控制返回到最高层命令文件主程序。 RETURN TO :使控制返回到指定的过程。 RETRY:使控制返回到调用语句本身。,3、存放为单
32、独文件的函数与过程的调用 过程 :VFP中,程序是独立存放在磁盘上的程序文件, 使用时用户通过文件名调用并执行。 为实现用户的某种目的,很可能要由多个程序完成。 (1)过程可放在程序文件代码的后面, 也可保存在称为过程文件的单独文件里。 (2)过程文件建立的命令(.PRG ):MODIFY COMMAND (3)在调用过程文件中的过程之前先要打开过程文件,打开过程文件语句 VFP系统规定,任何时刻只能打开一个过程文件, 当新的过程文件打开时,自动关闭原来打开的过程文件。 (1)语句格式 SET PROCEDURE TO , ADDITIVE (2)语句功能 打开一个以过程文件名为名的过程文件。
33、,模块调用的格式:调用过程语句:执行已有的过程 格式一:使用DO命令: DO 过程名| WITH 注:WITH中参数与PARAMETERS中的参数一致。 格式二:在名字后加一对小括号 | ( ) 说明:格式二可作为命令使用(返回值被忽略), 也可作为函数出现在表达式里。 这里,不能包含扩展名,关闭过程文件语句 关闭过程文件语句,就是将已打开的过程文件关闭。 (1)语句格式 CLOSE PROCEDURE 或 SET PROCEDURE TO (2)语句功能 关闭当前打开的过程文件。 关闭所有打开的过程文件: SET PROCEDURE TO 关闭个别过程文件: RELEASE PROCEDUR
34、E ,4、过程和函数的参数传递 过程和函数都是子程序 数组在传递时是按地址传递,传递的是数组的首地址。 5、接收函数的返回值 说明:函数默认返回值是.T.,可通过RETURN命令返回任意值。 例: FUNCTION PLUS3 PARA NUM RETURN NUM+3 ENDFUNC M=PLUS(33) ?PLUS(33) ?M,子程序与过程的区别 *子程序必须独立于调用程序,以 .PRG文件存盘。 过程是存放在过程文件(PRG)中。 *过程的第一条语句必须是以PROC语句开头。 *子程序的调用同过程的调用,*主程序main.prg set talk off public a,b,c st
35、ore 1 to a,b,c set procedure to proc1 do pc1 ?a do pc2 ?b,c close proc set talk on return,*proc1.prg procedure pc1 a=a*2+1 return procedure pc2 b=b*4+1 c=a*2+1 do pc3 return procedure pc3 c=c*2+5 return,例2:A2PRG S=0 FOR I=1 TO 5 K=1 DO BSUB S=S+K ENDFOR ?S=,S RETU,*BSUBPRG* FOR J=1 TO I K=K*J & I 的阶
36、乘 ENDFOR RETU,三、变量的作用域,变量的属性:类型、取值、作用域 变量的作用域:变量在什么范围内是有效或能够被访问的。 VFP中,根据变量的作用域分 内存变量可分为:公共变量、私有变量、局部变量 1、公共变量(全局变量) 定义格式:PUBLIC 初始值:.F. 内存变量:简单变量、数组变量,功能:变量的作用域贯穿整个程序, 即使程序执行完毕返回到命令窗口它仍然存在。 只有当执行CLEAR MEMORY、RELEASE、QUIT 等命令后,公共变量才被释放。 说明:公共变量要先建立后使用 命令窗口中直接使用而由系统自动隐含建立的变量是公共变量 2、私有变量(局部变量) 在程序中直接使
37、用(没有通过PUBLIC和LOCAL命令事先声明) 而由系统自动隐含建立的变量是私有变量。 功能:作用域是建立它的模块及其下属的各层模块, 一旦建立它的模块程序运行结束,私有变量将被删除。,3、局部变量(本地变量) 格式:LOCAL 功能:变量的作用域局限于建立它的模块, 不能在上层或下层模块中使用。 一旦建立它的程序执行完毕,它也自动地被系统删除 说明:局部变量要先建立后使用 4、变量屏蔽 私有变量和上级程序的变量可以同名。 当同名时, 在定义私有变量的程序内,将隐藏上级程序的同名变量; 返回上级程序时,恢复隐藏的上级同名变量。,变量屏蔽语句:PRIVATE PRIVATE ALL LIKE
38、 | EXCEPT 功能:隐藏当前程序中某些与上层调用程序中同名的变量, 使这些变量的作用范围局限在当前程序内。 说明: *局部变量既可用PRIVATE定义,也可不用PRIVATE定义。 *若局部变量不用PRIVATE定义, 下层中和上层中同名的变量的操作结果将会带回到上层。 5、有关全局变量和局部变量问题 (1)定义局部变量的好处: 节约内存空间,避免重名变量被修改其内容 (2)PUBLIC屏蔽变量命令,例:A25PRG STE TALK OFF CLEAR PUBLIC X X=7 Y=6 Z=5 DO CSUB ?“X=”,X,“Y=”,Y,“Z=”,Z * 7,6,10 RETU,*C
39、SUBPRG* PRIVATE X,Y X=0 X=X+3 Y=X+1 Z=Z+5 ?“X=”,X,“Y=”,Y,“Z=”,Z * 3,4,10 RETU,例:A26PRG SET TALK OFF CLEAR SET PROC TO PROC3 PUBLIC X,Y,M STORE 1 TO X,Y M=0 DO SUB1 ?M,X,Y 3 2 4 Z=1 DO SUB2 ?X,Y,Z SET PROC RETU,*PROC3PRG* PROC SUB1 M=1 DO WHILE M=2 X=X*M 1 2 Y=Y+M 2 4 DO SUB3 M=M+1 ENDDO RETU,PROC SU
40、B2 X=X*M Y=Y+M RETU PROC SUB3 PRIVATE Z Z=X+Y ?“Z=”,Z 3 6 RETU,SET TALK OFF SET SAFETY OFF CLEAR PUBLIC A,B,C A=1 B=2 C=3 DO SUB1 WITH A,B ?A,B,C 3 20 3 RETURN,SUB1.PRG PARAMETERS A1,B1 B1=10*B1 20 A1=A1+2 3 DO SUB2 WITH A1,B1 RETURN,SUB2.PRG PARAMETERS X,Y A=4+X 7 B=5+Y 25 ?A,B 7 25 WAIT RETURN,*MA
41、IN.PRG SET TALK OFF CLEAR A=1 B=2 C=3 D0 SUB1 WITH A,B ?A,B,C 3 20 3 RETURN,*SUB1.PRG PARA A1,B1 B1=10*B1 20 A1=A1+2 3 C1=A1*B1 60 DO SUB2 ?A1,B1,C1 3 20 18 RETURN,*SUB2.PRG PRIVATE A1,B1 A1=4 B1=5 C1=9+A1+B1 ?A1,B1,C1 4 5 18 RETURN,SET PROC TO PROC2 SET TALK OFF CLEAR ST=“0123456789” STT=“” DO SUB1
42、 WITH ST,STT DO SUB2 WITH STT,5 SET PROC TO RETU,*PROC2PRG* PROC SUB1 PARA X,Y K=LEN(X) DO WHILE K0 Y=Y+SUBSTR(X,K,1) K=K-1 ENDDO ?Y RETU,PROC SUB2 K=LEN(XX) I=0 ? DO WHILE KN START=I*N+1 ?SUBSTR(XX,START,N) I=I+1 K=K-N ENDDO START=I*N+1 ?SUBSTR(XX,START) RETU,例22:A22PRG,SET TALK OFF PUBLIC X1 X1=中国 Y1=反对 Z= DO SUB1 WITH Z ?X1+人+Z SET TALK ON RETURN,*SUB1.PRG PARA Y PRIVATE X1 X1=中国共产党 X3=台独 Y=X2+X3 ?X1+Y RETURN,设有如下主程序和子程序段,请写出N=2,A分别为2和5时的结果,*主程序 SET TALK OFF PUBLIC Y CLEA R=1 S=0 INPUT N= TO N,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026二上数学第五单元核心素养课件
- 病理个人述职报告(3篇)
- 2026北师大二下买电器说课课件
- 2025-2026学年九年级物理(天津专用)上学期期中模拟试卷(含答案)
- 人教版六年级上册数学 第六单元总教案 教案
- 2026北师大二下小蝌蚪成长说课课件
- 葡萄糖-6-磷酸脱氢酶检测试剂注册审查指导原则(2026年第22号)
- 创伤病人失血量评估和成分输血
- Unit 4 The Earth Section 3 Expressing and communicating ideas Speaking 教学设计2026-2027学年沪教版英语七年级上册
- 2026四下数学观察物体二原创课件
- 2026中国农业银行河北省分行校园招聘964人考试参考试题及答案解析
- (正式版)DB61∕T 1624-2022 《公路护栏设置规范》
- 数字治理 课件全套 彭飞 第1-12章 数字治理导论 - 数字环境治理
- 肥胖与骨骼健康课件
- 2025-2030中国无人机行业应用场景与市场前景评估报告
- 环境现场采样培训
- 智能建造概论课程介绍
- 精神患者冲动护理
- DB23-T 2319-2019 红松人工林大径材定向培育技术规程
- 危重症患者镇静镇痛护理
- 工艺岗转正述职报告
评论
0/150
提交评论