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

下载本文档

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

文档简介

程序设计基础

6.1程序文件的建立与运行

6.1.1程序文件的建立1.用菜单方式建立程序文件执行“文件/新建/程序/新建文件”菜单命令。2.用命令方式建立程序文件格式:MODIFYCOMMAND<程序文件名>功能:新建或修改指定的程序文件。6.1.2程序文件的运行1.用菜单方式运行程序文件执行“程序/运行”菜单命令。2.用命令方式运行程序文件格式:DO<程序文件名>功能:将指定的程序文件调入内存并运行。

6.1.3程序中的辅助命令1.程序注释命令格式1:NOTE<注释内容>格式2:*<注释内容>格式3:[<命令>]&&<注释内容>2.结束程序运行命令格式1:RETURN功能:返回到上级程序模块。格式2:RETURNMASTER功能:返回到最上级主程序。格式3:CANCEL功能:停止程序执行,关闭所有文件,返回系统交互状态。格式4:QUIT功能:停止所有程序执行,关闭所有文件,退回到宿主操作系统。3.运行环境设置命令CLEAR 清屏幕CLEARALL 关闭所有文件、释放所有内存变量SETDEFAULTTO 设置文件访问时默认的驱动器SETPATHTO 设置文件访问时默认的路径SETTALKON/off 设置所有命令执行的结果显示与否SETSTATUSON/off 设置屏幕下端的状态行显示与否SETSAFETYON/off 设置进行文件重写或覆盖操作时是否有安全提示SETPRINTon/OFF 设置输出结果是否送打印机打印

6.1.4程序中的交互输入命令1.字符串输入命令格式:ACCEPT[<提示信息>]TO<内存变量>功能:暂停程序的运行,等待用户键入一串字符赋给指定的内存变量。2.表达式输入命令格式:INPUT[<提示信息>]TO<内存变量>功能:暂停程序运行,接受用户键入的表达式并将其值赋给指定的内存变量。3.等待或单字符输入命令格式:WAIT[<提示信息>][TO<内存变量>]功能:暂停程序运行,若包含[TO<内存变量>]短语时,将用户所键入的一个字符赋给指定的内存变量;否则待用户按任一键后继续程序的执行。4.定位输出命令格式:@<行,列>SAY<表达式>功能:在屏幕上指定的行、列位置输出指定表达式的值。6.2顺序结构程序设计6.2.1基本程序结构1.顺序程序结构2.分支程序结构3.循环程序结构

6.2.2顺序结构程序设计顺序结构的程序是严格按照程序中各命令的先后排列顺序自上而下逐条执行的。例如:根据输入的人口基数与年平均增长率,计算二十年后的人口数。CLEARINPUT"人口基数:"TOaaINPUT"年平均增长率:"TObbcc=aa*(1+bb)**20?"二十年后人口数为:"+STR(cc,12)RETURN6.3分支结构程序设计

6.3.1简单分支结构格式:IF<条件> <语句序列>ENDIF执行过程:当IF语句中的<条件>成立时,系统将逐条执行IF与ENDIF之间的<语句序列>,然后再转去执行ENDIF后的程序语句;当<条件>不成立时,则不执行<语句序列>而直接执行ENDIF后的程序语句。例如:某种商品一次购买100件以上时,可享受8%的优惠。试编程根据输入的单价和数量计算应付金额。CLEARINPUT"数量:"TOslINPUT"单价:"TOdjje=dj*slIFsl>=100 je=je*0.92ENDIF?"应付金额:"+STR(je,8,2)RETURN6.3.2选择分支结构

格式:IF<条件> <语句序列1>ELSE <语句序列2>ENDIF执行过程:若<条件>成立,仅执行<语句序列1>,执行完后即转去执行ENDIF后的语句;否则仅执行<语句序列2>,执行完后也转去执行ENDIF后的语句。例如:设出租车不超过5公里时一律收费10元,超过时则超过部分每公里加收1.5元。试编程根据里程数计算并显示出应付车费。CLEARINPUT"里程:"TOlcIFlc<=5 ?"车费为:十元"ELSE cf=10+(lc-5)*1.5 ?"车费为:"+STR(cf,6,2)ENDIFRETURN6.3.3分支嵌套结构

例如:按输入的工号和该号员工的工时数,计算并输出其应发工资。CLEARACCEPT"工号:"TOghINPUT"工时:"TOgsIFgs>120gz=gs*84+(gs-120)*84*0.15ELSE IFgs<60 gz=gs*84-700 ELSE gz=gs*84 ENDIFENDIF? &&输出一个空行?gh+"号职工应发工资:"+STR(gz,8,2)RETURN6.3.4多路分支结构格式:DOCASE CASE<条件1> <语句序列1> CASE<条件2> <语句序列2> …… CASE<条件n> <语句序列n> [OTHERWISE <语句序列n+1>]ENDCASE例如:编程计算银行存款整存整取应得的利息。CLEARINPUT"本金(元):"TObjINPUT"存期(年):"TOcqDOCASE CASEcq>=5 rate=7.5&&年利率为7.5‰ CASEcq>=3 rate=6.9&&年利率为6.9‰ CASEcq>=2 rate=6.6&&年利率为6.6‰

