第6章 程序设计基础_第1页
第6章 程序设计基础_第2页
第6章 程序设计基础_第3页
第6章 程序设计基础_第4页
第6章 程序设计基础_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章第六章 程序设计基础程序设计基础nVFP程序设计包括面向过程程序设计和面向对象程序程序设计包括面向过程程序设计和面向对象程序设计。本章将介绍面向过程程序设计,包括程序的建设计。本章将介绍面向过程程序设计,包括程序的建立、运行,程序的基本控制结构,多个程序模块的组立、运行,程序的基本控制结构,多个程序模块的组合方法等内容合方法等内容 本章掌握的内容本章掌握的内容1、掌握程序文件的建立、编辑与运行、掌握程序文件的建立、编辑与运行2、理解结构化程序设计和基本结构、理解结构化程序设计和基本结构3、掌握顺序结构、掌握顺序结构n基本的输入输出语句与函数基本的输入输出语句与函数(Input,Wait,

2、MessageBox()、环境设置语句环境设置语句4、掌握选择结构、掌握选择结构n单分支结构、双分支结构、多分支结构单分支结构、双分支结构、多分支结构5、掌握循环结构、掌握循环结构nDO WHILE 循环、循环、FOR循环、循环、SCAN循环和循环嵌套循环和循环嵌套6、过程(过程的定义、参数传递与变量作用域)、过程(过程的定义、参数传递与变量作用域)7、自定义函数的定义与调用以及参数的传递、自定义函数的定义与调用以及参数的传递程序设计基础程序设计基础n程序文件的建立与运行程序文件的建立与运行n结构化程序设计初步结构化程序设计初步n顺序结构程序设计顺序结构程序设计n程序的选择结构程序的选择结构n

3、循环结构循环结构n过程过程n参数传递与变量作用域参数传递与变量作用域n自定义函数自定义函数6.1 程序文件的建立与运行程序文件的建立与运行 6.1.1 程序文件的概念程序文件的概念 程序是为实现某一个具体任务而按照一定的控制结构编程序是为实现某一个具体任务而按照一定的控制结构编制的命令序列。将程序以文件的形式存储在磁盘上,制的命令序列。将程序以文件的形式存储在磁盘上,这种文件称为程序文件。这种文件称为程序文件。在在VFP环境下,程序文件的扩展名为环境下,程序文件的扩展名为.PRG。程序的概念程序的概念例例6.1 程序文件程序文件TJ.PRG,分别统计所有学生和分别统计所有学生和“金融金融”专业

4、学生的专业学生的奖学金总额,并将统计结果显示在奖学金总额,并将统计结果显示在VFP主窗口中。主窗口中。 CLEAR SELECT SUM(奖学金奖学金) FORM STUDENT INTO ARRAY TJ1 SELECT SUM(奖学金奖学金) FORM STUDENT WHERE 专业专业“金金融融”INTO ARRAY TJ2 ?“所有学生的奖学金总额:所有学生的奖学金总额:”,TJ1(1,1) ?“金融专业学生的奖学金总额:金融专业学生的奖学金总额:”,TJ2(1,1) 这只是一个简单的程序例子,组成程序的都是一条条可以独立执行这只是一个简单的程序例子,组成程序的都是一条条可以独立执行

5、的命令,这些命令在程序中通常也称为的命令,这些命令在程序中通常也称为“语句语句”。6.1.2 程序文件的建立与编辑程序文件的建立与编辑1、程序文件建立的方法、程序文件建立的方法方法方法1)从项目管理器新建程序文件)从项目管理器新建程序文件选择选择“代码代码”选项卡。选项卡。选定选定“程序程序”,单击,单击“新建新建”按钮。按钮。方法方法2)从)从“文件文件”菜单新建程序文件。菜单新建程序文件。方法方法3)在命令窗口中执行命令:)在命令窗口中执行命令:MODIFY COMMAND ,打开编辑窗口。,打开编辑窗口。程序文件的保存和修改程序文件的保存和修改2、程序文件的保存程序文件的保存程序输入完毕

