结构化程序设计讲课文档.ppt

上传人:李司机 文档编号:4104415 上传时间:2023-04-04 格式:PPT 页数:71 大小:1.35MB
返回 下载 相关 举报
结构化程序设计讲课文档.ppt_第1页
第1页 / 共71页
结构化程序设计讲课文档.ppt_第2页
第2页 / 共71页
结构化程序设计讲课文档.ppt_第3页
第3页 / 共71页
结构化程序设计讲课文档.ppt_第4页
第4页 / 共71页
结构化程序设计讲课文档.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《结构化程序设计讲课文档.ppt》由会员分享,可在线阅读,更多相关《结构化程序设计讲课文档.ppt(71页珍藏版)》请在三一办公上搜索。

1、结构化程序设计,第1页,共71页。,(优选)结构化程序设计,第2页,共71页。,一、程序文件的建立 1命令方式 Modify Command 2菜单方式 单击系统菜单“文件”、“新建”,弹出“新 建”窗口。在“新建”窗口中,选择“程序”、“新建文 件”,进入“程序文件编辑”窗口。在“程序文件编辑”窗口中,逐条输入命令行。结束后,单击系统菜单“文件”、“保存”,在 窗口的“保存文档为:”对话框中,输入程序文 件名,默认的文件类型为*.Prg,单击“保存”按钮,建立程序文件的操作结束。,第3页,共71页。,二、程序文件的执行 程序文件保存在磁盘上,在需要运行时可从磁盘调入内存执行。注意:程序运行后

2、,会自动产生一个文件类型为.Fxp的同名的编译程序。1命令方式 Do程序文件名2菜单方式 单击系统菜单的“程序”、“运行”,在弹出的“运行”窗口中,选择路径、双击需要运行的程序名。,第4页,共71页。,二、程序设计中的常用语句 程序设计中的常用语句包括输入语句、输出语句、终止程序执行语句、清屏与注释语句。1、输入、输出语句 输入语句是程序运行时人机交互的界面,用于输入程序运行时所需要的数据。而输出语句是用于输出程序运行的结果。,第5页,共71页。,1输入语句 输入语句提供了在程序运行的过程中暂停程序的执行,等待用户从键盘上输入数据,当用户以回车键结束输入时,系统将表达式的值存入指定的内存变量,

3、程序继续运行。输入语句有非格式化输入命令和格式化输入命令两种。(1)非格式化输入命令 非格式化输入命令共有三条:Input、Accept和Wait。Input To内存变量Accept To内存变量Wait To内存变量,第6页,共71页。,参数说明:Input命令能接受除备注型、通用型以外的数据类型,但数据为字符型、日期型或逻辑型时应使用相应的定界符。Accept命令只接受字符型数据。输入字符串时,不需要用定界符。Wait To内存变量命令只接受单个字符。如果执行不带任何参数的Wait命令会弹出“按任意键继续”的提示。,第7页,共71页。,例9-1:在学生档案表中,按学号直接定位查询学生记录

4、。Use 学生档案表accept 请输入查询学生的学号:To A1Locate For 学号=A1Display例9-2:在学生档案表中,按年龄顺序定位查询学生记录。Use 学生档案表 Input“请输入查询学生的年龄:”To A2 Locate For 年龄=A2 Display Continue Display,第8页,共71页。,例9-3:在学生档案数据表中,以性别和年龄为表达式索引定位查询学生记录。Use 学生档案表Index On 性别+Str(年龄,2)To XbnlInput“请输入查询学生的年龄:”To A4Accept“请输入查询学生的性别:”To A5Seek A5+Str

5、(A4,2)Display,第9页,共71页。,(2)屏幕格式输入语句 在指定行、列的位置,从键盘上为变量赋值。这个变量可以是内存变量,也可以是字段变量。如果是内存变量,必须事先定义好。如果是字段变量,必须事先打开相应的数据表。Say Get,第10页,共71页。,参数说明:Say:作为被编辑的变量前面出现的提示,一般都是用字符串表示。Get:变量可以是内存变量,也可以是字段变量。若是内存变量必须在使用前先定义。如果是字段变量,则要先打开相应的数据表。数据类型可以是数值型、字符型、日期型、逻辑型或备注型。Get命令,必须用Read语句来激活才能完成对数据的编辑。多个Get命令,可以用一个REA

