资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 程序与程序文件一、一、程序的概念程序的概念交互方式:在命令窗口逐条输入命令或通过选择菜交互方式:在命令窗口逐条输入命令或通过选择菜单选项来调用功能。适合于解决简单问题。单选项来调用功能。适合于解决简单问题。程序:能够完成一定任务的命令的有序集合。程序:能够完成一定任务的命令的有序集合。程序方式:根据任务的要求确定能完成任务的命令程序方式:根据任务的要求确定能完成任务的命令序列,然后编写程序,在磁盘上建立程序文件,让序列,然后编写程序,在磁盘上建立程序文件,让系统自动执行程序代码。其特点是:系统自动执行程序代码。其特点是:(1)可以利用编辑器方便的输入、修改和保存程序可以利用编辑器方便的输入、修改和保存程序(2)一旦建立,可被多次运行一旦建立,可被多次运行(3)程序中可使用命令窗口中无法使用的命令和语句程序中可使用命令窗口中无法使用的命令和语句二、程序文件的建立与执行二、程序文件的建立与执行1、程序文件的建立与修改、程序文件的建立与修改(1)菜单法)菜单法(2)命令)命令 modify command 2、执行程序、执行程序(1)菜单法菜单法 (2)命令命令 do 当当程程序序文文件件被被执执行行,文文件件中中所所包包含含的的命命令令将将被被依依次次执执行行,直直到所有的命令执行结束或是遇到以下命令:到所有的命令执行结束或是遇到以下命令:Cancel:Cancel:终止程序运行,清除所有内存变量。终止程序运行,清除所有内存变量。Do:Do:转向执行其他程序转向执行其他程序Return:Return:结束当前程序,返回调用它的程序结束当前程序,返回调用它的程序QuitQuit:退出:退出VFVF,返回操作系统。,返回操作系统。三、简单的输入三、简单的输入/输出命令输出命令1. Input 1. Input 命令命令格式:格式:InputInput to to 功功能能:暂停停程程序序执行行,等等待待用用户输入入一一个个表表达达式式。接接收收后后,系系统首首先先计算算表表达达式式的的值,然然后后将将表表达达式式的的值存存入入指指定定的的内内存存变量量中中。如如果果内内存存变量量事事先先没没有有建建立立,InputInput命命令令自自动建建立立,表表达达式式值的的类型型决决定定内内存存变量量的的类型型,即即内内存存变量的量的类型于表达式型于表达式值的的类型相同。型相同。2.Accept 2.Accept 命令命令格格式式:Accept Accept to to 功功能能:暂停停程程序序执行行,等等待待用用户从从键盘输入入的的一一个个字字符符串串并并将将其其存存入入指指定定的的内内存存变量量中中。内内存存变量量事事先先没没有有建建立立,AcceptAccept命命令令自自动建建立立,且且此此变量量是是字字符符型。型。 3. Wait3. Wait命令命令格格式式:WaitWaitto to WindowAtWindowAt,NOWAITCLEAR|NOCLEARTimeOutNOWAITCLEAR|NOCLEARTimeOut功功能能:暂停停程程序序的的运运行行,等等待待用用户从从键盘输入入一一个个字字符符,输入入字字符符后后程程序序继续运运行。行。2.5程序的基本结构程序的基本结构有顺序,选择(分支)和循环三种。程序的基本结构有顺序,选择(分支)和循环三种。一、选择结构一、选择结构1.简单形式的条件语句简单形式的条件语句If If EndIfEndIf例例:从从键键盘盘接接收收两两个个数数x x和和y y,然然后后判判断断x x能能否否被被3 3整整除除。如果如果x x能被能被3 3整除则整除则y y的值增加,否则的值增加,否则y y的值不变的值不变2.一般形式的条件语句一般形式的条件语句If If 1 Else Else 2 EndIf EndIf例:输入考试成绩,显示相应的成绩登记例:输入考试成绩,显示相应的成绩登记成成绩绩6060为为不不合合格格,60=,60=成成绩绩90=90=90为优秀。为优秀。3.多分支语句多分支语句Do Case Case Case Case : : Case OtherWise EndCase例:编写程序,输入成绩,输出等级。例:编写程序,输入成绩,输出等级。100=成绩成绩=90 为优秀,为优秀, 89=成绩成绩=80 为良好,为良好, 79=成绩成绩=70为一般,为一般, 69=成绩成绩=60为及格,成绩为及格,成绩60为不合格。为不合格。 二、循环结构二、循环结构1、DO WHILE- ENDDODO WHILE LOOP EXITENDDO1) 1) 执行到执行到Do while Do while 时,计算时,计算 的值;的值;(2) (2) 若若条条件件表表达达式式的的值值为为假假,则则结结束束Do Do whilewhile语语句句,即即跳跳过过Do whileDo while与与EndDoEndDo之间的命令,执行之间的命令,执行EndDoEndDo后面的命令;后面的命令;(3) (3) 若若条条件件表表达达式式的的值值为为真真,则则执执行行Do Do whilewhile后后面面的的命命令令,其执行的情况依下述条件而定:其执行的情况依下述条件而定:若若遇遇到到EndDoEndDo短短语语,控控制制返返回回到到Do Do whilewhile,继继续续执执行行下下一一次次循环;循环;若若遇遇到到LoopLoop短短语语,控控制制返返回回到到Do Do whilewhile,继继续续执执行行下下一一次次循循环;环;若若遇遇到到ExitExit短短语语,结结束束Do Do whilewhile循循环环,程程序序从从Do Do while while EndDoEndDo循环中跳出,转到循环中跳出,转到EndDoEndDo后面的命令继续执行。后面的命令继续执行。例例1:计算:计算S=1+2+3+100例例2:编写程序,判断一个大于等于:编写程序,判断一个大于等于3的自然数是的自然数是否为素数。否为素数。2.FOR ENDFOR语句语句ForFor循环语句称为循环语句称为“计数计数”型循环控制语句,即型循环控制语句,即根据循环变量的初值、终值和步长决循环体内根据循环变量的初值、终值和步长决循环体内语句的执行次数。语句的执行次数。For For = To To Step Step Loop Loop Exit ExitEndFor/NextEndFor/NextFor EndForFor EndFor语句的执行过程如下:语句的执行过程如下:(1) For EndFor (1) For EndFor 循环适应于循环次数已知的情况;循环适应于循环次数已知的情况;(2)(2)执执行行该该命命令令时时,循循环环控控制制变变量量每每次次判判断断其其值值是是否否达达到到 。如如果果没没有有达达到到则则重重复复执执行行 。初初值值是是指指最最初初赋赋给给循循环环控控制制变变量量的的值值;终终值值是是循循环环控控制制变变量量所所要要到到达达的的值值;步步长长是是指指循循环环控控制制变变量量每每次次的的增增量量,步长不能为步长不能为0 0,缺省时系统默认步长为,缺省时系统默认步长为1 1。 (3 3)EndFor EndFor 和和NextNext的的作作用用相相同同,For For 和和EndFor EndFor /Next/Next必须称对出现。必须称对出现。 (4 4)LoopLoop和和ExitExit的的作作用用与与Do Do While While EndDoEndDo循循环环中的一样。中的一样。例1:找出100900之间的所有水仙花数。例2:从键盘输入十个数,然后找出其中最大值和最小值。3. ScanScan循环语句循环语句 ScanScan循循环环语语句句称称为为“指指针针”型型循循环环控控制制语语句句,即即根根据据表表中中的的当当前前记记录录指针决定循环体内语句的执行次数。指针决定循环体内语句的执行次数。Scan End ScanScan End Scan命令格式:命令格式:Scan Scan For For Loop Loop Exit ExitEnd ScanEnd ScanScan End ScanScan End Scan语句的执行过程如下:语句的执行过程如下:(1)(1)在在命命令令的的功功能能是是在在指指定定的的范范围围内内查查找找符符合合指指定定条条件件的的记记录录,子子句句“范范围围”缺省为缺省为AllAll。(2)(2)当当循循环环执执行行时时,ScanScan语语句句会会将将指指针针指指向向第第一一个个满满足足条条件件的的记记录录,执执行行一一次次循循环环体体,再再将将指指针针移移到到下下一一条条满满足足条条件件的的记记录录,直直到到对对数数据据库库中中的的每每一条记录都检查完毕。一条记录都检查完毕。(3) Scan (3) Scan 与与EndScanEndScan必须成对出现。必须成对出现。例:例: 逐条显示逐条显示“教学教学”数据库中数据库中“学生学生”数据表中,性别为数据表中,性别为“男男”的记录。的记录。Set Talk OffSet Talk OffClearClearOpen Database Open Database 教学教学Use Use 学生学生Scan For Scan For 性别性别=”=”男男” Display DisplayEndScanEndScanUseUseSet Talk OnSet Talk OnReturnReturn2.6 多模块程序设计一、模块的定义和调用1、模块及其定义Procedure|function Procedure|function & &过程头过程头 & &功能功能return return 表达式表达式 & &过程返回过程返回endproc|endfunc &endproc|endfunc &过程尾过程尾过过程程可可以以单单独独保保存存在在过过程程文文件件这这样样单单独独的的文文件件里里,也可以放在命令文件正常代码的后面。也可以放在命令文件正常代码的后面。2、模块的调用、模块的调用格式格式1:DO |格式格式2:|()如果过程在单独的文件里就用文件名,否则用过如果过程在单独的文件里就用文件名,否则用过程名。程名。3.3.过过程程可可以以放放在在程程序序代代码码的的后后面面,也也可可以以保保存存在在称称为为过过程程文文件件的的单单独独文文件件里里。过过程程文文件件里里只只包包含含过过程程,这这些些过过程程能能被被其其他他程程序序调调用用,但但在在调调用用过过程程之之前前首首先先要要先先打打开开过过程程文文件件。打打开开过过程程文件的命令是:文件的命令是: set set procedure procedure to to 1,过过程程文文件件2additive2additive set procedure to set procedure to 关闭所有打开的过程文件关闭所有打开的过程文件 release release procedure procedure ,2例:例: & & 主程序:主程序: f1.prg f1.prg ?”主程序开始主程序开始” set procedure to f3 set procedure to f3 f2() f2() do p1 do p1?”?”主程序结束主程序结束”Procedure p1Procedure p1?”?”过程过程p1p1开始开始”?”?”调用调用p3()”p3()”?“返回值:返回值:”,p3()”,p3()?”?”过程过程p1p1结束结束”EndprocEndproc&子程序:子程序:f2.prgf2.prg?”?”子程序子程序f2f2开始开始”?”?”调用调用p2()”p2()”X=p(2)X=p(2)?”返回值:返回值:”,x”,x?”?”子程序子程序f2f2结束结束”ReturnReturn&过程文件过程文件 f3.prg f3.prgProcedure p2Procedure p2ReturnReturnProcedure p3Procedure p3Return 100Return 100二、参数传递二、参数传递模模块块程程序序可可以以接接收收调调用用程程序序传传递递出出来来的的参参数数,并并能能够够根根据据接接收收到到的的参参数数控控制制程程序序流流程程或或对对接接收收到到的的参参数数进进行行处处理理。若若形参个数多于实参个数则,剩下的按逻辑假形参个数多于实参个数则,剩下的按逻辑假.F.F.处理。处理。接收参数的命令有:接收参数的命令有:Parameters Parameters 1, 2 声明的变量被看作是模块程序中的私有变量声明的变量被看作是模块程序中的私有变量Lparameters Lparameters 1, 2 声明的变量被看作是模块程序中的局部变量声明的变量被看作是模块程序中的局部变量调用模块的格式:调用模块的格式:1.Do 1.Do | with with 1, 2如如果果实实参参是是常常量量或或表表达达式式,自自动动为为值值传传。如如果果是是变变量量则则是是地地址传,即形参和实参实际是同一个变量,只是名字不一样。址传,即形参和实参实际是同一个变量,只是名字不一样。2.2.|(1, )2) 默认情况下为值传递,也可使用命令来改变传递方式。默认情况下为值传递,也可使用命令来改变传递方式。Set udfparams to value|referenceSet udfparams to value|reference例:例:ClearClearStore 100 to x1,x2Store 100 to x1,x2Set udfparams to valueSet udfparams to valueDo p4 with x1,(x2)Do p4 with x1,(x2)?”?”第一次:第一次:”,x1,x2”,x1,x2Store 100 to x1,x2Store 100 to x1,x2P4(x1,(x2)P4(x1,(x2)?”?”第二次调用第二次调用”,x1,x2”,x1,x2Set udfparams to referenceSet udfparams to referenceDo p4 with x1,(x2)Do p4 with x1,(x2)?”?”第三次调用第三次调用”,x1,x2”,x1,x2Sore 100 to x1,x2Sore 100 to x1,x2P4(x1,(x2)P4(x1,(x2)?”?”第四次调用第四次调用”,x1,x2”,x1,x2Procedure p4Procedure p4Parameters x1,x2Parameters x1,x2 store x1+1 to x1 store x1+1 to x1 store x2+1 to x2 store x2+1 to x2End procEnd proc还可以在调用程序和被调用程序之间传还可以在调用程序和被调用程序之间传递数组。当实参是数组元素时,总是采用递数组。当实参是数组元素时,总是采用按值传递的方式传送元素的值。当实参为按值传递的方式传送元素的值。当实参为数组名时,若是传递方式为按值传递,则数组名时,若是传递方式为按值传递,则传送的是第一个元素的值给虚参;若是传传送的是第一个元素的值给虚参;若是传递方式为引用传递,那么传递的是整个数递方式为引用传递,那么传递的是整个数组。组。例:传递整个数组例:传递整个数组dimension s(10)for i=1 to 10 s(i)=iendfordo p5 with s?s(1),s(2),s(3),s(4),s(5),s(6),s(7),s(8),s(9),s(10)returnprocedure p5parameters xfor i=1 to 5 t=x(i)x(i)=x(11-i) x(11-i)=tendforreturn三、变量的作用域三、变量的作用域1.1.公共变量公共变量 PUBLIC PUBLIC 公公共共变变量量一一旦旦建建立立就就一一直直有有效效,即即使使程程序序运运行行结结束束返返回回命命令令窗窗口口也也不不会会消消失失。只只有有 当当执执行行clear clear memory,release memory,release ,quit,quit命令后,公共变量才被释放命令后,公共变量才被释放. .2.2.私有变量私有变量在在程程序序中中直直接接使使用用(没没有有事事先先声声明明)而而由由系系统统自自动动隐隐含含建建立立的的变变量量都都是是私私有有变变量量。作作用用域域是是建建立立它它的的模模块块及及其其下下属属的的各各模模块块。一一但但建建立立它它的的模模块块程程序序运运行行结结束束,这这些些私私有有变变量量将自动清除。将自动清除。3.3.局部变量局部变量 Local Local 局局部部变变量量只只能能在在建建立立它它的的模模块块中中使使用用,不不能能在在上上层层或或下下层层模模块块中中使使用用 。当当建建立立它它的的模模块块程程序序运运行行结结束束时时,局局部部变变量量自动释放。自动释放。例:全局变量、私有变量、局部变量作用域示例例:全局变量、私有变量、局部变量作用域示例Public x1Local x2Store F to x3Do p6?主程序中主程序中?x1=,x1?x2=,x2?x3=,x3ReturnProcedure p6?子程序中子程序中?x1=,x1?x3=,x3return子程序中用到的变量,实际上在主程序中已经子程序中用到的变量,实际上在主程序中已经建立,子程序的运行会改变主程序中变量的取值。建立,子程序的运行会改变主程序中变量的取值。为了解决这个问题,可以在子程序中使用为了解决这个问题,可以在子程序中使用private命令,隐藏主程序中可能存在的变量,使得这些命令,隐藏主程序中可能存在的变量,使得这些变量在子程序中暂时无效。变量在子程序中暂时无效。Private Private all like |except 注意:该命令并不是建立内存变量,而是隐藏注意:该命令并不是建立内存变量,而是隐藏上层模块中可能已经存在的变量,使其在下属模上层模块中可能已经存在的变量,使其在下属模块中暂时无效块中暂时无效例:变量的隐藏示例例:变量的隐藏示例Val1=10Val2=15Do p7?val1,val2Procedure p7Private val1Val1=50Val2=100?val1,val2returnLocal 命令在建立局部变量的同时,也命令在建立局部变量的同时,也具有隐藏在上层模块中建立的同名变量的具有隐藏在上层模块中建立的同名变量的值的作用。但与值的作用。但与private命令不同,命令不同,local命命令只在它所在的模块内隐藏这些同名变量,令只在它所在的模块内隐藏这些同名变量,一旦到了下层模块,这些同名变量就会重一旦到了下层模块,这些同名变量就会重新出现。新出现。例:例:Public x,yX=10Y=100Do p8?x,yProcedure p8Private xX=50Local yDo p9?x,yProcedure p9X=aaaY=bbbreturn
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号