第六章-Visual-FoxPro程序设计基础_第1页
第六章-Visual-FoxPro程序设计基础_第2页
第六章-Visual-FoxPro程序设计基础_第3页
第六章-Visual-FoxPro程序设计基础_第4页
第六章-Visual-FoxPro程序设计基础_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章VisualFoxPro程序设计基础1程序概念参见Wiki解释/wiki?title=%E7%A8%8B%E5%BA%8F&variant=zh-cn计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。参见Wiki解释/wiki?title=%E7%A8%8B%E5%BA%8F&variant=zh-cn计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。26.1VisualFoxPro程序的建立与执行VisualFoxPro中程序的基本组成程序文件的建立和编辑程序文件的编译和执行VisualFoxPro命令方式的输入输出语句36.1.1程序的基本组成(1)在VisualFoxPro中,程序文件又称为命令文件,它是由VisualFoxPro中的命令和一些程序控制语句所组成的,程序文件扩展名为.PRG。46.1.1程序的基本组成(2)程序的基本组成规则是:(1)程序由若干程序行组成。(2)每一程序行由一条语句或一条命令组成。(3)每一行都以“Enter”键结束。若一行写不完一条命令,可在该行末尾处加上续行符号“;”。(4)程序末尾通常可加上程序结束语句,如CANCEL、RETURN或QUIT等;也可不加,VisualFoxPro将在程序结束处自动添加程序结束语句。(5)在程序的开始或每一程序行的后面可加上注释语句对整个程序和某个程序行做一说明,以增加程序的可读性。56.1.1程序的基本组成(3)程序的编制过程为:程序的建立、程序的编译、程序的运行。66.1.2程序文件的建立和编辑建立和编辑有两种方式:命令和菜单1.命令方式命令格式:MODIFYCOMMAND[<程序文件名>|?]命令功能:启动文本编辑器。2.菜单方式详见课本6.1.2节76.1.3程序文件的编译和执行(1)1.编译编译是将源程序转换成目标程序。编译有命令和菜单两种方式。(1)命令方式命令格式:Compile<程序文件名>|?命令功能:对指定的程序文件进行编译。(2)菜单方式详见课本6.1.3节86.1.3程序文件的编译和执行(2)2.执行程序文件输入存盘或再经编译后,系统可自动连续执行文件中的每条命令或语句。程序文件的执行有命令和菜单两种方式。(1)命令方式命令格式:DO<程序文件名>|?功能:将程序文件从磁盘调入内存并执行。(2)菜单方式详见课本6.1.3节96.1.4命令方式的输入输出语句(1)1.注释符*/&&语句格式1:*[<注释>]语句格式2:&&[<注释>]功能:*或&&的功能是在程序中起注释作用,给程序注释的目的是使程序易于自己和别人理解,即有好的可读性。注释语句在VisualFoxPro中是非执行语句,即包含注释语句的程序,在执行时,VisualFoxPro将忽略这些注释语句,因为它们仅起注释作用。说明:*的功能是注释一整行,它通常放在最前面。&&的功能是放在语句后起注释作用。通常*用来对整个程序进行注释,即说明该程序的功能;&&用来对一条语句进行注释,即说明该语句的功能。106.1.4命令方式的输入输出语句(2)例6-2:注释示例程序,*程序名称为ex6-2.prg *我的第一个程序

clear &&清屏

settalkoff &&关闭回显

a=3 &&给a赋值为3 b=3^a &&求3的立方值

?a,b &&输出结果116.1.4命令方式的输入输出语句(3)2.交互式输入语句VisualFoxPro提供三种交互式输入语句。功能:系统执行上述命令时自动停下,等待用户从键盘输入信息到计算机内存变量中,系统接收到信息后自动往下继续执行。12

6.1.4命令方式的输入输出语句(4)2.交互式输入语句(1)INPUT语句格式1:INPUT[<提示信息>]TO<内存变量>在语句1中,可输入N、C、L和D型数据。输入C型数据时,要使用单引号或双引号作为定界符。输入L型数据时,.T.和.F.两边的小圆点不能省略。输入D型数据时,要用CtoD()函数或大括号“{}”将字符串转换成日期型变量。13