6、D语句来激活。,第11页,共71页。,例9-5:用屏幕格式输入语句输入数值,计算公式C=2A+3B的值。A=0 B=0 10,20 Say 请输入A的值:Get A 11,20 Say 请输入B的值:Get B Read?C=2a+2b=+Str(2*A+2*B),第12页,共71页。,思考:请编辑一个程序,能根据学号和课程代码来修改成绩。,Xh=Space(7)Kcdm=Space(4)cj=0 Use E:课件vf程序设计VF2006-2007.2vfsy学生成绩表 Excl 10,20 Say 请输入要修改成绩的学号 Get Xh 12,20 Say 请输入要修改成绩的课程代码 Get

7、Kcdm Read Locate For 学号=Xh.And.课程代码=Kcdm 14,20 Say 请输入修改成绩 Get 成绩 Read use,第13页,共71页。,例9-8 用屏幕格式输入法设计一个程序,向“专业代码表”中增加一条新记录。Use 专业代码表Append BlankGoto Bottom10,20 say 专业代码:get 专业代码12,20 say 专业名称:get 专业名称Readuse,第14页,共71页。,2输出语句(1)非格式化输出命令 格式:?表达式表 格式2:?表达式表 格式3:?表达式表 计算表达式的值并输出。参数说明:“?”表示在当前行的下一行的首位输出

8、,”?”表示在当前行光标所处输出,”?”表示向打印机输出。如果是字符、日期、逻辑常量应使用定界符。如果是一个表达式的各部分的数据类型必须一致。如果是,各表达式之间用逗号“,”分隔。,第15页,共71页。,例9-9:显示当前的日期和时间与表达式的值。?”今天的日期是:”,DATE(),”时间是:”,TIME()&如果用“+”连接该如何表达 A=10 B=20?“A*10-B=”,Str(A*10-B),Space(2)?“A*20-B=”+Str(A*20-B,4)例9-10:显示字符型表达式的值。?“祝贺”+北京申奥+成功&字符串的连接,第16页,共71页。,(2)屏幕格式输出命令 SAY 在

9、指定行、列位置上输出表达式的值,输出数据的格式由Picture选项或Function选项中的控制符控制。Size、Font、Style和Color选项是用来控制输出结果的字符范围、字体、字型、字号大小和颜色的。参数说明:Say:表达式可以是常量(字符、日期、逻辑常量需要使用相应的定界符)、内存变量、字段变量以及由它们组成的表达式。表达式只能是一个,而且,表达式的各部分的数据类型必须一致。,第17页,共71页。,例9-11:显示字符串常数。3,5 Say 这是一个显示字符串常数的例子“例9-12:显示学生档案表的第四条记录的字段内容。Use 学生档案表 Goto 4 6,6 Say“学号::”+

10、学号 7,6 Say“姓名::”+姓名 9,6 Say“入学年龄:”+Str(入学年龄,2)&数据类型必须一致 10,6 Say“出生日期:”+Dtoc(出生日期),第18页,共71页。,例9-13:屏幕格式输出命令常用来制作应用系统的主菜单。Clear 2,30 Say*3,30 Say 学籍档案管理系统 4,30 Say 1.建立数据表 5,30 Say 2.添加数据 6,30 Say 3.查询数据 7,30 Say 4.退出系统 8,30 Say*11,30 Say 请输入相应的操作序号:Get ARead,第19页,共71页。,二、清屏与注释语句1清屏语句 Clear 清除屏幕上所有显

11、示的内容。2注释语句 Note*&Note和“*”注释语句在程序中单独作为一行,作为程序的注释。&注释语句一般写在命令的后面,作为该命令的注释。,第20页,共71页。,三、终止程序执行语句1Return 或Cancel 终止程序的执行,关闭打开的命令文件,返回到 Foxpro系统的命令窗口。2Quit 终止程序的执行,关闭打开的命令文件,返回到windows操作系统状态。3Retry 终止程序的执行,返回到调用行本身,可以实现程序的重复调用。,第21页,共71页。,8-3 结构化程序设计概述 所谓结构化,就是指程序或算法的控制结构必须并且只能由顺序结构,分支结构和循环结构所构成,程序的执行是由

