数据库技术与应用PPT电子教案第四章 程序设计.ppt

上传人:laozhun 文档编号:2220795 上传时间:2023-02-02 格式:PPT 页数:54 大小:456.50KB
返回 下载 相关 举报
数据库技术与应用PPT电子教案第四章 程序设计.ppt_第1页
第1页 / 共54页
数据库技术与应用PPT电子教案第四章 程序设计.ppt_第2页
第2页 / 共54页
数据库技术与应用PPT电子教案第四章 程序设计.ppt_第3页
第3页 / 共54页
数据库技术与应用PPT电子教案第四章 程序设计.ppt_第4页
第4页 / 共54页
数据库技术与应用PPT电子教案第四章 程序设计.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《数据库技术与应用PPT电子教案第四章 程序设计.ppt》由会员分享,可在线阅读,更多相关《数据库技术与应用PPT电子教案第四章 程序设计.ppt(54页珍藏版)》请在三一办公上搜索。

1、第四章 程序设计初步,结构化程序设计VFP的程序设计 面向对象程序设计本章主要内容:程序文件的建立与执行 程序的控制结构 多模块程序 变量的作用域,一程序文件的建立与执行 1程序文件的建立与修改 程序文件建立与修改在程序编辑窗口进行(1)项目管理器(2)菜单方式(3)命令格式:MODIFY COMMAND 功能:打开文本编辑窗口,用来建立或修改程 序文件。说明:建立文件的默认扩展名为.PRG,程 序:程序是能够完成一定任务的命令的有序集合,41 程序文件,2程序的运行(1)命令格式:DO 功能:执行由文件名表示的程序。(2)菜单方式:选程序菜单“运行”选定“文件名”按“确定”按钮(3)项目管理

2、器方式:3程序书写规则(1)命令分行 程序中每条命令都以回车键结尾,一行只能写一 条命令。若命令需分行书写,在行尾加入续行符“;”(2)命令注释 目的:提高程序的可读性 注释行:以符号“*”开头 命令注释:以符号“&”开头,二程序文件中的专用命令1程序结尾的专用命令RETURN:结束程序执行,返回到调用它的上级程序继续执行,允许缺省。CANCEL:终止程序运行,清除程序的私有变量,返回命令窗口。QUIT:终止程序运行,返回到Windows。清屏语句 CLEAR:清空屏幕显示内容输入输出专用命令 命令格式:say get;default 功能:在屏幕指定行列输出say子句的表达式值,并可修改 G

3、ET子句的变量值。说明:表示在窗口中显示的位置,从0开始.say 子句 用来输出数据,get子句用来输入及编辑数据.先显示 say子句表达式的值,空开一格显示get变量的值.get子 句必须遇到read语句才能被执行,4.简单输出语句?表达式表 例:?”x=“,x5.键盘输入语句 INPUT 提示信息 TO 内存变量 功能:暂停程序执行,显示提示信息,等待用户从键盘输入 数据,输入完毕,按回车,系统将所输入的表达式的 值存入指定的内存变量,然后继续执行程序6.单字符输入语句:WAIT WAIT 提示信息 WINDOW AT 行,列 TIMEOUT N 功能:暂停程序的执行,直到用户输入一个字符

4、或等待时间 到,程序继续进行。例:WAIT“请检查输入数据”window 例:WAIT“注意 现在暂停程序的执行6秒”;WINDOW AT 10,10 TIMEOUT 6,42程序的控制结构 顺序结构 程序的基本控制结构 分支结构 循环结构 一顺序结构 1定义:程序运行时,按照语句排列的先后顺 序,一条接 一条地依次执行。2.流程图:,开始,语句1,语句n,结束,例1:试编一程序,能根据记录号修改某设备的价格和部门,*根据记录号修改设备的价格和部门clearuse sbjlh=12,10 say 请输入记录号:get jlhreadgo jlh4,10 say 请修改第”+str(jlh)+”

5、个设备的数据:6,10 say 价格 get 价格8,10 say 部门 get 部门readuse,例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 DIME A(8),B(8)LIST GO 2 SCATT TO A GO 4 SCATT TO B GATH FROM A GO 2 GATH FR