6.1.4命令方式的输入输出语句(5)2.交互式输入语句(2)ACCEPT语句格式2:ACCEPT[<提示信息>]TO<内存变量>语句2只能输入C型数据,输入数据时可不用定界符。14

6.1.4命令方式的输入输出语句(6)2.交互式输入语句(3)WAIT语句格式3:WAIT[<提示信息>][TO<内存变量>][TIMEOUT<等待时间>]语句3只能输入一个字符的C型数据,并可指定等待时间。若超过等待时间仍无输入,则系统自动将0作为输入值,使程序继续执行。语句3输入结束后可不按Enter键。156.1.4命令方式的输入输出语句(7)注意:INPUT命令和ACCEPT命令以及后面介绍的格式化输出命令在VisualFoxPro中很少使用。它们的功能是为兼容原来的FoxPro程序。WAIT命令是等待用户按任意键后程序继续运行。166.1.4命令方式的输入输出语句(8)例6-3:在“学生表”中,按姓名查找某学生的情况。程序编制如下:

*程序名为ex6-3.prg clear

xm='' &&为空串

setdefaultto"D:\我的数据库项目\数据库"&&设置默认的目录位置

use学生表

accept'请输入姓名:'toxm listfor姓名=xm wait'按任意键继续' clear ?'查询完毕' cancel176.1.4命令方式的输入输出语句(9)4.程序结束语句(1)CANCEL命令语法:CANCEL说明:停止当前VisualFoxPro程序的执行。当交互使用VisualFoxPro时,控制权返回命令窗口。若执行一个独立的发布应用程序,CANCEL终止该应用程序并将控制权返回Windows;若设计时在VisualFoxPro中执行一个程序,CANCEL终止该程序,并将控制权返回命令窗口。执行CANCEL将释放所有私有变量。186.1.4命令方式的输入输出语句(10)4.程序结束语句(2)RETURN命令将程序控制权返回给调用程序。语法:RETURN[<表达式>|TOMASTER|TO<过程名>](3)QUIT命令结束当前VisualFoxPro程序的运行,退出VisualFoxPro,返回到操作系统。注意:请始终使用QUIT命令来终止VisualFoxPro程序。如果打开了VisualFoxPro,没有发出QUIT命令而直接关闭了计算机,那么可能有数据丢失的危险。196.1.4命令方式的输入输出语句(11)4.程序结束语句(4)SUSPEND命令SUSPEND语句的功能是将正在运行的程序挂起,这使得程序进入到交互状态。此时我们可以使用?|??、DISPLAYMEMORY等命令查看内存变量的值。在程序挂起状态下,可以用命令CANCEL终止程序的运行。一般情况下,我们仅使用SUSPEND命令来调试程序。(5)RESUME命令当程序运行到SUSPEND语句被挂起后,程序进入交互状态,在查看完相关的变量值后,如果在命令窗口输入RESUME命令,可以使程序继续运行。206.1.4命令方式的输入输出语句(12)CLEAR命令CLEAR用来清屏。CLEAR的另一项功能是从内存中释放指定项。语法:CLEAR[ALL|WINDOWS]ALL表示从内存中释放所有的变量和数组以及所有用户自定义菜单栏、菜单和窗口的定义;CLOSEALL也能关闭所有表,包括所有相关的索引、格式和备注文件,并且选择工作区1。216.2结构化程序设计基础程序设计过程算法程序流程图及示例226.2.1程序设计过程程序设计即是计算机用户根据解决某一问题的步骤,按一定的逻辑关系,将一系列的指令组合在一起。23真否真否否真有无错误分析问题编写程序确定算法画流程图运行并调试程序错误修改程序录入错误修改算法结束246.2.2算法(1)程序的设计过程,核心问题是设计一个合理、有效的算法。一般认为,算法就是在有限的时间内,可以根据明确规定的运算规则,在有穷步骤内得出确切计算结果的机械步骤或能运行的计算程序。256.2.2算法(2)算法特性:(1)有限性,即解题步骤是有限的,无穷的步骤意味无解。(2)确定性,每一步骤的操作是确定的,这样可以保证后继操作的输入是可以确定的。(3)有序性,每一步骤都是可行的。此外,算法可以没有输入(因为输入由计算机自动产生),但一定要有输出,输出用来表示问题是否有解。266.2.2算法(3)三种基本控制结构:顺序、分支、循环顺序结构是程序设计中最基本的结构。在该结构中,程序的执行是按命令出现的先后顺序依次执行的。分支结构是按给定的选择条件成立与否来确定程序的走向。分支结构可分为双重分支选择和多重分支选择。在任何条件下,无论分支多少,只能选择其一。276.2.2算法(4)三种基本控制结构:顺序、分支、循环循环结构是一种重复结构,即某一程序段将被反复执行若干次。按循环的嵌套层次,循环可分为简单循环结构和循环嵌套(也称为多重循环)结构。按循环体执行的条件性质,循环又可分为While循环和Until循环。无论何种类型的循环结构,都要确保循环的重复执行能够终止。286.2.2算法(5)结构化程序是指仅由三种基本控制结构组成的程序,它具有以下特点:(1)整个程序模块化。(2)每个模块只有一个入口和一个出口。(3)每个模块都应能单独执行,且无死循环。(4)采用黑箱的思想,宏观地描述任何一个程序,可以将它看成为顺序结构。296.2.3程序流程图及示例ANSI流程图N-S图301.ANSI流程图(1)判断框箭头:表示程序流向连接符号:表示图标之间相互连接关系判断框:表示根据条件决定程序走向过程:表示该流程部分是一个过程输入/输出框:表示数据的输入、输出操作处理框:表示对数据进行处理起止框:表示程序的开始或结束311.ANSI流程图(2)顺序结构语句块1语句块2语句块3321.ANSI流程图(3)条件分支结构假真条件语句块1语句块233真假循环条件循环体1.ANSI流程图(4)循环结构假真循环条件循环体Until型循环结构While型循环结构341.ANSI流程图(5)多重条件分支结构真假假真假真条件1语句块1语句块条件2语句块2…真语句块n假条件n352.N-S图(1)顺序结构语句块1语句块2语句块3362.N-S图(2)条件分支结构