12、这三种结构来控制的。这三大基本程序结构可以设计任何复杂问题的程序。一、顺序结构程序设计 顺序结构是最基本、最普通的结构形式。运行时,也是按照命令书写时的先后次序来执行,在程序执行的过程中不改变命令执行次序的一种结构。,第22页,共71页。,例9-15:编写一个求梯形面积的程序。Input 请输入梯形的上底:To M Input 请输入梯形的下底:To N Input 请输入梯形的高:To H?梯形面积=,Str(M+N)*H/2,10,2)Return例9-16:编写一个在“学生档案表”中查询年龄大于18岁的98级浙江籍的学生记录的程序(注意:假设数据表字段中只有出生日期而无年龄字段、学号前二

13、位为年级)。ClearUse 学生档案表List For Year(Date()-Year(出生日期)23.And.Subs(学号,1,2)=98.And.籍贯=浙江UseReturn,第23页,共71页。,二、分支选择结构 编写顺序结构程序虽然简单,但在实际应用中,经常需要对事物做出一定的判断,并依据判断的结果采取不同的处理行为。例如:求圆的面积,对半径要做处判断,是否大于0,如果是才能参加运算,否则不能运算,输出参数错误信息。分支结构有三种基本格式:单分支选择、二分支选择(选择函数)和多分支选择。,第24页,共71页。,1单分支选择 If Endif Return参数说明:单分支选择结构是

14、当条件表达式为真时,执行,然后,再执行EndIf后面的。如果 条件表达式为假,则直接执行EndIf后面的。IF和EndIf必须成对出现,缺一不可。可以是表达式或表达式的逻辑组合,表 达式的值必须是逻辑值。,第25页,共71页。,例9-17:从键盘上输入一个数,若是偶数,则输出。Input“请输入数据:”To X If Int(X/2)=X/2?X,”为偶数”Endif Return例9-18:在学生档案表中,查询王启明的籍贯是否为“江西”。如果是,则输出本记录的姓名、学号、班级和年龄。Clear Use 学生档案表 Locate For 姓名=王启明&定位姓名为王启明的记录 If 籍贯=江西?

15、姓名:,姓名,学号:,学号,班级:,班级,年龄:,年龄 Endif Use,第26页,共71页。,例9-19:任意输入三角形三边,求此三角形的面积。Input 输入三角形的a边:To AInput 输入三角形的b边:To BInput 输入三角形的c边:To C If A+BC.And.B+CA.And.C+AB P=(A+B+C)/2 S=Sqrt(P*(P-A)*(P-B)*(P-C)?三角形的面积为:,SEndif Return,第27页,共71页。,以上程序并不完善,即当条件不满足时,程序中不能做出进一步的处理。这就说明单分支的功能是有限的,不能完善地解决分支处理问题。而二分支选择结构

16、就可以处理好这个问题。2二分支选择结构 If条件表达式 A系列命令 Else B系列命令 Endif D系列命令Return,第28页,共71页。,二分支选择结构,首先判断条件表达式的逻辑值,若条件为“真”时,执行A系列命令。然后,再执行ENDIF后面的D系列命令。若条件为“假”时,执行Else后面的B系列命令。然后,再执行ENDIF后面的D系列命令。,第29页,共71页。,例9-20:当行李重量W20KG时,其超过部分则加倍计算收费。,Input“请输入行李重量:”To W If W=20 Y=W*0.15 Else Y=20*0.15+(W-20)*0.3 Endif?“运费y=”,Y R

17、eturn,第30页,共71页。,例9-21:用二分支选择结构完善例9-19程序。Input 输入三角形的a边:To AInput 输入三角形的b边:To BInput 输入三角形的c边:To C If A+BC.And.B+CA.And.C+AB P=(A+B+C)/2 S=Sqrt(P*(P-A)*(P-B)*(P-C)?三角形的面积为:,S Else?输入的边长有错,无法构成三角形!Endif Return,第31页,共71页。,思考:从键盘上输入一个整数,判断该数是否满足(被3除余2、被5除余3)设计步骤:输入数值、判断条件、输出结果,第32页,共71页。,3IIF()选择函数 IIF

18、()函数是双分支选择语句IfElseEndif的简单形式。在某些情况下,可以用IIF()函数代替IfElseEndif语句,从而简化条件描述,提高程序的执行速度。IIF(,)参数说明:若的值为真,则函数返回的值。否则,返回的值。返回值的类型可以是字符型、日期型、数值型和逻辑型。与的数据类型必须是一致。,第33页,共71页。,例9-23:在工资管理数据表中,如果基本工资小于700时,将基本工资加150。否则,加120。Use 工资管理数据表 Repl All 基本工资 With 基本工资+iif(基本工资 700,150,120)例9-24:阅读程序,分析结果。连续执行下列命令之后,输出结果是。

19、Set Exact Off&非精确比较X=A?IIF(A”=X,X-BCD,X+BCD)A)A B)BCD C)A BCD D)ABCD,第34页,共71页。,思考:INPUT 请输入X的值(X=0):TO XX=IIF(X=200,X+20,X+50)?X=,XRETURN若程序运行时输入100,则运行结果为?,第35页,共71页。,4分支语句的嵌套 对于二分支以上的问题,二分支的结构也不能解决,它需要使用分支语句的嵌套。VFP中允许在程序的任何位置进行嵌套。,第36页,共71页。,注意层次关系,要求各个层次的IF语句之间不能交叉,每一层的If、Else以及EndIf必须一一对应。当然,这种

