06VisualFoxPro程序设计基础课件

上传人:无*** 文档编号:230656821 上传时间:2023-08-26 格式:PPT 页数:112 大小:1.11MB
收藏 版权申诉 举报 下载
06VisualFoxPro程序设计基础课件_第1页
第1页 / 共112页
06VisualFoxPro程序设计基础课件_第2页
第2页 / 共112页
06VisualFoxPro程序设计基础课件_第3页
第3页 / 共112页
资源描述:

《06VisualFoxPro程序设计基础课件》由会员分享,可在线阅读,更多相关《06VisualFoxPro程序设计基础课件(112页珍藏版)》请在装配图网上搜索。

1、数据库应用经管类第六章 Visual FoxPro程序设计基础红烧肉菜谱1.准备肉:上好五花肉,沸水焯去污物,切麻将块大小2.准备调料:白糖、姜片、油盐醋、丁香、胡萝卜3.烧热油,放两勺白糖和二两姜片(鲜姜一块切成)进去翻炒片刻 4.放入块状五花肉一道翻炒,直至颜色变黄,油也煸出不少 5.加水至漫过肉块,加酱油少许、盐、二两中国醋、丁香四、五枚 6.起锅前十分钟加胡萝卜块7.水收干后起锅206Visual FoxPro程序设计基础程序概念n参见Wiki解释http:/=%E7%A8%8B%E5%BA%8F&variant=zh-cnn计算机程序计算机程序或者软件程序软件程序(通常简称程序程序)

