第五章结构化程序设计与网络编程.ppt

上传人:bao****ty 文档编号:144342900 上传时间:2020-09-07 格式:PPT 页数:71 大小:693.50KB
返回 下载 相关 举报
第五章结构化程序设计与网络编程.ppt_第1页
第1页 / 共71页
第五章结构化程序设计与网络编程.ppt_第2页
第2页 / 共71页
第五章结构化程序设计与网络编程.ppt_第3页
第3页 / 共71页
第五章结构化程序设计与网络编程.ppt_第4页
第4页 / 共71页
第五章结构化程序设计与网络编程.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《第五章结构化程序设计与网络编程.ppt》由会员分享,可在线阅读,更多相关《第五章结构化程序设计与网络编程.ppt(71页珍藏版)》请在金锄头文库上搜索。

1、第五章 结构化程序设计 与网络编程,5.1 样本程序分析 5.2 程序的编辑与执行 5.3 输入输出语句 5.4 分支程序设计 5.5 循环程序设计,5.6 子程序及其调用 5.7 子程序存放形式 5.8 变量作用域及程序 间数据传递 5.9 程序出错处理,5.1 样本程序分析,【 例 1 】求数N的阶乘,程序文件Example_1.prg: MODIFY COMMAND Example_1 下列语句时不要输入行号。 * 求数N的阶乘,即 S=123N INPUT ”请输入数N: ” TO N WINDOWAT, NOWAIT ; CLEAR|NOCLEARTIMEOUT,说明: :必须是字符

2、型数据,做为屏 幕提示信息 内存变量:接收字符型数据,且仅接收单个字符 WINDOWSAT:屏幕上出现提示窗口,位置 可由AT指定,例3:P86_【例4】 *Example_4.prg WAIT ”按任意键将显示系统日期 ” TIMEOUT 5 ? DATE(),NOWAIT:不再等待用户按键,程序继续向下执行。 CLEAR|NOCLEAR:关闭 | 不关闭窗口 TIMEOUT:设置等待时间,INPUT 命令格式: INPUT TO ,说明: :必须是字符型数据,做为屏幕 提示信息。 :所接收的数据可为字符型、数值型、 日期型、逻辑型数据: 输入字符型数据时需加定界符 日期型数据需按日期格式输

3、入 逻辑型数据以.T.、.F.的方式输入,例4:P86_【例5】 *Example_5.prg name= “程序设计语言” price=23 INPUT “请输入数据: ” TO X ? “X= ”, X,简单定位输入输出语句,输入命令格式: SAY ,输出命令格式: SAY GET ; DEFAULT READ,说明: 表示数据在窗口中显示的位置,均为数值型 SAY子句用来输出数据,GET子句用于输入及编辑数据 GET后的变量若是内存变量,则该变量必须具有初值,或用DEFAULT子句指定初值;若是字段变量,则显示当前记录该字段值,字段变量不能是备注型或通用型。 若想修改GET子句中变量的值

4、,则必须用READ命令来激活,例5:P87_【例 6】 *Example_6.prg CLEAR X=SPACE(20) Y=0 10,20 SAY ”请输入书名:” GET X 12,20 SAY ”请输入数量:” GET Y READ ? STR(Y,5)+ ”本”+ALLTRIM(X)+ ”的金额为:” ; +STR(12.4*Y,8,2),5.45.5 程序的基本结构,顺序结构 流程图,开始,语句1,语句2,语句n,结束,结构化程序设计可分为顺序结构、分支结构和循环结构。,举例 前面所举的例子均为 顺序结构,分支结构 单分支IF 语句 ( 简单分支结构 ) 流程图,开始,语句序列,结束

5、,条件?,Y,N,语句格式: IF ENDIF,分支结构后面语句,注: IF-ENDIF必须配 对出现。 缩进格式书写,使 程序清晰,易阅读, 不影响程序的执行。,例1:P88_【例7】求两个数中较大值 *Example_7.prg INPUT “请输入一个数: ” TO X INPUT “请输入另一个数: ” TO Y max=X IF maxY max=Y ENDIF ? “ X和Y中较大值是: ”, max,双分支IF语句 (带ELSE的分支结构) 流程图,开始,语句序列1,结束,条件?,Y,N,语句序列2,语句格式: IF ELSE ENDIF,分支结构后面语句,例2:P88_【例8】

6、求两个数中较大值 *Example_8.prg INPUT “请输入一个数: ” TO X INPUT “请输入另一个数: ” TO X IF XY max=X ELSE max=Y ENDIF ? “ X和Y中较大值是:”, max,IF语句的嵌套 基本流程图,开始,语句组1,结束,条件1?,Y,N,语句组2,条件2?,Y,N,语句格式: IF IF ENDIF ELSE ENDIF 注: 不能出现交叉嵌套,内层ENDIF后面语句,外层ENDIF后面语句,例3:P89_【例 9】分段函数程序,*Example_9.prg INPUT “ 请输入一个数:” TO X IF X0 Y=X2-1