6、后,从程序输入完毕后,从“文件文件”菜单选择菜单选择“保存保存”或按或按Ctrl+W保存程序文件。保存程序文件。3、程序文件的修改程序文件的修改方法方法1)从项目管理器中选定它并单击)从项目管理器中选定它并单击“修改修改”按钮。按钮。方法方法2)从)从“文件文件”菜单选择菜单选择“打开打开”。方法方法3)在命令窗口中执行命令:)在命令窗口中执行命令: MODIFY COMMAND 修改后保存退出。修改后保存退出。6.1.3程序文件的运行程序文件的运行程序文件的运行的方法有三种:程序文件的运行的方法有三种:方法方法1)从项目管理器中选定它并单击)从项目管理器中选定它并单击“运行运行”按钮。按钮。

7、方法方法2)从)从“程序程序”菜单选择菜单选择“运行运行”。方法方法3)在命令窗口中执行命令:)在命令窗口中执行命令:DO 运行程序中遇到以下语句的情况:运行程序中遇到以下语句的情况:DO:RETURN:CANCEL:QUIT:6.2 结构化程序设计初步结构化程序设计初步 6.2.1 算法及流程图算法及流程图1、算法的概念算法的概念一般说来,设计一个程序应有两大步骤:一般说来,设计一个程序应有两大步骤:第一步:根据问题要求拟定计算机求解的策略和步骤,第一步:根据问题要求拟定计算机求解的策略和步骤,称之为称之为“算法算法”。第二步:根据拟定的算法,按照编程语言约定的规则,第二步:根据拟定的算法,

8、按照编程语言约定的规则,编写程序代码,即通常所说的程序。编写程序代码,即通常所说的程序。 如:交换变量如:交换变量X和和Y的值的值 1) X-中间变量(中间变量(T) 2) YX 3) T(原原X的值)的值)Y算法的算法的流程图流程图描述描述 P126例例6.3 计算自然数计算自然数1-100的和的和 开始OS,1NN=100S+NS,N+1N 结束 输出S否是S=0N=1Do while N=100 S=S+N N=N+1ENDDO?”S=”,S6.2.2 结构化程序设计方法结构化程序设计方法结构化程序是指由结构化程序是指由顺序、选择、循环顺序、选择、循环三种基本结构组成三种基本结构组成的程

9、序。为保证得到结构化程序,程序设计时应采用的程序。为保证得到结构化程序,程序设计时应采用结构化程序设计方法,其要点是结构化程序设计方法,其要点是自顶向下逐步求精和自顶向下逐步求精和模块化设计模块化设计(1)自顶向下逐步求精自顶向下逐步求精(2 2)模块化设计)模块化设计 开始100N NN=200 输出N 结束判断判断N是否为素数是否为素数N 是 素是 素数数N+1N此框待细化此框待细化否是否程序控制的三种结构程序控制的三种结构顺序结构选择结构循环结构6.36.3顺序结构程序设计顺序结构程序设计 6.3.1 顺序结构顺序结构编写程序时,按照处理过程的先后顺序排列所需的命令编写程序时,按照处理过

10、程的先后顺序排列所需的命令(语句),程序运行时,按照命令(语句)的排列顺序逐条执行,这种结(语句),程序运行时,按照命令(语句)的排列顺序逐条执行,这种结构就称为顺序结构。构就称为顺序结构。 P127 图图6-56.3.2 简单的输入输出语句简单的输入输出语句1、数据输入语句:数据输入语句:INPUT格式格式 INPUT TO 功能:暂停程序运行,显示提示信息,等待用户从键盘上输入数据,输入功能:暂停程序运行,显示提示信息,等待用户从键盘上输入数据,输入完毕后按回车,系统将所输入的表达式的值存入到指定的内存变量中完毕后按回车,系统将所输入的表达式的值存入到指定的内存变量中然后继续执行程序。然后

