vfp课件-结构化程序设计.ppt_第1页
vfp课件-结构化程序设计.ppt_第2页
vfp课件-结构化程序设计.ppt_第3页
vfp课件-结构化程序设计.ppt_第4页
vfp课件-结构化程序设计.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章VFP程序设计基础,6.1应用程序简介,6.2应用程序中的常用命令,6.4过程与函数,6.3程序的控制结构,6.5结构化程序设计举例,VFP工作方式的最大特点,通过菜单、命令窗口、对话框、工具栏等图形界面直接操纵数据库Q:为什么需要编制程序?1、在VFP中任何可以用交互方式实现的数据管理工作,均可用程序方式实现2、VFP中直观、方便的交互方式效率低,操作繁琐,速度慢3、最终用户对VFP了解一般,极易出现误操作4、程序方式使用户能通过简单的选单操作即可使用系统,出现误操作系统也会自动处理,建立真正的管理信息系统必须编制程序VFP既兼容传统的面向过程的程序设计方式,也提供面向对象的编程技术。面向过程的方式是一种程序流的驱动方式,强调的是解决问题的过程,不关心其中的操作对象;面向对象的方法将若干个对象有机结合在一起,以对对象的操作完成对整个任务的操作,关心的是每个对象,思考的是对象间的联系。,第1节应用程序简介,一、应用程序概念:为完成某项任务所需执行的命令序列,这些命令按照一定的结构有机地组合在一起,并以文件的形式存储在磁盘上,又称为命令文件。二、应用程序的组成:前言:注释语句设置区:设置程序的运行环境,多由SET命令实现程序体:所有命令序列,一般包括数据的输入输出、数据的处理以及结果输出等命令整理部分:如关闭各种文件程序的退出:设置有关命令关闭文件返回到命令窗口状态或操作系统状态,第2节应用程序中的常用命令,一、环境设置命令Settalkon/off设置是否在主窗口中状态栏中显示所有命令的执行结果Setconsoleon/off设置是否把输出信息在窗口上显示Setprinteron/of设置是否在打印机上输出信息Setsafetyon/off设置在改写文件时VFP是否显示对话框以确认改写有效Setheadingon/off设置在执行LIST、DISPLAY等命令时是否显示字段名Setstatuson/off设置是否显示状态行Setdefaultto盘符指定默认的驱动器Setdevicetoscreen/printer把输出信息发送到VFP的窗口屏幕或打印机,二、交互输入命令1、键入字符串命令格式:ACCEPTTO说明:1)暂停程序的运行等待用户键入字符型常量赋给指定的内存变量2)是显示在屏幕上的、用于提示说明的字符型表达式3)如果不键入任何字符而只按回车键,则赋给内存变量的值将是一个空字符串示例:编写可以打开任一数据表文件的通用命令。ACCEPT“请输入要打开的表文件名:”TOBMUSE&BM,2、输入单字符命令格式:WAITTO功能:暂停程序的运行,等待用户键入单个字符后再恢复程序运行说明:1)为可选项,其格式、功能与要求同ACCEPT命令。如果命令中无此选项,则系统默认的提示信息是:PRESSANYKEYTOCONTINUE2)TO也为可选项,选用时,则键入的单个字符均作为字符型数据赋给内存变量。如果只是按下回车键,则只将一个空字符存入内存变量示例:等待用户键入“Y/y”或其它字符,以确定是否继续执行程序wait“是否继续执行”toxifx=yorx=Yelseexitendif,2、键入表达式命令格式:INPUTTO功能:暂停程序运行,等待键入表达式并将其值赋给指定的内存变量(可接受数值、字符、日期和逻辑型数据),待按回车键后,继续运行程序。说明:1)为可选项,其格式、功能与要求同ACCEPT命令2)命令中的的类型决定于键入数据的类型,但不得为M型数据3)若键入的是表达式,本命令将先计算出表达式的值,然后把其结果赋给4)若键入字符型常量或逻辑型常量时应带有定界符5)在响应该命令时,若键入了无效表达式或只按下回车键,系统将会给出提示信息示例:试运行下述交互输入命令INPUT“请输入学生姓名:”TOXMINPUT“请输入其班级:”TOBJINPUT“该人性别为:”TOXB,三、常用辅助命令1、注释命令格式1:NOTE格式2:*格式3:),系统默认下一行内容仍为注释内容。示例1:NOTE打开学生表USE学生表.DBF示例2:SETCONSOLEOFF&取消窗口的输出显示,2、清除命令格式1:CLEAR说明:清除当前屏幕上的所有信息格式2:CLEARALL说明:关闭所有文件,清除所有内存变量,3、关闭文件命令格式1:CLOSEALL说明:关闭所有的数据库、表以及索引文件格式2:CLOSE说明:文件类型DATABASE数据库文件、索引文件、格式文件INDEX当前工作区的索引文件FORMAT当前工作区的格式文件PROCEDURE当前工作区的过程文件ALTERNATE文本输出文件,4、运行中断和结束命令格式1:QUIT说明:退出VFP,返回到操作系统状态格式2:CANCEL说明:结束本次程序的运行,返回到命令窗口状态格式3:RETURNTOMASTER说明:返回到调用点处,5、定位输入输出命令格式:SAY说明:在指定的行、列处输出数据示例:在主工作区的(10,10)位置输出“欢迎使用”,第3节程序的控制结构,程序设计的过程:分析问题、确定任务、划分模块、建立模型、组织数据、描述操作步骤、编写程序、上机调试、分析运行结果、写出程序说明书面向过程方式采用的程序设计方法:结构化程序设计,其基本原则是自顶向下、逐步求精;此方法提出了三种基本程序结构,分别是顺序、选择、循环;任何一个程序均可用这三种结构装配流程图:就是运用一些特定的图形符号和必要的文字来描述解题步骤的图示三种基本程序结构流程图:,顺序结构,分支结构,循环结构,一、顺序结构概念:自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最普遍的结构形式。从宏观上看,任何程序或系统都可看成是一个个基本结构或一个个基本程序段构成的顺序结构示例1:试在表文件中查看某职工的有关情况。SETTALKOFFCLEARUSE学生表.DBFLOCATEFOR学号=“20026920111”DISPLAYUSESETTALKON示例2:根据输入的半径值,计算出相应的圆的周长。SETTALKOFFCLEARINPUT“请输入圆的半径:”TORL=2*3.1416*R10,10SAY“圆的周长是:”+STR(L,6,3)SETTALKON,1、简单分支格式:IFENDIF注意:IF和ENDIF必须成对出现,二、分支结构概念:按照一定的条件由判断语句或选择语句构成的双重或多重走向的程序,示例:在“职工人事档案表”中查看“张丹枫”的基本情况SETTALKOFFCLEARUSE职工人事档案表LOCATEFOR姓名=“张丹枫”,IFFOUND()DISPENDIFUSESETTALKON,2、选择分支格式:IFELSEENDIF,示例:在表文件“分数.DBF”中查找学号为99020203的学生成绩,若其成绩满60分则显示其学号、课程号和成绩;否则显示此人的学号、课程号并通知其补考。SETTALKOFFUSE分数.DBFCLEARLOCATEFOR学号=“99020203”IF成绩=60?“学号:”+学号?“课程号:”+课程号?“成绩:”+STR(成绩,6,2)ELSE?“学号为”+学号+“的学生应参加补考的课程号为:”+课程号ENDIFUSESETTALKON,作业求解一元二次方程AX2+BX+C=0,系数A,B,C的值由用户通过键盘输入,当方程有实根时,屏幕显示出两根的值;当方程无实根时,屏幕显示出“方程无实根!,3、判断语句嵌套IF语句多重嵌套示意结构如下:IFELSEIFELSEIFELSEENDIF3ENDIF2ENDIF1,注意:(1)IF、ELSE(可不选)、ENDIF一一对应、互相匹配(2)允许简单判断和选择判断语句自我嵌套或相互嵌套,但层次必须清楚,不得交叉(3)最好采用缩格(锯齿形)的书写方式,示例:根据键入X的值,计算下面分段函数的值,并显示结果,程序如下:SETTALKOFFCLEARINPUT“X=”TOXIFX0IFX10Y=X*X+1ELSEY=3*X*X-2*X+1ENDIFELSEY=X*X+4*X-1ENDIF?”分段函数值为:”+STR(Y,10,2)SETTALKONRETURN,4、多分支结构格式:DOCASECASECASECASEOTHERWISEENDCASE,示例:用DOCASE语句修改上面计算分段函数的例子。SETTALKOFFCLEARINPUT“X=”TOXDOCASECASEX0.AND.X10Y=X*X+1ENDCASE?”分段函数值为:”+STR(Y,10,2)SETTALKONRETURN,三、循环结构循环结构程序:按照一定条件重复进行某种特定操作的程序称为循环结构程序,1、当型循环结构格式:DOWHILELOOPEXITENDDO说明:结构组成:循环起始语句、循环体、循环终端语句注意:在循环体内要设置修改循环条件的语句,避免死循环,例1:编程求和S=1+2+3+100。SETTALKOFFCLEARSTORE0TON,SDOWHILEN=1S=S+XX=X+1ENDDO,例2:编程显示学生表中所有女生的记录。SETTALKOFFCLEARUSE学生表INDEXON性别TO学生表_性别SEEK“女”DOWHILE性别=”女”DISPSKIPENDDOUSESETTALKONRETURN,作业:令计算机从0开始计数,每计一个数,便判断该数是否为偶数,若是偶数则接着计下一个数;若是奇数则将其累加,若累加和大于250,则计数结束;若累加和不大于250则继续计数,编写程序。,SETTALKOFFCLEARSTORE0TON,SDOWHILEN=0ifs250exitelseifn%2=0S=N+SN=N+1elseN=N+1endifendifENDDO?累加和S=,SSETTALKONRETURN,例4:编写程序能根据键盘输入的姓名,从学生表中查找该生的信息。SETTALKOFFCLEARACCEPT“请输入姓名:”TOXMUSE学生表DOWHILE.NOT.EOF()IF姓名=XMDISPEXITELSESKIPENDIFENDDOUSESETTALKON,2、固定次数的循环结构格式:FOR=TOSTEPLOOPEXITENDFOR/NEXT注意:步长可为正值或负值示例:编程求和S=1+2+3+100。SETTALKOFFCLEARS=0FORN=1TO100?”S=”,SS=S+NSETTALKONENDFORRETURN,3、表扫描循环结构格式:SCANFORWHILELOOPEXITENDSCAN,SETTALKOFFCLEARN=0USE学生表SCANFOR性别=”男”(WHILE性别=“男”)N=N+1ENDSCAN?”学生表中男学生的人数是:”,NUSESETTALKONRETURN,例1:编程统计学生表中男学生的人数。,例2:统计表文件“学生表.DBF”中各个班级的人数。*L1.PRGSETTALKOFFSTORE0TOA,BCLEARUSE学生表.DBFSCANDOCASECASE班级=“注会”A=A+1CASE班级=“金融二”B=B+1ENDCASEENDSCAN?“注会班的人数为:”+STR(A,3)?“金融二的人数为:”+STR(B,3)USESETTALKON,4、多重循环结构格式(以当型循环结构为例):DOWHILE条件表达式1语句行序列11DOWHILE条件表达式2语句行序列21DOWHILE条件表达式3语句行序列31ENDDO3语句序列22ENDDO2语句行序列12ENDDO1,例2:编写程序打印如下的图形*,SETTALKOFFCLEARA=1DOWHILEA=7B=1DOWHILEB=8A,B+ASAY“*”B=B+1ENDDOA=A+1ENDDOSETTALKONRETURN,作业:1、编程打印如下图形:*2、试用固定次数循环的嵌套格式编写一个打印九九乘法口诀表的程序。,过程:可被调用的功能模块或能够完成某种特定功能的独立程序。,一、过程的建立与调用1、过程的建立:PROCEDURE2、过程的调用DO3、过程中的返回命令RETURN4、过程的嵌套:一个过程又调用了另一个过程,第4节过程结构程序设计,例1:用过程编写一个求和与乘积的程序。*AA.PRG调用过程BB*过程BBSETTALKOFFM=3S=1N=5P=1S=M+NDOBBP=S*N?”S=”,SRETURN?”P=”,PSETTALKONRETURN,例2:试编写一程序求解W=X!+Y!+Z!(其中:X,Y,Z的值均为一位正整数)。主程序*MAIN_1.PRG过程*SUB_1.PRGSETTALKOFFT=1INPUT“X=”TOXFORI=1TONINPUT“Y=”TOYT=T*IINPUT“Z=”TOZENDFORN=XRETURNDOSUB_1A=TN=YDOSUB_1B=TN=ZDOUSUB_1W=T+A+B?“W=”+STR(W,7)SETTALKON,例3:有一个名为SCORE的数据表,具有如下的字段:学号(C,5),姓名(C,8),政治(N,3),数学(N,3),外语(N,3),总分(N,3),平均分(N,6,2)。编写一程序,分别求出政治课、数学课和外语课的总分。*主程序CLASS.PRGSETTALKOFF*计算单科总分的过程JSZF.PRGUSESCOREGOTOPKCM=”政治”DOWHILE.NOT.EOF()T=0T=T+&KCMDOJSZFSKIPT1=TENDDOKCM=”数学”RETURNT=0DOJSZFT2=TKCM=”外语”T=0?”政治课,数学课,外语课的总分分别是:”,T1,T2,T3DOJSZFUSET3=TSETTALKON,二、过程文件1、过程文件:过程的集合2、过程文件的建立和修改:MODIFYCOMMAND3、过程文件的一般结构PROCEDURERETURNPROCEDURERETURNPROCEDURERETURN4、过程文件的打开命令格式:SETPROCEDURETO5、过程文件的关闭命令格式I:SETPROCEDURETO格式II:CLOSEPROCEDURE,*过程文件PROC.PRGPROCEDUREPROC1?”Iamfromproc1.”?”*101112131415”?”平方100121144169196225”RETURNPROCEDUREPROC2?”Iamfromproc2.”?”*101112131415”?”立方100013311728217927743375”DOPROC3RETURNPROCEDUREPROC3?”-”?”Iamfromproc3.”RETURN,*主程序MAIN.PRGCLEARSETPROCEDURETOPROCDOPROC1?”=”DOPROC2?”=”CLOSEPROCEDURERETURN,例1:编写程序,调用过程文件中的过程,并显示结果。,例2:试求3100之间的所有素数并显示之。算法:每产生一个M值则依次除以3到M的算术平方根之间的所有奇数,若均不能被整除那M为素数,然后将其显示输出;否则,M就不是素数。,主程序过程文件*MAIN_2.PRG*SUB_2.PRGSETTALKOFFPROCEDUREQSSETPROCEDURETOSUB_2FORI=3TONSTEP2FORM=3TO100STEP2IFINT(M/I)=M/II=3RETURNN=INT(SQRT(M)ENDIFDOQSENDFORENDFOR?MSETPROCEDURERETURN,三、内存变量作用域(作用域:内存变量的作用范围)1、全局变量1)指在程序的任何嵌套中及在程序执行期间始终有效的变量2)格式:PUBLIC例:在过程调用中,运用全局变量传递数据。主程序过程*MAIN_3.PRG*SUB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论