6、OM B LIST USE,二分支结构1条件语句 语句格式1(单条件选择结构):IF ENDIF 功能:计算的值,若值为真,执行IF和ENDIF之 间的语句,然后执行ENDIF后面的语句;若值为假,直 接执行ENDIF后面的语句。说明:IF和ENDIF必须成对出现;为便于阅读,建议按”分层缩进格式”书写该语句.即IF和 ENDIF 首字符对齐,结构内语句序列缩进若干格。,逻辑表达式为真,语句序列,ENDIF后面的语句,N,Y,例1:将STUDENT表中第一个女生的入学总分减少10%。*xgfenshu.prgCLEARUSE STUDENTLOCATE FOR 性别=女IF FOUND()DI

7、SP 总学分 REPL 总学分 WITH 90%*总学 DISP 总学分ENDIFUSERETURN,语句格式2:双分支条件语句IF ELSE ENDIF功能:计算的值,若值为真,执行语句 序列1,然后执行ENDIF后面的语句;若值为 假,执行语句序列2,然后执行ENDIF后面的语 句。,逻辑表达式为真,语句序列1,语句序列2,ENDIF后面的语句,N,Y,例1:编写程序实现:输入一个待找学生的学号,若在STUDENT表中找到相应记录,则显示该生信息,否则提示查无此人。Chaxs.prg*程序功能:按学号查找学生 open database jiaoguan use student clear

8、 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,clearinput x=to xif x=0 if x0 y=1 else y=0 endifelse y=-1endif?y=,y,IIF函数语法结构:IIF(逻辑表达式,真部分,假部分)例1:计算函数 Y=4x X=0 15-2x X=0,4*x,15-2*x)?y=,y,2多分

9、支语句 语句格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE 功能:系统依次判断逻辑表达式值是否为真,若某个逻 辑表达式值为真,则执行该CASE段的语句序 列,然后执行ENDCASE后面的语句。,说明:do case endcase必须成对出现;遇到多个条件为真时,也只按第一个条件为真的情况处理;Otherwise只能放在所有条件之后,不能插入中间;建议缩进格式写,例:计算函数 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

10、?Y=,Y,三.循环结构1条件循环 语句格式:DO WHILE&设置循环条件&循环体 exit&辅助循环语句 loop&辅助循环语句 ENDDO 功能:先判断逻辑表达式,条件为真,执行循环 体,遇到ENDDO就自动返回到DO WHILE重新 判断循环条件是否成立;若循环条件为假,循环就结束。说明:DO WHILE ENDDO须成对出现;循环体内有修正循环条件趋于结束的语句。,例1:统计85分以上的学生 人数。CLEARUSE CJN=0DO WHILE NOT EOF()IF 成绩=85 N=N+1ENDIFSKIPENDDO?N,例2:显示最高和最低成绩。CLEARUSE CJMAX=成绩M

11、IN=成绩DO WHILE NOT EOF()IF 成绩MAX MAX=成绩ENDIFIF 成绩MIN MIN=成绩ENDIFSKIPENDDO?MAX=,MAX?MIN=,MINUSE,例3:统计并显示各成绩段的学生人数。CLEARUSE cjSTORE 0 TO K1,K2,K3,K4,K5DO 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 成绩

12、60 K5=K5+1 ENDCASE SKIP,2步长循环 语句格式:FOR=TO STEP EXIT&辅助循环语句 LOOP&辅助循环语句 ENDFOR|NEXT 功能:语句执行时,通过比较循环变量值与终值来决定是 否执 行。步长为正数时,若循环变量 值不大于终值就执行循环体;步长为负数时,若循 环变量值不小于终值 就执行循环体。执行一旦遇 到ENDFOR或NEXT,循环变量值即加上步长,然 后返回到FOR重新与终值比较。步长的缺省值为1。,循环变量增加一个步长值,ENDIF的下一个语句,计算初值、终值、步长,循环变量=初值,循环变量超过终值,语句体序列1,是,否,例1:编写计算S=1+2+