20、分支语句嵌套结构,在编写的过程中,稍不注意就会使层次交叉。在VFP中提供了更为简单方便的多重分支结构。,第37页,共71页。,例9-25:成绩用优秀(90)、良好(80-90)、中(70-80)及格(60-70)与不及格(60)来划分的,当你输入一名同学的分数后就输出该同学的成绩等级 P185,input 请输入该同学的分数 to cjif cj=90?你的成绩是:优秀else if cj=80?你的成绩是:良好 else if cj=70?你的成绩是:中 else if cj=60?你的成绩是:及格 else?你的成绩是:不及格 endif endif endifendif,第38页,共71

21、页。,习题:,编写程序,计算函数Y的值。1/x+5 x0Y=10 x=0 X2+12 x0,第39页,共71页。,5多重分支选择结构 虽然可用IF语句嵌套的方式解决多分支选择问题。但是,如果选择的分支很多,则编写的程序可读性差且易出错。这时,一般使用DO CASE-ENDCASE多重分支选择结构来解决。,第40页,共71页。,第41页,共71页。,参数说明:执行多重分支选择结构时,会依次判断至的逻辑值,只要一遇到条件表达式为真时,就执行该条件表达式下面的语句序列。执行结束后,立即转向执行Endcase之后的语句。其余的Case语句,即使条件成立,也不执行判断。当所有的Case语句条件都不成立时

22、,如果有Otherwise选项,则执行Otherwise选项下面的语句。否则,转向执行Endcase之后的语句。Do CaseEndcase必须配套。Do Case与第一个Case之间不允许插入任何可执行语句。,第42页,共71页。,例9-26、用多分支选择结构改写9-25(学生成绩),其程序为:,CLEARINPUT 请输入该同学的分数:TO fs DO CASECASE fs=60 and fs=70 and fs=80 and fs90?你的成绩为:良好OTHERWISE?你的成绩为:优秀ENDCASE,第43页,共71页。,法二:CLEARINPUT 请输入该同学的分数:TO fs D

23、O CASECASE fs=60?你的成绩为:及格CASE fs=70?你的成绩为:中CASE fs=80?你的成绩为:良好OTHERWISE?你的成绩为:优秀ENDCASE,法一:CLEARINPUT 请输入该同学的分数:TO fs DO CASEcase fs90?你的成绩为:优秀CASE fs=80?你的成绩为:良好CASE fs=70?你的成绩为:中CASE fs=60?你的成绩为:及格OTHERWISE?你的成绩为:不及格ENDCASE,第44页,共71页。,例9-27、利用DO CASEEND CASE语句实现菜单选择。,第45页,共71页。,例9-28、执行下面的程序,当输入10

