您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 05第五章 结构化程序设计
1第五章结构化程序设计目录上页下页退出2第一节程序文件一、VisualFoxPro程序的几点说明1.注释语句【格式1】*注释内容【格式2】&&注释内容【功能】增强程序文件的易读性2.对话开关语句【格式】SETTALKOFF|ON【功能】关闭或打开命令执行时的对话开关3.命令的分行VisualFoxPro程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。目录上页下页退出3二、程序文件的建立、修改与执行1.建立或修改程序文件1)命令方式:MODIFYCOMMAND〈程序文件名〉2)菜单方式:打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再选择“新建文件”目录上页下页退出43)项目管理器:选定项目管理器“代码”选项卡中的“程序”项,选择“新建”命令。2.保存程序文件程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的默认扩展名是.PRG。目录上页下页退出53.执行程序文件程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。1)菜单方式①单击【程序】→【运行】菜单项,打开“运行”对话框;②从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件2)命令方式【格式】DO[盘符][路径]文件名【功能】执行指定盘符、路径下的程序文件当程序文件被执行时,文件中包含的命令将被依次执行,直到所有命令被执行完毕。目录上页下页退出6第二节程序的基本结构由顺序、分支、循环三种基本结构构成。(1)顺序结构,如图6-1所示,该结构先执行A操作,再执行B操作。(2)分支结构:如图6-2所示,该结构中P代表一个条件,当条件P成立时执行A操作,否则执行B操作。图6-1顺序结构流程图图6-2分支结构流程图目录上页下页退出7(3)循环结构:循环结构则能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。目录上页下页退出8三条输入命令的异同ACCEPT[提示信息]TO内存变量ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束。WAIT[提示信息][TO内存变量]WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键。INPUT[提示信息]TO内存变量INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,如果是字符串,需用定界符,输入完毕按回车键结束。目录上页下页退出9分支结构形式有如下三种:1单向分支语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。【语句格式】IF〈条件表达式〉〈命令行序列〉ENDIF【语句功能】该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈命令行序列〉;否则,执行ENDIF后面的第一条命令。三、分支结构条件式达式真语句序列假ENDIF之后语句目录上页下页退出10【例6-9】求一元二次方程AX2+BX+C=0的实根。程序文件名为PROG9.PRG。SETTALKOFFCLEARINPUTTOAINPUTTOBINPUTTOCZ=B^2-4*A*CIFZ=0X1=(-B+SQRT(Z))/(2*A)X2=(-B-SQRT(Z))/(2*A)?X1,X2ENDIFSETTALKON目录上页下页退出112.双向分支双向分支语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。【语句格式】IF〈条件表达式〉〈命令行序列1〉ELSE〈命令行序列2〉ENDIF【语句功能】该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈命令行序列1〉中的命令;否则,执行〈命令行序列2〉中的命令;执行完〈命令行序列1〉或〈命令行序列2〉后都将执行ENDIF后面的第一条命令。真条件式假语句序列2语句序列1ENDIF后面语句目录上页下页退出12【例6-10】编写一密码校验程序(假设密码为ABC)。程序文件名为PROG10.PRG。SETTALKOFFCLEARACCEPT“请输入您的密码:”TOAAAIFAAA=”ABC”CLEAR?”欢迎使用本系统!”ELSE?”密码错误!”ENDIFSETTALKON目录上页下页退出133.多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。【语句格式】DOCASECASE〈条件表达式1〉命令行序列1〉CASE〈条件表达式2〉命令行序列2……CASE〈条件表达式N〉命令行序列N[OTHERWISE〈命令行序列N+1〉]ENDCASE真条件式2语句序列1ENDCASE后面语句条件式1Otherwise条件式2真语句序列2真语句序列n-1有语句序列n无目录上页下页退出14【语句功能】该语句根据给出的N个〈条件表达式〉的值,选择N+1个〈命令行序列〉中的一个执行。当所有CASE中〈条件表达式〉的值都是假时,如果有OTHERWISE项,则执行〈命令行序列N+1〉,再执行ENDCASE后面的第一条命令;否则,直接执行ENDCASE后面的第一条命令。【例6-11】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为PROG11.PRG。0P<800R=0.05800≤P<20000.082000≤P<50000.1P≥5000目录上页下页退出15SETTALKOFFCLEARINPUT“请输入收入:”TOPDOCASECASEP800R=0CASEP2000R=0.05CASEP5000R=0.08OTHERWISER=0.1ENDCASETAX=P*R?”税金为:”,TAXSETTALKON目录上页下页退出16四、循环结构1.DOWHILE循环语句【格式1】DOWHILE条件表达式语句序列ENDDOENDDO后面的语句条件表达式式真循环体假目录上页下页退出17【格式2】DOWHILE条件表达式语句序列1[LOOP]语句序列2[EXIT]语句序列3ENDDOENDDO后面的语句条件表达式式真假循环体[LOOP][EXIT]•LOOP语句:强行返回到循环开始语句。•EXIT语句:强行跳出循环,接着执行ENDDO后的语句目录上页下页退出18【例6-12】编程求1+2+3+……+100之和。程序文件名为PROG12.PRG。SETTALKOFFCLEARS=0I=1DOWHILEI=100S=S+II=I+1ENDDO?”1+2+3+……+100=”,SSETTALKON目录上页下页退出19【例6-13】逐条显示在STUDENT数据库的STUD表中性别为“男”的所有记录。程序文件名为PROG13.PRG。SETTALKOFFCLEARCLOSEDATABASEALLOPENDATABASESTUDENTUSESTUDDOWHILE.NOT.EOF()IF性别=”男”DISPLAYENDIFSKIPENDDOCLOSEDATABASEALLSETTALKON目录上页下页退出20【例6-14】编程显示STUDENT数据库的STUD表中除“孙业”以外的所有记录。程序文件名为PROG14.PRG。SETTALKOFFCLEAR]CLOSEDATABASEALLOPENDATABASESTUDENTUSESTUDDOWHILE.NOT.EOF()IF姓名=”孙业”SKIPLOOPENDIFDISPLAYSKIPENDDOCLOSEDATABASEALLSETTALKON目录上页下页退出212.FOR循环语句【格式】FOR循环变量=初值TO终值[STEP步长]语句序列1[LOOP]语句序列2[EXIT]语句序列3ENDFOR/NEXTFOR语句的执行流程如右图所示。目录上页下页退出22使用FOR循环语句的有关说明:①省略STEP步长,则〈步长〉为默认值1;②〈初值〉、〈终值〉和〈步长〉都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;③EXIT和LOOP命令可以出现在循环体内。执行LOOP命令时,结束本次循环,循环变量增加一个步长值,返回FOR循环头判断循环条件是否成立。执行EXIT命令时,程序跳出循环,执行循环尾后面的语句。目录上页下页退出233.“指针”型循环控制语句“指针”型循环控制语句,即根据用户设置的表中的当前记录指针,决定循环体内语句的执行次数据。【语句格式】SCAN[FOR〈条件表达式〉]〈命令行序列〉ENDSCAN【语句功能】该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,结合(条件表达式),执行(命令行序列),记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。目录上页下页退出24【例6-18】输出STUDENT数据库的STUD表中所有男生的姓名和地址。程序文件名为PROG18.PRG。SETTALKOFFCLEARCLOSEDATABASEALLOPENDATABASESTUDENTUSESTUDSCANFOR性别=“男”?姓名,地址ENDSCANCLOSEDATABASEALLSETTALKON目录上页下页退出254.使用循环语句时应注意的几点(1)DOWHILE和ENDDO、FOR和ENDFOR、SCAN和ENDSCAN必须配对使用。(2)循环变量〉应是数值型的内存变量或数组元素。(3)EXIT和LOOP命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。EXIT的功能是跳出循环,转去执行ENDDO、ENDFOR、ENDSCAN后面的第一条命令;LOOP的功能是转回到循环的开始处,重新对“条件”进行判断。目录上页下页退出26第三节过程的模块化VFP模块化在具体实现上提供三种形式,它们是子程序、过程和函数。一子程序子程序也叫外部过程,是以程序文件(.PRG)的形式单独存储在磁盘上。子程序的结构与一般的程序文件一样,可以用MODIFYCOMMAND命令来建立、修改、和存盘,扩展名也默认为.PRG。子程序与其他程序文件的唯一区别是其末尾或返回处必须有返回语句RETURN。子程序的调用:DO程序文件名目录上页下页退出27二、过程(内部)内部过程:把多个过程组织在一个文件中(这个文件称之为过程文件),或者把过程放在调用它的程序文件的末尾。过程文件格式为:PROCEDURE过程名[PARAMETER参数表]命令序列[RETURN[表达式]]过程有两种存放方式:(1)把所有的过程集中写入一个被称为过程文件(.prg文件)的磁盘文件中(2)直接把过程写在调用它的主程序文件中,主程序被打开时,过程同时被调入内存(调用时可节省时间)。(3)如果缺省RETURN,则在过程尾部自动执行一条隐含的RETURN命令,若不带表达式则返回逻辑值.T.。目录上页下页退出28【例6-22】建立如下程序文件,过程放在程序文件中。*MAIN.PRGSETTALKOFF?”正在执行主程序”DOSUB1SETTALKONProcedureSUB1?”正在执行SUB1”RETURN目录上页下页退出29三、过程文件的建立过程文件的建立方法与程序文件相同。可用MODIFYCOMMAND过程文件名命令或调用其他文字编辑软件来建立。过程文件的结构一般为:PROCEDURE过程名1命令序列1RETURNPROCEDURE过程名2命令序列2RETURN…PROCEDURE过程名N命令序列NRETURN目录上页下页退出301.过程文件的调用调用某过程文件中的过程时,必须先打开该过程文件,打开过程文件命令为:【格式】SETPROCED
本文标题:05第五章 结构化程序设计
链接地址:https://www.777doc.com/doc-6153641 .html