11、继续执行程序。可接受的数据类型可以是:可接受的数据类型可以是:L,C,N,D,T,Y 简单的输入输出语句简单的输入输出语句例例6.5运行下列程序:运行下列程序: P128解释解释 INPUT “请输入一个数字:请输入一个数字:” TO A1 & 3.14 INPUT “请输入一个字符串:请输入一个字符串:” TO B1 & “会计专业会计专业” INPUT “请输入一个逻辑值:请输入一个逻辑值:” TO C1 & .f.注意输入的格式注意输入的格式2、字符串输入语句:字符串输入语句:ACCEPT 格式格式 ACCEPT TO 功能:暂停程序运行,显示提示信息,等待用户从键盘上输入功能:暂停程序

12、运行,显示提示信息,等待用户从键盘上输入一个字符串一个字符串,输入完毕后按回车,系统将所输入的表达式,输入完毕后按回车,系统将所输入的表达式的值存入到指定的内存变量中然后继续执行程序的值存入到指定的内存变量中然后继续执行程序简单的输入输出语句简单的输入输出语句INPUTINPUT与与ACCEPTACCEPT语句的区别语句的区别两者用法语句,但两者用法语句,但ACCEPTACCEPT语句语句只能接受字符型数据只能接受字符型数据,且且键入的字符串不必加定界符键入的字符串不必加定界符。内存变量是字符型的。内存变量是字符型的。例例6.66.6执行下段程序:执行下段程序: P129P129解释解释ACC

13、EPT “A2=” TO A2 &12345ACCEPT “A2=” TO A2 &12345ACCEPT “B2=” TO B2 &”2468”ACCEPT “B2=” TO B2 &”2468”ACCEPT “C2=” TO C2 &.t.ACCEPT “C2=” TO C2 &.t. 简单的输入输出语句简单的输入输出语句3、单字符输入语句:、单字符输入语句:WAIT格 式格 式 W A I T T O WINDOWS功能:暂停程序运行,显示提示信息,等待用户键入功能:暂停程序运行,显示提示信息,等待用户键入任何任何一个键一个键,然后继续执行程序。,然后继续执行程序。提示:提示: WAIT

14、语句语句只接收单个字符只接收单个字符。例如:例如:WAIT“WAIT“请看清结果后按任意键,程序将继续运行请看清结果后按任意键,程序将继续运行” 见见P137 例题例题6.14简单的输入输出语句简单的输入输出语句4、简单输出语句:?、?、简单输出语句:?、?若用?,从屏幕的下一行第一列开始显示;若用?,从屏幕的下一行第一列开始显示;若用?,则从屏幕的当前光标位置开始显示。若用?,则从屏幕的当前光标位置开始显示。 ?后如果不跟任何表达式,表示另起一行。?后如果不跟任何表达式,表示另起一行。5、信息、信息显示函数:显示函数:MESSAGEBOX() P130格式格式:messagebox(,) 功

15、能:功能:暂停程序运行,在对话框中显示提示信息,等待用户单击按钮,并返回一个整暂停程序运行,在对话框中显示提示信息,等待用户单击按钮,并返回一个整数表示单击的是哪个按钮。数表示单击的是哪个按钮。按钮类型是由按钮类型是由+ 详见表详见表6-1 输出函数输出函数例例6.7 MESSAGEBOX函数举例,见表函数举例,见表6-3messagebox(“继续执行吗继续执行吗?” , 3 , ”请确认请确认”)messagebox(“是否删除记录是否删除记录,1+48+256)例题例题 p134 6.106.3.3 环境设置语句环境设置语句 1、清屏语句:、清屏语句:CLEAR2、环境设置语句:环境设置

16、语句:SET 格式格式1 SET ON / OFF格式格式2 SET TO (1)SET DEFAULT TO 设置默认工作目录设置默认工作目录如:如: SET DEFAULT TO A:(2)SET PATH TO 设置搜索路径设置搜索路径SET PATH TO d: (3)SET TALK ON / OFF控制是否产生屏幕显示控制是否产生屏幕显示 (4)SET PRINT ON / OFF 是否将输出内容送往打印机是否将输出内容送往打印机 6.3.4 注释注释 1、注释语句、注释语句 格式:格式:*/NOTE P134例题例题6.11功功 功能:注释语句是非执行语句,它们不对功能:注释语句