24、之后,输出的结果是_。INPUT 请任意输入一个数:X=TO XDO CASECASE X10Y=2*X+5case x15 and x20y=x+5OTHERWISEY=10*X-5ENDCASE?Y=,Y,第46页,共71页。,set talk off clearaa=1do case?12345case aa=1 bb=1endcase?bbreturn,思考:阅读下面程序,输出的结果是_,第47页,共71页。,4.循环结构程序设计,我们已经学习了顺序结构和分支结构,这种结构的特点是任何一条语句至多只执行一次,但是在处理实际问题的过程中,用这种结构来编写程序就长得不能忍受。比如:计算S=

25、1+2+3+4+5+1000就需要1001条语句。S=0 S=S+1 S=S+2 S=S+3。实际上这就是一种重复循环操作,FoxPro提供了这种循环结构程序设计。事实上70%以上的实际问题的处理过程都需要使用循环结构,重点掌握循环结构程序设计是非常重要的,第48页,共71页。,在FoxPro中,循环结构有三种:条件循环(DO WHILEENDDO)计数循环(FORENDFOR)库文件扫描循环(SCANENDSCAN),第49页,共71页。,条件循环,事先不知道循环次数的事件,用条件循环较好。,格式:DO WHILE 条件表达式循环体语句 ENDDO,(2)流程图:,第50页,共71页。,说明

26、:DO WHILE 是循环语句的起始语句,ENDDO是循环语句的终端语句,必须配套使用;中间是循环体。循环初值中的条件表达式可以是算术表达式,例如:X中,还可以包含另一种循环结构,也就是说WHILE循环能嵌套,但不能出现交叉。,第51页,共71页。,(4)循环程序的五个主要部分,初始部分:写在起始语句前,给循环变量赋初值。起始语句:控制循环正常运行。工作部分:循环体部分,完成循环的主要工作。修改部分:保证循环体在循环的过程中,使控制循环的条件能按一定的规律变化,修改循环变量的值,防止死循环。在对数据库操作时,用SKIP、CONTINUE;当条件表达式是关系表达式时用K=K+1来修改循环变量的值

27、。结束部分:循环的结束,退出循环,执行ENDDO后面的语句。,第52页,共71页。,(5)例题,例1:任意输入10个自然数,编程求其和及平均值。分析:依题意用循环控制输入10个自然数并求和,故设置一个累加器sum和循环计数器k。,第53页,共71页。,例题2、求出XSDA.DBF数据库中99212、98321和其他班级的人数。(DO WHILE和DO CASE嵌套)例题3、求12+22+32+.+1002的和例题4、求1到100之间的奇数和。,第54页,共71页。,习题、执行以下程序,屏幕上显示的结果是_。SET TALK OFFCLEARNO=6DO WHILE NO0 7-NO,3 SAY

28、 STR(NO,1)NO=NO-1ENDDORETURN,第55页,共71页。,带转移的条件循环结构,在条件循环中,还有另外两种选项,在循环体中加入EXIT或LOOP语句。它们常与分支结构一起使用,其形式如下:格式:DO WHILE 条件1 语句行序列1 IF 条件2 EXITLOOP ENDIF 语句行序列2 ENDDO,第56页,共71页。,说明:在循环语句中的LOOP语句(短路循环),其作用是终止本次循环的执行。返回DO WHILE语句,使LOOP后面的语句在这一次循环中不被执行,它可出现在循环体中的任意位置。在循环体中的EXIT语句是一种强制退出循环体的语句。当执行到该语句时,不管循环

29、语句运行在什么地方,也不管循环次数是否到,都强制转去执行ENDDO后面的语句。,第57页,共71页。,例题:例:求1到100之间的奇数和。(P193)分析:判断某一数N是否为奇数,只要INT(N/2)N2,即该数除以2的商与取整后的结果一致,该数为偶数,否则为奇数。通过计数器N=N+1产生0100之间的数据,逐一进行判断,当为偶数时,用LOOP语句返回DO WHILE起始循环,当为奇数时进行累加求和。例2:在学生档案(XSDA.DBF)中,按姓名查找某一同学,找到后输出该同学的情况,否则输出“查无此人”;要求进行多次查找。,第58页,共71页。,习题:阅读程序,写结果。,STORE 0 TO

