VDAL第二版.docx

上传人:b****5 文档编号:4165031 上传时间:2022-11-28 格式:DOCX 页数:94 大小:317.57KB
下载 相关 举报
VDAL第二版.docx_第1页
第1页 / 共94页
VDAL第二版.docx_第2页
第2页 / 共94页
VDAL第二版.docx_第3页
第3页 / 共94页
VDAL第二版.docx_第4页
第4页 / 共94页
VDAL第二版.docx_第5页
第5页 / 共94页
点击查看更多>>
下载资源
资源描述

VDAL第二版.docx

《VDAL第二版.docx》由会员分享,可在线阅读,更多相关《VDAL第二版.docx(94页珍藏版)》请在冰豆网上搜索。

VDAL第二版.docx

VDAL第二版

 

VDAL语言编程

数据是核心生产资料,技术工具就是先进生产力

 

知临信息技术有限公司

 

上海知临信息技术有限公司

ShanghaiZealinkInformation&TechnologyCo.,Ltd.

 

上海知临信息技术有限公司是一家年轻而又成熟的高科技软件企业。

公司致力于为证券金融行业提供完整的数据E化解决方案,凭借丰富的业内经验和雄厚的技术实力,依托互联网快速便捷的资源,结合最先进的经营管理理念,将互联网与价值网应用整合于一体,集资源与专业效率于一身,使技术工具成为市场竞争中的强有力武器,协助客户打造核心竞争优势。

基于此理念,公司从二零零五年成立之初,就致力于证券金融行业的数据库及文件的快速传输、自动同步、跨平台跨系统支持,开发出了UTS数据传输系统,此套软件产品一举打破了业内原有的局势,使企业无需投入大量的人力物力,即可通过网络将数据库及文件信息直接传递给客户,并且无需人工备份与管理,保证了数据资源的安全性与及时性。

同时,该产品还支持数据跨数据库平台传输,可以在MSSQLServer、Oracle、MySql、DB2中交互传输;支持Windows和Linux跨操作系统传输,支持HTTP/SOCK4/SOCK5各类代理服务器设置,支持SOAP直接越过代理服务器,支持局域网内应用命名管道等等,提高了企业的硬件使用效果,促进了工作效率的提高,为客户企业的快速反应与扩张立下了汗马功劳,获得了业内的一致好评。

公司搭建了先进的人力资源管理平台,吸收、培养、激励、稳定优秀人才。

通过人员的合理配置和使用,服务于企业战略目标,实现员工与企业的共同成长。

公司核心管理团队成员都具有十年以上的金融行业服务经验,站在金融数据服务行业技术前沿,引领公司成为行业典范。

在产品不断升级,传输速度、处理能力等性能不断提高的基础上,公司在此领域至今一直保持绝对的领先优势。

为金融行业数据多维分析与应用,我们推出了简单易用的可视化数据分析语言——VDAL(VisualDataAnalysisLanguage),针对数据分析而设计的计算机程序脚本语言。

VDAL语言是在C语言的基础上发展而来的,继承了C语言中程序结构化设计的风格,并且在C语言数据类型的基础上增加了string、array、matrix、dataset类型,可以以矩阵数组等形式直接处理数据。

它运行于中间件(UMS)数据分析平台且应用范围广泛,具备很强的数据处理能力,数据处理结果在中间件面板中可视化显示,实现所见即所得。

 

目录

第1章VDAL语言概述1

1.1VDAL语言的定义1

1.2VDAL语言的特点1

1.3简单的VDAL语言程序介绍2

1.4VDAL程序的运行环境以及运行步骤5

第2章VDAL程序算法7

2.1算法的概念7

2.2一个简单的算法案例7

2.3算法的性质7

第3章数据类型9

3.1VDAL语言的数据类型9

3.2变量与常量9

3.2.1常量9

3.2.2变量10

3.3布尔类型——bool12

3.4整型——int13

3.4.1整型常量13

3.4.2整型变量13

3.5实型——double14

3.5.1实型常量14

3.5.2实型变量14

3.6字符串类型——string15

3.6.1字符串常量15

3.6.2字符串变量15

3.7时间类型——datetime18

3.7.1时间类型常量18

3.7.2时间类型变量19

第4章VDAL运算符与表达式21