17、是非执行语句,它们不对计算机产生任何操作,仅仅对程序起注解作计算机产生任何操作,仅仅对程序起注解作用。用。 2、行末注释、行末注释 行末注释用在语句(命令)末尾,以行末注释用在语句(命令)末尾,以 & 起头,后跟本行的注释内容。起头,后跟本行的注释内容。 P133例题例题6.9程序控制的三种结构程序控制的三种结构顺序结构选择结构循环结构单分支的选择结构 IFENDIF双分支的选择结构 IFELSEENDIF多分支的选择结构 DO CASECASEENDCASE顺序结构:从键盘上输入X的值,输出X的绝对值Clear &清屏Input “请输入X的值” to x?“X的绝对值为:”,ABS(X)6

18、.4 程序的选择结构程序的选择结构选择结构是指在程序执行过程中,根据指定条件的当前值在两条或选择结构是指在程序执行过程中,根据指定条件的当前值在两条或多条程序路径中选择一条执行。多条程序路径中选择一条执行。 6.4.1 单分支选择结构单分支选择结构 格式格式 IF ENDIF功能:先判断条件的值是否为真,功能:先判断条件的值是否为真,若为真,执行语句序列,然后执行若为真,执行语句序列,然后执行ENDIF后的语句。后的语句。若为假,则直接执行若为假,则直接执行ENDIF后的语句。后的语句。提示:提示:if 与与endif必须成对出现。必须成对出现。可以是一条语句或多条语句Ifendif 条 件

19、为真 语句系列ENDIF 的下一语句否是例:从键盘上输入X的值,如果X0,输出“X小于0”,否则就结束ClearInput “请输入X:” to xIf xY &如果XY,X与Y交换 T=X X=Y Y=T ENDIF ? X,YRETURN例6.9 从键盘接收两个数存入变量X,Y,使 XY后输出X,Y。6.4.2 6.4.2 双分支选择结构双分支选择结构 条 件 为真ENDIF的下一个 语句 语句系列1 语句系列2格式 IF ELSE ENDIF是否功能:先判断条件的值是否为真,若为真,执行,然后再执行endif的下一条语句,若为假,执行,然后再执行endif的下一条语句举例提示:提示:IF

20、ENDIF和和IFELSEENDIF都可以嵌套使都可以嵌套使用,但要注意做到层次清楚,用,但要注意做到层次清楚,IF,ELSE和和ENDIF匹配匹配正确,不能出现交叉现象。建议在程序编写时采用正确,不能出现交叉现象。建议在程序编写时采用“锯齿形书写格式锯齿形书写格式”。例:从键盘上输入X的值,如果X0,输出“X小于0”,否则输出“X大于0”ClearInput “请输入X:” to xIf x0?“X小于0”elseendif?“X大于0”举例例例6.10 6.10 编一个程序,输入一个学号,在编一个程序,输入一个学号,在STUDENTSTUDENT表中查表中查找,若查到,按下列方式修改该生的

21、奖学金:若奖学找,若查到,按下列方式修改该生的奖学金:若奖学金低于金低于200200元则增加元则增加5050元,否则增加元,否则增加3030元,并在屏幕上元,并在屏幕上提示相应的信息;若查不到则提示提示相应的信息;若查不到则提示“查无此人!查无此人!”。*程序文件6-9.PRGCLEARINPUT “请输入学生的学号:”TO XH OPEN DATABASE 学生成绩USE STUDENTLOCATE ALL FOR 学号=XHIF FOUND()IF 奖学金n2 n1=n1-n2 endif if n2n1 n2=n2-n1 endif ? n1,n2运行时,分别输入10与8,则显示的值为(

22、 )。(A) 10 8(B) 2 8(C) 2 6(D) 2 -2 n1=10n2=8举例下列程序段的结果是( )。 x=1 if x=12 x=x+3 else x=x-34 ? x(A) 123(B) 134(C) 22(D) -33endif6.4.3 多分支选择结构 格式 DO CASE CASE CASE CASE OTHERWISE ENDCASE条件2 条件n条件1语句系列1语句系列2语句系列n语句系列n+1ENDCASE的下一语句多分支选择结构-功能流程图6-8多分支选择结构流程图TFTFTFotherwise多分支选择结构提示:n DO CASE 和ENDCASE必须成对出现

