第
This presentation is the property of its rightful owner.
Sponsored Links
1 / 56

第 6 章 程序设计基础 PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on
  • Presentation posted in: General

第 6 章 程序设计基础. 本章主要内容. 程序设计的基本概念 程序文件建立与运行 三种程序控制结构 程序调试. 程序设计的基本概念. 一、 VFP 的工作方式 命令工作方式(或交互工作方式) 通过菜单选择的方法或在命令窗口中逐条输入命令的方法来执行的。 程序工作方式 根据解决实际问题的需要,将一系列符合 Visual FoxPro 要求的命令按一定的逻辑结构编排成一个完整的应用程序,然后输入到计算机内自动地、连续地加以执行。. 程序设计的基本概念. 二、 VFP 的编程方式 面向过程编程方式

Download Presentation

第 6 章 程序设计基础

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6

第6章 程序设计基础


6

本章主要内容

  • 程序设计的基本概念

  • 程序文件建立与运行

  • 三种程序控制结构

  • 程序调试


6

程序设计的基本概念

一、VFP的工作方式

  • 命令工作方式(或交互工作方式)

    通过菜单选择的方法或在命令窗口中逐条输入命令的方法来执行的。

  • 程序工作方式

    根据解决实际问题的需要,将一系列符合Visual FoxPro要求的命令按一定的逻辑结构编排成一个完整的应用程序,然后输入到计算机内自动地、连续地加以执行。


6

程序设计的基本概念

二、 VFP的编程方式

  • 面向过程编程方式

    用结构化编程语言来编写结构化的程序,它把一个复杂的程序分成较小的过程,每个过程可以单独进行调试。

  • 面向对象编程方式

    用面向对象的技术编程,它把编程工作主要集中在描述的对象上,程序是事件驱动的,在执行过程中,等待的是一个事件。

对于制作简单短小的应用程序,使用过程编程方式比较容易,同时,这也是面向对象编程方式的基础。本章重点介绍面向过程的程序设计。


6

程序设计的基本概念

三、程序设计的步骤

  • 分析问题或任务,总结或抽象出问题的数学模型

  • 根据数学模型确定解决问题的算法思想

  • 确定要建立的数据表或数据库的基本结构及其数据表之间的关系

  • 画出程序流程图

  • 编写程序,实现功能要求,并在计算机上调试通过

  • 用典型数据对所编写的程序进行测试,验证程序的可靠性

  • 编写使用说明书,整理有关资料,进行总结


6

6.1 程序文件建立与运行

  • 程序文件

    程序是由命令组成的ASCII码文本文件,所以程序文件也称为命令文件。该文件可用任何文本编辑器或字处理软件来建立。

  • 程序文件扩展名

    源文件的扩展名是.PRG,程序在运行时,会产生主文件名与.PRG程序主文件名相同,扩展名为.FXP的目标文件。


6 1 1

6.1.1 程序文件建立

建立程序最简单的方法是用系统本身提供的编辑器。 VFP有2种方式进入程序编辑器窗口:菜单方式和命令方式


6

菜单方式建立程序文件

单击“新建文件”命令按钮

程序编辑窗口标题栏,显示程序的文件名,这里“程序1”为临时文件名,可以保存为其他文件名。

用菜单建立程序的步骤为:

  • 单击菜单“文件”→“新建”命令或者单击常用工具栏的“新建”按钮,打开“新建”对话框。

  • 打开“程序1”的程序编辑新窗口。

在插入点“|”后可输入程序需要的命令。

选择“程序”单选按钮


6

命令方式建立程序文件

在“查找范围”下拉列表框选择程序所在或要保存的文件夹。

格式:MODIFY COMMAND [<程序文件名>]|?

功能:打开程序编辑窗口,从中可以修改或创建程序文件。

几点说明:

  • <程序文件名>:指定修改或创建的程序文件名。

  • 如果用MODIFY COMMAND ?,则出现“打开”对话框,如图所示。

在“文件名”文本框输入要创建的文件名;如果选择了一个已存在的文件,该文件名也会出现在该处。

单击“确定”按钮,进入程序编辑窗口修改或编写程序。

在“文件类型”下拉列表框选择文件类型。