4.1算术运算符与算术表达式22

4.1.1算术运算符及其优先级22

4.1.2负号与减号的说明24

4.1.3算术表达式中的操作数的类型25

4.1.4自加、自减25

4.1.5使用介绍25

4.2关系运算符和关系表达式26

4.2.1关系运算符及其优先级26

4.2.2关系表达式26

4.2.3关系表达式的作用32

4.3逻辑运算符与逻辑表达式32

4.3.1逻辑运算符及其优先级32

4.3.2逻辑运算规则32

4.3.3布尔表达式33

4.3.4逻辑表达式应用介绍34

4.4字符串表达式35

4.4.1字符串表达式中使用的操作符35

4.4.2字符串表达式中的操作数类型35

4.4.3字符串的运算36

4.4.4字符串表达式的使用36

4.5时间类型表达式37

4.5.1操作符说明37

4.5.2时间表达式中的操作数38

4.5.3时间表达式的作用39

4.5.4字符串型常量和时间型常量的区别39

4.6小结40

第5章程序三大结构41

5.1VDAL语言程序结构概述41

5.2顺序结构程序设计42

5.3条件结构程序设计44

5.3.1if语句44

5.3.2switch语句46

5.3.3选择结构程序举例48

5.4循环程序结构设计50

5.4.1break语句和continue语句50

5.4.2while循环语句50

5.4.3for循环语句51

5.4.4循环嵌套53

5.4.5循环程序设计实例54

第6章容器类型56

6.1array类型及其应用56

6.1.1array数组的定义56

6.1.2array数组元素的引用56

6.1.3array数组支持的数据类型57

6.1.4array数组的应用58

6.2dataset类型和其应用59

6.2.1dataset数组的定义59

6.2.2dataset数组元素的引用60

6.2.3dataset支持的数据类型61

6.2.4dataset数组的应用62

6.3matrix类型和其应用64

6.3.1matrix数组的定义64

6.3.2matrix数组的定义64

6.4array、dataset和matrix之间的转换68

第7章函数69

7.1函数定义的一般形式69

7.1.1无参函数的定义形式69

7.1.2有参函数定义的一般形式70

7.1.3关于函数定义70

7.2函数分类71

7.3函数调用71

7.3.1没有参数的函数的调用71

7.3.2固定参数系统函数的调用71

7.4函数的作用72

 

第1章VDAL语言概述

1.1VDAL语言的定义

VDAL(VisualDataAnalysisLanguage),可视化数据分析语言,是针对数据分析而设计的计算机程序脚本语言。

VDAL语言是在C语言的基础上发展而来的,继承了C语言中程序结构化设计的风格,并且在C语言数据类型的基础上增加了string、array、matrix、dataset类型,可以以矩阵数组等形式直接处理数据。

它运行于中间件(UMS)数据分析平台且应用范围广泛,具备很强的数据处理能力,数据处理结果在中间件面板中可视化显示,实现所见即所得。

1.2VDAL语言的特点

一种语言之所以存在并且可以得到大家的认可及运用,总是具有其独特的并且优于别的语言的特点。

VDA语言主要特点如下:

(1)VDAL语言简洁紧凑,结构化设计,使用方便。

VDAL语言中,一共有31个关键字,7种控制语句,程序采用结构化设计思想,书写形式自由才,采用小写字母表示。

(2)数据类型丰富,运算符多样。

VDAL语言中除了有C语言中的常见基本类型,还有string、array、matrix、dataset等数据运算类型,极大程度上的方便了数据的预算和分析。

此外,VDAL语言支持23种运算符,从而使运算丰富,表达式类型多样灵活。

(3)具有多样的控制语句类型,如if…else语句、while语句、switch语句、for语句。

每一个控制语句作为一个模块,便于实现程序的模块化。

(4)强大的函数库支持。

Vdal语言目前可以提供近1000个基础和矩阵函数,支持矩阵运算,可以满足用户多方面的需求。

同时用户也可以自己编写函数,方便用户自己使用,也可和别的用户共享,以提高编写程序的效率。

(5)command命令支持板块联动,实现相关数据之间不同方式的操作和展示。

通过函数和传递参数变量,实现了板块与板块之间的简单通信,然后用双击事件的vdal语法实现板块与板块的联动,对需要数据展示的用户非常方便。

