收藏 分销(赏)

2024年安徽专升本VF程序设计基础知识.doc

上传人:精**** 文档编号:8188894 上传时间:2025-02-07 格式:DOC 页数:56 大小:302.54KB 下载积分:14 金币
下载 相关 举报
2024年安徽专升本VF程序设计基础知识.doc_第1页
第1页 / 共56页
2024年安徽专升本VF程序设计基础知识.doc_第2页
第2页 / 共56页


点击查看更多>>
资源描述
程序设计基础知识 程序是为了完成一项任务而编写的指令的集合,在某种程度上VFP中的程序设计同老式的程序设计有很大的不一样。在VFP中能够同时应用面对过程和面对对象两种编程措施,面对对象的程序设计是其重要特色。一般来说,对于制作简单、较小的应用程序,使用过程编程方式比较轻易,同时这也是面对对象编程方式的基础。本章重要简介的是面对过程的编程措施。 4.1 程序设计概念 4.1.1程序设计与算法简介 程序设计从某种意义上来说, 是依照算法步骤把命令、函数、变量、常量、体现式等以逻辑的方式组合成程序文献或系统。确定算法和编写程序是两个重要步骤。 算法是指为处理一个问题而采取的措施和步骤,或者说处理步骤的精准描述。算法分为数值运算算法和非数值运算算法。数值运算算法的目标是计算数值解,如求方程的根,求函数的定积分等。非数值运算算法,包括的范围很广,常见的办公室自动化系统、管理领域、商业领域及医学应用等等,重要是描述其处理应用问题的逻辑步骤。 描述实现算法的逻辑步骤,一般采取流程图方式,流程图分老式流程图;N--S流程图等。老式流程图是用某些图框,流程线以及文字阐明来描述操作过程,这么的表示算法,直观,形象,轻易了解。如图4.1和图4.2: .“起止框”用来表示算法的开始和结束。 “处理框”用来表示一般的数据处理。 “输入/出框”表示输入,输出操作。 “流程线”表示流程的方向(执行方向)。 “连接点”用于将画在不一样地方的线连接起来。 “判断框”用来依照给定条件是否满足,决定执行两条途径中的某一途径。 图4.1 拿到一个问题后,首先确定并写出算法,画出结构流程图,然后再依照算法书写程序,是一个良好的习惯。这么做不但可提升所写程序的正确性,也轻易修改程序,提升整个程序设计的效率 4.1.2源程序实例 例:显示”student.dbf”表中“总成绩 “小于360的所有学生的学号,姓名,总成绩. 分析问题:逐一判断每条统计的总成绩字段的值是否不小于360,假如不小于就显示,否则不显示.依照分析成果画出结构流程图,如:图4.2,然后写出源程序如下: SET TALK OFF CLEAR OPEN DATABASE STUDENTS USE STUDENT1 DO WHILE !EOF() 初始化 打开数据库和表 是否表末尾 总成绩>360 显示,移统计指针 移统计指针 结束 IF 总成绩>=360 ? 学号,姓名,总成绩 SKIP ELSE Y SKIP ENDIF N ENDDO CLOSE DATABASE N Y N RETURN N Y 4.1.3 程序的创建、编辑和运行 VFP6.0 源程序文献的扩展名是.PRG, 程序运行时,系统自动编译产生扩展名为.FXP 的文献, 其文献主名与.PRG为扩展名的文献主名相同, 在VFP下若修改了.PRG 为扩展名的文献,系统也会自动重新编译. 4.1.3.1程序文献的创建 图4.2 创建VFP6.0 源程序文献,可使用任何文本编辑器建立;本系统中使用自身编辑器创建,编辑源程序文献。VFP提供了如下三种措施。 图4-3编辑文献窗口 图4-2新建 文献 措施一 能够在VFP主窗口的 “文献“ 菜单中选择“新建“或工具栏中的“新建” 按钮,选择“程序“ 如图 4-2所示。然后单击“新建文献”,这时系统将打开一个编辑窗口,能够往里输入程序,如图4-3所示。 源程序输完后, 利用文献菜单进行保存。 也可立即利用 【程序】|【运行】菜单 和【程序】|【编译】菜单,进行编译和运行程序。程序执行成果显示在主窗口中。 措施二 在命令窗口中执行命令: MODIFY COMMAND <文献名> 这时,系统将打开一个如图4-3的编辑窗口,能够往里输入程序代码。编辑完成,使用CTRL+W键,则存盘退出。 措施三 在“项目管理器”中选择“代码”选项卡中的程序选项,选择“新建”命令。系统将打开编辑窗口,能够创建一个程序,如图4-4所示。 图4-4在项目管理器中建立程序 4.1.3.2 程序的保存 程序输入完成后,能够选择“文献”菜单中的“保存”项保存程序文献。 图4-5 关闭没有保存的程序时将出现问询 若用户要关闭一个没有保存的程序,则会弹出对应的对话框,提示用户是保存还是放弃已作的修改,如图4-5所示。 若用户保存了一个由“项目管理器”创建的程序,则该程序被加入项目中。若用户保存了一个尚未命名的程序,则会打开“另存为。。。。”对话框,用户应当从中选择或输入正确的盘符、途径、文献名。程序保存后,用户能够在其后任一时刻运行或修改程序。 4.1.3.3程序的修改 程序的修改即对源程序文献打开进行编辑。有如下措施: 措施一 若程序包括在某一个项目中,则能够在“项目管理器“中选定它,并选择“修改” 措施二 在“文献”菜单中选择“打开”命令,这时将出现一个包括文献列表的“文献类型”对话框。从中选择“程序”,然后找到要编辑修改的程序,选定后单击“确定”按钮,如图4-6所示。 图4-6 在打开文献窗口中选定要修改的程序 措施三 在“命令”窗口中键入如下命令: MODIFY COMMAND <程序文献名> 然后将出现程序文献编辑窗口,如图 4-3 所示。接下来可对显示在编辑窗口中的程序进行修改。 4.1.3.4 程序的运行 程序创建或修改完成,最后需要运行。运行程序有如下几个措施。 措施一 在“程序”菜单中选择“运行”菜单项,然后选择一个程序文献,如图4-6 措施二 在命令窗口中运行命令:DO <程序文献名> 措施三 若程序包括在一个项目中,则能够在“项目管理器”中选定它并选择“运行”命 令,如图4-4 所示。 4.2常用命令和语句 VFP的一个特点,是大量使用系统环境设置命令以及其他某些控制命令,以协助用户进行数据处理、安全管理、程序调试、成果输出等方面的工作。本节重要简介某些常用的命令和语句。 4.2.1基本输入、输出语句 程序最基本的操作就是输入、输出。输入是从键盘或鼠标等设备中接收数据。输出是指将计算机所做的运算成果输出到屏幕或打印机。 4.2.1.1输入命令 1)字符型键盘输入命令 ACCEPT 格式:ACCEPT [<提示>] TO <内存变量> 功效: 建立内存变量,并用键盘输入的方式将字符型数据赋值给内存变量。 阐明:①<提示>表示需输入内容的提示信息,是命令执行时显示的内容。<提示>一般为字符型常量,字符型变量或字符型体现式。 ② <内存变量>表示存储字符数据的字符变量或数组元素。 ③ 输入的数据作为字符型数据处理,不需要定界符括起来。若使用定界符,则定界符成为输入字符的一部分。输入回车健则按空字符处理。 例11-2 输入班级编号和姓名,并打印出来。 ACCEPT “请输入班级编号:”TO number ACCEPT “请输入姓名:”TO name ?“班级编号:”,number,“姓名:”,name 2)任意类型键盘输入命令INPUT 格式:INPUT [<提示>] TO <内存变量> 功效: 建立内存变量,并用键盘输入的方式将数值型,字符型,逻辑型或日期型数据赋值给内存变量。 阐明:① <提示>是命令执行时显示的提示内容。可是一个字符型体现式。 ② <内存变量>可为数组元素。内存变量无须事先定义。 ③ 从键盘输入的数据能够是命令允许的四种类型体现式。执行该命令时计算键盘输入的体现式的值,将其赋给内存变量。 ④ 字符型常量必须有定界符,且不能单用回车输入。 3)程序暂停,等候接收单字符命令WAIT 格式:WAIT [<提示>] TO <内存变量> [WINDOW[ AT <行坐标,列坐标>]] [TIMEOUT <等候秒数>] 功效: 显示提示并暂停程序运行,直到按下任意一键或鼠标按键程序才继续执行。 阐明:① <提示>表示要显示提示的内容,省略提示,系统给出“按任意键继续。。。。。。。”。 ② TO<内存变量>]表示键盘的输入以字符形式存入指定的内存变量。内存变量类型为字符型,宽度为1。 ③ [WINDOW]表示在Visual FoxPro主窗口右上角出现的系统消息窗口的位置中显示消息。WAIT WINDOW 支持多行消息。 ④ [AT<行坐标,列坐标>]指Visual FoxPro主窗口中消息窗口的位置。 ⑤ [NOWAIT]表示在消息被显示后不移去消息窗口,立即继续执行程序。省略时,程序暂停直到按下一个键或鼠标按钮,并将消息窗口从主窗口中移走。 4.2.1.2 格式输出命令 格式:@ <行,列>SAY <体现式>[PICTURE<模式符>][FUNCTION<功效符>] 功效:在指定坐标位置按格式输出体现式的值。 例11-5 在程序编辑窗口输入如下内容 *ex1.PRG Vb1=49562.89 Vb2=--0.5 @3,10 SAY Vb1 FUNCTION”B” @5,10 SAY Vb1 FUNCTION”C” @7,10 SAY Vb2 FUNCTION”X” 运行ex1.PRG 成果显示 49562.89 49562.89CR _0.5DB 4.2.1.3 格式输入命令 格式:@< 行,列>SAY<提示信息>GET<变量> [FUNCTION<功效符>] [PICTURE<模式符> [RANGE<数值体现式1>,<数值体现式2> [VALID<逻辑体现>] READ[SAVE] 功效:在指定行、列首先显示<提示信息>,接着按要求的格式反显GET后变量的值;当执行命令READ时,子命令GET被激活,其变量值处在编辑状态。一个READ语句能够激活多个在它前面的GET子命令。 阐明:① 命令中的功效符和模式符代码及其含义如下表11-1和表11-2 ② 命令的执行过程是,系统先在指定的行列显示SAY后的提示信息,在提示信息后显示GET变量的值,此前GET 后的变量必须赋值,且变量值反显,当次序执行READ语句后,反显的变量值被激活,此时,可编辑变量的值,按回车键可结束此过程。 ③ 一个READ命令可激活多个GET的编辑区,因此,只要GET 语句是在READ 语句前,当第一个GET 激活变量值编辑后光标可自动跳到下一个 编辑区,依次执行。 ④RANGE中数值体现式1和2,表示数据编辑和显示的下限和上限。 ⑤ VALID<逻辑体现式>表示数据编辑和显示的条件范围。 表4-1 PICTURE模式符代码表     代码   含义       代码    含义 A 只允许字母      L 只允许逻辑型数据     N 只允许字母或数字   X 允许任何字符     Y 只允许逻辑数据且小写换大写  G 只允许数字     #  允许数字,空格和正负号 !  小写转换成大写     ¥  数值前显示货币符号  · 指定小数点位置      ,  分隔多位数      *    数值前显示星号         表4-2 FUNCTION功效符代码表   代码   含义         代码   含义 A 只允许字符字母     B  数值数据在显示区左对齐 C  在正数之后显示CR表示贷款 D 使用目前的SetDate日期格式 E 使用欧洲日期格式Dd/mm/yy L 数值显示时显示前导0,而不是空格 X 在负数背面显示DB表示借贷    T 去掉体现式首尾空格 S(n) 限制字符显示的宽度为n个字符  Z 数值为0时刻用空格显示 C 将负数括在括号内    ! 将小写字母转化成大写字母 *  用科学计数法显示     ¥ 用Set CURRENCY指定货币格式显示 例4-6 指定坐标位置的格式输出例1。 **exp.prg va1=47612.78 va2=-0.6 @4,10 say va1 function “B” @8,10 say va1 function “c” @10,10 say va2 function “x” 将以上程序存盘,并运行。 成果显示: 47612.78 47612.78CR -0.6DB 例4-7 格式输出例2。 **exp.prg vbr1=space(20) vbr2=0 vbr3=date() var4=.F. clear @4,15 say “编辑字符:” get vbr1 function “s14!” @5,15 say “编辑数字:” get vbr2 picture “999999.99”RANGE 1000,40000 @6,15 say “编辑日期:” get vbr3 VLALID vbr3<ctod(“99/12/31”) @7,15 say “编辑逻辑:” get vbr4 picture “Y” read 执行上述程序时,依次输入数据:“World Wide Web Virtual Hospital”,8888.88,98/09/01,和y。其中Vbr1能够接收20个字符,显示前14个。屏幕显示为: 编辑字符:WORID WIDE WEB 编辑数字:8888.88 编辑日期:98-09-01 编辑逻辑:y 4.2.2注释语句和续行语句 4.2. 2. 1注释语句 顾名思义,注释语句用来给程序加注释,以提升程序的可读性。有如下两种注释语句 1) 注释行 格式 * <注释内容> 或 NOTE <注释内容> 2) 行末注释 格式 <执行语句> && <注释内容> 例: * 这是一个示例程序 * 1999.9.9 SET STATU ON && 显示状态栏 NAME=“张三” * ACCEPT “姓名:” TO NAME ?NAME CANCEL 4.2.2.2 续行标志 VFP 允许一个语句行最多可又254 个字符长,这一长度足以满足绝大多数语句格式的要求,不过,为了使程序便于阅读,往往需要将一行程序分作几行来写。将一行分作几行来写时,要使用续行标志“;”,表示本语句尚未结束。 例如: REPLACE 应发工资 WITH 基本工资*1.15+职务津贴+奖金; 扣款 WITH 房租水电+医药费+应发工资*所得税率; 是发工资 WITH 应发工资-扣款 4.2.2.3 指定缺省驱动器和目录 因为数据库应用一般包括大量的文献,为了应用程序的顺利进行,应当将这些文献集中在一个专属目录中。然后将此专属目录指定为缺省驱动器和目录,这么既可大大地以便程序开发工作,又能确保应用程序的顺利进行。 将一专属目录指定为缺省驱动器和目录,有两种方式: (1) 在程序或命令窗口中使用SET DEFAULT 命令,命令格式为 SET DEFAULT TO [<途径>] 例如:指定C:\mysystem\gzl 为缺省 目录; SET DEFAULT TO C:\MYSYSTEM\GZL 若执行不带途径的 SET DEFAULT 命令,则恢复系统缺省设置。 (2) 修改系统缺省设置。在缺省系统配备文献 CONFIG.FPW或专属系统配备文献(如:MYCONFIG.FPW)中,假如下面一行: DEFAULT=C:\MYSYSTEM\GZL 4.2 控制结构 VFP的程序结构,与其他高级语言同样,分为三种控制结构,即次序结构、分支结构和循环结构,各个结构能够实现不一样的功效。 图4-7 语句系列2 语句系列1 4.3.1次序结构 次序结构是程序结构设计中最常用,最简单,最基础的基本结构。该结构的特点表白语句排列的次序就是命令的执行次序, 其间既没有分支跳转、也没有重复。如图4-7。组成次序结构的语句,一般包括赋值语句、输入、输出、注释和终止语句以及有关系统环境设置等。 4.3.2选择结构 选择结构:选择结构是程序设计中的基本结构之一。它用选择命令描述分支现象,确定程序执行的途径。常用的选择命令有单条件选择和多条件选择。 如图4-8 Y 命令组1 N 命令组2 条件 1、IF条件选择命令 格式:IF 〈条件体现式〉[THEN] [命令组1] [ELSE [命令组2]] ENDIF 功效:若<条件体现式>的值为真,执行<命令组1>;否则(即<条件体现式>的值为假)执行<命令组2>;无论哪种情况,命令组系列执行完后,就执行ENDIF下的第一个命令。如图4-8所示. 阐明:① <条件体现式>可为关系或逻辑体现式,其逻辑值为T或F;当[ELSE-[命令组2]]不存在时,<条件体现式>的值为真,执行<命令组1>后,就转到执行ENDIF之后的第一个命令;若<条件体现式>的值为假,则不执行IF与ENDIF之间的命令系列,而直接转到执行ENDIF之后的第一个命令。 ② IF—ENDIF结构命令必须配对使用;并且能够通过多层嵌套以实现多条件的选择。 例11-9 铁路拖运行李,从甲地到乙地,按要求每张客票拖运行李不超出50千克时,每千克0.25元,如超出50千克,超出部分按每千克0.45元计算。编程,把行李重量输入计算机,计算出运费,并打印付款清单。 问题分析:设行李重量W千克,应付运费P元,则运费公式为: 0.25*W 当W≤50 P=          50*0.25+(W-50)*0.45 当W>50 编写程序为: INPUT“请输入行李重量:”TO W IF W<=50 P=0.25*W ELSE P=50*0.25+(W-50)*0.45 ENDIF ?“应付运输费为:”,P,“元” CANCEL 2、IF嵌套条件选择结构 在IF条件选择结构中,允许包括新的选择结构,一层套一层形成嵌套结构。 注意:形成嵌套结构中,只允许嵌套,不允许交叉,层次必须分明。 例 11-10 已知系数a,b,c编写程序,求一元二次方程ax2+bx+c=0的根。 例题分析:①当a<>0时,有两个根; ②当△>0 时,有两个不一样的实根; ③当△=0 时,有两个相同的实根; ④当△<0 时,有两个不一样的根; ⑤当a=0,b<>0时,有一个根; ⑥当a=0,b=0 时,方程无意 依照以上分析,写出程序: INPUT “a=” TO a INPUT “b=” TO b INPUT “c=” TO c IF a<>0 delta=b^2-4*a*c re=-b/(2*a) im=SQRT(ABS(delta))/(2*a) IF delta>=0 root1=re+im root1=re-im ? “两个根为:“,root1,root2 ELSE ? “两个根为:“,re,”+”,im,”I”, re,”-”,im,”I” ENDIF ELSE IF b<>0 ? “只有一个根:”,-c/b ELSE ? “方程退化” ENDIF ENDIF CANCEL 3、DO CASE多条件选择命令 格式:DO CASE CASE<条件体现式1>         <命令组1> CASE<条件体现式2> <命令组2 … … CASE<条件体现式n> <命令组n> [OTHERWISE<命令组n+1>] ENDCASE 图4-9多条件分支语句 语句组n 语句组1 语句组2 条件2 语句组3 条件3 Otherwise 条件1 功效:执行时,系统将依次检查每一个条件体现式的值,当找到有一个条件为真时,则执行该条件下的命令系列,接着再执行ENDCASE背面的语句,目前面几个条件体现式值均为假时,若有OTHERWISE就执行语句序列n+1。否则就直接执行ENDCASE背面的语句。如图4-9所示: 阐明:① 在DO CASE与第一个CASE之间不能有任何命令,并且在一个DO CASE结构中,最多只能执行一个CASE语句。 ② <条件体现式>能够为关系体现式或逻辑体现式,依照其逻辑值进行判断,若为.T.,就执行该[命令组],直到遇到下一个CASE或OTHERWISE就转向ENDCASE背面的第一条命令。 ③ 假如没有一个<条件>为.T.,就执行OTHERWISE背面的[命令组],转到ENDCASE之后的语句。假如没有OTHERWISE,则不作任何操作就转向ENDCASE之后的第一条命令。 ④ DO CASE与ENDCASE必须正确配对;并且本命令结构只能在程序中使用,且DO CASE,CASE,OTHERWISE,ENDCASE必须各占一行,。 例11-11 设计一个按不一样幼儿年龄服药的程序,年龄变量为AGE,每次服药次数COUNT,每次服药量MOUNT。程序为: MEDICINE=‘阿司匹林’ INPUT‘输入年龄:’TO AGE DO CASE CASE AGE<5 COUNTS=‘4次/天’ MOUNT=‘每次1片’ CASE AGE<10 COUNTS=‘4次/天’ MOUNT=‘每次2片’ OTHERWISE COUNTS=‘3次/天’ MOUNT=‘每次2片’ ENDCASE ?MEDICINE+‘服法是’+COUNTS+‘·' +MOUNT RETURN DO CASE 命令表示程序的多分支结构,与IF命令同样允许多重嵌套,既能够多个DO CASE-ENDCASE一层层嵌套,也能够DO CASE-ENDCAS与IF-ENDIF嵌套。 例11-12 对students库中3个表student.dbf scure1.dbf 和symbolic.dbf 用CASE命令实目前不一样的条件下显示不一样的文献统计。 SET TALK OFF ACCEPT “输入表文献名:” TO NAME OPEN OPENDATABASE STUDENTS DO CASE CASE NAME=”student” USE student DISPLY ALL FOR 专业= “临床医学” CASE NAME=”scure1” USE scure1 AVERGE 生物 TO t1 FOR SUBSTR(学号,7,1)=”4” AVERGE 生物 TO t2 FOR SUBSTR(学号,7,1)<>”4” ? “T1=”,t1,”T2=”,t2 CASE NAME=”symbolic” USE symbolic LIST FOR “96” $ 学号 ENDCASE use &NAME WAIT LIST CLOSE DATABASE RETURN 4.3.3循环结构程序设计 图4-10循环结构流程图 N Y exit loop 语句组 条件 循环结构是程序设计的一个基本结构。描述循环现象的命令重要为实现某一段程序有规律的重复执行。VFP中给出三种循环结构命令,“当型”,“步长型”和“表扫描型”。VFP中各循环结构的基本流程是同样的 ,如图4-10所示。 1、当循环命令DO WHILE—ENDDO 格式:DO WHILE <条件体现式> [<命令组>] [EXIT] [LOOP] ENDDO 功效:当<条件体现式>的计算值为真时,就使DO WHILE…ENDDO之间 的命令序列重复执行,以实现循环;当条件体现式的值为假时,退出循环执行ENDDO后的命令。 阐明:① 循环结构的DO WHILE为循环起始语句,ENDDO为循环终端语句,在DO WHILE与ENDDO之间的语句称循环体。 ② <条件体现式>的值是逻辑值。执行时,系统先检测逻辑值的真、假而确定是否执行循环体。ENDDO命令是将循环返回到循环的起始语句。执行过程如图4-10所示。 ③强制退出循环命令EXIT,表示执行该命令后从控制从DO WHILE…ENDDO循环中跳出,而去执行ENDDO后的命令。[LOOP]执行该命令后,将控制直接转回到DO WHILE子句,而不执行LOOP和ENDDO之间的命令,LOOP称为无条件循环命令,并且只能在循环结构中使用。一般情况下,在循环体中出现LOOP或EXIT命令时就会有IF条件选择命令的配合使用。 ④do while …….enddo 必须成对出现,并且do while …….enddo 可进行嵌套,形成多重循环。 例11-13 有一张厚0.5毫米,面积足够大的纸,将它不停对折。问对折多少次后,其厚度可达珠穆郎玛峰的高度(8848米)。 问题分析: 每次对折都是上次厚度的2倍,然后用此厚度与珠穆郎玛峰的高度作比较,每次循环作一次计数,以便统计对折的次数。 N=0 H=0.5 DO WHILE H< 88488000 N=N+1 H=2*H ENDDO ?“对折次数为:”,H CANCEL 例11-14 在数据库STUDENTS.DBC的表Student.DBF 中找出所有男性的学生。 SET TALK OFF OPEN DATABASE STUDENTS USE STUDENT DO WHILE .T. IF 性别 < > ‘男’ SKIP Else DISPLAY SKIP ENDIF IF EOF( ) EXIT ENDIF ENDDO CLOSE DATABASE RETURN 当循环结构的嵌套。循环结构嵌套是在一个循环体内又完整的包括另一个循环,当循环能够嵌套形成多重循环,但要求每层循环DO WHILE…ENDDO 必须成对出现,不能交叉。如:   DO WHILE<条件1> DO WHILE<条件2> 内 <命令序列> ENDDO 外 DO WHILE <条件3> 内 <命令序列> ENDDO ENDDO 例11-15 打印九九乘法表。 程序(EXP.PRG)如下: Set talk off Clear A=1 B=1 Do while A<=9 Do while B<=9 T=A*B ?? T B=B+1 ENDDO A=A+1 ? Enddo Cancel 以上双循环执行过程是:当第一次进入外循环DO WHILE A<=9…ENDDO时,内循环DO WHILE B<=9…ENDDO 中的循环体需执行9次,输出1,2,…,9。当第十次执行DO WHILE B<=9时,因为B<=9为假时,需跳到执行A=A+1和?命令。当第二次进入DO WHILE A<=9…ENDDO的循环体时,内循环又执行9次输出为2,4,…,18。当第十次执行内循环DO WHILE B<=9时,B<=9为假,跳出内循环,这么重复下去外循环循环9次,内循环共循环81次,直到输出T的值为81。然后整个程序结束。 2、步长型循环(或计数循环)FOR—ENDFOR 格式 FOR <循环变量>=<初值> TO <终值> [STEP <步长值>] <命令组> [EXIT] [LOOP] ENDFOR(或NEXT) 功效:执行时,系统首先给循环变量赋初值,然后判断循环变量的值是否超出终值(即循环终值),若超出则跳出循环,执行ENDFOR背面的命令,否则重复依次执行循环体命令组序列及语句。 阐明:① FOR…循环起始语句,ENDFOR为循环终端语句,在FOR…ENDFOR之间的语句序列为循环体。 ② 循环变量的初值,终值和步长确定循环次数。INT((终值-初值)/ 步长)+1为循环次数。 ③ 步长值可为正值和负值,步长缺省时,系统默认步长值为1。 ④ EXIT和LOOP命令的使用方法与DO WHILE循环结构中的使用相同。 ⑤ FOR—ENDFOR循环可嵌套使用。 例11-17 求1!+2!+3!+…+N!的值 S=O T=1 INPUT “请输入N的值:“ TO N FOR X=1 TO N T=T*X S=S+T ENDFOR ? “S=”;S CANCEL 例11-18 设计一个保密口令程序,要求用户使用某个系统时,必须回答口令,该程序口令为“49712”才能允许进入系统,但最多只允许输入三次,否则,退 FoxPro系统。程序如下: SET TALK OFF FOR I=1 TO 3 CLEAR @10,10 SAY “请输入口令:“ SET CONSOLE OFF ACCEPT TO k1 SET CONSOLE ON IF k1=“49712” WAIT“欢迎使用本系统!”TIMEOUT 10 EXIT ELSE WAIT“口令错,请按任意键后重新输入!” ENDIF ENDFOR IF I>3 WAIT “对不起,你不能使用本系统!“TIMEOUT 10 QUIT ENDIF RETURN 3、循环结构SCAN_ENDSCAN 对数据表和统计的处理,用DO WHILE—ENDDO和FOR—ENDFOR循环命令编程时,需要编写统计指针的移动和控制移动的多条命令。因为,这两条命令用于操作数据统计的编程不够理想,效率不高。VFP提供了SCAN—ENDSCAN命令,使用该命令编写处理统计的程序时,不但形式简洁,并且程序执行速度和效率都能得到提升。 格式:SCAN[NOOPTIMIZE] [SCOPE][FOR<exp1>][WHILE<exp2>] [命令组] [LOOP] [EXIT] ENDSCAN 功效:对目前数据表中符合指定条件的数据统计按照命令组序列进行处理(SCAN表示循环开始,并按指定条件移动统计指针;ENDSCAN表示一次循环结束,使循环返回。) 阐明:① NOOPTIMIZE参数严禁扫描Rushmore优化。若VFP使用Rushmore技术来优化数据处理。刚技术能够提升其性能。 ② SCOPE参数指定扫描范围,只有在范围内的统计才能扫描,扫描范围为ALL、NEXT、RECORD N和REST,缺省为ALL ③ FOR exp1是一个过滤条件,它能够过滤掉不扫描的统计。WHILE exp2指定条件体现式,只要其值为真,命令就执行。 ④ LOOP使控制直接返回到,放在SCAN和ENDSCAN之间任意位置,EXIT使控制转向ENDSCAN 后的第一条命令。使用方法与在Do While 循环结构中使用同样。 例4-19 输出临床医学,学制五年的全体学生的学号,姓名,专业,学制. SET TALK OFF CLEAR OPEN DATABASE STUDENTS USE STUDENT CLEAR SCAN FOR 专业= “临床医学”.AND. 学制= ‘五’ ? 学号,姓名,专业,学制 ENDSCAN C
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服