




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VDAL语言的发展与应用毕业论文目 录第1章 VDAL语言概述11.1 VDAL语言的定义11.2 VDAL语言的特点11.3简单的VDAL语言程序介绍21.4 VDAL程序的运行环境以及运行步骤5第2章 VDAL程序算法72.1算法的概念72.2一个简单的算法案例72.3算法的性质7第3章 数据类型93.1VDAL语言的数据类型93.2变量与常量93.2.1常量93.2.2变量103.3布尔类型bool123.4整型int133.4.1整型常量133.4.2整型变量133.5实型double143.5.1实型常量143.5.2实型变量143.6字符串类型string153.6.1字符串常量153.6.2字符串变量153.7时间类型datetime183.7.1时间类型常量183.7.2时间类型变量19第4章 VDAL运算符与表达式214.1算术运算符与算术表达式224.1.1算术运算符及其优先级224.1.2 负号与减号的说明244.1.3算术表达式中的操作数的类型254.1.4自加、自减254.1.5使用介绍254.2关系运算符和关系表达式264.2.1关系运算符及其优先级264.2.2关系表达式264.2.3关系表达式的作用324.3逻辑运算符与逻辑表达式324.3.1逻辑运算符及其优先级324.3.2逻辑运算规则324.3.3布尔表达式334.3.4逻辑表达式应用介绍344.4字符串表达式354.4.1字符串表达式中使用的操作符354.4.2字符串表达式中的操作数类型354.4.3字符串的运算364.4.4字符串表达式的使用364.5时间类型表达式374.5.1操作符说明374.5.2时间表达式中的操作数384.5.3时间表达式的作用394.5.4字符串型常量和时间型常量的区别394.6小结40第5章 程序三大结构415.1 VDAL语言程序结构概述415.2顺序结构程序设计425.3条件结构程序设计445.3.1 if语句445.3.2 switch语句465.3.3 选择结构程序举例485.4循环程序结构设计505.4.1 break语句和continue语句505.4.2 while循环语句505.4.3 for循环语句515.4.4 循环嵌套535.4.5 循环程序设计实例54第6章 容器类型566.1 array类型及其应用566.1.1 array数组的定义566.1.2 array数组元素的引用566.1.3 array数组支持的数据类型576.1.4 array数组的应用586.2 dataset类型和其应用596.2.1 dataset数组的定义596.2.2 dataset数组元素的引用606.2.3 dataset支持的数据类型616.2.4 dataset数组的应用626.3 matrix类型和其应用646.3.1 matrix数组的定义646.3.2 matrix数组的定义646.4 array、dataset和matrix之间的转换68第7章 函数697.1函数定义的一般形式697. 1.1无参函数的定义形式697.1.2有参函数定义的一般形式707.1.3关于函数定义707.2函数分类717.3函数调用717.3.1没有参数的函数的调用717.3.2固定参数系统函数的调用717.4函数的作用72第1章 VDAL语言概述1.1 VDAL语言的定义VDAL(Visual Data Analysis Language),可视化数据分析语言,是针对数据分析而设计的计算机程序脚本语言。VDAL语言是在C语言的基础上发展而来的,继承了C语言中程序结构化设计的风格,并且在C语言数据类型的基础上增加了string、array、matrix、dataset类型,可以以矩阵数组等形式直接处理数据。它运行于中间件(UMS)数据分析平台且应用范围广泛,具备很强的数据处理能力,数据处理结果在中间件面板中可视化显示,实现所见即所得。1.2 VDAL语言的特点一种语言之所以存在并且可以得到大家的认可及运用,总是具有其独特的并且优于别的语言的特点。VDA语言主要特点如下:(1)VDAL语言简洁紧凑,结构化设计,使用方便。VDAL语言中,一共有31个关键字,7种控制语句,程序采用结构化设计思想,书写形式自由才,采用小写字母表示。(2)数据类型丰富,运算符多样。VDAL语言中除了有C语言中的常见基本类型,还有string、array、matrix、dataset等数据运算类型,极大程度上的方便了数据的预算和分析。此外,VDAL语言支持23种运算符,从而使运算丰富,表达式类型多样灵活。(3)具有多样的控制语句类型,如ifelse语句、while语句、switch语句、for语句。每一个控制语句作为一个模块,便于实现程序的模块化。(4)强大的函数库支持。Vdal语言目前可以提供近1000个基础和矩阵函数,支持矩阵运算,可以满足用户多方面的需求。同时用户也可以自己编写函数,方便用户自己使用,也可和别的用户共享,以提高编写程序的效率。(5)command命令支持板块联动,实现相关数据之间不同方式的操作和展示。通过函数和传递参数变量,实现了板块与板块之间的简单通信,然后用双击事件的vdal语法实现板块与板块的联动,对需要数据展示的用户非常方便。(6)安全的语法设置。Vdal语法屏蔽了指针,也不需要用户去关心内存的分配和释放,这些vdal语法会自动根据用户的需求分配和释放内存,避免用户因操作内存不当,造成内存泄露。所以vdal语法具有很好的安全性。1.3 简单的VDAL语言程序介绍下面简单介绍几个简单的VDAL语言程序,然后分析VDAL语言程序的特点。例1.1 输出一行信息string main()string str=welcom to zealink!;return str;本程序的作用是在面板中输出一行信息:welcom to zealink!先看程序第一行,其中main是函数的名字,表示“主函数”,main前面的string表示次函数是字符串类型,即函数执行完成后返回一个字符串。每一个VDAL程序都必须有一个main函数,且有且只有一个main函数。程序从main函数进入,最后从main函数退出。函数体由括起来。本例中函数体有两条语句,第一句声明一个字符串变量并且将字符串赋值,第二句为返回语句,将str返回。每条语句以“;”隔开,最后一条语句也有“;”。例 1.2 求两数之和int main()int sum; /定义一个整形变量int a=25;int b=40; /变量定义与赋值/求和运算sum=a+b; return sum; /返回求和结果本程序的作用是求两个整数a和b之和sum。每行代码之后的/后面的内容表示注释,在程序编译的时候不对其进行编译,也可以使用“/*/”进行注释。注释内容可以是英文字母,也可以是汉字。注释内容是给自己和别人阅读程序时提供帮助的,应做到简洁明了。注释可以出现在一行中的最右侧,也可以单独成一行,可以根据需要写在程序中的任何一行中。第3行是声明部分,声明一个变量sum,用来存放两数之和。第4、5行声明及定义两个变量a和b,并且将其初始化为25和40。第6行为注释语句,用来注释下面一行程序的意思。第7行sum=a+b,进行求和,并且把a+b的值赋值给sum,值得注意的是:a,b,sum三个变量之间的类型都是int,这也在告诉大家,运算时操作数之间需要保持类型一致。第8行return是关键字,作用是返回return后面跟的值,本条语句中向程序中返回sum,这样sum的值就可以在面板中显示了。因此,本程序的输出结果:65。例 1.3 求两数中的较大者int maxnum(int x,int y) /求x、y的最大值,x、y作为形参存在int max=0;if(x=y) /比较x、y的大小,如果ab,则返回x,否则返回ymax=x;elsemax=y;return max;int main()int a=12;int b=3;int max=maxnum(a,b); /调用用户自己写的函数maxnum求a、b的最大值return max;程序的执行结果是:12。本程序包括两个函数:主函数main()和被调用函数maxnum()。Maxnum()函数的作用是将x和y中的较大者的值返回给主程序。返回值是通过函数名maxnum带回到main函数中的调用maxnum的位置。为了使编译系统正确识别和调用maxnum函数,maxnum最好写在main函数之前。如果maxnum在main函数之后,在调用maxnum之前应在主函数中对其声明。有关函数声明详见后章。在main函数第5行中调用maxnum函数,在调用时将实际参数a、b的值分别传送给maxnum中的参数x、y(称为形式参数)。经过执行maxnum函数之后,得到一个返回值(即maxnum中return出来的值),这个返回值返回到调用maxnum的位置,即main函数第5行“=”的右侧,然后再把这个值赋值给变量max。最后有main函数return出返回值给上层程序,最后输出。因此,本程序的执行结果是:12。例1.4 得到系统当前日期。datetime main()datetime dt=getdate();/调用系统函数getdate得到当前日期return dt;本程序的运行结果:2012年6月13号。程序第一行main函数的返回类型为datetime,程序第3行调用系统函数getdate()取得系统当前日期。Getdate()返回一个datetime类型的值,将其赋值给dt,最后main()函数将其return出去给上层,在面板中显示。例1.5 输出一个魔方矩阵。matrix main()matrix mt=magic(3);/调用系统函数magic得到一个魔方矩阵return mt;输出结果:816357492例1.6 字符串相加string main()string str1=hello;string str2= world;return str1+str2;/返回字符串str1+str2的值程序输出结果:hello world。程序中,定义两个字符串变量str1和str2,并将其赋值为“hello”和“world”,最后将str1与str2相加,返回给上层。在上述几个例子中,用到了函数调用、实际参数和形式参数等概念,在此只做简单介绍,读者可以不予深入了解,在以后本书的介绍中,这些概念都会深入讲解。通过以上几个例子,可以看到:(1)VDAL程序是由函数构成的。一个VDAL程序有且只有一个main函数,也可以有一个main函数和多个其他函数。因此,函数是VDAL程序的基本单位。(2)函数可分为调用函数和被调用函数。被调用的函数可以是系统提供的库函数,也可以是用户根据自己需求自己设计的函数,如例1.3中的maxnum()。VDAL语言的函数库十分丰富,提供近千个系统函数供用户调用。(3)一个函数右两部分组成:分别是函数首部和函数体。函数首部,即函数第一行,包括函数名、函数类型、函数属性、函数参数(形式参数)、参数类型。函数体用括起来,里面是多条程序语句。(4)每个VDAL程序必须有一个返回值,且返回值类型与函数类型对应。(5)一个程序总是由main()函数开始执行,而不论mian()函数在程序中的哪个位置。(6)每个语句后面必须有一个分号,分号是VDAL语句的重要部分。(7)VDAL程序没有输出语句,用户的输出信息需要return给上层调用函数,让系统去处理。Return出去的结果会在UMS数据中间件工作区面板中显示。(8)可以用“/”或者“/*/”对语句进行注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。(9)VDAL程序书写形式自由,一行内可以写一条语句,也可以写多条语句,一条语句也可以写在多行上。1.4 VDAL程序的运行环境以及运行步骤1.4.1 VDAL语言运行环境前面已经列出了几个VDAL程序。在编辑好一个VDAL程序后如何上机运行呢?为了编译链接和运行VDAL程序,必须要有相应的VDAL编译系统。UMS数据中间件把VDAL程序的编辑、编译、链接、运行和显示等操作全部集中在一个界面上实现,功能丰富,使用方便,直观易用。UMS数据中间件如下图1.1所示:图1.1 UMS数据中间件UMS数据中间件是一款集数据提取、数据展示、数据分析为一体的多维应用软件平台。采用中间件模式,既保证数据的安全性,又可保证终端客户对数据的可用性。UMS数据中间件是一款强大的数据分析平台,内置了VDAL语法编译体系,可支持用户VDAL程序的编译和运行。1.4.2 VDAL语言运行步骤(1)进入UMS数据中间件的程序编译环境。进入中间件后,点击【高端应用】|【新建工作区】,依照向导创建我的工作区,将工作区命名为myProgram。(2)编辑程序源文件在工作区面板鼠标右键选择【模块属性设置】,然后选择【代码编写】,进入代码编辑区,如图1.2所示。如果要修改已有程序,只需找到已有程序的所在工作区,打开【代码编写】即可对已有程序进行修改。图1.2 UMS数据中间件代码编辑区(3)一键运行当源程序代码编辑完成后,在编辑界面中点击【数据预览】,如果程序正确通过编译连接,则可点击确定,回到面板中看程序输出结果;否则会在程序编辑区下面的面板中提示错误信息,用户可根据错误信息对源程序进行修改。第2章 VDAL程序算法所谓程序,就是一组计算机能识别和执行的指令。一个程序应当包括两个方面内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure);(2)对操作的描述。即操作步骤,也是算法(algorithm)。VDAL语言主要针对数据处理而设计的语法结构,在VDAL语法中支持一维数组、矩阵、多维数组等,在构建算法时,我们可以总分利用这些数据结构使得我们的算法更加简洁易用。2.1 算法的概念算法是解决一个问题的方法和步骤,可以把算法定义为解决某一确定类问题的任意一种特殊的方法。因为对同一问题,可以有不同的解决方法和步骤。例如,求1+2+100,可以先进1+2,再加3,再加4,一直加到100,而有人可能采用如下的方法:100+(1+99)+(2+98)+(49+51)+50,当然还可能存在其他的方法,对于能解决此问题的每一种方法和步骤都称为一种算法。程序算法可以分为两大类:数值运算算法和非数值运算算法。2.2 一个简单的算法案例2.3 算法的性质一个算法应该具有以下特点:(1)有穷性。一个算法应该包含有限的操作步骤,而不能是无限的。实际上,有穷性还表现在算法的运行时间上,一个可行的算法的执行时间必须在人们能容忍的范围内,例如,如果执行一个算法要经过1000年才能获得算法的结果,那么即使从理论上说这个算法是有穷的,但是该算法的执行时间是人们无法容忍的,所以人们也不会把该算法视为有效算法。对于一个执行超过多久的算法是无效的,则由人们的常识和需求而定。(2)确定性。算法中的每一个步骤都应当是确定的,而不应该是含糊不清的、模凌两可的。例如在某一算法中的某一步骤为:double count =10;那么该步骤有且仅有一个解释,声明了一个数值变量count,并将数值常量10赋值给该数值变量。算法中的每一个步骤应当不致被解释成不同的含义,而应是十分明确无误的。例如,如果某算法中存在如下的步骤:“n被一个整数除,余数为r”,这个步骤是不确定的。因为没有指明n被哪个整数除,因此无法执行。换一种说法就是,算法的含义应当是唯一的,而不应当产生“歧义性”。所谓歧义性是指对于同一个步骤,可以有两种或两种以上的合理解释。(3)有效性。算法中的每一个步骤都应该能有效的执行,并得到确定的结果。例如,b=0,则执行a/b是不能有效执行的。因为在除法中,分母不允许为零。例 2.1实现功能:从数据库中取出当天股票交易价格,并且通过二分查找法找到指定股票代码的价格。/*子函数,后章介绍*/double find_price(string strcode,dataset&rt)int i=0,low=0,high=rowcount(rt)-1;while(low=high)i=(low+high)/2;if(strcoderti0) low = i+1;else return(rti1);return(0);/*主函数*/double main()dataset rt=sqlread(select seccode,f007n from trade2704 where tradedate=to_date(20120716,yyyymmdd)order by seccode);/*SQL脚本执行*/*调用子函数,在dataset中查找股票代码为600000.sh的股票价格*/return(find_price(600000.sh,rt);第3章 数据类型3.1 VDAL语言的数据类型在前面已经提过,算法的处理对象是数据,而数据是以某种特定形式存在的,例如整数、实数、字符串等形式。不同的数据之间往往还存在着某种联系,例如:若干一维数组就可以组成一个多维数组dataset了。VDAL语言提供了以下一些数据类型,由这些数据类型可以构造出不同的数据结构。如表3.1所示:表3.1 VDAL语言数据类型分 类类型名称类型关键字基本类型布尔类型bool整形int浮点型double字符串类型string时间类型datetime构造类型一维数组类型array多维数组类型dataset矩阵类型matrix其他类型命令类型command在程序中对用到的所有数据都必须指定其数据类型。数据有常量和变量之分,它们分别属于以上这些数据类型。例如整形数据包括整形常量和整形变量。3.2 变量与常量3.2.1 常量在程序运行过程中,其值不能改变的量就是常量。常量一般从其字面形式即可判断,这种常量称为字面常量或直接常量。常量可以分为:整形常量、实型常量、字符串常量和时间常量。整形常量:12、-3、0;实型常量:1.2、3.1415926、-1.0;字符串常量:“hello world”;时间常量:2012/06/3;例3.1 常量的用处。string main()string str=hello;string result;switch(str)case world:result=wrold;break;case He:result=He;break;case hello:result=hello;break;return result;输出结果:hello。case语句后面所跟的字符串为字符串常量。3.2.2 变量变量,就是在程序运行期间可以改变的量。变量代表内存中具有特定属性的一个内存单元,它是用来存放数据,存放在变量的数据我们称为变量的值,在VDAL程序运行期间,这些值是可以改变的。每一个变量由两部分构成:变量名和变量值。每一个变量都应该有一个名字,即变量名,即使用变量的值,也是通过变量名被使用的。一个变量名就是一个标识符,标识符应该符合标识符的命名规则。VDAL语言中。标识符的命名规则规定:(1)标识符以字母、_、或者$开头,由数字、字母、下划线组成。(2)标识符不可以是系统保留字,即关键字。系统关键字有:arrayandboolbreakcasecontinuedatetimedataset defaultdoubleelsefalseforifintmatrixnotorreturnstringswitchtruewhileselectfromwhereorderorderbyby ascdesc(3)标识符不区分大小写。int a;与int A是同一个变量,WorlD和world是同一个变量名。(4)标识符的长度最长为64个字符。如果超出了这个范围,则会报错!在标识符命名过程中,尽量选择有含义的英文单词作为标识符,以便于能“见名知义”。如year ,day ,count ,total等。除了数值计算外,一般不要用代数符号(如a、b、x1等)作为变量名,以增加公式的可读性。例3.2标识符命名举例。a.下面是合法标识符:Str1,index,_dt,a,b,day_1_2,STUDENT,year,month,sumb.下面是不合法的标识符:#good, 1Hello, cd,int,123,_ptr?a在VDAL语言中,所有用到的变量必须先定义,也就是“先定义、后使用”。变量的定义方式如下:int student;也可以这样定义:int student=44;在VDAL语言中规定:(1)凡未被事先定义的变量,系统不把它认作变量名,这就能保证程序中变量名使用的正确性。例如,如果在声明部分有语句:string str;而在后面执行的时候把str写成sttr,例如:sttr=“hello”;在编译时系统会检查出sttr未被定义,不作为变量名。(2)每一个变量被指定为一个确定类型。(3)指定每一个变量属于一个确定类型,这就便于在编译的时候据此检查在程序中要求对该变量进行的运算是否合法。例如:int main()int a=4;bool b=true;int c=a/b;return c;运行结果:系统报错。c=a/b;是不合法的,除号两边的操作数一个是int类型,一个是bool类型,在编译的时候系统会报错。 (4)对变量的定义一般放在函数体的开头部分,也可以放在函数中某一段分程序中,它的作用域是从它定义处开始直到函数体结束。3.3 布尔类型boolbool是布尔型变量,也就是逻辑型变量的定义符。与int、double等类型类似,是VDAL语言规定的数据类型的其中一种。比较特殊的是:布尔型变量的值只有真(true) 和假 (false)。布尔类型的用途:(1)布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。例如:布尔型运算结果常用于条件语句。if (逻辑表达式) 如果是 true 执行这里; else 如果是 false 执行这里; ; (2)bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。例3.2 判断a是否大于b。bool func(int a,int b)bool bIndex;if(ab)bIndex=true;elsebIndex=false;return bindex;bool main()int a=4;int b=2;bool bCur=func(a,b);/调用函数判断a是否大于b,a大于b返回true;否则返回falsereturn bCur;运行结果:TRUE。3.4 整型int3.4.1 整型常量整型常量即整常数。在VDAL语言中,整常数的表示方法可以用十进制数表示。例如:10、-1、0、123等等。例3.3 输出名次。string main()string str;int a=2;switch(a)case 1:str=NO.1;break;case 2:str=No.2;break;case 3:str=No.3;break;return str;3.4.2 整型变量(1) 整型变量的定义在VDAL语言中所用到的变量必须在程序中定义,也就是所谓的“强制类型定义”。未经定义的变量唉程序中出现时,在编译环节会报错。整形变量的类型关键字为“int”,变量的定义方法如下:int i = 10;int j;在上述定义过程中,int为变量类型,i或者j为变量名,等号后面的常量为初始化的变量值。在变量定义时,我们可以自定义初始化将变量赋初值,也可以不赋初值。如果不给整型变量赋初值的话,系统会将其默认赋值为0。上述定义中,i=10,j=0。(2)整型数据的存储形式整型数据在内存中是以二进制的形式存放的。变量名为i的值为10,在内存中的形式为1010。(3)整型数据的取值范围在VDAL语言中,整型数据在内存中用64个bit位来表示,因此它的取值范围是-263263-1 。(4)支持的运算int类型为普通的数值型数据,可进行加,减,乘,除,取余,括号,自加自减等运算。优先级符合一般的算术运算的规则,通过括号来提高优先级。注意:其中自加自减运算,我们把它看作一条语句,即a+和a=a+1是对等的,所以不能把它和其他运算符混在一起运算,只能单独作为一条语句处理。例3.4 求边长a=3,b=4的直角三角形的面积。int main()int a,b;a=3;b=4;int s;s=1/2*a*b;/求直角三角形面积return s;程序运行结果:6。3.5 实型double3.5.1 实型常量VDAL语言中的实型数据就是我们平时所说的实数。实型数据的的表示形式为十进制小数形式,它由数字和点组成。例如,0.12、0.0、3.1415926等都是十进制小数形式。3.5.2 实型变量(1)实型变量的定义实型数据类型关键字为“double”,定义形式如下:double dIndex=1.2;double dPi=3.1415926;(2)实型数据取值范围VDAL语言中,double类型的有效数字为1516,数据在取值范围是:-1.7*10-3081.7*10308。(3)支持的运算double类型与int类型一样,是普通的数值型数据,可进行加,减,乘,除,取余,括号,自加自减等运算。优先级符合一般的算术运算的规则,通过括号来提高优先级。注意:其中自加自减运算,我们把它看作一条语句,即a+和a=a+1是对等的,所以不能把它和其他运算符混在一起运算,只能单独作为一条语句处理。对于取余运算,在运算的时候,会把两个操作数转换为整形进行运算,如3.2%2.1等价于3%2。例3.5 求r=2的圆的面积。double main()int r=2;double dPI=3.1415926;double s;s=2*dPI*r;/求的形面积return s;注意:本环境中,支持int类型与double类型的混合运算。编译时类型匹配不会报错。3.6 字符串类型string3.6.1 字符串常量VDAL语言中,字符串常量是一对双引号括起来的字符序列。例如,下面是合法的字符串常量:“hello world”、”zealink”、”2012/6/14”字符串常量和普通字符序列的区别是:每一个字符串常量的结尾加一个“字符串结束标识符”,以便编译系统据此判断字符串是否结束。VDAL语言中,规定以0作为字符串结束的标志。3.6.2 字符串变量(1)字符串变量的定义VDAL语言中,支持字符串操作,字符串类型关键字为“string”。定义方式如下:string str1=”hello”;string str2=”world”;(2)赋值VDAL语言中,字符串的赋值支持两种方式操作:字符串常量直接赋值和字符串变量赋值。字符串常量赋值:string stra=”hello”;字符型变量赋值:string strb=stra;(3)支持的操作string类型作为VDAL中的一种数据类型,支持多种运算操作。表3.2 string支持的运算操作string str_a=hello;string str_b=world;string str_c;操作类型方法结果+str_c=str_a + str_b;str_c=helloworld+=str_a += str_b;str_a=helloworldstr_a += ”world”;str_a=helloworldbool bl=TRUE;str_a+=bl;str_a=helloTRUEint secode=600000;str_a=secode=;a+=secode;str_a=secode=600000str_ a=now time:;datetime dtime=to_date(20110305);a+=dtime;str_a=now time:2011-3-5string str_a=hello;string str_b=hello;if(ab) return true;else return false;false=string str_a=hello;string str_b=hello;if(ab)return true;elsereturn false;true=string str_a=hello;string str_b=hello ;if(ab)return true;elsereturn false;false!=string str_a=hello;if(a!=”world”)return true;elsereturn false;true同上b)return true;elsereturn false;运行结果:true3.7 时间类型datetime3.7.1 时间类型常量VDAL语言中,规定由双引号包裹,引号内的内容如下:日期间用符号“-”隔开,格式为:Y年-M月-D日,时间间用符号“:”隔开,格式为:H时:M分:S秒,日期和时间用空格隔开,这样的类型为时间类型。时间型的常量表示为:“2011-12-11 12:12:12”,” 2011-1-21”(1)日期参数规定:其中Y,M,D都为正整数。其中Y0,M在只能在数值1和数值12之间选择。D的取值和Y,M都有关系,D的取值为1到M月份内的最大值。如2000年2月可以有29天,则D可以从1取到29。但如果是2001年2月,因为2001年不是闰年,所以2月份只有28天,所以D只能在1到28之间取值。如2011-2-3表示2011年2月3号,2010-2-28表示2010年2月28号都是合法的日期。下面都是非法的日期:如2011-13-2是错误的日期,因为不可能有13月。如2011-2-29是错误的日期,因为2011年2月最多只有28天,所以不会出现2011年2月29日的情况。(2)时间格式参数:其中H,M,S都是正数,取值范围是:H的取值为0到23,M的取值为0到59,S的取值0到59。下面的时间都是合法的:12:3:25表示12时3分25秒 13:59:36表示13时59分36秒下面的时间都是非法的:25:12:60 其中小时和分钟都超出了取值范围。(3)日期和时间用空格隔开例如:“2011-2-28 15:33:58”表示2011年2月28日15点33分58秒。对于一个时间常量,可以只有日期而不用显示的写出时间,时间的默认值为0点0分0秒。如“2011-2-28”就表示2011年2月28日0点0时0分。如果要显式的写出时间,则一定要写完成。不能只写一部分。例如,写出完整的时间“2011-2-28 15:40:50”表示2011年2月28日15点40分50秒。但是如果写成下面这种形式“2011-2-28 15:40”是错误的。注意可以不给出时间,如果给出时间就一定要完整的给出。3.7.2 时间类型变量(1)时间类型变量的定义在VDAL语言中,时间类型的关键字为datetime,定义方式如下:datetime time1,time2 ;/*time默认为0年0月0日*/datetime dtime = to_date(20110305);/*dtime 的值为2011年3月5号*/time2=time1;对于一个时间型变量需要使用to_date函数,to_date函数是把一个表示时间的字符串转换为时间型变量的值。to_date函数的参数为字符串类型,该字符串是一个表示时间的字符串(”20110101”)。例如:dime = to_date(2011-01-12);/*dtime 的值为2011年1月12号*/(2)datetime支持的操作datetime类型作为VDAL中的一种数据类型,支持多种运算操作。表3-3 datetime支持的操作datetime dat1 = to_date(“20110202);datetime dat2 = to_date(“20110203”);datetime dat3;操作类型方法结果+long total_second=86400;dat3=dat1+ total_second;dat3=2011年2月3日long total_second=86400;dat3= total_second+dat1;dat3=2011年2月3日-long total_second=86400dat3=dat1- total_second;dat3=2011年2月1日long num = dat2 dat1;n 的值为86400+=long total_second=86400;dat3+= total_second;dat3=2011年2月3日-=long total_second=86400;dat3-= total_second;dat3=2011年2月1日if(dat1dat2) return true;else return false;false=datetime dat3 = to_date(“20110202)if(dat1=dat3) return true;else return false;true=datetime dat3 = to_date(“20110202)if(dat1=dat3) return true;else return false;true!=if(dat1!=dat2) return true;else return false;true同上关系运算符双目运算自左向右=、=、=、=、!=(3)逻辑运算符:!、&、|、AND、OR、NOT(4)赋值运算符:=、+=、-+、*=、/=(5)下标运算符:(6)其他运算符:&、+、-表达式是由操作符和相应的操作数组成的式子。表达式是将同类型的数据(如常量、变量、函数、指标等)或者是可以强制转换的数据同运算符号按一定的规则连接起来的、有意义的式子称为表达式。例如算术表达式、赋值表达式、布尔表达式等。对于不同的数据类型,所使用的运算符是不同的,下面我们对各个类型的表达式做详细的解释。4.1算术运算符与算术表达式 算术运算是对数据进行加工处理的过程,得到运算结果的数学公式或其它式子统称为算术表达式。4.1.1算术运算符及其优先级算术表达式中用到的运算符包括加、减、乘、除四种:加(+):加法运算符或者正值运算符,如2+3+5,+3;减(-):减法运算符或者负值运算符,如5-2,-3;乘(*):乘法运算符,如2*3;除(/):除法运算符,如4/2。双目运算符接受两个操作数,即左操作数和右操作数。单目运算符就是只接受一个操作数的操作符。例如,对于负号而言,因为他是单目运算符,所以在运算-10中,负号和数值是结合,形成数值-10。而双目运算符是指运算所需操作数为两个。如加号“+”,可以使v1+10;有数值变量v1和数值常量10作为加法操作运算的数据。如果写成+10,则会出现语法错误,因为加法没法对一个操作数实行相应的运算。负号的优先级最高,乘号和除号的优先级次之,加号和减号的优先级最低,当表达式中同时出现多个运算符时,运算符高的将先进行运算。不过可以通过加括号的形式使得某些运算优先被执行。下面通过实例来解释不同优先级操作符在算术表达式中的混合运算。(1)算术表达式一:1-2*5对于上面的表达式,首先因为负号的优先级高于乘号”*”,所以符号先于数值2结合,形成数值-2,因为乘号“*”的优先级高于减号“-”的,所以先进行乘法运算,数值-2和数值5进行乘法运算,然后其结果再与数值1做减法运算。我们用括号来表示其优先级,则上述表达式等价于(1-(-2)*5)。下面分步骤来解析上述算术表达式:Step1:符号和数值2形成数值-2;Step2:数值-2和数值5进行乘法运算,结果为-10;Step3:用数值1减去步骤二中的结果。结果为11。(2)算术表达式二:1-(2*5)通过加括号使得乘法先被执行,虽然乘号的优先级低于符号的优先级,但是因为加括号,从而使得乘法先被执行。执行步骤如下:Step1:数值2和数值5相乘,结果为10;Step2:取Step1结果的负数,结果为-10;Step3:数值1减去Step2中的结果,结果为11。(3)算术表达式三:int v1=12,v2=13,v3=16; 1+10+v1-v2+v3;上述所有变量都是数值型变量。并且v1的值为12,v2的值为13,v3的值为16。通过实例三来看一下对于同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国甜八宝数据监测报告
- 快递考试题目及答案
- 空中乘务考试题及答案
- 果蔬坚果加工工岗位操作技能考核试卷及答案
- 炼钢准备工专项考核试卷及答案
- 2025年中国多功能平板跑步机数据监测研究报告
- 矿用发电车操作工基础考核试卷及答案
- 综合布线装维员上岗考核试卷及答案
- 精神控制考试题及答案
- 金蝶软件考试题及答案
- 《高铁信号连锁设备》课件-(一) 平面布置图的识读
- 泥浆护壁旋挖钻孔灌注桩施工技术交底
- 初中地理跨学科学习实践研究
- 幼儿园常见传染病的预防课件
- GB/T 36287.1-2025轨道交通地面装置直流牵引供电能量利用第1部分:储存系统
- TY/T 3501.5-2024高山滑雪板性能测定第5部分:弯曲振动
- DB42∕T 1496-2019 公路边坡监测技术规程
- 塔拉韦斯特弗《你当像鸟飞往你的山》中英互译
- 工勤技能考试职业道德试题
- 《红色的天空》话剧剧本
- 2025版地热能钻井服务合同范本3篇
评论
0/150
提交评论