30、N,SDO WHILE.T.N=N+1IF mod(N,3)=1S=S+NENDIFIF N=10EXITENDIFENDDO?“S=”,SRETURN,第59页,共71页。,根据例题,我们可以看出,在应用程序中常用的循环语句条件有以下几种:对于循环次数已知的情况,常用模式为:INPUT N=TO NK=1&置K的初始值DO WHILE K EXITENDIF 改变x的值的语句 ENDDO,第60页,共71页。,对数据库的操作,常用模式为:USE 数据库名 置初始值 DO WHILE.NOT.EOF()执行某一任务的语句系列 SKIP ENDDO 对某些重复性的工作,由用户随意确定,可多可少。

31、yn=Y DO WHILE UPPER(yn)Y 执行某一任务的语句系列 WAIT 还继续吗(YN)?TO yn ENDDO,第61页,共71页。,计数循环,对于事先已经知道某一个事件需要循环多少次时,往往使用FOR循环结构。结构:FOR=(初值)TO(终值)STEP(步长)循环体语句LOOP EXITENDFOR,第62页,共71页。,功能:从初值到终值,循环执行FOR和ENDFOR之间的语句。该结构常用于已知循环次数的数值运算。说明:FOR表示循环的开始,ENDFOR表示循环的结束,两者之间是循环体。循环变量:是循环计数器,是数值型的内存变量,不必先定义。步长:循环变量自动按步长增加,它为

32、可选项,省略,系统默认步长为1。若为正值,则为递增型循环;若为负值,则为递减型循环。LOOP和EXIT:为可选项,LOOP表示转到FOR执行下一个循环操作,EXIT表示强行结束循环。,第63页,共71页。,(4)例题,例题1、FOR K=1 TO 4?k=,kENDFORRETURN,例题2、FOR K=4 TO 1 STEP 1?k=,kENDFORRETURN,第64页,共71页。,例题3、求1100的累加和。例题4、完成下面实现计算P=1+1/(2*2)+.1/(10*10)的程序 SET TALK OFF CLEAR P=0 FOR N=1 TO 10 ENDFOR?P RETURN,

33、第65页,共71页。,库文件扫描循环,在数据库应用程序中,经常要对数据表文件中符合条件的记录逐个进行某种统计操作。虽然可用DO WHILE not eof()来处理,但是系统还提供了另外一种更好的循环结构,即库文件扫描循环。它内含有EOF()、SKIP的作用,不需移动记录指针。结构:SCAN 范围FOR条件表达式1 语句行序列LOOPEXITENDSCAN,第66页,共71页。,功能:在当前工作区数据库的指定范围内,将满足条件的记录,依次执行循环体中所包含的语句行序列,直到文件尾结束。说明:SCAN,ENDSCAN必须配套使用。SCAN循环是内含EOF()和SKIP的一种循环处理。FOR条件表

34、达式1:其意义是仅对使条件为真的记录执行语句序列的操作。在使用SCANENDSCAN之前必须先打开被操作的数据库。,第67页,共71页。,例题:,例题:在学生档案(XSDA.DBF)中,显示满足年龄大于23岁的学生姓名、年龄和学号。并统计其个数。例题2、在数据库XSDA.DBF中,分别统计浙江、江西及其它各省的人数,第68页,共71页。,5、循环常用的三种控制方式小结,1、对数据库文件记录进行操作时的循环控制方式格式1、SCAN 循环语句体 ENDSCAN 格式2、DO WHILE NOT EOF()循环语句体 SKIP ENDDO,第69页,共71页。,2、选择数据库文件中符合条件的记录进行循环操作格式1、SCAN 范围 FOR 条件 循环语句体 ENDSCAN格式2、LOCATE 范围 FOR 条件 DO WHILE FOUND()循环语句体 CONTINUE ENDDO,第70页,共71页。,3、有限次循环的控制方式格式1、FOR K=1 TO N 循环语句体 ENDFOR格式2、K=1 DO WHILE KN 循环语句体 K=K+1 ENDDO,第71页,共71页。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号