《数据库技术与应用PPT电子教案-第四章 程序设计》由会员分享,可在线阅读,更多相关《数据库技术与应用PPT电子教案-第四章 程序设计(54页珍藏版)》请在金锄头文库上搜索。
1、第四章 程序设计初步,结构化程序设计 VFP的程序设计 面向对象程序设计 本章主要内容: 程序文件的建立与执行 程序的控制结构 多模块程序 变量的作用域,一程序文件的建立与执行 1程序文件的建立与修改 程序文件建立与修改在程序编辑窗口进行 (1)项目管理器 (2)菜单方式 (3)命令格式:MODIFY COMMAND 功能:打开文本编辑窗口,用来建立或修改程 序文件。 说明:建立文件的默认扩展名为.PRG,程 序:程序是能够完成一定任务的命令的有序集合,41 程序文件,2程序的运行 (1)命令格式:DO 功能:执行由文件名表示的程序。 (2)菜单方式: 选程序菜单 “运行” 选定“文件名” 按
2、“确定”按钮 (3)项目管理器方式: 3程序书写规则 (1)命令分行 程序中每条命令都以回车键结尾,一行只能写一 条命令。若命令需分行书写,在行尾加入续行符“;” (2)命令注释 目的:提高程序的可读性 注释行:以符号“*”开头 命令注释:以符号“&”开头,二程序文件中的专用命令 1程序结尾的专用命令 RETURN:结束程序执行,返回到调用它的上级程序继续执行 , 允许缺省。 CANCEL:终止程序运行,清除程序的私有变量,返回命令窗口。 QUIT: 终止程序运行,返回到Windows。 清屏语句 CLEAR : 清空屏幕显示内容 输入输出专用命令 命令格式: say get ; defaul
3、t 功能:在屏幕指定行列输出say子句的表达式值,并可修改 GET子句的变量值。 说明: 表示在窗口中显示的位置,从0开始. say 子句 用来输出数据,get子句用来输入及编辑数据.先显示 say子句表达式的值,空开一格显示get变量的值.get子 句必须遇到read语句才能被执行,4.简单输出语句 ?表达式表 例: ?”x=“,x 5.键盘输入语句 INPUT 提示信息 TO 内存变量 功能:暂停程序执行,显示提示信息,等待用户从键盘输入 数据,输入完毕,按回车,系统将所输入的表达式的 值存入指定的内存变量,然后继续执行程序 6.单字符输入语句:WAIT WAIT 提示信息 WINDOW
4、AT 行,列 TIMEOUT N 功能:暂停程序的执行,直到用户输入一个字符或等待时间 到,程序继续进行。例:WAIT “请检查输入数据”window 例:WAIT “注意 现在暂停程序的执行6秒” ; WINDOW AT 10,10 TIMEOUT 6,42 程序的控制结构 顺序结构 程序的基本控制结构 分支结构 循环结构 一顺序结构 1定义:程序运行时,按照语句排列的先后顺 序,一条接 一条地依次执行。 2. 流程图:,开始,语句1,语句n,结束,例1: 试编一程序,能根据记录号修改某设备的价格和部门,*根据记录号修改设备的价格和部门 clear use sb jlh=1 2,10 say
5、 “请输入记录号:“ get jlh read go jlh 4,10 say “请修改第”+str(jlh)+”个设备的数据:“ 6,10 say “价格“ get 价格 8,10 say “部门“ get 部门 read use,例2:从键盘输入任意两数,求和显示。 *求和Qiuhe.prg clear 2,2 say “请输入第一个数” get a default 0 read 4,2 say “请输入第二个数” get b default 0 read c=a+b ?”两数之和:”,c return,例3:将表STUDENT中的第二条记录和第三条记录互换。 USE STUDENT DI
6、ME A(8),B(8) LIST GO 2 SCATT TO A GO 4 SCATT TO B GATH FROM A GO 2 GATH FROM B LIST USE,二分支结构 1条件语句 语句格式1(单条件选择结构): IF ENDIF 功能:计算的值,若值为真,执行IF和ENDIF之 间的语句,然后执行ENDIF后面的语句 ;若值为假,直 接执行ENDIF后面的语句。 说明: IF和ENDIF必须成对出现; 为便于阅读,建议按”分层缩进格式”书写该语句.即IF和 ENDIF 首字符对齐,结构内语句序列缩进若干格。,逻辑表达式 为真,语句序列,ENDIF后面的语句,N,Y,例1:将
7、STUDENT表中第一个女生的入学总分减少10%。 *xgfenshu.prg CLEAR USE STUDENT LOCATE FOR 性别=女 IF FOUND() DISP 总学分 REPL 总学分 WITH 90%*总学 DISP 总学分 ENDIF USE RETURN,语句格式2:双分支条件语句 IF ELSE ENDIF 功能:计算的值,若值为真,执行语句 序列1,然后执行ENDIF后面的语句;若值为 假,执行语句序列2,然后执行ENDIF后面的语 句。,逻辑表达式 为真,语句序列1,语句序列2,ENDIF后面的语句,N,Y,例1:编写程序实现:输入一个待找学生的学号,若在STU
8、DENT表中找到相应记录,则显示该生信息,否则提示查无此人。Chaxs.prg *程序功能:按学号查找学生 open database jiaoguan use student clear 2,2 say ”请输入学号:” get xuehao default space(6) read locate for 学号=xuehao if not eof() disp else ?”查无此人” endif close database return,IF语句嵌套 例2:计算函数 1 X0 Y= 0 X=0 -1 X0,clear input “x=“ to x if x=0 if x0 y=1 e
9、lse y=0 endif else y=-1 endif ?“y=“,y,IIF函数 语法结构:IIF(逻辑表达式,真部分,假部分) 例1:计算函数 Y= 4x X=0 15-2x X=0,4*x,15-2*x) ?“y=“,y,2多分支语句 语句格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE 功能:系统依次判断逻辑表达式值是否为真,若某个逻 辑表达式值为真,则执行该CASE段的语句序 列, 然后执行ENDCASE后面的语句。,说明:do case endcase必须成对出现;遇到多个条件为真时,也只按第一个条件为真的情况处理;Otherwise只能
10、放在所有条件之后,不能插入中间;建议缩进格式写,例:计算函数 1 X0 Y= 0 X=0 -1 X0,CLEAR INPUT “X=“ TO X DO CASE CASE X0 Y=1 CASE X=0 Y=0 CASE X0 Y=-1 ENDCASE ?“Y=“ ,Y,三. 循环结构 1条件循环 语句格式: DO WHILE &设置循环条件 &循环体 exit &辅助循环语句 loop &辅助循环语句 ENDDO 功能:先判断逻辑表达式,条件为真,执行循环 体,遇到ENDDO就自动返回到DO WHILE重新 判断循环条件是否成立; 若循环条件为假,循环就结束。 说明: DO WHILE EN
11、DDO须成对出现; 循环体内有修正循环条件趋于结束的语句。,例1:统计85分以上的学生 人数。 CLEAR USE CJ N=0 DO WHILE NOT EOF() IF 成绩=85 N=N+1 ENDIF SKIP ENDDO ?N,例2:显示最高和最低成绩。 CLEAR USE CJ MAX=成绩 MIN=成绩 DO WHILE NOT EOF() IF 成绩MAX MAX=成绩 ENDIF IF 成绩MIN MIN=成绩 ENDIF SKIP ENDDO ?“MAX=“,MAX ?“MIN=“,MIN USE,例3:统计并显示各成绩段的学生人数。 CLEAR USE cj STORE
12、0 TO K1,K2,K3,K4,K5 DO WHILE NOT EOF() DO CASE CASE 成绩=90 K1=K1+1 CASE 成绩=80 AND 成绩=70 AND 成绩=60 AND 成绩70 K4=K4+1,ENDDO ?”优秀:”, K1 ?”良好:”, K2 ?”中等:”, K3 ?”及格:”, K4 ?”不及格:”, K5,CASE 成绩60 K5=K5+1 ENDCASE SKIP,2步长循环 语句格式: FOR = TO STEP EXIT &辅助循环语句 LOOP &辅助循环语句 ENDFOR | NEXT 功能:语句执行时,通过比较循环变量值与终值来决定是 否
13、执 行。步长为正数时,若循环变量 值不大于终值就执行循环体;步长为负数时,若循 环变量值不小于终值 就执行循环体。执行一旦遇 到ENDFOR或NEXT,循环变量值即加上步长,然 后返回到FOR重新与终值比较。步长的缺省值为1。,循环变量增加一个步长值,ENDIF的下一个语句,计算初值、终值、步长,循环变量=初值,循环变量超过终值,语句体序列1,是,否,例1:编写计算 S=1+2+3+100的程序 CLEAR SUM=0 FOR I=1 TO 100 SUM=SUM+I ENDFOR ?SUM,例2:编写计算N!的程序 CLEAR INPUT “N=“ TO N FACT=1 FOR I=1 T
14、O N FACT=FACT*I ENDFOR ?FACT,例3:从键盘任意输入10个数,输出其中的最大数和最小数。*程序功能:求最大、最小数 zuida.prg Dime a(10) Clear For i=1 to 10 input to a(i) Endfor Store a(1) to max,min For i=2 to 10 if a(i)max max=a(i) endif if a(i)min min=a(i) endif Endfor ?”最大数是:”,max ?”最小数是:”,min,3扫描循环 语句格式: SCAN FOR EXIT &辅助循环语句 LOOP &辅助循环语句
15、 ENDSCAN 功能:针对当前表进行循环,语句执行时在 中依次寻找 满足FOR条件的记录,并对找到 的记录 执行。缺省的范围是ALL。,例1:编一程序,显示所有男同学姓名。Chaming.prg USE STUDENT SCAN FOR 性别=“男” DISPLAY 姓名 ENDSCAN USE 4循环辅助语句 (1)LOOP语句:执行转向循环语句头部继续循环。 DO WHILE LOOP ENDDO,(2) EXIT语句:退出循环。 DO WHILE EXIT ENDDO,例:编程计算S=1+2+3+100,并求100之内的 奇数之和。 STORE 0 TO I,S,T DO WHILE I100 I=I+1 S=S+I IF INT(I/2)=I/2 LOOP ENDIF T=T+I ENDDO ?”1+2+3+100=”,S ?”100之内的奇数和:”,T,5.三种循环语句的比较 1)控制对数据表中记录进行逐条操作,do while 和 sc