1、1,第八讲 程序设计基础(一),2,本 章 要 点,8.1 Visual FoxPro的工作方式 8.2 程序文件的建立与编辑 8.3 程序的基本结构 8.4 分支结构,3,8.1 Visual FoxPro的工作方式,Visual FoxPro系统提供有三种工作方式:即单命令方式、菜单方式及程序文件方式。1.单命令方式Visual FoxPro单命令方式是利用Command 窗口来实现的。用户通过Command 窗口输入命令,并执行操作。在Command 窗口中,可以输入单个的操作命令和系统命令,完成对数据库的操作管理和系统环境的设置;也可以建立命令文件及运行命令文件。Command 窗口不
2、仅是Visual FoxPro命令的执行窗口,也是Visual FoxPro命令文件的编辑窗口。所谓单命令方式,即输入一条命令,完成一个操作的工作方式。,要 点,4,2.菜单方式在Visual FoxPro 环境下,也可以通过系统提供的菜单选项,对数据库资源进行操作管理和对系统环境进行设置;并通过菜单建立命令文件及运行命令文件。所谓菜单方式,即通过打开不同的菜单选择并完成不同的操作。我们在以前各章所讲的内容其实都可说是菜单方式。 3.程序文件方式程序文件(简称程序)也叫做命令文件。运用程序文件方式进行数据库管理,是通过程序文件编辑工具,将对数据库资源进行操作管理的命令和对系统环境进行设置的命令
3、,集中在一个以(.PRG)为扩展名的命令文件中,然后再通过菜单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。,要 点,8.1 Visual FoxPro的工作方式,5,8.2.1 程序的概念 有关此Visual FoxPro程序的几点说明 : 1注释语句 【格式1】 NOTE 【格式2】 * 【格式3】 & 【功能】增强程序文件的易读性或放弃中语句的执行 2对话开关语句 【格式】SET TALK OFF|ON 【功能】关闭或打开命令执行时的对话开关 3命令的分行 Visual FoxPro程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条
4、命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。,8.2程序文件的建立与编辑,6,8.1.2程序文件的建立、修改与执行 1建立或修改程序文件可用两种方式调用系统内置的文本编辑器建立或修改程序文件 : 命令方式MODIFY COMMAND 程序文件名 或MODIFY FILE 程序文件名 菜单方式 打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再选择“新建文件”,要 点,8.2程序文件的建立与编辑,7,2保存程序程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按
5、钮保存程序文件并退出文本编辑器。程序文件的默认扩展名是.PRG。,8.2程序文件的建立与编辑,8,3执行程序 程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。 (1)菜单方式 单击【程序】|【运行】菜单项,打开“运行”对话框; 从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件 (2)命令方式 【格式】DO 【功能】执行指定、下的程序文件,8.2程序文件的建立与编辑,9,执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令: 1 CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口; 2 RETURN:结束程序执
6、行,返回调用它的上级程序,若无上级程序则返回命令窗口; 3 QUIT:结束程序执行并退出Visual FoxPro系统,返回操作系统,8.2程序文件的建立与编辑,10,8.2.3简单的输入输出命令 1ACCEPT命令 【格式】ACCEPT TO 【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。该命令只接受字符型数据,输入的字符串不需要加定界符,8.2程序文件的建立与编辑,11,【例8-1】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为PROG2.PRG。 MODI COMMAND PROG2 SET TALK OFF CLEAR ACC
7、EPT “请输入数据库名:” TO AAA OPEN DATABASE &AAA ACCEPT “请输入表名“ TO BBB USE &BBB LIST USE SET TALK ON RETURN,8.2程序文件的建立与编辑,12,2INPUT命令 【格式】INPUT TO 【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量 可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给。,8.2程序文件的建立与编辑,13,【例8-2】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序
8、文件名为PROG4.PRG SET TALK OFF CLEAR INPUT “长方形一边的长为:” TO A INPUT “长方形另一边的长为:” TO B S=A*B ? “长方形的面积为:” , S SET TALK ONRETURN,8.2程序文件的建立与编辑,14,3WAIT命令 【格式】WAIT TO WINDOW AT, NOWAIT CLEAR|NOCLEAR TIMEOUT 【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。若选择可选项TO ,将输入的单个字符作为字符型数据赋给指定的;若用户是按Enter键或单击鼠标,的值为空串。若省略所有可选项,
9、屏幕显示“键入任意键继续”默认提示信息,8.2程序文件的建立与编辑,15,4三条输入命令的异同 ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。,8.2程序文件的建立与编辑,16,8.3程序的基本结构,Visual FoxPro系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。Visual FoxP
10、ro系统的程序有两个特点:一是程序控制流模式,由顺序、分支、循环三种基本结构构成。二是面向对象可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。常见的控制结构如下: 1顺序结构顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。Visual FoxPro系统中的大多数命令都可以作为顺序结构中的语句。 2分支结构分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。,要 点,17,3循环结构循环结构则能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。 4过程结构在许
11、多应用程序中,有一些程序段需要反复执行多次,这些程序段不在一个固定的位置上,而是分散在程序的许多位置上重复执行,可将其与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。这样做增强了程序的可读性和模块化。我们称这种具有独立功能而且可以被其它程序调用的程序序列为过程。,要 点,8.3程序的基本结构,18,8.3.1分支结构 分支结构形式有如下三种: 1单向分支单向分支语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。(1)语句格式:IF条件表达式命令行序列 ENDIF(2)语句功能:该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序
12、列;否则,执行ENDIF后面的第一条命令。,要 点,8.3程序的基本结构,19,【例8-3】求一元二次方程AX2BXC0的实根。程序文件名为PROG7.PRG。 SET TALK OFF CLEAR INPUT TO A INPUT TO B INPUT TO C ZB2-4*A*C IF Z=0 X1=(-B+SQRT(Z)/(2*A) X2=(-B-SQRT(Z)/(2*A) ? X1,X2 ENDIF SET TALK ON RETURN,8.3程序的基本结构,20,2双向分支双向分支语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。(1)语句格式:IF条件表达式 命令行
13、序列1 ELSE 命令行序列2 ENDIF(2)语句功能:该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列1中的命令;否则,执行命令行序列2中的命令;执行完命令行序列1或命令行序列2后都将执行ENDIF后面的第一条命令。,要 点,8.3程序的基本结构,21,【例8-4】编写一密码校验程序(假设密码为ABC)。程序文件名为PROG10.PRG。 SET TALK OFF CLEAR ACCEPT “请输入您的密码:” TO AAA IF AAA=”ABC” CLEAR ? ”欢迎使用本系统!” ELSE ?”密码错误!” WAIT QUIT ENDIF SET TALK ON
14、,8.3程序的基本结构,22,3多向分支多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行 。 (1)语句格式:DO CASE CASE条件表达式1 命令行序列1 CASE条件表达式2 命令行序列2 CASE条件表达式N 命令行序列NOTHERWISE命令行序列N+1ENDCASE,要 点,8.3程序的基本结构,23,【例8-5】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为PROG12.PRG。0 P800 R= 0.05 800 P20000.08 2000P50000.1 P5000 SET TALK OFF CLEAR INPUT “请输入收入:
15、” TO P DO CASE CASE P800R=0 CASE P2000R=0.05,8.3程序的基本结构,24,CASE P5000R=0.08 OTHERWISER=0.1 ENDCASE TAX=P*R ? ”税金为:”,TAX SET TALK ON RETURN,8.3程序的基本结构,25,(2)语句功能:该语句根据给出的N个条件表达式的值,选择N+1个命令行序列中的一个执行。当所有CASE中条件表达式的值都是假时,如果有OTHERWISE项,则执行命令行序列N+1,再执行ENDCASE后面的第一条命令;否则,直接执行ENDCASE后面的第一条命令。,要 点,8.3程序的基本结构,26,4使用分支语句应注意的几点 IF ENDIF和DO CASE ENDCASE 必须配对使用,DO CASE与第一个CASE条件表达式之间不应有任何命令。 条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。 命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。 DO CASE ENDCASE 命令,每次最多只能执行一个命令行序列。在多个CASE项的条件表达式值为真时,只执行第一个条件表达式值为真的命令行序列,然后执行ENDCASE的后面的第一条命令。,要 点,8.3程序的基本结构,