




已阅读5页,还剩103页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章,程序设计初步,本章教学计划,教学目的:了解程序设计的概念和程序设计的方法,掌握程序文件的创建与运行方法和与程序设计相关的辅助命令,掌握三大结构的程序设计方法,掌握过程与自定义函数的定义和调用方法。 重点:输入输出命令、三种基本结构程序设计 难点:双层循环程序设计、程序的模块化 课时:课堂讲授8课时、上机实验8 课时 方式:课堂讲授、上机实验,本章纲要,顺序结构设计,分支结构设计,循环结构设计,程序设计基础,模块化设计,程序设计基础,2. 程序设计的控制结构(3种结构),3. 结构化程序设计(4个步骤),4. 程序文件中的专用命令(5类),5. 程序文件的建立与运行,1. 程序设计及算法的概念 (2个概念),1.程序设计及算法的概念,程序 ,算法:解决问题的方法和步骤,程序设计基础,数据结构,算法,对数据的描述:在程序中指定数据的类型和数据的组织形式,对操作的描述,类比理解:菜谱原料操作步骤,一系列计算机指令的集合,算法的概念,在员工表中,按员工编号查询员工的姓名和职称 。 算法 1.打开员工表。 2.输入待查员工的员工号 3.查找员工在表中对应的位置。 4.显示该记录的员工号、姓名和职称。 5.关闭表。,将酒瓶和油瓶中的液体互换。 解决方法 1.拿来一个空瓶 2.酒瓶的酒倒入空瓶 3.油瓶的油倒入酒瓶 4.空瓶的酒倒入油瓶 思考 如何将变量A、B中存放的值互换?写出算法,程序设计基础,2.程序设计的控制结构,三种基本的控制结构,顺序结构,分支结构,循环结构,流程图的基本知识,流程图的基本知识,顺序结构,特点:依照程序书写顺序执行程序,use sb &打开表 list fields 名称,价格 for 主要设备 &显示相关记录 replace all 价格 with 价格*0.9 for 主要设备 &数据替换,分支结构(选择结构),特点:根据条件的 满足与否而 分别执行与 其相对应的 操作,思考:分支结构与顺序结构的不同之处,循环结构(重复结构),特点:反复执行某些操作,反复执行的部分称为循环体。,思考: 两种循环结构的区别在于?(提示:循环条件),答案: 1. 当型是当循环条件成立时执行循环体,条件不成立时退出循环 ;直到型是执行循环体,直到条件成立才退出循环。 2. 当型是先判断后执行,可能一次都不能执行;直到型是先执行后判断,至少执行一次。,小结,所有程序从整体上看其执行流程肯定是从上而下顺序执行的,是一种顺序结构。而在其内部的结构中,三种结构是互相嵌套存在。 例如,对于循环结构,其内部肯定包含有判断条件成立与否的结构,单独来看是一种选择结构,但从整体上是属于循环结构的一部分,而循环体内部的语句自然是一种依次执行的顺序结构。,如何设计结构化程序?,3.结构化程序设计,程序设计基础,什么是结构化程序? 答1:用高级语言(如vfp)表示的结构化算法。 答2:用三种基本控制结构组成的程序。,算法设计,4.程序文件中的专用命令,程序设计基础,2、置会话状态命令,3、交互式命令,4、等待命令,5、程序结束专用命令,1、程序注释命令,1、程序注释命令,格 式 :NOTE* 或 & 功 能 : NOTE*多用于对一个程序模块的 功能进行说明。&是用于在命令语 句末尾加上注释信息。都不被执行. 例 子 : a=mod(sqrt (9) , 3) & 对9求平方根,然后对3求模。,格 式 :SET TALK ONOFF 功 能 :控制Visual FoxPro编辑环境中会话状态的 打开与关闭。 说 明 :在会话状态开通( on )时 ,VFP在执行命令的时候会向用户提供大量的中间结果及反馈信息 ,一般用于程序调试时。开通不仅会减慢程序的运行速度,而且还会与程序本身的输出相互夹杂,引起混淆。所以在执行程序时,则通常置“会话”于关闭状态(off),2、置会话状态命令,3、交互式命令,(1)字符串接收命令,(2)任意数据输入命令,(3)定位输入输出命令,(1)字符串接收命令,格 式:ACCEPT TO 功 能:此命令是专门用于字符串的输入。 说 明:(1)提示信息是用来在输入时,显示提示性文字。 (2)输入的字符串保存在TO所指向的内存变量中。 (3)在使用此命令来输入字符串时,不需要加上定界符,否则,定界符会被当做字符串本身被存入内存变量中。 例 子: ACCEPT “请输入一个数字” TO a 输入:21 (则a”21”),(2)任意数据输入命令,格 式 :INPUT TO 功 能 :从键盘输入数据保存在指定的内存变量中。 说 明 :(1)此命令能够接收各种类型数据的输入。 (2)在输入数据时对于有定界符的数据类型一定要带上定界符输入。 例 如 :INPUT “请输入出生日期” TO d 输入:1985-09-01 INPUT “请输入入学成绩” TO d 输入:560.5 (数值型数据没有定界符),(3)定位输入输出命令,屏幕格式 系统将整个屏幕划分为: 25行 80列 XY平面坐标系。 命令格式 SAY GET DEFAULT READ,说明: (1)子句用来表示数据在窗口中显示的位置 ,行与列都是数值表达式或是数值型常量。 (2)SAY子句用来输出提示信息,GET子句用来输入及编辑数据。若缺省SAY子句,GET变量值从指定位置开始显示。 (3)GET子句中的变量必须具有初值,可用DEFAULT子句的指定初值。 (4)通过GET子句从外界输入的变量的值,必须通过READ命令来激活。在一个程序中如果有多个GET子句,只需在最后GET子句后面加上一个READ子句。一个READ子句可以激活它前面所有的未被激活的GET子句中的变量。,根据员工的编号来修改员工的基本工资和水电费。,CLEAR USE 工资表 yg=“0001“ 2,10 SAY “请输入员工的编号“ GET yg READ LOCATE FOR 员工编号 = yg 4,10 SAY “请修改基本工资” GET 基本工资 6,10 SAY “请修改水电费” GET 水电费 READ USE,【例6.1】,格 式: WAIT TO WINDOW AT , NOWAIT CLEAR | NOCLEAR TIMEOUT 功 能:暂停程序运行,直到用户输入任意的一个字符才重新开始执行程序,也可以用于输出一条提示信息。 说 明: 1)to :将用户键入的字符保存到内存变量。 2)Window at,:在VFP主屏幕 的指定位置出现一个Wait提示窗口。 3)Timeout:用来设定等待时间。,4、等待命令,例 子: WAIT “请检查输入内容“ WINDOW AT 9,9,RETURN & 终止程序执行,并返回到调用它 的上级程序继续执行,如无上级 程序则返回命令窗口。 CANCEL & 终止程序执行,清除程序的私有 变量,并返回命令窗口。 QUIT & 退出VFP系统,返回WINDOWS, 与文件菜单的退出功能相同。,5、程序结束专用命令,5.程序文件的建立与运行,程序文件又称为命令文件 ,其扩展名为.PRG。,建立或修改程序文件 (1) 命令方式 格 式:MODIFY COMMAND ? 功 能:建立或修改一个程序文件。 说 明:命令中的文件名是指定要生成的程序文件的名称,缺省的扩展名为.PRG;文件名前也可以指明路径。,(2) 菜单方式(2个步骤) 选择”文件”菜单中的”新建”命令,并在弹出的”新建”对话框中,选择”程序”按钮,再单击”新建文件”命令按钮,弹出文本编辑窗口。 在文本编辑窗口中,输入程序内容即可。,2. 程序的运行 (1) 命令方式 格 式:DO 功 能:依次执行程序中的各条命令。 说 明:DO命令默认运行.PRG程序,只需取文件主名。当需要使用DO命令执行其他文件时,则必须包括扩展名。例如,通过DO命令来执行某个查询文件,文件名为ele.qpr,则命令必须写为:DO ele.qpr。,(2) 菜单方式(2种方式) 选择”程序”菜单中”运行”命令,在弹出的”运行”对话框中,输入文件名即可。 当程序处在编辑状态下时,右击文本编辑区,在其弹出快捷菜单中选择“执行程序”菜单项即可。,顺序结构设计,顺序结构程序设计是三种基本结构中最简单也是最常用的一种结构。顺序结构的程序在运行时按照语句排列的先后顺序,自顶向下依次执行。,【例6.2】,从键盘输入一个小写字母,要求改用大写字母输出。,SET TALK OFF CLEAR ACCEPT “请输入一个小写字母“ TO a a= UPPER(a) ? “转换结果为: “, a SET TALK ON RETURN,如果输入的字母为非小写字母,例如,误操作输入了大写字母或是数字字符,那么在此程序运行中仍然将继续执行并显示结果,这显然与题意不符,要解决这个问题,需要用到选择结构程序。,顺序结构程序特点: 依照程序书写顺序执行程序,例2:求长方形的面积。 clear set talk off input “请输入长方形的长:” to L input “请输入长方形的宽:” to W s=L*W ? “长方形的面积为:”, s set talk on return,分支结构,程序应具有判断功能,而判断是通过程序中的分支结构(选择结构)来实现的。,分支结构是程序中一种常用结构,按照分支结构执行路径的多少,可分为单分支、双分支和多分支结构。实现分支结构的语句有 IF语句和DO CASE语句。,无论哪种类型的分支结构,都是依据所给条件为真或为假,来选择执行某一分支的相应操作。,1、单分支结构 格式: IF ENDIF,执行流程: 首先计算条件表达式的值, 若其值为真,则执行IF与ENDIF之间的命令 序列,然后执行ENDIF后面的命令; 若其值为假,则直接执行ENDIF后面的命令。,分支结构特点: 根据条件成立与否,分别执行与其相对应的操作。,单分支结构流程图:,思考:分支结构与顺序结构的不同之处,例1:求长方形面积。(判断:当输入的边长值为正数时,求面积。),clear set talk off input “请输入长方形的长:” to l input “请输入长方形的宽:” to w if l0 and w0 s = l * w ? ”长方形的面积为:” , s endif return,在设计程序时,对于有数据输入的程序,一定要对输入数据的有效性做相应的检查,避免由于数据的错误输入而导致程序的出错。这是一个程序员必须养成的良好习惯。,例2,从键盘输入一个小写字母,要求改用大写字母 输出。,2、双分支结构 格式:IF ELSE ENDIF,执行流程: 首先计算条件表达式的值, 若其值为真,则执行命令序列1,然后 再执行ENDIF后面的命令; 若其为假,执行命令序列2,然后再执 行ENDIF后面的命令。,双分支结构流程图,例3:,从键盘输入一个数,判断其为奇数还是偶数。,分析:(1)首先是输入一个数,然后判断输入的数奇偶性。 (2)应输入数值型数据,可以用INPUT或是GET语句来输入。 (3)如何判断奇偶性呢?可使用MOD函数或求余运算符“%”。对于一个偶数x,MOD(x,2)应该为0,否则为1。,例4:在工资表中,需要按照员工编号查询员工的基本信息。,分析: 1.打开工资表; 2.输入员工号; 3.用LOCATE命令查找该员工; 4.用FOUND()函数来判断是否存在该记录。 5.若FOUND()函数为真,表示存在此员工记录,否则,不存在此员工记录,给出“查无此人”的提示信息。 5.关闭表。,SET TALK OFF USE 工资表 ACCEPT “请输入员工编号” TO a LOCATE FOR 员工编号=a IF FOUND() & 条件FOUND()为真表示存在此员工 DISP 员工号,基本工资,水电费 ELSE & 条件FOUND()为假表示不存在此员工 ?“查无此人!” ENDIF USE SET TALK ON RETURN,程序采用“缩进制”格式书写,最外层顶格写,属于其内层语句则往后退一定距离,这样便于阅读和调试。,注意: 1、IF与ENDIF必须成对出现,且各占一行。 2、可以为关系表达式、逻辑表达式或其他逻辑量。,课堂练习: 1、在员工表中,按姓名查询员工信息。 2、从键盘输入一个数,输出其绝对值。 3、输入a、b两个数,按由小到大的顺序输出。,思考题: 输入a、b、c三个数,按由小到大的顺序输出。,clear set talk off input “请输入a的值:” to a input “请输入b的值:” to b input “请输入c的值:” to c if ab &a和b比较大小,若a大,则a、b 交换 s=a a=b b=s endif if ac &a和c比较大小,若a大,则a、c 交换 s=a a=c c=s endif If bc &b和c比较大小,若b大,则b、c 交换 s=b b=c c=s endif ? a ,b , c return,思考题答案,3.IF语句的嵌套,实际生活中,很多问题不仅仅只有两种可能,而是要求对多种情况进行不同的处理,则需要用到IF语句嵌套。 嵌套是指在某种结构中含有其它结构。,一般格式: IF IF ENDIF ELSE IF ENDIF ENDIF,注意: 1、IF一定要与ENDIF配对。 2、在IF结构之间可以嵌套,但不能交叉。,例5: 输入一个学生成绩,判断学生成绩的等级。假设成绩等级划分为5等: 0,60 为不及格,60,70为及格, 70,80为良, 80,90为好, 90,100为优。,4、多分支DO CASE语句,格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE,例6:,使用DO CASE语句转换例5。,SET TALK OFF INPUT “请输入成绩” TO p IF ( P100) OR ( P0) ? “输入的成绩有误,请重新输入“ ELSE DO CASE CASE P60 ? “不及格“ CASE P70 ? “及格“ CASE P80 ? “良“ CASE P90 ? “好“ OTHERWISE ? “优“ ENDCASE ENDIF RETURN,课堂练习:,编一缴税程序,以800元为基数,超出部分的缴税比例如下: 800-1500(含800) 5% 1500-2500(含1500) 10% 2500-5000(含2500) 20% 5000以上 (含5000) 25%,注意事项:,1、在DO CASE语句中,当有几个CASE的条件同时成立时,自上而下只执行最先满足条件的CASE后面的语句组,然后退出DO CASE语句。 2、DO CASE和ENDCASE必须配对出现。 3、IF语句和DO CASE语句都可用于多分支结构,但当分支较多,IF嵌套的层次就越多,程序结构也会变得复杂,不利于程序的调试和修改,所以,当嵌套层次超过34层时,一般不使用IF结构,而使用DO CASE语句。,小结,分支结构使得程序功能得到完善,分支结构的目的在于对不同情况做出不同处理,这种结构的出现使得计算机在一定程度上具有了判断的功能,是计算机走向智能化的重要结构。,循环结构设计,1.条 件 循 环,2.步 长 循 环,3.扫 描 循 环,1、条件循环,格式: DO WHILE LOOP EXIT ENDDO,注意事项:,(1)此循环为当型循环。对于当型循环,如果条件第一次就不成立,那么循环一次也不做。 (2)循环体内应有修改循环条件的语句或EXIT。 (3)LOOP,EXIT可在适当时候控制循环,一般用在IF或DO CASE语句中。,求1+2+3+100之和。 分析:,0 + 1 = 1 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 4950+100=5050,S I S,S=0 I =1,S=S+I I =I+1,【例6.12】,S=S+I I =I+1,S=S+I I =I+1,SET TALK OFF CLEAR I=1 S=0,I=100,S=S+I,I=I+1,ENDDO,?”S=”,S RETURN,DO WHILE,说明:,(1)对于条件循环,最重要的在于循环条件的建立,特别是对于循环变量临界值的确定。 (2)循环变量要赋初值。 (3)循环体内要有能使得循环条件逐渐趋近于假的语句,否则会造成死循环。 (4)要考虑循环体内的语句顺序。如果顺序不同,可能程序的结果就不同了。,思考题:,我们应修改例6.12中哪些语句来实现以下功能需求呢? 1、编程求1+3+5+99。,2、编程求2+4+6+ +1000。,3、编程求1到100所有自然数的平方和。,4、编程求1*2+2*3+3*4+ +100*101。,【例6.14】,已知表达式s=1+1/2+1/3+1/n,直到s5 为止,求此时n的值。,分析:(1)此题为一个多项式累加求结果。但是显然具体多项式有多少项并不清楚所以不知循环次数。 (2)采用循环结构,循环体中每次是对s累加前一项式的值,而且多项式之间存在着每次分母都比上一次增加1规律。 (3)由题目给出条件得知,只有当s小于5时循环才能继续。因此得出循环的条件应该为s=5。,CLEAR SET TALK OFF s=0 n=1,DO WHILE s=5 s=s+1/n n=n+1 ENDDO,? “n的值应该为”,n-1 SET TALK ON RETURN,【例6.14】的另一种参考答案,用永真循环实现,程序代码如下:,CLEAR SET TALK OFF STORE 0 TO S,I,DO WHILE .T. N=N+1 S=S+1/N IF S5 EXIT ENDIF ENDDO,? “n的值应该为”,n SET TALK ON RETURN,分析:(1)此题要求判断100到200之间的所有数,那么是一个循环判断的过程。 (2)设一个变量i初值为100,循环条件为i=200。 (3)循环体中,对每次的i先利用MOD函数判断奇偶性。若i为奇数则累加到变量s中,否则,通过LOOP语句退出本次循环,进入下一次循环判断。,【例6.15】,求100到200之间所有奇数之和。,SET TALK OFF CLEAR s=0 i=100 DO WHILE i=200 i=i+1 &必须放在IF语句前 IF MOD(i,2)=0 LOOP & 若i被2除后余数为0,则i为偶数,否则退出本次循环。 ELSE s=s+i ENDIF ENDDO ?“100到200之间奇数累加之和为:“+s SET TALK ON RETURN,2、步长循环,条件循环可以实现已知和未知循环次数的循环。 对于循环次数已知的循环还可采用步长循环。,格式: FOR = TO STEP ENDFORNEXT,数值表达式,默认值为1。,说明: (1)循环变量按步长值增加或减小。 (2)当循环变量的值不在初值与终值范围内时,结束循环。,几种步长循环形式:,1.省略步长 FOR i=1 TO 100 n=n+1 ENDFOR 没有给出步长,默认为1, 退出循环后n的值为100。,假设n的初值为0,4.初值与终值相等 FOR i=1 TO 1 STEP 10 n=n+1 ENDFOR 循环只做一次 , 退出循环后n的值为1。,求1+2+3+100之和。,【例6.12】,SET TALK OFF CLEAR S=0 FOR i=1 TO 100 STEP 1 S=S+i ENDFOR ? “1-100之和为“,S SET TALK ON RETURN,举一反三:求123100之积。,S1,S=S*i,积,求所有的3位数中能同时被5和12整除的数有多 少个?其和是多少?并按照每行输出5个,输出这些数。,分析: 1.所有的三位数,也就确定了范围是从100999,使用步长循环,初值为100,终值为999,步长为1。 2.用循环到的数对5和12求余,若其余数为0,则是一个需要的数,那么存放统计个数的变量加1,用于求和的变量累加上该数值。 3.对于每个满足条件的数都使用“?”来保证同行输出,一旦输出了5个,则使用“?”换行。即,如果统计的个数能被5整除,就输出一个“?”,用来换行。,【例6.13】,STORE 0 TO s,t &s保存累加和,t保存满足条件的数的个数 FOR i=100 TO 999 IF (i%5=0) AND (i%12=0) s=s+i t=t+1 ? i, “ “ IF t%5=0 ? &已经输出5个数,则换行输出。 ENDIF ENDIF ENDFOR ?“满足条件的数的个数为:“, t ?“满足条件的数之和为:“, s,思考:输出所有的四位数中能同时被9和11整除的数,每行输出6个。,分析: 1.在表中添加新的空记录可以使用APPEND BLANK命令。 2.用步长循环来控制添加记录的数量。 3.内部数据的输入可以用定位输入命令来完成。 代码: SET TALK OFF CLEAR USE 员工表 FOR i=1 TO 10 APPEND BLANK ? “请输入添加的第“, i, “个员工的资料“,【例6.14】,在员工表中添加10条新记录。,2,5 SAY “请输入员工编号” GET 员工编号 4,5 SAY “请输入员工姓名” GET 姓名 6,5 SAY “请输入员工性别” GET 性别 8,5 SAY “请输入员工婚否” GET 婚否 10,5 SAY “请输入员工职称” GET 职称 12,5 SAY “请输入员工工作日期” GET 工作日期 14,5 SAY “请输入员工部门编号” GET 部门编号 16,5 SAY “请输入员工工资级别” GET 工资级别 18,5 SAY “请输入员工联系电话” GET 联系电话 READ CLEAR ENDFOR USE SET TALK ON RETURN,小 结,a) 循环变量、和(或积或个数)变量要赋初值。 b) DO WHILE循环体内要有修改循环变量的语句(即为了避免程序成为死循环)。 c)尽可能不要在FOR循环内部使用改变循环变量的语句。,3、扫描循环,格 式: SCAN FORWHILE ENDSCAN,说 明: (1)针对当前工作区中被打开的表的记录进行扫描。 (2)子句确定扫描记录的范围,缺省则为ALL。 (3)对子句内满足FOR或WHILE的记录执行循环体中的规定操作。 (4)记录指针可自动往下移。,USE 员工表 STORE 0 TO n1,n2,j1,j2 SCAN IF 性别=“男” n1=n1+1 ELSE n2=n2+1 ENDIF DO CASE CASE 职称=“教授” j1=j1+1 CASE 职称=“副教授” j2=j2+1 ENDDO ENDSCAN,【例6.15】,统计员工表中男女人数,以及教授和副教授 的人数。,?“总共有”,n1,“个男员工” ?“总共有”,n2,“个女员工” ?“总共有”,j1,“个教授” ?“总共有”,j2,“个副教授” USE,总结,a) 条件循环命令适用于各种类型的循环程序。 b) 计数循环适用于已知循环次数的循环程序。 c) 扫描循环命令适用于对数据库操作的循环程序。 d) 事实上,ForEndfor和ScanEndscan是 Do WhileEnddo的特殊形式。,作 业,1.用扫描循环依次修改学生表中第10-40条记录中女生的总分。 2.编写一个密码输入程序,密码为“ABC”,若用户输入正确,显示“欢迎使用”,若不正确,允许输入三次,三次输入不正确,显示“无权使用本系统”,并退出程序执行。 3.在屏幕上打印如下图形: * * * 4.实现输入任意一个15以内的数求其阶乘。,5、设S=1+1/2+1/3+1/N,求使S不超过10的最大的N值。 6、求1-1000之间能被3整除的偶数的个数及其和。 7、打印如下图形: * * * * 附加题: 1、任意输入10个数,能求出它们中的最大值和最小值。 2、打印九九乘法表。,模块化设计,1.子 程 序,2.过程与过程文件,3.自定义函数,4.内存变量的作用域,5.数据传递,1、子程序,一、定义: 子程序实际上是一个程序,其是一个相对的概念,通常称调用的程序为主程序,被调用的程序为子程序。,二、调用与返回 DO WITH 1、主程序执行时遇到DO命令,执行就转向子程序。子程序执行完后就会返回到主程序。 2、参数表可以是表达式,若为内存变量,必须具有初值。 3、调用子程序时,参数表中的参数要传送给子程序。,三、子程序参数的定义: PARAMETERS 功能:接受主程序发送的参数值,调用返回主程序时把变 量的值回送给主程序相应的变量。 说明: a) PARAMETERS必须是被调用程序的第一个语句。 b) 程序返回主程序后,该命令定义的参数即被清除。 c) DO 命令传送参数的个数不能多于PARAMETERS参数 表中所列参数的个数。 d) DO命令所带的参数叫实际参数,PARAMETERS所对 应的叫形式参数。,求一个半径等于边长的圆与正方形面积之差。,主程序: STORE 0 TO S1,S2 INPUT “输入半径或边长的值:“ TO A DO YUAN.PRG WITH A,S1 DO ZHEN.PRG WITH A,S2 ?S1-S2,YUAN.PRG PARAMETERS R,S S=3.14*R2 RETURN,ZHEN.PRG PARAMETERS L,S S=L2 RETURN,【例6.15】,注 意 1、只有当DO命令中参数为内存变量时,子程序的参数才能返回给主程序,若参数为常量或表达式时,子程序的参数值不能够返回给主程序。 2、若子程序不需要参数时,DO命令也可以不带参数。,四、子程序的返回 RETURN TO MASTER|TO 说明: TO MASTER 直接返回到最外层主程序;TO 强制返回到指定的程序文件。,2、过程与过程文件,如果将多模块程序中的每个模块(主程序,子程序或自定义函数)分别保存为一个独立的.PRG文件,则每执行一个模块就要打开一个文件,势必会增加运行时间。为此VFP允许在一个.PRG文件中设置多个程序模块,并将主程序以外的每个模块定义为一个过程,即“过程文件”,仍以.PRG为扩展名。,一、过程的定义 PROCEDURE PARAMETERS RETURN,说 明: a) 每个过程均以PROCEDURE开始,以RETURN结束。每个过程实际上是一个独立的子程序或一个用户定义函数。 b) PROCEDURE 用于过程的第一条语句,它标识了每个过程的开始,同时定义了过程名。 c) 过程如果以RETURN 作为结束语句,则该过程既可用DO 的形式执行,又可当做一个合法的自定义函数,可供随时调用。,1,2,【例6.16】,【例6.17】,写出下列程序的运行结果。,结果为: 8 20 28,二、过程文件 一个过程可以以文件形式单独存在,也可以将多个过程合并到一个过程文件。 过程文件是把多个过程集中起来用一个文件的形式存储在磁盘上,要调用其中的过程,必须先打开该过程文件。,格 式:SET PROCEDURE TO 功 能:打开过程文件。,【例6.18】,用过程文件实现求一个半径等于边长的圆与正方形面积之差的问题。,*Main.prg CLEAR SET TALK OFF SET PROCEDURE TO sub &打开过程文件sub.prg STORE 0 TO s1,s2 INPUT “输入半径或边长的值:“ TO a DO yuan WITH a,s1 &调用过程文件中的过程yuan DO zhen WITH a,s2 &调用过程文件中的过程zhen ?s1-s2 SET TALK ON RETURN,*过程文件sub.prg PROCEDURE yuan &过程yuan PARAMETERS r,s s=3.14*r2 RETURN PROCEDURE zhen &过程zhen PARAMETERS i,s s=i2 RETURN,3、自定义函数,一、自定义函数的定义 FUNCTION PARAMETERS RETURN ,自定义函数与系统函数调用方法相同: 函数名(),【例6.19】,将子程序中的例题改为自定义函数。,CLEAR S=0 INPUT “输入半径或边长的值:” TO A ?YUAN(A)-ZHEN(A) FUNCTION YUAN PARAMETERS R S=3.14*R2 RETURN S FUNCTION ZHEN PARAMETERS L S=L2 RETURN S,【例6.20】,定义一个判断n是否是素数的函数,然后调用该函数求21000内的全部素数。,分析: a) 素数也叫质数,它是大于1且除了1和它本身之外,不能被其他任何整数所整除的整数。 b) 为了判断某数n是否是素数,一个最简单的方法是用2345n-1这些数逐个去除n,看能否除尽,如果全都除不尽,则n是素数,否则,只要其中一个数除尽了,则n不是素数。为了减少除的次数,提高运行效率,除到n开方即可。,程序:,*此子程序判断n是否是素数 FUNCTION PRIME PARAMETERS N FLAG=.T. K=INT(SQRT(N) J=2 DO WHILE J=K AND FLAG IF MOD(N,J)=0 FLAG=.F. ENI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 插件机购销合同5篇
- 合水县2025甘肃庆阳市合水县事业单位引进高层次急需紧缺人才22人(第三批)笔试历年参考题库附带答案详解
- 丰都县2025二季度重庆丰都事业单位考核招聘12人笔试历年参考题库附带答案详解
- 2025陕西金融资产管理股份有限公司员工招聘(26人)笔试参考题库附带答案详解
- 2025辽宁省能源控股集团所属抚矿集团招聘76人笔试参考题库附带答案详解
- 2025江苏南京六合科技创业投资发展有限公司招聘10人笔试参考题库附带答案详解
- 2025广东湛江市麻章区城乡国有资产经营有限公司招聘5人笔试参考题库附带答案详解
- 2025年潍坊交通发展集团有限公司公开招聘(19人)笔试参考题库附带答案详解
- 2025年江西井冈山市市场监督管理局面向社会公开招聘4人笔试参考题库附带答案详解
- 2025年国网湖南省电力有限公司高校毕业生招聘(第二批)笔试参考题库附带答案详解
- 超早期脑梗死的CT影像表现及诊断课件
- 拉西地平原料制药课程设计说明书
- 小学体育-小学二年级《单双脚跳》教学设计学情分析教材分析课后反思
- 居室环境的清洁与消毒
- ××领导班子及成员分析研判报告
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- GB/T 2518-2008连续热镀锌钢板及钢带
- Frenchay构音障碍评定
- 教育学原理课后答案主编项贤明
- 建筑装饰施工技术-轻质隔墙工程施工课件(-)
- 语言领域核心经验《学前儿童语言学习与发展核心经验》
评论
0/150
提交评论