(6)安全的语法设置。

Vdal语法屏蔽了指针,也不需要用户去关心内存的分配和释放,这些vdal语法会自动根据用户的需求分配和释放内存,避免用户因操作内存不当,造成内存泄露。

所以vdal语法具有很好的安全性。

1.3简单的VDAL语言程序介绍

下面简单介绍几个简单的VDAL语言程序,然后分析VDAL语言程序的特点。

例1.1输出一行信息

stringmain()

{

stringstr="welcomtozealink!

";

returnstr;

}

本程序的作用是在面板中输出一行信息:

welcomtozealink!

先看程序第一行,其中main是函数的名字,表示“主函数”,main前面的string表示次函数是字符串类型,即函数执行完成后返回一个字符串。

每一个VDAL程序都必须有一个main函数,且有且只有一个main函数。

程序从main函数进入,最后从main函数退出。

函数体由{}括起来。

本例中函数体有两条语句,第一句声明一个字符串变量并且将字符串赋值,第二句为返回语句,将str返回。

每条语句以“;”隔开,最后一条语句也有“;”。

例1.2求两数之和

intmain()

{

intsum;//定义一个整形变量

inta=25;

intb=40;//变量定义与赋值

//求和运算

sum=a+b;

returnsum;//返回求和结果

}

本程序的作用是求两个整数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求两数中的较大者

intmaxnum(intx,inty)//求x、y的最大值,x、y作为形参存在

{

intmax=0;

if(x>=y)//比较x、y的大小,如果a>b,则返回x,否则返回y

max=x;

else

max=y;

returnmax;

}

intmain()

{

inta=12;

intb=3;

intmax=maxnum(a,b);//调用用户自己写的函数maxnum求a、b的最大值

returnmax;

}

程序的执行结果是:

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得到系统当前日期。

datetimemain()

{

datetimedt=getdate();//调用系统函数getdate得到当前日期

returndt;

}

本程序的运行结果:

2012年6月13号。

程序第一行main函数的返回类型为datetime,程序第3行调用系统函数getdate()取得系统当前日期。

Getdate()返回一个datetime类型的值,将其赋值给dt,最后main()函数将其return出去给上层,在面板中显示。

例1.5输出一个魔方矩阵。

matrixmain()

{

matrixmt=magic(3);//调用系统函数magic得到一个魔方矩阵

returnmt;

}

输出结果:

8

1

6

3

5

7

4

9

2

例1.6字符串相加

stringmain()

{

stringstr1="hello";

stringstr2="world";

returnstr1+str2;//返回字符串str1+str2的值

}

程序输出结果:

helloworld。

程序中,定义两个字符串变量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.4VDAL程序的运行环境以及运行步骤

1.4.1VDAL语言运行环境

前面已经列出了几个VDAL程序。

在编辑好一个VDAL程序后如何上机运行呢?

为了编译链接和运行VDAL程序,必须要有相应的VDAL编译系统。

UMS数据中间件把VDAL程序的编辑、编译、链接、运行和显示等操作全部集中在一个界面上实现,功能丰富,使用方便,直观易用。

UMS数据中间件如下图1.1所示:

图1.1UMS数据中间件

UMS数据中间件是一款集数据提取、数据展示、数据分析为一体的多维应用软件平台。

采用中间件模式,既保证数据的安全性,又可保证终端客户对数据的可用性。

UMS数据中间件是一款强大的数据分析平台,内置了VDAL语法编译体系,可支持用户VDAL程序的编译和运行。

1.4.2VDAL语言运行步骤

(1)进入UMS数据中间件的程序编译环境。

进入中间件后,点击【高端应用】|【新建工作区】,依照向导创建我的工作区,将工作区命名为myProgram。

(2)编辑程序源文件

在工作区面板鼠标右键选择【模块属性设置】,然后选择【代码编写】,进入代码编辑区,如图1.2所示。

如果要修改已有程序,只需找到已有程序的所在工作区,打开【代码编写】即可对已有程序进行修改。

图1.2UMS数据中间件代码编辑区

(3)一键运行

当源程序代码编辑完成后,在编辑界面中点击【数据预览】,如果程序正确通过编译连接,则可点击确定,回到面板中看程序输出结果;否则会在程序编辑区下面的面板中提示错误信息,用户可根据错误信息对源程序进行修改。

 