语句块1语句块2条件真假372.N-S图(3)多重分支选择语句CASE<条件>值1值2…值n其它语句块1语句块2…语句块n语句块382.N-S图(4)循环结构循环条件循环体循环体循环条件Until型循环结构While型循环结构396.3程序的控制语句结构顺序结构程序分支结构程序循环结构程序402.分支结构程序(1)双重分支选择语句语句格式:

IF<条件> <语句块1> [ELSE <语句块2>] ENDIF假真条件语句块1语句块2412.分支结构程序(2)

双重分支选择语句

语句块1语句块2条件真假语句格式:

IF<条件> <语句块1> [ELSE <语句块2>] ENDIF422.分支结构程序(3)多重分支选择语句DOCASE CASE<条件表达式1> <语句块1> CASE<条件表达式2> <语句块2> CASE<条件表达式n> <语句块n> OTHERWISE <语句块> ENDCASE

真假假真假真条件1语句块1语句块条件2语句块2…真语句块n假条件n432.分支结构程序(4)多重分支选择语句DOCASE CASE<条件表达式1> <语句块1> CASE<条件表达式2> <语句块2> CASE<条件表达式n> <语句块n> OTHERWISE <语句块> ENDCASE

CASE<条件>值1值2…值n其它语句块1语句块2…语句块n语句块442.分支结构程序(5)例6-8:从键盘随机输入成绩分数,根据成绩分数来判断该成绩属于优、良、中还是差。规定:90≤成绩≤100为优;80≤成绩<90为良;60≤成绩<80为中;成绩<60为差;其它为非法输入。使用多重分支结构,程序编制如下:452.分支结构程序(6)clearsettalkoffrate='' &&表示等级input'请输入成绩:'togradedocasecase90<=grade.and.grade<=100 ?str(grade,3)+‘的成绩为:’+‘优’&&缩格目的是增加可读性

case80<=grade.and.grade<90 ?str(grade,3)+'的成绩为:'+'良' case60<=grade.and.grade<80 ?str(grade,3)+'的成绩为:'+'中' case0<=grade.and.grade<60 ?str(grade,3)+'的成绩为:'+'差' otherwise ?'您输入的成绩不对!'endcasereturn463.循环结构程序(1)DOWHILE循环语句格式:

