VFB程序设计教程教学课件丶第七章.ppt

上传人:sh****n 文档编号:6441702 上传时间:2020-02-25 格式:PPT 页数:86 大小:1.04MB
返回 下载 相关 举报
VFB程序设计教程教学课件丶第七章.ppt_第1页
第1页 / 共86页
VFB程序设计教程教学课件丶第七章.ppt_第2页
第2页 / 共86页
VFB程序设计教程教学课件丶第七章.ppt_第3页
第3页 / 共86页
点击查看更多>>
资源描述
第7章VisualFoxPro程序设计 7 1程序与程序文件 VisualFoxPro支持两种程序设计 结构化程序设计 面向过程的编程方式 面向对象的程序设计 7 1 1程序 1 程序的概念程序是命令的有序集合程序以文本文件的形式存储在磁盘上 称为程序文件程序文件的扩展名为 prg 2 程序方式与交互方式的区别程序可完成复杂的任务 命令只能完成简单任务命令不被保存 程序可长期保存并可多次修改和运行一个程序中可以调用其他程序 命令则不能 7 1 2程序文件的建立 编辑 保存和运行 1 建立和编辑程序文件 1 命令方式格式 modifycommand 说明 扩展名 prg可以省略 由系统自动添加 2 菜单或工具栏方式 7 1 2程序文件的建立 编辑 保存和运行 2 保存程序文件保存 菜单或工具栏按钮 关闭窗口 组合键 Ctrl W ESC 或 Ctrl Q 放弃当前修改 7 1 2程序文件的建立 编辑 保存和运行 3 程序文件的运行 1 命令方式运行程序格式 DO With 说明 文件名可以是 prg文件 也可以是其他类型文件如 exe mpr qpr 所以要加上扩展名 2 菜单或工具栏方式运行程序 7 1 3程序中常出现的错误 遗漏关键字和变量之间的空格遗漏定界符 或定界符使用了中文标点符号关键字 变量名和文件名拼写错误内存变量没有初始化表达式和函数中的数据类型不匹配控制语句缺少结束语句控制语句嵌套错误 7 2程序中常用的命令 7 2 1基本输入命令 1 Input命令格式 INPUT 提示信息 TO功能 从键盘上接收数据 可为任何类型 赋给内存变量说明 提示信息要使用定界符定界 提示信息可以省略不能不输入任何内容直接按回车键输入的字符数据需加定界符 输入日期数据时加大括号 输入逻辑值时加圆点定界符 举例 inputtoAAinput 请输入学生姓名 tonameinput 请输入该生的出生日期 tobirthInput 请输入该生的党员值 to党员 2 Accept命令格式 ACCEPT 提示信息 TO功能字符串接收命令 仅从键盘上接收字符型数据并赋给内存变量 输入的字符串不加定界符 否则 系统会认为定界符也是输入字符串本身的一部分 如果想输入123 此时的123也是字符型数据不能用于计算 举例 accept 请输入学生证号 tonoaccepttoabaccept 请输入学生姓名 toXM 3 Wait命令格式 WAIT 提示信息 TO Window Timeout 功能 等待用户按键盘上任一个键 说明省略提示信息后 系统默认为提示 按任一键继续 waittox用于保存用户按键的字符 可省略此项 如指定Window项 主窗口的右上角会出现一个Wait提示窗口 来显示提示信息 否则显示在屏幕工作中 如指定 Timeout 项 用于设定等待时间 Timeout为间隔秒数 一旦超时 系统自动往下执行 wait 请输入一个字母 tomwindowtimeout3 例7 1 输入任意一个数据 判断该数的数据类型 程序如下 CLEARINPUT 请输入任意类型的一个数据 TOX X 的数据类型为 VARTYPE X 第一次运行 请输入任意类型的一个数据 123第二次运行 请输入任意类型的一个数据 123 第三次运行 请输入任意类型的一个数据 T 第四次运行 请输入任意类型的一个数据 1991 05 03 例7 2 查询学生表中某些学生的信息 程序如下 USE学生 DBFACCEPT 请输入您要查询的学生姓名 TONAMELOCATEFOR姓名 NAMEDISPWAIT 您还要查询其他内容 WINDOWTIMEOUT5INPUT 请输入您要查询的学生的身高 TOHEIGHTLOCATEFOR身高 HEIGHTDISPUSERETURN 7 2 2基本输出命令 1 表达式输出命令格式 功能 对一个或多个表达式求值 并将结果输出到系统主窗口上 说明 表达式的值换行显示 表达式的值不换行显示 单个 表示需要光标换行 举例 3 4 date 6 7use学生表 姓名 性别 出生日期 姓名 身高 体重 2 文本输出命令格式 TextEndText功能 将文本信息输出在屏幕上 说明 Text和EndText必须成对出现 举例 text系统主菜单1 数据输入2 数据查询3 数据统计4 退出系统endtext 7 2 3定位输入输出命令 1 定位输出命令格式 SAY功能 在屏幕指定位置输出表达式的值 说明 指定了输出的位置 标准屏幕是25行80列 左上角顶点为 0 0 右下角坐标为 24 79 行 列都可以为表达式 还可为小数 举例 10 10say hello 15 20say howareyou 20 35say 大家好 2 定位输入命令格式 SAY 提示信息 GET READ功能 在屏幕指定位置接收键盘输入的新值说明SAY子句 用于显示提示信息 提示信息加定界符GET子句 用于为显示变量的值 并允许输入新值GET子句中的变量必须有确定的初值初值决定了该变量的类型和宽度READ 使GET后的进入编辑状态 让光标自动跳到该变量值所在位置上等待编辑修改 可在多个定位输入命令后面使用一个read语句 clearname 张晓磊 grade 98 6birth 2002 09 07 团员 t 0 10say name getnameread 1 10say grade getgraderead 2 10say birth getbirthread 3 10say 团员 get团员read name grade birth 团员 clearuse学生表go2 0 10say 姓名 get姓名 1 10say 性别 get性别 2 10say 出生日期 get出生日期 3 10say 党员 get团员 3 10say 身高 get身高read 7 2 4清屏命令 格式 CLEAR功能 清除屏幕或窗口中的显示内容 光标回到屏幕左上角 7 2 5终止程序执行和返回命令 1 Cancel终止程序执行 关闭所有打开的程序 返回命令窗口 2 Return结束当前程序执行 返回到调用它的上一级主程序 若无上级程序则返回命令窗口 3 Quit退出VisualFoxpro系统 7 2 6MessageBox 函数 1 语法格式 MESSAGEBOX 提示信息 对话框的属性 对话框窗口标题 2 功能 显示一个自定义的对话框 常用作提示之用 也可作一些简单的选择 比如 确定 取消 等3 举例 messagebox 请选择 32 3 0 测试 4 说明 1 提示信息 对话框中所用到的提示文字 2 对话框的属性 MESSAGEBOX 提示信息 对话框的属性 对话框窗口标题 例如 messagebox 请选择 32 3 0 测试 设置图标 设置按钮属性 设置默认按钮 3 对话框窗口标题MESSAGEBOX 提示信息 对话框的属性 对话框窗口标题 例如 messagebox 请选择 32 3 0 测试 4 返回值 该函数执行后有返回值 类型为数值型n messagebox 请选择 32 3 0 测试 n 7 3程序的基本控制结构 程序的概念命令 或语句 的有序集合 以文件 prg 形式存储一个程序一般包括三个部分 数据定义或输入部分数据处理部分数据输出部分程序的三种基本控制结构 顺序结构选择结构循环结构 7 3 1顺序结构 顺序结构程序的含义按语句排列的先后顺序 从上到下依次执行各语句 每个语句执行一次 且只执行一次 例7 3 编程计算圆的周长和面积 ClearInput 请输入圆的半径 ToRPi 3 14L 2 PI RS PI R R 圆的周长为 L 圆的面积为 SReturn 输入半径R的值 定义圆周率变量pi 计算周长L和面积S 输出L和S的值 清屏幕 例7 4 查询学生表中所有男同学和女同学的学生证号 姓名 性别和年龄 并分别显示男同学和女同学的信息 程序分析 clearuse学生表 男同学的信息 disp学生证号 姓名 性别 year date year 出生日期 for性别 男 女同学的信息 disp学生证号 姓名 性别 year date year 出生日期 for性别 女 use 打开学生表 提示先显示男同学信息 逐页显示男同学信息 关闭打开的表 清屏幕 提示先显示女同学信息 逐页显示女同学信息 7 3 2选择结构 选择结构又称分支结构 它是在程序执行过程中 通过判断某些条件是否成立来控制程序走向的程序结构 分支程序结构的分类 单 向 分支双 向 分支多 向 分支 1 单 向 分支 格式 IFENDIF功能 若成立 则执行 否则执行ENDIF后面的语句 说明 IF和ENDIF必须成对出现 是一个逻辑值表达式 可以是多条语句的集合 clearinput 请输入一个正整数 toxifx 0 输入的是正整数 x xendifreturn 例7 5 判断一个数是正负 负数 还是零 程序分析 ClearInput 请输入一个数 toNIfN 0 是正数 EndifIfN 0 是负数 EndifIfN 0 是零 Endif 例7 6 在学生表中根据所输入的学生证号查找该学生记录 程序分析 ClearUse学生表Accept 请输入所要查找的学生证号 TOXSZHLocateFor学生证号 XSZHIfFound DispEndIfUseReturn 2 双 向 分支 格式IFELSEENDIF功能 若 条件 成立 则执行 否则执行 说明 IF和ENDIF必须成对出现 ELSE本身占一行 例7 7 用双分支实现判断一个数的正负 程序分析 ClearInput 请输入一个数 toNIfN 0 是正数 Else 是负数 Endif 程序运行结束 RETURN 是正数 N 0 否 是 是负数 输入一个数 程序运行结束 分支语句的嵌套IFIFELSEENDIFELSEIFENDIFENDIF ClearInput 请输入一个数 toNIFN 0 是正数 ELSEIFN 0 是零 ELSE 是负数 ENDIFENDIF 程序运行结束 RETURN ClearInput 请输入一个数 toNIFN 0IFN 0 是正数 ELSE 是零 ENDIFELSE 是负数 ENDIF 程序运行结束 RETURN 例7 8 在学生表中根据所输入的姓名查找该学生记录程序分析 ClearUse学生表Accept 请输入所要查找的姓名 TOXMLocateFor姓名 XMIfFound DispELSE 查无此人 EndIfUseReturn 显示当前记录 找到 否 是 显示查无此人 按XM查找记录 关闭表 打开学生表 输入要查找的姓名 XM 3 多 向 分支 格式 DOCASECASECASE CASE OTHERWISE ENDCASE 例7 9 根据所输入的日期判定今天是星期几 程序分析 输入日期INPUT根据日期判断星期几DOW 日期变量 程序结构分析 单分支双分支多分去 Input 请输入今天日期 ToDIFDOW D 1 日期日 ENDIFIFDOW D 2 日期一 ENDIFIFDOW D 3 日期二 ENDIFIFDOW D 4 日期三 ENDIFIFDOW D 5 日期四 ENDIFIFDOW D 6 日期五 ENDIFIFDOW D 7 日期六 ENDIF 例7 9 根据所输入的日期判定今天是星期几 程序分析 输入日期INPUT根据日期判断星期几DOW 日期变量 程序结构分析 单分支双分支 嵌套 多分去 Input 请输入今天日期 ToDIFDOW D 1 日期日 ELSEIFDOW D 2 日期一 ELSEIFDOW D 3 日期二 ELSEIFDOW D 4 日期三 ELSEIFDOW D 5 日期四 ELSEIFDOW D 6 日期五 ELSEIFDOW D 7 日期六 ENDIFENDIFENDIFENDIFENDIFENDIFENDIF 例7 9 根据所输入的日期判定今天是星期几 程序分析 输入日期INPUT根据日期判断星期几DOW 日期变量 程序结构分析 单分支双分支多分去 Input 请输入今天日期 ToDDoCaseCaseDow D 1 星期日 CaseDow D 2 星期一 CaseDow D 3 星期二 CaseDow D 4 星期三 CaseDow D 5 星期四 CaseDow D 6 星期五 OTHERWISE 星期六 EndCase Accept 请输入学生证号 ToXSZHUse成绩表LocateFor学生证号 XSZHDoCaseCase期末成绩 90 优秀 Case期末成绩 80and期末成绩 70and期末成绩 60and期末成绩 69 及格 Case期末成绩 60 不及格 EndCase 例7 10 根据所输入的学生证号 为成绩表中 期末成绩 字段的值判定等级 期末成绩在 90分以上的为优秀 80至89为良好 70至79为中等 60至69为及格 60以下为不及格 程序分析 学生证号的输入 成绩的判断 分支结构 7 3 3循环结构 循环结构 简称循环 程序中 根据某些条件有规律地重复执行某程序段被重复执行的程序段 称为循环体循环体通过循环结构语句来实现循环循环结构可以减少程序代码重复书写的工作量 使编程效率大大提高 VFP的循环结构语句主要三种当型循环步长型循环表扫描型循环 命令格式1DOWHILE循环体语句ENDDO 1 当型循环 DOWHILE ENDDO 语句功能 1 判断是否为真 T 是真执行循环体语句 否则执行ENDDO后面语句 2 执行DOWHILE和ENDDO之间的命令序列 循环体 3 遇到ENDDO 转 1 4 结束循环 转到ENDDO后面的语句 例7 11 输出 至100之间所有能被3整除的数 ClearY 1DoWhileY 100Ifmod Y 3 0 YEndIfY Y 1EndDoRETURN 显示y值 y 100 N ENDDO后面语句 Y 定义变量y 1 y整除3 Y N y值增1 例7 12 把学生表所有民族为汉族的学生逐条输出 程序PR7 12 prg如下 ClearUse学生表 dbfDoWhilenotEOF If民族 汉族 DispEndIfSkipEndDOUSE 命令格式2DOWHILE 命令序列1 EXIT 命令序列2 LOOP 命令序列3 ENDDO语句功能 在执行循环体语句的过程中遇到exit语句 立即结束循环体的执行 转到ENDDO的后面 在执行循环体语句的过程中遇到loop语句 立即结束循环体的本次执行 转到DOWHILE处 重新判断循环条件 EXIT和LOOP命令只能出现在循环体中 并且可以出现在循环体中的任何位置 例7 12 1 编写一个能多次计算任意半径的圆的周长和面积的程序 当输入的半径小于或等于0时 停止运行 Clearinput 请输入圆的半径 torPi 3 14L 2 PI RS PI R R 圆的周长为 L 圆的面积为 S ClearR 1dowhileR 0Input 请输入圆的半径 ToRifR 0loopendifL 2 3 14 RS 3 14 R R 圆的周长为 L 圆的面积为 Senddo Cleardowhile T Input 请输入圆的半径 ToRifR 0exitendifL 2 3 14 RS 3 14 R R 圆的周长为 L 圆的面积为 Senddo 2 步长型循环 FOR ENDFOR 格式 FOR TO STEP LOOP EXIT ENDFOR NEXT说明 1 和是数值表达式 2 值可以为正 也可以为负 省略时默认值为1 步长值不能为0 否则造成死循环 3 ENDFOR可以用NEXT代替 4 循环次数 INT 终值 初值 步长 1 fori 1to1 7sete2 iendfor 2 步长型循环 FOR ENDFOR 格式 FOR TO STEP LOOP EXIT ENDFOR NEXT 循环的执行过程 1 将初值赋给循环变量 2 循环变量与终值比较 若超过终值转 5 否则转 3 3 执行循环体 EXIT和LOOP意义同前 4 遇到ENDFOR子句时 循环变量自动按增值 然后转 2 5 退出循环 执行ENDFOR后面的语句 fori 1to1 7sete2 iendfor 例7 13 计算1 2 3 100 ClearS 0Fori 1to100S S iNexti 1 2 3 100 SRETURN S 0i 1DOWHILEi 100S S ii i 1ENDDO 例7 14 向学生表中一次添加10条新记录 采用循环结构 每次添加一条记录先插入一条空记录利用定位输入输出命令输入记录内容ClearUse学生表Fori 1to10APPENDBLANK 2 1SAY 学生证号 GET学生证号PICTURE 9999999999 4 1SAY 姓名 GET姓名 6 1SAY 性别 GET性别 8 1SAY 出生日期 GET出生日期 10 1SAY 民族 GET民族READENDFORUSE 格式 SCAN FOR WHILE LOOP EXIT ENDSCAN功能 在表的指定内扫描 查找满足的记录并执行循环体中的命令序列 说明 1 默认为ALL 2 每执行一遍循环体 指针自动下移一个记录 并自动判断是否指向文件尾 是则结束循环 转到ENDSCAN后面 3 表扫描型循环 SCAN ENDSCAN SCANENDSCAN dowhilenoteof skipenddo 例7 15 查询学生表中所有女党员并输出 clearuse学生表scanfor党员and性别 女 displayendscanusereturn 例7 15 1 将上述程序 用当型循环改写 例7 15 2 将上述程序 用步长型循环改写 7 4子程序 过程与自定义函数 7 4 1子程序1 子程序的概念子程序与主程序 子程序是指可以被多次反复地调用 能完成特定功能的特殊程序段 以独立的程序文件方式存储 相对而言 把调用子程序的程序称为 主程序 子程序的优点 子程序是相对独立的 通用的一段代码 一个程序由若干个子程序组成 子程序独立编码和测试 子程序还可以重复使用 这样可以方便地生成程序 减少代码的编写量 并易于修改和维护程序 7 4 1子程序 2 子程序的建立 MODIFYCOMMAND子程序文件名3 子程序的调用调用语句格式 DO With 说明 WITH用于主程序和子程序间参数的传递子程序参数定义 PARAMETERS子程序返回语句的四种格式RETURN返回到调用它的上一级主程序或VFP窗口RETURN将表达式的值返回给调用程序RETURNTO返回指定程序文件RETURNTOMASTER直接返回到第一级主程序 7 4 1子程序 子程序调用语句的执行过程 功能 执行调用语句时 系统将指定的子程序调入内存并执行该子程序 程序转到子程序中 当执行到子程序中的返回语句时 程序返回主程序 执行该调用语句的下一条可执行语句 主程序 ClearDozj1 prgDozj2 prgReturn zj1 prg P 1FORi 1TO100P P iENDFOR 100的阶乘为 pRETURN Zj2 prg S 0FORi 1TO100S S iENDFOR 1 100的和为 SRETURN 例7 16 用子程序求任意一个数的阶乘 ClearInput 请输入要求阶乘的数 ToMDoJieCheng prgWithMReturn JieCheng prg子程序 PARAMETERSNP 1FORi 1TONP P iENDFOR N 的阶乘为 pRETURN 主程序PR7 16 1 prg如下 带两个参数 ClearInput 请输入要求阶乘的数 ToMX 1DoJieCheng prgWithM X M 的阶乘为 XReturn JieCheng prg子程序 PARAMETERSN PFORi 1TONP P iENDFORRETURN 7 4 2过程和过程文件 1 过程过程的的概念 过程是以PROCEDURE开头 以ENDPROC结尾的一段程序 它可以放在调用程序中 也可以独立存储为一个过程文件 过程定义的语法格式 PROCEDUREPARAMETERS RETURN ENDPROC 例7 17 把求任意一个数的阶乘的程序用过程来实现 程序与过程在一个程序文件中 不带参数 ClearInput 请输入要求阶乘的数 ToNDoJC 过程JC 也在程序PR7 17 1中ProcedureJCP 1FORi 1TONP P iENDFOR N 的阶乘为 pENDPROCRETURN 程序PR7 17 2 prg如下 带一个参数 ClearInput 请输入要求阶乘的数 ToMDoJCWithM 过程JC 也在程序PR7 17 2中 ProcedureJCPARANP 1FORi 1TONP P iENDFOR N 的阶乘为 pENDPROCRETURN 2 过程文件过程文件 包括一个或多个过程的程序文件 prg 语法格式 PROCEDURERETURNENDPROCPROCEDURERETURNENDPROC PROCEDURERETURNENDPROC 过程文件的建立 与程序文件的建立方法完全相同过程文件的打开与过程的调用要调用过程 必须先打开包含此过程的过程文件 打开过程文件的格式 SETPROCEDURETO ADDITIVE 说明 可以打开一个或多个过程文件 过程文件打开后 文件中所有过程都可以被调用参数ADDITIVE表示不关闭原先已打开过程文件过程文件的关闭SETPROCEDURETO或CLOSEPROCEDURE 例7 18 输入任意半径 计算圆的周长 圆的面积和球的体积用过程文件实现 程序分析 主程序main prg过程文件pp prg 主程序main prg ClearInput 请输入半径 ToRSetProceduretoPP prgDoZCWithRDoMJWithRDoTJWithRSetProcedureTo 过程文件PP prg ProcZCPARAXL 2 PI X 周长为 LENDPROCPROCMJPARAXS PI X X 面积为 SENDPROCPROCTJPARAXV 4 3 PI X X X 体积为 VENDPROC 内容回顾 程序例如 求任意一个整数的阶乘和1到该整数的和子程序过程函数 ClearInput 请输入一个整数 ToNP 1FORi 1TONP P iENDFOR N 的阶乘为 pS 0FORi 1TONS S iENDFOR 1 N 的和为 SRETURN ClearInput 请输入一个整数 ToMSetProceduretopd prgdopd1withMdopd2withMSetProcedurttoreturn 过程文件pd prg procedurepd1ParametersNP 1FORi 1TONP P iENDFOR N 的阶乘为 pendprocprocedurepd2ParametersNS 0FORi 1TONS S iENDFOR 1 N 的和为 Sendproc 主程序 m1 prg ClearInput 请输入一个整数 ToMDosub1withMDosub2withMRetrun 内容回顾 程序例如 求任意一个整数的阶乘和1到该整数的和子程序过程函数系统函数用户定义函数date year date int 123 4 mod 23 2 bof eof found recno reccount 7 4 3用户自定义函数 用户自定义的函数和系统内部函数一样 以函数的方式调用 即 函数名 用户自定义的函数不能与系统函数同名 用户自定义函数的语法格式 FUNCTIONPARAMETERRETURN ENDFUNC 例7 19 用函数实现求组合CLEARINPUT 第一个数 TOrINPUT 第二个数 TOnC JC n JC r JC n r 从 n 里取 r 的组合为 CRETURN JC 函数 求任意一个数x的阶乘 FUNCTIONJCPARAMETERSXP 1FORi 1TOXP P iENDFORRETURNP 返回P的值ENDFUNC 7 4 4参数传递和变量的作用域 1 参数传递在主程序调用子程序时 有时需要调用程序与被调用程序之间进行参数传递 调用程序用DOWITH把实参数据传递给被调用程序中的形参数据 被调用程序中用PARAMETERS来接收参数 主程序 m1 prg ClearInput 请输入一个整数 ToMDosub1withMRetrun sub1 prg paramertersNP 1FORi 1TONP P iENDFOR N 的阶乘为 pReturn 1 参数传递在VFP中分为两种方式 第一种参数传递方式 按值传递将实参值的副本传递给形参 形参值的改变不影响实参变量的值 第二种参数传递方式 按地址 引用 传递将实参的地址传给形参 此时形参变量和实参变量同用一个地址内数据 形参的改变直接影响实参值 参数传递方式的设置 SETUDFPARMSTOVALUE REFERENCE其中 VALUE表示按值传递 REFERENCE表示按地址传递 2 两种格式进行带参调用 第一种调用方式格式1 DOWITH说明 如果实参是非变量的常量或表达式即具体值 此时的参数传递为按值传递 但如果实参是变量 这时是按地址传递第二种调用方式格式2 说明 默认情况下都按值传递 如果想要按地址传递可用命令SETUDFPARMS重新设定 SETUDFPARMSTOREFERENCE Clear 采用格式2的参数传递 Y 1 格式2按值传递 PP Y 外部 Y Y 1SetUDFPARToREFERE 格式2按地址传递 PP Y 外部 Y 采用格式1的参数传递 Y 1 格式1按地址传递 DOPPWITHY 外部 Y Y 1SetUDFPARMSToValues 格式1按值传递 DOPPWITHY 外部 Y Y 1 格式1常量按值传递 DOPPWITH1 外部 Y RETURN 过程PP PROCPPPARAXX 2 X 1 内部 XRETURNENDPROC 例7 20 两种格式 两种方式的参数传递应用 采用格式2的参数传递格式2按值传递内部3外部1 格式2按地址传递内部3外部3 采用格式1的参数传递格式1按地址传递内部3外部3 格式1按值传递内部3外部3 格式1按常量按值传递内部3外部1 7 4 4参数传递和变量的作用域 2 变量作用域 1 变量的作用域 是指变量作用的有效范围 2 按变量的作用域来划分 变量可分为种 全局变量 public 私有变量 private 本地变量 local 全局变量PUBLIC在所有程序模块中都有效的内存变量全局变量在程序或过程结束后不会自动释放 必须使用RELEASE或CLEARMEMORY命令才能释放 全局变量的作用域为从定义点开始 到退出FoxPro时所执行的所有的程序或过程 全局变量须先说明 定义 后使用 通常在主程序中定义 也可在子程序中定义 还可在命令窗口中定义 格式 PUBLIC举例 publica b c说明 变量被说明时即被产生 同时赋初值 F 私有变量PRIVATE在建立它的程序模块以及该程序嵌套调用的各级子程序中使用的内存变量 局部变量一旦离开定义它们的程序 就将失去意义 程序中没有被说明为全局的内存变量 都被看成是局部变量 局部变量也可以用PRIVATE来说明 格式1 格式2 PRIVATEALL LIKE EXCEPT 说明 变量被说明的同时并不产生变量 当第一次被赋值时才产生 没被说明 但在程序中被赋初值 系统默认其为单元的局部变量 隐式说明 在主程序中说明的局部变量其作用域等同于整个程序的全局变量 本地变量Local用Local定义的本地内存变量只能在定义它的程序模块中存在 一旦定义它的程序运行完毕 本地变量就会从内存中释放 其它程序中不能访问本地变量 例7 21 全局变量 局部变量及其作用域示例 主程序 CLEARCLEARMEMORYPublicA1A1 1 DO子程序1 主程序中内存变量有 LISTMEMORYLIKEA RETURN PROCEDURE子程序1PUBLICA2A2 2 PRIVATEA3STORE 3 TOA1 A2 A3 子程序1中第一次显示内存变量 LISTMEMORYLIKEA DO子程序2 子程序1中第二次显示内存变量 LISTMEMORYLIKEA RETURNPROCEDURE子程序2PRIVATEA2LOCALA4STORE4TOA1 A2 A3 A4 子程序2中第一次显示内存变量 LISTMEMORYLIKEA RETURN 子程序1中第一次显示内存变量A1PubC 3 A2PubC 3 A3PrivC 3 子程序2中第一次显示内存变量A1PubN4A2 hid C 3 A3PrivN4A4本地N4A2PrivN4子程序1中第二次显示内存变量A1PubN4A2PubC 3 A3PrivN4主程序中内存变量有 A1PubN4A2PubC 3 程序填空 程序填空 功能 下面程序是计算1 3 5 99之和的程序 请在 处添上适当的内容 使程序完整 SETTALKOFF SPACE SPACE FORI 1TO99 S S IENDFOR SPACE 结果 SETTALKONRETURN 答案 答案1 s 0 答案2 step2 答案3 s 或 str s 或 str s 4 程序填空 功能 依次显示XSDB DBF数据表中的记录内容 请在 处添上适当 的内容 使程序完整 SETTALKOFF SPACE SPACE DOWHILE DISP SPACE ENDDOUSESETTALKONRETURN 答案 答案1 usexsdb 答案2 not eof 或 eof 或 noteof 或 Eof T 答案3 SKIP 程序填空 功能 现有职工工资库文件GZ DBF和职工档案DA DBF 要求对职工工资库文件中的 基本工资 应发工资 扣款工资 和 实发工资 的字段进行赋值 请在 处添上适当的内容 使程序完整 SETTALKOFFCLEARSELEAUSEGZINDEXON编号TOGZBHSYSELEBUSEDA SPACE INDEON TODABHSYSELEA SPACE UPDAON编号FROMDAREPL基本工资WITH SPACE 应发工资WITH基本工资 奖金 扣款合计WITH水费 电费 房租费 实发工资WITH实发工资 扣款合计LISTCLOSEDATABASESETTALKONRETURN 答案 答案1 编号 答案2 B 基本工资 或 B 基本工资 答案3 REPLALL 程序改错 程序改错 题目 表XSDA DBF结构为 学号 C 6 姓名 C 6 性别 C 2 入学成绩 N 6 2 本程序实现按学号查找记录 直到输入 为止 注意 不可以增加或删除程序行 也不可以更改程序的结构 SETTALKOFFUSEXSDA FOUND ACCEPT 请输入要查找的学号 ONXHDOWHILEXH FOUND LOCATEFOR学号 CJ IFFOUND 学号 姓名 入学成绩ELSE 无此学号 ENDIFACCEPT 请继续输入要查找的学号 TOXH FOUND ENDFOR 谢谢使用本查找系统 USESETTALKONRETU 答案 答案1 ACCEPT 请输入要查找的学号 TOXH 答案2 LOCATEFOR学号 XH 答案3 ENDDO 或 ENDD 程序改错 题目 计算出1 50以内 包含50 能被3和5整除的数之和 注意 不可以增加或删除程序行 也不可以更改程序的结构 SETTALKOFFCLEARX 0 FOUND Y 1 FOUND DOWHILNOTEOF X X 1DOCASECASEMOD X 5 0ANDMOD X 3 0Y Y XCASEX50EXITENDCASEENDDO FOUND XSETTALKONRETU 答案 答案1 Y 0 答案2 DOWHIL T 答案3 Y 程序改错 题目 已有员工数据库YG DBF和工资数据库GZ DBF 给定MODI PRG程序的功能是根据用户输入的岗位查询相应的岗位工资 教学津贴和科研津贴 并显示聘任为该岗位的人员情况 注意 不可以增加或删除程序行 也不可以更改程序的结构 SETTALKOFFAN Y SELECT0USEGZINDEXON雇员号TOGZ1SELECT0USEYG FOUND SETRELATIONON雇员号TOGZDOWHILEUPPER AN Y CLEARGW 教授 请输入岗位 GW FOUND SEEK岗位IF FOUND 没有此岗位 ELSE 岗位 GZ 岗位工资 GZ 科研津贴LISTOFF姓名 性别 职称 岗位FOR岗位 GWENDIF FOUND INPUT 是否继续 TOUPPER AN ENDDO 再见 SETTALKON 答案 答案1 SET RELA TO 雇员号 INTO GZ 或 SET RELA TO 雇员号 INTO A 答案2 LOCA FOR 岗位 GW 答案3 WAIT 是否继续 TO AN 或 ACCE 是否继续 TO AN 程序设计 程序设计 题目 设表RSDA DBF结构为 学号 C 5 姓名 C 6 职称 C 6 统计出RSDA DBF表中职称为 工程师 的 人数 利用DOWHILE ENDDO循环语句实现 将人数存入变量Y中 请按照题目要求 在下面编写程序代码 SETTALKOFFY 1 Program End DOYZJ9WITHYSETTALKOFFRETURN 答案 usersdastore0toslocatefor职称 工程师 dowhilenoteof s s 1continueenddo 共有工程师 str s 3 名 useY S 程序设计 题目 计算机等级考试数据表为STUDENT DBF 凡笔试和上机成绩 均达到80分以上者 应在等级字段中填入 优秀 字样 请用DOWHILE ENDDO语句编写 请按照题目要求 在下面编写程序代码 SETTALKONCLEAR Program End CLOSEDATASETTALKOFF 答案 USESTUDENTDOWHILE NOT EOF IF笔试 80 AND 上机 80REPL等级WITH 优秀 ENDIFSKIPENDDLIST 程序设计 题目 学生刘一的信息存在数据表STUDENT DBF和STUDY DBF中 编程以物理连接方法生成一名为SG DBF的新数据表 用于保存刘一的全部信息 并显示 请按照题目要求 在下面编写程序代码 SETTALKON Program End CLOSEDATASETTALKOFF 答案 SELE1USESTUDENTSELE2USESTUDYSELE1JOINWITHSTUDYTOSG FOR学号 STUDY 学号 AND 姓名 刘一 FIELDS学号 姓名 STUDY 课程号 STUDY 成绩SELE3USESGLIST
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!