vfp第3、4、5部分(程序算法及顺序分支循环)

上传人:san****019 文档编号:70810399 上传时间:2019-01-18 格式:PPT 页数:77 大小:466.51KB
返回 下载 相关 举报
vfp第3、4、5部分(程序算法及顺序分支循环)_第1页
第1页 / 共77页
vfp第3、4、5部分(程序算法及顺序分支循环)_第2页
第2页 / 共77页
vfp第3、4、5部分(程序算法及顺序分支循环)_第3页
第3页 / 共77页
vfp第3、4、5部分(程序算法及顺序分支循环)_第4页
第4页 / 共77页
vfp第3、4、5部分(程序算法及顺序分支循环)_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《vfp第3、4、5部分(程序算法及顺序分支循环)》由会员分享,可在线阅读,更多相关《vfp第3、4、5部分(程序算法及顺序分支循环)(77页珍藏版)》请在金锄头文库上搜索。

1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,要点: 1.算法的概念及特点 2.掌握程序3种基本结构的表示 3.掌握利用分支结构编程 4.掌握利用循环结构编程,第三、四、五讲 程序设计(1),算法及算法的表示,一、算法的概念及特点 所谓算法就是对解决问题所采用的方法和步骤的描述。,二、算法的描述 算法的描述方法有很多,为直观、准确地表示一个问题的处理方法和步骤,通常采用流程图的方法。 流程图是用一些几何图形符号、线条及文字说明来表征一个问题的处理过程。 一般采用传统流程图和N-S图来描述算法。,(教材P51) 【例3-1】设计如图所示表单,在文本框t

2、ext1中输入华氏温度,单击“计算”按钮可以求出对应的摄氏温度,并在文本框text2中显示。,“计算”按钮的“Click”事件代码如下: fas=thisform.text1.value cels=5*(fas-32)/9 thisform.text2.value=round(cels,1) &结果保留1位小数,描述方法1用自然语言表示 步骤1:输入华氏温度fas。 步骤2:按照公式,计算摄氏温度cels。,步骤3:输出摄氏温度。,描述方法2 用流程图表示如图所示。,描述方法3用N-S流程图如图所示。,一个算法应该具有以下特点:教材P52 确定性。 有穷性。 有效性。 输入。 输出。,任何一个

3、问题能否让计算机处理,关键在于能否设计出合理的算法,有了合适的算法,再使用合适的计算机语言来编写程序。 VFP就是一种语言工具。要用VFP编写出高质量的程序,一方面要构建合理的算法,另一方面要掌握VFP的语法规则,它是实现算法的基础。,命令有一定的书写规则: 1、命令分行。 程序中每条命令都以回车键结尾,一行只能写一条命令。若命令需分行书写,应在一行终了时键入续行符“;”,然后按回车键。,2、命令注释。 程序中可以插入注释,以提高程序的可读性。 注释语句,NOTE|* 注释部分 & 注释部分,格式:,行首注释,单命令的行尾注释,三、3种基本结构的表示 程序的3种基本结构:顺序结构、选择(或分支

4、)结构、循环结构,它们构成了实现一个算法的基本单元。,顺序结构:是一种最基本、最简单的程序结构。如下图所示,先执行A,再执行B,A与B按照顺序执行。,选择(或分支)结构:根据条件是否成立而执行不同的程序模块。,循环结构:是指重复执行某些操作,重复执行的部分称为循环体。,1、基本的输入/输出命令,常用命令(用于结构化程序),1)INPUT命令,INPUT TO ,格式:,例如:s=100 input “请输入:“ to a ? “a=“,a 执行上述命令,若输入的内容为s+20,则 输出结果,2) ACCEPT命令,ACCEPT TO ,格式:,例如,把上例中的input改成accept: s=

5、100 accept “请输入:“ to b ?“b=“,b 执行上述命令,若输入的内容为s+20,则 输出结果,3)基本输出命令,?|?,,格式:,常用输入输出控件(用于可视化程序),1)输入控件,2)输出控件,文本框,标签、文本框,fas=thisform.text1.value,thisform.text2.value=round(cels,1),程序设计实例,顺序结构程序实例 分支(选择)结构程序实例 循环结构程序实例,1顺序结构 顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。Visual FoxPro系统中的大多数命令都可以作为顺序结构中的语句。,教材P53,(

6、教材P52) 【例3-2】设计如图3-5所示表单,在文本框text1、text2、text3中输入三角形的三边,单击“计算”按钮可以在文本框text4中显示三角形的面积。其计算公式为,(其中a,b,c为三角形的三边,area为三角形的面积),“计算”按钮的“Click”事件代码如下: a=thisform.text1.value b=thisform.text2.value c=thisform.text3.value =(a+b+c)/2 area=sqrt( *( -a)*( -b)*( -c) thisform.text4.value=round(area,1),2分支(选择)结构 分支

7、结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。,多路分支语句,常见的分支结构有:,IF语句,流程图,1)IF语句 格式:,见教材P57,条件?,语句序列1,语句序列2,Y,N,ENDIF之后的命令,(教材P53) 【例3-3】修改【例3-2】,在文本框text1、text2、text3中输入三角形的三边,单击“计算”按钮,如果输入的三边能构成三角形,则在文本框text4中显示三角形的面积;否则用提示框给出提示信息:不能构成三角形,重新输入!。如图所示。,“计算”按钮的“Click”事件代码如下: a=thisform.text1.value b=