13、3+100的程序CLEARSUM=0FOR I=1 TO 100 SUM=SUM+IENDFOR?SUM,例2:编写计算N!的程序CLEARINPUT N=TO NFACT=1FOR I=1 TO N FACT=FACT*IENDFOR?FACT,例3:从键盘任意输入10个数,输出其中的最大数和最小数。*程序功能:求最大、最小数 zuida.prgDime a(10)ClearFor i=1 to 10 input to a(i)EndforStore a(1)to max,minFor i=2 to 10 if a(i)max max=a(i)endif if a(i)min min=a(i

14、)endifEndfor?”最大数是:”,max?”最小数是:”,min,3扫描循环 语句格式:SCAN FOR EXIT&辅助循环语句 LOOP&辅助循环语句 ENDSCAN 功能:针对当前表进行循环,语句执行时在 中依次寻找 满足FOR条件的记录,并对找到 的记录 执行。缺省的范围是ALL。,例1:编一程序,显示所有男同学姓名。Chaming.prg USE STUDENT SCAN FOR 性别=“男”DISPLAY 姓名 ENDSCAN USE4循环辅助语句(1)LOOP语句:执行转向循环语句头部继续循环。DO WHILE LOOP ENDDO,(2)EXIT语句:退出循环。DO WH

15、ILE 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 和 scan 均可实现,但scan 更方便;do while 需要借 助eof(),bof()测试状态,并借助continue或skip移 动记录指针2)若循环次数预先知道,用for语句实现更简洁,作业,4

16、-1,4-2,4-6,4-7,43多模块程序一.子程序 1.对于两个具有调用关系的程序文件,称调用程序 为主程序,被调用程序为子程序。调用命令:DO WITH 功能:主程序执行时遇到DO命令,执行就转向子 程序。调用子程序时参数表中的参数要传 送给子程序。子程序中参数接收命令:PARAMETERS 功能:指定内存变量以接收DO命令发送的参数值,返主时把内存变量值回送给调用程序中 相应的内存变量。说明:PARAMETERS必须是被调用程序的第 一个语句;两者的参数个数必须相同。,例:设计一个计算圆面积的子程序,并要求在主程序中带参数调用它,主程序:YMJ=05,10 SAY“请输入圆半径:”;G

17、ET BJ DEFAULT 0READDO JS WITH BJ,YMJ?”YMJ=”,YMJRETURN,子程序:*JS.PRGPARAMETERS R,SS=PI()*R*RRETURN,二自定义函数 1自定义函数的建立 自定义函数的格式:FUNCTION PARAMETERS RETURN 说明:使用FUNCTION语句来指出函数名,表示该 函数包含在调用程序中,若缺省,表示此函数 是一个独立文件;组成为函数体,可 以为空;RETURN语句用于返回函数值,缺省 该语句,则函数返回值为.T.,一般必须有。自 定义函数存放有三种位置:调用程序所在文件中,单独存放在程序文件中,存放在过程文件中

18、。2 自定义函数的调用:函数名(参数表),例1:设计一个计算N!的自定义函数,在主程序中调用 它计算M!/N!。Jiecheng.prg fact.prg,主程序:CLEAR INPUT M=TO M INPUT N=TO N?FACT(M),FACT(N),;FACT(M)/FACT(N)RETURN,*FACT.PRG PARAMETERS N PRIVATE ALL FA=1 FOR I=1 TO N FA=FA*I ENDFOR RETURN FA,例2:计算1到10的立方值。主程序:CLEAR X=1 DO WHILE X=10?X,CUBE(X)X=X+1 ENDDO RETURN

