您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > VFP第6章2009 第6章 结构化程序设计
VisualFoxpro程序设计上海交通大学出版社11:522第6章结构化程序设计程序设计概念使用计算机解决实际问题,首先要对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。算法算法是解决问题的逻辑步骤,是对特定问题求解步骤的一种描述。只有通过算法能够描述的问题,才能通过计算机求解。对同一个问题,可以有不同的解题方法和步骤,也就有不同的算法。计算机算法:用程序解决问题的逻辑步骤,是指令的有限序列。可分为科学计算领域(处理数值数据)和数据处理领域(处理非数值领域)两大类。算法的基本特征◆输入:有零个或多个数据的输入。◆输出:有一个或多个数据的输出。◆有穷性:一个算法应包含有限的操作步骤,而不能是无限的。◆确定性:算法中每一个步骤应当是确定的,不应是含糊、模棱两可的。◆可行性:算法中每一个步骤应当能有效地执行,并得到确定的结果。11:523第6章结构化程序设计算法的表示◆用自然语言表示:自然语言可以是中文、英文、数学表达式等,通俗易懂但表达文字可能过长,表示不太严格,对分支和循环结构表示很不方便。【例】求数列1+2+…+m的值N,当N10000时结束。算法可表示如下:①N=0;②m=0;③m加1;④N加m⑤判断N是否大于10000,如果满足条件则结束,不满足条件则再从③开始继续执行。【例】对于一个大于或等于n的正整数,判断它是不是一个素数,算法可表示如下:①输入n的值;②i=2;③n被i除,得余数r;④如果r=0,表示n能被i整除,则打印“n不是素数”,算法结束;否则执行⑤;⑤i+1→i;⑥如果i≤n-1,返回③;否则打印“n是素数”;算法结束(或如果i≤,返回③;否则打印“n是素数”;算法结束)。n11:524第6章结构化程序设计◆用流程图表示:用一些符号来表示各种操作,形象直观、简单,易于理解、修改和交流。处理框判断框终点框I/O框流程线准备框【例】用框图描述如下函数的求解过程:Y=5(x≥0)-5(x0)startInputxX≥0?y=5y=-5OutputyendNY◆用伪代码表示利用介于自然语言和计算机语言之间的文字和符号来描述算法,它不用图形符号,这种表示方法书写方便,格式紧凑,容易理解,也便于向计算机语言算法转换。【例】用伪代码表示计算10!的算法:Begin(开始)置t的初值为1(1→t)置i的初值为2(2→i)当(while)i=10,执行(do)Begin使t=t×I使i=i+1End打印t的值(printt)End(结束)11:5256.1程序文件程序文件建立与修改:通过菜单、项目管理器或在命令窗口中输入命令,打开编辑命令的文本编辑窗口。命令格式:MODIFYCOMMAND文件名功能:打开文本编辑窗口,用来建立或修改程序文件,文件名由用户指定,缺省的扩展名为.PRG。程序中每条命令都以回车键结尾,一行只能写一条命令。若命令需分行书写,应在一行终了时键入续行符“;”,然后按回车键。程序的运行命令:通过菜单、项目管理器或在命令窗口中输入命令,可以运行程序。命令格式:DO文件名DO命令默认运行.PRG程序(扩展名可省略),如要运行其它程序,文件名中须包括扩展名。程序结尾的专用命令:RETURN&&结束程序执行并返回到调用它的上级环境中继续。允许缺省。CANCEL&&终止程序的运行并清除程序的私有变量,返回到命令窗口。QUIT&&退出VFP系统,返回到操作系统状态。第6章结构化程序设计11:526第6章结构化程序设计非格式输入命令:命令格式:Input[”提示信息”]To内存变量功能:在屏幕上显示“提示信息”后,暂停程序运行,等待从键盘输入数据,一旦敲“Enter”键后,停止输入数据,并将之前输入的数据赋给“To”后面指定的内存变量。输入的数据可以是常见的C、N、D、L类型,命令格式:Accept[”提示信息”]To内存变量功能:在屏幕上显示“提示信息”后,暂停程序运行,等待从键盘输入数据,一旦敲“Enter”键后,停止输入数据,并将之前输入的数据赋给“To”后面指定的内存变量。输入的数据只能是字符型数据,因此不需加定界符。非格式输出命令:命令格式:?|??表达式表功能:一个问号是从屏幕下一行的第一列开始显示表达式表的结果,二个问号是从屏幕当前行、当前列开始显示表达式表的结果。“表达式表”可以由一个或多个表达式组成的输出项,若多个表达式,则表达式之间用逗号“,”分隔。(建立p6-1.prg)程序注释命令:命令格式:note|*[注释]&&[注释]功能:第一个命令在程序中加注释行信息,第二个命令在命令语句的尾部加注释信息。注释是不可执行的部分,它对程序的运行结果不会产生任何影响。11:527信息对话框函数函数格式:MESSAGEBOX(字符表达式1[,数值表达式[,字符表达式2]])数值对话框按钮0仅有“确定”按钮1“确定”和“取消”按钮2“放弃”、“重试”和“忽略”按钮3“是”、“否”和“取消”按钮4“是”和“否”按钮5“重试”和“取消”按钮图标16“停止”图标32问号48惊叹号64信息(i)图标默认按钮0第1个按钮256第2个按钮512第3个按钮返回数值按下按钮1确定2取消3放弃4重试5忽略6是7否功能:供用户定义信息对话框,按下一次按钮即返回一个数值。字符表达式1用于指定在对话框中显示的信息文本。字符表达式2用于指定对话框标题栏的显示文本。数值表达式用于根据表中的内容设定对话框中的按钮、图标和默认按钮,缺省该参数表示取0。函数返回值是一个数值,用户将根据操作时点击的按钮来获得相应的返回值,编程时则根据返回值来设置动作。第6章结构化程序设计Ans=messagebox(”是否确认删除文件?”,4+32+0,”删除文件”)11:5286.2程序的控制结构1.顺序结构这是最简单的一种结构,语句或基本结构的执行按照它们出现的先后顺序。A块执行完毕后,再执行B块,该结构只有一个入口,只有一个出口。A块、B块可以是一条语句,也可以是一个基本结构。(建立p6-2.prg)AB条件B1B2真假条件B1真假分支语句格式:IF逻辑表达式语句序列1[ELSE语句序列2](建立p6-3.prg)ENDIF该结构的特点是根据条件真假,选择两个或两个以上分支中的一个分支来执行。选择结构有两种变形;一是没有B2块,条件成立时执行B1块,条件不成立时直接转到B处;二是多重选择,即有三个以上的分支供选择。第6章结构化程序设计2.选择结构11:529【例】试编一程序,删除磁盘上任一文件。【例】试编一程序,根据输入的三角形边长,求三角形面积。第6章结构化程序设计*p4-4.prgcleaaccept”请输入文件名(包括扩展名):”tobmbm=allt(bm)Iffile(“&bm”)deletefile&bmElsemessagebox(”你要删除的文件不存在,是否输入有误!”)Endifretu*p4-5.prgcleainput”请输入边长a:”toainput”请输入边长b:”tobinput”请输入边长c:”tocifa+bcorb+caorc+abmessagebox(”输入的三个边长不能组成三角形”)retuendifl=(a+b+c)/2?”三角形面积s=”,sqrt(l*(l-a)*(l-b)*(l-c))retu11:5210B1B2BnB情况1其他条件1条件2条件n情况2……情况nNN多分支语句格式:DOCASECASE逻辑表达式1语句序列1CSAE逻辑表达式2语句序列2…CASE逻辑表达式n语句序列n[OTHERWISE语句序列n+1]ENDCASE(建立p6-6.prg)条件真B块[LOOP][EXIT]假3.循环结构该结构的特点是根据条件,重复执行一个语句块。当给定条件满足时,执行B块,执行B块后再返回测试条件是否满足,如此循环反复执行B块,直到条件测试不满足为止。B块可以是单个语句,也可以是基本块。该结构只有一个入口,只有一个出口。第6章结构化程序设计11:5211第6章结构化程序设计条件循环语句格式DOWHILE条件语句序列1[EXIT][语句序列2][LOOP][语句序列3]ENDDO【例】编程计算S=1+2+3+…+100,并求1~100之间奇数之和。【例】编程逐行显示学生表中入学成绩大于600分的学生学号、姓名、性别和入学成绩。clearusestudentsgotopdowhilenoteof()ifrxcj600?xh,xm,xb,rxcjendifskipenddouse*p6-11.prgcleastore0toi,s,tdowhilei100i=i+1s=s+iifint(i/2)=i/2loopendift=t+1enddo?1+2+3+…+100=,s?1~100奇数和为:,tretu11:5212第6章结构化程序设计FOR循环语句格式FOR循环变量=初值TO终值[STEP步长值]语句序列1[EXIT][语句序列2][LOOP][语句序列3]ENDFOR|NEXT*p6-9cleas=0fori=1to100s=s+inext?s=,sretu【例】编程求s=1+2+3+…+100。【例】编程输出如右侧图案。cleafori=1to4?space(4-i)forj=1to2*i-1??*nextnextfori=1to3?space(i)forj=1to6-(2*i-1)??*nextnextretu【例】编程输出如下图乘法口诀表。note打印乘法口诀表clearfora=1to9?forb=1toap=a*b??str(a,1)+×+str(b,1)+=+str(p,2)+space(2)nextnextretu11:5213第6章结构化程序设计扫描循环语句格式SCAN[范围][FOR逻辑表达式1]语句序列1[EXIT][语句序列2][LOOP][语句序列3]ENDSCAN【例】在Students.DBF中找出所有入学成绩在590至600的学生的学号、姓名、性别、入学成绩,并要求在各输出行下显示一行虚线。*p6-12.prgcleausestudents?replicate(-,30)?学号,姓名,性别,入学成绩?replicate(-,30)scanifbetween(rxcj,590,600)?xh,xm,xb,rxcj?replicate(-,30)endifendscanuseretu【例】在逐行输出Students表中女团员的姓名、性别、出生日期、是否团员和班号的信息。*p6-11.prgcleaUSEstudents?姓名,性别,出生日期,是否团员,班号?replicate(-,32)SCANFORxb=女andynty?xm,xb,csrq,ynty,bhENDSCANUSEretu11:5214多模块程序模块是可以命名的一个程序段,可指主程序、子程序或自定义函数。对于两个具有调用关系的程序文件,常称调用程序为主程序,被调用程序为子程序,子程序的末尾中返回处必须有返回语句。*MAIN.PRG……DOB……RETURN*B.PRG……DOC1……DOC2……RETURN*C1.PRG……RETURN*C2.PRG……RETURNTOMASTER第6章结构化程序设计11:5215第6章结构化程序设计【例】设计一个计算圆面积的子程序,并要求在主程序中带参数调用它*js.prgparametersr,ss=pi()*r*rretu*p6-13.prgcleaymj=0input请输入半径:tobjdojswithbj,ymj?ymj=,ymjretu类型格式命令子程序[PARAMETERS参数表]命令序列[RETURN]调用语句格式:DO程序名1|过程名[WITH参数表]返回语句格式:RETURN[TOMASTER|TO程序文件名
本文标题:VFP第6章2009 第6章 结构化程序设计
链接地址:https://www.777doc.com/doc-3369410 .html