字词 | Ⅲ程序设计 |
类别 | 中英文字词句释义及详细解析 |
释义 | Ⅲ程序设计 1.dBASE Ⅲ程序特点 dBASE Ⅲ程序具有结构化程序的基本结构,即顺序执行结构、条件分支结构和循环结构。它没有语句标号,没有无条件转移语句,程序组织模块化。由一个主模块和若干子模块构成。图5.2.3-1是dBASE Ⅲ程序结构图。 图5.2.3-1 dBASE Ⅲ程序结构图 这是一个自顶向下逐步扩大的程序设计方法。由主模块控制下层的处理模块,再由处理模块控制下一层的子模块,逐层控制,将任务逐步细分,从而达到模块化要求。 此外,dBASE Ⅲ提供了功能强大的语句命令,为用户构造了良好的语言系统,并且,dBASE Ⅲ提供了多条具有交互式功能的命令,可使用户随时通过键盘和屏幕参予和控制程序的执行。 2.dBASE Ⅲ程序的建立和运行 (1)dBASE Ⅲ程序的建立 前面介绍过,数据库文件是扩展名为.DBF的文件,命令文件是扩展名为.PRG的文件。为能编辑dBASE Ⅲ程序,可采用以下两种办法。 ①用MS-DOS的EDLIN或WPS字处理软件的N方式编写.PRG文件; ②进入dBASE Ⅲ后,在“·”下键入命令; .MODIFY COMMAND〈文件名〉 文件名部分可指定驱动器号,路径及扩展名,否则采用默认值(当前驱动器下,带.PRG的文件)。 键入该命令后,若为新文件名,则清屏,在全屏幕编辑方式下,可以输入程序了。若该文件已存在磁盘中,则屏幕显示该文件的内容,用户可以编辑、修改该文件。 (2)dBASE Ⅲ程序的执行 dBASE Ⅲ程序的执行,有以下几种方式。 ①解释执行方式的dBASE Ⅲ程序 解释执行方式即在执行dBASE Ⅲ程序时,系统对语句一条一条解释判断执行。这种执行方式又分为两种执行方法: a.在dBASE Ⅲ内部执行命令文件 在“·”提示符下,键入: DO〈文件名〉 待命令执行完毕,又返回状态“·”提示符下。 在执行DO命令时,系统规定打开的文件含库文件、索引文件、格式文件,程序文件的总数不能超过15个,因而要用CLOSE关闭无用文件。 b.在操作系统下运行程序文件 在操作系统下执行dBASE Ⅲ程序,须在提示符“C>”下,键入: C>dBASE〈文件名〉 文件名是扩展名为.PRG的程序文件 从命令可看出,该命令首先将dBASE Ⅲ系统调入内存,然后将程序文件调入内存,解释并执行它,执行完后,系统将返回到“·”状态下。 ②编译执行方式的dBASE Ⅲ程序 解释执行方式是边翻译边执行,因而速度较低,而用编译执行方式,将已编译和连接好的dBASE Ⅲ可执行文件(.EXE),在操作系统提示符下,直接键入文件名即可。 C>文件名↙ 待执行完毕,仍然处于操作系统“C>”提示符状态。 (3)中止程序执行语句及注释语句 dBASE Ⅲ提供了CANCEL命令,用于当有关条件满足后,终止程序,返回到“·”状态,同时关闭所有已打开的文件。其语句格式为: CANCEL 用户也可以在CANCEL语句后,加上程序注释,以便了解程序设计者意图及特殊用法的标注。其格式如下: NOTE〈注释字符〉 *〈注释字符〉 其中,注释字符最多可达254个,当一行写不下时,用“;”作分行符,以便继续书写注释。 3.分支程序设计 在本节的开始已经讲过,dBASE Ⅲ程序具有结构化程序的三种基本逻辑结构,即顺序执行结构、条件分支结构和循环结构。顺序执行结构是简单的按顺序逐条执行程序的过程,没有条件判断、逻辑转移,循环处理等问题,因而不能满足用户处理较复杂事务的需求,因而dBASEⅢ除引用了顺序结构外,还采用了分支结构和循环结构。 (1)分支程序框图 由于问题较复杂,因而在解决问题前首先要以流程图的形式,将解析问题详细描述出来。图5.2.3-2表示求两个非负整数公约数的分支判断流程图。其中逻辑判断用菱形框表示。 图5.2.3-2 两非负整数公约数分支判断流程 (2)分支程序语句 ①简单判断语句 简单判断语句用下述命令实现: IF〈条件表达式〉 〈语句行序列〉 ENDIF 它表示在〈条件表达式〉为真时,执行下面的〈语句行序列〉;否则执行ENDIF后的语句。 其中,条件表达式可以是多个表达式的组合,多个表达式由比较运算符联结起来,比较运算符可以是下面的操作符: <、>、=、〈〉或#(不等于)、<=、>=、.AND.、·OR·和.NOT. 例如可以用如下的语句来咨询40岁以上男职工的健康状况。 IF年龄>40.AND.性别=“MAN” 执行显示健康状况语句 ENDIF 这里“显示语句”为语句行序列,它是对符合条件者所要进行的处理命令的集合。 值得注意的是,IF与ENDIF必须成对使用,否则,系统会标识有错。 ②选择判断语句 选择判断语句格式为: IF〈条件表达式〉 〈语句行序列1〉 ELSE 〈语句行序列2〉 ENDIF 与简单判断语句不同,选择判断语句首先判断条件真与假,若为真,则执行语句行序列1;否则,执行语句行序列2,无论条件真假,都必须接着执行ENDIF后面的语句。 例如: IF y1>y2 y1=y1-y2 ELSE y2=y2-y1 ENDIF ③用IF语句嵌套实现多分支 有时,由于情况复杂,一个条件不能满足使用者的需要,这时就要在条件语句中再嵌套进条件语句。dBASE Ⅲ提供了两种用于多分支判断语句,其一是IF…ELSE…ENDIF;其二是DOCASE语句。 IF〈条件表达式1〉 IF〈条件表达式2〉 〈语句行序列1〉 ELSE 〈语句行序列2〉 ENDIF ELSE IF〈条件表达式3〉 〈语句行序列3〉 ELSE 〈语句行序列4〉 ENDIF ENDIF 这种结构要求用户每层的IF…ELSE…ENDIF要一一对应,不能交叉嵌套,以免程序设计混乱。在使用时ENDIF后可加注标记,它不影响程序运行。 ④用DOCASE语句实现多分支 这是dBASE Ⅲ提供的另一种有效的多分支判断语句。当分支数目较多时,用IF…ELSE…ENDIF就变得复杂而且易错,不直观,这时用DOCASE既直观明了,又具有较强的功能。其命令格式为: DOCASE CASE〈条件1〉 〈语句行序列1〉 CASE〈条件2〉 〈语句行序列2〉 CASE〈条件n〉 〈语句行序列n〉 [OTHERWISE] [〈语句行序列〉] ENDCASE 程序依次判断DOCASE和ENDCASE间的每个条件,直到判断条件为真,执行其CASE与下一个CASE间的语句行序列,之后执行ENDCASE后面的语句。若没有一个条件符合又没可选项OTHERWISE的情况下,执行ENDCASE后面的语句;若有可选项OTHERWISE,则执行OTHERWISE后面的语句行序列。 4.循环程序设计 上面我们讲的程序,一次只能处理一遍语句,为了能周期性地重复某一段程序,dBASE Ⅲ又引用了DOWHILE…ENDDO命令进行程序循环的处理,用户可根据自己的意愿去控制程序的循环。 (1)自动循环语句及其执行过程 自动循环语句的格式为: DOWHILE〈条件〉 〈语句行序列〉 [LOOP] 〈语句行序列〉 [EXIT] ENDDO 执行DO WHILE语句时,若条件为真,则执行DO WHILE到ENDDO之间的语句(循环体),当执行到ENDDO时,又返回到DO WHILE语句,重新判断条件是否成立,若成立,继续执行循环体,否则,执行ENDDO后面的语句。 其中EXIT是可选用语句,它的功能是强迫退出循环,转到执行ENDDO后面的语句。通常它用于遇到某一特殊场合需退出循环的情况,因此,EXIT一定处于IF…ENDIF或DO CASE…ENDCASE判断语句内部。 此外,LOOP也是可选用语句,它的功能是迫使程序不执行LOOP后面的语句而回到循环开始的DO WHILE位置。事实上,它是另一种循环终止语句,它用于阻止某些剩余循环处理的情况,因此,LOOP循环也必定包含在IF…ENDIF或DO CASE…ENDCASE语句内部。 (2)多重循环 所谓多重循环是指在一个循环中嵌套另一个循环,其一般结构如图5.2.3-3所示; 图5.2.3-3 多重循环的一般结构 多重循环的嵌套层数没有限制,但不允许出现交叉循环体,如图5.2.3-4(1)为合法的,5.2.3-4(2)为非法的。 图5.2.3-4 嵌套结构 5.过程及调用 在程序的设计中,常常会遇到反复出现的某些数据运算、数据处理,这些运算或处理的方法、算法大体一样,为了简化程序的设计,常常将一些经常使用的程序设计成独立的程序段作为子程序,存入内存,使用时调用即可。 (1)过程及其调用 如上所述,我们可以编制相对独立用于专门处理某种运算的程序,这个公用程序即为过程。过程的编制、建立、存储以及扩展名(.PRG)均与主程序一样,只是过程的最后一条语句必须是RETURN。 过程的调用随基类型不同分两种。外部过程调用及过程文件中的过程调用。 ①外部过程调用 外部过程是用DO命令调用的,以磁盘文件形式单独存储的过程。其调用方法为: DO〈程序文件名〉[WITH〈参数表〉] 该命令由主程序调用。执行时,将〈程序文件名〉(即过程名)指定的程序调到内存并执行过程中的语句,直至遇到RETURN,返回主程序DO的下一条语句继续执行。 命令中的〈参数表〉要与过程中PARAMETERS定义的参数匹配。 过程中的RETURN,可以采用下面格式: RETURN[TO MASTER] 当无[TO MASTER]项时,表示过程返回调用它的原位置,有[TO MASTER]项时,表示在过程调用嵌套中,从较深嵌套过程中直接返回到主程序,用法为在深层过程的末尾语句上使用RETURN TO MASTER。 ②过程文件中过程的调用 过程文件中的过程是以扩展名为.PRG的文件格式存在磁盘上的,由一个或多个过程组成的过程文件。这些过程的格式为: PROCEDURE〈过程名〉 〈语句行序列〉 RETUEN 一个过程文件最多可容纳32个过程。在调用时先打开过程文件。其格式为 SETPROCEDURE TO〈过程文件名〉 调用时,仍用DO语句调用,但此时调用的为过程文件中的过程名,而非磁盘文件名。 由于任一时刻只能打开一个过程文件,打开一个新过程文件后,旧的过程文件被系统自动关闭。用户也可以用CLOSE PROCEDURE命令关闭过程文件。 图5.2.3-5(1)(2)分别描述了外部过程调用和过程文件中过程调用的方法。 图5.2.3-5 两种过程调用示意图 (2)过程调用中的参数传递 在过程调用中,我们已涉及到参数表的问题,这是主程序和过程之间进行数据交换的关键。为此dBASE Ⅲ提供了两种办法来解决这一问题。 ①利用变量传递参数 本书已对全局变量及局部变量的概念作过介绍,下面我们再作进一步讨论。 全局变量是将某个变量用PUBLIC命令说明,该变量可以在任何嵌套级的程序中使用,而且这种存储变量不会被清除。除非使用RELEASE语句(已介绍过其用法)。 其它未被说明为全局变量的变量均为局部变量,它只在说明它的模块中使用,一旦程序模块返回,该变量将被自动清除。在dBASEⅢ中只能将上层模块数据传给下层模块,反之则不行。如果某个模块的变量与调用它的上层模块的全局变量重名,这时要用PRIVATE语句定义其为局部变量,以避免同上层模块的全局变量混淆,并且在结束调用该模块时,保持调用前上层模块的全局变量值。 ②用PARAMETERS语句传递参数 模块间另一种传递变量的方法是使用PARAMETERS命令。该命令的使用格式是: DO〈过程文件名〉[WITII〈参数清单〉] PARAMETERS〈参数清单〉 这两条语句必须同时使用,前者放在主程序中使用,后者放在过程中使用。 例如在主程序中有: SETPROCEDURETO SUBPROC INPUT“输入考试分数:”TO T1 INPUT“输入实验分数:”TO T2 TOTAL=0 DO CHENGJI WITH T1,T2,TOTAL ?“总分为:”,TOTAL CLOSE PROCEDURE 过程中文件有 PROCEDURE CHENGJI PARAMETERS A,B,C C=0.8*A+0.2*B RETURN 这时参数T1,T2,TOTAL的值通过DO…WHTH语句传递给A,B,C,通过调用过程进行运算,将C的值又返回给主程序中的TOTAL。 整个过程可以这样描述:当DO中被传递的是一个常数,如上例的T1、T2,则被PARAMETERS的相应位置的变量接受;若DO传递的参数为表达式,则先求表达式的值,然后赋给PARAMETERS中的相应变量,若DO传递的是一个存储变量,如TOTAL,则系统先将DO中的值赋给PARAMETERS中的变量,然后将DO语句变量隐匿起来。在执行过程时,PARAMETERS中变量的变化会使相应的隐匿的存储变量的变化。过程结束后,系统恢复隐匿的存储变量将它们返回主程序,同时清除PARAMETERS中的所有存储变量。 |
随便看 |
|
文网收录3541549条中英文词条,其功能与新华字典、现代汉语词典、牛津高阶英汉词典等各类中英文词典类似,基本涵盖了全部常用中英文字词句的读音、释义及用法,是语言学习和写作的有利工具。