6

命令方式建立程序文件

在用命令建立程序文件时,最好在命令后加上程序文件名,这样可以直接创建或修改用户给出的程序文件。

建好的文件将保存在“默认目录”指定的文件夹下,默认的扩展名是.PRG。如果需要保存在其它文件夹下,还可在命令中指定路径。如:

MODI COMM D:\excercise\example

注意:这里的命令动词“MODIFY COMMAND”用了简写形式。


6

程序输入与保存

[例 6-1] 在程序编辑窗口输入如下6条命令。

CLEAR &&将屏幕输出窗口内容清空

a=12 &&将数值12赋值给变量a

b=18 &&将数值18赋值给变量b

c=a+b &&将变量a与b和计算出来,赋值给变量c

?a,b,c &&输出变量a、b、c的值

RETURN &&表示程序结束

CLEAR

a=12

b=18

c=a+b

?a,b,c

RETURN

打开程序编辑窗口,即可输入上述程序代码,如图所示。


6

程序输入与保存

在输入一个程序时,请用户注意以下几点:

  • 一个命令语句中只能有一个命令动词。

  • 每输入完一个语句按回车键表示该语句结束。

  • 程序中用到的所有作为“分隔符号”的标点符号一律用英文半角符号。

  • 输入或修改结束按“Ctrl+W”存盘,“Ctrl+Q”取消本次输入或修改结果。还可使用“文件”→“另存为”命令将编辑好的程序以另外的名称存盘。


6 1 2

6.1.2 程序运行

通过“查找范围”下拉列表框确定文件所在的文件夹。

  • 菜单方式运行程序

    单击菜单“程序”→“运行”命令,打开“运行”对话框。选定定要执行的程序文件,如选择:cx1 ,单击“运行”按钮,如图所示。

选择要执行的文件(即单击该文件)。

单击“运行”按钮执行程序。

选择的文件出现在“执行文件”文本框中。


6 1 21

6.1.2 程序运行

  • 命令方式运行程序

    格式:DO <程序文件名>

    功能:将指定的程序文件调入内存并运行。

    如在命令窗口里输入:DO cx1

    将在屏幕输出程序计算结果:

    12 18 30


6 1 22

6.1.2 程序运行

  • 单击常用工具栏上“!”命令按钮执行该程序

    在程序打开并且为当前程序的情况下,单击常用工具栏上“!”命令按钮可执行该程序。


6 1 23

6.1.2 程序运行

  • 程序错误对话框

    在程序执行过程中,如果程序出现运行错误或用户按下了“Esc”键,将弹出“程序错误”对话框,如图所示。

单击“挂起”按钮,可暂时停止程序的运行,可在命令窗口里输入命令:RESUME,或单击菜单“程序”→“继续执行”命令可继续执行程序 。

单击“帮助”命令按钮可提示相关帮助信息。

单击“取消”按钮可取消程序的执行。

单击“忽略”命令按钮忽略程序的错误继续执行程序 。


6 1 3

6.1.3 程序辅助命令

以前介绍的所有Visual FoxPro命令都可以用在程序设计中。另外Visual FoxPro还提供了一些辅助命令,这些命令能使程序更好地阅读和有效地运行。本小节介绍:

  • 程序注释命令

  • 程序结束命令

  • 信息对话框函数MESSAGEBOX


6

程序注释命令

Visual FoxPro提供了3种注释命令:

格式1: NOTE <注释内容>

格式2: * <注释内容>

功能:使 NOTE或* 后面的内容成为注释内容。

格式3:[<命令>] &&<注释内容>

功能:<注释内容>对&&左面的命令做出解释或给出运行结果,又称为行尾注释命令。


6

程序结束命令

格式1:RETURN

功能:返回到上一级模块。如果本程序是以菜单方式或在命令窗口中调用执行的,则返回到命令交互状态。

格式2:CANCEL

功能:终止程序运行,清除程序中的私有变量,返回到命令窗口。

格式3:QUIT

功能:关闭Visual FoxPro,返回到操作系统。


Messagebox

信息对话框函数MESSAGEBOX

信息对话框的“标题”部分。