19、*CUBE.PRG PARAMETERS V PRIVATE ALL VT=V*V*V RETURN VT,例3:自定义函数N!Jiecheng1.prgCLEARINPUT M=TO MINPUT N=TO N?FACT(M),FACT(N),FACT(M)/FACT(N)RETURNFUNCTION FACTPARAMETERS NPRIVATE ALLFACT=1FOR I=1 TO N FACT=FACT*IENDFORRETURN FACT,例2:自定义函数月日年和星期几 DATE.PRG CLEAR?ZDATE()?ZCDOW()FUNCTION ZDATE()YY=STR(YEA

20、R(DATE(),4)MM=STR(MONTH(DATE(),2)DD=STR(DAY(DATE(),2)RETURN YY+“年”+MM+“月”+DD+“日”FUNCTION ZCDOW()DO CASE CASE CDOW(DATE()=MONDAY RETURN 星期一 CASE CDOW(DATE()=TUESDAY RETURN 星期二,CASE CDOW(DATE()=Wednesday RETURN 星期三 CASE CDOW(DATE()=Thursday RETURN 星期四 CASE CDOW(DATE()=Friday RETURN 星期五 CASE CDOW(DATE(

21、)=Saturday RETURN 星期六 CASE CDOW(DATE()=Sunday RETURN“星期日”ENDCASE,三过程1定义:在一个.PRG文件中设置多个程序模块,并将主程序以外的每个模块定义为一个 过程。PROCEDURE PARAMETERS RETURN 过程调用:DO WITH 说明:过程存放在调用程序所在文件中,但 必须放在调用程序代码之后,,例:编写过程计算圆面积。CLEARINPUT R=TO RAR=0DO AREA WITH R,AR?ARRETURNPROCEDURE AREAPARAMETERS R1,AR1AR1=PI()*R1*R1RETURN,四变

22、量的作用域 1.根据变量的作用域分类,内存变量可分为公共 变量,私有变量和本地变量3种。(1)公共变量 定义:在任何模块中都可使用的变量称为公共变量。命令格式:PUBLIC 功能:将内存变量表指定的变量设置为公共变 量,并将这些变量的初值均赋以.F.。说明:若下层模块中建立的内存变量要供上层模块 使 用,或供其并列模块使用;在命令窗口中 定义 的变量都是公共变量,这些变量不能在 程序方式下利用;公 共变量只能用命令清 除,RELEASE命令。,(2)私有变量 定义:程序中定义的变量,私有变量仅在定义 它的模块及其下层模块中有效,而在 定义它的模块运 行结束时自动清除。命令格式:PRIVATE

23、功能:声明私有变量并隐藏上级模块的同名变量,使得对该私有变量的操作不影响上级模 块同名变量的值,直 到声明它的程序,过 程或自定义函数执行结束后,才恢复使用 先前隐蔽的变量。说明:参数接收命令 PARAMETERS声明的参 变量也是私有变量;在一个程序模块中未 加任何说明而直接使用的内存变量;各模 块变PRIVATE声明为私 有变量,就能避 免重名问题。,例:A=3B=5DO PP WITH 2*A,B?A,BRETURN*PP.PRGPARA X,YY=X*Y?STR(Y,3)RETURN,3本地变量定义:只能在建立它的模块中使用,而且不 能在高层或底层模块使用,该模块运 行结束时,本地变量

24、就自动释放。命令格式:LOCAL 功能:将指定的变量设置为本 地变量,并将这些变量的初值均赋 以.F.。注意:LOCAL不能缩写。,例:公共变量、私有变量、局部变量示例。clear public a&建立公共变量 dime b(2)&建立主程序的私有数组 a=1 b(1)=2 b(2)=3 do sub1?”main:”,a,b(1),b(2)procedure sub1 private a&声明sub1的私有变量,屏蔽公共变量 local b(2)a=10 b(1)=20 b(2)=30 do sub2?”sub1:”,a,b(1),b(2)return,Procedure sub2a=100b(1)=200b(2)=300?”sub2:”,a,b(1),b(2)return,例:*EX2.PRG PUBLIC A A=1 C=5 DO SUB?”EX2:”,A,B,C RETURN,*SUB.PRGPRIVATE CA=A+1PUBLIC BB=2C=3D=4?”SUB:”,A,B,C,DRETURN,程序的三种控制结构:顺序结构、选择结构、和 循环结构是本章的重点内容。难点:程序模块间的参数传递,以及解决具体问 题的算法设计,本章小结,作业:4-13,4-14,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号