23、。n DO CASE 与第一个CASE之间若有语句,这些语句永远不被执行。n遇到多个条件的值为真时,也只按第一个条件为真的情况处理。n OTHERWISE只能放在所有条件之后,不能插入在中间。n DO CASE语句不仅本身可以嵌套,而且可以与IF语句相互嵌套。举例例6.12 当输入0-6之间的整数时,系统便显示星期日、星期一.星期六的英语单词,否则显示“输入数据出错”的信息,试编程实现之 .*程序文件6-11.PRG CLEAR INPUT “请输入一个整数” TO XQ DO CASE CASE XQ=0 ? “Sunday” CASE XQ=1 ? “Monday” CASE XQ=2 ?

24、 “Tuesday” 举例CASE XQ=3 ? “Wednesday” CASE XQ=4 ? “Thursday” CASE XQ=5 ? “Friday” CASE XQ=6 ? “Saturday” OTHERWISE ? “输入数据出错”ENDCASERETURN举例执行下列程序后,变量x的值为( )。 x=1 do case case x0 x=x+1 case x=1 x=x+2 otherwise x=4 (A) 1(B) 2(C) 3(D) 4endcase举例 有如下程序: input 请输入一个数: to n1 do case case mod(n1,3)=1 n1=n1

25、+3 case mod(n1,2)=1 n1=n1+2 otherwise n1=n1+1endcase ? n1程序运行,输入4后,显示的值为( )。(A) 9(B) 5(C) 6(D) 7举例执行下列程序后,变量x的值为( )。 x=1 if x=1 do case case x0 x=x+1 case x1 x=x+1 otherwise x=4 endcase else x=3 endif(A) 1(B) 2(C) 3(D) 4程序控制的三种结构程序控制的三种结构顺序结构选择结构循环结构DO WHILEENDDOFORTOENDFORSCANENDSCAN6.5循环结构当程序需要按一定

26、规律重复执行时,可以使用循环语句。如:求S=1+2+3+4+5 过程中S的值S=0 S=0S=S+1 S=1S=S+2 S=S+2=3S=S+3 S=S+3=6S=S+4 S=S+4=10S=S+5 S=S+5=15程序在作几次加法运算?如果求S=1+2+3+100?6.5.1 DO WHILE 循环(也称“当型循环”) 格式 DO WHILE ENDDO功能:执行DO WHILE时,首先判断条件的值,条件为真,执行DO WHILE 与ENDDO之间的语句序列,然后再返回到DO WHILE,再次判断条件,若条件为真,则重复执行上述过程,若条件为假,则直接执行ENDDO的下一条语句。循环的条件循

27、环体循环头循环尾DO WHILE循环流程图 条 件 为真ENDDO的下一个 语句 循环体语句系列1是否DO WHILE循环流程图提示:(1)DO WHILET和ENDDO必须成对出现。(2)循环体内要有改变循环条件的语句,使循环在有限次重复之后会终止,以免造成死循环。举例 例6.13 计算自然数1-100的和。根据算法写出程序如下: *程序文件6-12.PRG S=0 &求总和的变量 N=1 &循环变量初值DO WHILE N=100 &条件 S=S+N &求总和 N=N+1 &循环变量加1ENDDO? S &输出求和的值RETURN程序结束后,N的值为多少?变量赋初值N=100求和YN输出总

