




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual Foxpro第二章 Visual FoxPro程序设计基础学习要点:2.1 常量与变量2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件重点与难点:数据类型变 量表达式常用函数程序:作文:造句组词识字拼音语句语句格式、表达式常量、变量、函数2.1 常量与变量常量在程序中不变的量掌握:A.组成 B.定界符 C.特别注意2.1.1 常 量常量是在数据处理过程中其值保持不变的数据。常量在数据输入或命令表达式中可以被直接引用。在Visual FoxPro中定义了6种类型的常量:数值型常量、字符型常量、逻辑型常量、浮点型常量、日期型常量、日期时间型常量。1数值
2、型常量(N)数值型常量是由正、负号数字(09)和小数点组成。Eg:123,-10定界符:无可以是整数、小数,但不可以用分数。例如326、178.56、+3125.27都是合法的数值型常量。科学计数法的描述形式3*1052字符型常量(C)A.组成:字母、符号、汉字、数字、空格。B.字符型常量是由分界符(双引号、单引号、方括号)括起来的一串汉字、字符组成。C.定界符要配对使用例如“FoxPro”、程序设计、Y=?都是合法的字符型常量。引入VFP命令注意:命令在命令窗口输入,输入结束后以回车结束(Enter)。退出vfp系统:quit。清理主屏幕:clear。输出命令:? 隔行输出? 同行输出注意:
3、都是相对上一行来讲。特别注意:在vfp用到的符号都是英文半角?123?$124?”hello”?123?”word”3逻辑型常量(L)逻辑型常量只有两个值,逻辑真和逻辑假。A.一般是用字母.T.表示真,用.F. 表示假。B.定界符:在书写时注意字母两边的黑点不能省略。4日期型常量(D) 日期型常量用于表示日期,使用时必须用花括号括起来。A.0-9的数字B. 年4-月2-日2C.系统默认格式:月/日/年(主屏幕)4日期型常量(D) 补充:关于日期的几个命令(1)设置日期分隔符(显示用)SET MARK TO 分隔符注意:分隔符用引号。Eg:date()显示当前系统时间(2)设置日期的年月日顺序(
4、显示用)SET DATE TO(3)设置年份的显示位数(显示用)SET CENTURY ON:四位OFF:两位关于命令总结:必选可选可不选|必选其一5日期时间型常量(T)A.0-9数字B.年-月-日 时:分:秒。 12制/24制AM:上午PM:下午 日期时间型常量是用于表示日期和时间,使用时必须用花括号括起来。8:25:30是合法的日期时间 例如06/26/2002型常量。6货币型(Y) 组成:0-9,小数点 定界符:$ 自动保留四位小数(自动四舍五入)学习要点:2.1 常量与变量2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件2.1.2 变 量 变量是一种在命
5、令操作和程序运行中其值要发生变化的量。 每一个变量都是用来存放数值的容器存储常量的量。 在Visual FoxPro中,变量可以分为内存变量、数组变量和字段变量。内存变量 内存:出口 内存变量是数据库结构之外独立存在于内存中的临时存储变量,它可以存放程序中的原始数据、中间结果和最终结果,以及用于控制程序执行的各种参数。 内存变量一般随程序运行结束或退出VisualFoxPro系统时释放。1内存变量名 内存变量名是每一个内存变量都必须固有的名称,以标识该内存单元的存储位置。 用户可以通过内存变量名对内存变量中的数据进行操作。 内存变量名的命名规则是以字母、下划线开头,由字母、数字、下划线组成,其
6、长度可以达到254个字符。2内存变量类型 内存变量的类型是指内存变量中存放的是什么形式的数据。 通常内存变量的类型是由变量当前值的类型决定,在Visual FoxPro中,内存变量的常用类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型6种。3创建内存变量 创建内存变量一般是通过各种赋值命令来实现。 在完成内存变量赋值时就产生了内存变量,同时也自动将内存变量定义为相应赋值的数据类型。 对内存变量赋值的命令有多种,可以由STORE、INPUT、WAIT、ACCEPT、COUNT和SUM 等命令建立。(1)内存变量赋值命令【格式】【功能】给内存变量赋值。STORE TO 或 例如:X=12.
7、3& 将12.3赋值给变量X,变量类型为数值型Y=VFP& 将字符串Visual FoxPro赋值给变量Y,变量类型为字符型STORE 3*5 TO A,B,C& 将表达式值15分别赋值给A,B,C三个变量(1)内存变量赋值命令【格式】STORE TO 或 【功能】给内存变量赋值。【说明】STORE命令可以同时给多个内存变量赋值,而=命令只能给一个变量赋值。注意:常量表达式必须加定界符4输出内存变量的值【格式】?或 ?【功能】显示内存变量、常量或表达式的值。【说明】?是在光标所在行的下一行开始显示?则是在当前光标位置开始显示。5显示内存变量【格式】list memory
8、|display memory【功能】显示内存变量的当前信息,包括变量名、作用域、类型和取值。【说明】list:自动滚屏display:显示一屏后暂停,按任意键继续。【格式】LIST MEMORY LIKE 通配符【功能】显示与通配符相匹配的内存变量。【说明】*:0个或者任意多个字符?:任意一个字符Eg:a* :以a开头的所有变量b?:以b开头,宽度是2的变量List memory like a*a = 12ab = “visual”abc= $123.1List memory like a*6清除内存变量【功能】格式1清除所有的内存变量格式2清除指定的内存变量格式3清除与通配符相匹配/不匹配
9、的内存变量CLEAR MEMORY 清除所有的内存变量【格式】 RELEASE 清除指定内存变量RELEASE MEMORY ALL LIKE|EXCEPT 通配符Eg:release a?alist memor like a*release all like a*list memory like a*数组变量 数组是由一组有序排列的内存变量组成(一连串的内存变量)。 数组中的每一个变量都称为数组元素。 每一个数组元素在内存中独占一个内存单元,为了区分不同的数组元素,每一个数组元素都是通过数组名和下标来访问。因此数组可以称为是带下标的变量,简称为下标变量。元素,例如B(1,1) B(1,3),
10、B(2,1)平面直角坐标在Visual FoxPro中,数组可以分一维数组和二维 一维数组是指在该数组中只用一个下标值表示数组元素,例如:A(1),A(2),A(10),可用A数组表示。 二维数组是指在该数组中用两个下标表示数组,B(1,2),在同一数组中,不同的数组元素可以有不同类型的数据。数组两种:数轴可用B数组表示。系(第一象限)1. 数组的定义【格式】DIMENSION(,),(,【功能】定义若干个一维数组或二维数组。【说明】一条DIMENSION命令可以定义多个数组,也可以使用DECLARE命令代替DIMENSION命令。1. 数组的定义Declare a(3)-a(1),a(2),
11、a(3)变量Declare b(2,3)b(1,1) b(1,2) b(1,3)b(2,1) b(2,2) b(2,3)2. 数组的赋值 数组定义好后,数组中的每个数组元素自动地被赋予逻辑值.F.。 当需要对整个数组或个别数组元素进行新的赋值时,与一般内存变量一样,可以通过STORE命令或赋值号“=”来进行。 对数组的不同元素,可以赋予不同数据类型的数据。【例】 先定义数组,然后给数组元素赋值。DIMENSION abc(3) &abc(1),abc(2),abc(3)DECLARE b(2,3)&b(1,1) b(1,2) b(1,3)b(2,1) b(2,2) b(2,3)
12、STORE 10 TO babc(1)=30abc(2)=TCP/IPabc(3)=.F.【说明】 在定义一维数组abc和二维数组b后,对两个数组赋值。赋值后b中所有元素的值均为10;abc中各元素分别赋予了不同类型的数据30、“TCP/IP”和.F.。学 号姓 名年 龄计算机英 语物 理021101黄 伟18958588021102李 勇19859085021103王 芳18758180021104田 甜17708276021105周希望18907582字段变量属性(字段)字段变量 字段变量即数据表中的字段,它是建立数据表时定义的一类变量。 在数据表中,同一字段名下的数据值是不同的,每个字段
13、都称为字段变量。 字段变量的类型有字符型、数值型、浮点型、双精度型、整型、逻辑型、日期型、日期时间型、备注型、通用型等。学习要点:2.1 常量与变量2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件2.2 函数【定义】系统提供的实现特定功能的小程序Visual FoxPro提供了丰富的函数。豆浆=豆子+豆浆机(函数)2.2 函数豆浆=豆子+豆浆机(函数)在使用Visual FoxPro的函数时,应注意以下几点: 准确地掌握函数功能。 每一个函数都有一个返回值。函数的返回值有确定的类型,因此在使用函数时特别要注意类型匹配。 函数对其参数的类型也有要求,否则将产生类型
14、不匹配的语法错误。数值函数、字符函数、日期时间函数、类型转换函数数值运算函数【功能】求数值表达式值的绝对值。1求绝对值、平方根和求整函数【格式】 ABS()ABS(10) = 10ABS(-10)= 10数值运算函数1求绝对值、平方根和求整函数【格式】 SQRT()【功能】求数值表达式值的平方根【格式】 INT()【注意】不考虑小数大小?Sqrt(25)&52四舍五入函数ROUND()【格式】【例】?ROUND(86.6265,0)87?ROUND(86.6265,1)86.6?ROUND(86.6265,-1)90?ROUND(86.6265,-2)100操作对象ROUND(,)四舍
15、五入的位置(正数表示小数位数,负数。本函数按指定的小数位数对数值进行四舍五入处理。3求最大值、最小值函数【格式】【功能】求多个数值表达式中的最大值或最小值。MAX |MIN(,)【例】 比较值的大小。?MAX(WE,YOU)YOU4取模函数【格式】MOD(,)【功能】取数值表达式1除以数值表达式2所得的余数。【例】 求下列各数的取模值。? MOD(20,3)2& 显示20除以3所得的余数? MOD(20,-3)-1& 显示20除以-3所得的余数字符处理函数1取字符串的长度函数【格式】 LEN()【例】 取字符串长度值。? LEN(“中文Visual FoxPro)& 取
16、出全部字符串的长度值17【功能】取出字符串表达式的字符长度值。【注意】一个字母、符号、数字占1个字节,一个汉字占2个字节。2取子串函数【格式】【功能】在字符串表达式中取出从起始值到指定取出字串长度值的部分字符。当取值长度缺省时,字符串从起始值一直取到最后一个字符。SUBSTR(字符串表达式,起始值,取值长度)【例】 在下列字符串中取出子串。? SUBSTR(FoxPRO,2,2)* 从第二个字符开始取出2个字符ox? SUBSTR(ABCDEF,4)*从第4个字符开始取到最后DEF遇到中文字符的情况:一个中文字符占2位,中文字符不按长度整数倍取,会出现不可预知的情况。?substr(中文vis
17、ual,1,2)* 从第一个个字符开始取出2个字符长度字符?substr(中文visual,2,1)*从第2个字符开始取到最后中乱码3从字符串左端取子串函数【格式】LEFT(,)【功能】从字符串表达式的左端开始,取出指定取值长度的子串。【例】 从字符串左端取出子串。? LEFT(FoxPro,3)& 从字符“FoxPro”左端开始取出3个字符Fox? LEFT(程序设计,2) & 从字符“程序设 计”左端开始取出2个字符长度程4从字符串右端取出子串函数【格式】RIGHT(,)【功能】从字符串表达式的右端开始,取出指定取值长度的子串。【例】 从字符串右端取出子串。& 从字
18、符串右? RIGHT(FoxPro,3)端开始取出3个字符Pro5求子串的位置函数【格式】【功能】求子串在字符串表达式出现的位置,当缺省时,求子串首次出现的位置,否则,求子串在字符串表达式第次出现的位置。AT(, ,)【例】 在字符串中检索子串的位置。? AT(IS,THIS IS a BOOK)& 求子串“IS”在字符串首次出现的位置3? AT(IS,THIS IS a BOOK,2)& 求子串“IS”在字符串第2次出现的位置6?AT(文,中文)36删除空格函数【格式】ALLTRIM()【功能】删除字符串表达式中前导和末尾的空格。【例】 删除字符串前后的空格。?alltrim
19、( visual fox )& 去掉字符串左边空格visual fox?alltrim( visual fox )+ab“visual foxab注意:只去前导和末尾空格,中间空格保持不变。7字符串替换函数STUFF()【格式】【功能】用替换中的某部分字符串,对中进行替换的开始位置以及被替换字符的个数分别由和确定。STUFF(,)【例】 用含有6个字符的子串“FoxPro”替换主串“FORTRAN-PASCAL-BASIC”中的字符串“PASCAL”,替换的起始位置为9。?STUFF(FORTRAN-PASCAL-BASIC,9,6,FoxPro)FORTRAN-FoxPro-BASI
20、C【例】 用“全国”替换“四川计算机等级考试”中的“四川”二字。?stuff(四川计算机等级考试,1,4,全国)全国计算机等级考试【注意】如果长度值为0,相当于在起始位置之前插入子字符串。?stuff(visual pro,8,0,fox)visual fox pro【注意】如果子串为空串,相当于删除指定的一部分字符串。?stuff(visual fox pro,8,3,)visual pro8字符替换函数CHRTRAN()【格式】【功能】字符串1中有字符与第2个字符串相同时,就用第3个字符串相对应的字符(与字符串2)替换这些字符。如果字符串3中包含的字符数少于第二个字符串包含的字符,则第一个
21、字符串相应字符被删除。CHRTRAN(,)Eg:x1 = CHRTRAN(ACDFGB,ABCD,ac)字符串1: ACDFGB字符串2 :ABCD字符串3: a caFGc9字符串匹配函数【格式】【功能】比较两个字符串对应位置上的字符,若所有对应字符匹配,返回逻辑真(.T.)。否则返回逻辑假(.F.)。字符1中可以包含通配符。LIKE(,)【例】LIKE (a*,abc) .T.LIKE (ac*,abc) .F.10大写字母转小写字母函数【格式】LOWER()【功能】将字符串表达式中的所有大写字母转换成小写字母。【例】 将大写字母转换成小写字母。? LOWER(FoxPro)foxpro&
22、amp; 显示小写字母11小写字母转大写字母函数【格式】【功能】将字符串表达式中的所有小写字母转换成大写字母。UPPER()【例】 将小写字母转换成大写字母。? UPPER(abcABCabc)ABCABCABC & 显示大写字母12计算子串出现函数【格式】【功能】返回第一个字符串在第二个字符串中出现的次数,返回值为数值型。OCCURS(,)【例】 s = abcdefhgrabcefabr?occurs(a,s)3理想长度L应是数值表达式的长度。转换长度L,则字符串加前导空格。数值整数部分=转换长度L,优先满足整数部分,再调整小数部分。转换长度数值整数部分,返回*。转换长度默认为10
23、,小数位数默认为0。转换函数(使表达式的类型一致)1数值转字符串函数【格式】 STR( ,,)【功能】将数值表达式转换为字符串。【例】 将下列数值表达式转换为字符串。?str(123.4567,9,4)123 .4567& 加前导空格?str(123.4567,6,3)123.46& 优先满足整数部分?str(123.4567,1,0)*2字符串转换为数值函数【格式】【功能】将由数字符号组成的字符型数据转换为数值,小数点后保留2位小数。VAL()【例3】 将字符串转换为数值。?val(123)123.00 & 显示数值型结果?val(123.567)123.57?val
24、(123.ABC),val(AB123)123.00 0.00注意:若字符串内出现非数字字符,那么只转换前面的部分。若字符串首字符不是数字符号,则返回零。3字符串转日期函数【格式】【功能】将指定的字符串表达式转换为日期型数据。CTOD()【说明】 在字符串转日期型数据时,字符串应符合日期型数据格式。系统默认日期型格式是mm/dd/yy,也可以用SET DATETO命令相配,用SET CENTURYON/OFF设置世纪的日期格式。【注意】字符串中日期格式要与set date to格式一致【例】 将字符串转换为日期后,再加上15天。? CTOD(06/15/02)+1506/30/02 &
25、 显示转换后的日期【例】 将两个字符串转换为日期后,可得一个天数。? CTOD(06/15/02)-CTOD(05/15/02)31 & 显示转换后的天数set date to ymd?ctod(06/3/25)+506/03/304日期转字符串函数【格式】【功能】将日期(时间)型数据转换为字符型日期数据,如果选择,函数用yyyymmdd格式。( ) DTOC( ,)【例】 将日期型数据转换为字符型数据。? DTOC(06/20/02)& 显示日期SET STRICTDATE TO 0& 设置通常的日期格式?DTOC(2008/12/01)12/01/08?DTOC(2
26、008/12/01,1)200812015宏替换函数【格式】【功能】替换出字符型变量的内容,并使用一个句点.来结束这个宏替换表达式。&.【例】 x= hellom=x?&mDATE( )日期型DATETIME()日期时间型TIME()字符型日期函数1系统日期函数【格式】DATE( )DATETIME()TIME()【功能】返回系统的当前日期。2取年份函数【格式】YEAR()日期型日期时间型字符型【功能】从日期表达式中取出四位数字表示年份(数值型)。Eg :Year(date()-year(出生日期)=实际年龄3取月函数【格式】 MONTH()【功能】从日期表达式中取出月份。4取
27、号数函数【格式】【功能】从日期表达式中取出号数。DAY()例:?year(2001/10/01)2001?month(2001/10/01)10?day(2001/10/01)15星期几函数【格式】【功能】从日期表达式中取出星期几。【说明】 DOW( )函数是从日期中取出星期1,2,3,7。其中1表示星期日,2表示星期一,7表示星期六。CDOW( )函数是从日期中取出英文“Monday”表示星期一、“Tuesday”表示星期二等。DOW|CDOW()【例】 取出当前系统日期中的星期几。?DOW(date()?CDOW(date()学习要点:2.1 常量与变量2.1.1常 量2.1.2变 量2.
28、2 函数2.3 表达式2.4 程序与程序文件2.3 表达式 表达式是由常量、变量、函数和运算符组成的运算式。 表达式有计算、判断和数据类型转换等作用。 表达式分为算术表达式、字符表达式、关系表达式、日期或日期时间表达式和逻辑表达式。A.运算符及其功能B.运算符的优先级中间产物1算术表达式 算术表达式是由算术运算符、数值型常量、数值型变量、数值类型的字段、数值型数组和函数组成。 +- * / % * 算术表达式的运算结果是数值型数据。 算术运算时,运算的规则是:( ) * */% + -。*:2*323取余运算15%215%-2-15%2规定:异数取余,余数与除数同号;若不同,与除数相加.乘方表
29、示2字符表达式 字符表达式是由字符运算符、字符型常量、字符型内存变量、字符型字段变量、字符型数组和函数组成。 字符表达式的运算结果仍然是字符型数据。字符运算符用于连接字符串。 +:两个字符串首尾相连。 -:先把前字符串尾部的空格移到整个字符串的后面,然后首尾相连。Eg:a=hello B=world!?a+b?a-b?a - b +a& hello world!& helloworld!& helloworld! a3关系表达式 关系表达式是由关系运算符、算术表达式、字符表达式等组成。 关系表达式的运算结果是逻辑值真或假,当关系成立,结果为.T.(真);当关系不成立,结
30、果为.F.(假)。 ,=, ,=,!=/#(不等于) ,=/=(字符串设置比较),$(子串测试)“=”用作字符串比较,与设置SET EXACT ON|OFF命令有关。ON:首先在较短字符串后面补上空格,使之长度相等,然后比较。OFF:如果右边字符串是左边字符串的子串就返回T(以等号右边字符结束为标识)。Eg:set exact on“ab”=“abc”“ab”=“ab ”set exact off“abc”=“abc”“abc”=“ab”“acb”=“ab”.f.t.t.t.f.(2) “$”:如果左边字符串是右边字符串的子串就返回.T.Eg: “ab”$ “abc” .t.(3) “=”:如
31、果左右两边字符串都完全相等,返回.t.补充:比较运算时,不同类型数据的大小规定A.数值型:10B.日期型:越晚的日期越大C.逻辑型:.T.F.D.字符型:字母:abczAB.”王”E.优先级:“,=, “= = !=”赋值和比较:?x=y-2x=yy=x=2x=y x1.vfp的表达式 :是由命令、变量、操作符组成.2.一个命令行至少有一个命令。3.分析这样的语句要选择命令语句,再找操作符 。这里的=是命令赋值和比较:x=y? x=y-2这里的?是命令,=是运算符, x.y是变量显示 x=y 是真还是假x.y是变量,把y的值赋值 给x? x=y这里的命令是? ,=和-是运算符,按照优先级顺序,
32、先做算数运算;最后,把x是否等于y-2的值显示出来? x=y=2x=y=2第一个=是命令,第二个=运算符把y=2是否为真的结果赋值给X会显示错误,这是因为? 是命令,后面的=都是比较,没有括号所以按顺序运算 优先级,先运算x=y,结果为逻辑型(L);然后运算L= 2, 因为运算符二两类型不一致,所以提示错误。4日期或日期时间表达式 日期或日期时间表达式是由算术运算符(+或-)、算术表达式、日期或日期时间型变量、日期或日期时间型内存变量数组及函数组成。 日期或日期时间型的运算结果是日期或日期时间型或常数。日期或日期时间运算及表达式一览表运算符功 能举例结果+相加相减日期+数字 2010-01-1
33、7+102010-01-17 10:20:20+150日期-数字01/27/1001/27/10 10:22:5001/17/10日期型日期时间型日期型2010-01-2710日期-日期2010-06-262010-05-2631数值型两个日期不能相加!日期型和日期时间型数据在使用时有多种环境,系统默认环境是严格的日期格式,命令如下: SET STRICTDATE TO 1& 系统默认严格的日期格式在严格的日期格式下,日期或日期时间运算可以采用如下形式: ? 2002-06-19-10或 ?CTOD(06/19/02)-10输出结果为:06/09/02 日期型和日期时间型数据在输出时,
34、若要输出是四位年份,应使用世纪的日期格式设置命令:SET CENTURY ON格式?CTOD(06/19/02)-1006/09/2002& 设置世纪的日期& 显示结果 若要改为原来的默认格式,应使用设置命令:SET CENTURY OFF& 取消世纪的日期格式?CTOD(06/19/02)06/09/02& 显示结果5逻辑表达式 逻辑表达式是由逻辑运算符、逻辑型常量、逻辑型内存变量、逻辑型数组、函数和关系表达式组成。 在逻辑表达式中,可以描述复合条件的多个关系表达式,一般格式为: 逻辑表达式运算的结果是逻辑值真(.T.)或假(.F.)。逻辑运算符及举例如表所示
35、。逻辑运算符及表达式一览表运算符功 能举例结果.NOT.或!逻辑非,取逻辑值相反的值? .NOT.73.F.AND.逻辑与,两边的条件都成立,其结果值为真?5*927.AND.36.T.OR.逻辑或,只要一边条件成立,其结果值为真16?7*320.OR.2519.T.逻辑运算的规则A.T.T.F.F.B.T.F.T.F.NOT.B.F.T.F.T.A.AND.B.T.F.F.F.A.OR.B.T.T.T.F.逻辑运算的优级:.NOT.、.AND.、.OR.学习要点:2.1 常量与变量2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件2.4.1 程序文件操作及输入语
36、句2.4.2 程序基本结构交互式范式适合解决一些简单问题3.4.1程序文件的操作及输入语句2VFP系统三种操作方式:菜单、命令、程序有多条命令组成的文件命令可以不用顺序方式执行程序文件的操作关于VFP文件的操作程序、数据库、表、查询、视图、表单、菜单、报表。前提:提前建立好默认目录。Set default to d:建立:文件-新建-程序-新建文件-编写程序保存:文件-保存-输入文件名-保存(点击保存按钮)。扩展名为.prg。打开:A.文件-打开-文件类型-文件名-确定B.MODIFY COMMAND 运行(查看程序运行结果)A.程序-运行-选择文件-运行(或直接选红色叹号运行)B.DO 文件
37、名此命令既可以在命令窗口发出,也可以出现在程序文件中,表示调用执行另一个程序。结束:A.所有命令被执行B.遇到下列语句:(1)CANCEL:终值程序的运行(2)DO:转去执行另一个程序(3)RETURN:结束当前程序的执行,返回上级程序(4)QUIT:退出VFP系统关闭:点击程序文件右上角文件添加注释:*或NOTE -添加在开头代码行&-添加在命令行尾部注释不以分号结尾,否则下一行仍作为注释。 每条都以回车键结尾,一行只写一条命令。若需分行书写,加续行符;简单的输入输出命令1.Accept 提示语 to 内存变量【注意】:提示语必须加引号只接受字符型数据【功能】:程序暂停运行,显示提示
38、语,等待用户输入,输入结束按回车把输入内容赋值给内存变量。2.Input 提示语 to 内存变量【注意】:接受任何vfp合法数据类型,输入内容时加定界符。【功能】:程序暂停运行,等待用户输入,输入结束按回车把输入内容赋值给内存变量。input 请输入一个数 to ainput 请输入另一个数 to b?a+bEg:Input输入语句3.Wait 提示语 windows timeout 秒数【功能】:显示内容在屏幕右上角,显示时间由秒数确定。Eg:?马上开奖,请耐心等待wait 恭喜你中奖了,矿泉水一瓶!window nowait timeout 5?开奖结束,请继续学习要点:2.1 常量与变量
39、2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件2.4.1程序文件操作及输入语句2.4.2 程序基本结构2.4.2 程序基本结构1.选择结构2.循环结构3.顺序结构:从上到下,从前到后重点掌握:语句的执行过程程序语言现实语言 读程序现实语言程序语言 写程序(一)选择结构1.单重选择语法格式:if 语句Endif首先判断条件是否成立,就是最终结果是一个逻辑值,如果为真,执行语句,执行后到endif语句;如果为假,不执行语句,直接到endif后的语句。(一)选择结构【Eg】ClearInput “请输入a:”to aInput “请输入b:” to bIf ab?
40、“最大值为:”,aEndif? “程序执行完毕”2.双重选择If 语句1Else语句2Endif执行过程:首先判断条件是否成立,如果成立,就执行语句1,否则就执行语句2。执行后到endif后的语句。提示:(1)else后没有条件。(2)双重语句有且只能执行一条。 3.多重选择Do caseCase 条件1语句1Case 条件2语句2Case 条件m语句motherwise 语句m+1Endcase 执行过程依次判断条件是否成立,哪个成立就执行哪个语句,执行后直接到endcase后的语句。如果没有成立的,就指定otherwise语句,如果没有otherwise语句,就什么也不执行,直接到endc
41、ase后的语句注意:多重选择最多执行一条语句。(二)循环结构1.while循环语法格式Do while 循环体Enddo执行过程:首先判断条件是否成立,如果为真,就执行循环体,执行后再次判断条件是否成立,若成立则再执行,直到条件为假,退出循环,到enddo后的语句。Eg:1+2+3+100 = 5050注意:临界值的变化;用于条件比较明显的循环。LOOP命令结束本次循环,不再执行循环其后的循环语句,而是转回DO WHILE处重新判断。EXIT命令结束循环体的执行,转去执行ENDDO后面的语句。2.for循环For 循环变量 = 初值 to 终值 step 步长循环体Endfor执行过程:A.如
42、果步长为正,判断条件为循环变量=终值,如果条件成立,就执行循环体,执行后循环变量按步长递减。然后再次判断条件,如果成立,再执行,再判断,直到条件为假,退出循环,到endfor 后语句。C.默认步长是1.2.for循环For 循环变量 = 初值 to 终值step 步长循环体EndforD.、都可以是数值表达式,但是这些表达式仅在循环开始时执行一次,在循环体执行过程中,初值、终值、步长不会改变。E.LOOPEXIT语句同样适用于for语句。2.for循环For 循环变量 = 初值 to 终值step 步长循环体EndforEg:编写程序,判断一个大于3的自然数是否为素数学习要点:2.1 常量与变
43、量2.1.1常 量2.1.2变 量2.2 函数2.3 表达式2.4 程序与程序文件2.4.1程序文件操作及输入语句2.4.2 程序基本结构2.5 多模块程序设计主程序、子程序变量:全局变量、私有变量、局部变量2.5 多模块程序设计一.过程的概念在程序设计中,为了有效地解决有些运算或程序段落重复调用的情况,可以设计相对独立并能完成特定功能的程序段,这种程序段称为过程或子程序,用于调用程序段的程序称为主程序。在应用系统的开发中,一般会根据实际需要将整个系统划分成若干模块,通常将这些可以调用的功能模块也设计成过程或子程序。模块是一个相对独立的程序段,它可以被其它模块所调用,也可以去调用其它的模块。循
44、环结构实现在一个程序中多次执行的某段程序。过程实现在同一程序的不同位置,或在不同程序中执行相同程序段。在应用系统开发中,通常将系统划分成若干个模块,系统在主模块控制下,调用各个功能模块以完成系统的各种功能操作。通常将这些可调用的功能模块设计为过程或者子程序。可以在程序末尾加 return TO MASTER|TO 【说明】:RETURN返回调用该过程的主程序,并执行主程序中调用命令的下一条命令;TO MASTER直接返回最高级程序。1.子程序的建立于调用(1)建立子程序选择:将表达式的值返回给调用程序。选择TO MASTER:不论前面有多少级调用,直接返回第一级主程序。选择TO 程序文件名:可
45、以直接返回指定的程序文件。缺省return命令:在过程结束处自动执行一条隐含的return命令,并返回逻辑真。(2)调用子程序格式1: do 格式2: ()【功能】:执行DO调用命令时,将指定的过程调入内存并执行。【说明】:格式2中的子程序名不加扩展名补充:输出命令(1)非格式输出命令【格式】?或 ?【功能】显示内存变量、常量或表达式的值。【说明】?是在光标所在行的下一行开始显示?则是在当前光标位置开始显示。(2)格式输出命令【格式】【功能】按指定的坐标位置在屏幕上输出表达式的值。 SAY 【说明】输出的位置由指定,的内容可以是数值、字符、内存变量和字段变量。 2,10 say 电话号码簿 4
46、,10 say A:按姓名查询 6,10 say B:按记录号删除 8,10 say C:插入新纪录(3)文本输出命令【格式】TEXTENDTEXT【功能】将TEXT和ENDTEXT之间的文本信息照原样输出。【说明】TEXT与ENDTEXT在程序中必须配对。补充:环境设置命令系统提供SET命令组用来设置程序运行的环境。(1)关闭对话命令【命令】 SET TALK ON|OFF【功能】 控制非输出性的执行结果是否在屏幕上显示或打印出来。【说明】 系统默认值为ON。(2)设置跟踪命令【命令】 SET ECHO ON|OFF【功能】 控制程序文件执行过程中的每条命令是否显示或打印出来。【说明】 系统
47、默认值为OFF。【例】 编写程序P1.PRG,其程序功能是计算 S=X!+Y!+Z! 。程序P1 .PRG主程序和子程序编写窗口2.过程文件过程是作为一个文件独立地存储在磁盘上,为减少磁盘文件的打开次数,可以把多个过程写入一个过程文件中,过程文件中包含的过程数量不限。过程文件的扩展名仍然是.PRG。(1)建立过程文件【功能】建立过程文件。MODIFY COMMAND RETURNRETURNRETURNPRO.prgRETURNRETURNRETURNPROCEDURE RETURNPROCEDURE RETURNPROCEDURE RETURN过程文件的基本书写格式:过程文件也可以放在命令文
48、件中,但必须放置在正常代码后面:PRO.prgPROCEDURE RETURNPROCEDURE RETURNPROCEDURE RETURN(2)执行过程当程序执行到调用子程序的语句时,系统将外存中的子程序调入内存,程序自动转到相应的子程序去执行。子程序执行完毕,程序返回调用子程序语句的下一语句继续执行。【功能】调用过程文件中的指定过程。后加()表示带参调用DO ()(3)打开过程文件SET PROCEDURE TO 【功能】打开指定的过程文件,将过程文件中所包含的子程序全部调入内存。【说明】若修改了过程文件的内容,一定要重新打开过程文件,再进行过程文件的调用。系统在同一时刻只能打开一个过程
49、文件,打开新过程文件的同时将关闭原来打开的过程文件。(4)关闭过程文件SET PROCEDURE TO【功能】关闭已打开的过程文件。RELEASE PROCEDURE,【功能】关闭指定过程文件。【例】 编写程序P2.PRG,其程序功能是求3100之间的所有素数。注意:对一个自然数M(取值在3100之间的奇数)求素数的方法是:将M依次除以3到M的算数平方根之间的数,若均不能被整除,则M即为素数,否则,M不是素数。3100之间的所有素数:133153733173759795194161837234367891129477197图 程序P2 .PRG主程序和过程文件编写窗口二.变量的作用域和参数调用
50、1变量的作用域在程序设计中,内存变量的这些作用范围称为内存变量的作用域。内存变量的作用域根据作用范围可分为全局变量、私有变量和局部变量。(1)全局变量全局变量是指在程序的任何嵌套中及在程序执行期间始终有效的变量。程序执行完毕,它们不会在内存自动释放。全局变量的定义如下:PUBLIC 【功能】将内存变量名表中的变量声明为全局变量。【说明】全局变量初值为逻辑假(.f.)简单变量和数组变量都可以定义为全局变量命令窗口中直接使用而由系统建立的变量也为全局变量(2)局部变量局部变量是指用LOCAL命令定义的,只在建立它的过程中有效的内存变量。建立局部变量的程序执行完毕,局部变量的值将被自动清除。局部变量
51、的定义方式:LOCAL(3)私有变量私有变量是指在程序中直接使用而未通过PUBLIC和LOCAL命令声明,而由系统自动隐含建立的变量。私有变量的作用域是建立它的模块和其下属各模块。一旦建立它的模块程序运行结束,私有变量将自动清除。开发程序是模块化开发的,主程序和子程序很可能不是同一个人建立的,对于其他程序模块中变量的使用,编程者并不是很清楚。可能出现如下情况:子程序中用到的变量是主程序中已经建立的,子程序的运行会改变主程序中变量的值。在此,PRIVATE命令可以解决这些问题:PRIVATE命令可以隐藏主程序中可能存在的变量,使得这些变量在子程序中暂时无效。PRIVATE PRIVATE ALL
52、 LIKE |EXCEPT【注意】PRIVATE命令不是建立内存变量,而是隐藏在上层模块中可能已经存在的内存变量,使得这些变量在当前模块暂时无效。图 程序P16 .PRG主程序和调用过程编写窗口【例】编写程序P16.PRG,其程序功能说明过程中全局变量和局部变量的应用。输出结果:在主程序中:A=1在过程中:A=11B=2B=12 C=13 D=14返回主程序后:A=11 B=2 C=13 D= List memo like ?List memo like ?List memo中like初?始变量:”?List memo like ?后的变量:” ?List memo like始?变量”*p1.prg*Public a,bA = 1B = “good”?”程序p1中的初始变量:”Do p2?”程序p1中执行p2后变量:”return*p2.prg*Private aC = 12Store date() to a,b”程序p2 的Do p3”程序p2执行p3return*p3.prg*Private aA = “12345”B = year(b)C = str(c,1)Private cStore 5 to a,b,c”程序p3中初return3、过程的带参调用过程的带参调用方法:在调用过程的命令和被调用过程的相关语句中,分别设置数量相同、数据类型一致且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿臂丛神经损伤的临床护理
- 《如何在手机上制作课件》
- 2025汽车销售合同范本2
- 2025博尔特委托试验合同
- 2025关于租赁合同的管辖问题案例分析
- 深圳七下生物期末试卷及答案
- 陕西中考试卷及答案全套b卷
- 2025年买卖食品的合同范本
- 浙江国企招聘2025温州机场集团招聘31人笔试参考题库附带答案详解
- 电容器在数据中心电力系统的优化设计考核试卷
- 2025年四川成都地铁运营有限公司招聘笔试参考题库含答案解析
- 【MOOC】《学术交流英语》(东南大学)章节中国大学慕课答案
- 幼儿园阅读活动环境创设
- 环保公司简介范文6篇范文
- 如何与人有效沟通培训
- 食品企业生产部门质量奖惩条例
- 《妇产科学》课件-15.3绝经综合征
- 幼儿园中班彩虹泡泡龙课件
- 酒精饮料制作操作指南
- 六年级数学下册 典型例题系列之期中专项练习:解比例或解方程(苏教版)
- 城市地下管网建设项目风险评估报告
评论
0/150
提交评论