《程序设计初步优秀PPT.ppt》由会员分享,可在线阅读,更多相关《程序设计初步优秀PPT.ppt(126页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计初步程序设计初步1程序设计基本内容程序设计基本内容程序文件的建立、运行和修改程序文件的建立、运行和修改依次结构程序设计依次结构程序设计选择结构程序设计选择结构程序设计循环结构程序设计循环结构程序设计数组数组子程序及变量的局域性子程序及变量的局域性2程序文件程序文件由吩咐组成,计算机可以自动执行可由任何编辑软件生成(VFP本身有编辑器)文件名:程序源文件为 .PRG 编译后的程序文件 .FXP3程序设计概述进行程序设计一般要经过以下步骤:1分析问题或任务,总结或抽象出问题的数学模型。2依据数学模型确定解决问题的算法思想。3依据算法思想确定要建立的数据表或数据库的基本结构及其数据表之间的关
2、系。4画出程序流程图。4程序设计概述5编写程序,实现功能要求,并在计算机上调试通过。6用典型数据对所编写的程序进行测试,验证程序的牢靠性。发觉问题进行修改,修改后再进行调试,直到程序正确运行为止。7编写运用说明书,整理有关资料,进行总结。5 程序文件的建立、运行和修改程序文件的建立、运行和修改一、建立程序文件一、建立程序文件二、运行程序文件二、运行程序文件三、修改程序文件三、修改程序文件6建立程序文件建立程序文件一、菜单方式一、菜单方式1.单击菜单单击菜单文件文件新建新建或者单击或者单击常用工具栏的常用工具栏的新建新建按钮按钮,再单击再单击程序程序单选按钮单选按钮,最终单击最终单击新文件新文件
3、大按钮。大按钮。2.输入程序输入程序,最终保存文件。最终保存文件。如:建立如下吩咐文件如:建立如下吩咐文件cx1.prg。7举例 a=2 b=5 c=a+b?a=,a?b=,b?a,+,b,=,c8留意以下几点:(1 1)一一个个吩吩咐咐语语句句中中只只能能有有一一个个吩吩咐咐动词;动词;(2 2)每每输输入入完完一一个个语语句句按按 回回车车 键键表表示该语句结束;示该语句结束;(3 3)程程序序中中用用到到的的全全部部标标点点符符号号一一律律用半角符号;用半角符号;(4 4)每每一一个个程程序序一一般般应应有有一一个个结结束束语语句句,以表示该程序的结束。以表示该程序的结束。9建立程序文件
4、二、吩咐方式二、吩咐方式功能:打开一个编辑窗口功能:打开一个编辑窗口,从中可以修从中可以修改或创建程序文件。改或创建程序文件。语法:语法:MODIFY COMMAND MODIFY COMMAND|?NOEDITNOEDIT如:如:MODIFY COMMAND CX2MODIFY COMMAND CX2输入程序后保存文件。输入程序后保存文件。10运行程序文件一、菜单方式一、菜单方式单击!常用工具栏按钮。单击!常用工具栏按钮。单击单击程序程序执行执行,选择要执行的吩咐文选择要执行的吩咐文件。件。二、吩咐方式二、吩咐方式功能:执行一个功能:执行一个Visual FoxPro程序或过程序或过程。程。
5、语法:语法:DO 11修改程序文件一、菜单方式一、菜单方式 单击菜单单击菜单文件文件打开打开或单击常用或单击常用工具栏上的工具栏上的打开打开按钮按钮,启动启动打开打开对对话框。在该对话框中选择想修改的程话框。在该对话框中选择想修改的程序文件名后单击序文件名后单击确定确定按钮或干脆双按钮或干脆双击想修改的程序文件名。击想修改的程序文件名。二、吩咐方式二、吩咐方式 运用建立吩咐文件同样的吩咐。运用建立吩咐文件同样的吩咐。12依次结构程序设计5 5 随意类型键盘输入吩咐随意类型键盘输入吩咐INPUTINPUT1 1 依次结构程序设计的概念依次结构程序设计的概念2 2 输出吩咐输出吩咐?|?|?3 3
6、 输出打印吩咐输出打印吩咐?4 4 内存变量内部赋值吩咐内存变量内部赋值吩咐STORE|=STORE|=6 6 字符型键盘输入吩咐字符型键盘输入吩咐ACCEPTACCEPT13依次结构程序设计7 7 程序暂停、等待接收单字符吩咐程序暂停、等待接收单字符吩咐WAITWAIT8 8 计算表达式值吩咐计算表达式值吩咐=9 9 终止程序运行吩咐终止程序运行吩咐CANCELCANCEL10 10 程序注释吩咐程序注释吩咐11 11 文本输出吩咐文本输出吩咐TEXTENDTEXTTEXTENDTEXT12 12 输出文本行信息吩咐输出文本行信息吩咐|13 13 输入输出吩咐输入输出吩咐14依次结构程序设计
7、的概念依次结构是一种线性结构依次结构是一种线性结构,是程序设计中最基础的结构是程序设计中最基础的结构,该结构该结构中各操作块依据各自出现的先后依中各操作块依据各自出现的先后依次次,依次逐块执行。依次逐块执行。ABC152 输出吩咐?|?功功能能:计计算算一一批批表表达达式式的的值值,然然后后按按指指定定格格式式在在Visual Visual FoxProFoxPro主主窗窗口口、用用户户自自定定义义窗口或打印机输出表达式的值。窗口或打印机输出表达式的值。语法:语法:?|?|?PICTUREPICTUREFUNCTIONFUNCTIONVVATATFONTFONT,STYLESTYLE如如:?3
8、*45/26 AT 2 FONT COURIER,34 STYLE BI163 输出打印吩咐?功能:将输出结果干脆送到打印机上。功能:将输出结果干脆送到打印机上。语法:语法:?字符表达式字符表达式 174 内存变量内部赋值吩咐STORE|=功能:建立内存变量功能:建立内存变量,并把一个数据保并把一个数据保存到一个或多个内存变量中。存到一个或多个内存变量中。语法:语法:STORE STORE TO TO =如:如:STOR 34*56/8 TO XSTOR 34*56/8 TO X Y=45/3-672 Y=45/3-67218说明:1.1.内存变量的类型由内存变量的类型由 的类型而定。的类型而
9、定。STORE 1.0 TO M2,M3 STORE 1.0 TO M2,M3 STORE.T.TO L1 STORE.T.TO L1 STORE 6*2=18 TO L2 STORE 6*2=18 TO L2 C1=xyzabc C1=xyzabc L3=.F.L3=.F.Store 99/05/06 to D1 Store 99/05/06 to D1 D2=date()D2=date()19说明:2.2.可可以以给给变变量量重重新新赋赋值值,将将以以新新值值替替代代旧值。例:旧值。例:X=8 X=8?X?X X=16 X=16?X?X X=X=abcdabcd?X?X20说明:3.STO
10、RE3.STORE可以给多个变量同时赋同一个值可以给多个变量同时赋同一个值,=,=只能给一个变量赋值。假如给多个只能给一个变量赋值。假如给多个变量赋不同的值变量赋不同的值,必需运用多条必需运用多条STORE|=STORE|=吩咐。吩咐。如:如:STOR 0 TO A,B,CSTOR 0 TO A,B,C A=0 A=0 B=0 B=0 C=0 C=021说明:4引用变量的值不会变更被引用变量的值。如:A=5B=AC=B?A,B,C 22说明:5 5数值型变量可以与自身相加数值型变量可以与自身相加,字符型字符型变量可以与自身相连接。例:变量可以与自身相连接。例:X=10X=10X=X+1X=X+
11、1?X X X=X+12X=X+12?X X C=GoodC=GoodC=C+Morning!C=C+Morning!?C?C 23举例例例6-16-1:已知:已知X=16,Y=18,X=16,Y=18,编写程序编写程序,将它将它们的值互换后输出。程序如下:们的值互换后输出。程序如下:CLEAR CLEAR X=16X=16Y=18Y=18T=XT=XX=YX=YY=TY=T?X=,X,Y=,Y?X=,X,Y=,YCANCELCANCEL程序运行结果:程序运行结果:X=18 Y=16X=18 Y=16 X Y TX Y T161616 1816 1816 18 1616 18 1618 18
12、1618 18 1618 16 1618 16 16246.2 依次结构程序设计例例6-16-1:已知:已知X=16,Y=18X=16,Y=18,编写程序,将它们的,编写程序,将它们的值互换后输出。程序如下:值互换后输出。程序如下:CLEARCLEARX=16X=16Y=18Y=18T=XT=XX=YX=YY=TY=T?X=,X,Y=,Y,T=,T?X=,X,Y=,Y,T=,T CANCELCANCEL清 屏X=16Y=18T=XX=YY=T输出X、Y、T程序结束25举例例例6-26-2:鸡鸡兔兔同同笼笼,已已知知鸡鸡兔兔总总头头数数为为1616(headsheads),总总脚脚数数为为404
13、0(feetfeet),编编写程序求鸡兔各有多少。写程序求鸡兔各有多少。解:设鸡为解:设鸡为X X只只,兔为兔为Y Y只只,列出方程组为:列出方程组为:X+Y=H X+Y=H 解得:解得:X=X=(4H-F4H-F)/2/2 2X+4Y=F Y=2X+4Y=F Y=(F-2HF-2H)/2/2 程序如下:程序如下:26举例H=16H=16F=40F=40X=(4*H-F)/2X=(4*H-F)/2Y=(F-2*H)/2Y=(F-2*H)/2?共有鸡:共有鸡:,x,x,只只?共有兔:共有兔:,y,y,只只 CANCELCANCEL结果为:结果为:共有鸡:共有鸡:12 12 只只共有兔:共有兔:4
14、 4 只只275 随意类型键盘输入吩咐INPUT功能:建立内存变量功能:建立内存变量,并且用键盘输入的并且用键盘输入的方式将数值型、字符型、逻辑型或日方式将数值型、字符型、逻辑型或日期型数据赋值给内存变量。期型数据赋值给内存变量。语法:语法:INPUTINPUTTO TO 例例6-36-3:已知圆半径为:已知圆半径为R,R,计算圆面积计算圆面积S S、球体积球体积V,V,球表面积球表面积F F(要求四舍五入保(要求四舍五入保留三位小数)。公式分别为:留三位小数)。公式分别为:S=r2 V=4/3r3 F=4r2 S=r2 V=4/3r3 F=4r228程序如下:INPUT INPUT 请输入圆
15、半径请输入圆半径R=TO R R=TO R S=ROUND(PI()*R2,3)S=ROUND(PI()*R2,3)V=ROUND(4/3*PI()*R3,3)V=ROUND(4/3*PI()*R3,3)F=ROUND(4*PI()*R2,3)F=ROUND(4*PI()*R2,3)?圆面积为:圆面积为:,S,S?球体积为:球体积为:,V,V?球表面积为:球表面积为:,F,FCANCELCANCEL296 字符型键盘输入吩咐ACCEPT功能:建立内存变量功能:建立内存变量,并用键盘输入的方并用键盘输入的方式将字符型数据赋值给内存变量。式将字符型数据赋值给内存变量。语法:语法:ACCEPT AC
16、CEPT TO TO 例例6-46-4:假设:假设JSDA.DBFJSDA.DBF数据表文件在数据表文件在A A盘盘根书目下根书目下,编写一程序编写一程序,打开数据表打开数据表JSDA.DBF,JSDA.DBF,运行程序时输入姓名运行程序时输入姓名,并将并将该姓名的记录内容显示出来。该姓名的记录内容显示出来。30程序如下:SET DEFA TO A:SET DEFA TO A:USE JSDAUSE JSDAACCEPT ACCEPT 请输入姓名:请输入姓名:TO NAME TO NAMELOCATE ALL FOR LOCATE ALL FOR 姓名姓名=NAME=NAMEDISPLAYDI
17、SPLAYCancelCancel317 程序暂停、等待接收单字符吩咐WAIT功能:显示一条提示并暂停程序运行功能:显示一条提示并暂停程序运行,直到按下任一键或鼠标按键直到按下任一键或鼠标按键,程序才程序才接着执行。接着执行。语法:语法:WAIT WAIT TO TO WINDOWAT WINDOWAT,NOWAITCLEAR|NOCLEARTIMENOWAITCLEAR|NOCLEARTIMEOUTOUT32举例例例6-56-5:用:用WAITWAIT吩咐暂停显示。吩咐暂停显示。ClearClearWait to aWait to a?a?a?1 Visual FoxPro?1 Visual
18、 FoxProWAIT WAIT 请稍候,按随意键接着请稍候,按随意键接着?2 Visual FoxPro?2 Visual FoxProWAIT WAIT 这是查看功能这是查看功能 WINDOW AT 10,10 WINDOW AT 10,10?3 Visual FoxPro?3 Visual FoxProWAIT WINDOW TIMEOUT 3WAIT WINDOW TIMEOUT 3CANCELCANCEL338 计算表达式值吩咐=语法:语法:=,2功能:计算一个或多个表达式的值功能:计算一个或多个表达式的值,并且并且不返回其值。常用于须要执行一个系不返回其值。常用于须要执行一个系统函
19、数或用户自定义函数的功能统函数或用户自定义函数的功能,但不但不须要将该函数的返回值赋给一个内存须要将该函数的返回值赋给一个内存变量、数组或数组元素的状况下。变量、数组或数组元素的状况下。如为了进入插入状态如为了进入插入状态,可输入吩咐:可输入吩咐:=insmode(.t.)=insmode(.t.)349 终止程序运行吩咐CANCEL语法:语法:CANCELCANCEL功能:终止程序的运行功能:终止程序的运行,释放全部局部内释放全部局部内存变量存变量,返回到返回到 吩咐吩咐 窗口。窗口。3510 程序注释吩咐一、行首注释吩咐一、行首注释吩咐NOTE|*NOTE|*功能:在程序中加注释行信息。功
20、能:在程序中加注释行信息。语法:语法:NOTE|*NOTE|*注释内容注释内容 二、行尾注释吩咐二、行尾注释吩咐&功能:在吩咐语句的尾部加注释信息。功能:在吩咐语句的尾部加注释信息。语法:语法:&注释注释 例例6-66-6:计算发放工资中各种大小钞票最:计算发放工资中各种大小钞票最少的程序。程序如下:少的程序。程序如下:(L6_6.PRG)(L6_6.PRG)36NOTE NOTE 依据输入的钱数,计算各种面额依据输入的钱数,计算各种面额*钞票张数最少的程序。钞票张数最少的程序。INPUT INPUT 请输入总钱款数量请输入总钱款数量(单位:元):单位:元):TO X&TO X&单位为:元。单
21、位为:元。Y100=int(x/100)&Y100=int(x/100)&求求100100元最少张数元最少张数X=x-100*y100&X=x-100*y100&求剩余款额求剩余款额Y50=int(x/50)&Y50=int(x/50)&求求5050元最少张数元最少张数X=x-50*y50&X=x-50*y50&求剩余款额求剩余款额Y10=int(x/10)&Y10=int(x/10)&求求1010元最少张数元最少张数X=x-10*y10&X=x-10*y10&求剩余款额求剩余款额Y5=int(x/5)&Y5=int(x/5)&求求5 5元最少张数元最少张数X=x-5*y5&X=x-5*y5&
22、求剩余款额求剩余款额Y2=int(x/2)&Y2=int(x/2)&求求2 2元最少张数元最少张数X=x-2*y2&X=x-2*y2&求剩余款额求剩余款额Y1=int(x)&Y1=int(x)&求求1 1元最少张数元最少张数X=x-y1&X=x-y1&求剩余求剩余 零头零头 款额款额37X=x*10&X=x*10&将将 零头零头 化为角化为角J5=int(x/5)&J5=int(x/5)&求求5 5角最少张数角最少张数X=x-5*j5&X=x-5*j5&求剩余款额求剩余款额J2=int(x/2)&J2=int(x/2)&求求2 2角最少张数角最少张数X=x-2*j2&X=x-2*j2&求剩余款
23、额求剩余款额J1=int(x)&J1=int(x)&求求1 1角最少张数角最少张数X=(x-j1)*10&X=(x-j1)*10&将剩余零头化为分将剩余零头化为分F5=int(x/5)&F5=int(x/5)&求求5 5分最少张数分最少张数X=x-5*f5&X=x-5*f5&求剩余款额求剩余款额F2=int(x/2)&F2=int(x/2)&求求2 2分最少张数分最少张数X=x-2*f2&X=x-2*f2&求剩余款额求剩余款额F1=int(x)&F1=int(x)&求求1 1分最少张数分最少张数*以下为输出部分:以下为输出部分:?100?100元票:元票:,y100,y100,张张 38?50
24、?50元票:元票:,y50,y50,张张?10?10元票:元票:,y10,y10,张张?5?5元票:元票:,y5,y5,张张?2?2元票:元票:,y2,y2,张张?1?1元票:元票:,y1,y1,张张 waitwait?5?5角票:角票:,j5,j5,张张?2?2角票:角票:,j2,j2,张张?1?1角票:角票:,j1,j1,张张?5?5分票:分票:,f5,f5,张张?2?2分票:分票:,f2,f2,张张?1?1分票:分票:,f1,f1,张张 cancelcancel3911 文本输出吩咐TEXTENDTEXT功能:在屏幕上显示功能:在屏幕上显示TEXTTEXT和和ENDTEXTENDTEXT
25、之之间的全部文本信息。间的全部文本信息。语法:语法:TEXTTEXT文本信息文本信息ENDTEXTENDTEXT40举例例例6-76-7:利用:利用TEXTENDTEXTTEXTENDTEXT语句在屏语句在屏幕上输出幕上输出2121世纪是信息化时代!世纪是信息化时代!clearcleartexttext2121世纪是信息化时代!世纪是信息化时代!endtextendtextcancelcancel4112 输出文本行信息吩咐|功能:输出文本行信息。功能:输出文本行信息。语法:语法:输出信息时:输出信息时,输出行以输出行以回车符开头。回车符开头。:输出信息时:输出信息时,输出行不输出行不以回车符
26、开头。以回车符开头。42举例如输入下面两个吩咐:如输入下面两个吩咐:计算机世界计算机世界 计算机世界计算机世界奇妙的明天奇妙的明天执行结果为:执行结果为:计算机世界计算机世界计算机世界奇妙的世界计算机世界奇妙的世界431313、输入输出格式吩咐、输入输出格式吩咐显示输出并接受输入的吩咐显示输出并接受输入的吩咐(1)(1)SAY SAY GET GET PICTURE PICTURE1 FUNCTION FUNCTION 2 RANGE RANGE(2)READ(2)READ&激激活活getget语语句句,显显示示并并可可以以修修改改(3)CLEAR(3)CLEAR GETS GETS&不不激激
27、活活getget后后clear clear getsgets前前的的语语句句,使使其其只只显显示示不不能能修修改改.称隔断语句称隔断语句44.say.get.举例举例例:吩咐X=ASDFG 10,10 SAY ZIFU GET XCLEAR GETS READ例:打开JSDA.dbf表,显示该表每个记录的姓名,职称,基本工资字段,其中基本工资范围在2000元以内,要求以逗号格式显示且保留两位小数点,并且姓名只显示不能修改.(L7-2.prg)45L7-2.PRGUSE JSDASCAN FOR NOT EOF()0,0 SAY 姓名姓名:GET 姓名姓名CLEAR GETS 0,14 SAY
28、职称职称:GET 职称职称 0,32 SAY 基本工资基本工资:GET 基本工资基本工资 RANGE 0,2000 PICTURE 9,999.99READENDSCANCANCEL46选择结构程序设计一、选择结构程序设计的概念一、选择结构程序设计的概念二、单条件选择吩咐二、单条件选择吩咐IFIF三、多分支选择吩咐三、多分支选择吩咐 DO CASE DO CASE47选择结构程序设计的概念程序设计中的分支程序设计中的分支,是指在程是指在程序中从某一程序块分支出两个或两个以序中从某一程序块分支出两个或两个以上相对独立、彼此不同的子程序块的现上相对独立、彼此不同的子程序块的现象象,并称这些子程序块
29、为它的分支。并称这些子程序块为它的分支。条件条件 A B48选择结构程序设计的概念一、双分支选择结构一、双分支选择结构 通常也称为单条件双分支选择结构通常也称为单条件双分支选择结构,或或单条件选择结构。它仅描述具有两个分单条件选择结构。它仅描述具有两个分支的分支现象支的分支现象,是最简洁的选择结构。是最简洁的选择结构。二、多分支选择结构二、多分支选择结构 该分支机构的特点是:从多个选该分支机构的特点是:从多个选择结构中择结构中,选择一个条件为真的路途作为选择一个条件为真的路途作为程序执行的路途。程序执行的路途。49单条件选择吩咐IF功能:该吩咐用来进行各种条件推断功能:该吩咐用来进行各种条件推
30、断,使程使程序中的吩咐有条件的执行。序中的吩咐有条件的执行。语法:语法:IF IF 吩咐组吩咐组11ELSEELSE 吩咐组吩咐组22ENDIFENDIFIFIFENDIFENDIFIFIFENDIFENDIF嵌套错误嵌套错误嵌套正确嵌套正确50举例例例6-86-8:铁铁路路托托运运行行李李,从从甲甲地地到到乙乙地地,按按规规定定每每张张客客票票托托运运行行李李不不超超过过5050公公斤斤时时,每每公公斤斤0.250.25元元,如如超超过过5050公公斤斤,超超过过部部分分按按每每公公斤斤0.450.45元元计计算算。编编写写一一个个程程序序,把把行行李李重重量量输输入入计计算算机机,计计算算
31、出出运运费费,并并打打印印出付款清单。出付款清单。运费公式为:运费公式为:p=0.25w p=0.25w 当当W50W50p=500.25+(w-50)0.45 p=500.25+(w-50)0.45 当当W W505051程序如下:Input Input 请输入行李重量:请输入行李重量:TO w TO wIF w=50IF w=50 P=0.25*w P=0.25*wElseElse P=50*0.25+(w-50)*0.45 P=50*0.25+(w-50)*0.45EndifEndif?行李重量为:行李重量为:,w,w?应付运费为:应付运费为:,p,pcancelcancel从键盘输入数
32、据从键盘输入数据WW10if x10 y=x3 y=x3elseelse if x=0 if x=0 y=x5 y=x5 else else y=x2 y=x2 endif endifendifendif?X?X的值为:的值为:,x,x?Y?Y的值为:的值为:,y,ycancelcancel54填空练习:input input 请输入请输入X X的值:的值:to x to xif x10if x10 y=x3 y=x3elseelse if&1 if&1 y=x5 y=x5 else else&2&2 endif endif?X的值为:的值为:,x?Y的值为:的值为:,ycancel求表达式的
33、值。求表达式的值。Y=x3 当当X10Y=X5 当当0X10Y=X2 当当X0程序如右,请填空程序如右,请填空55例:已知系数例:已知系数a a、b b、c c,编写程序,求一元二,编写程序,求一元二次方程:次方程:ax2+bx+c=0 ax2+bx+c=0的根。的根。问题分析:解上述方程:得到求解方程为:问题分析:解上述方程:得到求解方程为:依据一元二次方程的系数依据一元二次方程的系数a a、b b、c c的取值,的取值,有以下几种状况:有以下几种状况:561.1.当当a0a0时时,有两个根。有两个根。当判别式当判别式b2-4ac0b2-4ac0时,有两个不同的实根;时,有两个不同的实根;当
34、判别式当判别式b2-4ac=0b2-4ac=0时,有两个相同的实根;时,有两个相同的实根;当判别式当判别式b2-4ac0b2-4ac0时,有两个不同的虚根。时,有两个不同的虚根。2.2.当当a=0,b0a=0,b0时,有一个根。时,有一个根。3.3.当当a=0,b=0a=0,b=0时,方程无意义。时,方程无意义。依据分析,写出程序:依据分析,写出程序:57*解方程解方程input a=to ainput a=to ainput b=to binput b=to binput c=to cinput c=to cif a0if a0 delta=b2-4*a*c delta=b2-4*a*c r
35、e=-b/(2*a)re=-b/(2*a)im=sqrt(abs(delta)/(2*a)im=sqrt(abs(delta)/(2*a)58if delta=0if delta=0 root1=re+im root1=re+im root2=re-im root2=re-im?两个实根为:两个实根为:,root1,root2,root1,root2 else else?两个虚根为:两个虚根为:,re,+,im,i,re,+,im,i?,re,-,im,i?,re,-,im,i endif endif59elseelse if b0 if b0?只有一个根:只有一个根:,-c/b,-c/bel
36、seelse?方程无解!方程无解!endifendifendifendifcancelcancel60例:能打开随意表阅读的程序5,10 SAY 请输入表名 get bm default space(10)READBM=ALLTRIM(BM)IF FILE(&bm.dbf)Use&bm&use bm是错误的,不能干脆用表名BrowseElseWait 该文件不存在 windowendif61多分支选择吩咐 DO CASE功能:从多个选择结构中功能:从多个选择结构中,选择一个条件为选择一个条件为真的路途作为程序执行的路途。真的路途作为程序执行的路途。语法:语法:DO CASEDO CASE CA
37、SE CASE 1 吩咐组吩咐组11 CASE CASE 2 吩咐组吩咐组22 OTHERWISE OTHERWISE 吩咐组吩咐组n+1n+1ENDCASEENDCASE62例例:设设计计个个人人纳纳税税计计算算程程序序。按按税税法法规规定定,工工资资、薪薪金金所所得得,运运用用超超额额累累进进税税率率。以以每每月月收收入入额额减减去去800800元后的余额,为应纳税所得额。元后的余额,为应纳税所得额。(L6_11.PRG)(L6_11.PRG)其税率表为:其税率表为:级数级数 全月应纳税所得额全月应纳税所得额 税率(税率(%)1 1 不超过不超过500500元元 5 52 500-2000
38、2 500-2000元元 10 103 2000-50003 2000-5000元元 15 154 5000-200004 5000-20000元元 20 2063级数级数 全月应纳税所得额全月应纳税所得额 税率(税率(%)5 20000-400005 20000-40000元元 25 256 40000-600006 40000-60000元元 30 307 60000-800007 60000-80000元元 35 358 80000-1000008 80000-100000元元 40 409 1000009 100000元以上元以上 45 45 分析:由于接受超额累计法计算,因此要计分析
39、:由于接受超额累计法计算,因此要计算出每级的纳税数额,设算出每级的纳税数额,设500500元、元、20002000元、元、100000100000元时应纳税数额为元时应纳税数额为SW500SW500、SW2000SW2000、SW100000SW100000。64问题分析:问题分析:sw500=500*0.05sw500=500*0.05sw2000=sw500+(2000-500)*0.10sw2000=sw500+(2000-500)*0.10sw5000=sw2000+(5000-2000)*0.15sw5000=sw2000+(5000-2000)*0.15sw20000=sw5000
40、+(20000-5000)*0.20sw20000=sw5000+(20000-5000)*0.20设收入设收入-800-800为:为:2300023000js=sw20000+(23000-20000)*0.25js=sw20000+(23000-20000)*0.25依据分析依据分析,程序为程序为 L6_11.PRG L6_11.PRG 框图为:框图为:65清 屏计算各级别纳税额T=500?输入工资总额TT=T-800T100000?YESJS=SW100000+T*0.45NO输 出程序结束程序结束66sw500=500*0.05sw2000=sw500+(2000-500)*0.10s
41、w5000=sw2000+(5000-2000)*0.15sw20000=sw5000+(20000-5000)*0.20sw40000=sw20000+(40000-20000)*0.25sw60000=sw40000+(60000-40000)*0.30sw80000=sw60000+(80000-40000)*0.35sw100000=sw80000+(100000-80000)*0.40input 请输入本月应纳税所得额(元):to t do casecase t=500 js=t*0.05case t=2000 js=sw500+(t-500)*0.10case t=5000 js=
42、sw2000+(t-2000)*0.15case t=20000 js=sw5000+(t-5000)*0.20case t=40000 js=sw20000+(t-20000)*0.25case t=60000 js=sw40000+(t-40000)*0.30case t=80000 js=sw60000+(t-60000)*0.35case t=100000 js=sw80000+(t-80000)*0.40otherwise js=sw100000+(t-100000)*0.45endcase?本月应纳税:,js,元cancel程程序序如如右右,可可复复制制运运行行:67举例例例6-1
43、26-12:任任给给一一个个年年份份,推推断断是是否否为为闰闰年年,并并依依据据输输入入的的月月份份,推推断断属属于于什什么么季季节节以以及该月天数。及该月天数。(L_12.PRG)(L_12.PRG)问问题题分分析析:闰闰年年的的条条件件是是能能被被4 4整整除除但但不不能能被被100100整整除除,或或者者能能被被400400整整除除。依依据据闰闰年年条件可得出闰年的逻辑表达式:条件可得出闰年的逻辑表达式:MOD(Y,4)=0.AND.MOD(Y,100)0.OR.MOD(Y,MOD(Y,4)=0.AND.MOD(Y,100)0.OR.MOD(Y,400)=0400)=068*求闰年、季节
44、、每月的天数 CLEARinput 请输入年份:to yif mod(y,4)=0.and.mod(y,100)0.or.mod(y,400)=0 rn=.t.?y,年是闰年。Else rn=.f.?y,年不是闰年。EndifInput 请输入月份(1-12):to mDo caseCase m=3.or.m=4.or.m=5?m,月是春季(,m,month is spring.)case m=6.or.m=7.or.m=8?m,月是夏季(,m,month is summer.)case m=9.or.m=10.or.m=11?m,月是秋季(,m,month is Autumn.)case m
45、=12.or.m=1.or.m=2?m,月是冬季(,m,month is winter.)endcasedo casecase m=4.or.m=6.or.m=9.or.m=11?m,月有30天。Case m=2 If rn=.f.Days=28Else Days=29Endif?m,月有,days,天。Otherwise?m,月有,31,天。EndcaseCancel程程序序如如右右,可可复复制制运运行行:69循环结构程序设计1 1 循环结构程序设计的概念循环结构程序设计的概念2 2 当型循环吩咐当型循环吩咐DO WHILEDO WHILE3 3 步长型循环吩咐步长型循环吩咐FORFOR4
46、4 数据表扫描循环吩咐数据表扫描循环吩咐SCANSCAN70循环结构程序设计的概念所谓循环是指在程序设计中所谓循环是指在程序设计中,从某处起从某处起先有规律地反复执行某一操作块(或先有规律地反复执行某一操作块(或程序块)的现象程序块)的现象,并称重复执行的该操并称重复执行的该操作块(或程序块)为它的循环体。按作块(或程序块)为它的循环体。按循环体内是否嵌套有从属的子循环循环体内是否嵌套有从属的子循环,可可分为单循环结构和多循环结构;按其分为单循环结构和多循环结构;按其循环体执行方式和条件循环体执行方式和条件,可分为当型、可分为当型、直到型与步长型循环结构。直到型与步长型循环结构。71调试工具调
47、试工具工具工具/调试器调试器(跟踪窗口和监视窗口)(跟踪窗口和监视窗口)VFP 3.0 为:调试窗口和跟踪窗口为:调试窗口和跟踪窗口72当型循环吩咐DO WHILE功功能能:当当给给定定的的条条件件为为真真时时,就就使使DO DO WHILE WHILE ENDDOENDDO之之间间的的吩吩咐咐重重复复执执行行,实实现现程程序序循环。循环。语法:语法:DO WHILE DO WHILE 吩咐组吩咐组 EXIT EXIT LOOP LOOPENDDOENDDO73举例例:用循环语句打印例:用循环语句打印5 5个个Visual FoxProVisual FoxPro字符串。字符串。X=1X=1Do
48、 while x=5Do while x=5?Visual FoxPro?Visual FoxPro x=x+1 x=x+1ENDDOENDDOCANCELCANCEL74举例 例:有一张厚例:有一张厚0.50.5毫米毫米,面积足够大的纸面积足够大的纸,将它不断地对折。问对折多少次后将它不断地对折。问对折多少次后,其厚其厚度可达珠穆朗玛峰的高度(度可达珠穆朗玛峰的高度(88488848米)。米)。问题分析:问题分析:0.5,1,2,4,8,16,32,64,128,256,512,0.5,1,2,4,8,16,32,64,128,256,512,h=0.5 h=2*h=1 h=2*h=2 h=
49、2*h=4h=0.5 h=2*h=1 h=2*h=2 h=2*h=4 n=0 n=n+1=1 n=n+1=2 n=n+1=3 n=0 n=n+1=1 n=n+1=2 n=n+1=375n=0n=0h=0.5h=0.5do while h8848000do while h8848000 n=n+1 n=n+1 h=2*h h=2*henddoenddo?对折的次数对折的次数:,n:,n?此时的此时的H H为:为:,h,hcancelcancel76举例例:打开数据表例:打开数据表JSDA.DBF,JSDA.DBF,从键盘上输入从键盘上输入某一职称(比如讲师)某一职称(比如讲师),然后列出符合然后
50、列出符合该职称的全部记录的内容该职称的全部记录的内容,用循环来作用循环来作,直到干脆按回车键时结束程序。直到干脆按回车键时结束程序。(L6_15.PRG)(L6_15.PRG)外循环用来限制不同职称的输入外循环用来限制不同职称的输入,内循内循环用来限制满足条件的多条记录的输环用来限制满足条件的多条记录的输出。程序如下:出。程序如下:77CLEARUSE jsdaSORT ON 职称职称 TO jsda1USE jsda1DO WHILE.T.ACCEPT 请输入要查找的职称请输入要查找的职称 TO ZC IF ZC=EXIT ENDIF LOCATE FOR 职称职称=ZC DO WHILE