28、和循环条件循环体注意事项:1、初值的设置2、循环的条件3、循环变量的改变4、Do while 与ENDDO的配对例6.13 计算自然数1-100的和S=0DO WHILE N=100 N=1 S=S+N N=N+1ENDDO? SRETURN错在哪里?例6.13 计算自然数1-100的和S=0N=1DO WHILE N=100 N=N+1 S=S+NENDDO? SRETURN例6.13 计算自然数1-100的和S=0N=1DO WHILE N=100 S=S+NENDDO? SRETURN又错在哪里?例6.13 计算自然数1-100中偶数的和S=0DO WHILE N=100 N=2 S=S

29、+N N=N+2ENDDO? SRETURN例6.14 从STUDENT表首记录开始依次显示当前记录,等待用户按任一键后,再显示下一个记录。算法用流程图表示如图6-10所示,程序如下。 *程序文件6-13.PRG CLEAR OPEN DATABASE 学生成绩 USE STUDENT DO WHILE .NOT.EOF() DISPLAY WAIT “按任一键显示下一个记录.“ SKIPENDDOCLOSE DATABASERETURN循环的条件打开一个表,指针定位在第1条记录上作用是什么? 循环体中两条特殊语句:EXIT和LOOP(1) 格式 跳出循环语句:EXIT 短路循环语句:LOOP

30、(2) EXIT 与LOOP在循环体中的作用如图6-11所示。 Do while Do while . . exit LOOP Enddo Enddo 提示:EXIT和LOOP都只能用在循环体中。提前结束循环或提前结束本次循环,都是有一定的条件的,所以EXIT和LOOP通常与IF或DO CASE语句联用。例6.15 向GRADE 表追加记录,直到输入的学号为“Q“时结束。 算法用流程图表示如图6-12所示 6_14流程图 开始打开“学生成绩”库中的GRADE输入学号学号为“Q” 关闭库输入课程号,成绩追加一新记录 并代入学号,课程号,成绩*程序文件6-14.PRGCLEAR OPEN DATA

31、BASE 学生成绩 USE GRADEDO WHILE .T. INPUT “输入学号,输入Q时结束追加记录:“TO XH IF UPPER(XH)=Q EXIT ENDIFINPUT“输入课程号:” TO KCHINPUT “输入成绩:” TO CJAPPEND BLANK REPLACE 学号 WITH XH,课程号WITH KCH,成绩WITH CJ ENDDO?“记录追加结束!“CLOSE DATABASERETURN FOR循环格式 FOR=TOSTEP ENDFOR/NEXT 说明:在格式中,包含了循环变量的初值、终值,以及循环变量的变化情况(即步长)功能:首先将初值赋给循环变量,

32、然后将循环变量与终值比较,当循环变量的值不超过终值时,执行循环体,然后将循环变量增加一个步长值,再与终值比较当循环变量的值超过终值,则结束FOR循环,执行EDNFOR(NEXT)的下一个语句。FOR循环流程图计算初值、终值、步长循环变量=初值循环变量终值?循环体语句序列循环变量增加一个步长FTENDFOR的下一个语句例:求1+2+3+100S=0N=1DO WHILE N=100 S=S+N N=N+1ENDDO? SRETURNS=0For n=1 to 100 S=S+NEndfor?”s=”,s return请比较两个程序Do while 循环FOR循环例子CLEARFOR I=1 TO

33、 50 IF MOD(I,7)=0 ?I ENDIFENDFORRETURNCLEARI=1DO WHILE I=50 IF MOD(I,7)=0 ?I ENDIF I=I+1ENDDORETURNDOWHILE运行结果7142128354249例6.16 求150间能被7整除的数运行结束后,I的值是多少,是否有更好的方法。例题:从STUDENT表首记录开始依次显示当前记录,等待用户按任意键后,再显示下一条记录。CLEAROPEN DATABASE 学生成绩USE STUDENTDO WHILE .NOT. EOF() DISPLAY WAIT”按任意键显示下一条记录” SKIPENDDOCL