DOWHILE<条件表达式> <语句块> [LOOP] [EXIT] ENDDO循环条件循环体473.循环结构程序(2)循环语句的使用要注意下列几点:(1)DOWHILE和ENDDO子句要配对使用,ENDDO的作用是使循环回到循环的开始,即DOWHILE语句。(2)在第一次执行到DOWHILE语句时,循环条件必须为真,才能进入循环体。在执行完成循环体语句后,再判断循环条件是否为真,如果为真,则继续循环,直到循环条件为假时,才退出循环语句,执行ENDDO后面的语句。483.循环结构程序(3)循环语句的使用要注意下列几点:(3)循环体中,一定存在一条或若干条语句在改变循环条件。如果循环条件恒为真,则是死循环。(4)要小心改变循环条件,如果不适当的修改循环条件,则循环将不能按预先的设想进行,程序也达不到预期的效果。(5)为增加程序的可读性,使程序清晰易懂,必须使用缩格。(6)关于LOOP和EXIT语句使用参见本节后面的内容。493.循环结构程序(4)例6-11:求1加到10的累加和,即S=1+2+3+…+8+9+10settalkoffs=0 &&求累加和的变量i=1 &&循环变量赋初值dowhilei<=10 &&循环条件,使用缩格,提高可读性

?i &&此处输出变量i的值是方便理解循环的过程

s=s+i &&求累加,即循环不变式

??s &&输出s的结果,理解每次累加结果的变化

i=i+1 &&改变循环变量的值enddo?s &&循环体外输出结果503.循环结构程序(5)循环阅读理解循环条件是什么?什么时候进入循环?什么时候退出循环?循环体内如何改变循环条件?循环变量的作用?513.循环结构程序(6)在循环中处理循环不变式的一般结构循环前的预处理,如循环控制变量赋初值循环条件,初始必须为真循环不变式改变循环控制变量的值根据需要输出结果523.循环结构程序(7)在循环中处理记录一般结构打开数据表(默认指向第一条记录)记录指针指向第一条记录(可忽略)判记录指针没有到底(.NOT.EOF())根据给定的条件对当前记录进行处理记录指针下移(Skip)根据需要输出结果533.循环结构程序(8)循环结构中的LOOP命令LOOP真假条件语句块2假真循环条件语句块1DOWHILE<循环条件>

语句块1 IF<条件> LOOP ENDIF

语句块2ENDDO543.循环结构程序(9)循环结构中的EXIT命令EXIT真假条件语句块2假真循环条件语句块1DOWHILE<循环条件>

语句块1 IF<条件> EXIT ENDIF

语句块2ENDDO553.循环结构程序(10)FOR循环语句格式:FOR<循环变量>=<循环初值>TO<循环终值>

[STEP<步长>] <语句块> [LOOP] [EXIT]ENDFOR|NEXT563.循环结构程序(11)求运行结果fori=10to1step-2?"i=",inext?"i=",i例6-15:求N!,即求N的阶乘。573.循环结构程序(12)循环的嵌套循环体内又嵌套循环的情况称为多重循环或循环嵌套。处于循环体内的循环称为内循环,处于外层的循环称为外循环。内外循环的层次必须分明,不允许有交叉现象出现。内外循环的循环变量不要同名。在嵌套情况下,EXIT语句使控制跳到下方离其最近的ENDDO之后,而LOOP语句使控制跳到其上方离其最近的DO...WHILE语句中。58DOWHILEDOWHILELOOPEXITENDDOLOOPEXITENDDO3.循环结构程序(13)593.循环结构程序(14)例6-19:打印如图所示对称三角图形,要求第一行的*在第10列。****************例6-20:输入一个大于1的正整数,判断该数是否是素数。606.4数组的应用数组在使用之前,必须加以定义,然后才能使用该数组。数组定义或数组说明语句格式为:DIMENSION

<数组名1>(<数值表达式1>[,<数值表达式2>,...])

[,<数组名2>(<数值表达式1>[,<数值表达式2>,...])...]61例子dimensionA(N)dimensionB(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

温馨提示

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

评论

0/150

提交评论