第五章程序设计基础课件.ppt





《第五章程序设计基础课件.ppt》由会员分享,可在线阅读,更多相关《第五章程序设计基础课件.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 程序设计基础程序设计基础l5.1 程序设计概述程序设计概述l5.2 结构化程序设计结构化程序设计l5.3 面向对象的程序设计基础面向对象的程序设计基础2/10/20231程序设计的优点程序设计的优点(与交互式相比)(与交互式相比)l程序自动执行多条命令,省去了键入大量程序自动执行多条命令,省去了键入大量字符的麻烦,并且节约了宝贵的时间。字符的麻烦,并且节约了宝贵的时间。l程序可被修改并重新运行程序可被修改并重新运行,且可多次运行且可多次运行.l一个程序可调用其他程序。一个程序可调用其他程序。l程序中可使用结构化程序设计命令来控制程序中可使用结构化程序设计命令来控制运算的流程。运算
2、的流程。2/10/202325.1程序设计概述程序设计概述l什么是程序设计?程序设计方法有哪些?什么是程序设计?程序设计方法有哪些?程序设计是利用系统所提供的设计工具,按程序设计是利用系统所提供的设计工具,按照程序设计语言的规范描述解决问题的算法照程序设计语言的规范描述解决问题的算法并进行程序编写的过程。并进行程序编写的过程。程序设计的方法主要有:程序设计的方法主要有:结构化程序设计结构化程序设计(SP)与面向对象的程序设计与面向对象的程序设计(OOP)。2/10/20233l结构化程序设计方法结构化程序设计方法SP程序的设计应遵循程序的设计应遵循4条原则:条原则:自顶向下、逐步求精、自顶向下
3、、逐步求精、模块化、限制使用转移语句模块化、限制使用转移语句。程序流程应使用程序流程应使用3种控制结构:种控制结构:顺序、分支、循环顺序、分支、循环结构化程序设计的本质是结构化程序设计的本质是功能功能设计,设计,其开发过程通其开发过程通常是从常是从“做什么做什么”到到“如何做如何做”。优点优点:系统结构性强,便于设计和理解:系统结构性强,便于设计和理解缺点缺点:用户需求一旦更改,系统在设计和实现阶段:用户需求一旦更改,系统在设计和实现阶段要作相应变动。功能分解模型难以与现实世界中的要作相应变动。功能分解模型难以与现实世界中的实际系统相吻合。实际系统相吻合。2/10/20234l面向对象的程序设
4、计方法面向对象的程序设计方法OOP基于问题对象的自底向上的功能综合,从内基于问题对象的自底向上的功能综合,从内部结构上模拟客观世界,其开发过程是从部结构上模拟客观世界,其开发过程是从“用什么做用什么做”到到“要做什么要做什么”。OOP的基石是的基石是对象和类对象和类,基本机制是方法和,基本机制是方法和消息。消息。类类是是具有相同的结构、操作,并遵守具有相同的结构、操作,并遵守相同规则的对象聚合在一起的对象。相同规则的对象聚合在一起的对象。对象对象是是基于某种类所创建的实例。基于某种类所创建的实例。OOP有三个重要的特性:有三个重要的特性:封装性、继承性和封装性、继承性和多态性多态性(Examp
5、le:学生类与高中生类学生类与高中生类)优点优点:P137Visual FoxPro既支持结构化程序设计,也支持面既支持结构化程序设计,也支持面向对象的程序设计,并提供了许多相关的可视化向对象的程序设计,并提供了许多相关的可视化开发工具开发工具!2/10/202355.2 结构化程序设计结构化程序设计l顺序顺序(顺序结构由语句行组成,执行时语顺序结构由语句行组成,执行时语句顺序执行)句顺序执行)l分支分支(根据逻辑表达式的值执行不同的操(根据逻辑表达式的值执行不同的操作)作)l循环循环(使得一组语句组重复执行若干次使得一组语句组重复执行若干次)l子程序子程序(过程(过程/函数的调用)函数的调用
6、)2/10/202365.2.1 创建、修改和运行程序创建、修改和运行程序1.创建和修改程序文件创建和修改程序文件程序是包含一系列命令的文本文件,程序是包含一系列命令的文本文件,文件扩展文件扩展名为名为.PRG法一:主菜单命令法一:主菜单命令“文件文件”“新建新建”,选择,选择“程序程序”,单击,单击“新建文件新建文件”按钮按钮法二:法二:“常用常用”工具栏中的工具栏中的“新建新建”按钮,按钮,(同上同上)法三:法三:项目管理器的项目管理器的“代码代码”选项卡中选择选项卡中选择“程序程序”项,单击项,单击“新建新建”按钮按钮法四:命令窗口中执行命令法四:命令窗口中执行命令 MODIFY COM
7、MAND 文件名文件名(扩展名为扩展名为.PRG)2/10/20237编辑和修改程序文件编辑和修改程序文件:项目管理器中选中被:项目管理器中选中被修改的程序文件,单击修改的程序文件,单击“修改修改”按钮按钮或命令窗或命令窗口利用口利用MODIFY COMMAND命令。对于已命令。对于已存在的程序文件,修改并保存后系统会将存在的程序文件,修改并保存后系统会将“上一版本上一版本”以以.BAK文件保存!文件保存!2/10/202382.运行程序运行程序法一:当程序文件处于编辑状态时,单击法一:当程序文件处于编辑状态时,单击常用工具栏的常用工具栏的“!”按钮按钮法二:项目管理器窗口中选择程序文件,法二
8、:项目管理器窗口中选择程序文件,然后单击窗口中的然后单击窗口中的“运行运行”按钮按钮法三:命令窗口中执行命令法三:命令窗口中执行命令 DO ProgramName WITH ParameterList 一旦运行程序文件,系统会自动地对程序文件一旦运行程序文件,系统会自动地对程序文件(.prg)进行编译(包括对程序的词法检查、语法)进行编译(包括对程序的词法检查、语法检查),检查),生成生成“伪编译伪编译”程序(程序(.fxp)。执行程序时,。执行程序时,系统实质上是执行系统实质上是执行.fxp文件文件。2/10/20239Accept to 功能功能:暂停程序的运行,等待用户键入:暂停程序的运
9、行,等待用户键入一串字符一串字符赋给指赋给指定的内存变量定的内存变量Input to 功能:功能:暂停程序的运行,接受用户键入的暂停程序的运行,接受用户键入的表达式并将其表达式并将其值值赋给指定的内存变量赋给指定的内存变量wait to 功能功能:等待:等待单字符输入单字符输入几个常用交互命令几个常用交互命令2/10/2023105.2.2 顺序结构顺序结构一条一条的按顺序依次执行一条一条的按顺序依次执行逗号将不同类型的数据逗号将不同类型的数据一起显示在屏幕一起显示在屏幕例例5.1 计算圆的面积计算圆的面积Store 4.12 to pS=p*p*3.14?S&或者?“圆面积为”,S 例例5.
10、2 显示一个字符串在另一个字符串中的位置显示一个字符串在另一个字符串中的位置c=“Visual FoxPro”cc=“Fox”?at(cc,c)&显示结果为显示结果为8 2/10/2023115.2.3 分支结构分支结构(1)单分支结构单分支结构格式:格式:IF条件条件语句语句1ENDIF说明说明:当:当“条件条件”成立时执行成立时执行“语句语句”,否则,否则执行执行ENDIF后后面的语句面的语句条件成立?条件成立?语句语句1yNENDIF后面的语句后面的语句例例:n=5 X=0 IF n2 Y=0ELSE Y=3ENDIF?Y2/10/202313例例5.3 根据根据x的值决定的值决定y的值
11、的值Input“请输入一个数值请输入一个数值:”to xIf x0y=1Elsey=-1Endif?y2/10/202314例例:判断一年是否是闰年判断一年是否是闰年(若一年是闰年当且仅(若一年是闰年当且仅当年数可被当年数可被400整除或能被整除或能被4整除不能被整除不能被100整整除)除)*方法一方法一clearInput“请输入你想判断的年数请输入你想判断的年数:”to yearrn=IIF(year%4=0 and year%100!=0)or;year%400=0,闰年闰年,不是闰年不是闰年)?rn 2/10/202315clearInput 请输入你想判断的年数请输入你想判断的年数:
12、to yearif year%4=0 if year%100=0if year%400=0?是闰年是闰年 else?不是闰年不是闰年endif else?是闰年是闰年 endif else?不是闰年不是闰年 endif*方法二方法二IF嵌套使用嵌套使用2/10/202316(3)多分支结构多分支结构DOCASECASE条件条件1 语句语句1 CASE条件条件2 语句语句2 CASE条件条件n 语句语句n OTHERWISE 语句语句n+1 ENDCASE 2/10/2023172/10/202318例:例:X=80Y=space(0)Do case case X=90 Y=优秀优秀 case
13、X=80 Y=良好良好 case X=70 Y=中等中等 case X=60 Y=及格及格 otherwise Y=不及格不及格EndCase?Y说明:说明:case 的个数与需要判断的情况有关的个数与需要判断的情况有关2/10/202319例例5.5 解一元二次方程解一元二次方程(P141)Parameters a,b,cIf a=0=messagebox(二次项系数不能为二次项系数不能为0!,48,错误对话框错误对话框)returnendifDelta=b*b-4*a*c&计算根的判别式计算根的判别式DO CASE CASE delta0?方程有两个不等的实数根:方程有两个不等的实数根:?
14、(-b+sqrt(delta)/(2*a)?(-b-sqrt(delta)/(2*a)CASE delta=0?方程有两个相等的实数根:方程有两个相等的实数根:?b/(2*a)CASE delta0?方程有两个复根:方程有两个复根:real_part=-b/(2*a)&实部实部 img_part=sqrt(-delta)/(2*a)&虚部虚部?alltrim(str(real_part)+alltrim(str(img_part)+I?alltrim(str(real_part)+-+alltrim(str(img_part)+IENDCASE将文件保存为将文件保存为abc.prg在命令窗口输
15、入:在命令窗口输入:Do abc with 1,-5,62/10/2023205.2.4 循环结构一:使得一组语句重复执行若干次。循环结构一:使得一组语句重复执行若干次。(1)FOR语句的格式:语句的格式:(预先知道循环的次数预先知道循环的次数)FOR 循环变量初值循环变量初值 to 终值终值 step 步长步长循环体循环体ENDFOR|next当步长为当步长为正数正数时,循环变量的初值要时,循环变量的初值要小于等于小于等于终值。终值。当步长为当步长为负数负数时,循环变量的初值要时,循环变量的初值要大于等于大于等于终值。终值。当步长为当步长为1时,时,step 步长步长可以省略可以省略。2/1
16、0/202321FOR语句的执行流程为:语句的执行流程为:1)将初值赋给循环变量将初值赋给循环变量2)判断循环变量是否超出终判断循环变量是否超出终值,若超出则结束循环,否值,若超出则结束循环,否则执行循环体。则执行循环体。3)计算循环变量的值:计算循环变量的值:循环变量循环变量=循环变量循环变量+步长步长注意:注意:循环变量加步长的操循环变量加步长的操作是系统自动完成的不需要作是系统自动完成的不需要在循环体中再出现该操作。在循环体中再出现该操作。循环变量赋初值循环变量赋初值循环变量超出终值循环变量超出终值?执行循环体执行循环体循环变量加步长循环变量加步长ny2/10/202322例例5.6 计
17、算计算100以内的奇数之和以内的奇数之和sum=0for i=1 to 100 step 2sum=sum+iEndfor?sum练习:练习:请说出下面程序的功能及执行结果。请说出下面程序的功能及执行结果。a=1 For n=10 to 1 step -2a=n*2?a Endfor2/10/202323例例5.6 计算计算50的阶乘的阶乘p=1for i=1 to 50 p=p*iEndfor?50的阶乘的阶乘p=,p例例5.7 计算计算1100之间非之间非3的倍数的所有的倍数的所有奇数之和奇数之和.法二:法二:S=0FOR I=1 TO 100IF MOD(I,3)0 and I%2=1
18、S=S+I ENDIFENDFOR?S2/10/202324例例5.8 显示如图显示如图5-5所示的文字(所示的文字(循环嵌套)循环嵌套)Clearc=金字大宝塔金字大宝塔n=len(c)/2for i=1 to n&显示显示N行行?space(10-i)&每行第一个字位置每行第一个字位置for j=1 to i&每行显示每行显示J个字个字?substr(c,2*i-1,2)=inkey(0.5)&等待等待0.5秒秒endforendfor2/10/202325补充补充:请写出下面程序的输出内容请写出下面程序的输出内容Clear?for I=1 to 9?str(I,4)for j=1 to
19、I?str(I*j,4)endfor?endforreturn2/10/2023265.2.4 循环结构二:使得一组语句重复执行若干次。循环结构二:使得一组语句重复执行若干次。(2)(2)DODOWHILEWHILE 条件条件循环体循环体 ENDDOENDDO注意注意:1.1.如果预先不能确定循环的次数,而如果预先不能确定循环的次数,而是根据某一条件决定是否结束循环。是根据某一条件决定是否结束循环。2.2.当当条件条件=.T.=.T.时执行循环体,否则结时执行循环体,否则结束循环束循环3.3.在循环体中要有在循环体中要有改变改变循环条件的循环条件的语语句句。条件成立?条件成立?循环体循环体EN
20、DDO后面语句后面语句YESNOWHILE循环流程循环流程2/10/202327例例5.10 对于任意给定的字符串反序显示对于任意给定的字符串反序显示如:如:“abcdef”变成变成“fedcba”Store abcdef to cP=space(0)Do while len(c)0 P=left(c,1)+P c=substr(c,2)Enddo?p2/10/202328例例5.12 统计字符串中大、小写英文字母的个数统计字符串中大、小写英文字母的个数Clearc=Visual FoxProNmax=0Nmin=0Do while len(c)0do casecase asc(left(c,
21、1)64 and asc(left(c,1)96 and asc(left(c,1)123 Nmin=Nmin+1endcase c=subs(c,2)EnddoWait windows str(nMax,2)+str(nMin,4)2/10/202329方法一:方法一:SET TALK OFFS=0&累加变量累加变量N=1&计数变量计数变量DO WHILE N=100 S=S+N N=N+1&修改循环条件修改循环条件ENDDO?S方法二:方法二:Set talk offS=0FOR N=1 TO 100 S=S+NENDFOR?S综合综合1:求:求1至至100之间的整数和之间的整数和两种循环
22、结构比较两种循环结构比较2/10/202330方法一:方法一:方法二:方法二:SET TALK OFF SET TALK OFFS=0 S=0N=0 DO WHILE N70 AND (1)_(2)ENDIFENDDO?XX=100 Sum=100&判断是否已大于判断是否已大于100 Sum=Sum-n Sum=Sum-n exit exit&跳出跳出FORFOR循环跳到?循环跳到?SUMSUM语句语句 endif endif EndforEndfor?sum?sum 含含loop 和和exit 语句的例子:语句的例子:求连续奇数的和且和小于求连续奇数的和且和小于1002/10/202334(
23、3)SCAN ENDSCAN注意:注意:此语句仅限于处理表的记录此语句仅限于处理表的记录5.2.4 循环结构三:使得一组语句重复执行若干次。循环结构三:使得一组语句重复执行若干次。2/10/202335例例5.14 显示所有籍贯为显示所有籍贯为“江苏江苏”的学生姓名和籍贯的学生姓名和籍贯ClearUse xsScan for 江苏江苏$jg?xm,jgendscan例如,显示例如,显示CJ表中所有成绩在表中所有成绩在60分以下的记录,显示一条画一条分以下的记录,显示一条画一条横线:横线:USE CJ SCAN FOR CJ100 _ ELSE S=S+N ENDIF N=N+2ENDDO练一练
24、练一练EXIT2/10/2023372、运行下列程序以后,显示运行结果的前二行、运行下列程序以后,显示运行结果的前二行:结果:结果:、SET TALK OFFS“ABCDEF”N=LEN(S)K=1DO WHILE K=N?SUBSTR(S,K,N-K)K=K+1ENDDOABCDEBCDE2/10/2023383 3、下列程序的功能是求、下列程序的功能是求100100以内的偶数之和及奇数以内的偶数之和及奇数之和,根据要求完善程序。之和,根据要求完善程序。P=0Q=0FOR N=1 TO 100 IF_ P=P+N ELSE _ ENDIF_?“偶数和为偶数和为”,P?“奇数和为奇数和为”,Q
25、Mod(n,2)=0Q=Q+nENDFOR2/10/2023394、完善下列程序:以实现通过字符串变量操作竖向显示、完善下列程序:以实现通过字符串变量操作竖向显示“天长天长地久地久”、横向显示、横向显示“地久天长地久天长”的功能。程序清单如下:的功能。程序清单如下:SET TALK OFF STORE “天长地久天长地久”TO ch CLEAR N=1 DO WHILE N8?_ N=N+2 ENDDO?_?SUBSTR(ch,1,4)SUBSTR(Ch,N,2)SUBSTR(Ch,5)2/10/2023405、完善下列程序、完善下列程序,使其如下图所示。使其如下图所示。CLEARFOR i=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 章程 设计 基础 课件

限制150内