MessageBox函数用于显示一个信息对话框,可以在程序运行过程中,显示一些信息,例如提示信息、错误信息等。其构成如图所示。

信息对话框的“提示信息”部分。

信息对话框的“图标”部分。

信息对话框的“按钮”部分。


Messagebox1

信息对话框函数MESSAGEBOX

格式:

MESSAGEBOX(<字符表达式1>[,<数值表达式>[,<字符表达式2>]])

功能:供用户定义信息对话框,按下相应的按钮返回一个数值。

说明:

  • <字符表达式1>用于指定在对话框中显示的信息文本。

  • <数值表达式>用于根据表6-1的内容设置对话框中的按钮、图标和默认按钮,缺省该参数表示取0。


Messagebox2

信息对话框函数MESSAGEBOX

  • <字符表达式2>用于指定对话框标题栏的显示文本。缺省该参数表示在标题栏显示“Microsoft Visual FoxPro”。

  • 函数值返回一个数值,用户可根据操作时按下的按钮来获得相应的返回值,返回值见表6-2,用户编程时根据返回值来设置动作。


Messagebox3

信息对话框函数MESSAGEBOX

[例 6-3] 在信息对话框中使用2个按钮“是”和“否”,使用“问号”图标,默认按钮为第二个按钮,显示“真的要退出系统吗?”信息,对话框标题为“提示信息”。

在命令窗口里输入:

a=MESSAGEBOX("真的要退出系统吗?",4+32+256,"提示信息")

就会显示如图所示的信息对话框。


6 1 4

6.1.4 交互式输入命令

根据解决实际问题的需要,往往在程序运行的过程中,由用户向程序输入一些数据或信息,完成这种功能的一些命令称为交互式输入命令。Visual FoxPro提供了多种交互式输入命令。本小节介绍三种命令:

  • ACCEPT

  • INPUT

  • WAIT


Accept

字符型数据输入命令ACCEPT

格式:ACCEPT [<提示信息>] TO <内存变量>

功能:暂停程序的执行,等待用户输入一个字符串给变量。

说明:

(1)[<提示信息>],是在屏幕上出现的提示信息。它可以是字符串,此时必须用双引号将其括起来,也可以是字符型内存变量,该内存变量必须预先赋值。

(2)用户在键盘输入的任何字符信息都被赋值给“内存变量”。输入的数据将作为字符型数据处理,不需要定界符括起来,如果输入了定界符,则这些定界符也被作为输入字符的一部分。

(3)输入完需要的信息后,按“Enter”键结束本命令的输入。如果没有输入其他信息,只按回车键,将把一个空字符串赋值给内存变量。


Accept1

ACCEPT使用举例

[例 6-4] 编一程序,将人事数据表打开,在程序运行中输入人员姓名,显示指定姓名的人员记录。

程序代码如下:

NOTE 该程序用于从人事数据表中查找用户指定姓名的人员信息。

CLEAR

USE rsb

ACCEPT "请输入要查找的姓名:" TO name

LOCATE FOR ALLTRIM(姓名)=name

DISPLAY

RETURN


Input

表达式输入命令INPUT

格式:INPUT[<提示信息>] TO <内存变量>

功能:暂停程序的执行,接受用户输入合法的表达式并将表达式的值赋值给内存变量。

说明:

(1)[<提示信息>],同“ACCEPT”命令中的[<提示信息>]。

(2)用户可输入任何一个合法的数值型(N)、字符型(C)、日期型(D)、逻辑型(L)表达式,系统先计算表达式的值并将该值赋值给内存变量。

(3)如果输入字符串信息,则必须加上双引号或单引号定界符,如"ABC"。

(4)按“Enter”键结束输入,如果输入的是非法表达式,系统将提示重新输入。


Input1

INPUT使用举例

[例 6-5] 已知圆半径为r,求圆面积s(要求四舍五入保留三位小数)。

分析:假设圆的半径为r,则计算圆面积s的公式为:s=πr2,计算圆面积公式的Visual FoxPro表达式为:PI()*r^2 。程序代码如下:

* 该程序用于计算用户指定半径的圆的面积。

CLEAR

INPUT "请输入圆半径r=" TO r

s=ROUND(PI()*r^2,3) &&PI()为圆周率函数π,ROUND函数为四舍五入函数

