




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 程序设计基础程序设计基础7.1程序与程序文件程序与程序文件l交互式的作用:熟悉命令;临时获取某些结果。交互式的作用:熟悉命令;临时获取某些结果。l交互式不便之处:交互式不便之处:在命令窗口逐条输入命令并执行,即使再次获得相同在命令窗口逐条输入命令并执行,即使再次获得相同结果,也必须重复输入相同命令。结果,也必须重复输入相同命令。VFP系统关闭后,再次启动系统时,命令窗口的内容系统关闭后,再次启动系统时,命令窗口的内容空白,须从头输入命令。空白,须从头输入命令。无法完成更复杂的任务。无法完成更复杂的任务。l此时,程序方式就是必然的选择。此时,程序方式就是必然的选择。 7.1.1程序的
2、概念程序的概念l程序是能够完成一定任务的命令的有序集合。程序是能够完成一定任务的命令的有序集合。l这组命令被存放在称为程序文件的文本文件中。这组命令被存放在称为程序文件的文本文件中。l当运行程序时,系统会按照一定的顺序自动执行当运行程序时,系统会按照一定的顺序自动执行包含在程序文件中的命令。包含在程序文件中的命令。l程序方式是指首先根据任务的要求确定能完成任程序方式是指首先根据任务的要求确定能完成任务的命令序列:然后在磁盘上建立包含程序代码务的命令序列:然后在磁盘上建立包含程序代码的程序文件;最后通过运行程序,让系统自动执的程序文件;最后通过运行程序,让系统自动执行程序代码。行程序代码。 程序
3、方式的优点程序方式的优点l程序可以被修改并重新运行。程序可以被修改并重新运行。l可以用多种方式、多次运行程序。可以用多种方式、多次运行程序。l在一个程序中可以调用另一个程序。在一个程序中可以调用另一个程序。l具有在命令窗口中无法使用的结构化程序设计命具有在命令窗口中无法使用的结构化程序设计命令。令。 例例l编写程序,计算圆的周长和面积编写程序,计算圆的周长和面积clear r=3 l=2*pi()*rs=pi()*r2?周长周长=,l?面积面积=,sreturn7.1.2程序文件的建立与运行程序文件的建立与运行1.程序文件的创建程序文件的创建通过项目管理器通过项目管理器通过通过“文件文件”菜单
4、栏菜单栏通过命令窗口:通过命令窗口:modify command2.修改程序修改程序通过项目管理器通过项目管理器通过通过“文件文件”菜单栏菜单栏通过命令窗口:通过命令窗口:modify command 3.运行程序运行程序l菜单方式:菜单方式:“程序程序”运行运行”l命令方式:命令方式:do l通过项目管理器通过项目管理器3.运行程序运行程序l当程序文件被执行时,文件中包含的命令将依次执行,当程序文件被执行时,文件中包含的命令将依次执行,知道所有的命令执行完毕,或者执行到以下命令。知道所有的命令执行完毕,或者执行到以下命令。CANCAL :终止程序运行,清除所有的私有变量,:终止程序运行,清除
5、所有的私有变量,返回命令窗口。返回命令窗口。DO :转去执行另一个程序。:转去执行另一个程序。RETURN :结束当前程序的执行,返回到调用它的:结束当前程序的执行,返回到调用它的上级程序,如果没有上级程序则返回到命令窗口。上级程序,如果没有上级程序则返回到命令窗口。QUIT :退出:退出Visual FoxPro 系统,返回到操作系统。系统,返回到操作系统。 提示提示 lVFP程序文件通过编译、连编,可以产生不同的目标程序文件通过编译、连编,可以产生不同的目标代码文件,这些文件具有不同的扩展名。当用代码文件,这些文件具有不同的扩展名。当用DO命命令执行程序文件时,如果没有指定文件扩展名,系统
6、令执行程序文件时,如果没有指定文件扩展名,系统将按下列顺序寻找该程序文件的源代码或某种目标代将按下列顺序寻找该程序文件的源代码或某种目标代码文件执行:码文件执行:.exe(可执行文件可执行文件).app(应用程序文件应用程序文件) .fxp(编译文件编译文件).prg(源程序文件源程序文件)l如果用如果用DO命令执行查询文件、菜单文件,那么文件命令执行查询文件、菜单文件,那么文件名中必须要包括扩展名名中必须要包括扩展名(.qpr、.mpr)。l如果找到的是如果找到的是.prg 源程序文件,系统会自动对它进行源程序文件,系统会自动对它进行编译,生成相应的编译,生成相应的.fxp 文件,随后系统就
7、载入新生成文件,随后系统就载入新生成的的.fxp 文件,并运行它。文件,并运行它。 7.1.3简单的输入输出命令l一个程序一般都包含数据输入、数据处理和数一个程序一般都包含数据输入、数据处理和数据输出据输出3 个部分。下面介绍的输入和输出命令,个部分。下面介绍的输入和输出命令,在练习编写小程序时非常有用。在练习编写小程序时非常有用。1. INPUT 命令命令 l命令格式:命令格式:INPUT 字符表达式字符表达式TO内存变量内存变量l当程序执行到该命令时,程序暂停,等待用户当程序执行到该命令时,程序暂停,等待用户从键盘输入数据,用户可以输入任意合法的表从键盘输入数据,用户可以输入任意合法的表达
8、式。当用户以【达式。当用户以【 Enter】 键结束输入时,键结束输入时,系统计算表达式的值并将表达式的值存入指定系统计算表达式的值并将表达式的值存入指定的内存变量,程序继续向下运行。的内存变量,程序继续向下运行。 1. INPUT 命令(功能注释)命令(功能注释)输入的数据可以是常量、变量也可以是一输入的数据可以是常量、变量也可以是一般的表达式,但不能不输入任何内容直接按般的表达式,但不能不输入任何内容直接按【 Enter 】 键。键。输入的格式必须符合相应的语法要求,如输输入的格式必须符合相应的语法要求,如输入字符时必须加界定符,输入逻辑型常量时入字符时必须加界定符,输入逻辑型常量时要加圆
9、点定界,如要加圆点定界,如.T. ,输入日期型常量要用,输入日期型常量要用大括号,如大括号,如2006 -11 -17 。例例1l编写程序编写程序sample1.prg,查找指定日期以后出生的学生。查找指定日期以后出生的学生。open database jxkuse xsb in 0clearinput 请输入出生日期请输入出生日期 to dbirthdaysele xh,xm,csrq from xsb where csrqdbirthdayclose databasereturn2 . ACCEPT 命令命令 l命令格式:命令格式:ACCEPT 字符表达式字符表达式TO内存变量内存变量当程
10、序执行到该命令时,程序暂停,等待用户当程序执行到该命令时,程序暂停,等待用户从键盘输入字符串从键盘输入字符串.当用户以回车键结束输入当用户以回车键结束输入时,系统将该字符串存入指定的内存变量,程时,系统将该字符串存入指定的内存变量,程序继续向下运行。序继续向下运行。2 . ACCEPT 命令(功能注释)命令(功能注释)l该命令只能接受字符串。在输入字符串时不需该命令只能接受字符串。在输入字符串时不需要加定界符,否则系统会把定界符作为字符串要加定界符,否则系统会把定界符作为字符串本身的一部分。本身的一部分。l可以不输入任何内容而直接按回车键,但系统可以不输入任何内容而直接按回车键,但系统会把空串
11、赋给指定的内存变量会把空串赋给指定的内存变量 。例例2l利用订单管理数据库编写程序文件利用订单管理数据库编写程序文件sample2.prg 。程序功能:。程序功能:由用户输入待查询职工的职工号,然后显示该职工的信息。由用户输入待查询职工的职工号,然后显示该职工的信息。close database allopen database dduse zg in 0clearaccept 请输入职工号请输入职工号: to bhlocate for 职工号职工号=bh?职工号:职工号:+职工号职工号?仓库号:仓库号:+仓库号仓库号?工资:工资:+str(工资工资)close databasereturn3
12、 . WAIT 命令命令 l命令格式:命令格式:WAIT TO WINDOW AT , NOWAIT CLEARNOCLEAR TIMEOUT l上述命令显示该字符表达式的值,以作为提示上述命令显示该字符表达式的值,以作为提示信息,程序暂停,直到用户按任意键或单击鼠信息,程序暂停,直到用户按任意键或单击鼠标时,程序继续执行。标时,程序继续执行。 3 . WAIT 命令(功能注释)命令(功能注释)l 指定要显示的自定义信息。如果没有指定指定要显示的自定义信息。如果没有指定 ,则显示默认提示信息,则显示默认提示信息“按任意键继续按任意键继续”。l用来保存用户键入的字符,其类型为字符型。用来保存用户
13、键入的字符,其类型为字符型。lWINDOW 在在VisualFoxPro主窗口右上角的系统信息窗口中,显主窗口右上角的系统信息窗口中,显示信息。示信息。l AT、 指定信息窗口在屏幕上的位置。指定信息窗口在屏幕上的位置。lNOWAIT 在显示信息后,立即继续执行程序。在显示信息后,立即继续执行程序。l CLEARNOCLEAR,关闭或不关闭提示窗口。关闭或不关闭提示窗口。lTIMEOUT 用来设置等待时间(秒数),一旦超用来设置等待时间(秒数),一旦超时就不再等待用户按键,自动往下执行。时就不再等待用户按键,自动往下执行。例例3lWAIT命令使用示例。命令使用示例。lWAIT 输入无效,请重新
14、输入输入无效,请重新输入 WINDOW TIMEOUT 54. RETURN命令格式:格式: RETURN 功能:返回系统调用本程序的位置,表示本程功能:返回系统调用本程序的位置,表示本程序结束。一般在程序结尾用,有时中间也可序结束。一般在程序结尾用,有时中间也可以用,即中途返回。以用,即中途返回。RETURN命令一般允许命令一般允许缺省。缺省。7.1.3程序设计的格式规范1. 注释命令格式格式1: note 格式格式2:* 功能:以功能:以 note 和和* 打头的该命令是程序的说明性语句,打头的该命令是程序的说明性语句,不执行。此命令增加程序的可读性。不执行。此命令增加程序的可读性。格式:
15、格式: &注释内容注释内容功能:一般用来说明前面可执行语句的功能,功能:一般用来说明前面可执行语句的功能,& 后面后面不执行。不执行。7.1.3程序设计的格式规范 许多数据处理命令在执行时都会返回一些有关的许多数据处理命令在执行时都会返回一些有关的执行状态信息,显示在执行状态信息,显示在VFP主窗口、状态栏或用户自主窗口、状态栏或用户自定义窗口里,但在程序设计时一般不希望这些信息不定义窗口里,但在程序设计时一般不希望这些信息不受控制的显示。受控制的显示。2. 允许或不允许系统自动显示提示信息格式:格式:set talk on|off功能:功能:on 允许,允许, off 不允许
16、。一般在程序开始用:不允许。一般在程序开始用:set talk off,在程序结束用:,在程序结束用:set talk on。系统默认为。系统默认为on 状态。状态。7.1.3程序设计的格式规范3.命令分行命令分行 在在VFP程序中每条命令都以回车键结尾,程序中每条命令都以回车键结尾,一行只能写一条命令。若命令太长需要分行书一行只能写一条命令。若命令太长需要分行书写,应在一行终了时键入续行符写,应在一行终了时键入续行符“;”,再按回再按回车键。车键。7.1.3程序设计的格式规范4.程序书写规范程序书写规范 在在VFP程序中,命令行的书写形式采用梯程序中,命令行的书写形式采用梯形的格式,以表明命
17、令语句键的关系,增强程形的格式,以表明命令语句键的关系,增强程序的可读性。序的可读性。repl all csn with go topdo while not eof() for i=1 to 4 repl csn with csn-zh_csn(subs(csrq,i,1) endf repl csy with zh_csy(subs(csrq,5,2) skip endd7.1.4 程序中命名的约定程序中命名的约定l无论是变量、常量还是数组,都有其名字。在程无论是变量、常量还是数组,都有其名字。在程序设计中,这些名字一般都要求具有一定的含义。序设计中,这些名字一般都要求具有一定的含义。l通
18、常在通常在VFP中名字的命名包含三部分:作用域、中名字的命名包含三部分:作用域、数据类型和具有一定含义的名字。数据类型和具有一定含义的名字。典型的命名方式典型的命名方式格式:格式:scope type name参数:参数:Scope:可选,是标明变量引用范围的一个约定。可选,是标明变量引用范围的一个约定。Type:是标明变量数据类型的一个约定。:是标明变量数据类型的一个约定。前缀不是必须的,但作为一种良好的编程习惯值得推荐。前缀不是必须的,但作为一种良好的编程习惯值得推荐。范围范围说明说明示例示例IPGt局部局部私有(默认值)私有(默认值)公共(全局)公共(全局)参数参数incounterPn
19、statusGnoldrecnotnrecno7.2 程序的基本结构程序的基本结构l程序结构是指程序中命令或语句执行的流程结构。程序结构是指程序中命令或语句执行的流程结构。l三种基本结构:顺序结构、选择结构、循环结构。三种基本结构:顺序结构、选择结构、循环结构。7.2.1 顺序结构顺序结构l顺序结构是最简单的程序结构,它按命令在程顺序结构是最简单的程序结构,它按命令在程序中的出现的先后次序依次执行。序中的出现的先后次序依次执行。l在现实中,绝大多数问题仅用顺序结构是无法在现实中,绝大多数问题仅用顺序结构是无法解决的,更需要根据实际情况来控制程序的流解决的,更需要根据实际情况来控制程序的流程,这
20、就要用到选择结构和循环结构。程,这就要用到选择结构和循环结构。7.2.1 选择结构选择结构l支持选择结构的语句包括条件语句和分支语句。支持选择结构的语句包括条件语句和分支语句。1.条件语句条件语句IF ELSE ENDIF注:注:ELSE 部分是可选的。部分是可选的。 7.2.1 选择结构选择结构lIF 和和ENDIF 必须成对出现,必须成对出现,IF 是本结构的入是本结构的入口,口,ENDIF 是本结构的出口。是本结构的出口。l 条件语句可以嵌套,但不能出现交叉。在嵌条件语句可以嵌套,但不能出现交叉。在嵌套时,为了使程序清晰、易于阅读,建议按缩套时,为了使程序清晰、易于阅读,建议按缩进格式书
21、写,即梯形结构。进格式书写,即梯形结构。例例4l假设在假设在jxk数据库中有数据库中有xsb 表、表、cjb 表和表和kcb 表,编写程序,输入学生学号显示该学生的成表,编写程序,输入学生学号显示该学生的成绩,若找不到该学生的学号,显示无该学生成绩,若找不到该学生的学号,显示无该学生成绩。绩。例例4解:解:set talk offclose databaseclearopen data jxkuse cjb in 0acce 请输入学生学号请输入学生学号 to xshlocat for xh=xshif found() ?成绩成绩+str(cj)else ?无该学生成绩无该学生成绩endifu
22、seset talk on例例5l分析成绩表分析成绩表cjb.dbf 中某个学生某门课的成绩中某个学生某门课的成绩等级。等级。 l详见详见sample5.prgllF 语句中,语句中,ELSE 总是与前面的、距离自己最总是与前面的、距离自己最近的近的IF 配对。配对。2.分支语句分支语句说明说明l不管有几个不管有几个CASE 条件成立,只有最先成立的条件成立,只有最先成立的那个那个CASE 条件对应的命令序列被执行。条件对应的命令序列被执行。l 如果所有如果所有CASE 条件都不成立,且没有条件都不成立,且没有OTHERWISE 子句,则直接跳出本结构。子句,则直接跳出本结构。l DO CAS
23、E 和和ENDCASE 必须成对出现,必须成对出现,DO CASE 是本结构的入口,是本结构的入口,ENDCASE 是本结是本结构的出口。构的出口。 例例6l用分支结构实现例用分支结构实现例5的程序。(分析成绩表的程序。(分析成绩表cjb.dbf 中某个学生某门课的成绩等级。)中某个学生某门课的成绩等级。) l详见详见sample6.prg习题习题解:解:7.2.2 循环结构循环结构 l循环结构也称为重复结构,是指程序在执行的循环结构也称为重复结构,是指程序在执行的过程中,其中的某段代码被重复执行若干次。过程中,其中的某段代码被重复执行若干次。被重复执行的代码段,通常称之为循环体。被重复执行的
24、代码段,通常称之为循环体。lVisual FoxPro 支持循环结构的语句包括:支持循环结构的语句包括:DO WHILE ENDDO 、FORENDFOR 和和SCAN ENDSCAN 语句。语句。 1 . DO WHILE ENDDO 语句语句 语句格式:语句格式:DO WHILE LOOPEXITENDDOl执行该语句时,先判断执行该语句时,先判断DO WHILE 处的循环处的循环条件是否成立,如果循环条件为真,则执行条件是否成立,如果循环条件为真,则执行DOWHILE 与与ENDDO 之间的命令序列(循环之间的命令序列(循环体)。当执行到体)。当执行到ENDDO 时,返回到时,返回到DO
25、 WHILE ,再次判断循环条件是否为真,以确,再次判断循环条件是否为真,以确定是否再次执行循环体。若循环条件为假,则定是否再次执行循环体。若循环条件为假,则结束该循环语句,执行结束该循环语句,执行ENDDO 后面的语句。后面的语句。 说明说明 如果第一次判断条件时结果为假,则循环体一次都不如果第一次判断条件时结果为假,则循环体一次都不执行。执行。 如果循环体包含如果循环体包含LOOP 命令,那么当遇到命令,那么当遇到LOOP 时,时,就结束循环体的本次执行,不再执行其后面的语句,就结束循环体的本次执行,不再执行其后面的语句,并转回并转回DO WHILE 处重新判断循环条件。处重新判断循环条件
26、。 如果循环体包含如果循环体包含EXIT 命令,那么当遇到命令,那么当遇到EXIT 时,就时,就结束该循环语句的执行,转去执行结束该循环语句的执行,转去执行ENDDO 后面的语后面的语句。句。 通常通常LOOP 或或EXIT 出现在循环体内嵌套的选择语句出现在循环体内嵌套的选择语句中,根据条件来决定是中,根据条件来决定是LOOP 回去,还是回去,还是EXIT 出去。出去。 流程图流程图例例7l根据根据cjb表中每人每课的成绩,按照成绩等级表中每人每课的成绩,按照成绩等级标准统计各等级的人次数。成绩等级标准为标准统计各等级的人次数。成绩等级标准为90 分及以上是优秀,分及以上是优秀,8089 分
27、是良好,分是良好,7079 分是中等,分是中等,6069 分是及格,分是及格,60 分以下分以下是不及格。是不及格。 l详见详见sample7.prg例例8编写程序,求编写程序,求2+4+6+100的和的和 (sample8.prg)clearset talk offs=0i=2do while i=100 s=s+i i=i+2enddo?s=,sset talk onreturn习题习题例例9l编写程序编写程序sample10.prg:查询查询xsb.dbf,逐条输逐条输出出1982年出生的学生记录。年出生的学生记录。l换一种方法呢?编写程序换一种方法呢?编写程序sample11.prg
28、注意使用索引与不使用索引的表记录在注意使用索引与不使用索引的表记录在排序上的区别,以及排序上的区别,以及LOCATE 和和SEEK 命令命令的差异。的差异。 2 . FORENDFOR 语句语句 l该语句通常用于实现循环次数已知情况下的循该语句通常用于实现循环次数已知情况下的循环结构。环结构。语句格式:语句格式:l执行该语句时,首先将初值赋给循环变量,然执行该语句时,首先将初值赋给循环变量,然后判断循环条件是否成立。若步长为正值,循后判断循环条件是否成立。若步长为正值,循环条件为环条件为 = ;若步长为负;若步长为负值,循环条件为值,循环条件为 = 。若。若循环条件成立,则执行循环体,然后循环
29、变量循环条件成立,则执行循环体,然后循环变量增加一个步长值,并再次判断循环条件是否成增加一个步长值,并再次判断循环条件是否成立,以确定是否再次执行循环体;若循环条件立,以确定是否再次执行循环体;若循环条件不成立,则结束该循环语句,执行不成立,则结束该循环语句,执行ENDFOR 后面的语句。后面的语句。 说明说明l默认值是默认值是1。l,都可以是数值表达式。都可以是数值表达式。l可以在循环体内改变循环变量的值,但这会影可以在循环体内改变循环变量的值,但这会影响循环体的执行次数。响循环体的执行次数。 lEXIT 和和LOOP 命令同样可以出现在该循环语命令同样可以出现在该循环语句的循环体内。当执行
30、到句的循环体内。当执行到LOOP 命令时,结命令时,结束循环体的本次执行,然后循环变量增加一个束循环体的本次执行,然后循环变量增加一个步长值,并再次判断循环条件是否成立。步长值,并再次判断循环条件是否成立。 流程图流程图例例10lFORENDFOR 语句编写程序,求语句编写程序,求1+2+100的和。的和。(详见(详见sample12.prg)clearset talk offs=0for i=1 to 100 s=s+iendfor?s=,sset talk onreturn3.SCANENDSCAN 语句语句 l该循环语句一般用于处理表中记录。语句可指明需处理该循环语句一般用于处理表中记录。语句可指明需处理的记录范围及应满足的条件。的记录范围及应满足的条件。语句格式:语句格式:l执行该语句时,记录指针自动、依次地在当前表指定范执行该语句时,记录指针自动、依次地在当前表指定范围内满足条件的记录上移动,并对每一条记录执行循环围内满足条件的记录上移动,并对每一条记录执行循环体内的命令,直至记录指针移动到最后一条记录为止。体内的命令,直至记录指针移动到最后一条记录为止。 流程图流程图例例11l 用用SCANENDSCAN 循环结构实现例循环结构实现例7中的中的统计成绩的等级人次数。统计成绩的等级人次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林市中石油2025秋招面试半结构化模拟题及答案安全环保与HSE岗
- 中国联通咸阳市2025秋招笔试行测题库及答案计算机类
- 中国移动揭阳市2025秋招写作案例分析万能模板直接套用
- 中国移动莆田市2025秋招企业文化50题速记
- 国家能源咸阳市2025秋招面试典型题目及答案
- 中国移动普洱市2025秋招网申填写模板含开放题范文
- 国家能源黄石市2025秋招笔试模拟题及答案
- 中国联通长沙市2025秋招笔试行测题库及答案计算机类
- 毕节市中石化2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 宿迁市中储粮2025秋招安全环保岗高频笔试题库含答案
- 智能化设计资源管理-洞察及研究
- AI时代网络安全产业人才发展报告(2025年)-安恒信息
- 供电服务技巧培训
- 2025浙江大学医学院附属儿童医院膳食部劳务派遣后勤工人招聘(莫干山院区)备考模拟试题及答案解析
- 2024-2025学年广东省广州市花都区黄广中学八年级上学期10月考数学试卷(含答案)
- 2025-2026人教版(2024)七年级上册英语教学计划 (三篇)
- 绿色化学全套课件
- 自然辩证法复习重点讲义
- GB/T 31722-2025网络安全技术信息安全风险管理指导
- 电气自动化专业求职面试题目及答案
- 肝功能实验室指标解读
评论
0/150
提交评论