2022年程序设计基础vf .pdf
《2022年程序设计基础vf .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计基础vf .pdf(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第1章Visual FoxPro 程序设计基础上一章介绍了在Visual FoxPro 项目管理器中建立数据库、数据库表和自由表的操作方法,也介绍了如何输入、修改、删除、浏览表中的记录。一般情况下,人们只是在设计软件阶段使用项目管理器来设计数据库和应用程序,最终用户要通过设计好的程序来操作和管理数据库。通过程序可以实现在项目管理器中能够进行的所有数据库操作。2.1 程序的基本概念在项目管理器的“代码”选项卡中包含“程序”、“API 库”和“应用程序”三个节点,其中程序节点包含的是所有程序文件名。选中“程序”节点后点击“新建”按钮即可打开程序编辑窗口,编辑完程序代码后关闭窗口并保存程序文件即可,
2、程序文件的扩展名是.prg。如果希望修改某一程序,在项目管理器中选中该程序,然后点击“修改”按钮即可打开程序编辑窗口。在程序编辑窗口中输入程序行,每行结束时按回车键。程序就是程序行序列。程序在执行时通常会按程序行的位置顺序依次执行。2.1.1 命令、语句、续行Visual FoxPro 程序的核心是程序行,程序行可以是一个语句或命令,语句一般只能在程序中使用,它能被Visual FoxPro 理解和执行,完成某一特定的操作。命令同样能被Visual FoxPro 理解和执行,它既可以在程序中使用,也可以在命令窗口中执行(输入完命令后按回车键开始执行命令,执行结果立即在主窗口中显示输出)。在 V
3、isual FoxPro 中还有一些预先设计好的程序模块,叫做函数(或称系统函数、标准函数),可以直接在语句和命令中使用函数。Visual FoxPro 命令可以分成两类,一类是 Visual FoxPro 所特有的命令,他们只能在 Visual FoxPro 中应用,另一类是关系数据库标准语言的命令,即SQL(Structure Query Language)命令,它是所有大型关系数据库管理系统都支持的命令。Visual FoxPro 应用程序可以通过SQL 命令访问Visual FoxPro 数据库或其他关系数据库。Visual FoxPro 程序是语句和命令的有限序列,它能完成某种特定的
4、功能。任一程序的程序行数都是有限的,其中的语句和命令当然也是有限的。程序中的程序行不是任意罗列在一起的,而是按照特定的功能要求依次排列的。程序总是为解决某种特定的问题而编制的,其功能是确定的。命令、语句以及函数都有明确的书写格式要求,即语法要求,在使用他们的时候,必须遵循其语法要求,否则语句或命令就不能正常执行。本教材按以下约定描述语句/命令语法:-大括号中列出若干选项,用户至少应选择其中的一个选项,输入时,不应把大括号输入进去。-方括号表示可选项目,同大括号一样,方括号不属于语句或命令本身的内容,输入时不应把方括号输入进去。-尖括号表示必须输入的语法项目,同大括号一样,输入时不应把尖括号输入
5、进去。()-圆括号是命令或函数的一部分,输入时应原样输入。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 33 页 -|-竖线用于分隔若干选项,用户只能选择其中的一个选项,同大括号一样,输入时不应把竖线输入进去。,-逗号用于分隔若干输入内容,逗号本身必须输入。,-省略号表示其前面的语法项目可重复多次。省略号本身不应输入。英文单词-命令或函数的定义字符,一般也叫关键字(Keyword),输入时必须原样输入(大小写不限)。汉字-描述性说明文字。在大括号中列出多个用竖线分隔的输入项时,用户必须选择其中之一;而在大括号中列出多个用逗号分隔的输入项时,用户至少应选择其中之一,选择多个时,各
6、选项用逗号分开。在方括号中只列出一个选项时,用户可以选择,也可不选择;在方括号中列出多个用竖线分隔的选项时,用户可以一个都不选、或只选择其中之一;在方括号中列出多个用逗号分隔的选项时,用户可以一个都不选、选择一个或多个,选择多个时,各选项要用逗号分开。Visual FoxPro 常用命令和常用函数的典型语法描述请参阅附录1和附录 2。Visual FoxPro命令及函数的关键字可以只取前4 个字符,例如,DISPLAY 命令可以只输入DISP。在输入命令时需要注意,在命令的关键字之间、关键字与选项之间都应留有至少一个空格符。无论是程序中的语句行还是在命令窗口中输入的命令行都是以回车换行结束的,
7、一般不能在多行输入。当语句或命令行较长时,编辑或阅读会比较困难,这时可以用续行标志把它分为多行。如果一行的末尾最后一个字符是分号(;),则表示该行没有结束,它与下一行是同一个语句(命令)行。在输入SQL 命令时一般应多行书写,这时在命令的最后一行之前的每一行末尾都应加上续行标志。由于有些SQL 命令的命令关键字与Visual FoxPro 命令相同,一般为表示区别,往往通过后缀 SQL 来表示该命令是SQL 命令。例如,INSERT SQL、CREATE SQL、SELECT SQL 等。2.1.2 内存变量、字段变量、常量、表达式在 Visual FoxPro 操作中需要表示一些运算量,这些
8、运算量包括常量和变量。Visual FoxPro 中的变量包括内存变量和字段变量两类。内存变量是由用户定义的、在其存在期间取值可以改变的运算量。在程序或命令窗口中可以引用已打开的表的字段名,其取值随着记录位置的改变而改变,因此叫做字段变量。相对的,取值确定、不能被改变的量就是常量。由常量、内存变量、函数等与运算符组成的有运算意义的式子叫做表达式。正如 Visual FoxPro 表的结构包含多种类型的字段一样,内存变量、常量、表达式也有确定的数据类型。1.内存变量及变量赋值在建立内存变量的时候,需要区分不同的内存变量,这是通过内存变量的名字实现的。内存变量名可以用字母、汉字或下划线开头,后接字
9、母(汉字、下划线)数字串表示。变量名字符总数不能超过254 个 ASC II 字符(ASC II 字符编码表参见附录3,一个汉字按2 个字符计算)。例如,_红旗,abc,abc12345,h1b2c3 等都是合法的内存变量名。变量名中的英文字母是不区分大小写的,实际建立内存变量时,其变量名字符均转换为大写。内存变量的值保存在特定的内存单元中,赋值语句用于给变量赋值,其语法格式如下:=STORE TO 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 33 页 -赋值语句首先计算表达式的值,然后把结果值赋给对应的变量,也就是把结果存储到变量的内存单元中。赋值语句中的“=”号是赋值号,
10、不应当作等号看待。在 Visual FoxPro 中,变量可以通过赋值语句建立,如果执行赋值语句时相应的赋值变量存在则修改该变量的值,否则自动建立该变量。不同变量的变量名不应相同,否则可能导致处理错误。需要特别注意的是,变量可以多次被赋值,在一次赋值之后、下一次赋值之前变量将一直保持最后一次的赋值结果。字段变量不能通过赋值语句赋值。2.常量常量依其数据类型的不同而不同。字符型常量是用英文单引号、双引号或方括号括起来的字符序列。例如,”abc”、abc、abc 表示的都是字符型常量,而abc”,?abc?,”abc 则不是字符型常量。字符型常量也叫做字符常量、字符串常量或字符串。用于表示字符串常
11、量的符号(单引号、双引号和方括号)也叫字符串定界符。如果一个字符串是另一个字符串的一部分,则称其为另一个字符串的子字符串,简称子串。例如aa、aba,aabaaa等都是字符串abaabaaa的子串。数值型常量可以是整数,小数或科学记数法表示的数。例如-100,123.56,1E20 等都是数值型常量,而a100,1h10,29b 等就不是数值型常量。数值型常量一般简称为数值常量或数值。逻辑型常量包括逻辑“真”和逻辑“假”,用.T.(或.t.,.Y.,.y.)表示逻辑“真”,用.F.(或.f.,.N.,.n.)表示逻辑“假”。日 期 型 常 量 用 于 表 示 一 个 确 定 的 日 期,形 如
12、 yyyy/mm/dd、yyyy-mm-dd、yyyy.mm.dd或yyyy mm dd,其中 yyyy 表示 4 位的年份数字,mm 表示 2 位的月份数字,dd 表示 2 位的日数字。例如,2008/01/19、1987-2-5、2001/12/30 等都是合法的日期常量。3.表达式及表达式输出在 Visual FoxPro 中经常使用的表达式有算术表达式、字符串表达式、关系表达式和逻辑表达式。有时需要在主窗口上输出表达式的内容。如果希望输出内容从新的一行开始输出,可以用换行输出命令,其语法格式为:?表达式列表中可以包含一个或多个表达式,相互间用逗号分隔。省略表达式列表时只产生换行动作,有
13、表达式列表时,将首先换行,然后在新行上依次输出每一个表达式的值。如果希望在当前行继续输出,则可以用?命令实现,其语法格式为:?省略表达式列表时不产生任何动作,有表达式列表时,将在当前行输出位置依次输出每一个表达式的值。4.算术表达式算术表达式是由算术运算符连接数值型运算量(常量、变量、函数)所形成的符合语法要求的式子,其运算结果是一个数值。算术运算符及其举例说明如表2-1 所示(假定内存变量 aa的值是 10)。表 2-1 算术运算符运算符运算功能举例结果值说明名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 33 页 -*或 乘方运算aa2,aa*2 求 aa的 2 次方,值为
14、100。*乘运算10*aa 求 10 乘以 aa的结果,值为100。/除运算10/aa 求 10 除以 aa的结果,值为1。%取模运算aa%9 求 aa 除以 9 的余数,结果为1。+加运算aa+200 求 aa加上 200 的结果,值为210。-减运算aa 20 求 aa减去 20 的结果,值为-10。算术表达式中可以包含圆括号且可以嵌套,运算优先级为先计算内重括号,后计算外重括号,括号内按先乘方、再乘除和取模、最后加减的顺序计算,优先级相同时从左至右计算。取模运算可以用来判断一个整型数A 是否能被另一个整型数B 整除,如果A%B 的值为 0,则 A 能被 B 整除,否则A 不能被 B 整除
15、。利用取模运算可以方便地判断出一个整型数是奇数还是偶数,如果整型数x 能被 2 整除,即x%2 结果为 0,则 x 是偶数,否则一定是奇数。一个数值变量、数值常量或返回值为数值型结果的函数调用是最简单的算术表达式。【例 2-1】把下列数学表达式表示成Visual FoxPro 表达式。1)xyxyxsin2)acbab4221)左端分式应该先计算x-y 和 x+y,然后才能相除,最后与 SIN(x)相乘,符合 Visual FoxPro语法要求的表达式为:(x-y)/(x+y)*SIN(x)2)根号左端的系数可以表示为-b/(2*a)或-b/2/a,根号内的表达式可以表示为b*2 4*a*c或
16、 b*b-4*a*c,符合 Visual FoxPro 语法要求的表达式为(SQRT()是开平方函数):-b/(2*a)*SQRT(b*2 4*a*c)在把数学表达式转换为Visual FoxPro 算术表达式时,需要注意以下问题:(1)一般应通过括号来实现运算次序的控制,必要时可以加多重括号;(2)表达式中不同运算量之间的运算符不能省略;(3)表达式中不能有上下角标,其内容必须在一行内表示。【例 2-2】求下列表达式的运算结果(假定变量AA 的值为 180)。1)AA/20*(5-7)2)SQRT(100)-15/3 3)(6+4*SQRT(16)-8)/(3+7)/(12-2)-(2*4)
17、/(4/2)*2)4)AA%18*2/200 1)首先计算括号内结果,表达式可以转换为AA/20*(-2),再求AA/20,表达式进一步转换为 9*(-2),最终结果为-18。2)在有函数的表达式中先计算函数,表达式可以转换为10-15/3,继续求 15/3,表达式转换为 10-5,最终结果为5。3)表达式可以分解为(6+4*SQRT(16)-8)和(3+7)/(12-2)-(2*4)/(4/2)*2),二者相除为最终结果。分子可以分步求解如下:6+4*4-8 6+16-8 22-8 14 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 33 页 -分母可以分步求解如下:10/1
18、0-8/2*2 1-4*2 1-8-7 最终结果为14/(-7)=-2。4)表达式中乘方优先级最高,然后是取模运算和除运算,求解步骤如下:180%324/200 180/200 0.9 5.字符串连接表达式字符串连接表达式是由加、减运算符连接两个字符串所形成的表达式。加连接运算将后面的字符串连接在前面字符串的尾部形成一个新字符串,减连接运算也将后面的字符串连接在前面字符串的尾部,但会将前面字符串尾部的连续空格移到结果串的尾部。无论是加连接运算还是减连接运算,结果字符串的字符个数都是两个字符串字符个数的和。字符串表达式中的函数优先计算。【例 2-3】求1000+2000-123 的结果。1000
19、+2000 的结果为 10002000,求10002000 -123 时,要把前面的字符串尾部的连续空格移到结果字符串的末尾,因此最终结果是10002000123。【例 2-4】分析执行下列命令序列后的输出结果是什么?AA=abcd BB=dcba?AA-BB?BB+(AA BB)计算 AA BB 时,要把AA 末尾的 3 个空格移到结果字符串的末尾,输出字符串连接结果为 abcddcba (尾部连续6 个空格)。计算 BB+(AA BB)时,首先求AA BB,然后将其连接到BB 之后,输出字符串连接结果为dcba abcddcba(中间连续3 个空格,尾部连续6 个空格)。6.日期表达式日期
20、表达式是由加、减运算符连接日期量和整型量所形成的符合语法要求的运算式。一个日期变量、日期常量或返回值为日期型结果的函数调用是最简单的日期表达式。日期表达式的基本结构有如下几种:1)+天数。结果是指定日期经过指定天数时的日期值,满足交换率。2)-天数。结果是指定日期之前指定天数的日期值,不能交换运算量位置。3)-。结果是日期1 和日期 2 之间相差的天数,不满足交换率。日期表达式中的函数优先计算,然后是算术运算,最后是日期运算。【例 2-5】求下列表达式的运算结果。1)2008-7-28+3 2)2008-7-28-3 3)2008-7-28-2008-7-25 4)2008-7-25-2008
21、-7-28 5)2008-7-28-2008-7-25+2008-7-20 1)结果是 2008 年 7 月 28 日再过 3 天的日期,为2008 年 7 月 31 日。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 33 页 -2)结果是2008 年 7 月 28 日之前 3 天的日期,为2008 年 7 月 25 日。3)结果是两个日期相差的天数,结果为3。4)结果同样是两个日期相差的天数,结果为-3。5)计算顺序是先求前两个日期的差,结果再加上第三个日期,即3+2008-7-20,最终结果是 2008-7-23。7.关系表达式关系表达式是由关系运算符与同类型运算量(算术、
22、字符串、日期等)连接而成的、符合语法要求的运算式。关系表达式的运算结果是一个逻辑值。一个逻辑型变量、逻辑型常量或返回值为逻辑型结果的函数调用是最简单的关系表达式。常用的关系运算符及其举例说明如表 2-2 所示(假定内存变量aa 的值是 10)。表 2-2 关系运算符运算符运算功能举例结果值说明 小于aa 100 比较 aa是否小于 100,结果为.T.。=小于等于100 大于aa100 比较 aa是否大于 100,结果为.F.。=大于等于100=aa+20 比较 100 是否大于或等于aa+20,结果为.T.。=字符串精确比较相等(非字符型)AA=AAA 字符个数及对应字符均相等时结果才为“真
23、”,结果为.F.。=字符串非精确比较相等(非字符型)AAA=AA 取决于 SET EXACT/ANSI ON/OFF状态设置。OFF 状态时,右端字符串与左端字符串首部连续字符对应相等即为“真”,结果为.T.。ON 状态时,在较短字符串尾部添加空格符使二者长度相同,然后逐一字符比较,结果为.F.。,!=,#不等于10!=aa 判断 10 是否不等于aa,结果为.F.。$包含于(仅用于字符型表达式)Abc$AbbAbcb 左端字符串包含于右端字符串时结果为“真”。Abc 是AbbAbcb 的子串,结果为.T.。在关系表达式中,运算次序依次是函数运算、算术运算、字符串连接运算、日期运算、关系运算,
24、可以通过括号区分运算的优先次序。【例 2-6】求下列表达式的结果。1)SQRT(16)+29 2009-9-10 1)小于号左端表达式结果为33,右端表达式结果为22,33 不小于 22,结果为.F.。2)精确比较。关系运算符两端字符串不相等,结果为.F.。3)左端字符串是右端字符串的子串,结果为.T.。4)左端日期运算结果为2008-9-20,小于 2009-9-10,结果为.F.。在关系运算表达式中,关系运算符两端可以是算术表达式、日期表达式或字符串连接表达式。这时,先计算关系运算符两端的表达式,然后才做关系运算。在比较两个字符型量的大小时,比较结果取决于系统选项“数据”选项卡中“排序序列
25、”选项的(“选项”对话框参见1.2.1 节图 1-3)设置,该设置有三种:Machine、PinYin和 Stroke。选择 Machine 时按字符的机器码大小进行比较。ASCII 字符比较其ASCII 码大小,中文名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 33 页 -字符比较其国标编码大小。汉字国标码从小到大的排列方式是:一级汉字按汉语拼音字母顺序排序,二级汉字按笔划排序,一级汉字在前(编码小),二级汉字在后(编码大)。按字符编码从小到大的顺序是:空格符,0-9,A-Z,a-z,一级汉字,二级汉字。选择 PinYin 时按汉语拼音顺序比较。ASCII 字符按拼音顺序从小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年程序设计基础vf 2022 程序设计 基础 vf
限制150内