8、thisform.text2.value c=thisform.text3.value if a+bc and a+cb and b+ca =(a+b+c)/2 area=sqrt( *( -a)*( -b)*( -c) thisform.text4.value=round(area,1) else messagebox(“不能构成三角形,重新输入!“) thisform.text1.value=0 thisform.text2.value=0 thisform.text3.value=0 thisform.text4.value=0 thisform.text1.setfocus endif

9、,EXM1:判断某一年是否是闰年。,假如年份用y表示,判断y是否是闰年的方法是:若y能够被400整除或y能够被4整除并且不能够被100整除,y/4=int(y/4) and y/100int(y/100) or y/400=int(y/400),提示:判断一个整数M能否被另一个整数N整除,一般采用三种方法,判断: MOD(M,N)是否等于0 INT(M/N) 是否等于M/N M%N=0 若等于,则表明M能被N整除。,CLEAR INPUT “请输入年份:“ to y IF y/4=int(y/4) and y/100int(y/100) or y/400=int(y/400) ?str(y,4

10、)+“年是闰年“ ELSE ?str(y,4)+“年不是闰年“ ENDIF RETURN,结构化方法,程序设计及运行,表单设计(参考教材p54例3-4),设计界面,(教材P53) 【例3-5】已知一元二次方程的3个系数,求一元二次方程的根。求根公式 :,“求解”命令按钮的“Click”事件代码如下: a=thisform.text1.value b=thisform.text2.value c=thisform.text3.value if a=0 messagebox(“二次项系数为0,这不是一个一元二次方程“) thisform.text1.setfocus else d=b2-4*a*c

11、 if d=0 x1=round(-b+sqrt(d)/(2*a),2) x2=round(-b-sqrt(d)/(2*a),2) thisform.text4.value=x1 thisform.text5.value=x2 else messagebox(“该方程没有实数根!“) endif endif,EXM2:输入两个数,比较大小,并输出较大数。,表单设计界面,表单运行结果,方法一:双分支,方法二:单分支,表单设计界面,EXM3:输入两个数,比较大小,并按从大到小的顺序输出。,使用单分支结构:,容器A,容器B,容器C,1,3,交换,1、C = A 2、A = B 3、B = C,表单设

12、计界面,表单运行结果,分支的嵌套 EXM 4:比较任意三个数的大小,并输出较大数。,输入三个数a,b,c,ab?,ca?,cb?,输出c,输出a,输出c,输出b,结束,N,Y,Y,N,N,Y,表单设计界面,表单运行结果,4)多分支语句 格式: (见教材58页) 流程图:,ENDCASE后面的语句,EXM 5:输入月份值,显示对应季节的中文名字(3,4,5月为春季,6,7,8月为夏季,9,10,11月为秋季;12,1,2月为冬季)。 (参考教材P56例3-6),“输出”命令按钮的click事件代码: yf=val(thisform.text1.value) do case case yf=3 o

13、r yf=4 or yf=5 jj=“春季“ case yf=6 or yf=7 or yf=8 jj=“夏季“ case yf=9 or yf=10 or yf=11 jj=“秋季“ case yf=12 or yf=1 or yf=2 jj=“冬季“ endcase thisform.label3.caption=jj,注意: ifendif,do caseendcase必须配对出现,表示分支的开始和结束。 为使程序清晰易读,对分支、循环等结构应使用缩格书写方式。,表达分支、循环的每种语句都不允许在一个命令行中输完,必须按格式一行一行地键入,因此,不能出现在命令窗口中。 三种选择结构之间可

14、以相互嵌套,但不能交叉。,循环结构能够使某些语句或程序段重复执行若干次。 如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。,3循环结构,常见的循环结构有:,条件循环,步长循环,扫描循环,涉及数据表的循环,第6章介绍,1)条件循环(do while循环) 格式: 流程图:,条件,语句序列,Enddo之后的语句,N,Y,循环体,教材P62,第 1 步, 计算 0+1; 第 2 步, 计算 (0+1)+2; 第 3 步, 计算 (0+1+2)+3; 第 i 步, 计算 (0+1+i-1)+i; . 第 100 步,计算 (0+1+99)+100;,递归算法,EXM6:计算s

15、=1+2+3+100,前i-1次累加和,第i次累加项,基本方法:,属于“累加器”类型问题,(1)在进入累加前先给累加器赋初值(求和一般为0) (2)用循环语句实现累加 循环变量赋初值;循环条件;循环变量的改变规律 (3)循环体语句的设计 累加器当前值=累加器原值+循环变量当前值,三个“确定” 循环三要素,算法: 确定循环变量i并赋初值为1 定义s存放累加和,初值为0 确定循环条件 i=100 s=s+i 确定循环变量的变化趋势i=i+1 输出结果s,递推公式,在条件循环中如何体现的?,s=1+2+3+100,clea s=0 i=1 do while i=100 s=s+i i=i+1 end

16、do ?“1+2+3+.+100=“,s return,循环体,程序及运行结果,EXM7:计算s=1+2+3+n。 (参看教材P59例3-8),“计算”命令按钮的“click”事件代码: n=thisform.text1.value s=0 x=1 do while x=n s=s+x enddo thisform.text2.value=s,说明: 循环结构从do while开始,到enddo结束,两者必须成对出现;在enddo后面可以书写注释。 循环是否继续取决于条件的当前取值,一般情况下循环体中应含有改变条件取值的命令或语句,否则将造成死循环。 循环结构能自身嵌套(多重循环),还能与选择结构的各种形式嵌套。,2)步长循环(forendfor计数循环)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号