770 likes | 912 Views
第八章 VF程序设计基础. 点击播放. 上一页. 下一页. 要点. 教学目标、 重点 、 难点. 教学目标. 理解程序设计相关的基本概念; 掌握面向过程结构化程序设计基本方法; 学会应用编程处理实际问题的方法、步骤。. 难点. 重点. 运用所学程序设计知识,编写程序处理实际问题. 程序的基本结构(尤其是循环结构). 上一页. 下一页. 要 点. 1. 基础知识回顾. 1. 运算符与表达式.
E N D
第八章VF程序设计基础 点击播放
上一页 下一页 要点
教学目标、重点、难点 教学目标 • 理解程序设计相关的基本概念; • 掌握面向过程结构化程序设计基本方法; • 学会应用编程处理实际问题的方法、步骤。 难点 重点 运用所学程序设计知识,编写程序处理实际问题 程序的基本结构(尤其是循环结构) 上一页 下一页 要 点
1. 基础知识回顾 1. 运算符与表达式 算术运算:+、-、*、/、% 、**(或^)连接运算:直接连接+、移尾空连接-日期、日期时间运算关系运算:$ 字符串间包含关系逻辑运算:非NOT(或!)、与AND、或OR 上一页 下一页 要 点
1. 基础知识回顾 2、运算符的优先级 3、表达式的分类 ①数值型表达式②字符型表达式③日期型表达式④关系表达式⑤逻辑表达式 上一页 下一页 要 点
2. 程序与文件 VFP提供了三种工作方式 • 命令方式 • 菜单方式 • 程序文件方式 程序设计方法 • 面向过程的程序设计 • 面向对象的程序设计 上一页 下一页 要 点
2.程序与文件 VFP程序是一系列指令集合, 文件扩展名为.prg。 1. 程序文件的建立与修改: 格式:MODIFY COMMAND <文件名> 2. 程序文件的执行: 格式:DO <文件名> 注意:DO命令默认运行 .PRG程序,如果要运行其它程序,文件名中需包括扩展名。 上一页 下一页 要 点
2.程序与文件 程序书写基本规则 上一页 下一页 要 点
2.程序与文件 输入输出命令 上一页 下一页 要 点
2.程序与文件 非格式化输出语句 ?、?? 可以通过SET CONS OFF/ON 来关闭/打开屏幕回显或输出。 格式化输出语句 格式:@ <行,列> SAY <表达式> [FUNCTION<功能符>][PICTURE<格式符>] 上一页 下一页 要 点
2.程序与文件 文本输出语句 格式:TEXT<输出显示内容>ENDTEXT功能:在屏幕上原样显示TEXT和ENDTEXT之间的内容。说明: TEXT与ENDTEXT是一条语句,不能省略其中任一子句。 上一页 下一页 要 点
2.程序与文件 清屏语句 语句格式: CLEAR功能:清除屏幕上的所有显示内容,光标回到屏幕坐上角。 上一页 下一页 要 点
2.程序与文件 注释语句 语句格式1 : NOTE <注释内容)语句格式2:*(注释内容)语句格式3:&&(注释内容)功能:在程序中加入说明性的语句。说明:这三条语句加在程序中,系统并不执行。在程序中加入注释语句可提高程序的易读性。语句1一般放在程序之首,语句2和语句3则放在语句之后。 上一页 下一页 要 点
2.程序与文件 • RETURN:使程序执行结束并返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。RETURN命令允许缺省。 • CANCEL:能使程序运行终止,清除程序的私有变量并返回到命令窗口。 • QUIT:终止程序运行返回到WINDOWS(不会出现数据丢失或打开的文件被破坏等情况,还会自动删去磁盘中的临时文件)。 结束语句 上一页 下一页 要 点
例1:鸡兔共笼,已知鸡兔的总头数为H,总脚数为F,求鸡兔各多少只?(算法:X=(4H-F)/2,Y=(F-2H)/2)例1:鸡兔共笼,已知鸡兔的总头数为H,总脚数为F,求鸡兔各多少只?(算法:X=(4H-F)/2,Y=(F-2H)/2) • INPUT [鸡兔总头数] TO hINPUT [鸡兔总脚数] TO f x=(4*h-f)/2y=(f-2*h)/2?'鸡:',x?'兔:',yreturn 3. 程序的基本结构-顺序结构 系统按自上而下的顺序执行程序中的语句。 上一页 下一页 要 点
分支程序(选择结构)在程序执行过程中,根据一定的条件判断来确定程序走向的一种程序结构。分支程序(选择结构)在程序执行过程中,根据一定的条件判断来确定程序走向的一种程序结构。 分支程序结构一般分为单向选择、双向选择和多向选择三种格式。 3. 程序的基本结构-选择结构 上一页 下一页 要 点
1、单向选择 语句格式:IF<条件> <语句序列>ENDIF 3. 程序的基本结构-选择结构 上一页 下一页 要 点
note计算圆的面积INPUT “输入圆的半径:” TO RIFR>0 S=PI( )*r^2 ?“圆的面积是:”,sENDIF 3. 程序的基本结构-选择结构 思考:下面程序有问题吗? 上一页 下一页 要 点
2、双向选择语句格式: IF <条件><语句序列1>ELSE<语句序列2>ENDIF 3. 程序的基本结构-选择结构 上一页 下一页 要 点
例:计算圆的面积。ClearINPUT “输入圆的半径:” TO RIFR>0S=PI( )*R*R ? "圆的面积是:",SELSE? “圆的半径必须大于0"ENDIFRETURN 3. 程序的基本结构-选择结构 上一页 下一页 要 点
3、多向选择DO CASECASE<条件表达式1><语句序列1>CASE<条件表达式2><语句序列2>CASE<条件表达式n><语句序列n>OTHERWISE<语句序列n+1>ENDCASE 上一页 下一页 要 点
3. 程序的基本结构-选择结构 例: 编制显示当前季节程序 • *获取当前月份 • YUE=MONTH(DATE()) • DO CASE • CASEINLIST(YUE,3,4,5) • JJ="春" • CASE INLIST(YUE,6,7,8) • JJ="夏" • CASEINLIST(YUE,9,10,11) • JJ="秋" • CASEINLIST(YUE,12,1,2) • JJ="冬" • ENDCASE • WAIT JJ WINDOW • RETURN 上一页 下一页 要 点
(1) If…EndIf和Do Case…EndCase必须配对使用,Do Case与第一个Case <条件表达式>之间不应有任何命令。 (2) <条件表达式>可以是各种表达式或函数的组合,其值必须是逻辑值。 (3) <命令行序列>可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。 (4) Do Case…EndCase命令,每次最多只能执行一个<命令行序列>。在多个Case的<条件表达式>值为真时,只执行首个<条件表达式>值为真的<命令行序列>,然后执行EndCase的后面的第一条命令。 3. 程序的基本结构-选择结构小结 上一页 下一页 要 点
3. 程序的基本结构-循环结构 在顺序结构和选择结构的程序中,每条语句最多只执行一次,如果要反复执行一段程序,则要使用循环结构程序设计。 上一页 下一页 要 点
3. 程序的基本结构-循环结构 1. 条件循环 语句格式1:DO WHILE <条件表达式> <语句序列1> ENDDO 上一页 下一页 要 点
3. 程序的基本结构-循环结构 n=0 s=.F. Do while s=.F. n=n+1 ?"现在圈数是:",n IF n=3 S=.T. &&累了 ENDIF Enddo ?”你可以休息了!” 加油!加油!加油! 1 2 0 3 你可以休息了 开始跑步 上一页 下一页 要 点
思考:循环体内若没有n=n+1 ,会怎样? 3. 程序的基本结构-循环结构 注意:对跑步者来说,就是要跑无数圈,累死也要跑下去。对于程序而言,若循环条件一直成立,则循环体部分执行无数次,即“死循环”。 什么时候结束呀? 累死我了! 0 开始跑步 上一页 下一页 要 点
3. 程序的基本结构-循环结构 语句格式2:DO WHILE <条件表达式> <语句序列1> [LOOP] <语句序列2> [EXIT] <语句序列3>ENDDO 上一页 下一页 要 点
3. 程序的基本结构-循环结构 2. 计数循环 语句格式: FOR <变量>=<初值> TO <终值>[STEP<步长>] <语句序列1>[LOOP] <语句序列2>[EXIT] <语句序列3>ENDFOR 以初值小于终值 步长正值为例 上一页 下一页 要 点
3. 程序的基本结构-循环结构 • 说明: • 当省略步长值时,系统默认步长为1。当初值小于终值时,步长值为正值;当初值大于终值时,步长值为负值。步长值不能为0,否则造成死循环。 • 在循环体内不要随便改变循环变量的值,否则会引起循环次数发生改变。 • [LOOP]和[EXIT]语句的功能和用法与条件循环中该语句的功能和用法相同。 上一页 下一页 要 点
n=10 for i=1 to n ?”现在的圈数是:”,i Endfor 两种循环对比:换俩人来跑几圈转盘吧! n=0 Do while n<10 n=n+1 ?“现在的圈数是:",n enddo 等效 上一页 下一页 要 点
3. 程序的基本结构-循环结构实例 思考:编程求下面表达式的值S=1+x-x3/3!+x5/5! ...+(-1)n x2n+1/(2n+1)!(n为无穷大) 注意: 问题求解的过程和步骤叫算法,程序设计的目的是用程序语言来表达算法。 上一页 下一页 要 点
3. 程序的基本结构-循环结构实例 例:编写计算S=1+2+3+……+100的程序 • S=0 • FOR I=1 TO 100 • S=S+I • NEXT • ?”S=“,S • RETURN 思考: 计算S=100! 计算S=1!+2!+3!+……+100! 上一页 下一页 要 点
3. 程序的基本结构-循环结构实例 计算S=1+2+…+100,并求其中奇数之和T。 • STORE 0 TO I,S,T • DO WHILE I<100 • I=I+1 • S=S+I • IF INT(I/2)=I/2 • LOOP • ENDIF • T=T+I • ENDDO • ? S,T • IF INT(I/2)<>I/2 • T=T+I • ENDIF 上一页 下一页 要 点
3. 程序的基本结构-循环结构实例 编程计算S=1+1/2+……+1/100。 • F=1 • STORE 0 TO I,S • DO WHILE I<100 • I=I+1 • S=S+1/I • ENDDO • ? "1+1/2+…+1/100=",S • I=I+2 • S=S+1/I • I=I+2 • F=-F • S=S+(1/I)*F 思考:计算1+1/3+1/5……+1/99? 计算S=1-1/3+1/5-……-1/99呢? 上一页 下一页 要 点
3、库文件扫描循环 语句格式:SCAN [<范围>][FOR<条件>][WHILE<条件>]<语句序列1>[LOOP] <语句序列2>[EXIT] <语句序列3>ENDSCAN 3. 程序的基本结构-循环结构 上一页 下一页 要 点
查询GZ表中工资大于350元的女职工的姓名。 USE GZ SCAN ALL FOR 基本工资>350 IF 性别="男" LOOP ENDIF DISP FIEL 姓名,基本工资 ENDSCAN USE 3. 程序的基本结构-循环结构实例 上一页 下一页 要 点
3. 程序的基本结构-循环结构小结 (1)三种循环:DO WHILE、FOR、SCAN (2)Do While和EndDo、For和EndFor、Scan和EndScan必须配对使用。 (3)循环变量应是数值型的内存变量或数组元素。 (4)注意Loop和Exit的区别,前者是结束本次循环,使执行转向循环语句头部继续循环;后者是结束本层循环,即退出循环,转去执行ENDDO、ENDFOR或ENDSCAN后面的语句。 上一页 下一页 要 点
3. 程序的基本结构-循环结构 多重循环也称为循环嵌套,是指在一个循环语句内又包含另一个(或多个)循环语句。如: • DO WHILE<条件表达式1> • <命令行序列11> • DO WHILE <条件表达式2> • <命令行序列21> • …… • ENDDO • <命令行序列12> • ENDDO 上一页 下一页 要 点
【功能】 在多重循环中,首先从外循环进入内循环,执行内循环的语句。当内循环的条件为假时,返回到外循环;当外循环的条件为真时,又进入内循环;否则,退出循环。 【说明】 对循环语句进行以下说明: ①循环嵌套层次不限,但内循环的所有语句必须完全嵌套在外层循环之中。否则,就会出现循环的交叉,造成逻辑上的混乱。 ②循环结构和分支结构允许混合嵌套使用,但不允许交叉。其入口语句和相应的出口语句必须成对出现。 上一页 下一页 要 点
在审问一起盗窃案的四名疑犯过程中,警察问道:“谁偷的东西?”在审问一起盗窃案的四名疑犯过程中,警察问道:“谁偷的东西?” A说:不是我。 B说:是C。 C说:是D。 D说:他胡说。 已知其中有三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出真正的小偷。 3. 程序的基本结构-实例 问题:谁是小偷? A B C D 上一页 下一页 要 点 41
思路: 先假设该人是小偷,然后到每句话中去测试看有几句是真话。有三句是真话就确定是该人,否则换下一人再试。如:先假定是A(第一人),让thief=1,代入到四句话中 3. 程序的基本结构-实例 A说:thief!=[A] 1!=1 假 B说:thief==[C] 1=3 假 C说:thief==[D] 1=4 假 D说:thief!=[D] 1!=4 真 显然,不是A 上一页 下一页 要 点 42
3. 程序的基本结构-实例 再试B,让thief=2,代入到四句话中 A说:thief!=[A] 2!=1 真 B说:thief==[C] 2=3 假 C说:thief==[D] 2=4 假 D说:thief!=[D] 2!=4 真 显然,不是B 再试C,让thief=3 A说:thief!=[A] 3!=1 真 B说:thief==[C] 3=3 真 C说:thief==[D] 3=4 假 D说:thief!=[D] 3!=4 真 因此,答案是C。 上一页 下一页 要 点 43
3. 程序的基本结构-实例 可以推出,用枚举法去试每个人,若四句话中有三句为真,该人即所求。从编写程序角度看,实现枚举最好用循环结构。 谁是小偷? A B C D 上一页 下一页 要 点 44
五位校园歌手比赛,赛前让他们预测比赛结果。五位校园歌手比赛,赛前让他们预测比赛结果。 A说:B第二,我第三;B说:我第二,E第四;C说:我第一,D第二;D说:C最后,我第三;E说:我第四,A第一; 成绩公布之后,每位选手的预测都只说对了一半,即一对一错,请问比赛的实际名次。 3. 程序的基本结构-实例 问题:比赛的实际名次? A B C D E 45 上一页 下一页 要 点
4 过程及过程调用 1.过程概念 在程序设计中,为了有效地解决有些运算或程序段落重复调用的情况,可设计相对独立并能完成特定功能的程序段,这种程序段称为过程或子程序,用于调用程序段的程序称为主程序。 在应用系统的开发中,一般会根据实际的需要将整个系统划分成若干个模块,通常将这些可调用的功能模块也设计成过程或子程序。 上一页 下一页 要 点
2.过程的建立与调用 建立过程的方法与建立一般程序的方法相同,所不同的是在每个过程中至少要有一个返回语句。 【返回语句】 RETURN [<表达式> | TO <程序名> | TO MASTER] 【功能】返回到调用该子程序的主程序,并执行调用命令下的第一条可执行命令。
【说明】 在返回语句中: • 选择可选项<表达式>:将表达式的值返回给调用程序。 • 选择可选项[TO<程序名>]:可直接返回指定的程序文件。 • 选择可选项[TO MASTER]:则不论前面有多少级调用而直接返回到第一级主程序。 【调用命令】 DO <过程名> 【功能】执行DO调用命令时,将指定的过程调入内存并执行。 上一页 下一页 要 点
3.过程文件 过程是作为一个文件独立地存储在磁盘上,为减少磁盘文件的打开次数,可以把多个过程写入到一个过程文件中。过程文件的扩展名仍然是.PRG。 (1)建立过程文件 MODIFY COMMAND <过程文件名> 上一页 下一页 要 点
过程文件的基本书写格式: PROCEDURE <过程名1> <命令序列1> RETURN PROCEDURE <过程名2> <命令序列2> RETURN …… PROCEDURE <过程名N> <命令序列N> RETURN 上一页 下一页 要 点