版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章结构化程序设计VisualFoxPro程序设计主讲教师:高骏Emil:704098395@
本章要求:1.掌握VFP程序的建立、修改、运行。
2.掌握程序的三种基本结构。3.了解过程和过程文件。
本章要点:
程序的三种控制结构。学时安排:6学时(理论)+6学时(实践)课程要求结束作业
第8章程序设计基础
8.1
程序文件及其编辑环境
8.2
程序中几种常用命令
8.3
程序的基本控制结构
8.4
过程和用户自定义函数8.1程序文件及其编辑环境
在ViusalFoxPro中,程序是由一系列ViusalFoxPro可以理解的命令、函数和操作组成的,这些命令和函数可以在ViusalFoxPro中的命令窗口和以人工方式逐一执行,也可以把它们放在一个程序文件中,以文件的形式来执行。【8.1】
假定学号的前四位为入学年份,第5,6位为专业代码.编写命令文件test.prg,分别统计所有学生和2010年入学,专业代码为03的学生选修课程号为101课程的平均成绩.SETTALKOFFSETDEFAULTTOd:\学生管理OPENDATA学生管理SELECTAVG(成绩)FROM
成绩
WHERE; 课程号=“101”INTOARRAYm1SELECTAVG(成绩)FROM成绩
WHERE; 课程号=“101”ANDLEFT(学号,4)=“2010”;ANDSUBS(学号,5,2)=“03”INTOARRAYm2CLEAR?”所有学生的平均成绩:”font“宋体”,20,m1(1)font“宋体”?”指定学生的平均成绩:”font“宋体”,20,m2(1),font“宋体”CLOSEDATASESETTALKONRETURN(1)以命令方式建立、修改程序文件ModifyCommand<程序文件名>格式:功能:创建、编辑以“程序文件名”为名的程序文件说明:1.在编辑窗口输入一条条命令。2.^w或关闭窗口存盘、^q或者<Esc>放弃存盘3.程序文件的扩展名为.prg,可以省略。(2)以菜单方式建立、修改程序文件文件新建文件打开已有的程序文件.prg8.1.1程序文件的建立和运行1.程序文件的建立(2)命令方式(1)菜单方式程序运行Do<文件名>格式:功能:运行程序文件程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。选中运行2.程序文件的运行、调用8.1.2VisualFoxPro编程特点1.变量不区分大小写类型说明示例类型说明示例a数组型aStudentsf浮点型fInterestc字符型cNamel逻辑型lFlagy货币型yCurrentValuen数值型nCounterd日期型dBirthDayo对象oEmployeet日期时间型tLastModifiedu未知uReturnValueb双精度型bValue建议的变量命名约定2.变量不需预先声明当把一个值保存到某一变量而该变量原先不存在时,VisualFoxPro系统会隐含地声明它,并有初始值存在。用户在变量里放什么数据,变量就是什么类型。
3.命令分行程序中每条命令都以回车键结尾,一行只能写一条命令。若需分行书写,可以使用分号“;”表示续行。4.添加注释VisualFoxPro系统对整行注释和行中部分注释有不同的格式。整行注释使用“*”引导,行中部分注释使用“&&”引导。8.2程序中几种常用命令8.2.1基本输入命令1.Wait命令
暂停程序的运行,直到用户输入一个字符,也可用于输出一条提示信息WAIT[<信息文本>]
[TO
<内存变量>][WINDOW[AT
<行>,<列>]]
[NOWAIT][CLEAR][NOCLEAR][TIMEOUT
<数值表达式>]保存键入的字符,省略TO子句不保存省略则显示“按任意键继续….不等待用户输入关闭提示窗口不关闭提示窗口,直到下一个WAIT命令自动关闭WINDOW子句使屏幕出现一个WAIT提示窗口,内容由<信息文本>确定,位置有AT子句指定.省略AT子句则出现在屏幕右上角TIMEOUT子句设定等待时间(以秒为单位)说明明:③若指指定定WINDOWS子句句,则会会出出现现一一个个WAIT提示示窗窗口口,用以以显显示示提提示示信信息息.提示示窗窗口口在在主主窗窗口口的的右右上上角角,也可可以以用用AT短语语指指定定其其在在主主窗窗口口中中的的位位置置.④若同同时时选选用用NOWAIT短语语和和WINDOWS子句句,系统统将将不不等等待待用用户户按按键键,直接接往往下下执执行行.⑤若选选用用NOCLEAR短语语,则不不关关闭闭提提示示窗窗口口,直到到用用户户执执行行下下一一条条WAITWINDOWS命令令或或WAITCLEAR命令令为为止止.⑥TIMEOUT子名名用用来来设设定定等等待待时时间间(秒数数)。例如如执执行行::Wait““欢迎迎使使用用!!””Windows在屏屏幕幕右右上上角角弹弹出出一一个个窗窗口口,,显显示示““欢欢迎迎使使用用!!””,,按按任任意意键键后后窗窗口口消消失失。。2.Accept命令令Accept[<提示示信信息息>]To<内存存变变量量>格式式::功能能:在程程序序执执行行过过程程中中,,暂暂停停执执行行,,等等待待用用户户从从键键盘盘输输入入字字符符串串。。当当用用户户以以回回车车键键结结束束输输入入完完数数据据后后,,系系统统将将用用户户输输入入的的内内容容作作为为字字符符串串赋赋值值给给指指定定内内存存变变量量。。然然后后继继续续往往下下执执行行程程序序。。说明:(1)如果选用用提示信息息,系统会会在屏幕上上显示提示示信息;(2)输入的数数据只能是是字符型数数据,并且且不用定界界符;(3)如果用户户什么数据据都不输,,就按下回回车键,系系统认为是是输入了一一个空串,,自动会把把空串赋给给指定的内内存变量中中。【例8.2】编程从键盘盘输入某数数据库的文文件名,要求打开该该数据库并并显示其内内容.程序文件名名为PROG1.PRG。SETTALKOFFStedefaulttod:\学生管理CLEARACCEPT"请输入数据据库名:"TOAAAOPENDATABASE&AAAACCEPT"请输入表名名:"TOBBBUSE&BBBbrowseUSESETTALKONRETURNDoprog1请输入数据据库名:学生管理请输入表名名:学生Use人才档案ExclusiveAccept"请输入编号号:"TobhLocateFor编号=bh?编号,姓名Usesetdefaulttod:\人才管理opendata人才管理Accept"请输入职称称:"tozcselect*from专业特长;where职称=zc【例8.3】输入姓名,,在人才档档案表中查查询某编号号对应的姓姓名【例8.4】编写程序,,浏览专业业特长表中中不同职称称的记录集集。Do8.4请输入职称称:教授Do8.3请输入编号号:sh01001Sh01001金银桥输入字符串串时不加定定界符3.Input命令Input[<提示信息>]To<内存变量>格式:功能:(1)如果选用用<提示信息>,那么系统统会首先显显示该提示示信息的值值,作为提提示信息。。(2)输入的数数据可以是是常量、变变量,也可可以是一般般的表达式式。但不能能不输入任任何内容直直接按回车车键。(3)输入字符符串是必须须加定界符符“”,输入逻辑辑型常量要要用圆点定定界符(如如.T.,.F.),输入日日期时间型型常量是要要用大括号号(如{^2012-03-01})。说明:等待用户从从键盘输入入数据,用用户可以输输入任意合合法的表达达式。当以以回车键结结束输入时时,系统将将表达式的的值存入指指定的内存存变量,程程序继续运运行。【例8.5】编写命令文文件test1.prg,查找指定日日期以后后出生的学学生SETDEFAULTTOd:\学生管理OPENDATABASE学生管理INPUT"输入日期:"TOmrqSELECT学号,姓名,出生日期FROM学生;WHERE出生日期>mrq;NOWAITCLOSEDATABASERETURNDotest1输入日期::{^1993-01-01}ClearInput“长方形一边边的长为::”TOAInput“长方形另一一边的长为为:”TOBS=A*B?"长方形的面面积为:",S【例8.6】从键盘输入入两个任意意正数,编编程求以两两数为边长长的长方形形面积。程程序文件名名为8.6.prg在命令窗口口中输入::ModifyCommand8.6Do8.6长方形一边边的长为::5长方形另一一边的长为为:6运行结果::长方形的面面积为:30屏幕显示键盘输入Setdefaulttod:\人才管理Input"请输入要删删除的人的的出生日期期:"toCsrqDeletefrom人才档案where出生日期=CsrqSelect人才档案BrowClosedata【例8.7】编写程序,,将人才档档案表中指指定的出生生日期的记记录逻辑删删除。请输入要删删除的人的的出生日期期:{^1969-02-03}4.格式输入语语句格式:@<行,列>Say<提示信息>get<变量>@<行,列>Say<提示信息>get<变量>…….Read功能:在指定的行行、列位置置输入一个个常量,当当执行到Read语句时,将将常量赋值值给指定的的变量。说明:1、多个@语句可以配配置一个Read语句。但是是中间不能能有别的语语句。2、Get后面的变量量要先赋值值。ClearSetdefaulttod:\人才管理Use专业特长ExclusiveAccept"请输入职称称:"tozcLocateAllFor职称=zc@2,10Say"编号"Get编号@3,10Say"专业"Get专业@4,10Say"毕业学校"Get毕业学校@5,10Say"专业年限"Get专业年限@6,10Say“职称”Get职称ReadClosedata【例8.8】编写程序,,在指定的的位置显示示修改“专业特长””表中指定定职称的记记录。@<行,列>Say<提示信息>[Picture<格式描述符符>]格式:功能:(1)在指定的的行、列输输出表达式式的值。(2)格式描述述符用来限限定数据输输出的类型型、长度及及格式。8.2.2基本输出语语句1.格式输出语语句格式字符含义例子9只允许显示数字字符与正负号Picture"999.99"#一个数值型数字与正负号Picture"####.##",千位分隔符Picture“99,999"$显示货币符Picture"$999.99"X允许任意字符Picture"xxxxx"!将字符转成大写Picture"xxxxx"常用格式描描述符的功功能Use人才档案ExclusiveAccept"请输入编号号:"tobhLocatFor编号=bh@13,20Say编号Picture"!!!!!!!!"@14,20Say姓名Picture"xxxxxxxxx"Use【例8.9】输入编号,,在人才档档案表中查查询某编号号对应的姓姓名。字符转换成成大写任意字符x1=Messagebox("您真的要退退出系统吗吗?",4+16+0,"退出系统")Ifx1=6ReturnEndifMessagebox(<““提示信息”>,<对话框类型型>,<“对话框标题题“>)格式:功能:在屏幕上弹弹出一个指指定格式的的对话框。。说明:对话框类型型是由“按钮个个数+显示图标+默认按钮””组成。提示信息对话框标题题提示信息对话框标题题对话框类型型按钮个数显示图标默认按钮2.对话框MessageBox函数P67代码代码的含义0确定按钮1确定、取消按钮2终止、重试、和忽略按钮3是、否和取消按钮4是、否按钮5重试、取消按钮按钮个数代代码显示图标代代码代码代码的含义16停止图标32问号图标48感叹号图标64信息图标默认焦点按按钮的代码码代码代码的含义0默认焦点在第一个按钮256默认焦点在第二个按钮512默认焦点在第三个按钮按钮返回值按钮返回值确定1忽略5取消2是6终止3否7单击对话框框按钮的返返回值4+16+0单击“否”,返回7返回值送到到x1如果x1=“是”返回系统单击“是””,返回68.2.3程序结尾尾命令1、程序的的末尾可可以使用用Return命令,能能使程序序执行结结束,并并返回到到调用它它的上级级程序继继续执行行,若无无上级程程序则返返回到命命令窗口口。2、使用另另一条命命令为Cancel,它可以以中止程程序运行行,并返返回到命命令窗口口。3、使用Quit命令可以以结束程程序运行行退出VisualFoxPro系统8.3程序的基基本控制制结构常见的控控制结构构如下::1.顺序结结构顺序结构构是在程程序执行行时,根根据程序序中语句句的书写写顺序依依次执行行的命令令序列。。VisualFoxPro系统中的的大多数数命令都都可以作作为顺序序结构中中的语句句。2.分支结结构分支结构构是在程程序执行行时,根根据不同同的条件件,选择择执行不不同的程程序语句句,用来来解决有有选择、、有转移移的诸多多问题。。3.循环结结构循环结构构则能够够使某些些语句或或程序段段重复执执行若干干次。如如果某些些语句或或程序段段需要在在一个固固定的位位置上重重复操作作,使用用循环是是最好的的选择。。8.3.1顺序结构构顺序结构构是一种种线性结结构。是是程序设设计中最最简单同同时也是是最基本本的结构构。它要要求顺序序地执行行每一个个基本的的加工处处理单位位。命令序列1命令序列2【例8.10】计算圆的的周长和和面积。。ClearInput"请输入圆圆的半径径:"Tor&&输入半径径c=2*3.14*r&&计算圆的的周长s=3.14*r*r&&计算圆的的面积?"圆的周长长:",c&&输出周长长?“圆的面积积:”,s&&输出面积积Return8.3程序的基基本控制制结构分支结构构是在程程序执行行时,根根据不同同的条件件,选择择执行不不同的程程序语句句。If<条件表达达式><语句序列列>EndIf格式:功能:首先计算算〈条件表达达式〉的值,当当〈条件表达达式〉的值为真真时,执执行〈语句序列列〉;否则,,执行EndIf后面的第第一条语语句。EndIf后面的语句TF语句序列条件1.简单的条条件语句句8.3.2条件分支支结构ClearInput"X="TOxInput"Y="TOyIfx/3=Int(x/3)y=y+xEndIf?"Y=",y【例8.11】编写程序序:先从从键盘接接收两个个数x和y,然后判判断x能否被3整除。如如果x能被3整除,那那么y的值增加加x;否则y的值不变变。EndIf后面的语句TF
y=y+xx/3=int(x/3)输入x,yIfmod(X,3)=0【例8.12】编写程序序:修改改“专业业特长””表中的的数据,,把编号号为“zj01002”的职称从从“副教教授”改改为“教教授”。。ClearUse专业特长长ExclusiveLocateFor编号="zj01002"If职称="副教授"Replace职称With"教授"EndIfBrowseLast2.带Else的条件语语句If〈条件表达达式〉〈语句序列列1〉Else〈语句序列列2〉EndIf格式:功能:FT语句序列1语句序列2条件EndIf后面的语句该语句首首先计算算〈条件表达达式〉的值,当当〈条件表达达式〉的值为真时,执行行〈语句序列列1〉中的命令令;否则则,执行行〈语句序列列2〉中的命令令;执行行完〈命令行序序列1〉或〈命令行序序列2〉后都将执执行EndIf后面的第第一条语语句。【例8.13】输入一个个姓名,,在“学学生”表中查找找该姓名名的学生生,如果果找到,显示该记记录的姓姓名、性性别和出出生日期期,否则则显示““查无此此人!””,程序名为为test2.prgSETDEFAULTTOd:\学生管理理OPENDATABASE学生管理理USE学生IN0SELECT学生ACCEPT“请输入待待查学生生姓名:”TONAMELOCATEFOR姓名=NAMEIFEOF()=.F.?”姓名:”+姓名FONT“宋体”,20?”性别:”+IIF(性别=.t.,“男”,”女”)FONT“宋体”,20?”出生日期期:”+DTOC(出生日期期,1)FONT“宋体”,20ELSE?”查无此人人!”FONT“宋体”,20ENDIFCLOSEDATABASERETURNmessagebox(“查无此人人!”,0+48+0,””例8.13”)语句执行行时,依依次判断断Case后面的条条件是否否成立。。当发现现某个Case后面的条条件成立立时,就就执行该该Case和下一个个Case之间的语语句序列列,然后后执行EndCase后面的语语句令。。如果所所有的条条件都不不成立,,则执行行Otherwise与EndCase之间的语语句序列列,然后后转向EndCase后面的语语句。3.多分支语语句DoCaseCase〈条件表达达式1〉<语句序列列1〉Case〈条件表达达式2〉<语句序列列2〉……Case〈条件表达达式N〉〈语句序列列N〉][Otherwise〈语句序列列N+1〉〉]EndCase格式:功能:条件2条件nOTHERWISE语句序列1语句序列2语句序列n语句序列n+1ENDCASE后面的语句条件1…①不管有几几个Case条件成立立,只有有最先成成立的那那个Case条件的对对应命令令序列被被执行。。②如果所所有的Case条件都不不成立,,且没有有Otherwise子句,则则直接跳跳出本结结构。③DoCase和EndCase必须配对对使用,,DoCase是本结构构的入口口,EndCase是本结构构的出口口。④DoCase和第一个个Case子句之间间不能插插入任何何命令。。说明:DoCaseCase〈条件表达式1〉<命令行序列1〉Case〈条件表达式2〉<命令行序列2〉……Case〈条件表达式N〉〈命令行序列N〉][Otherwise〈命令行序列N+1〉]EndCaseInput"请输入考试成成绩:"ToxDoCaseCasex<60?"不及格"Casex<70?"及格"Casex<80?"中等"Casex<90?"良好"Otherwise?"优秀"EndCase【例8.13】显示当前季节节。程序文件件如下。ClearYue=Month(Date())DoCaseCaseyue<4jj="春"Caseyue<7jj="夏"Caseyue<10jj="秋"Otherwisejj="冬"EndcaseWaitjjWindow从今天的日期期里取出月份份送到yue测试表达式的的值是否在表表达式中,是是就返回.T.【例8.14】假设收入(P)与税率(R)的关系如下下表,编程求求税金。0P≤3500R=0.053500<P≤45000.084500<P≤65000.1P>6500ClearInput"请输入收入::"ToPDoCaseCaseP<=3500R=0CaseP<=4500R=0.05CaseP<=6500R=0.08OtherwiseR=0.1EndCaseTax=(p-3500)*r?"税金为:"+Str(tax)【例8.15】输入一个字符符“男”或者者“女”到变变量“性别””中,再输入入一个数值到到变量“身高高”中。计算算:如果性别别=“男”并且身高高又在180以上,输出““参加篮球比比赛”,否则则输出“参加加足球比赛””。如果性别别为“女”并并且身高在170以上输出“参参加模特大赛赛”,否则输输出“参加健健美操比赛””。Acce"请输入你的性性别:"To性别Input"请输入你的身身高:"To身高If性别="男"DoCaseCase身高>=180?"参加篮球比赛赛!"Case身高<180?"参加足球比赛赛!"EndCaseElseDoCaseCase身高>=170?"参加模特比赛赛!"Case身高<170?"参加健美操比比赛!"EndCaseEndIfReturn用Case包含If语句怎么写??bca解题步骤:交换a、b的值交换a、c的值交换b、c的值【例8.16】编写程序,对对任给的三个个数,按从小小到大的顺序序输出。输入a,b,c的值开始TFA,b交换a>b?TFa>cA,c交换TFB,c交换b>c?Input"请输入第1个数:"toaInput"请输入第2个数:"tobInput"请输入第3个数:"toc?"排序前",a,b,cIfa>bt=aa=bb=tEndifIfa>ct=aa=cc=tEndifIfb>ct=bb=cc=tEndif?“排序后",a,b,ca,b排序a,c排序B,c排序8.4循环结构程序序循环结构也称称为重复结构构,是指程序序在执行的过过程中,程序序中的某段代代码被重复执执行若干次。。被重复执行行的代码段,,通常称之为为循环体。1.条件循环根据条件表达达式的值决定定循环体内语语句的执行次次数。格式1:功能:DoWhile<条件表达式><语句序列>EndDo条件FT循环体EndDo后面的语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,,执行循环;;否则,执行行EndDo后面的第一条条命令。如果果第一次判断断条件为假,,一次也不循循环。【例8.17】统计“人才档档案”表中工工资超过7000元的人数。ClearSetdefaulttod:\人才管理Use人才档案ExclusiveGoTopRc=0DoWhileEof()=.f.If工资现状>7000rc=rc+1EndIfSkipEndDo@2,30Say"工资在7000元以上的人"@2,60SayrcUseClearSetdefaulttod:\人才管理Use人才档案ExclusiveLocatefor工资>7000Rc=0DoWhileEof()=.f.rc=rc+1continueEndDo?"工资在7000元以上的人“,rcUseClearS=0I=1DoWhileI<=100S=S+II=I+1EndDo?"1+2+3+……+100=",S【例8.18】编程求1+2+3+……+100之和。一个循环结构构一般应具备备如下的条件件:(1)循环的初始始条件:一般般为给循环控控制变量赋初初值;(2)循环头:循循环语句的起起始,设置、、判断循环条条件;(3)循环尾:循循环语句的结结尾;(4)循环体:位位于循环头和和循环尾之间间、循环控制制重复执行的的语句序列。。求s=1+3+5+7-------+51求s=1*2*3*--------*100(s=100!)求s=1!+2!+3!+…+n!求s=1!+2!+3!+…+n!DoWhile<条件表达式><语句序列1>[Loop]<语句序列2>[Exit]<语句序列3>EndDo格式2:功能:Loop语句:强行返返回到循环开开始语句。Exit语句:强行跳跳出循环,接接着执行EndDo后的语句EndDo的后继语句循环体LoopExit循环条件ClearJi=0Ou=0Dowhile.t.Input””输入一个整数数:”ToaIfa=0ExitElseIfmod(a,2)=0ou=ou+1endif【例8.19】输入任意整数数,分别统计计偶数和奇数数的个数,输输入0为结束程序。。Ifmod(a,2)<>0ji=ji+1EndifEndifEnddo?”奇数的个数为为:”,ji?”偶数的个数为为:”,ouReturnFlag=0I=2Input"请输入一个大大于2的整数"ToNDoWhilei<nIfMod(n,i)<>0I=I+1LoopElseFlag=1ExitEndIfEndDo【例8.20】验证一个大于于2的整数n是否为素数。。一个数除了1和它本身之外外,没有其他他整数能整除除的整数为素素数。判别一一个大于2的整数n是否为素数可可以:用2,3,……,n-1作除数除n,只要有一个个能整除n,n就不是素数。。否则,n为素数。IfFlag=0?Str(n,3)+"是素数"Else?Str(n,3)+"不是素数"EndifIfn/i=int(n/i)【例9.21】全班50个同学报名参参加运动会。。如果是男同同学并且身高高又在180以上,输出““参加篮球比比赛”,否则则输出“参加加足球比赛””。如果是女女同学并且身身高在170以上输出“参参加模特大赛赛”,否则输输出“参加健健美操比赛””。最后统统计参加各项项比赛的人数数。else?"参加足球比赛赛!"B=B+1EndifElseif身高>=170?"参加模特比赛赛!"C=C+1else?"参加健美操比比赛!"D=D+1EndifEndIfSUM=SUM-1EndDo?"参加篮球比赛赛的人数",A?"参加足球比赛赛的人数",B?"参加模特比赛赛的人数",C?"参加健美操比比赛的人数",DA=0B=0C=0D=0Sum=50DoWhileSUM>0Acce"请输入你的性性别"TO性别Input"请输入你的身身高"TO身高If性别="男“if身高>=180?"参加篮球比赛赛!"A=A+12.步长循环步长循环控制制语句,即根根据循环变量量的初值、终终值和步长,,决定循环体体内语句的执执行次数。For<循环变量>=<初值>To<终值>[Step<步长>]<循环体>EndFor|Next格式:功能:循环体ExitLoop循环变量增加步长循环变量获得初值FT循环变量在终值内首先将初值赋赋给循环变量量,然后判断断循环条件是是否成立(若若步长为正值值,循环条件件为“循环变变量<=终值”;若步步长为负值,,循环条件为为“循环变量量>=终值”)。若若循环条件成成立,则执行行循环体,然然后循环变量量增加一个步步长值,并再再次判断循环环条件是否成成立,以确定定是否再次执执行循环体。。若循环条件件不成立,则则结束该循环环语句,执行行EndFor后面的语句。。1、省略Step步长,则步长长为默认值1;2、初值、终值值和步长都可可以是数值表表达式,当初初值小于终值值,步长必须须为正,当初初值大于终值值,步长必须须为负才可以以循环;3、可以在循环环体内改变循循环变量的值值,但会改变变循环执行次次数;4、Exit和Loop命令可以出现现在循环体内内。执行Loop命令时,结束束本次循环,,循环变量增增加一个步长长值,返回For循环头判断循循环条件是否否成立。执行行Exit命令时,程序跳出循环环,执行循环环尾后面的语语句说明:注意:1、循环终止的的条件是:““循环变变量的值超出出终值”,而而不是循环变变量的值等于于终值。2、超出的含义义:当<步长长>为正正时时,,检检查查<循环环变变量量>是否否大大于于<终值值>当<步长长>为负负时时,,检检查查<循环环变变量量>是否否小小于于<终值值>当步步长长为为0时,,循循环环永永不不终终止止。。For<循环环变变量量>=<初值值>To<终值值>[Step<步长长>]<循环环体体>EndFor|NextFor<循环环变变量量>=<初值值>To<终值值>[Step<步长长>]<循环环体体>EndFor|NextClearS=1I=1DoWhileI<=100S=S*II=I+1EndDo?"1*2*3*…………*100=",S【例8.22】】编程程求求1*2*3*…………*100之和和。。ClearS=1Fori=1to100s=s*IEndFor?"1*2*3*…………*100=",S【例8.23】】全班班50个同同学学报报名名参参加加运运动动会会。。如如果果是是男男同同学学并并且且身身高高又又在在180以上上,,输输出出““参参加加篮篮球球比比赛赛””,,否否则则输输出出““参参加加足足球球比比赛赛””。。如如果果是是女女同同学学并并且且身身高高在在170以上上输输出出““参参加加模模特特大大赛赛””,,否否则则输输出出““参参加加健健美美操操比比赛赛””。。最最后后统统计计参参加加各各项项比比赛赛的的人人数数。。else?"参加加健健美美操操比比赛赛!!"D=D+1EndifEndIfEndFor?"参加加篮篮球球比比赛赛的的人人数数",A?"参加加足足球球比比赛赛的的人人数数",B?"参加加模模特特比比赛赛的的人人数数",C?"参加健美美操比赛赛的人数数",DReturnA=0B=0C=0D=0ForI=1TO50Acce"请输入你你的性别别"TO性别Input"请输入你你的身高高"TO身高If性别="男"DoCaseif身高>=180?"参加篮球球比赛!!"A=A+1else?"参加足球球比赛!!"B=B+1EndifElseif身高>=170?"参加模特特比赛!!"C=C+1【例8.24】输入任意意10个整数,,将所有有正整数数显示出出来。ClearFori=1to10Input““输入一个个整数””ToaIfa>0?aElseLoopEndifEndFor在For循环语句句中执行行Loop语句,将将会先修修改循环环变量的的值,然然后转向向循环语语句头部部。3.扫描描循环扫描循环环控制语语句,即即根据表表中的当当前记录录指针决决定循环环体内语语句的执执行次数数,扫描描当前表表中满足足表中的的记录。。Scan[<范围>][For<条件表达达式1>][While<条件表达达式2>]<命令行序序列>EndScan格式:功能:执行该语语句时,,记录指指针在当当前表的的指定范范围内自自动从上上往下依依次移到到满足条条件的记记录上,,并对每每一条记记录执行行循环体体内的命命令。(1)<范围>的默认值值是All。(2)当指针针移到文文件尾时时,自动动退出循循环。说明:循环体TFEof()【例8.25】用扫描循循环控制制语句,,统计人人才档案案数据表表中男同同学的人人数。clearRc=0Use人才档案案ExclusiveScanallfor性别=“男”rc=rc+1EndScan?“男同学的的人数为为",rcUse【例8.26】用扫描循循环控制制语句,,显示人人才档案案数据表表中年龄龄大于等等于25的记录。。clearUse人才档案案ExclusiveScanallforyear(date())-year(出生日期期)>=25display编号,姓名EndScanUse练习:下下列程序序段执行行后,输输出结果果是:记录号名名称1男子排球球2女子排球球3男子足球球4女子足球球5男乒乓球球Use运动员表表ExclusiveGo2ScanNext4ForLeft(名称,2)=“男"IfRight(名称,2)=“球"ExitEndifEndscan?名称男子足球球4.多重循环环如果在一一个循环环内包含含另一个个循环结结构,则则称为多多重循环环,或循循环嵌套套,嵌套套的层数数可以根根据需要要而定,,嵌套一一层称为为二重循循环,嵌嵌套二层层称为三三重循环环。下面面是几种种常见的的二重嵌嵌套形式式:1.ForI=….…..ForJ=…….….NextJ…..NextI2.FORI=….…..DOWHILE…….….ENDDO…..NEXTI[[[[3.DOWHILEL….…..DOWHILE……….ENDDO…..enddo[[对于循循环的的嵌套套,要要注意意以下下事项项:(1)内循环环变量量与外外循环环变量量不能能同名名;(2)外循环环必须须完全全包含含内循循环,,不能能交叉叉;(3)不能从从循环环体外外转向向循环环体内内,也也不能能从外外循环环转向向内循循环。。ForAForBForC……NextCNextBNextA[[[ForAForBForC……NextBNextANextC[[[不能交交叉正确的的嵌套套错误的的嵌套套【例8.27】】分析下下面程程序的的运行行结果果:clearFori=1To3Forj=5To7?I,jNextjNextiReturn[[151617252627353637对于两两个具具有调调用关关系的的程序序文件件,常常称调调用程程序为为主程程序,,被调调用程程序为为子程程序。。子程程序的的建立立和一一般命命令文文件的的建立立方法法相同同,都都是ModifyCommand,文件件默认认的扩扩展名名还是是Prg。调用用方法法是在在主程程序中中用Do命令。。8.4.1主程序序和子子程序序Do子程序序文件件名ModifyCommand〈〈过程文文件名名〉文件格格式::与程序序一样样主程序序调用用:返回主主程序序:Return[ToMaster]建立子子程序序:没有可可选项项,返返回到到调用用处,,有可可选项项,返返回到到调用用的最最高一一级。。1.子程序序的调调用和和返回回8.4过程和和用户户自定定义函函数【例8.28】】分析下下面程程序的的运行行结果果:&&MAIN.PRGClearDoJADoJBDoJCReturn&&JA.RPG?"***"DoJBDoJCReturn&&JB.RPG?"#####"Return&&JC.RPG?"*******"ReturnToMaster【例8.29】】利用子子程序序计算算圆的的面积积:*主程程序::DoWhile.T.ClearWait““是否要要计算算圆的的面积积(Y/N)?””TojaIfUpper(ja)=““Y””&&为“N”时结束束程序序Dozcx1.prgElseExitEndifEnddoReturn*子程程序zcx1:ClearInput"输入圆圆的半半径:"tobjS=3.14*bj**2?"圆的面面积为为:",sReturn2.带参数数的子子程序序调用用调用子子程序序时参参数表表中的的参数数要传传送给给子程程序,,子程程序也也必须须设置置相应应的参参数接接受语语句。。Parameters可以完完成此此项功功能,,但是是必须须是子子程序序的第第一条条语句句。主程序序调用用:子程序序接收收:Do<过程文文件名名〉With<实际参参数表表>Parameters<形式参参数表表>各种各各类型型的常常数、、有具具体值值的变变量没有具具体指指的变变量,,个数数、位位置和和类型型要和和主程程序的的实际际参数数一样样,但但是名名字可可以不不一样样。例如:主程序序:DozcxWith““张三””,89,性别别子程序序:Parametersa,b,c变量姓姓名必必须是是赋过过值的的变量没没有具具体值值【例8.30】】利用子子程序序计算算圆的的面积积:*主程程序::Clearymj=0&&初始化化用于于接收收圆面面积的的变量量Input““请输入入圆的的半径径:“TobjDozcx2Withbj,ymj&&带参数数调用用子程程序@7,10Say"圆的面面积为为:"+Str(ymj,10,2)Return*子程程序zcx2:Parameterscj,sS=3.14*cj**2Return变量bj初始值值为0计算后后的面面积函数名名((实实际参参数表表)3.自定义义函数数自定义义函数数与子子程序序的区区别在在于自自定义义函数数必须须返回回一个个函数数值,,而子子程序序则无无此限限制。。主程序序调用用格式式:[Function<函数名名>][Parameters<形式参参数表表>]命令序序列Return<表达式式>如果是是单独独的程程序,,就可可以省省略这这一句句,如如果自自定义义函数数和主主程序序是一一个程程序,,不能能省
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水质检测员技术及理论知识试题附含答案
- 企业信息安全保障流程
- 【八下HK数学】安徽省合肥市第四十六中学南校区2025-2026学年第二学期期中检测八年级数学试卷
- 2025新纪检监察业务知识考试题库及答案
- 2026年区块链智能合约开发服务合同
- 养殖业保险代办服务协议
- 2026农业食品行业市场供需分析及投资评估规划分析研究报告
- 2026农业气象指数保险产品设计创新
- 2026农业废弃物资源化综合应用模式创新及循环经济产业链投资布局规划
- 2026克羅地亞酒類生產行業市場需求變化與發展趨勢深度解析
- 2026年交管12123驾照学法减分完整版练习题库及1套完整答案详解
- 2026年五一节前全体员工安全培训课件
- 初中数学七年级下册问题解决策略专题“特殊化思想:从特殊到一般的桥梁”创新教学设计
- 2026年黑龙江省《保密知识竞赛必刷100题》考试题库附参考答案详解(精练)
- 2026江苏苏州工业园区街道协管员招聘37人农业笔试备考试题及答案解析
- 2026年执业医师定期考核真考试题库带答案详解(A卷)
- 国家义务教育质量监测八年级劳动素养综合测试题
- FZ/T 64034-2014纺粘/熔喷/纺粘(SMS)法非织造布
- CB/T 3194-1997船体建造工艺符号
- 《我变成了一棵树》-示范课件
- DB44∕T 2171-2019 河道淤泥固化处置技术规范
评论
0/150
提交评论