?"该圆半径为:",r

?"该圆面积为:",s

RETURN


6

接收单字符命令WAIT

说明:

格式:WAIT [<提示信息>] [TO <内存变量>] [WINDOWS [AT <行坐标>,<列坐标>]] [TIMEOUT<等待秒数>] [NOWAIT]

功能:暂停程序,用户按任意键或者时间超过等待的秒数后,程序继续执行。如果包含[TO <内存变量>]短语,将用户所按键盘字符赋值给指定的内存变量。

(3)TIMEOUT <等待秒数>:指定在执行 WAIT 命令之后,程序暂停的时间,<等待秒数>参数指定等待的时间秒数。

(4)NOWAIT子句指在前述指定的Windows窗口中显示WAIT信息的同时,程序继续执行而不暂停。

(1)[<提示信息>],指定要显示的自定义信息。若省略该参数,则 Visual FoxPro 显示默认的信息“按任意键继续……”。如果该参数为空字符,则不显示信息。

(2)[WINDOWS]:在 Visual FoxPro 主窗口右上角的系统信息窗口中,显示提示信息。如果指定[AT <行坐标>,<列坐标>],则该窗口在指定屏幕坐标位置显示。


6

WAIT使用举例

下列命令将在屏幕16行、16列位置处显示一含有提示信息的小窗口,如图所示,此时单击鼠标按键、按下键盘上任意一个按键或小窗口在屏幕上停留7秒后,从屏幕上消失。

WAIT "请稍后,程序将继续执行......。" WINDOWS AT 16,16 TIMEOUT 7


6

课堂提问

  • 程序设计的步骤有哪些?

  • 进入程序编辑器窗口的方法有哪2种?

  • 进入程序编辑器窗口的命令是什么?


6

6.2 程序控制结构

结构化程序包括三种基本结构,即

  • 顺序结构

  • 选择结构

  • 循环结构


6 2 1

6.2.1 顺序结构

顺序结构是程序设计中最基本的结构,该结构按照程序命令出现的先后顺序依次执行。事实上,如果不进行特殊说明,程序中的命令就自动按其前后排列顺序执行。


6

顺序结构程序举例1

程序代码如下:

CLEAR

p0=200000

a=0.1

n=13

p1=p0*(1+a)^n

?"我国2007年的国民生产总值为:",p0, "亿元。"

?"我国2020年的国民生产总值为:",p1, "亿元。"

RETURN

[例 6-6] 假设我国2007年国民生产总值为200,000亿元,按每年平均10%的速度递增,编程计算到2020年我国国民生产总值将会达到多少?

国民生产总值计算公式为:未来值p1=初值p0×(1+速度a)时间间隔n

这里,初值 p0=200000 亿元,速度为 a=0.1,时间间隔 n=2020-2007=13,P1为未来待计算的值。Visual FoxPro计算表达式为:p1=p0*(1+a)^n 。该程序流程图如图所示。


6 2 2

6.2.2 选择结构

选择结构,是一种常用的基本结构,是根据所给条件是否为真,选择执行某一分支的相应操作。按照选择结构执行路径的多少,可分为:

  • 简单分支结构

  • 双分支选择结构

  • 多分支选择结构


6

简单分支结构

说明:

格式:

IF <条件>

[命令序列]

ENDIF

功能:根据条件的逻辑值来确定是否执行[命令序列]。

(3)为了程序阅读方便,便于以后维护修改,建议对于[命令序列]部分采取向右缩进书写的方式。

(1)根据<条件>的逻辑值进行判断。如果<条件>的逻辑值为.T.,就依次执行[命令序列],执行完后就转去执行ENDIF之后的命令。如果<条件>的逻辑值为.F.,则IF<条件>和ENDIF之间的所有命令都不执行,而直接转到ENDIF之后的命令。

(2)IF语句和ENDIF语句必须成对出现,且各占一行。


6

简单分支结构举例1

该问题计算机程序框图如图所示

程序代码如下:

NOTE 计算铁路托运行李费,W为行李重量,P为运费。

CLEAR

INPUT "请输入行李重量:" TO w

P=0.25*w

IF w>50