7、ELSE IF X=0 Y=0 ELSE IF X=10 Y=X3+1 ELSE Y=2*X3 ENDIF ENDIF ENDIF ? X, Y RETURN,多分支结构 流程图,开始,语句序列 1,结束,条件1?,Y,N,语句序列 2,条件2?,Y,N,语句序列 n,条件n?,Y,N,OTHERWISE,语句序列 n+1,语句格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE,例4:P90_【例 10】用DO CASE语句实现例9中的分段函数 *Example_10.prg INPUT “请输入一个数:” TO X IF TYPE(X)=N DO CAS

8、E CASE X0 Y=X2-1 CASE X=0 Y=0 CASE X=10 Y=X3+1 OTHERWISE Y=2*X3 ENDCASE,? X, Y ELSE WAIT “输入的数据类型错误! ” ENDIF RETURN,条件函数 函数格式: IIF ( , , ) 函数说明: 条件成立,函数返回表达式1的值; 否则, 函数返回的值 和值的数据类型可 以不同。 例5:P91_【例11】求一个数的绝对值。 *Example_11.prg INPUT “请输入一个数:” TO X ? IIF(X=0, X, -X),循环结构 基本流程图,开始,语句序列,结束,条件?,Y,N,循环前的语句

9、,循环体后的语句,语句序列,Y,当型循环语句格式 DO WHILE ENDDO,例5:P91_【例12】求10! *Example_12.prg n=2 s=1 DO WHILE n=10 s=s*n n=n+1 ENDDO ? “ 10!等于:”, s,例6:P92_【例13】输出zymcb.dbf中不带删除标记的 专业信息和专业个数。 *Example_13.prg USE zymcb M=0 DO WHILE !EOF( ) IF !DELETED( ) ? F_bm, F_mc M=M+1 ENDIF SKIP ENDDO ? “共有” +STR(M,4)+ “个专业” USE RET

10、URN,开始,循环体前语句,循环体条件,Y,分支条件,Y,LOOP,N,分支结构下面的语句 ENDDO,N,循环体下面的语句,结束,无条件转向循环,语句格式(以当型循环为例) DO WHILE IF LOOP ENDIF ENDDO,例7: 计算1100的奇数和。 *Ex2.prg store 0 to i, t do while i100 i=i+1 if int(i/2)=i/2 loop endif t=t+i enddo ? 1100奇数和为: , t,说明:int(N): 取整函数 此处用于判断i的奇偶性 思考:利用mod(N1,N2)如何 判断奇偶性?,开始,循环体前语句,循环体条

11、件,Y,分支条件,N,EXIT,Y,分支结构下面的语句 ENDDO,N,循环体下面的语句,结束,无条件跳出循环,语句格式(以当型循环为例) DO WHILE IF EXIT ENDIF ENDDO,例8:P92_【例14】对键盘输入的每一个正数,输出 其算术平方根;当输入的数小于0时,结束程序。 *Example_14.prg DO WHILE .T. CLEAR INPUT “请输入一个数:” TO X IF TYPE(X)N WAIT 非数值型数据 LOOP ENDIF IF X 0 EXIT ENDIF ? X, 的算术平方根为:, SQRT(X) WAIT ENDDO,例9: 计算11

12、00的和 *EX3.PRG S=0 for i=1 to 100 s=s+i next ? s= , s,步长循环语句格式 FOR = TO STEP ENDFOR | NEXT,说明: 初值、终值和 步长应为数值 型表达式 若步长缺省, 默认值为1。,例10:【例15】求10!和1+32+ +92 *Example_15.prg S=0 T=1 FOR N=1 TO 10 T=T*N IF MOD(N,2) =1 S=S+N2 ENDIF ENDFOR ? “ N的值为:”, N ? “ 10!等于:”, T ? “1至10的奇数平方和为:”, S,此循环语句与下列循环语句功能完全等效: L

13、OCATE FOR WHILE DO WHILE FOUND( ) CONTINUE ENDDO,注: 在循环体内,不应该使用改变记录指针的语句,否则可能产 生死循环。,扫描循环语句格式 SCAN FOR WHILE ENDSCAN,例11:【例16】输出zymcb.dbf中不带删除标记的 专业信息和专业个数 *Example_16.prg USE ZYMCB M=0 SCAN IF !DELETED( ) ? F_bm, F_mc M=M+1 ENDIF ENDSCAN ? “共有” +STR(M,4)+ “个专业” USE RETURN,例12:【例17】输出乘法口诀表 *Example_

14、17.prg i=1 DO WHILE i=9 ? j=1 FOR j=1 TO i ? STR(J,1)+*+STR(I,1) + =+STR(J*I,2)+ ENDFOR i=i+1 ENDDO,块语句嵌套(多重循环) 先内后外,逐层循环 内、外循环的控制变量不要同名,例13:【 例 18 】将16个数存于数组AM(4,4)中,求 主对角线上元素之和 *Example_18.prg DIMENSION AM(4,4) S=0 FOR i=1 TO 4 FOR j=1 TO 4 INPUT “请输入第”+STR(i,1)+ “行第” ; +STR(j,1)+ “列元素: ” TO AM(i, j) IF i=j S=S+AM(i, j) ENDIF ENDFOR ENDFOR ? “主对角线元素之和为:”, S RETURN,use d:xsxxglxscjb scan for 英语0 do case case 英语=90 x=优秀 case 英语=75 x=良好 case 英语=60 x=及格 otherwise x=不及格 endcase ? f_xh,英语成绩等级为:,x endscan use ret

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号