34、OSE DATABASERETURNDOWHILECLEAROPEN DATABASE 学生成绩USE STUDENTFOR I=1 TO RECCOUNT() DISPLAY WAIT”按任意键显示下一条记录” SKIPENDDOCLOSE DATABASERETURN6.5.3 SCAN循环“指针”型循环,专门用于控制对数据表中的记录进行逐条操作。格式:SCAN FOR|WHILEENDSCANSCAN循环功能提示:1、SCAN 与ENDSCAN必须成对出现2、EXIT和LOOP可出现在SCAN循环体内。功能:针对当前表中指定范围内满足条件的每条记录,逐条执行SCAN与ENDSCAN之间的

35、语句序列。SCAN例子例题:从STUDENT表首记录开始依次显示当前记录,等待用户按任意键后,再显示下一条记录。CLEAROPEN DATABASE 学生成绩USE STUDENTSCAN DISPLAY WAIT”按任意键显示下一条记录”ENDSCANCLOSE DATABASERETURNSCAN例子例题:将STUDENT表中全体男生的学号、姓名、出生日期、专业、奖学金五项内容显示出来。CLEAR?”男生一览表“?”-“?”学号 姓名 出生日期 专业 奖学金“?”-“OPEN DATABASE 学生成绩USE STUDENTSCAN FOR 性别=.T. ?” ”+学号+“ ”+姓名+DT

36、OC(出生日期)+专业+STR(奖学金,7,2)ENDSCAN?”-“RETURN用DO WHILE实现CLEAR?”男生一览表“?”-“?”学号 姓名 出生日期 专业 奖学金“?”-“OPEN DATABASE 学生成绩USE STUDENTDO WHILE .NOT. EOF() IF 性别=.T. ?” ”+学号+“ ”+姓名+DTOC(出生日期)+专业+STR(奖学金,7,2) ENDIF SKIPENDDO?”-“RETURN6.5.4 循环的嵌套各种循环可以嵌套,循环也可以与选择嵌套。嵌套例子例题:编制一个“九九乘法表”,输出格式如下:1*1=11*2=22*2=41*3=32*3

37、=63*3=9CLEARFOR J=1 TO 9?FOR I=1 TO J?STR(I,1)+”*”+STR(J,1)+”=”+STR(I*J,2)+” ”ENDFORENDFORRETURN6.6过程 n把需要重复执行的语句序列及其参数定义成过程或自定义函数,需要执行时只需调用它即可。如:完成两个数的加法、减法、乘法和除法运算主程序:1、输入两个数2、调用加法运算的程序3、调用减法运算的程序4、调用乘法运算的程序5、调用除法运算的程序6.6.1过程的定义有了过程和自定义函数,把大的问题分解成若干个模块,再通过调用棋块实现整个程序的功能。过程的定义的形式:一是单独用一个程序文件定义,这种过程称

38、为“外部过程”或“独立文件过程”;二是过程定义在调用程序所在文件或过程文件中,这种过程称为“内部过程” . 外部过程的定义 () 格式PARAMETERSRETURNTO MASTER功能:用一个程序文件单独定义一个过程,该程序文件名就作为过程名。Return 与return master 的区别省略时为无参过程2、内部过程的定义PROCEDURE PARAMETERS RETURNTO MASTERENDPROC功能:将一个语句系统定义为以为名的过程 。内部过程放在调用程序所在的程序中,必须放在调用程序之后。3、过程文件的定义 也是.PRG文件,由若干个过程组合而成。定义格式如下:PROCE

39、DURE PAREMETERS RETURN ENDPROCPROCEDUREPAREMETERSRETURNENDPROCPROCEDURE PAREMETERS RETURN ENDPROC6.6.2过程的调用 格式:DO WITH过程调用关系参见P148 图6-15调用过程文件中的过程操作步骤:在调用程序中打开过程文件调用过程关闭过程文件。(1)打开指定的过程文件格式:SET PROCEDURE TO(2)调用已经打开的过程文件中的过程格式:DOWITH(3)关闭当前打开的过程文件格式:SET PROCEDURE TO 或CLOSE PROCEDURE例子分别用外部过程、内部过程和过程文