P=50*0.25+(w-50)*0.45

ENDIF

?"行李重量为:",w,"公斤"

?"应付运费为:",p,"元"

RETURN

[例 6-8] 铁路托运行李,按规定每张客票托运行李不超过50公斤时,每公斤0.25元,如超过50公斤,超过部分按每公斤0.45元计算。编写一个程序,把行李重量输入计算机,计算出运费,并打印出付款清单。

问题分析:设行李重量为W公斤,应付运费为P元,则运费公式为:

当W≤50, p=0.25×w

当W>50, p=50×0.25+(w-50)×0.45


6

双分支选择结构

说明:

格式:

IF <条件>

[命令序列1]

ELSE

[命令序列2]

ENDIF

功能:根据条件的逻辑值来决定程序执行[命令序列1]还是[命令序列2]。

(2)ELSE语句单独占一行,IF语句和ENDIF语句必须成对出现,且各占一行。

(1)如果<条件>的逻辑值为.T.,就执行[命令序列1],执行完后就转到执行ENDIF之后的命令。如果<条件>的逻辑值为.F.,就执行[命令序列2],完成后,转去执行ENDIF之后的命令。


6

双分支选择结构举例

CLEAR

INPUT "请输入里程数:" TO k

IF k<=2

cf=7

ELSE

cf=7+(k-2)*2.6

ENDIF

?"里程为:",k,"公里"

?"车费为:",cf,"元"

RETURN

[例 6-10] 设出租车不超过2公里时一律收费7元钱,超过时则超过部分每公里加收2.6元。试根据里程数编程计算并显示出应付车费(用双分支选择结构编程)。

程序代码如下:


6

分支结构嵌套

在分支结构的<命令序列>中,可以包含任何Visual FoxPro命令语句,也可以包括另外一个或几个合法的分支结构语句,也就是说分支结构可以嵌套。对于嵌套的分支结构语句,一定注意内外层分支结构层次分明,即注意各个层次的IF…ELSE…ENDIF语句的配对情况。


6

分支结构嵌套举例

IF salevolume<=100000

pays=pay1

ELSE

IF salevolume<=300000

pays=pay1+ROUND((salevolume-100000)*0.02,0)

ELSE

IF salevolume<=500000

pays=pay2+ROUND((salevolume-300000)*0.05,0)

ELSE

pays=pay3+ROUND((salevolume-500000)*0.1,0)

ENDIF

ENDIF

ENDIF

?salenumber+"号销售员工作报酬:"+STR(pays,6,0)+"元。"

RETURN

[例 6-11] 永立公司对销售人员的报酬计算方法如下:每月销售10万元(含10万元)以下者,只得基本工资1000元;每月销售10万元以上至30万元(含30万元)者,则超过10万元以上部分按2%提成;每月销售30万至50万(含50万元)者,超过30万元部分按5%提成;超过50万元部分按10%提成。以上各个级别的计算实行累加计算。编程按输入每个销售人员编号和销售额,计算每个销售人员的报酬(报酬结果按四舍五入规则取整)。

编程思路:为了编程方便,先将每个级别的基准报酬计算出来,再根据销售额的多少用嵌套分支结构判断计算。该程序代码如下:

CLEAR

ACCEPT "销售员编号:" TO salenumber

INPUT "销售额:" TO salevolume

pay1=1000

pay2=pay1+ROUND((300000-100000)*0.02,0)

pay3=pay2+ROUND((500000-300000)*0.05,0)


6

多分支选择结构

说明:

格式:

DO CASE

CASE <条件1>

<命令序列1>

CASE <条件2>

<命令序列2>

... ...

CASE <条件n>

<命令序列n>

[OTHERWISE

<命令序列n+1>]

ENDCASE

功能:根据<条件>是否成立来决定是否执行其下的命令序列。

(1)多分支选择结构执行的过程是:系统依次判断各<条件>是否满足,若某一<条件>为.T.,就执行该<条件> 下的<命令序列>,执行后不再判断其它<条件>,而转去执行ENDCASE后面的第一条命令。如果没有一个<条件>为.T.,就执行OTHERWISE后面的[命令序列n+1],直到ENDCASE;如果没有OTHERWISE,则不作任何操作就转向ENDCASE之后的第一条命令。

