第6章程序设计.优秀PPT.ppt
第第6章章 程序设计程序设计v程序文件的建立与运行程序文件的建立与运行v v程序的限制结构程序的限制结构 v过程程序设计过程程序设计7.1 7.1 程序文件的建立与运行程序文件的建立与运行7.1.1 7.1.1 程序文件的建立程序文件的建立1.1.吩咐方式建立程序文件吩咐方式建立程序文件 MODIFY COMMAND MODIFY COMMAND 功能:打开程序编辑窗口,功能:打开程序编辑窗口,修改或创建程序文件。修改或创建程序文件。指定修改或创指定修改或创建的程序文件名。建的程序文件名。吩咐程序文件的扩展名是吩咐程序文件的扩展名是.PRG.PRG。2.2.在程序编辑窗口中输入吩咐在程序编辑窗口中输入吩咐 例例 编写两个变量的加法运算程序。编写两个变量的加法运算程序。步骤步骤1 1:在吩咐窗口里输入:在吩咐窗口里输入:MODIFY COMMAND CX1 MODIFY COMMAND CX1 步骤步骤2 2:在程序编辑窗口输入如下:在程序编辑窗口输入如下6 6条吩咐。条吩咐。CLEAR&CLEAR&将屏幕输出窗口内容清空将屏幕输出窗口内容清空 a=12&a=12&将数值将数值1212赋值给变量赋值给变量a a b=18&b=18&将数值将数值1818赋值给变量赋值给变量b b c=a+b&c=a+b&将变量将变量a a与与b b的和计算出来,的和计算出来,赋值给变量赋值给变量c c?a,b,c&?a,b,c&输出变量输出变量a a、b b、c c的值的值 RETURN&RETURN&表示程序结束。表示程序结束。在输入程序时,请留意以下几点:在输入程序时,请留意以下几点:a.a.一个吩咐语句中只能有一个吩咐动词;一个吩咐语句中只能有一个吩咐动词;b.b.每输入完一个语句按每输入完一个语句按“回车回车”键表示该语句键表示该语句结束;结束;c.c.每一个程序最终一般应有一个结束语句,以每一个程序最终一般应有一个结束语句,以表示该程序的结束。表示该程序的结束。3.3.程序文件的保存、打开与关闭程序文件的保存、打开与关闭(1 1)程序文件的保存)程序文件的保存 按快捷键按快捷键Ctrl+WCtrl+W将文件进行保存退出。将文件进行保存退出。或或(2 2)程序文件的打开)程序文件的打开 在吩咐窗口里,利用在吩咐窗口里,利用“MODIFY COMMAND“MODIFY COMMAND ”吩咐打开指定程序文件,进吩咐打开指定程序文件,进行编辑修改。行编辑修改。(3 3)程序文件的关闭)程序文件的关闭 a.a.单击菜单【文件单击菜单【文件(F)(F)】【关闭【关闭(C)(C)】吩】吩咐;咐;b.b.单击程序编辑窗口右上角的【单击程序编辑窗口右上角的【】关】关闭按钮;闭按钮;c.c.在在“吩咐吩咐”窗口里输入吩咐:窗口里输入吩咐:CLOSE CLOSE ALL ALL;d.d.按快捷键按快捷键Ctrl+WCtrl+W,保存并关闭程序文,保存并关闭程序文件。件。7.1.2 7.1.2 程序的运行程序的运行 吩咐方式运行程序吩咐方式运行程序 DO DO 功能:将指定的程序文件调入内存并运行。功能:将指定的程序文件调入内存并运行。说明:说明:a.a.默认程序扩展名为默认程序扩展名为.PRG.PRG,可不必输入;,可不必输入;b.b.该吩咐可在吩咐窗口里输入执行,也可以出现该吩咐可在吩咐窗口里输入执行,也可以出现在另一个程序文件中,后者可实现在一个程序中在另一个程序文件中,后者可实现在一个程序中调用另一个程序。调用另一个程序。如在吩咐窗口里输入:如在吩咐窗口里输入:DO cx1DO cx1 执行程序执行程序cx1cx1后,将在屏幕输出程序计算结果:后,将在屏幕输出程序计算结果:12 18 30 12 18 30 在程序打开并且为当前程序的状况下,单击常用在程序打开并且为当前程序的状况下,单击常用工具栏上【工具栏上【!】吩咐按钮也可以执行程序。】吩咐按钮也可以执行程序。7.1.3 7.1.3 程序中的协助吩咐程序中的协助吩咐1 1、程序书写规则:、程序书写规则:一行只能写一条语句。一行只能写一条语句。每输入完一个语句按每输入完一个语句按“回车回车”键表示该语句结束。键表示该语句结束。假如希望把一行语句分两行写,应在第一行的尾假如希望把一行语句分两行写,应在第一行的尾部键入继行符部键入继行符“;”2.2.程序注释吩咐程序注释吩咐 VFP VFP供应了供应了3 3种程序设计注释吩咐:种程序设计注释吩咐:格式格式1 1:NOTE NOTE 格式格式2 2:*功能:使功能:使 NOTE NOTE或或*后面的内容成为注释内容。后面的内容成为注释内容。格式格式3 3:&功能:功能:对对&左面的吩咐做出说明或给出左面的吩咐做出说明或给出运行结果,又称为行尾注释吩咐。运行结果,又称为行尾注释吩咐。3.3.程序结束吩咐程序结束吩咐 格式格式1 1:RETURNRETURN 功能:返回到上一级模块。假如本程序是以菜单功能:返回到上一级模块。假如本程序是以菜单方式或在吩咐窗口中调用执行的,则返回到吩咐方式或在吩咐窗口中调用执行的,则返回到吩咐交互状态即吩咐窗口。交互状态即吩咐窗口。格式格式2 2:CANCELCANCEL 功能:结束程序运行,关闭程序中全部的文件和功能:结束程序运行,关闭程序中全部的文件和变量,返回到交互状态即吩咐窗口。变量,返回到交互状态即吩咐窗口。格式格式3 3:QUITQUIT 功能:关闭功能:关闭Visual FoxProVisual FoxPro,返回到操作系统,返回到操作系统 对一个独立程序来说,一般在最终一条语句要用对一个独立程序来说,一般在最终一条语句要用RETURNRETURN吩咐,以表示程序的结束。吩咐,以表示程序的结束。7.1.4 交互式的输入吩咐 依据解决实际问题的须要,往往在程序运行的过程中,由用户向程序输入一些数据或信息,完成这种功能的一些吩咐称为交互式输入吩咐。a.a.是在屏幕上出现的提示信息。它可以是字符串,也可以是字符型内存变量,是在屏幕上出现的提示信息。它可以是字符串,也可以是字符型内存变量,此时该内存变量必需预先赋值。此时该内存变量必需预先赋值。b.b.用户在键盘输入的任何字符信息都被赋值给用户在键盘输入的任何字符信息都被赋值给“内存变量内存变量”。输入的数据将作为字符型数据处。输入的数据将作为字符型数据处理,不须要定界符括起来。理,不须要定界符括起来。c.c.输入完须要的信息后,按输入完须要的信息后,按EnterEnter键结束本吩咐的输入。假如没有输入其他信息,只输入一个回键结束本吩咐的输入。假如没有输入其他信息,只输入一个回车键,将把一个空字符赋值给内存变量。车键,将把一个空字符赋值给内存变量。1.1.字符型数据输入吩咐字符型数据输入吩咐ACCEPTACCEPT ACCEPT ACCEPT TO TO 功能:暂停程序的执行,等待用户输入一个字符串给功能:暂停程序的执行,等待用户输入一个字符串给变量变量 例例 编一程序,将学生表打开,在程序运行中输入学生姓名,编一程序,将学生表打开,在程序运行中输入学生姓名,显示指定姓名的人员记录。该程序编写步骤为:显示指定姓名的人员记录。该程序编写步骤为:步骤步骤1 1:在吩咐窗口里输入吩咐:在吩咐窗口里输入吩咐:MODIFY COMMAND CX2 MODIFY COMMAND CX2 步骤步骤2 2:在打开的程序窗口里输入如下语句:在打开的程序窗口里输入如下语句:NOTE NOTE 该程序查找指定姓名的人员信息。该程序查找指定姓名的人员信息。CLEAR CLEAR USE rsb USE rsb ACCEPT“ACCEPT“请输入要查找的姓名:请输入要查找的姓名:”TO name1”TO name1 LOCATE FOR ALLTRIM(LOCATE FOR ALLTRIM(姓名姓名)=name1)=name1 DISPLAY DISPLAY RETURN RETURN 步骤步骤3 3:按:按Ctrl+WCtrl+W保存该程序保存该程序 步骤步骤4 4:运行程序,在吩咐窗口里输入:运行程序,在吩咐窗口里输入:DO CX2 DO CX2 请输入要查找的姓名:李明请输入要查找的姓名:李明a.a.,同,同“ACCEPT”“ACCEPT”吩咐中的吩咐中的含义。含义。b.b.用户可输入任何一个合法的数值型(用户可输入任何一个合法的数值型(N N)、字符型()、字符型(C C)、日期型()、日期型(D D)、)、逻辑型(逻辑型(L L)表达式,表达式的值并将该值赋值给内存变量。)表达式,表达式的值并将该值赋值给内存变量。c.c.假如输入字符串信息,则必需加上双引号或单引号定界符,如假如输入字符串信息,则必需加上双引号或单引号定界符,如ABCABC。d.d.按按EnterEnter键结束输入,系统将表达式的值赋值给内存变量。键结束输入,系统将表达式的值赋值给内存变量。e.e.假如输入的是非法表达式,系统将提示重新输入。假如输入的是非法表达式,系统将提示重新输入。2.2.表达式输入吩咐表达式输入吩咐INPUTINPUT INPUT INPUT TO TO 功能:暂停程序的执行,接受用户输入合法表达式并功能:暂停程序的执行,接受用户输入合法表达式并将表达式的值赋值给内存变量。将表达式的值赋值给内存变量。例例 已知圆半径为已知圆半径为r r,求圆面积,求圆面积s s 假设圆的半径为假设圆的半径为r r,则计算圆面积,则计算圆面积s s的公式为:的公式为:s=r2 s=r2,计算圆面积公式的表达式为:计算圆面积公式的表达式为:3.14*r2 3.14*r2。程序编写步骤如下:。程序编写步骤如下:步骤步骤1 1:在吩咐窗口里输入:在吩咐窗口里输入:MODIFY COMMAND CX3 MODIFY COMMAND CX3 步骤步骤2 2:在打开的程序窗口里输入如下语句:在打开的程序窗口里输入如下语句:*该程序用于计算指定半径的圆的面积。该程序用于计算指定半径的圆的面积。CLEAR CLEAR INPUT INPUT 请输入圆半径请输入圆半径r=TO rr=TO r s=3.14*r2 s=3.14*r2?该圆半径为:该圆半径为:,r,r?该圆面积为:该圆面积为:,s,s RETURN RETURN 步骤步骤3 3:按:按Ctrl+WCtrl+W保存该程序文件。保存该程序文件。步骤步骤4 4:在吩咐窗口里输入运行吩咐:在吩咐窗口里输入运行吩咐:DO CX3 DO CX3 请输入圆半径请输入圆半径r=18r=18a.a.指定要显示的自定义信息。若省略该参数,指定要显示的自定义信息。若省略该参数,则显示信息则显示信息“按随意键接着按随意键接着”。例如下列吩咐显示一行有提示信息。例如下列吩咐显示一行有提示信息。WAIT WAIT 请稍后,程序将接着执请稍后,程序将接着执.“.“此时单击鼠标按键、按下键盘上随意一个按键此时单击鼠标按键、按下键盘上随意一个按键,程序接着执行程序接着执行.3.3.程序暂停、等待接收单字符吩咐程序暂停、等待接收单字符吩咐WAITWAIT WAIT WAIT TO TO 内存变量内存变量 功能:暂停程序,用户按随意键或者时间超过等待功能:暂停程序,用户按随意键或者时间超过等待的秒数后,程序接着执行。假如包含的秒数后,程序接着执行。假如包含TO TO 短语,将用户所按键盘字符赋值给指定的内存短语,将用户所按键盘字符赋值给指定的内存变量。变量。a.a.用于指定在屏幕上输出的行、列位置坐标。用于指定在屏幕上输出的行、列位置坐标。b.b.SAY SAY 用来在屏幕上输出表达式的值。用来在屏幕上输出表达式的值。c.c.c.GET c.GET 子句用来在屏幕上输入指定变量的值,且子句用来在屏幕上输入指定变量的值,且必需与必需与READREAD吩咐配套运用。吩咐配套运用。d.d.d.DEFAULT d.DEFAULT 子句用来给子句用来给GET GET 子句中的子句中的变量赋初值。变量赋初值。4.4.定位输出与输入吩咐定位输出与输入吩咐 SAY SAY GET GET DEFAULT DEFAULT 在屏幕上指定行、列位置输出指定表达式的值,在屏幕上指定行、列位置输出指定表达式的值,并且(或者)获得所指定变量的值。并且(或者)获得所指定变量的值。例 将学生表打开,新增加一条记录部分字段内容,增加完成后在阅读窗口显示数据表记录内容,关闭阅读窗口,屏幕出现等待信息,等待信息关闭,清屏并关闭数据表,程序结束。该程序如下:CLEAR USE 学生表 APPEND BLANK 3,8 SAY 请输入新职工信息:4,8 SAY “学号:”GET 学号 5,8 SAY 姓名:GET 姓名 6,8 SAY“性别:”GET 性别 READ BROWSE WAIT“程序将在按随意键后关闭.。USE CLEAR RETURN 例例 编写一个程序,依据记录号来修改学生表中的记录。该程序如下:编写一个程序,依据记录号来修改学生表中的记录。该程序如下:CLEAR CLEAR USE USE 学生表学生表 a=1 a=1 10 10,20 say“20 say“请输入记录号请输入记录号”get a”get a read read go a go a 12,20 SAY“12,20 SAY“修改该同学的信息:修改该同学的信息:14,20 SAY “14,20 SAY “学号:学号:”GET”GET 学号学号 16,20 SAY 16,20 SAY 姓名:姓名:GET GET 姓名姓名 18,20 SAY“18,20 SAY“性别:性别:”GET”GET 性别性别 READ READ BROWSE BROWSE USE USE RETURN RETURN7.2 7.2 程序的限制结构程序的限制结构 程序设计包括三种基本结构,即依次结构、程序设计包括三种基本结构,即依次结构、选择结构、循环结构。选择结构、循环结构。7.2.1 7.2.1 依次结构依次结构 依次结构是程序设计中最基本的结构,该结构依次结构是程序设计中最基本的结构,该结构依据程序吩咐出现的先后依次依次执行。其它结构依据程序吩咐出现的先后依次依次执行。其它结构作为它的组成部分而存在于程序之中。作为它的组成部分而存在于程序之中。事实上,程序中的吩咐假如不进行特殊说明,就事实上,程序中的吩咐假如不进行特殊说明,就自动按其前后排列依次执行。我们以前介绍的几个自动按其前后排列依次执行。我们以前介绍的几个例题都是依次结构程序设计题目。例题都是依次结构程序设计题目。7.2.2 7.2.2 选择结构选择结构 可分为简洁分支结构、双分支选择结构和多分支选可分为简洁分支结构、双分支选择结构和多分支选择结构。择结构。1.1.简洁分支结构简洁分支结构2.2.简洁分支结构是由简洁分支结构是由IFIF语句开头,以语句开头,以ENDIFENDIF语句结束,中语句结束,中间由若干条吩咐组成的。间由若干条吩咐组成的。3.3.IF IF 4.4.吩咐序列吩咐序列 5.5.ENDIF ENDIF6.6.a.a.假如假如 的逻辑值为的逻辑值为.T.T.,就依次执行,就依次执行 吩咐序列吩咐序列,执,执行完后就转去执行行完后就转去执行ENDIFENDIF之后的吩咐。假如之后的吩咐。假如 的逻辑值的逻辑值为为.F.F.,则干脆转到,则干脆转到ENDIFENDIF之后的吩咐。之后的吩咐。7.7.b.IFb.IF语句和语句和ENDIFENDIF语句必需成对出现,且各占一行。语句必需成对出现,且各占一行。8.8.c.c.为了程序阅读便利,便于以后维护修改,为了程序阅读便利,便于以后维护修改,吩咐序列吩咐序列 部部分最好实行向右缩进书写的方式。分最好实行向右缩进书写的方式。问题分析:设行李重量为问题分析:设行李重量为W W公斤,应付运公斤,应付运费为费为P P元,则运费公式为:元,则运费公式为:p=0.25w p=0.25w 当当W50W50 p=500.25+(w-50)0.45 p=500.25+(w-50)0.45 当当W W5050程序如下:程序如下:CLEAR CLEAR INPUT INPUT 请输入行李重量:请输入行李重量:TO w TO w P=0.25*w P=0.25*w IF w50 IF w50 P=50*0.25+(w-50)*0.45 P=50*0.25+(w-50)*0.45 ENDIF ENDIF?行李重量为:行李重量为:,w,w?应付运费为:应付运费为:,p,p RETURN RETURN 例例 铁路托运行李,按规定每张客票托运行李不超过铁路托运行李,按规定每张客票托运行李不超过5050公斤公斤时,每公斤时,每公斤0.250.25元,如超过元,如超过5050公斤,超过部分按每公斤公斤,超过部分按每公斤0.450.45元元计算。编写一个程序,把行李重量输入计算机,计算出运费。计算。编写一个程序,把行李重量输入计算机,计算出运费。依据以上分析,该问题计依据以上分析,该问题计算机程序框图算机程序框图2.2.双分支简洁结构双分支简洁结构 双分支选择结构也是由双分支选择结构也是由IFIF语句开头,以语句开头,以ENDIFENDIF语句结束,中间由若干条吩咐组成的,但其语句结束,中间由若干条吩咐组成的,但其中包含一条中包含一条ELSEELSE语句。语句。IF IF 吩咐序列吩咐序列11 ELSE ELSE 吩咐序列吩咐序列22 ENDIF ENDIF a.a.假如假如 的逻辑值为的逻辑值为.T.T.,就执行,就执行 吩咐序列吩咐序列11,执行完后就转到执行,执行完后就转到执行ENDIFENDIF之后的吩之后的吩咐。假如咐。假如 的逻辑值为的逻辑值为.F.F.,就执行,就执行 吩咐序列吩咐序列22,完成后转去执行,完成后转去执行ENDIFENDIF之后的吩咐。之后的吩咐。b.ELSE b.ELSE语句单独占一行,语句单独占一行,IFIF语句和语句和ENDIFENDIF语句必需成对出现,且各占一行。语句必需成对出现,且各占一行。例例 铁路托运行李,按规定每张客票托运行李不超过铁路托运行李,按规定每张客票托运行李不超过50公斤时,每公斤公斤时,每公斤0.25元,如超过元,如超过50公斤,超过部分按公斤,超过部分按每公斤每公斤0.45元计算。编写一个程序,把行李重量输入计元计算。编写一个程序,把行李重量输入计算机,计算出运费。算机,计算出运费。CLEARCLEAR INPUT INPUT 请输入行李重量:请输入行李重量:TO w TO w IF w50 IF w50 P=50*0.25+(w-50)*0.45 P=50*0.25+(w-50)*0.45 else else P=0.25*w P=0.25*w ENDIF ENDIF?行李重量为:行李重量为:,w,w?应付运费为:应付运费为:,p,p RETURN RETURN 1、设设计计简简洁洁分分支支程程序序。在在“员员工工信信息息表表”表表文文件件中中查查询询“刘刘明明”的的基基本本状状况况,假假如如找找到到,显显示信息,否示信息,否则显则显示示“查查无此人无此人”。1、设设计计简简洁洁分分支支程程序序。由由键键盘盘输输入入一一个个员员工工的的姓姓名名,在在“员员工工信信息息表表”表表文文件件中中该该员员工工的的基基本本状状况况,假假如如找找到到,显显示示信信息息,否否则则显显示示“查查无无此人此人”。v 例例 设计选择分支程序,在设计选择分支程序,在“ZGSJ.DBF”表文表文件中查看编号为件中查看编号为“1002”的职工的月收入,若月的职工的月收入,若月收入大于收入大于600元,显示元,显示“该职工的月收入大于该职工的月收入大于600”;否则显示;否则显示“该职工的月收入小于该职工的月收入小于600”。Use zgsjLocate for 编号编号=“1002”If found()Else“无此编号无此编号”endifIf 月收入月收入600?”该职工的月收入大于该职工的月收入大于600”Else?”该职工的月收入大于该职工的月收入大于600”3.3.分支嵌套结构分支嵌套结构 对于在分支结构中的对于在分支结构中的 ,可以包含任何,可以包含任何VFPVFP吩咐语句,也可以包括另外一个或几个合法的分支吩咐语句,也可以包括另外一个或几个合法的分支结构语句,也就是说分支结构可以嵌套。对于嵌套的结构语句,也就是说分支结构可以嵌套。对于嵌套的分支结构语句,确定留意内外层分支结构层次分明,分支结构语句,确定留意内外层分支结构层次分明,即留意各个层次的即留意各个层次的IF.ELSE.ENDIFIF.ELSE.ENDIF语句配语句配对状况。对状况。4.4.多分支选择结构多分支选择结构 Visual FoxPro Visual FoxPro供应了多分支结构来解决多种不同供应了多分支结构来解决多种不同状况下的程序选择问题。状况下的程序选择问题。DO CASE DO CASE CASE CASE 1 1 CASE CASE 2 2 .CASE CASE n n OTHERWISE OTHERWISE n+1 ENDCASE ENDCASE a.a.多分支选择结构执行的过程:系统依次推断各多分支选择结构执行的过程:系统依次推断各 是否满足,若某一是否满足,若某一 为为.T.T.,就执行该,就执行该 下的下的 ,执行后不再推断其它,执行后不再推断其它 ,而转去执行,而转去执行ENDCASEENDCASE后面的第一条吩咐。后面的第一条吩咐。假如没有一个假如没有一个 为为.T.T.,就执行,就执行OTHERWISEOTHERWISE后面的后面的 吩咐序列吩咐序列,直到,直到ENDCASEENDCASE;假如没有;假如没有OTHERWISEOTHERWISE,则不作任何操作就转向,则不作任何操作就转向ENDCASEENDCASE之后的第一条吩咐。之后的第一条吩咐。b.DO CASE b.DO CASE语句和语句和ENDCASEENDCASE语句必需成对出现,各占一行。语句必需成对出现,各占一行。c.c.多分支选择结构中各多分支选择结构中各CASECASE语句后的语句后的 是按其先后依次推断执行的,因此对是按其先后依次推断执行的,因此对实际问题进行编程时,应细致考虑各个条件排列的先后依次。实际问题进行编程时,应细致考虑各个条件排列的先后依次。DO CASEENDCASE条件条件1命令组命令组1条件条件2命令组命令组2条件条件 n命令组命令组notherwise编写一个程序编写一个程序,要求从键盘输入一个要求从键盘输入一个学生的分数学生的分数,推断该分数属于哪个等推断该分数属于哪个等级级.分数分数:60分以下为不及格分以下为不及格,60-70为及为及格格,70-80为中为中,80-90为良为良,90-100为为优优Y=依依据据键键入入的的X值值,计计算算下下面面的的分分段段函函数数值值,并并显显示示结结果。果。5X2+6X-1 (X0)X2-4X+1 (020)【例【例6-7】输入考试成果,显示成果等级的程序。(】输入考试成果,显示成果等级的程序。(90分以分以上为上为“优秀优秀”;80-89为为“良好良好”;60-79为为“合格合格”;60分以下为分以下为“不合格不合格”)。)。SET TALK OFFINPUT “输入考试成果:输入考试成果:”TO XDO CASE CASE X=90?“成果等级:优秀成果等级:优秀”CASE X=80?“成果等级:良好成果等级:良好”CASE X=60?“成果等级:合格成果等级:合格”OTHER?“成果等级:不合格成果等级:不合格”ENDCASERETU6.9 6.9 循环结构循环结构循环结构有循环结构有3 3种吩咐格式:种吩咐格式:DO WHILEENDDODO WHILEENDDOFOR ENDFORFOR ENDFORSCANENDSCANSCANENDSCAN6.2.3 6.2.3 循环结构循环结构 在程序设计中,有时须要从某处起先有规律在程序设计中,有时须要从某处起先有规律地反复执行某些类似的操作,这些类似的操作地反复执行某些类似的操作,这些类似的操作一般用循环结构程序设计来解决。在一般用循环结构程序设计来解决。在VFPVFP中,中,供应了供应了“条件循环条件循环”、“步长型步长型”和和“表扫描表扫描型型”循环结构。循环结构。1.1.条件循环结构条件循环结构 DO WHILE DO WHILE 吩咐序列吩咐序列 ENDDO ENDDO a.a.当型循环执行的过程是:依据当型循环执行的过程是:依据 逻辑值进行推断。假如逻辑值进行推断。假如 为为.T.T.,则执,则执行行 吩咐序列吩咐序列,吩咐序列吩咐序列 执行完返回到执行完返回到DO WHILEDO WHILE语句,每执行一遍就推断一次语句,每执行一遍就推断一次DO DO WHILEWHILE语句中的语句中的 。假如。假如 仍旧为仍旧为.T.T.,则接着执行,则接着执行 吩咐序列吩咐序列,直到,直到 的逻辑值为的逻辑值为.F.F.,则结束循环,转去执行,则结束循环,转去执行ENDDOENDDO之后的第一条吩咐。之后的第一条吩咐。1.1.条件循环结构条件循环结构 DO WHILE DO WHILE 吩咐序列吩咐序列 ENDDO ENDDOb.DO WHILEb.DO WHILE和和ENDDOENDDO语句应配对运用,各语句应配对运用,各占一行。占一行。c.c.在在 吩咐序列吩咐序列 的适当位置可以放置的适当位置可以放置EXITEXIT和和LOOPLOOP语句,用以对循环过程作特殊语句,用以对循环过程作特殊处理。处理。EXITEXIT的功能是:终止本层循环吩咐。的功能是:终止本层循环吩咐。LOOPLOOP语句的功能是:终止本次循环吩咐。语句的功能是:终止本次循环吩咐。循环结构流程图循环结构流程图6.9 6.9 循环结构循环结构Do While Do While 条件条件 loop loop enddoenddoDO WHILE DO WHILE 条件条件 EXIT EXIT ENDDOENDDO例例5计算计算1+2+10的值的值set talk offcleara=1s=0do While a=10 s=s+a a=a+1enddo?“s=“,sSet talk onsa00+10+1+21+2+31+2+3+41+2+61+2+71+2+81+2+91+2+1012345678910116.9 6.9 循环结构循环结构【例】编程计算【例】编程计算S=1+2+3+100【例】编程计算【例】编程计算S=1+3+5+99【例】编程计算【例】编程计算S=2+4+6+100【例】输出【例】输出100-300之间全部能被之间全部能被7整除的数整除的数 基本结构(循环次数已知状况下)基本结构(循环次数已知状况下)a=1(定义一个变量,确定循环起先的数)(定义一个变量,确定循环起先的数)do While a=90 k1=k1+1 CASE 成果成果70 k3=k3+1 OTHERWISE k2=k2+1 ENDCASE SKIPENDDO?90分的人数的个数:分的人数的个数:+STR(k1)?7090人数的个数:人数的个数:+STR(k2)?70以下人数的个数:以下人数的个数:+STR(k3)USE6.9 6.9 循环结构循环结构对表的操作。用对表的操作。用NOT EOF()或或FOUND()作为循作为循环条件进行推断,循环体内必需含有指针移动的环条件进行推断,循环体内必需含有指针移动的语句。语句。基本结构:基本结构:USE LOCATE FOR DO WHILE .NOT.EOF()(或或 FOUND()CONTINUE ENDDO例:试编一个程序例:试编一个程序,显示显示“学生表学生表.DBF”中全部入学中全部入学成果超过成果超过490分的学生名单。分的学生名单。例:统计例:统计“职工数据表职工数据表”中女职工的人数中女职工的人数v计算计算1+2+3,当和大于,当和大于1000时退出时退出循环循环v(2)在永真循环中。一般用于循环次数不定)在永真循环中。一般用于循环次数不定的状况下,在循环体内依据条件执行的状况下,在循环体内依据条件执行EXIT吩吩咐退出循环。其基本形式如下:咐退出循环。其基本形式如下:v DO WHILE .T.v v IF X=结束标记结束标记v EXITv ENDIFv v ENDDO2.2.步长型循环结构步长型循环结构FOR FOR=TOTOSTEP STEP 吩咐序列吩咐序列 ENDFOR|NEXT ENDFOR|NEXT a.a.、都是数值表达式;当都是数值表达式;当 是是1 1时,可以省略时,可以省略STEPSTEP子句。子句。b.ENDFOR b.ENDFOR或或NEXTNEXT语句为循环终端语句,用以标明本循环结构的终点。该语句必需语句为循环终端语句,用以标明本循环结构的终点。该语句必需和和FORFOR语句配对运用。语句配对运用。2.2.步长型循环结构步长型循环结构FOR FOR=TO TOSTEPSTEP 吩咐序列吩咐序列 ENDFOR|NEXT ENDFOR|NEXT c.c.该循环结构的执行过程是:首先将初值赋值给循环变量,然后推断循环变量的值该循环结构的执行过程是:首先将初值赋值给循环变量,然后推断循环变量的值是否超过终值,不超过就执行循环体,遇到是否超过终值,不超过就执行循环体,遇到ENDFORENDFOR或或NEXTNEXT语句,自动使循环变量增加一语句,自动使循环变量增加一个步长值,再将循环变量的值与终值比较,假如循环变量的值不超过终值,就再执行循个步长值,再将循环变量的值与终值比较,假如循环变量的值不超过终值,就再执行循环体,不断循环执行。假如循环变量的值超过终值则转去执行环体,不断循环执行。假如循环变量的值超过终值则转去执行ENDFORENDFOR或或NEXTNEXT语句后面的语句后面的第一条语句。第一条语句。d d.在循环体内的适当位置也可以放在循环体内的适当位置也可以放置置EXITEXIT和和LOOPLOOP语句,作用和用法与条语句,作用和用法与条件循环结构类似。件循环结构类似。2.2.步长型循环结构步长型循环结构FOR FOR=TO TOSTEPSTEP 吩咐序列吩咐序列 ENDFOR|NEXT ENDFOR|NEXT For n=For n=初值初值 to to 终值终值 step step 步长步长 exit exit enddo enddo循环结构流程图循环结构流程图2.步长型循环结构步长型循环结构For n=For n=初值初值 to to 终值终值 step step 步长步长 loop loop enddoenddo 例例 求求1+2+3+99+1001+2+3+99+100的值。的值。问题分析:接受累加的方法,用循环变量产生问题分析:接受累加的方法,用循环变量产生1 1、2 2、3 3、9999、100100这些数。用这些数。用s s保存累加和,保存累加和,s s的初始值为的初始值为0 0,每次循环将,每次循环将s s加上循加上循环变量的值,再赋值给变量环变量的值,再赋值给变量s s,循环结束即求得,循环结束即求得S S。程序为:。程序为:CLEARCLEARs=0s=0FOR FOR x=1x=1 TO TO 100100 step step 1 1 s=s+x s=s+xENDFORENDFOR?1-100?1-100自然数累加和是:自然数累加和是:,s,sRETURNRETURN【例】编程计算【例】编程计算S=1+2+3+100【例】编程计算【例】编程计算S=1+3+5+99【例】编程计算【例】编程计算S=2+4+6+100【例】输出【例】输出100-300之间全部能被之间全部能被7整除的数整除的数 基本结构(循环次数已知状况下)基本结构(循环次数已知状况下)For a=1(循环起先的数)(循环起先的数)to a=(终止的数)(终止的数)(step 步长)步长)(执行某项任务)(执行某项任务)endfor?“s=“,s(输出结果)(输出结果)return循环结构的类型:循环结构的类型:1、条件循环:、条件循环:(常用)(常用)吩咐格式:吩咐格式:do while enddo 2、步长循环、步长循环 吩咐格式:吩咐格式:For 变量变量=数表数表1 to 数表数表2 STEP 数表数表3 语句序列语句序列 endfor|next一个循环结构一般应具备如下的条件:一个循环结构一般应具备如下的条件:(1)循环的初始条件:一般为给循环)循环的初始条件:一般为给循环限制变量赋初值;限制变量赋初值;(2)循环头:循环语句的起始,设置、)循环头:循环语句的起始,设置、推断循环条件;推断循环条件;(3)循环尾:循环语句的结尾;)循环尾:循环语句的结尾;(4)循环体:位于循环头和循环尾之)循环体:位于循环头和循环尾之间、循环限制重复执行的语句序列间、循环限制重复执行的语句序列 6.9 6.9 循环结构循环结构Do while enddo 和 forendfor的区分求求s=1+2+3+99+100S=0N=1Do while nS S=S+N N=N-2ENDDO?SRETURN阅读下列程序,写出运行结果(每题阅读下列程序,写出运行结果(每题3分)分)2、SET TALK OFFSET TALK OFF STORE 2 TO M STORE 2 TO M,N N DO WHILE M14 DO WHILE M=10 EXIT ENDIF A=A+2 S=S+AENDDO?A,S阅读下列程序,写出运行结果(每题阅读下列程序,写出运行结果(每题3分)分)4、USE RSDAGZH=0DO WHILE.NOT.EOF()()GZH=GZH+基本工资基本工资 SKIPENDDO?GZHRETURNvUSE STUUSE STUvGO 8GO 8vIF IF 团否团否v DISPLAY DISPLAY 姓名姓名vELSEELSEv DISPLAY DISPLAY 入学成果入学成果vENDIFENDIFvUSEUSE6、STORE 0 TO M,NDO WHILE.T.N=N+2 DO CASE CASE INT(N/3)*3N LOOP CASE N10 EXIT OTHERWISE M=M+N ENDCASEENDDO?M=,M,N=,NRETURN7、USE ZGSJRS1=0RS2=0DO WHILE.NOT.EOF()()IF 性别性别=男男 RS1=RS1+1 ELSE RS2=RS2+1 ENDIF SKIPENDDO?RS1,RS2RETURN 阅读下列程序,写出运行结果(每题阅读下列程序,写出运行结果(每题3分)分)8、SET TALK OFF S=0 FOR I=1 TO 6 STEP 2 Q=I*2?Q S=S+Q ENDFOR?S SET TALK ON阅读下列程序,写出运行结果(每题阅读下列程序,写出运行结果(每题3分)分)9、SET TALK OFFS=0FOR N=1 TO 7 STEP 2 N=N+1 S=S+NENDFOR?S,NSET TALK ONv SET TALK OFFvFILE=“RSDA”vUSE&FILEvLIST FOR 性别性别=“男男”vUSEvSET TALK ON vRETURN vCLEARv Y=等级考试等级考试v X=vL=LEN(Y)vFOR I=L-1 TO 1 STEP-2v X=X+SUBSTR(Y,I,2)vENDFORv?X 阅读下列程序,写出运行结果阅读下列程序,写出运行结果 vA=BvB=CvC=Av?&A+&B+&C阅读下列程序,写出运行结果阅读下列程序,写出运行结果 v SET TALK OFFvA=BvB=1vC=+v?&Av?&A.&C.&AvSET TALK ON 3 3、表扫描循环结构、表扫描循环结构 SCAN SCAN FOR FOR 1 吩咐序列吩咐序列