清华大学出版社 TSINGHUA UNIVERSITY PRESS 第4章程序设计初步
第4章 程序设计初步
清华大学出版社 TSINGHUA UNIVERSITY PRESS 41程序文件 程序文件建立与修改命令 MODIFY COMMAND 程序的运行命令 DO 定位输入命令: @][GET,]] [ NOWAIT][ CLEAR| NOCLEAR][ TIMEOUT<数值表达式 「例42WAI命令输出信息示例 WAI'"请检查输入内容!" WINDOW
4.1 程序文件 程序文件建立与修改命令: MODIFY COMMAND 程序的运行命令: DO 定位输入命令: @ [SAY ] [[GET ][DEFAULT ] WAIT命令: WAIT [] [TO ] [WINDOW [AT ,]] [NOWAIT] [CLEAR | NOCLEAR] [TIMEOUT ] [例4-2] WAIT命令输出信息示例。 WAIT "请检查输入内容!" WINDOW
清华大学出版 4,2程序的控制结构 NGHUA U 顺序结构 PRESS 分支结构 循环结构 分支语句格式: 多分枝语句格式 IF DO CASE 语句序列1 CASE] USE sb LOCATE FOR NOT主要设备 IF FOUNDO &&若查到, FOUND函数返回.T CASE DISPLAY名称,价格 REPLACE价格WITH价格*(1-0.1) DISPLAY名称,价格 LOTHERWISE ELSE <语句序列n+1] WAIT"无此设备!” WINDOW ENDCASE ENDIF USE RETURN
4.2 程序的控制结构 分支语句格式: IF [ELSE ] ENDIF 例: USE sb LOCATE FOR NOT 主要设备 IF FOUND() && 若查到,FOUND函数返回.T. DISPLAY 名称,价格 REPLACE 价格 WITH 价格*(1-0.1) DISPLAY 名称,价格 ELSE WAIT "无此设备!" WINDOW ENDIF USE RETURN 多分枝语句格式: DO CASE CASE CSAE … CASE [OTHERWISE ] ENDCASE 顺序结构 分支结构 循环结构
清华大学出版社 TSINGHUA UNIVERSITY PRESS 循环语句格式与示例 条件循环 步长循环 DO WHILEFOR=数值表达式1>T0[STEP10000 &&累加 ?名称 NEXT ENDIF SKIP ENDDO USE
循环语句格式与示例 条件循环 步长循环 DO WHILE ENDDO FOR = TO [STEP ] ENDFOR NEXT * e4-7.prg USE sb DO WHILE NOT EOF( ) IF 价格>10000 ?名称 ENDIF SKIP ENDDO USE * e4-9.prg s=0 && s为累加器,初值为0 FOR i=1 TO 100 && i为计数器,初值为1 s=s+i && 累加 NEXT ?"s=",s
清华大学出版社 TSINGHUA UNIVERSITY PRESS 扫描循环 其他 SCAN[范围>][FOR10000 ?名称 ENDSCAN USE
扫描循环 其他 SCAN [] [FOR] [WHILE] ENDSCAN 循环辅助语句 LOOP语句 EXIT语句 多重循环 * e4-10.prg USE sb SCAN FOR 价格>10000 ?名称 ENDSCAN USE
清华大学出版社 TSINGHUA UNIVERSITY PRESS 43多模块程序 类型 格式 调用命令 子程序「 PARAMETERSWH N RETURNI 过程 PROCEDURE 自定义函数主要在表达式中调用 PARAMETERS RETURNI 自定义世 UNCTION RETURN<表达式
4.3 多模块程序 类型 格式 调用命令 子程序 [ PARAMETERS ] [RETURN] DO [WITH ] [IN ] 过程 PROCEDURE 自定义函数主要在表达式中调用 [PARAMETERS ] [RETURN] 自定义 函数 [FUNCTION ] [PARAMETERS ] [RETURN ]
清华大学出版社 4.3.4变量的作用域s 建立公共变量命令格式: PUBLIO 建立私有变量命令格式: PRIVATE[内存变量表 ALLLIKE| EXCEPT 例4-7变量隐藏与恢复的示例。 (1)假定已建立了如下的程序 * e4-17 prg PARAMETERS SI &&si为私有变量程序调用前的bj被隐藏起来 PRIVATE mj &&m为私有变量程序调用前的同名变量m被隐藏起来 mj=3.14*]*si ”程序执行时的变量清单:” LIST MEMO LIKE ? RETURN 2)在命令窗口键入下列命令 RELEASE ALL &&清除用户定义的所有内存变量 &&在命令窗口设置的变量是公共变量 bi ”程序执行前的变量清单:” LIST MEMO LIKE&&显示变量清单 DO e4-17 WiTh bi &&b传入e417 ?"程序执行后的变量清单:"&&显示变量清单 LIST MEMO LIKE ? &&程序执行结束时,被屏蔽的变量mb被恢复
4.3.4 变量的作用域 建立公共变量命令格式: PUBLIC 建立私有变量命令格式: PRIVATE [][ALL[LIKE | EXCEPT ]] 建立本地变量命令格式:LOCAL [例4-17] 变量隐藏与恢复的示例。 (1) 假定已建立了如下的程序: * e4-17.prg PARAMETERS sj && sj为私有变量,程序调用前的bj被隐藏起来 PRIVATE mj && mj为私有变量,程序调用前的同名变量mj被隐藏起来 mj =3.14*sj*sj ?”程序执行时的变量清单:” LIST MEMO LIKE ?j RETURN (2) 在命令窗口键入下列命令: RELEASE ALL && 清除用户定义的所有内存变量 mj=0 && 在命令窗口设置的变量是公共变量 bj=3 ?”程序执行前的变量清单:” LIST MEMO LIKE ?j && 显示变量清单 DO e4-17 WITH bj && bj传入e4-17 ?"程序执行后的变量清单:" && 显示变量清单 LIST MEMO LIKE ?j && 程序执行结束时,被屏蔽的变量mj,bj被恢复
清华大学出版社 TSINGHUA UNIVERSITY PRESS 44窗口设计样例 BROWSE命令 定义功能键 命令格式: ON KEY[ABEL数值表达式>
4.4 窗口设计样例 BROWSE命令 定义功能键 命令格式: ON KEY [LABEL ] [] 窗口关闭命令 RELEASE WINDOWS [] CLEAR WINDOWS CLEAR ALL 信息对话框函数 函数格式: MESSAGEBOX([,[,]])
清例421社一个可利用功能键为SBDE添加记录、删除或恢复记录的浏览窗口 prg PUSH KEY CLEAR &&清除以前设置过的功能键 on KEY LABEL f4 do tj &&F4一设置添加记录功能键 on KEY LABEL f5 do schf &&F5一设置删除/恢复功能键 oN KEY LABEL f6 do pk &&F6一清除有删除标记的记录 bs=" BROWSE TITLE’设备表+ F4:添加F5:删除/恢复F6:清除 USE sb &bs ProCeduRE tj &&添加记录 APPEND BLANK &&添加一个记录 PROCEDURE Schf &&删除/恢复记录处理 IF DELETED O &&记录有删除标记返回.T RECALL &&当前记录有删除标记则取消它,即恢复记录 ELSE DELETE &&当前记录无删除标记则打上删除标记 ENDIF PROCEdURE pk &&清除有删除标记的记录 PACK &&清除有删除标记的记录,浏览窗口被关闭 &bs &&重新打开浏览窗口 「删设备表 F4:添加F5删除/恢复F清除 口区 设备编号『名称启用日期价格部门住要设备备注商标 016-1车床 03/05/90620446121T Memo gen 016-2车床01/15/9227132.7321T emo: gen 037-2磨床 241292.1222T memo: gen 03-1钻床1019527500231 Memo! gen 08/12/07 991nnn:19
[例4-21] 设计一个可利用功能键为SB.DBF添加记录、删除或恢复记录的浏览窗口。 * e4-21.prg PUSH KEY CLEAR && 清除以前设置过的功能键 ON KEY LABEL f4 DO tj && F4 — 设置添加记录功能键 ON KEY LABEL f5 DO schf && F5 — 设置删除/恢复功能键 ON KEY LABEL f6 DO pk && F6 — 清除有删除标记的记录 bs="BROWSE TITLE '设 备 表'+' F4:添加 F5:删除/恢复 F6:清除'" USE sb &bs PROCEDURE tj && 添加记录 APPEND BLANK && 添加一个记录 PROCEDURE schf && 删除/恢复记录处理 IF DELETED() && 记录有删除标记返回.T. RECALL && 当前记录有删除标记则取消它, 即恢复记录 ELSE DELETE && 当前记录无删除标记则打上删除标记 ENDIF PROCEDURE pk && 清除有删除标记的记录 PACK && 清除有删除标记的记录,浏览窗口被关闭 &bs && 重新打开浏览窗口