2、是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。306Visual FoxPro程序设计基础A Joke406Visual FoxPro程序设计基础姑娘爱小伙(搞笑版)result love(boy,girl)if(boy.有房()and boy.有车()boy.set(nothing);return girl.嫁

3、给(boy);506Visual FoxPro程序设计基础 if(girl.愿意等()while(!(boy.赚钱 100,000 and girl.感情 8)for(day=1;day 100,000 and girl.感情 8)for(day=1;day=365;day+)if(day=情人节 or day=girl.生日)&and boy.givegirl(玫瑰)girl.感情+;else girl.感情-;boy.拼命赚钱();/for /while if(boy.有房()and boy.有车()boy.set(nothing);return girl.嫁给(boy);else 年龄+

4、;girl.感情-;/if愿意等 return girl.goto(another_boy);姑娘爱小伙(搞笑版)完整版806Visual FoxPro程序设计基础6.1 Visual FoxPro程序的建立与执行nVisual FoxPro中程序的基本组成n程序文件的建立和编辑n程序文件的编译和执行nVisual FoxPro命令方式的输入输出语句906Visual FoxPro程序设计基础6.1.1 程序的基本组成(1)n在Visual FoxPro中,程序文件又称为命令文件,它是由Visual FoxPro中的命令和一些程序控制语句所组成的,程序文件扩展名为.PRG。1006Visual

5、 FoxPro程序设计基础6.1.1 程序的基本组成(2)n程序的基本组成规则是:(1)程序由若干程序行组成。(2)每一程序行由一条语句或一条命令组成。(3)每一行都以“Enter”键结束。若一行写不完一条命令,可在该行末尾处加上续行符号“;”。(4)程序末尾通常可加上程序结束语句,如CANCEL、RETURN或QUIT等;也可不加,Visual FoxPro将在程序结束处自动添加程序结束语句。(5)在程序的开始或每一程序行的后面可加上注释语句对整个程序和某个程序行做一说明,以增加程序的可读性。1106Visual FoxPro程序设计基础6.1.1 程序的基本组成(3)n程序的编制过程为:q

6、程序的建立、q程序的编译、q程序的运行。1206Visual FoxPro程序设计基础6.1.2 程序文件的建立和编辑n建立和编辑有两种方式:命令和菜单1.命令方式q命令格式:MODIFY COMMAND|?q命令功能:启动文本编辑器。2.菜单方式 详见课本6.1.2节1306Visual FoxPro程序设计基础6.1.3 程序文件的编译和执行(1)1.编译编译是将源程序转换成目标程序。编译有命令和菜单两种方式。(1)命令方式q命令格式:Compile|?q命令功能:对指定的程序文件进行编译。(2)菜单方式 详见课本6.1.3节1406Visual FoxPro程序设计基础6.1.3 程序文

7、件的编译和执行(2)2.执行程序文件输入存盘或再经编译后,系统可自动连续执行文件中的每条命令或语句。程序文件的执行有命令和菜单两种方式。(1)命令方式q命令格式:DO|?q功能:将程序文件从磁盘调入内存并执行。(2)菜单方式 详见课本6.1.3节1506Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(1)1.注释符*/&q语句格式1:*q语句格式2:&q功能:*或&的功能是在程序中起注释作用,给程序注释的目的是使程序易于自己和别人理解,即有好的可读性。注释语句在Visual FoxPro中是非执行语句,即包含注释语句的程序,在执行时,Visual FoxPro将忽略这

8、些注释语句,因为它们仅起注释作用。q说明:*的功能是注释一整行,它通常放在最前面。&的功能是放在语句后起注释作用。通常*用来对整个程序进行注释,即说明该程序的功能;&用来对一条语句进行注释,即说明该语句的功能。1606Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(2)例6-2:注释示例程序1.*程序名称为ex6-2.prg2.*我的第一个程序3.clear&清屏4.set talk off&关闭回显5.a=“hello”&给a赋值6.b=“world”&给b赋值7.c=a+b&进行运算8.?c&输出结果1706Visual FoxPro程序设计基础6.1.4 命令方

9、式的输入输出语句(3)2.交互式输入语句nVisual FoxPro提供三种交互式输入语句。n功能:系统执行上述命令时会自动停下,等待用户从键盘输入信息到计算机内存变量中,系统接收到信息后自动往下继续执行。1806Visual FoxPro程序设计基础 6.1.4 命令方式的输入输出语句(4)2.交互式输入语句(1)INPUTq语句格式1:INPUT TO q在语句1中,可输入N、C、L和D型数据。输入C型数据时,要使用单引号或双引号作为定界符。输入L型数据时,.T.和.F.两边的小圆点不能省略。输入D 型数据时,要用CtoD()函数或大括号“”将字符串转换成日期型变量。1906Visual

10、FoxPro程序设计基础 6.1.4 命令方式的输入输出语句(5)2.交互式输入语句(2)ACCEPTq语句格式2:ACCEPT TO q语句只能输入C型数据,输入数据时可不用定界符。2006Visual FoxPro程序设计基础 6.1.4 命令方式的输入输出语句(6)2.交互式输入语句(3)WAITq语句格式3:WAIT TO TIMEOUT q语句只能输入一个字符的C型数据,并可指定等待时间。若超过等待时间仍无输入,则系统自动将0作为输入值,使程序继续执行。语句输入结束后可不按Enter键。2106Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(7)n注意:IN

11、PUT命令和ACCEPT命令以及后面介绍的格式化输出命令在Visual FoxPro中很少使用。它们的功能是为兼容原来的FoxPro程序。WAIT命令是等待用户按任意键后程序继续运行。2206Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(8)n例:在“学生表”中,按姓名查找某学生的情况。程序如下:*程序名为ex6-3.prgclearxm=&为空串set default to D:我的数据库项目数据库&设置默认的目录位置use 学生表accept 请输入姓名:to xmlist for 姓名=xmwait 按任意键继续clear?查询完毕cancel2306Visu

12、al FoxPro程序设计基础6.1.4 命令方式的输入输出语句(9)n格式化输出命令q语句格式:row,col say“something”get readq作用:指定位置(row,col)输出字符串q屏幕左上角位置标记为(0,0),行号向下增大,列号向右增大2406Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(10)4.程序结束语句(1)CANCEL 命令命令q语法:CANCELq说明:停止当前 Visual FoxPro 程序的执行。当交互使用 Visual FoxPro 时,控制权返回命令窗口。若windows下执行一个独立的发布应用程序,CANCEL 终止

13、该应用程序并将控制权返回Windows;执行 CANCEL 将释放所有私有变量。2506Visual FoxPro程序设计基础6.1.4 命令方式的输入输出语句(11)4.程序结束语句(2)RETURN 命令q将程序控制权返回给调用程序。q语法:RETURN|TO MASTER|TO(3)QUIT 命令q结束当前Visual FoxPro程序的运行,退出Visual FoxPro,返回到操作系统。q注意:请始终使用QUIT命令来终止Visual FoxPro程序。如果打开了Visual FoxPro,没有发出QUIT命令而直接关闭了计算机,那么可能有数据丢失的危险。2606Visual Fox

14、Pro程序设计基础6.1.4 命令方式的输入输出语句(12)4.程序结束语句(4)SUSPEND命令qSUSPEND语句的功能是将正在运行的程序挂起,这使得程序进入到交互状态。此时我们可以使用?|?、DISPLAY MEMORY等命令查看内存变量的值。在程序挂起状态下,可以用命令CANCEL终止程序的运行。一般情况下,我们仅使用SUSPEND命令来调试程序调试程序。(5)RESUME命令q当程序运行到SUSPEND语句被挂起后,程序进入交互状态,在查看完相关的变量值后,如果在命令窗口输入RESUME命令,可以使程序继续运行。2706Visual FoxPro程序设计基础6.1.4 命令方式的输

15、入输出语句(13)nCLEAR命令qCLEAR用来清屏。CLEAR的另一项功能是从内存中释放指定项。q语法:CLEARALL|WINDOWSqALL表示从内存中释放所有的变量和数组以及所有用户自定义菜单栏、菜单和窗口的定义;2806Visual FoxPro程序设计基础源代码源代码指令序列指令序列compile源文件源文件程序文件程序文件*程序名称为ex6-2.prg*我的第一个程序clear&清屏set talk off&关闭回显a=“hello”&给a赋值b=“world”&给b赋值c=a+b&进行运算?c&输出结果编译编译2906Visual FoxPro程序设计基础6.2 结构化程序设

16、计基础n程序设计过程n算法的概念n结构化程序的概念n流程图及示例(6.3节后介绍)3006Visual FoxPro程序设计基础6.2.1 程序设计过程n程序设计即是计算机用户根据解决某一问题的步骤,按一定的逻辑关系,将一系列的指令组合在一起。3106Visual FoxPro程序设计基础真否真否否真有无错误分析问题编写程序确定算法画流程图运行并调试程序错误修改程序录入错误修改算法结束3206Visual FoxPro程序设计基础6.2.2 算法(1)n程序的设计过程,核心问题是设计一个合理、有效的算法。n一般认为,算法就是在有限的时间内,可以根据明确规定的运算规则,在有穷步骤内得出确切计算结

17、果的机械步骤或能运行的计算程序。3306Visual FoxPro程序设计基础6.2.2 算法(2)n算法特性:(1)有限性有限性,即解题步骤是有限的,无穷的步骤意味无解。(2)确定性确定性,每一步骤的操作是确定的,这样可以保证后继操作的输入是可以确定的。(3)可行性可行性,每一步骤都是可行的。此外,算法可以没有输入(因为输入由计算机自动产生),但一定要有输出,输出用来表示问题是否有解。3406Visual FoxPro程序设计基础6.2.2结构化程序n三种基本控制结构:顺序、分支、循环q顺序结构是程序设计中最基本的结构。在该结构中,程序的执行是按命令出现的先后顺序依次执行的。q分支结构是按给

18、定的选择条件成立与否来确定程序的走向。分支结构可分为双重分支选择和多重分支选择。在任何条件下,无论分支多少,只能选择其一。3506Visual FoxPro程序设计基础6.2.2结构化程序cont.n三种基本控制结构:顺序、分支、循环q循环结构是一种重复结构,即某一程序段将被反复执行若干次。按循环的嵌套层次,循环可分为简单循环结构和循环嵌套(也称为多重循环)结构。按循环体执行的条件性质,循环又可分为While循环和Until循环。无论何种类型的循环结构,都要确保循环的重复执行能够终止。3606Visual FoxPro程序设计基础6.2.2结构化程序cont.n结构化程序是指仅由三种基本控制结

19、构组成的程序,它具有以下特点:(1)整个程序模块化。(2)每个模块只有一个入口和一个出口。(3)每个模块都应能单独执行,且无死循环。(4)采用黑箱的思想,宏观地描述任何一个程序,可以将它看成为顺序结构。3706Visual FoxPro程序设计基础6.3 程序的控制语句结构 n顺序结构程序n分支结构程序n循环结构程序3806Visual FoxPro程序设计基础1.顺序结构程序(1)顺序结构程序就是程序的执行按照语句的先后顺序逐条执行。顺序结构是程序结构形式中最基本、最普遍、也是最简单的结构形式,同时又是组成其它复杂程序的基础。语句块1语句块2语句块3语句块1语句块2语句块33906Visua

20、l FoxPro程序设计基础1.顺序结构程序(2)CLEAR SET TALK OFF SET DEFAULT TO D:VFP教学管理数据库教学管理数据库 USE 学生表学生表 ACCEPT 请输入待查学生的学号请输入待查学生的学号:TO xh1 LOCATE FOR 学号学号=xh1 DISP 学号学号,姓名姓名,入学成绩入学成绩 USE SET TALK ON RETURN 例例 在学生表中,根据输入的在学生表中,根据输入的学生学号,在学生表中查找查学生学号,在学生表中查找查询学生的姓名和入学成绩。询学生的姓名和入学成绩。若输入的编号在学生表中不存若输入的编号在学生表中不存在,程序并未反

21、应,因此程序在,程序并未反应,因此程序需进一步完善。需进一步完善。4006Visual FoxPro程序设计基础2.分支结构程序(1)n双重分支选择语句双重分支选择语句语句格式:语句格式:IF ELSE ENDIF假假真真条件条件语句块语句块1 1语句块语句块2 2 语句块语句块1语句块语句块2条件条件真真假假4106Visual FoxPro程序设计基础2.分支结构程序(2)1.Set talk off2.Clear3.Input“a=“to a4.Input“b=“to b5.If(ab)6.?a7.Else8.?b9.Endif10.Set talk on例例 比较变量比较变量a,ba,

22、b值的大小,值的大小,输出较大者输出较大者.F.T.ab?a?b4206Visual FoxPro程序设计基础2.分支结构程序(3)set talk offclear set default to“d:vfp教学管理数据库”use 学生input“请输入学生学号:to xh1Locate for 学号=xh1&在学生表中查找记录IF FOUND()&判断是否找到。DISPLAY 学号,姓名,入学成绩&找到,显示该记录ELSE 12,5 SAY“对不起,查无此人!ENDIFSet talk onusereturn例例 根据输入的学生学号,在根据输入的学生学号,在学生表中查找学生记录学生表中查找学

23、生记录4306Visual FoxPro程序设计基础2.分支结构程序(4)n多重分支选择语句DO CASECASE CASE CASE OTHERWISEENDCASE真真假假假假真真假假真真条条件件1语语 句句块块1语语 句句块块条条件件2语语 句句块块2真真语语 句句块块n假假条条件件n4406Visual FoxPro程序设计基础2.分支结构程序(5)n多重分支选择语句多重分支选择语句DO CASECASE CASE CASE OTHERWISEENDCASE CASE 值1值2 值n其其它它语句块1语句块2 语句块n语句块4506Visual FoxPro程序设计基础2.分支结构程序(

24、6)n例6-8:从键盘随机输入成绩分数,根据成绩分数来判断该成绩属于优、良、中还是差。规定:90成绩100为优;80成绩90为良;60成绩80为中;成绩60为差;其它为非法输入。n使用多重分支结构,程序编制如下:4606Visual FoxPro程序设计基础2.分支结构程序(7)clearset talk offrate=&表示等级input 请输入成绩:to gradedo case case 90=grade.and.grade=100?str(grade,3)+的成绩为:+优&缩格目的是增加可读性case 80=grade.and.grade 90?str(grade,3)+的成绩为:+

25、良case 60=grade.and.grade 80?str(grade,3)+的成绩为:+中case 0=grade.and.grade 60?str(grade,3)+的成绩为:+差otherwise?您输入的成绩不对!endcasereturn4706Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(1)DO WHILE循环循环语句格式:DO WHILE LOOPEXITENDDO循环条件循环体4806Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(2)n循环语句的使用要注意下列几点:(1)DO WHILE和ENDDO子句要配对使用,ENDDO

26、的作用是使循环回到循环的开始,即DO WHILE语句。(2)在第一次执行到DO WHILE语句时,循环条件必须为真,才能进入循环体。在执行完成循环体语句后,再判断循环条件是否为真,如果为真,则继续循环,直到循环条件为假时,才退出循环语句,执行ENDDO后面的语句。4906Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(3)n循环语句的使用要注意下列几点:(3)循环体中,一定存在一条或若干条语句在改变循环条件。如果循环条件恒为真,则是死循环。(4)要小心改变循环条件,如果不适当的修改循环条件,则循环将不能按预先的设想进行,程序也达不到预期的效果。(5)为增加程序的可读性,使

27、程序清晰易懂,必须使必须使用缩进格式。用缩进格式。(6)关于LOOP和EXIT语句使用参见本节后面的内容。5006Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(4)n例6-11:求1加到10的累加和,即 S=1+2+3+8+9+10set talk offs=0&求累加和的变量求累加和的变量i=1&循环变量赋初值循环变量赋初值do while i=10&循环条件,使用缩格,提高可读性循环条件,使用缩格,提高可读性?i&输出变量输出变量i的值是方便理解循环的过程的值是方便理解循环的过程s=s+i&求累加,即循环不变式求累加,即循环不变式?s&输出输出s的结果,理解每次累加

28、结果的变化的结果,理解每次累加结果的变化i=i+1&改变循环变量的值改变循环变量的值enddo?s&循环体外输出结果循环体外输出结果5106Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(5)n循环结构的理解循环结构的理解q循环条件是什么?循环条件是什么?q什么时候进入循环?什么时候进入循环?q什么时候退出循环?什么时候退出循环?q循环体内如何改变循环条件?循环体内如何改变循环条件?q循环变量的作用?循环变量的作用?5206Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(6)n在循在循环环中中处处理循理循环环不不变变式的一般式的一般结结构构循循环环前

29、的前的预处预处理,如循理,如循环环控制控制变变量量赋赋初初值值循循环环条件条件(初始必初始必须为须为真真)循循环环不不变变式式改改变变循循环环控制控制变变量的量的值值根据需要根据需要输输出出结结果果5306Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(7)n在循在循环环中中处处理理记录记录的一般的一般结结构构打开数据表打开数据表(默认指向第一条记录)记录指针指向第一条记录(可忽略)判判记录记录指指针针没有到底没有到底(.NOT.EOF()当前当前记录进记录进行行处处理理记录记录指指针针下移(下移(Skip)根据需要输出结果5406Visual FoxPro程序设计基础3

30、.循环结构程序(循环结构程序(11)clearset default to“d:VFP教学管理数据库教学管理数据库”use 学生表学生表DO WHILE.NOT.EOF()&判断是否到了文件底部判断是否到了文件底部 IF 少数民族否少数民族否=.T.display 学号学号,姓名姓名,入学成绩入学成绩 replace 入学成绩入学成绩 with 入学成绩入学成绩+10?”,入学成绩入学成绩 ENDIF SKIP&记录记录指指针针下移下移ENDDOusereturn例3:将学生表中少数民族学生的入学成绩加10分,并输出学号、姓名、修改之前的入学成绩、修改之后的入学成绩5506Visual Fox

31、Pro程序设计基础3.循环结构程序(循环结构程序(8)n循环结构中的LOOP命令LOOP真真假假条件条件语句块语句块2假假真真循环条循环条件件语句块语句块1DO WHILE 语句块语句块1IF LOOPENDIF语句块语句块2ENDDO5606Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(9)n循环结构中的EXIT命令EXIT真真假假条件条件语句块语句块2假假真真循环条件循环条件语句块语句块1DO WHILE 语句块语句块1IF EXITENDIF语句块语句块2ENDDO5706Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(10)set talk

32、 offinput 请输入一个大于请输入一个大于1的整数的整数:to numm=int(sqrt(num)i=2do while im?输入的是一个素数。输入的是一个素数。else?输入的不是一个素数。输入的不是一个素数。endifreturn例例:输入一个大于输入一个大于1的正的正整数,判断该数是否为整数,判断该数是否为素数。素数。所谓素数是指它除了被所谓素数是指它除了被1 1和它本和它本身整除外不再被其它整数整除。身整除外不再被其它整数整除。(数学家已经证明了,在判断素(数学家已经证明了,在判断素数时,并不需要一直判断到该数数时,并不需要一直判断到该数减减1 1,而只需要判断到该数的平方,

33、而只需要判断到该数的平方根即可)根即可)5806Visual FoxPro程序设计基础3.其它循环结构语句(12)nFOR循环语句格式:FOR=TO STEP LOOPEXITENDFOR|NEXT 5906Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(15)n求运行结果求运行结果for i=10 to 1 step -2?i=,inext?i=,in例例6-15:求:求N!,即求!,即求N的阶乘。的阶乘。6006Visual FoxPro程序设计基础3.循环结构程序(循环结构程序(16)nSCAN循环:q处理当前工作表中满足条件的每一条记录q格式:SCAN 范围 FO

34、R|WHILE 对记录的处理工作 LOOP EXITENDSCANq示例6106Visual FoxPro程序设计基础示例:学生表中少数民族学生的入学成绩加10分,并输出学号、姓名、修改之前的入学成绩、修改之后的入学成绩1.Set talk off2.Clear3.Set default to“d:vfp教学管理数据库”4.Use 学生表5.Scan for 少数民族否6.?学号,姓名,入学成绩7.replace 入学成绩 with 入学成绩+108.?入学成绩9.Endscan10.Use11.Set talk on12.return6206Visual FoxPro程序设计基础休息一下!6

35、306Visual FoxPro程序设计基础6.2.3 程序流程图及示例nANSI流程图nN-S图6406Visual FoxPro程序设计基础1.ANSI流程图(1)判断框箭头:表示程序流向连接符号:表示图标之间相互连接关系判断框:表示根据条件决定程序走向过程:表示该流程部分是一个过程输入/输出框:表示数据的输入、输出操作处理框:表示对数据进行处理起止框:表示程序的开始或结束6506Visual FoxPro程序设计基础1.ANSI流程图(2)n顺序结构语句块语句块1语句块语句块2语句块语句块36606Visual FoxPro程序设计基础1.ANSI流程图(3)n条件分支结构假假真真条件条

36、件语语句句块块1语语句句块块26706Visual FoxPro程序设计基础1.ANSI流程图(4)n多重条件分支结构真真假假假假真真假假真真条条件件1语句块语句块1语句块语句块条条件件2语句块语句块2真真语句块语句块n假假条件条件n6806Visual FoxPro程序设计基础循循环环条件条件1.ANSI流程图(5)n循环结构循环结构假假真真循循环环条件条件循循环环体体真真假假循循环环体体Until型循环结构型循环结构While型循环结构型循环结构6906Visual FoxPro程序设计基础2.N-S图(1)n顺序结构语句块1语句块2语句块37006Visual FoxPro程序设计基础2

37、.N-S图(2)n条件分支结构 语句块语句块1语句块语句块2条件条件真真假假语句格式:语句格式:IF ELSE ENDIF7106Visual FoxPro程序设计基础2.N-S图(3)n多重分支选择语句多重分支选择条件1条件2条件n其它语句块1语句块2语句块n语句块DO CASECASE CASE CASE OTHERWISEENDCASE7206Visual FoxPro程序设计基础2.N-S图(4)n循环结构循环条件循环体循环体循环条件Until型循环结构While型循环结构DO WHILE循环循环语句格式:DO WHILE LOOPEXITENDDOFOR=TO STEP LOOPEX

38、ITENDFOR|NEXT7306Visual FoxPro程序设计基础基本结构的嵌套使用n条件分支的嵌套假假真真条件条件A语语句句块块1语语句句块块27406Visual FoxPro程序设计基础基本结构的嵌套使用n条件分支的嵌套IFIFENDIFELSEENDIF示例:查找给定姓名的学生是否能够获得入学奖示例:查找给定姓名的学生是否能够获得入学奖学金(获奖条件入学成绩大于学金(获奖条件入学成绩大于600分)分)Accept“input name:“to xmLocate for trim(姓名姓名)=trim(xm)If found()if 入学成绩入学成绩=600?姓名姓名+”同学获得奖

39、学金同学获得奖学金.”else?姓名姓名+”同学不能获得奖学金同学不能获得奖学金.”endifElse?”该同学记录不存在该同学记录不存在!”Endif7506Visual FoxPro程序设计基础循环嵌套结构循环嵌套结构n循环体内又嵌套循环的情况称为多重循环或循环嵌套。n处于循环体内的循环称为内循环,处于外层的循环称为外循环。n内、外循环的层次必须分明,不允许有交叉现象出现。n内、外循环要使用不同的循环控制变量。7606Visual FoxPro程序设计基础DO WHILE DO WHILE LOOP EXIT ENDDO LOOP EXITENDDO循环嵌套结构(循环嵌套结构(2)在嵌套情

40、况下,在嵌套情况下,EXIT语语句使控制跳到下方句使控制跳到下方离其离其最近最近的的ENDDO之后,而之后,而LOOP语句使控制跳到语句使控制跳到上方离其最近上方离其最近的的DO.WHILE语句中。语句中。7706Visual FoxPro程序设计基础循环嵌套结构(循环嵌套结构(3)例6-19:打印如图所示对称三角图形。分析:分析:第第 i 行输出的字符数行输出的字符数为为 2*i-1 个,第个,第i行输行输出在屏幕的第出在屏幕的第 9+i 行。行。第第 i 行第行第 1 个字符的个字符的位置在位置在 30-i+1 列。列。第第 i 行第行第 j个字符的个字符的位置在位置在 30-i+j 列。

41、列。第10行第30列7806Visual FoxPro程序设计基础分析:分析:第第 i 行输出的字符数行输出的字符数为为 2*i-1 个,第个,第i行输行输出在屏幕的第出在屏幕的第 9+i 行。行。第第 i 行第行第 1 个字符的个字符的位置在位置在 30-i+1 列。列。第第 i 行第行第 j个字符的个字符的位置在位置在 30-i+j 列。列。j=1i=1在在9+i行行30-i+j列列输出字符输出字符“*”j=j+1Fj=2*i-1Ti=i+1i=5FTENDSTART7906Visual FoxPro程序设计基础SET TALK OFFCLEARi=1DO WHILE i=5ENDDORE

42、TURN j=1 DO WHILE j=2*i-1 ENDDO i=i+19+i,30-i+j SAY*j=j+1j=1i=1在在9+i行行30-i+j列列输出字符输出字符“*”j=j+1Fj=2*i-1Ti=i+1iSQRT(W)&说明是素数说明是素数 S=S+W&累加素数累加素数 ENDIFENDFOR?“S=”,S教材教材P160例例6-20给出给出如如何何判判断断一一个个整整数数是是不是素数的程序不是素数的程序.8206Visual FoxPro程序设计基础6.4 数组的应用数组的应用 n数组在使用之前,必须加以定义,然后才能使用该数组。n数组定义或数组说明语句格式为:DIMENSIO

43、N(,.),(,.).指定一个或多个数组中下标变量(数组元素)的个数;定义的数组元素初值为.F.8306Visual FoxPro程序设计基础6.4 数组的应用数组的应用 例子dimension A(N)长度为N的一维数组dimension B(n,m)n行,m列的二维数组A(1)A(2)A(N-1)A(N)B(1,1),B(1,2),.,B(1,m)B(2,1),B(2,2),.,B(2,m)B(n,1),B(n,2),.,B(n,m)数组元素的类型由所赋的值决定8406Visual FoxPro程序设计基础6.4 数组的应用例子数组的应用例子 排序排序(1)n例:向长度为20的一维数组中随

44、机地输入20个数,然后对数组元素按降序按降序排列,最后再输出排列后的数组。8506Visual FoxPro程序设计基础 例例:向向长长度度为为20的的一一维维数数组组中中随随机机地地输输入入20个个数数,然然后后对对数数组组元元素素按按由由大大到到小小顺顺序降序排列序降序排列,最后再输出排列后的数组。,最后再输出排列后的数组。12168242481612248482第第1遍遍共需共需N-1次比较次比较假设共有假设共有6个待排序的数(个待排序的数(N=6)第第2遍遍162412488共需共需N-2次比较次比较第第3遍遍16244812共需共需N-3次比较次比较第第4遍遍244816共需共需N-

45、4次比较次比较第第5遍遍4824共需共需N-5次比较次比较结结 论:论:有有 N 个待排序的数共需比较个待排序的数共需比较 N-1 遍遍 第第 i 遍需要比较遍需要比较 N-i 次次8606Visual FoxPro程序设计基础6.4 数组的应用例子数组的应用例子 排序排序(2)CLEARDIMENSION A(20)&定义数组定义数组FOR K=1 to 20 INPUT 请输入数据:请输入数据:to A(K)NEXTFOR W=1 to 19&外循环外循环 比较轮次数比较轮次数FOR N=1 to 20-W&内循环内循环 本轮需要比较的元素本轮需要比较的元素IF A(N)A(N+1)&判断

46、是否要交换判断是否要交换T=A(N+1)A(N+1)=A(N)A(N)=TENDIF ENDFORENDFOR FOR K=1 to 20 K,20 SAY A(K)&输出结果输出结果NEXTRETURN8706Visual FoxPro程序设计基础6.4 数组的应用例子数组的应用例子n思考:如果要求对数组元素按升序按升序排列,又如何处理。8806Visual FoxPro程序设计基础6.4 数组的应用例子数组的应用例子 排序排序(3)例6-21:随机输入N个字符数据到数组,并对数组的数据进行降序排列。*程序名为ex6-21.prgclear input 请输入待排序的数据总数:请输入待排序的

47、数据总数:to Ndimension A(N)&定义数组定义数组&循环用来输入数据到数组循环用来输入数据到数组for i=1 to N accept 请输入数据:请输入数据:to A(i)&输字符输字符next8906Visual FoxPro程序设计基础6.4 数组的应用数组的应用例子:排序例子:排序(5)*下面对数组进行排序下面对数组进行排序for i=1 to N-1for j=i+1 to Nif A(i)A(j)t=A(i)A(i)=A(j)A(j)=tendifnextnextA(1)A(2)A(N-1)A(N)9006Visual FoxPro程序设计基础6.4 数组的应用数组的

48、应用例子:排序例子:排序(6)*输出排序后的结果输出排序后的结果(每行输出每行输出4个数据个数据)for i=1 to n if mod(i-1,4)=0?endif?A(i),”nextreturn9106Visual FoxPro程序设计基础6.4 数组的应用数组的应用 总结总结n数组赋值qStore to 数组列表|数组元素列表q数组名|数组元素=n数据表中记录数据与数组之间的传送qScatter fields to MEMOqGather from fields MEMOn针对数组的系统函数qAINS 在数组中增加元素qADEL在数组中删除元素qASORT给数组排序qACOPY复制数组

49、9206Visual FoxPro程序设计基础习题n以循环方式输出以循环方式输出1 1到到1010的数字的数字n求求0 0100100之间奇数之和之间奇数之和n统计学生表中少数民族学生人数统计学生表中少数民族学生人数n学生表中,成绩在学生表中,成绩在560560分以下的加分以下的加2020分分9306Visual FoxPro程序设计基础习题n假定对齐的列为屏幕上的第20列,行不做要求,编写程序输出下列二种图形#第第2020列列第第2020列列9406Visual FoxPro程序设计基础休息一下!Next section:程序的模块化设计方法程序的模块化设计方法9506Visual FoxP

50、ro程序设计基础6.5 程序的模块化设计方法程序的模块化设计方法(1)n了解程序的模块化设计方法了解程序的模块化设计方法n了解子程序、过程和用户自定义函数了解子程序、过程和用户自定义函数n了解全局变量和局部变量的区别了解全局变量和局部变量的区别9606Visual FoxPro程序设计基础程序的模块化设计方法n一个实际的应用系统往往比较复杂,按其功能组成可划分为若干模块n相应的软件系统由许多程序文件(子程序子程序,过过程文件程文件)所组成。每一个功能模块一般即是一个相对独立的程序文件或过程文件。n模块间从上到下逐级调用,然后从下到上逐级返回,相应地,程序也从上到下逐级调用,然后从下到上逐级返回

51、。9706Visual FoxPro程序设计基础应用系统功能划分应用系统功能划分教学管理信息系统信息添加信息修改信息查询教学管理数据库学生班级课程成绩学生班级课程成绩主模块子模块1子模块2子模块3子模块11子模块21子模块12子模块22.程序的模块化设计9806Visual FoxPro程序设计基础模块化程序设计示例模块化程序设计示例n求11000之内的素数之和主程序主程序sum.prgClearSet talk offFlag=.F.&定义局部变量定义局部变量Sum=0.0&定义局部变量定义局部变量For k=1 to 1000 step 1 do check with k if Flag=

52、.T.sum=sum+kFlag=.F.?k,endifEndfor?“sum=”,sum*判断一个给定的整数是否素数的程序判断一个给定的整数是否素数的程序*参数参数xParameter xxx=int(sqrt(x)For i=2 to xx step 1 if(mod(x,i)=0)exit endifEndforIf(ixx)Flag=.T.&注意这里的变量注意这里的变量FlagEndifreturn子程序子程序check.prg9906Visual FoxPro程序设计基础主程序与子程序n通常,被调用的程序称为通常,被调用的程序称为子程序子程序,调用程序的,调用程序的程序称为程序称为主

53、程序主程序,或者说,当两个程序之间存,或者说,当两个程序之间存在调用关系,被调用者称为子程序,调用者称在调用关系,被调用者称为子程序,调用者称为主程序。为主程序。n主程序与子程序的概念是相对的主程序与子程序的概念是相对的,当子程序又,当子程序又调用下一级子程序时,则此子程序相对于下一调用下一级子程序时,则此子程序相对于下一级子程序便是主程序了,而对于调用它的主程级子程序便是主程序了,而对于调用它的主程序而言,它仍然是子程序。因此,序而言,它仍然是子程序。因此,“主主”和和“子子”要看相对于要看相对于“谁谁”而言。而言。10006Visual FoxPro程序设计基础6.5 程序的模块化方法程序

54、的模块化方法(2)n对于一个用对于一个用FoxPro开发的应用系统,通常只有一个主程序,开发的应用系统,通常只有一个主程序,其余均为分级调用的子程序。其余均为分级调用的子程序。n在在FoxPro中,中,子程序与主程序一样,均为程序文件子程序与主程序一样,均为程序文件(.PRG文件),都可由文件),都可由MODIFY COMMAND命令来建命令来建n子程序的最后一条语句通常为子程序的最后一条语句通常为RETURN,以便当子程序执,以便当子程序执行结束后能将控制转到调用它的上级程序处。命令格式:行结束后能将控制转到调用它的上级程序处。命令格式:RETURN|TO MASTER|TO 命令功能:命令

55、功能:中止一个子程序、过程或用户定义函数的执行,返回到上中止一个子程序、过程或用户定义函数的执行,返回到上一级调用程序一级调用程序(默认默认)、最高级调用程序、另外一个程序或者、最高级调用程序、另外一个程序或者命令窗口。命令窗口。10106Visual FoxPro程序设计基础6.5 程序的模块化方法程序的模块化方法(3)n子程序的调用子程序的调用n子程序调用命令与主程序执行命令相同,其格式子程序调用命令与主程序执行命令相同,其格式都为:都为:DO|WITH 其中,其中,WITH 子句指定传递到程序或过子句指定传递到程序或过程的参数,在程的参数,在中列出的参数可以是表达中列出的参数可以是表达式

56、、内存变量、常量、字段名或用户定义函数。式、内存变量、常量、字段名或用户定义函数。各参数用逗号分隔。各参数用逗号分隔。n可把参数放在圆括号中表示使用传值方式,否则使用地址可把参数放在圆括号中表示使用传值方式,否则使用地址引用方式。引用方式。10206Visual FoxPro程序设计基础子子 程序的嵌套程序的嵌套DO sub1DO sub2RETURNDO sub11DO sub21RETURNDO sub11RETURNRETURNRETURN TO MASTERmastersub1sub2sub11sub2110306Visual FoxPro程序设计基础过程(自学)n过程定义Proced

57、ure Parameters ReturnEndprocn过程可以保存在主程序中,也可以保存为独立的文件(称为过程文件)n调用Set procedure to ADDITIVERelease procedure,Do with 10406Visual FoxPro程序设计基础用户自定义函数(自学)n函数定义Function Parameters Return&必须返回一个值Endfuncn用户函数可以保存在主程序中,也可以保存为独立的程序文件n函数调用q(参数表)&圆括号不能省略q参考例6-2410506Visual FoxPro程序设计基础变量的存在范围(自学)n全局变量:q作用范围:作用于

58、任何命令或程序中q命令窗口中定义的变量为全局变量q程序中必须用public声明全局变量:nPulibc 变量名列表n局部变量:q作用于定义/声明它的程序中 以及q作用于定义/声明程序所调用的任何一级子程序中q程序中未用public声明的全部为局部变量n变量屏蔽:本地声明的局部变量将自动屏蔽同名的全局变量或上级程序中的同名变量10606Visual FoxPro程序设计基础第6章 小结n了解程序设计一般步骤n了解算法的概念和一般特征n掌握VF程序文件的操作命令和操作方法n了解VF程序的调试方法n掌握分支选择结构的程序设计方法和命令语句q二重分支 ifelseendifq多重分支 do casec

59、aseotherwiseendcase n掌握循环结构的程序设计方法和命令语句qDo while loopexit enddoqfor loopexit endfor/nextqscan loopexit endscann了解模块化程序设计方法10706Visual FoxPro程序设计基础习题课n写出以下程序的运行结果写出以下程序的运行结果set talk offi=1do while i=3j=5do while j=7?i,jj=j+1enddoi=i+1Enddon将上面这个程序改为将上面这个程序改为for循环实现循环实现10806Visual FoxPro程序设计基础习题课n编一个程

60、序,将华氏温度编一个程序,将华氏温度F F度变换成摄氏温度度变换成摄氏温度C C,并将结果显示出来,并将结果显示出来q计算公式为:计算公式为:C=5(F-32)9C=5(F-32)910906Visual FoxPro程序设计基础习题课n求出学生表中年龄最大和年龄最小的学生记录n求S=1!+2!+3!+5!的值。nS=2+4+6+100nY=1+1/2+1/3+1/30nS=1+(1+2)+(1+2+3)+(1+2+3+4+100)11006Visual FoxPro程序设计基础习题课n编一个程序计算应收学费,输入学号I及学分U,输出学号及应缴学费T。q学分在12分以下的收费4000元,若超过12学分,则超过部分每学分加收200元,也即学费应收4000 如果U124000+200(U-12)如果U1211106Visual FoxPro程序设计基础习题课n假定对齐的列为屏幕上的第20列,行不做要求,编写程序输出下列二种图形#第第2020列列第第2020列列11206Visual FoxPro程序设计基础

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!