第2章VDAL程序算法

所谓程序,就是一组计算机能识别和执行的指令。

一个程序应当包括两个方面内容:

(1)对数据的描述。

在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure);

(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)确定性。

算法中的每一个步骤都应当是确定的,而不应该是含糊不清的、模凌两可的。

例如在某一算法中的某一步骤为:

doublecount=10;那么该步骤有且仅有一个解释,声明了一个数值变量count,并将数值常量10赋值给该数值变量。

算法中的每一个步骤应当不致被解释成不同的含义,而应是十分明确无误的。

例如,如果某算法中存在如下的步骤:

“n被一个整数除,余数为r”,这个步骤是不确定的。

因为没有指明n被哪个整数除,因此无法执行。

换一种说法就是,算法的含义应当是唯一的,而不应当产生“歧义性”。

所谓歧义性是指对于同一个步骤,可以有两种或两种以上的合理解释。

(3)有效性。

算法中的每一个步骤都应该能有效的执行,并得到确定的结果。

例如,b=0,则执行a/b是不能有效执行的。

因为在除法中,分母不允许为零。

例2.1

实现功能:

从数据库中取出当天股票交易价格,并且通过二分查找法找到指定股票代码的价格。

/*子函数,后章介绍*/

doublefind_price(stringstrcode,dataset&rt)

{

inti=0,low=0,high=rowcount(rt)-1;

while(low<=high)

{

i=(low+high)/2;

if(strcode

high=i-1;

elseif(strcode>rt[i][0])

low=i+1;

else

return(rt[i][1]);

}

return(0);

}

/*主函数*/

doublemain()

{

datasetrt=sqlread("selectseccode,f007nfromtrade2704wheretradedate=to_date('20120716','yyyymmdd')orderbyseccode");/*SQL脚本执行*/

/*调用子函数,在dataset中查找股票代码为600000.sh的股票价格*/

return(find_price("600000.sh",rt));

}

 

第3章数据类型

3.1VDAL语言的数据类型

在前面已经提过,算法的处理对象是数据,而数据是以某种特定形式存在的,例如整数、实数、字符串等形式。

不同的数据之间往往还存在着某种联系,例如:

若干一维数组就可以组成一个多维数组dataset了。

VDAL语言提供了以下一些数据类型,由这些数据类型可以构造出不同的数据结构。

如表3.1所示:

表3.1VDAL语言数据类型

分类

类型名称

类型关键字

基本类型

布尔类型

bool

整形

int

浮点型

double

字符串类型

string

时间类型

datetime

构造类型

一维数组类型

array

多维数组类型

dataset

矩阵类型

matrix

其他类型

命令类型

command

在程序中对用到的所有数据都必须指定其数据类型。

数据有常量和变量之分,它们分别属于以上这些数据类型。

例如整形数据包括整形常量和整形变量。

3.2变量与常量

3.2.1常量

在程序运行过程中,其值不能改变的量就是常量。

常量一般从其字面形式即可判断,这种常量称为字面常量或直接常量。

常量可以分为:

整形常量、实型常量、字符串常量和时间常量。

整形常量:

12、-3、0;

实型常量:

1.2、3.1415926、-1.0;

字符串常量:

“helloworld”;

时间常量:

2012/06/3;

例3.1常量的用处。

stringmain()

{

stringstr="hello";

stringresult;

switch(str)

{

case"world":

result="wrold";break;

case"He":

result="He";break;

case"hello":

result="hello";break;

}

returnresult;

}

输出结果:

hello。

case语句后面所跟的字符串为字符串常量。

3.2.2变量

变量,就是在程序运行期间可以改变的量。

变量代表内存中具有特定属性的一个内存单元,它是用来存放数据,存放在变量的数据我们称为变量的值,在VDAL程序运行期间,这些值是可以改变的。

每一个变量由两部分构成:

变量名和变量值。

每一个变量都应该有一个名字,即变量名,即使用变量的值,也是通过变量名被使用的。

一个变量名就是一个标识符,标识符应该符合标识符的命名规则。

VDAL语言中。

标识符的命名规则规定:

(1)标识符以字母、_、@或者$开头,由数字、字母、下划线组成。

(2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1