您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > (第7章)程序设计基础
1第7章结构化程序设计基础2教学内容程序设计概述程序的基本结构子程序、过程和函数教学目的掌握程序的建立、维护和调用方法掌握三种基本程序结构的设计应用重点:三种基本程序结构难点分支与循环3程序是用来完成某一具体任务而编制的一组依次执行的命令(语句)序列VFP工作方式:命令方式、菜单方式、程序方式VFP可同时应用面向过程和面向对象的编程方法为对象的事件编写的代码就是程序可以创建和运行独立的程序文件程序文件的扩展名为.PRG程序设计概述4建立程序文件(三种方法)菜单方法“文件”菜单/“新建”/“程序”/“新建文件”项目管理器项目管理器中/“代码”选项卡/“程序”/“新建”命令命令方式:在命令窗口中输入:MODIFYCOMMAND文件名5修改程序“文件”菜单/“打开”命令→可重新打开程序文件的编辑窗口在项目管理器/“代码”选项卡→选择中要修改的程序/“修改”命令在命令窗口中输入MODIFYCOMMAND文件名6程序文件的保存“文件”菜单/“保存”命令或“另存为”命令按Ctrl+W组合键,若事先没有指定程序文件名,也会出现“另存为”对话框,输入文件名后,单击“保存”按钮即可。7执行程序程序编辑结束后,必须保存后才能执行。“程序”菜单/“运行”命令→“运行”对话框,选取要执行的程序代码文件→单击“运行”按钮在命令窗口中输入命令DO程序文件名特别注意:如果程序没有进行编译,而且程序中存在错误,则在执行过程中VFP会指出程序错误,出现程序错误窗口。此时,可以单击“取消”按钮,终止程序执行8程序的基本结构在编写程序时,程序中命令有的是按顺序依次执行的,但在更多程序中需要进行判断或者重复执行某段程序。这就要有控制程序走向的命令。程序的走向不同,也就产生了不同的程序结构。VFP中,常见的程序结构有三种顺序结构分支结构循环结构9程序注释命令NOTE注释*注释&&注释相关语言知识点介绍10程序开始命令设置每一个命令运行的结果是否显示格式:SETTALKON|OFFOFF(屏幕上只显示输出命令运行的结果)状态栏是否显示格式:SETSTATUSON|OFF设置系统默认工作目录格式:SETDEFAULTTO[盘符:][路径]清屏命令格式:CLEAR11程序结尾命令返回格式:RETURN目的:从运行返回代码界面退出格式:QUIT目的:退出VFP编程环境12简单输入/输出命令INPUT命令(接收所有类型数据)格式:INPUT[表达式]TO内存变量功能:暂停程序的运行,等待键盘输入数据说明:输入的类型:数值型、字符型、逻辑型日期型输入字符型的数据时,输入的数据需要加定界符(单引号、双引号、中括弧)当输入数据的类型是逻辑常量时,该数据需要两个句点括起来,如.t.输入日期型数据时,需要用大括弧括起来比如:{^2009-2-14}13简单输入/输出命令ACCEPT命令(只接收字符型数据)格式:ACCEPT[字符表达式]TO内存变量WAIT命令(只接收一个字符)格式:WAIT[“提示信息”][TO内存变量]注意:输入的数据都被认为是字符型。?/??(输出命令)格式:?表达式??表达式14格式输入/输出命令格式输入/输出命令(使用较少)@行,列[say表达式1][get变量名][default表达式2]read说明:1、“SAY”子句用来输出(显示)数据2、“GET”子句用来输出或编辑“变量名”所指定变量的数据3、GET子句中的变量必须先赋初值,或用DEFAULT子句指定初值4、GET子句的变量必须用READ命令来激活1516顺序结构每一个操作是按从上到下的线性顺序执行。一个计算机程序通常可分为三个部分即输入、处理和输出。结构流程顺序结构程序模块a程序模块b电气信息学院计算机系例1:输入2个数字,要求使得这2个数实现交换,并把交换之后的数重新输出。ACB电气信息学院计算机系19引入原因1、顺序程序的执行是按照程序的书写顺序执行的,即程序走过的路径是线性的,遇到较为复杂的问题则无法解决;2、程序中经常需要根据条件进行分析、比较和判断,并根据判断结果采取不同的操作。选择结构IF条件DOCASE多分支结构分支(选择)结构201、单分支程序格式iF条件命令组1ENDiF功能:如果条件成立,则执行命令组1,否则执行ENDIF后面的语句。IF条件语句条件?命令组1ENDIF语句的下一语句.t..f.21例2:要求输入2个数字,并分别显示,求其中最大的数给变量max例3:判断学生的成绩级别2223242、IF双分支程序格式iF条件命令组1ELSE命令组2ENDiF功能:如果条件成立,则执行命令组1,否则执行命令组2。成立不成立条件?命令组1命令组2ENDIF语句的下一语句25例4:打开成绩管理数据库,在“student”表中按学生姓名查找学生。要求输入学生姓名,如果找到了,显示结果;如果没有找到,就显示查无此人。(参看P189_例7-8)26273.多向分支程序命令格式DOCASECASE条件1命令组1CASE条件2命令组2……CASE条件n命令组n[OTHERWISE命令组n+1]ENDCASE…….条件2模块1模块2模块nENDCASE语句的下一语句条件1条件n…….OTHER命令组.F..F..F..T..T..T.28例5:输入学生成绩,要求当成绩小于60分时,输出“不及格”,当成绩在60至69分之间时,输出“及格”,当成绩在70至79分时,输出“中”,当成绩在80至89分之间时,输出“良”,当成绩在90至100分之间时,输出“优”。29301.FOR语句(计数循环)P194语句格式:FOR变量=初值TO终值[STEP步长]命令组ENDFOR|NEXT其中初值、终值、步长都是数值表达式,默认步长为1循环结构31.F.命令组ENDFOR后语句变量=初值变量=终值?变量=变量+步长.T.具体执行步骤:(1)给变量赋初值;(2)判断变量的值是否小于等于终值;(3)若不是,则循环结束;(4)若是,则执行语句序列(5)变量=变量+步长(若省略STEP,则步长=1);(6)转(2)。32例6:编写程序求1~100的累加和(参看P195例7-11)思考:如何求1+4+7+10+…+10033例:编写程序求阶乘,计算N!,其中N由用户自己输入。(参看P196例7-12)34例7编写程序求水仙花数。水仙数是一个三位数,而且每一位上的数字的立方和相加等于这个数字本身。例如153就是水仙花数。35362.DOWHILE语句(当循环)P192语句格式:DOwhile条件命令组ENDDO条件?成立不成立命令组ENDDO语句的下一语句37说明:Dowhile“条件”是循环的开始,而enddo是循环结束语句。条件是一个逻辑表达式该循环用于循环次数未知的情况。一般是有条件执行的,当满足某条件时才能执行到它们。38在编写当型循环结构时,常用的“条件”格式为:1、dowhilenoteof()中的条件是:当表文件记录指针尚未移到末尾时为真2、dowhilex=93、dowhilex0andx10039例8:打开成绩管理数据库,在“student”表中显示表中学生的姓名和该生的年龄。参考P192例7-1040Skip命令参看课本P87页413.SCAN语句(扫描循环)P196语句格式:SCAN[范围][FOR条件]命令组ENDSCAN说明:循环仅适用于表文件中的循环,SCAN循环能自动跳到下一个满足条件的记录。条件?.T..F.命令组ENDSCAN后语句打开表文件EOF()!=.T.?记录指针下移一条.T..F.42例9:用SCAN…ENDSCAN语句显示“student”表中学生的姓名和年龄。43例10:打开成绩管理数据库,在“student”表中统计学生表中女生的人数。用SQL语句分组统计student表中男生和女生的人数。4445/23循环嵌套循环嵌套:在一个循环体内包含另外一个完整的循环结构。说明内循环变量与外循环变量不能同名。外循环必须完全包含内循环,不能交叉。外循环执行一次,内循环执行一遍。正确的嵌套格式:46/23①Fori=Forj=endforendfor③DoWhile条件Forj=endforenddo④DoWhile条件DoWhile条件enddoenddo②Fori=DoWhile条件enddoendfor47例如:计算1!+2!+3!+…+10!48497.7子程序、过程和函数程序中有些程序段经常被重复执行,如把这些公共的程序段与主程序分开,定义成独立的程序,就是过程或函数。这样可以降低程序的长度和复杂性,程序也便于维护。函数和过程的主要区别是函数有返回值,而过程没有返回值。507.7.1过程(P204)1.定义过程命令格式:Procedure过程名[Parameters形式参数表]过程体Return2.调用过程命令格式:DO过程名With参数1,参数2...51编写求N!阶乘的过程52doSub1命令行doSub1命令行doSub2命令行MainSub1returnSub2doSub3命令行returnSub3return过程的调用与返回示意图53例13:编写程序计算:M=1!+2!+3!+...+10!54说明1、每个过程实际上是一个独立的子程序。2、“过程体”是由完成特定功能的命令组成3、过程以return表达式作为结束语句,调用过程用do过程名with参数4、过程一般也是先写主程序,最后编写过程557.7.2自定义函数1.自定义函数命令格式:Function函数名[Parameters形式参数表]函数体Return表达式Endfunc2.函数的调用函数名(实在参数表)56编写求N!阶乘的函数57例14编写函数实现1!+3!+5!58说明:1、自定义函数不能作为一个独立的程序文件使用,而应该放在调用程序的后面2、实参可以是变量、常量、表达式。实参的顺序必须与parameters后面形式参数表中的形参一一对应,否则出错。59变量的作用范围1、公用变量在所有的程序和子程序中都有效的变量。格式:Public变量名表说明:在程序中凡用该命令定义的变量为全局变量,除此之外均为私有变量。另外,在命令窗口中定义的变量均为全局变量,不须用上述命令加以说明。602、私有变量在本程序以及直接或间接调用的下级程序中有效的变量。格式:Private变量名表说明:当在程序中用赋值命令建立变量时,所建立的变量都是私有变量。所以,私有变量一般可不用专门的命令定义。但当调用程序中的全局变量或私有变量与被调用程序中私有变量同名,为避免使用混淆,在被调用程序中必需使用该命令将调用程序中的全局变量或私有变量暂时隐藏起来,当被调用程序执行完毕,返回调用程序,被隐藏的变量自动恢复。613、本地变量仅在创建它的过程和函数内部使用和修改的变量。变量不能被调用它或它调用的程序中访问。格式:LOCAL变量名表注意:一旦包含本地变量的过程或函数执行完毕,该变量就被释放。62分析结果是什么?如果去掉private或改成local63课堂测试:1、分别统计1~100中,数字是3的倍数的个数,统计数字是7的倍数的个数?
本文标题:(第7章)程序设计基础
链接地址:https://www.777doc.com/doc-7534634 .html