1、第三章 程序的建立和执行方法,书本:第31页,知识目标:,1、创建、修改和执行程序文件2、程序流程语句,1、创建、修改和执行程序文件,1、建立程序方法2、修改程序文件3、运行程序文件例 3.1新建一个程序文件:p1.prg,实现从键盘上任意输入3个数,求它们的和以及平均值并且显示结果。程序代码:input请输入第一个数:to Ainput请输入第二个数:to Binput请输入第三个数:to C?A+B+C=,A+B+C?(A+B+C)/3=,(A+B+C)/3,2、程序流程语句,程序的结构分为3种:顺序、分支、循环1、顺序结构:是指程序的执行顺序是按照语句的排列顺序由上到下一次执行。(如下图
2、),2、程序流程语句,2、分支结构:是指按照某种条件的判断结果来决定程序的执行走向,当条件成立时执行某个程序段,当条件不成立时执行另一程序段或者什么也不执行。(如下图),2、程序流程语句,3、循环结构:是指根据条件的结果重复执行若干次某个程序段。(如下图),输出语句1,判断语句,输出结果,结束,条件分支控制语句-if语句,(1)if语句,格式:if 逻辑表达式 then 语句组 1 else 语句组 2 endif备注:执行过程,当逻辑表达式的值为真时,执行语句组1;否则,执行语句组2。其中else部分可以省略的,如果省略else部分,当逻辑表达式为真时,将会执行语句组1,否则不执行任何操作。
3、,例3.3 if 语句,键盘输入任意一个分数,如果60分以上,则显示成绩是合格的,否则显示成绩是不合格的,请继续努力。程序如下:input 请输入成绩:to Aif A=60 then ?成绩是合格的,请继续加油!else?成绩不合格,请继续努力吧!endif输出结果:见vf,例3.4 if 语句,题目:判断输入的数是正数、负数还是零。程序如下:input请输入任意的数: to Aif A=0 then ?你输入的数字是0else if A0 then ?你输入的数字大于0 else ?你输入的数字小于0 endifendif输出结果:见vf,例3.5 if语句,题目:读取学生基本信息表中的数
4、据,判断当前记录中的性别字段,输出相应的提示信息。程序:SET default to J:VFP教学用课件Visual FoxPro 7.0教学课件金山信息技术学校学生信息表 &设置默认值 或用set path to(设置默认路径)use 学生基本情况.dbfIF 性别=男?姓名+是男同学ELSE?姓名+是女同学ENDIFuse程序运行结果:郭小名 是男同学,例 3.6 if语句实例,题目:使用if语句对输入的成绩进行“优秀”,“良好”,“中等”,“及格”,“不及格”的评定。程序如下:input请输入成绩: to Aif A=90?你的成绩优秀elseif A=80?你的成绩良好elseif
5、A=70?你的成绩中等elseif A=60?你的成绩及格else?你的成绩不及格endifendifendifendif程序运行结果:见vfp7.0,if语句在flash动画制作中的运用,1 、简单 loading(进度加载) 代码:方法 1 、使用载入字节数判断b=getBytesTotal();/ 获取总的字节数a=getBytesLoaded();/ 已经下载的字节数onEnterFrame=function()/ 进入帧时 , 进行判断if (a = b) / 如果载入的字节数等于总的字节数delete this.onEnterFrame/ 删除进入帧gotoAndPlay(fram
6、e);/ 转入到你要播放的帧 else / 否则a=getBytesLoaded();/ 已经下载的字节数percent=int(a/b*100)+%;/ 计算已经下载的百分比,if 语句总结,用法:程序中的判断运算。用途:广且多 例如:1、通关游戏中的通关设置(游戏类) 2、学校学生成绩达不达标判断(教育类) 3、通信系统中打电话收取电话费(商业类)缺点:一般只用于2-4种结果的判断,语句重复较多,input请输入成绩: to Aif A=90?你的成绩优秀elseif A=80?你的成绩良好elseif A=70?你的成绩中等elseif A=60?你的成绩及格else?你的成绩不及格en
7、difendifendifendif,5种结果需要重复写4次if else语句,愤怒的小鸟游戏分析,分数达到20000分过第一关,if score=20000 进入第二个else 重新开始,if.else.endif语句一般适用于有两三种可能的情况需要判断,若要判断多种可能的情况,do case.endcase结构将比使用多个if语句方便。do case语句格式:do casecase 逻辑表达式1语句组1 case 逻辑表达式2语句组2.case 逻辑表达式n语句组n otherwise语句组n+1endcase,条件分支控制语句-do case语句,备注:当case后面的逻辑表达式的值为“
8、值”时,执行该case后面的语句组;如果所有case后面的逻辑表达式的值为“假”时,则执行otherwise后面的语句组。,例3.7 do case语句,题目:使用do case语句对输入的成绩进行“优秀”,“良好”,“中等”,“及格”,“不及格”的评定。比较一下if语句和do case语句的各自的优点。程序代码:input 请输入分数: to Ado casecase A=90?成绩优秀case A=80?成绩优良case A=70?成绩中等case A=60?成绩及格otherwise?成绩不及格endcase程序运行结果:见vfp7.0,上机练习题:,1、使用 if 语句对“学生基本情况
9、表”中的专业(计算机/会计)进行判断。(表如下图)2、使用 if 语句对输入学生成绩进行A/B/C/D/E(A:90分以上,B:80分以上,C:70分一上,D:60分以上,E:60分以下)五个级别的判断。3、使用do case 语句对输入的岁数进行出生年份的计算(只需计算出1420岁之间的年份,20岁是1993年出生,14岁是1999年,以此类推)。学生基本情况表(1),循环结构控制语句 scan,(1)scan语句scan语句格式:scanscopefor 逻辑表达式1where (while)逻辑表达式2语句组loopexitendscan备注:scan语句是一个循环次数由数据表中记录条数
10、决定的特殊的循环,每次执行完循环体内的语句组后,表中的记录指针自动移向下一条记录,重复执行循环体内的语句,直到表文件尾。,例子3.10:scan语句,题目:输出D学生的总分程序:input 请输入语文分数: to Ainput 请输入数学分数: to Binput 请输入英语分数: to CD=0scanD=A+B+Cendscan?该学生的总分为:,D程序运行结果:见vfp7.0,例3.8 scan语句,题目:在屏幕上输出学生的基本信息程序代码:use J:VFP教学用课件Visual FoxPro 7.0教学课件金山信息技术学校学生信息表学生基本情况.dbfscan?姓名,性别,专业END
11、SCANuse运行结果:见vfp7.0,例3.9 scan语句,题目:在屏幕上输出学生性别信息程序代码:SET default to J:VFP教学用课件Visual FoxPro 7.0教学课件金山信息技术学校学生信息表use 学生基本情况.dbfscanIF 性别=男?姓名+是男同学ELSE?姓名+是女同学ENDIFendscanuse程序运行结果:见vfp7.0,循环结构控制语句 for,(2)for语句如果事先知道循环次数,则可以使用for循环。语句格式:for 循环变量=初值 to 终值 step 步长语句组exitloopendfor说明:循环变量被赋初值后,如果循环变量没有超过终
12、值,则执行语句组;循环变量递增(减),如果没有超过终值,继续执行循环;否则,结束循环。,例子3.11:for语句,题目:阅读以下程序,分析运行的结果程序:for j=1 to 10? jendfor程序运行结果:12345678910,分析:变量j由1变到10,当j=1时显示1,当j=2时显示2.当j=10时显示10.,例3.12 for语句,题目:使用for语句显示学生基本情况表中的所有学生姓名。程序代码:SET default to J:VFP教学用课件Visual FoxPro 7.0教学课件金山信息技术学校学生信息表use 学生基本情况.dbfFOR i=1 to 6?姓名skipEN
13、DFORuse程序运行结果:见vfp7.0,例3.13 for语句,题目:使用for语句求出学生成绩的总分和平均分。程序代码:use J:VFP教学用课件Visual FoxPro 7.0教学课件金山信息技术学校学生信息表学生基本情况.dbffor i=1 to reccount()sum=语文+数学+计算机replace 总分 with sumreplace 平均分 with sum/3skipendforuse程序运行结果:见vfp7.0,比较scan和for两个循环语句,scan与for语句的相同于区别:相同点:两者都是循环执行,循环次数都是可以判断的。不同点:(1)scan语句是对表进
14、行操作、而for语句不是。 (2)scan语句不需要另外移动记录指针,每次执行完循环体内的语句组后,表中的记录指针自动移向下一条记录。而for语句需要增加控制记录指针移动的语句。,上机练习题:,1、使用scan 语句对“学生基本情况表”中的专业(建筑/设计)进行判断。(表如下图)2、使用for语句显示学生基本情况表中的所有学生姓名。学生基本情况表(2),循环结构控制语句 do while,(3) do while语句如果想要在某一条件满足时结束循环,可以使用do while语句。使用do while语句事先可以不清楚循环的次数,但是需要知道结束循环的条件。语句格式:do while 逻辑表达式 语句组 loop exitenddo备注:如果逻辑表达式的值为真(.t.),则执行循环体,如此反复判断执行循环体,直到逻辑表达式的值为假(.f.)。,例3.14 do while语句,题目:使用do while语句找出学生成绩表中的语文课程的最高分。程序代码:use maxy=0.0do while.not.eof()if maxy语文maxy=语文end ifskipenddo?语文成绩的最高分是:,maxyuse,上机练习题:,上机1:使用do while语句找出学生成绩表中的语文课程的最低分。上机2:使用do while语句找出学生成绩表中的语文课程的成绩为60分的学生。,