第6章程序设计基础VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity本章要点VisualFoxPro的工作方式程序文件的建立与编辑程序的基本结构分支结构循环结构过程VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversityVisualFoxPro的工作方式VisualFoxPro系统提供有三种工作方式:即单命令方式、菜单方式及程序文件方式。1.单命令方式VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity2.菜单方式VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity3.程序文件方式程序文件(简称程序)也叫做命令文件。运用程序文件方式进行数据库管理,是通过程序文件编辑工具,将对数据库资源进行操作管理的命令和对系统环境进行设置的命令,集中在一个以(.PRG)为扩展名的命令文件中,然后再通过菜单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。程序:是多条命令按一定规则组织成的一个有机的序列VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity程序的概念有关此VisualFoxPro程序的几点说明:1.注释语句【格式1】NOTE注释内容【格式2】*注释内容【格式3】&&注释内容【功能】增强程序文件的易读性或放弃注释内容中语句的执行2.对话开关语句【格式】SETTALKOFF|ON【功能】关闭或打开命令执行时的对话开关3.命令的分行VisualFoxPro程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;可用续行符“;”,再按回车键。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity程序的概念1.注释语句•NOTE注释内容•*注释内容•&&注释内容注释整一行,NOTE后至少有一个空格可以注释在某条语句之后VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity2.对话开关语句【格式】SETTALKOFF|ONclear&&清屏settalkoff&&关闭对话显示opendatastudent&&打开数据库usesc&&打开SC表(学号,课程号,成绩)listsumtoarraya&&求和?总成绩:,a&&输出settalkon&&开启对话显示closedata3.命令的分行程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符;,再按回车键。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity程序文件的建立、修改与执行1.建立或修改程序文件•命令方式MODIFYCOMMAND[盘符][路径]〈程序文件名〉或MODIFYFILE[盘符][路径]〈程序文件名〉必须输入后缀名.PRG菜单方式打开文件菜单,选择新建;在新建窗口,选择程序,再选择新建文件VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity2.保存程序•程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在另存为对话框中指定程序文件的存放位置和文件名,并单击保存按钮保存程序文件并退出文本编辑器。•程序文件的默认扩展名是.PRG。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity3.执行程序(1)工具栏方式当准备运行的程序窗口为活动窗口时,单击运行图标(2)菜单方式【程序】|【运行】(3)命令方式【格式】DO[盘符][路径\]文件名VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity程序执行过程及结束条件•执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕•或者执行到以下命令:①CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口;②DO:调用执行另一个程序③RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;④QUIT:结束程序执行并退出VisualFoxPro系统,返回操作系统1.程序运行过程中,如何终止程序呢?2.碰到程序死循环了,如何终止程序呢?VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity简单的输入输出命令1.ACCEPT命令【格式】ACCEPT[提示信息]TO内存变量【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。该命令只接受字符型数据,输入的字符串不需要加定界符VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例6-2】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为PROG2.PRG。MODICOMMANDPROG2SETTALKOFFCLEARACCEPT请输入数据库名:TOAAAOPENDATABASE&AAAACCEPT请输入表名TOBBBUSE&BBBLISTUSESETTALKONRETURNVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例6-3】编写程序,在STUDENT数据库的STUD表中查找并显示任意一个学生的情况。OPENDATABASESTUDENTUSESTUDACCEPT请输入学生的姓名:TOXMLOCAFOR姓名=XM?学生+XM+的基本情况如下:?学号:+学号?姓别:+性别?班级名:+班级名?地址:+地址?出生日期:+DTOC(出生日期)CLOSEDATABASEVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity2.INPUT命令【格式】INPUT[提示信息]TO内存变量【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给内存变量。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例】写程序P3.PRG:从键盘输入两个任意整数,计算这两个数的和、差、积、商。CLEARINPUT请输入第一个数:TOAINPUT请输入第二个数:TOB?这两个数的和为:,A+B?这两个数的差为:,A-B?这两个数的积为:,A*B?这两个数的商为:,A/BVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例6-4】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为PROG4.PRGSETTALKOFFCLEARINPUT长方形一边的长为:TOAINPUT长方形另一边的长为:TOBS=A*B?长方形的面积为:,SSETTALKONRETURNVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity3.WAIT命令【格式】WAIT[提示信息][TO内存变量][WINDOW[AT行,列]][NOWAIT][CLEAR|NOCLEAR][TIMEOUT数值表达式]•【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。该命令将输入的单个字符若用户是按Enter键或单击鼠标,内存变量的值为空串。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例6-6】在STUDENT数据库的STUD表中显示任意一个系学生的情况。程序文件名为PROG6.PRGSETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDWAIT请输入待查学生的系号(1—3):TON;WINDOWSAT30,40TIMEOUT3IFVAL(N)1.OR.VAL(N)3WAIT输入无效,结束程序运行!WINDOWTIMEOUT5RETURNELSESTORE0+NTOAAALISTFOR系别代号=AAAENDIFCLOSEDATABASESETTALKONRETURNVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity4.三条输入命令的异同•ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;•WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;•INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity程序的基本结构1.顺序结构顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。VisualFoxPro系统中的大多数命令都可以作为顺序结构中的语句。2.分支结构分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity3.循环结构循环结构则能够使某些语句或程序段重复执行若干次。4.过程结构在许多应用程序中,有一些程序段需要反复执行多次,这些程序段不在一个固定的位置上,而是分散在程序的许多位置上重复执行,可将其与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity顺序结构CLEARCREATETABLE学生成绩(姓名C(8),课程号C(10),成绩N(3))INSERTINTO学生成绩VALUES(张三,计算机,90)INSERTINTO学生成绩VALUES(李四,英语,80)SELECT*FROM学生成绩1.编写程序文件P1.PRG,运行程序,观察结果。要求程序完成以下步骤:(1)用SQL语句中CREATETABLE创建一个学生成绩表,其中包括如下字段:姓名C(8)、课程名C(10)、成绩N(3)(2)用SQL语句中INSERTINTO添加如下数据张三计算机90李四英语80(3)用SELECT查询语句查询所有记录。VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity1.单向分支(1)语句格式:IF〈条件表达式〉〈语句序列〉ENDIF(2)语句功能:该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈语句序列〉;否则,执行ENDIF后面的第一条命令。6.2.2选择结构条件式达式真语句序列假ENDIF之后语句VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversityCLEARINPUT“A:”TOAINPUT“B:”TOBINPUT“C:”TOCZ=B^2-4*A*CIFZ=0X1=(-B+SQRT(Z))/(2*A)X2=(-B-SQRT(Z))/(2*A)?X1,X2ENDIF【例6-7】求一元二次方程AX2+BX+C=0的实根。2A4ACBB22,1XXVFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity2.(1)语句格式:IF〈条件表达式〉〈语句序列1〉ELSE〈语句序列2〉ENDIF(2)语句功能:该语句首先计算〈条件表达式〉的值,当〈条件表达式〉的值为真时,执行〈语句序列1〉中的命令;否则,执行〈语句序列2〉中的命令;执行完〈语句序列1〉或〈语句序列2〉后都将执行ENDIF后面的第一条命令。真条件式假语句序列2语句序列1ENDIF后面语句VFP:程序设计基础信息科学与工程学院宁波大学NingboUniversity【例6-10】编写一密码校验程序(假设密码为ABC)。程序文件名为PROG10.PRG。SETTALKOFFCLEARACCEPT“请输入您的密码:”TOAAAIFAAA=”ABC”CLEAR?”欢迎使用本系统!”ELSE?”密码错误!”WAITQUITEN