1 / 56

第 6 章 程序设计基础

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

irma-cooley
Télécharger la présentation

第 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 程序设计基础

  2. 本章主要内容 • 程序设计的基本概念 • 程序文件建立与运行 • 三种程序控制结构 • 程序调试

  3. 程序设计的基本概念 一、VFP的工作方式 • 命令工作方式(或交互工作方式) 通过菜单选择的方法或在命令窗口中逐条输入命令的方法来执行的。 • 程序工作方式 根据解决实际问题的需要,将一系列符合Visual FoxPro要求的命令按一定的逻辑结构编排成一个完整的应用程序,然后输入到计算机内自动地、连续地加以执行。

  4. 程序设计的基本概念 二、 VFP的编程方式 • 面向过程编程方式 用结构化编程语言来编写结构化的程序,它把一个复杂的程序分成较小的过程,每个过程可以单独进行调试。 • 面向对象编程方式 用面向对象的技术编程,它把编程工作主要集中在描述的对象上,程序是事件驱动的,在执行过程中,等待的是一个事件。 对于制作简单短小的应用程序,使用过程编程方式比较容易,同时,这也是面向对象编程方式的基础。本章重点介绍面向过程的程序设计。

  5. 程序设计的基本概念 三、程序设计的步骤 • 分析问题或任务,总结或抽象出问题的数学模型 • 根据数学模型确定解决问题的算法思想 • 确定要建立的数据表或数据库的基本结构及其数据表之间的关系 • 画出程序流程图 • 编写程序,实现功能要求,并在计算机上调试通过 • 用典型数据对所编写的程序进行测试,验证程序的可靠性 • 编写使用说明书,整理有关资料,进行总结

  6. 6.1 程序文件建立与运行 • 程序文件 程序是由命令组成的ASCII码文本文件,所以程序文件也称为命令文件。该文件可用任何文本编辑器或字处理软件来建立。 • 程序文件扩展名 源文件的扩展名是.PRG,程序在运行时,会产生主文件名与.PRG程序主文件名相同,扩展名为.FXP的目标文件。

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

  8. 菜单方式建立程序文件 单击“新建文件”命令按钮 程序编辑窗口标题栏,显示程序的文件名,这里“程序1”为临时文件名,可以保存为其他文件名。 用菜单建立程序的步骤为: • 单击菜单“文件”→“新建”命令或者单击常用工具栏的“新建”按钮,打开“新建”对话框。 • 打开“程序1”的程序编辑新窗口。 在插入点“|”后可输入程序需要的命令。 选择“程序”单选按钮

  9. 命令方式建立程序文件 在“查找范围”下拉列表框选择程序所在或要保存的文件夹。 格式:MODIFY COMMAND [<程序文件名>]|? 功能:打开程序编辑窗口,从中可以修改或创建程序文件。 几点说明: • <程序文件名>:指定修改或创建的程序文件名。 • 如果用MODIFY COMMAND ?,则出现“打开”对话框,如图所示。 在“文件名”文本框输入要创建的文件名;如果选择了一个已存在的文件,该文件名也会出现在该处。 单击“确定”按钮,进入程序编辑窗口修改或编写程序。 在“文件类型”下拉列表框选择文件类型。

  10. 命令方式建立程序文件 在用命令建立程序文件时,最好在命令后加上程序文件名,这样可以直接创建或修改用户给出的程序文件。 建好的文件将保存在“默认目录”指定的文件夹下,默认的扩展名是.PRG。如果需要保存在其它文件夹下,还可在命令中指定路径。如: MODI COMM D:\excercise\example 注意:这里的命令动词“MODIFY COMMAND”用了简写形式。

  11. 程序输入与保存 [例 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 打开程序编辑窗口,即可输入上述程序代码,如图所示。

  12. 程序输入与保存 在输入一个程序时,请用户注意以下几点: • 一个命令语句中只能有一个命令动词。 • 每输入完一个语句按回车键表示该语句结束。 • 程序中用到的所有作为“分隔符号”的标点符号一律用英文半角符号。 • 输入或修改结束按“Ctrl+W”存盘,“Ctrl+Q”取消本次输入或修改结果。还可使用“文件”→“另存为”命令将编辑好的程序以另外的名称存盘。

  13. 6.1.2 程序运行 通过“查找范围”下拉列表框确定文件所在的文件夹。 • 菜单方式运行程序 单击菜单“程序”→“运行”命令,打开“运行”对话框。选定定要执行的程序文件,如选择:cx1 ,单击“运行”按钮,如图所示。 选择要执行的文件(即单击该文件)。 单击“运行”按钮执行程序。 选择的文件出现在“执行文件”文本框中。

  14. 6.1.2 程序运行 • 命令方式运行程序 格式:DO <程序文件名> 功能:将指定的程序文件调入内存并运行。 如在命令窗口里输入:DO cx1 将在屏幕输出程序计算结果: 12 18 30

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

  16. 6.1.2 程序运行 • 程序错误对话框 在程序执行过程中,如果程序出现运行错误或用户按下了“Esc”键,将弹出“程序错误”对话框,如图所示。 单击“挂起”按钮,可暂时停止程序的运行,可在命令窗口里输入命令:RESUME,或单击菜单“程序”→“继续执行”命令可继续执行程序 。 单击“帮助”命令按钮可提示相关帮助信息。 单击“取消”按钮可取消程序的执行。 单击“忽略”命令按钮忽略程序的错误继续执行程序 。

  17. 6.1.3 程序辅助命令 以前介绍的所有Visual FoxPro命令都可以用在程序设计中。另外Visual FoxPro还提供了一些辅助命令,这些命令能使程序更好地阅读和有效地运行。本小节介绍: • 程序注释命令 • 程序结束命令 • 信息对话框函数MESSAGEBOX

  18. 程序注释命令 Visual FoxPro提供了3种注释命令: 格式1: NOTE <注释内容> 格式2: * <注释内容> 功能:使 NOTE或* 后面的内容成为注释内容。 格式3:[<命令>] &&<注释内容> 功能:<注释内容>对&&左面的命令做出解释或给出运行结果,又称为行尾注释命令。

  19. 程序结束命令 格式1:RETURN 功能:返回到上一级模块。如果本程序是以菜单方式或在命令窗口中调用执行的,则返回到命令交互状态。 格式2:CANCEL 功能:终止程序运行,清除程序中的私有变量,返回到命令窗口。 格式3:QUIT 功能:关闭Visual FoxPro,返回到操作系统。

  20. 信息对话框函数MESSAGEBOX 信息对话框的“标题”部分。 MessageBox函数用于显示一个信息对话框,可以在程序运行过程中,显示一些信息,例如提示信息、错误信息等。其构成如图所示。 信息对话框的“提示信息”部分。 信息对话框的“图标”部分。 信息对话框的“按钮”部分。

  21. 信息对话框函数MESSAGEBOX 格式: MESSAGEBOX(<字符表达式1>[,<数值表达式>[,<字符表达式2>]]) 功能:供用户定义信息对话框,按下相应的按钮返回一个数值。 说明: • <字符表达式1>用于指定在对话框中显示的信息文本。 • <数值表达式>用于根据表6-1的内容设置对话框中的按钮、图标和默认按钮,缺省该参数表示取0。

  22. 信息对话框函数MESSAGEBOX • <字符表达式2>用于指定对话框标题栏的显示文本。缺省该参数表示在标题栏显示“Microsoft Visual FoxPro”。 • 函数值返回一个数值,用户可根据操作时按下的按钮来获得相应的返回值,返回值见表6-2,用户编程时根据返回值来设置动作。

  23. 信息对话框函数MESSAGEBOX [例 6-3] 在信息对话框中使用2个按钮“是”和“否”,使用“问号”图标,默认按钮为第二个按钮,显示“真的要退出系统吗?”信息,对话框标题为“提示信息”。 在命令窗口里输入: a=MESSAGEBOX("真的要退出系统吗?",4+32+256,"提示信息") 就会显示如图所示的信息对话框。

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

  25. 字符型数据输入命令ACCEPT 格式:ACCEPT [<提示信息>] TO <内存变量> 功能:暂停程序的执行,等待用户输入一个字符串给变量。 说明: (1)[<提示信息>],是在屏幕上出现的提示信息。它可以是字符串,此时必须用双引号将其括起来,也可以是字符型内存变量,该内存变量必须预先赋值。 (2)用户在键盘输入的任何字符信息都被赋值给“内存变量”。输入的数据将作为字符型数据处理,不需要定界符括起来,如果输入了定界符,则这些定界符也被作为输入字符的一部分。 (3)输入完需要的信息后,按“Enter”键结束本命令的输入。如果没有输入其他信息,只按回车键,将把一个空字符串赋值给内存变量。

  26. ACCEPT使用举例 [例 6-4] 编一程序,将人事数据表打开,在程序运行中输入人员姓名,显示指定姓名的人员记录。 程序代码如下: NOTE 该程序用于从人事数据表中查找用户指定姓名的人员信息。 CLEAR USE rsb ACCEPT "请输入要查找的姓名:" TO name LOCATE FOR ALLTRIM(姓名)=name DISPLAY RETURN

  27. 表达式输入命令INPUT 格式:INPUT[<提示信息>] TO <内存变量> 功能:暂停程序的执行,接受用户输入合法的表达式并将表达式的值赋值给内存变量。 说明: (1)[<提示信息>],同“ACCEPT”命令中的[<提示信息>]。 (2)用户可输入任何一个合法的数值型(N)、字符型(C)、日期型(D)、逻辑型(L)表达式,系统先计算表达式的值并将该值赋值给内存变量。 (3)如果输入字符串信息,则必须加上双引号或单引号定界符,如"ABC"。 (4)按“Enter”键结束输入,如果输入的是非法表达式,系统将提示重新输入。

  28. 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

  29. 接收单字符命令WAIT 说明: 格式:WAIT [<提示信息>] [TO <内存变量>] [WINDOWS [AT <行坐标>,<列坐标>]] [TIMEOUT<等待秒数>] [NOWAIT] 功能:暂停程序,用户按任意键或者时间超过等待的秒数后,程序继续执行。如果包含[TO <内存变量>]短语,将用户所按键盘字符赋值给指定的内存变量。 (3)TIMEOUT <等待秒数>:指定在执行 WAIT 命令之后,程序暂停的时间,<等待秒数>参数指定等待的时间秒数。 (4)NOWAIT子句指在前述指定的Windows窗口中显示WAIT信息的同时,程序继续执行而不暂停。 (1)[<提示信息>],指定要显示的自定义信息。若省略该参数,则 Visual FoxPro 显示默认的信息“按任意键继续……”。如果该参数为空字符,则不显示信息。 (2)[WINDOWS]:在 Visual FoxPro 主窗口右上角的系统信息窗口中,显示提示信息。如果指定[AT <行坐标>,<列坐标>],则该窗口在指定屏幕坐标位置显示。

  30. WAIT使用举例 下列命令将在屏幕16行、16列位置处显示一含有提示信息的小窗口,如图所示,此时单击鼠标按键、按下键盘上任意一个按键或小窗口在屏幕上停留7秒后,从屏幕上消失。 WAIT "请稍后,程序将继续执行......。" WINDOWS AT 16,16 TIMEOUT 7

  31. 课堂提问 • 程序设计的步骤有哪些? • 进入程序编辑器窗口的方法有哪2种? • 进入程序编辑器窗口的命令是什么?

  32. 6.2 程序控制结构 结构化程序包括三种基本结构,即 • 顺序结构 • 选择结构 • 循环结构

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

  34. 顺序结构程序举例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 。该程序流程图如图所示。

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

  36. 简单分支结构 说明: 格式: IF <条件> [命令序列] ENDIF 功能:根据条件的逻辑值来确定是否执行[命令序列]。 (3)为了程序阅读方便,便于以后维护修改,建议对于[命令序列]部分采取向右缩进书写的方式。 (1)根据<条件>的逻辑值进行判断。如果<条件>的逻辑值为.T.,就依次执行[命令序列],执行完后就转去执行ENDIF之后的命令。如果<条件>的逻辑值为.F.,则IF<条件>和ENDIF之间的所有命令都不执行,而直接转到ENDIF之后的命令。 (2)IF语句和ENDIF语句必须成对出现,且各占一行。

  37. 简单分支结构举例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

  38. 双分支选择结构 说明: 格式: IF <条件> [命令序列1] ELSE [命令序列2] ENDIF 功能:根据条件的逻辑值来决定程序执行[命令序列1]还是[命令序列2]。 (2)ELSE语句单独占一行,IF语句和ENDIF语句必须成对出现,且各占一行。 (1)如果<条件>的逻辑值为.T.,就执行[命令序列1],执行完后就转到执行ENDIF之后的命令。如果<条件>的逻辑值为.F.,就执行[命令序列2],完成后,转去执行ENDIF之后的命令。

  39. 双分支选择结构举例 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元。试根据里程数编程计算并显示出应付车费(用双分支选择结构编程)。 程序代码如下:

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

  41. 分支结构嵌套举例 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)

  42. 多分支选择结构 说明: 格式: 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语句必须成对出现,各占一行。

  43. 多分支选择结构 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)

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

  45. 当型循环结构 说明: 格式: 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等程序结构。

  46. 当型循环结构程序举例 程序代码如下: 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),循环结束,输出结果。程序框图如图所示。

  47. 步长型循环结构 说明: 格式: FOR <循环变量>=<初值> TO <终值> [STEP <步长值>] [命令序列] ENDFOR|NEXT 功能:根据循环变量的值是否超过终值来决定是否执行[命令序列]。

  48. 步长型循环结构程序举例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

  49. 步长型循环结构程序举例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

  50. 表扫描循环结构 说明: 格式: SCAN [<范围>][FOR <条件1> |WHILE <条件2>] [命令序列] ENDSCAN 功能:根据对打开数据表的范围和条件来决定是否执行[命令序列]。

More Related