CASEcq>=1 rate=6.3&&年利率为6.3‰ CASEcq>=0.5 rate=4.5&&年利率为4.5‰ OTHERWISE rate=1.7&&年利率为1.7‰ENDCASElixi=bj*cq*rate/1000??"应得利息:"+STR(lixi,8,2)RETURN6.4循环结构程序设计6.4.1当型循环结构格式:DOWHILE<条件> <语句序列>ENDDO执行过程:判断DOWHILE语句后的<条件>成立与否,不成立就不执行其中的<语句序列>,直接转去执行ENDDO后的语句;若<条件>成立,则执行DOWHILE和ENDDO之间的<语句序列>。每执行一遍后就再对<条件>判断一次,一旦<条件>不成立就结束循环转去执行ENDDO后面的语句。例如:求1+2+3+...+100的累计值。CLEARSTORE0TOn,sDOWHILEn<100n=n+1

s=s+nENDDO?"累计值为:"+STR(s,6)RETURN

6.4.2步长型循环结构格式:FOR<循环变量>=<初值>TO<终值>[STEP<步长值>] <语句序列>ENDFOR|NEXT执行过程:首先将初值赋给指定的循环变量,然后判断其值是否超过终值,不超过即执行循环体,超过则不执行循环体。遇到ENDFOR(或NEXT)语句时系统将自动给循环变量增加一个步长值,再判断循环变量的当前值是否超过终值,不超过再次执行循环体,超过则结束循环转去执行ENDFOR(或NEXT)后的语句。例如:用步长型循环结构编程求1+2+3+...+100的累计值。CLEARs=0FORn=1TO100

s=s+nENDFOR?"S="+STR(S,6)RETURN

6.4.3扫描型循环结构格式:SCAN[<范围>][FOR<条件1>][WHILE<条件2>] <语句序列>ENDSCAN执行过程:对当前数据表中指定范围内符合条件的记录,逐个进行<语句序列>所规定的操作;缺省范围和条件短语时,则对所有记录逐个进行<语句序列>所规定的操作。例如:用扫描型循环结构编程,输出职工档案数据表中基本工资在三百元以下的职工姓名及其基本工资数,并统计输出这些职工的人数。CLEARALLUSEzgdaCLEARSTORE0TOnSCANFOR基本工资<300?姓名,基本工资

n=n+1ENDSCAN?"基本工资在三百元以下的共有:"+STR(n,3)+"人"CLOSEDATABASESRETURN6.4.4循环嵌套结构在一个循环结构的循环体内又包含有其它循环结构,便形成了循环的嵌套,亦即多重循环结构。前面所介绍的当型循环结构、步长型循环结构和扫描型循环结构不仅自身可以实行循环的嵌套,而且相互之间也可以实行嵌套。例如:设a、b为两个介于1和9之间的数字,若有式子aab+bb=baa成立,则a、b两数各应等于多少?CLEARFORa=1TO9FORb=1TO9r1=a*100+a*10+b+(b*10+b)r2=b*100+a*10+aIFr1=r2?"a=",a?"b=",bENDIFENDFORENDFORRETURN6.5模块结构程序设计6.5.1程序模块的建立与运行例如:对于任意输入的x、y、z的整数值,计算w=x!+y!+z!的值。**主模块main_1.prgCLEARALLINPUT"x="TOxINPUT"y="TOyINPUT"z="TOzn=xDOsubp_1a=tn=yDOsubp_1b=tn=zDOsubp_1w=a+b+t?"w=x!+y!+z!=",wRETURN**子模块subp_1.prgPUBLICt &&宣告t为全局变量t=1FORi=1TOnt=t*iNEXTRETURN

6.5.2应用程序的模块化设计目前,各种事务管理应用程序的开发大都采用“自顶向下”的模块化程序设计方法,大大方便了整个程序的开发与调试,并且极大地增加了程序的灵活性和可维护性。

下图是一个简化的职工档案管理系统的程序模块结构,每个程序模块都对应一个磁盘上的.PRG文件。事实上,大多数管理程序系统都具有与之相类似的层次型程序模块结构。6.5.3带参模块的建立与调用1.带参模块调用命令格式:DO<程序模块名>WITH<参数表>功能:调用指定名称的程序模块,并将<参数表>中各个参数的值分别传递给所调用模块中的对应参数。2.接受参数命令格式:PARAMETERS<参数表>功能:接受带参模块调用命令传递过来的各个参数。3.带参模块举例6.5.4内存变量作用域1.全局变量全局变量又称公共变量,是指在任何命令语句以及任何嵌套层次的程序模块中均起作用的内存变量。定义全局变量的命令格式如下:格式:PUBLIC<内存变量表>功能:将<内存变量表>中指定的内存变量定义为全局变量。2.局部变量格式1:PRIVATE<内存变量表>格式2:PRIVATEALL[LIKE/EXCEPT<统配符>]功能:指定某些变量为只限于本模块及其下属模块中使用的局部变量,并使其上级模块中的同名变量隐蔽起来直至本级模块运行结束为止。

6.5.5过程与过程文件1.过程的概念[PARAMETERS<参数表>] <语句序列>ENDPROC2.过程文件PROCEDURE<过程名1> <语句序列1>ENDPROCPROCEDURE<过程名2> <语句序列2>ENDPROC…………PROCEDURE<过程名n> <语句序列n>ENDPROC6.5.6用户自定义函数1.自定义函数的概念[FUNCTION<函数名>]

温馨提示

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

评论

0/150

提交评论