VFP结构化程序设计.ppt
《VFP结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《VFP结构化程序设计.ppt(85页珍藏版)》请在课桌文档上搜索。
1、第九章,结构化程序设计,2023/3/20,2,9.1 程序设计基础9.2 顺序结构程序9.3 分支结构程序9.4 循环结构程序9.5 程序的模块化,2023/3/20,3,使用计算机解决实际问题,通常是先要对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。这个过程称为程序设计。,9.1 程序设计基础,9.1.1 程序设计的概念,2023/3/20,4,9.1.2 结构化程序设计方法,结构化程序设计采用自顶向下、逐步求精和模块化的分析方法。,自顶向下是指对设计的系统要有一个全面的理解,从问题的全局入手,把一个复
2、杂问题分解成若干个相互独立的子问题,然后对每个子问题再作进一步的分解,如此重复,直到每个问题都容易解决为止。,逐步求精是指程序设计的过程是一个渐进的过程,先把一个子问题用一个程序模块来描述,再把每个模块的功能逐步分解细化为一系列的具体步骤,以致能用某种程序设计语言的基本控制语句来实现。,在编制一个较复杂的程序时,大致可分为5个步骤:1审题 2划分处理模块 3数据库结构的设计 4画流程图 5编写程序,2023/3/20,5,任何复杂的程序都由3种基本控制结构组成。它们是顺序结构、选择结构和循环结构。,图9.1程序的控制结构,9.1.3结构化程序的控制结构,2023/3/20,6,9.1.4 程序
3、文件的建立与执行,VF程序文件又称命令文件,其扩展名为.prg。,(1)命令方式格式1:MODIFY COMMAND 命令文件名|?格式2:MODIFY FILE 文件名|?功能:调用内嵌文本编辑器,建立或修改一个指定的命令文件。,2菜单方式建立编辑程序文件,1命令方式建立或修改程序文件,(2)菜单方式操作步骤:从“文件”菜单中选择“新建”菜单选项。在“新建”对话相中选择“程序”单选按钮。单击“新建文件”按钮。说明:修改命令文件时,首先从FILE菜单中选择OPEN菜单选项,然后在文件名的文本框中键入待修改的命令文件名,再单击打开按钮即可在编辑窗口打开该文件。,2023/3/20,7,(1)命令
4、方式 格式:DO 程序文件名 功 能:将程序文件从磁盘调入内存,编译成.FXP目标文件后并执行。说明:当命令文件名的扩展名缺省时,系统按如下顺序搜索并执行的这些程序:可执行文件(.EXE)、应用程序(.APP)、编译后的目标程序文件(.FXP)和程序文件(.PRG)。,2.程序文件的执行,(2)菜单方式操作步骤:在“程序”/“运行”,出现对话框。在“执行文件”的文件名输入框中直接键入命令文件名,或在文件列表中单击所需命令文件名。单击“运行”按钮。终止程序运行:.CANCEL:终止程序运行,清除所有的私有变量,返回命令窗口。.RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命
5、令窗口。.QUIT:结束程序执行并退出Visual.FoxPro系统,返回操作系统。,2023/3/20,8,9.2 顺序结构程序,顺序结构是最简单、最基本的一种程序结构。在顺序结构程序中,各命令按照各自出现的先后顺序,依次执行。,例92 在学生.dbf表中显示第一条记录的姓名、性别、出生日期、数学、外语成绩,*FILENAME E9_2.PRGSET TALK OFFCLEARUSE 学生DISPLAY 姓名,性别,出生日期,数学,外语USE SET TALK ONRETURN,2023/3/20,9,其流程图如右图所示。,A,B,C,N,图中箭头表示程序执行的方向,方框代表不同的可执行语句
6、。,2023/3/20,10,9.2.1 程序文件中的辅助命令,1、程序注释命令格式1:NOTE|*注释 开头代码注释行格式2:&注释 命令行后代码注释行功能:对程序进行说明,对运行结果不会产生任何影响。,2、清屏命令,格式:CLEAR功能:清除屏幕上所有显示内容,将光标置于屏幕左上角。,3、常用状态设置命令,(1)置会话状态命令格式:SET TALK ON|OFF,2023/3/20,11,说明:在会话状态开通时,Visual FoxPro在执行命令时会向用户提供大量的反馈信息。程序调试时,一般置“会话”于开通状态,而在执行程序时则通常要求置“会话”于断开状态。,(2)置打印状态命令格式:S
7、ET PRINT ON|OFF 说明:系统默认打印机置于断开状态,执行结果只送到屏幕,不送往打印机。反之,则在屏幕上显示的执行结果被同时打印。,(3)置屏幕状态命令格式:SET CONSOLE ON|OFF说明:在系统的默认状态下,用户从键盘输入的内容都在屏幕上显示,然而有时却要求键入的内容保密而不被显示,这只需使用命令SET CONSOLE OFF便可。,2023/3/20,12,(4)置缺省驱动器和目录命令格式:SET DEFAULT TO 盘符:路径说明:用于设置进行输入输出操作时的缺省驱动器和缺省目录,9.2.2 交互式输入命令,1.字符串接收命令格式:ACCEPT TO 功能:暂停程
8、序执行,将键盘输入的字符串送入指定内存变量后再继续运行。,说明:若给出提示信息选项,将输出提示信息,否则不输出任何信息。其中可以是字符型内存变量、字符串常量或合法的字符表达式。本命令只接收字符串,输入时该字符串不需要使用定界符,其长度不能超过254个字符。本命令以回车作为结束符。,2023/3/20,13,例9.3 在学生表中,从键盘上输入任意一个学生的学号查询学生的姓名、性别、出生日期、数学、外语成绩。,*FILENAME E9_3.PRGCLEARSET TALK OFFUSE 学生ACCEPT 请输入待查学生的学号:TO xhLOCATE FOR 学号=xhDISP 学号,姓名,性别,出
9、生日期,数学,外语USESET TALK ONRETURN,2023/3/20,14,2任意数据输入命令格式:INPUT TO 功能说明:提示信息选项同ACCEPT命令。INPUT命令可以接收字符型、数值型、日期型及逻辑型数据。字符串的输入必须用定界符括起来,输入数值或表达式,不加任何定界符;输入日期型数据,除使用日期型的格式外,还要用大括号将其括起来。本命令以回车作为结束符。INPUT命令不允许在没有输入任何内容的情况下直接按回车。,2023/3/20,15,例9.4 输入圆半径计算圆面积。,*FILENAME E9_4.PRGNOTE 已知半径求圆面积SET TALK OFFCLEARST
10、ORE 3.14 TO PINPUT 请输入圆的半径:TO PSP*R2?半径是+LTRIM(STR(P)+的圆面积是:?SSET TALK ON,2023/3/20,16,3.单个字符接收命令格式:WAIT TO WINDOW NOWAIT TIMEOUT 功能:暂停程序执行,等待用户键入任何一个字符后继续。,*Filename E9_5.prgSET TALK 0FFUSE 学生CLEARLIST NEXT 10SKIP WAIT WINDOW&在屏幕右上角的窗口内显示提示信息LIST NEXT l0USESET TALK ON,例9.5 学生表学生.DBF中含20条记录,分两屏输出,20
11、23/3/20,17,4.三种键盘输入命令的比较,5.基本输出命令格式:?|?,功能:在屏幕上输出表达式的信息,?与?的区别在于:?在当前光标的下行首列输出信息,?在当前光标当前位置输出。,2023/3/20,18,1.格式输出命令格式:SAY 功能:在屏幕指定的行列处显示表达式的值。说明:指定了输出的位置。屏幕左上角为0,0,有下角为屏幕最大行数-1,屏幕最大列行数-1,行、列都可为表达式,还可为小数。,9.2.3 格式输入输出命令,2.格式输入命令格式:SAY GET READ功能:SAY命令与READ命令结合,在屏幕上指定行列处显示并允许修改一个内存变量或字段变量的值。,2023/3/2
12、0,19,说明:SAY子句用于显示提示信息,GET子句用于为变量输入新值。GET子句中的变量必须有确定的初值。初值决定了该变量的类型和宽度。激活CET变量是指使该变量进入编辑状态,让光标自动跳到该变量值所在位置上等待编辑修改。,2023/3/20,20,例:9.7 从键盘上任意输入两个数据,要求用格式化语句完成。,*FILENAME E9_7.PRGSET TALK OFFCLEARA=0&表示变量A仅仅可以输入整数B=0.00&表示变量B仅仅可以输入实数,小数位为两位4,10 SAY“请输入第一个整数:”GET A6,10 SAY“请输入第二个实数:”GET BREADC=A+B8,10 S
13、AY STR(A)+”+”+ALLT(STR(B,10,2)+”=”+ALLT(STR(C,10,2)SET TALK ONRETURN,2023/3/20,21,根据逻辑条件是否满足来转向不同的程序去执行,这就构成了分支结构。,9.3 分支结构程序,.F.,1单分支语句(IFENDIF)简单分支语句的格式:IF ENDIF功能说明:若条件为真则执行IF到ENDIF中间的语句为假,则从ENDIF下条语句执行。,2023/3/20,22,例9.8 从键盘上输入任意两个数据,请按照从大到小的顺序输出,*FILENAME E9_8.PRGSET TALK OFFCLEARINPUT“请输入第一个数据
14、:”TO AINPUT“请输入第二个数据:”TO BIF AB&满足条件两个数据发生交换,否则不执行条件语句 C=A A=B B=CENDIF?A,BSET TALK ONRETURN,2023/3/20,23,ACCEPT“输入要查询学生的学号:”TO XHCJ=“该生数学成绩低于60分”&变量CJ用于存放是否及格的信息 USE 学生表 LOCATE FOR 学号=XH IF 数学=60 CJ=“该生数学成绩60分以上”ENDIF?CJ USE(演示:利用MODI COMM命令生成一个.PRG文件,用DO命令执行),例:在“学生表.DBF”表文件中,按学号查询某个学生平时成绩是否及格。,20
15、23/3/20,24,格式:IF ELSE ENDIF 功能说明:若条件为真,执行命令序列1,然后执行ENDIF的后继命令。如果条件为假,且有ELSE子句,执行命令序列2,然后执行ENDIF的后续命令,若无ELSE子句,则直接转到ENDIF之后。,2双分支结构(IFELSEENDIF),注:(1)IF和ENDIF必须配对使用,而ELSE可选。(2)IF、ELSE、ENDIF必须各占一行。(3)可以为关系表达式、逻辑表达式。(4)在语句序列1和语句序列2中可以嵌套IF语句。,2023/3/20,25,例9.9 从键盘接收一个字符,如果是小写字母,将其以大写字母后输出,其他字符直接输出。,*FIL
16、ENAME E9_9.PRGSET TALK OFFCLEARWAIT 请输入一个字符:TO LIF L=a AND L=z?UPPER(L)ELSE?LENDIFSET TALK ON,2023/3/20,26,ACCEPT“输入要查询学生的学号:”TO XH USE 学生表 LOCATE FOR 学号=XH IF 数学=60 CJ=“数学成绩60分以上”ELSE CJ=“数学成绩低于60分”ENDIF?CJ USE,例:用选择分支语句,重新编写上例的程序。,2023/3/20,27,SET TALK OFFINPUT“请输入所用电量:TO DLIF DL=50DF=DL*0.5ELSEDF
17、=50*0.5+(DL-50)*0.8ENDIF?“应缴电费为:”+LTRIM(STR(DF,10,2)+元SET TALK ONRETURN,*FILENAME E9_11.PRGSET TALK OFFINPUT“请输入所用电量:TO DLDF=IIF(DL=50,0.5*DL,0.5*50+0.8*(DL-50)?“应缴电费为:”+LTRIM(STR(DF,10,2)+元SET TALK ONRETURN,例9.10 请用分支结构语句编程计算电费:不超过50度,每度0.5元;超过50度时,超出部分每度0.8元。,结论:条件函数IIF同样具有逻辑判断功能,2023/3/20,28,SET
18、TALK OFF INPUT 请输入行李重量:TO WIF 1 YF=0.22*W ELSE YF=0.22*40+1ENDIF?应交托运费为:+LTRIM(STR(YF,10,2)+元SET TALK ONRETURN,例 火车托运行李:每人不超过40公斤,每公斤0.22元;超过40公斤时,超出部分每公斤0.40元。填空完成以下程序。,W 40,(W-40)*0.4,2023/3/20,29,9.3.3多分支结构,DO CASECASE 条件表达式1 语句序列1CASE 条件表达式2 语句序列2 CASE 条件表达式n语句序列n OTHERWISE 语句序列n+1 ENDCASE,2023/
19、3/20,30,功能:系统依次测试语句中各个条件表达式的值:若为真,即执行相应条件表达式后的语句序列,然后脱离情况语句,执行ENDCASE的下一语句。若所有的条件表达式的值均为假,则执行OTHERWISE后面的语句序列,然后脱离情况语句,执行ENDCASE下一语句。,说明:DO CASE和第一个CASE子句之间不能插入任何语句。DO CASE和ENDCASE必须配对使用,且DO CASE,CASE,OTHERWISE和ENDCASE各子句必须各占一行。在语句序列中可嵌套情况语句。,2023/3/20,31,例 9.12 输入任意一个百分制成绩,输出对应的5分制成绩,其对应关系如下:优(100百
20、分成绩90)、良(90百分成绩80)、中(80百分成绩70)、及格(70百分成绩60)或不及格(百分成绩60)。,CLEARSET TALK OFFINPUT 请输入百分制成绩:TO CJDO CASE CASE CJ=90 dj=优 CASE CJ=80 dj=良 CASE CJ=70 dj=中 CASE CJ=60 dj=及格 OTHERWISE dj=不及格ENDCASE?5成绩等级为:+djSET TALK ON,2023/3/20,32,例9.13 在学生表中,从输入键盘上输入任意一个学生的学号,查找该学生,如有则显示他的数学成绩所属的等级,否则显示没有该学生。,*FILENAME
21、E9_13.PRGSET TALK OFFCLEARUSE 学生ACCEPT“请输入需要查询学生的学号:”TO ALOCATE FOR 学号=AIF FOUND()DO CASECASE 数学=90?学号,姓名,数学,“优秀”CASE 数学=80?学号,姓名,数学,“良好”CASE 数学=70?学号,姓名,数学,“中等”CASE 数学=90?学号,姓名,数学,“及格”OTHER,?学号,姓名,数学,“不及格”ENDCASE ELSE?”无该学号的学生!”ENDIF USE SET TALK ONRETURN,2023/3/20,33,例9.14 从键盘上任意输入一个字符,判断所输入的字符类型(
22、数字字符、大写英文字符、小写英文字符、空格字符或其他字符),*FILENAME E9_14.PRGSET TALK OFFCLEARWAIT“请输入任意一个字符:”TO A DO CASE CASE A=”0”AND A=”A”AND A=”a”AND A=”z”WAIT“小写英文字符”+A+”!”CASE A=”WAIT“空格字符”+A+”!”OTHERWISE WAIT“其他字符”+A+”!”ENDCASESET TALK ONRETURN,2023/3/20,34,例 阅读下列程序段,写出运行结果:,A=3000DO CASECASE A=1000B=ACASE A=2000B=2*AC
23、ASE A=3000B=3*AENDCASE?B,2023/3/20,35,循环,就是按给定的条件连续地重复执行一段特定功能的程序。循环结构也称为重复结构。,9.4 循环结构程序,Visual FoxPro给出了三种循环结构:条件循环(DO WHILEENDDO)计算循环(FORENDFOR)扫描循环(SCANENDSCAN),2023/3/20,36,DO WHILE LOOP EXIT ENDDO,循环体,ENDDO后的语句,条件,.T.,.F.,条件循环结构流程图,9.4.1 DO WHILE循环,循环体,条件,2023/3/20,37,(1)系统执行该语句时,先判断循环开始DO WHI
24、LE的条件是否成立,如果条件为真,则执行循环体中的语句序列。当执行到ENDDO时,返回到DO WHILE,再次判断条件是否为真,以确定是否再次执行循环体。若条件为假,则结束循环,执行ENDDO后面的语句。如果第一次判断条件时,条件即为假,则循环体一次都不执行,这就是称为“先判断后执行”的语句。(2)循环体中的LOOP是可选项。遇到LOOP时,不再执行后面的语句,转回DO WHILE处重新判断。其作用相当于一个特殊的“短路”返回控制。(3)循环体中的EXIT也是可选项。遇到它时便无条件地退出循环,转到ENDDO后面的语句。其作用相当于一个紧急出口。(4)通常LOOP或EXIT出现在循环体内嵌套的
25、分支语句中,根据条件来决定是LOOP回去,还是EXIT出去。,功能说明:,2023/3/20,38,在以循环变量作为循环控制参数的条件循环中,循环体内一定要有修改循环变量的语句,否则 就会出现死循环。,注意,2023/3/20,39,例 求自然数1至4的和。,分析算法:,1.i=1,s=0;,2.累加第 i 个数,3.累加次数加1,4.当 i=4 重复做2;,5.?s。,2023/3/20,40,例 求自然数1至4的和。,SET TALK OFF,S=0,&定义一个变量表示和,并初始化,&指定以循环次数作判断条件,S=S+i,&把S的值加上i后再赋给S,即求和,&修改循环变量,?S,&输出求和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 结构 程序设计
链接地址:https://www.desk33.com/p-245752.html