40、件完成:两个数的加法、减法、乘法和除法运算* 四则运算的主程序clearinput 请输入X的值 to xinput 请输入Y的值 to ydo add1 with x,y &x,y为实参Do sub with x,y*其中add.prg,sub为独立的过程文件外部过程方法:*加法运算add1.prgpara x,y s=x+y ?sreturn*减法运算sub.prgpara x,y Z=x-y ?Zreturn内部过程方法:* 四则运算的主程序cleardo add1 Do subProcedure add1input 请输入X的值 to xinput 请输入Y的值 to ys=x+y ?

41、sreturnProcedure subinput 请输入X的值 to xinput 请输入Y的值 to ys=x-y ?sreturn例子过程文件方法:* 四则运算的主程序Set procedure to 加减运算cleardo add1Do sub*过程文件“加减运算.prg”Procedure add1input 请输入X的值 to xinput 请输入Y的值 to ys=x+y ?sReturnEndprocProcedure subinput 请输入X的值 to xinput 请输入Y的值 to ys=x+y ?sReturnEndproc6.7参数传递与变量作用域 6.7.1 参数

42、的传递 参数传递与接收格式传递参数语句格式:DO WITH接收参数语句格式:PARAMETERS 参数传递与接收规则()DO 语句可以用在调用程序中的任何位置,而PARAMETERS语句必须放在过程的第一个可执行语句之前。 ) 要求实参和形参一一对应,以便调用过程时系统自动将实参传递给对应的形参,具体要求是: 形参的数目不能少于实参的数目,如果形参的数目多于实参的数目,则多于的形参取逻辑假。 实参的排列顺序必须和形参的排列顺序一致。实参和形参的类型可以是字符型,数值型,逻辑型,日期型等,但相对应的实参和形参必须类型匹配。 (3)形参形式上同内存变量,而实参可以是常量、内存变量或表达式。 当实参

43、是常量或表达式时,实参向对应形参传递的是常量本身或表达式的值,形参接收实参之后,即与实参没关系,形参值的改变不会影响到对应实参。这种参数传递方式称作“按值传递”,它是调用程序向过程的单向数据传递。 当实参是内存变量时,实参向对应形参传递的是内存变量的地址,即形参接收的是实参所在的内存单元连同单元中的值(若有值的话),因此形参值的改变也就是对应实参值的改变,这种传递方式称做“按地址传递”,它是调用程序与过程之间的双向数据传递,即把实参的值(若有值的话),有形参传递的过程,又把改变了的形参值由实参带回调用程序 运行下列程序,输入运行下列程序,输入1010和和1515,则显示结果为(,则显示结果为(

44、 )。)。 input to n1input to n1 input to n2 input to n2 do proc1 with n1,n2 do proc1 with n1,n2 ?n1,n2 ?n1,n2 return return procedure proc1 procedure proc1 Para x,y Para x,y if xy if xy x=y x=y else else y=x y=x endif endif endproc endproc(A) 10 15(A) 10 15(B) 10 10 (C) 15 15 (D) 15 10(B) 10 10 (C) 15

45、15 (D) 15 10n1=10n2=15y=10n1-xn2-yX的改变引起n1的改变例6.27 比较下列两个主程序M6-27-1.PRG和M6-27-2.PRG的执行结果。 *外部过程S6-27.PRG PARAMETERS x ? x G=”Good afternoon.” RETURN *主程序文件M6-27-1.PRG *主程序文件M6-27-2.PRG CLEAR CLEAR GG=” Good morning.” GG=” Good morning.”DO S6-27 WITH GG DO S6-27 WITH (GG)? GG ? GG RETURN RETURN6.7.2 变量作用域及其定义变量作用域的含义内存变量的有效作用范围称为内存变量的作用域。根据作用域的不同,内存变量可分为全局变量、私有变量和局部变量三种类型,列表比较如表6-4所示。全局(PUBLIC)变量

温馨提示

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

评论

0/150

提交评论