第8章结构化程序设计.ppt
《第8章结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章结构化程序设计.ppt(76页珍藏版)》请在课桌文档上搜索。
1、第8章 结构化程序设计,结构化程序设计,教学安排,教学目标掌握程序的建立、修改和运行掌握结构化程序设计的三种基本结构掌握过程和用户自定义函数的使用重点分析分支和循环结构、循环嵌套结构、过程的使用学时安排6学时(理论)+6学时(实践),结构化程序设计,本章内容,程序设计基础(补充)程序文件及其编辑环境程序中几种常用命令程序的基本控制结构过程和用户自定义函数,作业,结构化程序设计,程序设计基础(补充),程序的概念程序是计算机完成一个预定任务而设计的一个指令序列。程序的特点目的性 分步性有限性 可操作性 有序性,1.程序的概念和特点,例如:求两个数的和。Input“a=“to a Input“b=“
2、to b C=a+b?“a+b=“,c,结构化程序设计,分析问题,确定处理方案确定操作步骤编写源程序上机调试整理资料,2.程序设计的步骤,如:求二元一次方程AX2+BX+C=0的两个根。,结构化程序设计,评价程序质量标准:清晰第一,效率第二。按规范书写程序(锯齿型结构)。使用三种基本结构(顺序、选择、循环)。单入口、单出口、无死语句、无死循环。,3.结构化程序设计的特点,4.结构化程序设计的方法,自顶向下模块化逐步求精,结构化程序设计,8.1 程序文件及其编辑环境,程序文件介绍程序文件的建立和运行程序调试VFP编程特点,本节内容,结构化程序设计,8.1.1 程序文件的建立和运行,结构化程序设计
3、,程序文件Visual FoxPro系统将命令文件称为程序文件或程序。命令文件或程序文件的扩展名为.PRG命令代码包括:命令VFP可理解的操作,1.程序文件介绍,结构化程序设计,命令格式:MODIFY COMMAND 菜单方式:选择“新建/程序”功能:打开文本编辑窗口,用来建立或修改程序文件。说明:Visual FoxPro程序文件是一个扩展名为.PRG的文本文件。,例8-1求当前日期和时间的长度,并显示。,1.打开程序编辑器。2.输入程序代码。3.保存程序。,建立步骤,2.程序文件的建立,结构化程序设计,建立程序示例,例8-1程序源代码如下:,*-*程序名称:E8_1.PRG*功能:显示当前
4、日期和时间*-a=DATE()&求当前日期b=TIME()&求当前时间a1=LEN(DTOC(a)&求当前日期的长度b1=LEN(b)&求当前时间的长度?当前日期和时间:,a,b&显示日期和时间?日期和时间的长度:,a1,b1*显示日期和时间的字符串长度,结构化程序设计,命令格式:DO 菜单方式:选择“程序/运行”命令,3.程序文件的执行,注意:运行过程中,如果出现错误,可以重新进入编辑窗口进行编辑,然后再运行。,上例运行结果:,结构化程序设计,8.1.2 调试程序,调试就是为了发现程序中出现的问题及问题出现的位置并对其进行修正。,1.打开“调试器”窗口,打开方式选择“工具/调试器”命令键入d
5、ebug命令调试方法设置断点单步执行监视变量或表达式信息的变化,结构化程序设计,2.“调试器”窗口介绍,监视窗口:显示表达式及它们的当前值,并能够在表达式上设置断点。,跟踪窗口:代码运行时,用户可以利用该窗口观察到这些代码。,局部窗口:用于显示给定的程序、过程或方法程序中的所有变量、数组、对象以及对象成员。,调试输出窗口:用来显示活动程序、过程或方法程序代码的输出结果。,调用堆栈窗口:可以显示正在执行的过程、程序和方法程序。,结构化程序设计,8.1.3 Visual FoxPro编程特点,1.变量不区分大小写,对于一般的变量,建议使用规则:TypeName。,建议的变量命名约定,结构化程序设计
6、,可以直接赋值,根据赋值决定变量类型。如nAge=25,表明nAge为整型变量,初始值为25。如Flag=.F.表明lFlag为逻辑型变量,初始值是.F.。,2.变量不需预先声明,3.命令分行,程序中每条命令都以回车键结尾,一行只能写一条命令。若需分行书写,可以使用分号“;”表示续行。,4.添加注释,系统可以对整行注释和行中部分注释。整行注释使用“*”,行中注释使用“&”。,结构化程序设计,8.2 程序中几种常用命令,基本输入命令格式输入输出命令程序结尾命令,本节内容,程序基本框架,输入语句,输出语句,结构化程序设计,8.2.1 基本输入命令,格式:WAIT TO WINDOW AT,TIME
7、OUT功能:暂停程序的执行并显示提示信息,按任意键或单击鼠标后继续执行程序。说明:使用TO 子句将把按下的键以字符形式保存到指定变量中,本命令只能接一个字符。若按下的是不可打印字符或是单击鼠标,则内存变量中存储空字符。,1.WAIT命令,结构化程序设计,WINDOW AT 指定显示的信息窗口在屏幕上的位置,若省略AT 则信息窗口显示在屏幕的右上角。省略该项,则在已显示内容之后显示信息。TIMEOUT N 指定自动等待键盘或鼠标输入的秒数,该项必须放在WAIT语句的最后。缺省wait后的提示信息,将显示“按任意键继续”。,说明:,例如,WAIT 继续查询吗?(Y/N)?TO JX WAIT 请选
8、择(1/2/3):“TO XZ WINDOW TIMEOUT 3 WAIT,结构化程序设计,格式:ACCEPT TO 功能:从键盘上输入一个字符串常量给内存变量。说明:是提示语,从键盘上输入的字符串不必用定界符括起来。用来保存键盘上输入的字符串。,2.ACCEPT命令,例如,accept 请输入要查找的人名 TO name?name,结构化程序设计,格式:INPUT TO 功能:是提示语,可通过键盘输入数值型、字符型、日期型、逻辑型、货币型等数据给。说明:若输入字符型数据,一定要加定界符(与ACCEPT不同)。,3.INPUT命令,例如,INPUT 请输入姓名:TO XM INPUT 请输入出
9、生日期:TO RQ INPUT 请输入入学成绩:TO CJ INPUT 是团员吗?TO TY?XM,RQ,TY,CJ,结构化程序设计,8.2.2 格式输入输出语句,由于此语句在实际编程中很少用到,了解一下即可。,格式:Say Picture 功能:在制定的行列位置按格式输出表达式的值。,结构化程序设计,8.2.3 程序结尾命令,格式:RUTURN功能:能使程序执行结束,并返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。说明:了解另两条程序结束命令:CANCEL:它可以中止程序运行,并返回到命令窗口。QUIT:可以结束程序运行退出Visual FoxPro系统。,结构化程序设计,8
10、.3 程序的基本控制结构,顺序结构条件分支结构循环结构,本节内容,顺序结构,选择结构,循环结构,结构化程序设计,8.3.1 顺序结构,顺序结构的程序运行时按照语句序列的先后顺序,一条接一条地执行,它是程序中最基本的结构。,例8-2计算圆的周长和面积。,Clearinput 请输入圆的半径:TO r&输入半径c=2*3.14*r&计算圆的周长s=3.14*r*r&计算圆的面积?圆的周长:,c&输出周长?圆的面积:,s&输出面积,结构化程序设计,例8-3查找显示张宇飞的年龄。,ClearUse student&打开学生表Accept 请输入查询的姓名:to xm Locate for sname=
11、xm&定位要找的人?xm+“的年龄是:”+str(sage,2)&输出年龄Use&关闭表,结构化程序设计,8.3.2 条件分支结构,格式:IF ENDIF功能:首先计算的值,若其值为真,对IF与ENDIF之间的语句顺序执行,然后执行ENDIF后面的语句;若其值为假,直接执行ENDIF后面的语句。,1.简单的条件语句,简单条件语句逻辑图,结构化程序设计,简单条件查询示例,例8-4求一个数的绝对值。,Input 请输入一个数 TO x?xIF x0 x=-xENDIF?的绝对值是:,x,执行分支条件,结构化程序设计,简单条件查询示例,例8-5将徐克老师的职称改为副教授。,Use teacherLo
12、cate for tname=徐克&定位记录 If found()&如果找到 display tname,ttitle&显示记录 replace ttitle with 副教授&替换职称字段的内容 displayendifuse,思考:能不能用SQL语句解决该问题?,Update teacher set ttitle=“副教授”where tname=“徐克”,结构化程序设计,格式:IF ELSE ENDIF功能:若的值为真,先执行,然后再执行ENDIF后面的语句;若其值为假,先执行,然后执行ENDIF后面的语句。,2.带ELSE的条件语句,带ELSE的条件语句逻辑图,结构化程序设计,双分支条
13、件查询示例,例8-6上例考虑找不到记录的的情况,可以这样处理:,Use teacherLocate for tname=徐克If found()display tname,ttitle replace ttitle with 副教授 displayelse wait window 找不到徐克老师 at 10,10endifuse,结构化程序设计,格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE功能:执行多重分支操作。,3.多分支语句,结构化程序设计,多分支语句逻辑图,只能选择一个分支执行,结构化程序设计,多分支条件示例,例8-7显示当前季节。,yue=MO
14、NTH(DATE()DO CASE CASE INLIST(yue,3,4,5)jj=春 CASE INLIST(yue,6,7,8)jj=夏 CASE INLIST(yue,9,10,11)jj=秋 CASE INLIST(yue,12,1,2)jj=冬ENDCASEWAIT jj WINDOW,结构化程序设计,8.3.3 循环结构程序,循环结构循环结构是指程序在执行的过程中,程序中的某段代码被重复执行若干次。被重复执行的代码段,通常称之为循环体。VFP提供的循环语句条件循环(WHILE)步长循环(FOR)扫描循环(SCAN),结构化程序设计,格式:DO WHILE ENDDO功能:若的值为
15、真,执行,一旦遇到ENDDO自动返回DO WHILE重新判断条件是否成立,以决定是否继续循环。,1.条件循环,结构化程序设计,说明:注意设置正确的循环条件。循环体内应有改变循环条件的语句。,例8-8编写一个能够多次查找某学生记录的程序,查找字段为姓名。,结构化程序设计,yes=Y USE studentDO WHILE UPPER(yes)=Y clear accept“请输入查找姓名:”to xm LOCATE FOR sname=xm IF FOUND()DISPLAY ELSE WAIT 查无此人 WINDOW ENDIF wait“继续查找吗?”to yesENDDOUse,条件循环示
16、例源代码,循环条件,改变循环条件,结构化程序设计,格式:FOR=TO STEP ENDFOR|NEXT功能:语句执行时,通过比较循环变量值与终值来决定是否执行。步长为正数时,若循环变量值不大于终值就执行循环体;步长为负数时,若循环变量不小于终值就执行循环体。一旦遇到ENDFOR或NEXT,循环变量值即加上步长,然后返回到FOR语句重新与终值比较。STEP 一项可以缺省,步长缺省值为1。,2.步长循环,用于固定次数的循环,结构化程序设计,步长型循环语句执行流程,循环体,循环变量增加步长,循环变量获得初值,F,T,循环变量在终值内,结构化程序设计,步长型循环示例,例8-9 编写程序计算S=1+2+
17、1000之和。,clears=0for i=1 to 1000 s=s+inext?s=1+2+1000=:,s,也可以这样写:clears=0i=1Do while i=1000 s=s+i i=i+1enddo?s=1+2+1000=:,s,结构化程序设计,步长型循环示例,例8-10输入一个字符串,分别统计出其中英文字母、空格、数字和其它字符个数。,CLEARalpa=0kong=0num=0others=0accept“请输入一个字符串:”to cstr len1=LEN(RTRIM(cstr)&len1为字符串长度,结构化程序设计,FOR i=1 TO len1 ch=SUBSTR(c
18、str,i,1)IF upper(ch=A and upper(ch)=0 and ch=9&判断数字 num=num+1 ELSE others=others+1 ENDIF ENDIF ENDIFENDFOR?字符个数:+STR(alpa)+空格个数:+STR(kong)?数字个数:+STR(num)+其他字符个数:+STR(others),结构化程序设计,FOR i=1 TO len1 ch=SUBSTR(cstr,i,1)do case case upper(ch)=A and upper(ch)=0 and ch=9&判断数字 num=num+1 otherwise others=o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 程序设计
链接地址:https://www.desk33.com/p-756122.html