(3)多分支选择结构中各CASE语句后的<条件>是按其先后顺序判断执行的,因此对实际问题进行编程时,应认真考虑各个条件排列的先后顺序。

(2)DO CASE语句和ENDCASE语句必须成对出现,各占一行。


6

多分支选择结构

DO CASE

CASE salevolume<=100000

pays=pay1

CASE salevolume<=300000

pays=pay1+ROUND((salevolume-100000)*0.02,0)

CASE salevolume<=500000

pays=pay2+ROUND((salevolume-300000)*0.05,0)

OTHERWISE

pays=pay3+ROUND((salevolume-500000)*0.1,0)

ENDCASE

?salenumber+"号销售员工作报酬:"+STR(pays,6,0)+"元。"

RETURN

[例 6-12] 用多分支选择结构编程计算[例 6-11]。程序代码如下:

CLEAR

ACCEPT "销售员编号:" TO salenumber

INPUT "销售额:" TO salevolume

pay1=1000

pay2=pay1+ROUND((300000-100000)*0.02,0)

pay3=pay2+ROUND((500000-300000)*0.05,0)


6 2 3

6.2.3 循环结构

在程序设计中,有时需要从某处开始有规律地反复执行某些类似的操作,这些类似的操作一般用循环结构程序设计来解决。在Visual FoxPro中,提供了3种循环结构,即:

  • 当型循环结构

  • 步长型循环结构

  • 表扫描型循环结构


6

当型循环结构

说明:

格式:

DO WHILE <条件>

[命令序列]

ENDDO

功能:根据<条件>是否满足来决定是否执行[命令序列]。

(1)当型循环执行的过程是:根据<条件>的逻辑值,进行判断。如果<条件>的逻辑值为.T.,则执行DO WHILE和ENDDO之间的[命令序列](也称为循环体),当[命令序列]包含的所有命令执行完毕后,程序自动返回到DO WHILE语句,每执行一遍就判断一次DO WHILE语句中的<条件>。如果<条件>仍然为.T.,则继续执行DO WHILE和ENDDO之间的[命令序列],直到<条件>的逻辑值为.F.,结束循环,转去执行ENDDO之后的第一条命令。

(3)在[命令序列]的适当位置可以放置EXIT和LOOP语句,用以对循环过程作特殊处理。EXIT的功能是:结束循环命令,转去执行ENDDO之后的第一条命令。LOOP语句的功能是:终止本次循环命令,返回到循环入口。EXIT和LOOP语句只能在循环结构中使用,并且常常附加条件加以限制。

(2)DO WHILE和ENDDO语句应配对使用,各占一行。

(4)在命令序列中可以嵌套IF…ENDIF、DO CASE…ENDCASE、DO WHILE…ENDDO、FOR…ENDFOR、SCAN…ENDSCAN等程序结构。


6

当型循环结构程序举例

程序代码如下:

CLEAR

cocks=0

foots=0

DO WHILE foots<>138

cocks=cocks+1

rabbits=38-cocks

foots=2*cocks+4*rabbits

ENDDO

?"鸡的数量为:",cocks

?"兔的数量为:",rabbits

RETURN

[例 6-13] 鸡兔同笼问题。设鸡和兔共有头38个,脚138个,问鸡和兔各为多少只?

问题分析:设鸡为cocks只,兔为rabbits只,则有:cocks + rabbits=38;2*cocks+4*rabbits =138。可令鸡和兔的头数之和或者脚数之和为一变量,如本题令二者脚数之和foots为变量,开始令cocks=0,foots=0,用循环进行判断是否foots<>138,如果是,则进行如下运算:cocks=cocks+1; rabbits=38-cocks;foots=2*cocks+4*rabbits;再进行循环判断,直到foots<>138不成立(即foots=138),循环结束,输出结果。程序框图如图所示。


6

步长型循环结构

说明:

格式:

FOR <循环变量>=<初值> TO <终值> [STEP <步长值>]

[命令序列]

ENDFOR|NEXT

功能:根据循环变量的值是否超过终值来决定是否执行[命令序列]。


6

步长型循环结构程序举例1

