《【数据库应用基础】程序的三种基本结构》由会员分享,可在线阅读,更多相关《【数据库应用基础】程序的三种基本结构(36页珍藏版)》请在金锄头文库上搜索。
1、FoxPro For Windows 1 FoxPro程序设计 第5讲 程序的三种基本结构 顺序结构程序设计 分支结构程序设计 循环结构程序设计 FoxPro For Windows 2 FoxPro程序设计 按照命令语句排列的顺序,一条接一条地依次执行。 【例5.18】在student.dbf学生登记表中查找并显示一个学生的信息。 SET TALK OFF USE student ACCEPT 请输入学号: TO msno LOCATE FOR sno= msno ? msno, 的有关信息如下: ? 姓名:, name ? 性别:, sex USE SET TALK ON RETU 请输入
2、学号:990101 990101的有关信息如下: 姓名: 王亚洲 性别: 男 请输入学号:999999 999999的有关信息如下: 姓名: 性别: 顺序结构程序设计 上面程序的缺点:未找到,也显示信息。 假设输入一个不存在的学号? FoxPro For Windows 3 FoxPro程序设计 分支结构是指程序执行到某处时,根据给定的条件经判断后选择执 行某些语句。难点是条件语句的设置。 分支结构程序设计 【例】 IF x=5 结果为零表示能整除,不为零不能整除。 MOD(year,400)=0 .OR. MOD(year,4)=0 .AND. MOD(year,100)#0 ? year,
3、年是闰年 ? year,年不是闰年 1964 1948 1600 2000 FoxPro For Windows 9 FoxPro程序设计 3、IF语句的嵌套: IF分支中使用IF语句。 【例5.21】输入一个字符,判断它属于字母、数字、特殊符号中哪一类。 SET TALK OFF ACCEPT 请输入一个字符: TO ch IF UPPER(ch)=A ? ch, 是字母 ELSE IF ch=0 ? ch, 是数字 ELSE ? ch, 是一个特殊符号 ENDIF ENDIF SET TALK ON 注意: 1、IF-ENDIF是一对, 缺一不可。 2、表达式为逻辑值; 3、嵌套时注意对应
4、关系 小写转大写函数:UPPER() 大写转小写函数:LOWER() FoxPro For Windows 10 FoxPro程序设计 4、多分支: DO CASE-ENDCASE语句 DO CASE CASE CASE CASE OTHERWISE ENDCASE 为真? 为真? 为真? ENDCASE后语句 Y N 依次判断,只执行条件为真的一组命令语句,之后转到 ENDCASE后。 FoxPro For Windows 11 FoxPro程序设计 【例5.22】用CASE语句改写上例(判断字母、数字、特殊符号)程序. SET TALK OFF ACCEPT 请输入一个字符: TO ch
5、DO CASE CASE UPPER(ch)=A ?ch, 是字母 CASE ch=0 ?ch, 是数字 OTHERWISE ?ch, 是一个特殊符号 ENDCASE SET TALK ON FoxPro For Windows 12 FoxPro程序设计 【例5.23】将百分制成绩转换为优、良、中、及格和不及格等级成绩。 90-100 优; 80-89 良; 70-79 中;60-69 及格;60分以下 不及格 SET TALK OFF INPUT “请输入百分成绩=” TO mscore DO CASE CASE mscore=90 .and. mscore=80 .and. mscore
6、=70 .and. mscore=60 .and. mscore=60 Mgrade= “良” Mgrade= 及格 CASE mscore=70 CASE mscore=70 Mgrade= “中” Mgrade= 中 CASE mscore=60 CASE mscore=80 Mgrade= “及格” Mgrade= 良 CASE mscore=90 Mgrade= “不及格” Mgrade=优 OTHERWISE OTHERWISE Mgrade=“输入错!” Mgrade=输入错! ENDCASE ENDCASE ? Mgrade ? Mgrade SET TALK ON SET TA
7、LK ON 注意条件的次序! FoxPro For Windows 14 FoxPro程序设计 说明: IF ENDIF 适合单重或双重分支,嵌套时依次判断 。 DO CASE ENDCASE 适合三重以上分支,只执行 条件为真的一组语句。 注意语句格式,不可缺头少尾。 注意条件的合理性。 FoxPro For Windows 15 FoxPro程序设计 查找 查找成功? 输出查询信息 真 显示错误信息 假 假 输入考号 考号验证? 真 成绩查询流程图 特征 操作对象不同 操作内容完全相同 多次重复同一操作 循环结构程序设计问题的提出 FoxPro For Windows 16 FoxPro程
8、序设计 -DO 循环语句基本形式及其执行过程 DO WHILE 循环开始语句 循环体 ENDDO 循环结束语句 循环语句基本形式 循环语句执行过程(流程图) 为真否? 真 ENDDO后的语句 假 FoxPro For Windows 17 FoxPro程序设计 【例】编程实现成绩查询。 SET TALK OFF USE cjk DO WHILE .T. CLEAR ACCEPT 请输入考号: TO kh LOCA FOR sno=kh IF FOUND() ? sno, 的成绩如下: ? 语文: , yw ? 数学: , sx ? 英语: , yy ELSE ? 对不起,库中没有这个人 END
9、IF wait ENDDO USE SET TALK ON 提示: .T.为永真条件,将陷入死循环,一旦陷入死循 环,按ESC结束程序运行。 为避免出现死循环,在循环体中必须有改变循环 控制变量值的命令; 条件不满足时退出循环。 FoxPro For Windows 18 FoxPro程序设计 【例5.25】改写上程序,实现按学号连续查询。 SET TALK OFF USE cjk DO WHILE .T. CLEAR ACCEPT 请输入考号: TO kh LOCA FOR sno=kh IF FOUND( ) ? sno, 的成绩如下: ? “语文:”, yw ? “数学:”, sx ?
10、“英语:”, yy ELSE ? 对不起,库中没有这个人 ENDIF WAIT 继续吗(Y/N)? TO jx &修改循环条件 IF UPPER(jx)= N EXIT ENDIF ENDDO USE SET TALK ON 循环语句和条件语句嵌套 FoxPro For Windows 19 FoxPro程序设计 LOOP和EXIT语句: 常包含在IF-ENDIF、DO CASE-ENDCASE语句之内。 LOOP和EXIT命令的控制逻辑 DO WHILE DO WHILE LOOP EXIT ENDDO ENDDO FoxPro For Windows 20 FoxPro程序设计 【例】 s
11、et talk off x=10 do whil x0 x=x-1 ? X endd ? x set talk on retu if x5 loop else exit endi 9 8 7 6 5 4 3 2 1 0 0 9 8 7 6 5 5 FoxPro For Windows 21 FoxPro程序设计 -解析示例 求:1+2+3+4+5的和 SET TALK OFF S=0 K=1 DO WHILE K=5 S=S+K K=K+1 ENDDO ?”S=1+2+3+4+5=”,S SET TALK ON RETURN 0 执行过程 S K 1 初始值 第一次循环12 33 64 105
12、 156 第二次循环 第三次循环 第四次循环 第五次循环 运行结果:s=1+2+3+4+5= 15 阅 读 程 序 FoxPro For Windows 22 FoxPro程序设计 -循环结构的设计原则 求1+2+3+4+5的和 SET TALK OFF S=0 K=1 DO WHILE K=5 S=S+K K=K+1 ENDDO ?”S=1+2+3+4+5=”,S SET TALK ON RETURN 原则1:循环开始的原则 原则2:循环结束的原则 循环控制变量:用来控制循环 开始和结束,通常在程序中要 出现3次。 FoxPro For Windows 23 FoxPro程序设计 -循环结构的一般设计方法 求:1+2+3+4+5的和 SET TALK OFF S=0 K=1 DO WHILE K=5 S=S+K K=K+1 ENDDO ?”S=1+2+3+4+5=”,S SET TALK ON RETURN 设计方法 循环体语句的设置 循环控制变量的修改 变量的设置及初始化 试一试:编程求任意自然数列和 ? FoxPro For Windows