[例 6-15] 求1+2+3+…+99+100的值。

问题分析:采用累加的办法,用循环变量产生1、2、3、…、99、100这些数。用s保存累加和,s的初始值为0,每次循环将s加上循环变量的值,再赋值给变量s,循环结束即求得s。 程序代码为:

CLEAR

s=0

FOR x=1 TO 100

s=s+x

ENDFOR

?"1--100自然数累加和是:",s

RETURN


6

步长型循环结构程序举例2

[例 6-16] 从键盘上输入任何一个自然数,求该自然数的阶乘。

问题分析:假设该自然数为n,那么求n的阶乘的公式是:

n*(n-1)*(n-2)*......*2*1

有了这样的公式,我们就可以用循环程序将该n的阶乘求解出来。将循环变量的初值设为n,终值设为1,步长值设为-1。用factor作为存放阶乘的变量,factor的初始值为1,每次循环都使factor 乘以循环变量的值,循环结束即求得factor的值。该程序代码如下:

CLEAR

factor=1

INPUT "请输入一个自然数:" TO n

FOR x=n TO 1 STEP -1

factor=factor*x

ENDFOR

? "自然数"+ALLTRIM(STR(n,10))+"的阶乘是:"+ALLTRIM(STR(factor,20))

RETURN


6

表扫描循环结构

说明:

格式:

SCAN [<范围>][FOR <条件1> |WHILE <条件2>]

[命令序列]

ENDSCAN

功能:根据对打开数据表的范围和条件来决定是否执行[命令序列]。


6

表扫描循环结构程序举例

CLOSE DATABASE

CLEAR

USE rsb

n=0

SCAN FOR 基本工资<1000

?姓名,基本工资

n=n+1

ENDSCAN

?"基本工资在1000元以下的人数有:"+STR(N,2)+"人。"

CLOSE DATABASE

RETURN

[例 6-17] 将人事数据表中基本工资小于1000的姓名、基本工资两个字段输出,并统计这些职工的人数。(用SCAN… ENDSCAN结构编程)

基本操作步骤为:关闭所有数据表,打开人事数据表,设计一个累加变量n,代表满足条件的记录数,给n 赋初值0,用表扫描循环结构定位满足条件的记录,输出姓名、基本工资两个字段,并对n 进行累加1,循环结束即求得n,输出n。程序代码如下:


6

循环结构嵌套

循环结构的嵌套是指在一个循环体内包含其它的循环结构,也称为多重循环结构。

同一种类型的循环结构可以嵌套,不同类型的循环结构也可以嵌套。

要编好循环结构嵌套程序,必须做到:循环开始语句和循环结束语句配对出现;内外层循环层次分明,不得交叉。

Visual FoxPro 最多允许128层嵌套。请看下面的例子。


6

循环结构嵌套举例1

*打印乘法九九表。

CLEAR

FOR a=1 TO 9

FOR b=1 TO 9

p=a*b

??STR(a,1)+"×"+STR(b,1)+"="+STR(p,2)+" "

ENDFOR

? &&注意??和?的区别

ENDFOR

RETURN

[例 6-18] 用双重循环打印九九乘法表,即:

1×1=1,1×2=2,…,1×9=9

2×1=2,1×2=4,…,2×9=18

… … … … … … … … … …

9×1=9,9×2=18,…,9×9=81

问题分析:这是一个有9个行、9个列数据项的矩阵,可以用双重循环解决。外循环用于控制各个行,内循环用于控制每一行的各个列项,一行输出完毕以后,换行输出下一行各个列的数据项。程序代码如下:


6

循环结构嵌套举例2

如何在屏幕输出如下图形:

CLEAR

FOR i=1 TO 7

FOR j=1 TO i

??"*" AT 2*j

ENDFOR

?

ENDFOR

RETURN


6

循环结构嵌套举例3

在屏幕输出如下图形:

CLEAR

FOR i=1 TO 7

FOR j=1 TO 2*i-1

??"*" AT 28-2*i+2*j

ENDFOR

?

ENDFOR

RETURN


6

课堂提问

  • 三种常用的程序结构是什么?

  • 三种VFP分支结构是什么?

  • 三种VFP循环结构是什么 ?


  • Login