《实验经济学》课件第7讲 经济实验程序开发方法_第1页
《实验经济学》课件第7讲 经济实验程序开发方法_第2页
《实验经济学》课件第7讲 经济实验程序开发方法_第3页
《实验经济学》课件第7讲 经济实验程序开发方法_第4页
《实验经济学》课件第7讲 经济实验程序开发方法_第5页
已阅读5页,还剩248页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《实验经济学》第七讲:

经济实验程序开发方法财经大学经济学院-经济学实验室1《实验经济学》第七讲:

经济实验程序开发方法1确保实验结果的有效性,实验室实验通常两小时内结束人力组织十几个甚至二十几个交易回合每个交易回合随机配对怎么办?开发计算机程序2确保实验结果的有效性,实验室实验通常两小时内结束2起先,开发实验程序只是为了更充分地掌握数据、减少实验运行失误近年的发展表明,实验运行(交易)过程的电子化为实验方法开辟了新的天地大大降低了交易成本拓展了市场参与者的市场语言新市场机制在互联网和电子商务时代随处可见网络环境下设计新机制并运用实验手段检验新机制的特性,已经成了实验经济学的重要发展方向3起先,开发实验程序只是为了更充分地掌握数据、减少实验运行失误§1 VisualBasic快速入门4§1 VisualBasic快速入门4讨论的要点对基本开发环境的介绍面向对象的程序设计方法变量和变量组选择结构循环结构对数据的存取运用VB实现实验室内的信息传递5讨论的要点对基本开发环境的介绍5一、VB的基本开发环境6一、VB的基本开发环境6运行MicrosoftVisualBasic6.0中文版,弹出“新建工程”的对话窗口。选择“标准EXE”并点击按键“打开”。7运行MicrosoftVisualBasic6.0中文88屏幕的中央是对象窗口。对象窗口内所展示的是一个空白的窗体窗体的标题栏上显示“Form1”。窗体(Form)是VB程序的用户界面。程序员决定在窗体上放置哪些内容(这些内容的学名叫“控件”)、又要对这些内容进行哪些处理;运行过程中,使用者将在窗体上看到这些内容的部分或全部,并根据编程人员的设计通过窗体上的内容实现特定功能。9屏幕的中央是对象窗口。9屏幕上方所显示的是标题栏、菜单条和工具栏。屏幕的左侧是VB的工具箱,工具箱内包含VB的多种控件。“控件”是能够被放置在窗体上的内容。窗体和控件在VB里都被称作“对象”。屏幕的右上方所显示的是工程资源管理器。定义应用程序的层次结构。屏幕右下方是属性窗口。所展示的是当前被选中的对象的各种属性。“属性”所描述的是VB中对象的特征。比如,窗体的属性包括窗体的名称、窗体的宽度和高度以及窗体在计算机屏幕上的位置等等。10屏幕上方所显示的是标题栏、菜单条和工具栏。10 编写一个最简单的应用程序熟悉一下VB开发环境,在动手的过程中很多问题会自然而然地明朗……11 编写一个最简单的应用程序熟悉一下VB开发环境,在动手的过程给窗体和工程命名。选中空白窗体Form1。在属性窗口的各个属性中,点亮“(名称)”一栏并将窗体的名称改为“frmHello”。再选中工程资源管理器,点亮根目录“工程1(工程1)”。选中属性窗口中“(名称)”一栏,将工程1的名称改为“Hello”。通过菜单将窗体文件“frmHello”和工程“Hello”存储在适当的地方。12给窗体和工程命名。12要给VB程序中的对象起有意义的名字。便于你追踪管理这些对象,也能帮助别的人理解你的程序。按照对象的类型给名称加前缀,前缀由三个小写字母构成。窗体对象(Form)的前缀是frm图标对象(Label)的前缀是lbl文本框对象(TextBox)的前缀是txt命令按键对象(CommandButton)的前缀是cmd在前缀的后面,加上以大写字母开头的、有一定意义的单词来描述对象的作用。txtInput是用于输入的文本框。13要给VB程序中的对象起有意义的名字。13将对象窗口最大化并调整frmHello的边框将其拉大。在属性窗口中点亮frmHello的“Caption”属性,将其改为“Hello”。快速双击屏幕左侧工具箱中的图形控件(Image),在窗体frmHello的中央就会出现一个图形对象Image1。点击Image1的“Picture”属性右侧的省略号“…”,将会弹出一个加载图片的对话框。在你的计算机内选择你喜欢的图片(注意,图片不要太大)并点击按键“打开”。调整Image1的边框大小并用鼠标把Image1拖动到窗体的恰当位置。14将对象窗口最大化并调整frmHello的边框将其拉大。141515在Image1的属性窗口中,将Image1的名称改为“imgNinghua”,并将“Visible”属性改为“False”。点击VB开发环境屏幕上方工具栏内的启动键“”来运行程序。我们发现运行中的窗体上并不能见到所载入的图片。再点击屏幕上方工具栏内的结束键“”以终止程序的运行。16在Image1的属性窗口中,将Image1的名称改为“img快速双击屏幕左侧工具箱中的图标控件(label),在窗体frmHello的中央就会出现一个图标Label1。采用类似的步骤,将Label1的名称改为“lblHello”并将该图标移动到图片imgNinghua的右侧。选中图标lblHello的“Caption”属性,并将该属性的内容改为“Hello,everyone.”。随后再选中图标lblHello的“Font”属性。点击该属性右侧的省略号“…”,你将会看到选择字体的对话框。选择小四号字并调整lblHello的边框大小。17快速双击屏幕左侧工具箱中的图标控件(label),在窗体fr1818快速双击图标lblHello,这时会弹出程序代码窗口,在该窗口内会显示如下字样:PrivateSublblHello_Click()EndSub19快速双击图标lblHello,这时会弹出程序代码窗口,在该窗lblHello_Click是一个事件。VB的事件是指VB的对象对某个外部事件所作出的响应。事件lblHello_Click是程序使用者点击了图标lblHello之后程序所执行的操作。在“PrivateSublblHello_Click()”和“EndSub”之间所加入的各行计算机语句,就是当使用者点击lblHello这一外部事件发生时VB程序才会执行的操作。20lblHello_Click是一个事件。20PrivateSublblHello_Click()imgNinghua.Visible=TrueEndSub21PrivateSublblHello_Click()21现在保存工程,点击启动键“”来运行程序。试着点击一下“Hello,everyone.”,图片就会在窗体内出现。 (其实编程就这么简单!)22现在保存工程,点击启动键“”来运行程序。22点击结束键“”终止程序的运行。如果编程人员不希望每次都在VB的开发环境内运行程序,编程人员可以生成可执行文件。点击菜单中的“文件”并选中“生成Hello.exe(K)…”,将Hello.exe存放在你希望存放的目录中。23点击结束键“”终止程序的运行。23二、面向对象的程序设计方法24二、面向对象的程序设计方法241.VB的对象、属性、方法和事件251.VB的对象、属性、方法和事件25VB的窗体和控件是具有自己的属性、方法和事件的对象。属性是一个对象的性质方法是对象的动作事件是对对象的响应26VB的窗体和控件是具有自己的属性、方法和事件的对象。26小孩玩的气球同样具有属性、方法和事件属性直径和颜色状态属性(充气的或未充气的)不可见的性质(如寿命)方法:气球本身所固有的方法和动作充气方法(用氦气充满气球的动作)放气方法(排出气球中的气体)上升方法(放手让气球飞走)事件:预定义的对某些外部事件的响应对刺破它的事件响应是放气对放手事件的响应是升空27小孩玩的气球同样具有属性、方法和事件27设置气球的属性:

Balloon.Color=Red

Balloon.Diameter=10

Balloon.Inflated=True注意代码的语法,首先是对象(Balloon),接着是属性(Color),然后是赋值(Red)。属性也可以在程序设计阶段在“属性”窗口中设置。28设置气球的属性:28调用气球的方法:

Balloon.Inflate

Balloon.Deflate

Balloon.Rise5它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。29调用气球的方法:29 气球对一个事件的响应如下所示:

SubBalloon_Puncture()

Balloon.Deflate

Balloon.MakeNoise"Bang"

Balloon.Inflated=False

Balloon.Diameter=1EndSub本例中代码描述了当刺穿事件发生时,气球的行为。30 气球对一个事件的响应如下所示:302.面向对象的程序设计方法312.面向对象的程序设计方法31某个实验里,每个销售者都要同时提交两个决定:选择产品的销售价格同时还要决定是否对产品价格作广告32某个实验里,每个销售者都要同时提交两个决定:32在这个实验中的销售者有可能先定价、再考虑是否作广告,随后将已经做好的决定同时提交;也有可能是相反的次序,先决定是否作广告、然后再定价,随后提交决策;还有可能,在最后提交决策之前她会改主意,比如她更改了初始选择的价格……实验程序中应当如何实现这样的灵活性?面向对象的程序设计方法33在这个实验中的销售者33传统的程序设计方法如C语言,Fortran等,都是面向过程的、线性的程序设计方法。新发展起来的Java,VB等语言,是面向对象的程序设计方法。34传统的程序设计方法如C语言,Fortran等,都是面向过程的面向过程的程序设计方法所强调的是如何完成某一任务。面向过程的程序设计中,编程人员要从完成任务的第一步直到最后一步安排计算机所执行的每一个细节。在面向过程的程序的应用过程中使用者没有任何自主权、处于完全被动的角色使用者无权决定提交信息和处理信息的次序35面向过程的程序设计方法所强调的是如何完成某一任务。35而面向对象的(或事件驱动的)程序设计中编程人员围绕着用户界面中的对象进行设计只有用户对对象做出了某种动作之后程序才会进行特定的操作。程序的使用者自己控制提交信息和处理信息的次序。36而面向对象的(或事件驱动的)程序设计中编程人员围绕着用户界面 面向对象的程序设计大致要遵从下面五个步骤:对应用程序进行规划;建立用户界面;编写程序代码(即计算机语句);对程序进行测试;书写程序文档。37 面向对象的程序设计大致要遵从下面五个步骤:37我们先着重介绍前两个步骤,后三个步骤将在下一讲《经济实验程序开发实例》中穿插说明。38我们先着重介绍前两个步骤,后三个步骤将在下一讲《经济实验程序对应用程序进行规划首先要识别该程序要完成哪些任务。在识别任务时,对下述问题的回答会有帮助:实验参加者需要提交哪些信息?经济实验程序需要完成哪些计算和处理?在用户界面上需要向实验参加者展示哪些信息?新的信息在用户界面上出现时,旧的信息是否会消失?实验程序在什么条件下会结束运行?39对应用程序进行规划首先要识别该程序要完成哪些任务。在识别任务对应用程序进行规划(续)确定所要完成的任务究竟要通过哪些对象来实现。图标(Label)用于展示特定的标识或运算结果文本框(TextBox)用于采集信息。40对应用程序进行规划(续)确定所要完成的任务究竟要通过哪些对象对应用程序进行规划(续)确定哪些对象的哪些事件被触发时,程序所需要实现的任务会被完成。并不是所有的对象都需要事件触发。你只需要针对部分对象的事件编写程序,这些程序语句会在事件发生时执行;而另外一些对象不需要你编程就能实现特定的任务。比如文本框(TextBox)不需要任何事件触发就能实现采集信息的任务。41对应用程序进行规划(续)确定哪些对象的哪些事件被触发时,程序对应用程序进行规划(续)程序规划步骤可以用任务(Task)、对象(Object),事件(Event)的分解图(TOE)来实现。42对应用程序进行规划(续)程序规划步骤可以用任务(Task)、任务(Task)对象(Object)事件(Event)销售者输入价格信息文本框txtPrice无销售者选择作广告选择按键optRevoptRev_Click点击销售者选择不作广告选择按键optNRevoptRev_Click点击同时提交价格与广告决策命令按键cmdOKcmdOK_Click点击对应用程序进行规划(续)43任务(Task)对象(Object)事件(Event)销售者用户界面设计对VB来说用户界面设计就是对窗体上的各个对象的排列安排。基本的原则:按照一定的顺序排列对象,要么从上至下,要么从左到右。相关的对象放在相邻位置(如示例中的optRev和optNRev)。涉及实验参加者提交决策的对象需要在醒目位置显示。完成对各个对象的初步排列后,可以根据需要在对象的旁边添加一些图标以说明各个对象的作用。44用户界面设计对VB来说用户界面设计就是对窗体上的各个对象的排用户界面设计(续)45用户界面设计(续)45用户界面设计(续)46用户界面设计(续)46作业: ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial247作业:47三、变量、变量组和常量48三、变量、变量组和常量481.变量491.变量49变量的作用是在程序的运行过程中临时记录数据。变量中所存储的数据在程序运行中可以被改变。由于变量只在程序运行中发挥作用,变量的生命周期不会超过程序的运行周期。一个变量里只能存放一段数据,将新的数据存入变量中势必会抹去变量中原有的数据。50变量的作用是在程序的运行过程中临时记录数据。50创建新变量51创建新变量51类型所存储数据值的范围Byte(字节型)二进位数值0至255Boolean(布尔型)逻辑值真或伪(TrueorFalse)Currency(货币型)小数点前最多15位,小数点后最多4位的实数+/-9E14Date(日期型)日期和时间信息公元100年1月1日至公元9999年12月31日Double(双精度)实数+/-5E-324至1.8E308Integer(整型)整数-32768至32767Long(长整型)整数+/-2000000000Object(对象型)VB中的对象Single(单精度)实数+/-1E-45至3E38String(字符串型)文本信息最长65400个字符Variant(变体型)任意其它类型的数据其它类型数据的最大取值范围52类型所存储数据值的范围Byte(字节型)二进位数值0至25变量名的前缀:类型前缀BytebytBooleanblnCurrencycurDate(time)dtmDoubledblIntegerintLonglngObjectobjSinglesngStringstrVariantvnt53变量名的前缀:类型前缀BytebytBooleanblnCu变量名必须以字母开头。变量名中只能包含字母、数字和下划线,其它任何字符都不允许在变量名中出现。变量名最长不能超过255个字符。不能用VB中的保留字作变量名。保留字在VB中有特定含义和功能,不能作其它用途。比如在VB中“Print”是打印命令,属于保留字,不能充当变量名。54变量名必须以字母开头。54Dim

variablenameAs

datatype或Public

variablenameAs

datatype

比如,我们需要记录实验当前的交易轮次。为达目的,我们可以创建一个整型变量“intRound”,定义该变量的语句如下:

DimintRoundAsInteger55DimvariablenameAsdatatype或赋值56赋值56赋值是将数据存放到特定位置的过程。这个“特定位置”,既可以是某个对象的属性,也可以是变量。赋值语句中的赋值符号为“=”,赋值号左侧是数据存放的位置,而赋值号右侧是数据。如:

Label1.Caption=“Hello!” intRound=10 curPrice=10.23原则上,数据要存放到与其类型一致的位置上去。57赋值是将数据存放到特定位置的过程。这个“特定位置”,既可以是赋值语句的一个应用技巧是累加。比如,

intRound=10 intRound=intRound+5在创建新变量时,VB自动将空字符串赋予字符串型和变体型的变量,而那些数值类型的变量会被赋为“0”值。58赋值语句的一个应用技巧是累加。比如,58变量的有效范围59变量的有效范围59局部变量由Dim语句在事件内定义。局部变量的生命周期是事件的发生过程。一旦事件结束,局部变量的使命告终。

PrivateSublblHello_Click() DimiAsInteger EndSub 局部变量i只在lblHello_Click()内有效。60局部变量由Dim语句在事件内定义。局部变量的生命周期是事件的窗体变量窗体变量的生命周期即窗体从载入到终止的周期。窗体变量对窗体内所有对象都有效,能在不同对象、事件和过程之间传递数据。也由Dim语句定义。窗体变量在代码窗口的通用声明(GeneralDeclaration)区域定义。61窗体变量窗体变量的生命周期即窗体从载入到终止的周期。61全程变量全程变量的生命周期等同于程序的运行周期。全程变量能在程序的多个窗体之间传递数据。用Public语句在程序的代码模块中定义。代码模块是程序中的独立文件,仅包含程序代码。在菜单条中点击“工程”并选择“添加模块”,在弹出的对话窗口中选择新建模块,一个新的代码模块Module1就会被添加到工程中。全程变量的定义位置是代码模块的通用声明区域。62全程变量全程变量的生命周期等同于程序的运行周期。62OptionExplicit语句63OptionExplicit语句63VB允许程序开发者对变量随用随定义。OptionExplicit语句的作用是禁止在程序中运用未经正式定义的变量。具体做法:在工程下所有窗体和代码模块的通用声明区域输入OptionExplicit语句,并紧随该语句对变量进行定义。64VB允许程序开发者对变量随用随定义。64 OptionExplicit

Dimi,j,kAsInteger DimstrNameAsString65 OptionExplicit652.变量组662.变量组66变量组是相互关联的一组变量,这些变量有相同的名称和相同的数据类型。程序开发人员运用变量组在内存中暂时存取数据;运用变量组的优势是用它存取数据的速度远高于在外部存储设备中存取数据的速度。67变量组是相互关联的一组变量,这些变量有相同的名称和相同的数据 Dimarrayname(lowersubscriptTouppersubscript,…,lowersubscriptTouppersubscript)Asdatatype或

Publicarrayname(lowersubscriptTouppersubscript,…,lowersubscriptTouppersubscript)Asdatatype68 Dimarrayname(lowersubscript“arrayname”是变量组的名称。对变量组的命名规定与对变量的命名规定类同。“lowersubscriptTouppersubscript”表示变量组的一个维。VB最高允许定义60维的变量组。在变量组中的各个变量通过变量组的名称和下标识别。变量组的有效范围以及OptionExplicit语句的应用完全类同于之前对变量的介绍。69“arrayname”是变量组的名称。对变量组的命名规定与对 某实验的每个交易回合中市场上的三个销售者同时选择各自的出价,而实验一共要进行10个交易回合。用二维变量组curPrice来记录出价,定义该变量组的语句如下:

DimcurPrice(1To10,1To3)AsCurrency curPrice的第一组下标指示交易的轮次,而第二组下标指示的是销售者。70 某实验的每个交易回合中市场上的三个销售者同时选择各自的出价3.常量713.常量71有些实验参数在更改实验条件时需要修正,而这些实验参数在同一实验中却是固定不变的常量。这就需要实验程序在一开始的地方对这些常量参数进行定义,定义符号常量的语句格式如下:

Public

Const

constname

As

datatype=expression符号常量需要在VB的代码模块的通用声明区域中定义,其有效范围是程序运行的全程。72有些实验参数在更改实验条件时需要修正,而这些实验参数在同一实作业: ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial373作业:73四、选择结构74四、选择结构74程序的三种基本结构:顺序结构,选择结构和循环结构。顺序结构中,程序的语句按照出现的先后次序,由前到后一个接一个地被执行。选择结构中,程序根据某个比较结果选择执行语句的路径。循环结构中,某些语句会被执行若干次、或直到某个特定的条件被满足时才会停止执行这些语句。75程序的三种基本结构:顺序结构,选择结构和循环结构。75根据实验参与者的选择做出判断,来决定每个人的所得。

最后通牒对策,在10元的潜在收益中,提议者建议自己得到X元,而回应者得到1–X元。在见到提案以后,如果回应者接受这个提案,那么就按照提案来分配所得;如果回应者拒绝这个提案,则提议者和回应者的收益全部为零。在回应者见到提案后,实验程序如何根据回应者“接受”或“拒绝”的选择来决定提议者和回应者的所得?76根据实验参与者的选择做出判断,来决定每个人的所得。761.基本选择结构:If…Then…Else语句771.基本选择结构:If…Then…Else语句77 If…Then…Else语句是VB中最基本的选择结构。语句格式如下: If

conditionThen [instructionswhentheconditionistrue] [Else [instructionswhentheconditionisfalse]] EndIf78 If…Then…Else语句是VB中最基本的选择结构。语句“condition”是条件表达式,其值只可能是“真”或“伪”(TrueorFalse)。如果条件表达式的值为“真”,那么“Then”以后的语句将被执行;如果条件表达式的值为“伪”,那么“Else”以后的语句将被执行。“EndIf”表示选择结构的结束。需要注意的是,If…Then…Else语句中不一定包括“Else”和“Else”以后的语句。在这种情况下,当条件表达式为“伪”时直接进行“EndIf”之后的操作,而选择结构内部不进行任何操作。79“condition”是条件表达式,其值只可能是“真”或“伪注意:

我们在介绍VB的语句格式的时候,方括号里的内容为可选内容,编程人员根据需要来决定是否选用这些内容。 如果某语句格式的方括号里的内容在编程中被省略掉,VB也不会将其视作语法错误。80注意:80条件表达式中可包括变量、常量、对象的属性、函数、数学运算符,关系运算符以及逻辑运算符。81条件表达式中可包括变量、常量、对象的属性、函数、数学运算符,关系运算符82关系运算符82VB中有6种关系运算符:=,>,>=,<,<=,<>。包含关系运算符的表达式的返回值只可能是“真”或“伪”。各个关系运算符之间并没有优先次序,在表达式中对它们按照从左到右的顺序进行处理。关系运算符的处理优先级要低于数学运算符的优先级数学运算符的优先顺序是先处理乘方,再处理乘除,最后处理加减。83VB中有6种关系运算符:=,>,>=,<,<=,<>。83表达式1:10+3<5*2 处理顺序:首先计算5*2,得到10;随后计算10+3,得到13;最后判断不等式13<10的真伪,返回值为“伪”(False)。表达式2:7>3*4/2 处理顺序:首先计算3*4,得到12;随后计算12/2,得到6;最后判断不等式7>6的真伪,返回值为“真”(True)。84表达式1:10+3<5*284UCase函数和LCase函数

85UCase函数和LCase函数85在VB中进行字符串比较时,如果两个字符串所包含的字母相同、但字母的大小写有所区别,那么VB会判定两个字符串不同。如何在对比两个字符串的时候忽略字母大小写的区别?86在VB中进行字符串比较时,如果两个字符串所包含的字母相同、但UCase函数的语句格式是UCase(String),其中“String”是一个任意的字符串。UCase(String)所返回的是一个新的字符串,新字符串将原字符串“String”中所有的小写字母都转换成大写。UCase函数既可以出现在关系运算符的左侧,也可以出现在关系运算符的右侧。但是在赋值语句中,UCase函数只能出现在赋值号的右侧。87UCase函数的语句格式是UCase(String),其中“LCase函数的语句格式是LCase(String),它的作用是将原字符串中所有的大写字母都转换成小写。88LCase函数的语句格式是LCase(String),它的作逻辑运算符89逻辑运算符89Not,And,Or,是VB中最常见的逻辑运算符。各逻辑运算符的优先次序为Not,And,Or。逻辑运算符在表达式中的优先次序在数学运算符和关系运算符之后。Not的作用是将条件表达式的值反转;若干个由And运算符连接起来的条件表达式,只有在每个条件表达式都为“真”的情况下,被连接起来的复合条件表达式才为“真”;若干个由Or运算符连接起来的条件表达式,只要其中有一个条件表达式为“真”,被连接起来的复合条件表达式就会为“真”。90Not,And,Or,是VB中最常见的逻辑运算符。90表达式1:3>2And6>5 处理顺序:首先判断不等式3>2的真伪,返回值为“真”(True);随后判断不等式6>5的真伪,返回值为“真”(True);最后判断TrueAndTrue,得到返回值“真”。表达式2:10<25And6>5+1 处理顺序:先计算5+1,得到6;随后判断不等式10<25的真伪,返回值为“真”(True);第三步判断不等式6>6的真伪,返回值为“伪”(False);最后评价TrueAndFalse,得到返回值“伪”。91表达式1:3>2And6>591表达式3:8=4*2Or6>5+1 处理顺序:先计算4*2,得到8;随后判断等式8=8的真伪,返回值为“真”(True);由于Or运算符左侧的条件表达式为“真”,条件表达式3整体的返回值也为“真”。92表达式3:8=4*2Or6>5+192所有包含逻辑运算符的表达式的返回值只可能是“真”或“伪”。如果你用And运算符连接两个条件表达式,而And运算符左侧的条件表达式的值为“伪”时,VB将不再判断And运算符右侧的条件表达式的真伪。类似地,如果你用Or运算符连接两个条件表达式,而Or运算符左侧的条件表达式的值为“真”时,VB将不再判断Or运算符右侧的条件表达式的真伪。93所有包含逻辑运算符的表达式的返回值只可能是“真”或“伪”。92.If…Then…Else语句基础上的层次选择结构942.If…Then…Else语句基础上的层次选择结构94层次选择结构是指在某个选择结构中,根据条件表达式的判定结果所选择的某一条操作路径上嵌入了另一个选择结构。95层次选择结构是指在某个选择结构中,根据条件表达式的判定结果所 示例1:在某个价格竞争的实验中,我们用变量sngCost表示销售者的成本,用变量intSellerID表示销售者的识别号码。1号销售者和3号销售者的成本是1.2元,2号销售者的成本是1.5元,而其他所有销售者的成本都是1.8元。我们需要用层次选择结构对变量sngCost赋值。96 示例1:在某个价格竞争的实验中,我们用变量sngCost表 IfintSellerID=1OrintSellerID=3Then sngCost=1.2 Else

IfintSellerID=2Then sngCost=1.5

Else sngCost=1.8

EndIf EndIf97 IfintSellerID=1OrintSell示例2:在某个激励机制的实验中,针对不同销售者的激励办法各不相同。如果1号销售者的销售收入达到10000实验币,那么她将在实验结束后得到500实验币的奖励;如果她的销售收入达不到10000实验币,她在实验后得到的奖励是200实验币。如果2号销售者的销售收入达到20000实验币,那么他将在实验结束后得到600实验币的奖励;如果他的销售收入达不到20000实验币,他在实验后得到的奖励是550实验币。其他所有销售者得到固定奖励150实验币。变量intSellerID表示销售者的识别号码,sngSales表示实验中的销售收入,sngBonus表示对销售者的奖励。98示例2:98

IfintSellerID=1Then IfsngSales>=10000then sngBonus=500 Else sngBonus=200 EndIf Else IfintSellerID=2Then IfsngSales>=20000Then sngBonus=600 Else sngBonus=550 EndIf Else sngBonus=150 EndIf EndIf99 IfintSellerID=1Then99 IfintSellerID=1AndsngSales>=10000Then sngBonus=500 Else IfintSellerID=1AndsngSales<10000Then sngBonus=200 Else IfintSellerID=2AndsngSales>=20000Then sngBonus=600 Else IfintSellerID=2AndsngSales<20000Then sngBonus=550 Else sngBonus=150 EndIf EndIf EndIfEndIf100 IfintSellerID=1AndsngSal3.用Case语句表达的选择结构1013.用Case语句表达的选择结构101用Case语句表达的选择结构适用于对条件表达式的判定后产生多个可供选择的操作路径的情况。与If…Then…Else语句相比,Case语句更简单直观。102用Case语句表达的选择结构适用于对条件表达式的判定后产生多 SelectCase

testexpression [Case

expressionlist1 [instructionsforthefirstcase]] [Case

expressionlist2 [instructionsforthesecondcase]] [Case

expressionlistn [instructionsforthenthcase]] [CaseElse

[instructionsforwhenthetestexpressiondoesnotmatchanyoftheexpressionlists]] EndSelect103 SelectCasetestexpression103“testexpression”为被测表达式,它可以是字符串,也可以是数值。被测表达式可以包含变量,常量,各种运算符以及对象的属性。“expressionlist”是一系列表达式的列表。在Case语句中,表达式列表中的每个表达式的数据类型必须与被测表达式的数据类型相一致。当表达式列表中的某一个表达式与被测表达式相吻合时,在该表达式后的操作将被执行,而Case语句中的其它操作路径将被忽略,直接进行“EndSelect”之后的操作。如果没有任何一个表达式列表中的表达式与被测表达式相吻合,“CaseElse”之后的操作将被执行;在Case语句中没有“CaseElse”部分的情况下,Case语句将结束,直接进行“EndSelect”之后的操作。104“testexpression”为被测表达式,它可以是字符串 表达式所描述的是包括上界和下界的数值范围:

a≤testexpression≤b在Case语句中可以被写成 SelectCase

testexpression [CaseaTob [instructionsforthecaseof‘atob’]] EndSelect105 表达式所描述的是包括上界和下界的数值范围:105 表达式所描述的是只包括上界或下界的数值范围: a≤testexpression在Case语句中可以被写成 SelectCase

testexpression [Case

Is>=a [instructionsforthecaseof‘>=a’]] EndSelect106 表达式所描述的是只包括上界或下界的数值范围:106 示例1:

SelectCaseintSellerID

Case1,3 sngCost=1.2

Case2 sngCost=1.5

Case

Else sngCost=1.8 EndSelect107 示例1:107示例2: SelectCaseintSellerID

Case1

SelectCasesngSales

CaseIs>=10000 sngBonus=500

CaseElse sngBonus=200

EndSelect

Case2

SelectCasesngSales

CaseIs>=20000 sngBonus=600

CaseElse sngBonus=550

EndSelect

CaseElse sngBonus=150 EndSelect108示例2:108示例2:

SelectCaseTrue

CaseintSellerID=1AndsngSales>=10000 sngBonus=500

CaseintSellerID=1AndsngSales<10000 sngBonus=200

CaseintSellerID=2AndsngSales>=20000 sngBonus=600

CaseintSellerID=2AndsngSales<20000 sngBonus=550

CaseElse sngBonus=150 EndSelect109示例2:109作业: ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial4110作业:110五、循环结构111五、循环结构111在实验中,所进行的交易回合往往不止一轮。交易回合开始,要将基本信息发送给实验参加者:轮次,销售者的成本、购买者的保有价格,等等。交易回合结束,要将交易结果发送给实验参加者:实验参加者本轮的决策、其他参加者的决策,实验参加者本人本轮的所得,到目前为止的累积所得,等等。用实验程序来实现这些任务需要进行一些重复性操作,这就涉及到了循环结构。112在实验中,所进行的交易回合往往不止一轮。112循环结构中,某些语句会被执行若干次、或直到某个特定的条件被满足时才会停止执行这些语句。三种基本形式:ForNext循环DoWhile循环DoUntil循环113循环结构中,某些语句会被执行若干次、或直到某个特定的条件被满1.ForNext循环1141.ForNext循环114ForNext循环的作用是将某些特定的操作重复执行一定的次数,其语法格式如下:

For

counter=startvalue

to

endvalue[Step

stepvalue] [instructions] Nextcounter115ForNext循环的作用是将某些特定的操作重复执行一定的次“Counter”是一个数值类型的变量“startvalue”是循环的初始值,“endvalue”是循环的终值,而“stepvalue”是循环的步长。循环的初始值,终值和步长都必须是数值,这些数值既可以是正数,也可以是负数。如果编程人员省略了对循环的步长的定义,则VB自动将循环的步长规定为1。116“Counter”是一个数值类型的变量116ForNext循环按照如下步骤运行:第一步,在循环开始的时候,将循环的初始值“startvalue”赋予变量“Counter”。这一操作只进行一次。117ForNext循环按照如下步骤运行:117第二步,如果步长“stepvalue”为正,则需要判定变量“Counter”的值是否大于循环的终值“endvalue”(如果步长“stepvalue”为负,则是相反的情况,需要判定变量“Counter”的值是否小于循环的终值“endvalue”)。 如果判定结果为“真”,则循环终止;如果判定结果为“伪”,则循环内的操作“instructions”将被执行。118第二步,如果步长“stepvalue”为正,则需要判定变量“第三步,将步长值“stepvalue”加入到变量“Counter”中,并返回到上述第二步。 直到变量“Counter”的值大于终值“endvalue”(若步长为负,则变量“Counter”的值小于终值“endvalue”)的时候,循环结束。119第三步,将步长值“stepvalue”加入到变量“Count ForNext循环示例: 在某实验中有12名实验参加者参与,每个人在实验开始时得到150实验币的启动资金。我们用一维变量组sngTPayoff(1to12)来表示12个实验参加者的累积所得,其中的变量sngTPayoff(i)是第i个实验参加者的累积所得。现在将各个实验参加者的累积所得初始化为150个实验币。120 ForNext循环示例:120 DimiAsInteger DimsngTPayoff(1To12)AsSingle

Fori=1to12 sngTPayoff(i)=150 Nexti121 DimiAsInteger1212.DoWhile循环和DoUntil循环1222.DoWhile循环和DoUntil循环122DoWhile语句中,当循环的判定条件为真时,重复执行循环内的操作;DoUntil语句重复执行循环内的操作,直到循环的判定条件为真时终止。DoWhile循环和DoUntil循环都能够实现ForNext循环中,将某些操作重复执行特定次数的功能。123DoWhile语句中,当循环的判定条件为真时,重复执行循环 DoWhile循环的语句格式为: DoWhile

condition [loopinstructions] Loop DoUntil循环的语句格式为: Do [loopinstructions] LoopUntilcondition124 DoWhile循环的语句格式为:124循环的条件“condition”可包含变量、常量、函数、对象的属性以及各种运算符,“condition”的返回值必须是“真”或“伪”。在DoWhile循环中,当且仅当循环的条件“condition”的值为“真”时,循环内的操作“loopinstructions”才会被执行;DoUntil循环中,当且仅当循环的条件“condition”的值为“伪”时,循环内的操作“loopinstructions”才会被执行,一旦“condtion”为“真”则循环终止。125循环的条件“condition”可包含变量、常量、函数、对象DoWhile循环也被称作前试循环。ForNext循环也是一种前试循环。DoUntil循环也被称作后试循环。DoUntil循环内的操作至少会被执行一次。126DoWhile循环也被称作前试循环。ForNext循环也 用DoWhile语句完成示例:

DimiAsInteger DimsngTPayoff(1To12)AsSingle i=1

DoWhilei<=12

sngTPayoff(i)=150 i=i+1 Loop127 用DoWhile语句完成示例:127 用DoUntil语句完成示例:

DimiasInteger DimsngTPayoff(1To12)AsSingle i=1

Do

sngTPayoff(i)=150 i=i+1 LoopUntili>12128 用DoUntil语句完成示例:1283.计数器和累加器1293.计数器和累加器129计数器和累加器是循环结构最常见的两种应用。计数器用于统计数量,比如在某个实验的某个回合,究竟有多少实验参加者选择了纳什均衡策略?而累加器用于求和,比如实验进行了5轮以后某个实验参加者的累积所得是多少?130计数器和累加器是循环结构最常见的两种应用。130计数器和累加器都需要初始化和更新。初始化是指为计数器和累加器赋初始值。多数情况下,计数器和累加器会被初始化为0或1。更新是指将新的数值加入到计数器或累加器中。计数器每次的更新为常量,而累加器的更新为变量。更新在循环内进行,而初始化在更新所在的循环开始之前进行。131计数器和累加器都需要初始化和更新。131 计数器示例:

某实验有12名参加者,共进行20个回合。在每个回合里,各实验参加者要在选项“A”与“B”之间选一个。现所有参加者在各个回合中的选择都已被存入二维变量组strChoice(1to12,1to20)。其中变量strChoice(i,j)是指第i个实验参加者在第j个回合所作的选择。现在我们需要构造一个新的计数器变量组intChoiceA(1to20),用于统计在各回合中选择“A”的实验参加者的人数。132 计数器示例:132 Dimi,jAsInteger DimintChoiceA(1To20)AsInteger Fori=1to20 intChoiceA(i)=0

Forj=1to12

IfstrChoice(j,i)=“A”Then intChoiceA(i)=intChoiceA(i)+1

EndIf

Nextj Nexti133 Dimi,jAsInteger133 累加器示例: 某实验有12名参加者,共进行20个回合。现所有参加者在各个回合中的所得都已被存入二维变量组sngPayoff(1to12,1to20)。sngPayoff(i,j)是指第i个实验参加者在第j个回合的所得。现在需要计算各个实验参加者在实验结束后的累积所得,由变量组sngTPayoff(1to12)表示。其中变量sngTPayoff(i)是第i个实验参加者的累积所得。每个实验参加者在第一回合开始时的启动资金皆为150个实验币。134 累加器示例:134 Dimi,jAsInteger DimsngTPayoff(1To12)AsSingle Fori=1to12 sngTPayoff(i)=150

Forj=1to20 sngTPayoff(i)=sngTPayoff(i)+sngPayoff(i,j)

Nextj Nexti135 Dimi,jAsInteger135六、对数据的存取136六、对数据的存取136研究人员需要记录实验参加者在实验中的决策和所得。变量和变量组能起到在程序运行过程中临时存取数据的作用。程序一旦结束运行,变量和变量组就会从计算机内存中消失,所存放的数据也随之消失。为避免数据丢失,研究人员需要把实验数据长久保存在数据文件中。137研究人员需要记录实验参加者在实验中的决策和所得。1371.数据文件1381.数据文件138程序文件所包含的是实现一系列操作的指令的集合。VB工程文件与工程文件关联的窗体文件和代码模块数据文件专门用于承载信息,由数据领域和数据记录构成。139程序文件所包含的是实现一系列操作的指令的集合。139数据领域又被称作数据元素,是一段无法继续细分的信息。实验参加者的识别号码交易的轮次实验参加者的角色数据记录是一系列相关联的数据领域的组合。在经济实验中,一条数据记录就是某个实验参加者在某个轮次的全部实验结果。囚徒困境对策实验:数据记录中包括轮次,实验参加者的识别号,与其配对的参加者的识别号,实验参加者的决策,与其配对的参加者的决策,实验参加者本轮所得以及实验参加者的累积所得。数据文件是相关联的数据记录的集合。在经济实验中,数据文件包括所有实验参加者在所有轮次中的全部实验结果。140数据领域又被称作数据元素,是一段无法继续细分的信息。140经济实验中最常用到的数据文件是顺序存取的数据文件。对顺序存取的数据文件中的数据记录只能依次按顺序处理。音乐磁带:只能按照顺序播放乐曲,不能随意跳转到喜爱的乐曲。顺序存取的文件易于创建,也易于操作。141经济实验中最常用到的数据文件是顺序存取的数据文件。1412.对顺序存取的数据文件的基本操作1422.对顺序存取的数据文件的基本操作142顺序存取的数据文件的文件类型143顺序存取的数据文件的文件类型143VB中最常用的顺序存取的数据文件是以“*.txt”的后缀为结尾的文本文件。文本文件的一行为一条数据记录。数据记录的各个数据领域之间用逗号分割开。如果某数据领域为字符串,在字符串外要加上双引号。上述格式的文本文件可以直接用MicrosoftExcel打开。144VB中最常用的顺序存取的数据文件是以“*.txt”的后缀为结打开文件

145打开文件 145 打开顺序存取的数据文件要用到Open语句,其格式如下:

Open

pathnameFor

modeAs#filenumber146 打开顺序存取的数据文件要用到Open语句,其格式如下:14“pathname”是所打开的数据文件的名称文件名中要包括该文件在你的计算机上存储位置的路径。要用引号将包含硬盘符号、路径以及文件名的pathname括起来。147“pathname”是所打开的数据文件的名称147“mode”是数据文件打开的模式Input为输入模式,把数据文件中的数据记录读入到程序中。如果数据文件不存在,VB会返回出错信息。Output即输出模式,创建新的数据文件并将数据记录存入新文件中。如果数据文件已经存在,VB将抹去数据文件中原有的内容。Append即附加模式,打开已有的数据文件并在该文件的末尾附加新的数据记录。如果数据文件不存在,VB会在相应目录下创建新的数据文件。148“mode”是数据文件打开的模式148“filenumber”是你赋予数据文件的识别号码。“filenumber”必须是1到511之间的整数(包括1和511)。数据文件在被编程人员打开期间,其识别号码是唯一的。(VB最多能同时打开511个数据文件)。149“filenumber”是你赋予数据文件的识别号码。149VB运用记录指针来确定下一个要被处理的数据记录的位置。用输入模式打开数据文件时,记录指针指向文件的起点、第一条数据记录之前;用输出模式打开数据文件时,记录指针指向空文件的开端;用附加模式打开数据文件时,记录指针指向文件的末尾、最后一条数据记录的后面。当前的数据记录处理完毕,记录指针指向下一条数据记录。150VB运用记录指针来确定下一个要被处理的数据记录的位置。150 打开文件示例:在某实验中,你需要在“D:\Experiment\”路径下创建一个新的顺序存取的数据文件Result.txt以记录实验结果。程序如下, Open"D:\Experiment\Result.txt"ForOutputAs#1151 打开文件示例:在某实验中,你需要在“D:\Experime关闭文件152关闭文件152文件中的所有数据记录已被处理完成之后,需要用Close语句来关闭文件:

Close[#filenumber]“filenumber”是某个已经被打开的数据文件的识别号码。如果Close语句中不包括任一个数据文件的识别号码,那么所有在VB中已被打开的数据文件都将关闭。153文件中的所有数据记录已被处理完成之后,需要用Close语句来 关闭文件示例:如果需要关闭打开文件示例中的Result.txt,你需要在程序中书写如下语句:

Close#1154 关闭文件示例:如果需要关闭打开文件示例中的Result.t从文件中读取数据155从文件中读取数据155用Input语句从数据文件中读取数据记录,其格式如下:

Input#filenumber,variablelist156用Input语句从数据文件中读取数据记录,其格式如下:156其中“filenumber”是某个已经被打开的数据文件的识别号码。“variablelist”是变量的列表。当变量的列表中包括多个变量时,各个变量之间用逗号分割开。变量列表中的各变量分别对应于数据记录的各个数据领域。变量列表中变量的数量以及各变量的数据类型必须与数据记录中数据领域的数量和数据类型相一致。各变量在变量列表中的顺序也必须与数据记录中各数据领域的顺序相一致。157其中“filenumber”是某个已经被打开的数据文件的识别 从文件中读取数据示例: 最后通牒博弈实验有10名实验参加者参与,5名提议者和5名回应者。在数据文件“D:\Experiment\Matching.txt”中存放着10名实验参加者的配对方式。文件Matching.txt的内容如下, 1,10 2,9 3,8 4,7 5,6158 从文件中读取数据示例:158该文件中有5条数据记录,每个数据记录有两个数据领域,前一个数据领域是提议者的识别号码,而后一个数据领域是与之配对的回应者的识别号码。我们需要将提议者的识别号码读入变量组Proposer(1to5)中,相应的回应者识别号码读入变量组Responder(1to5)中。159该文件中有5条数据记录,每个数据记录有两个数据领域,前一个数 DimiAsInteger DimProposer(1To5)AsInteger,Responder(1To5)AsInteger

Open"D:\Experiment\Matching.txt"ForInputAs#1 Fori=1to5 Input#1,Proposer(i),Responder(i) Nexti Close#1160 DimiAsInteger160向文件存入数据161向文件存入数据161 用Write语句向数据文件存入数据记录,其格式如下:

Write#filenumber,[outputlist]162 用Write语句向数据文件存入数据记录,其格式如下:162“filenumber”是某个已经被打开的数据文件的识别号码。“outputlist”是输出列表,输出列表中既可以包含数字、字符串,也可以包含变量。当输出列表中含有多个分量时,各分量之间用逗号分割。对输出列表的规定与Input语句中关于变量列表的规定类似。如果输出列表中包括字符串,字符串外要加上双引号。如果输出列表中包括字符型的变量,在该变量外不要加引号。163“filenumber”是某个已经被打开的数据文件的识别号码 向文件存入数据示例: 在10名参加者参与的最后通牒博弈实验完成配对后,提议者提出分配10元现金的提案,而回应者选择接受或拒绝。当所有参加者都作出了选择以后,研究人员要把实验结果记录到文件“D:\Experiment\Result.txt”中去。 Role(i)是第i个实验参加者的角色,Group(i)是第i个实验参加者所在的组的序号,FChoice(i)是第i个实验参加者所在的组内的提议者所作出的选择,SChoice(i)是第i个实验参加者所在的组内的回应者所作出的选择,Payoff(i)是第i个实验参加者的所得。我们需要把这些变量组中的数据存入到数据文件中。164 向文件存入数据示例:164 Open"D:\Experiment\result.txt"ForOutputAs#1

Write#1,"ID","Role","Group","FirstMover’sChoice","SecondMover’sChoice","Payoff"

Fori=1to10 Write#1,i,Role(i),Group(i),FChoice(i),SChoice(i),Payoff(i) Nexti

Close#1165 Open"D:\Experiment\result.tx3.EOF函数1663.EOF函数166EOF函数用于判定VB的记录指针是否已指向数据文件的最后一条数据记录之后,即数据文件是否已被处理完毕。EOF是“EndofFile”的缩写。EOF函数的格式如下:

EOF(filenumber)167EOF函数用于判定VB的记录指针是否已指向数据文件的最后一条“filenumber”是某个已被打开的数据文件的识别号。EOF函数返回布尔型值。若记录指针已指向识别号为“filenumber”的数据文件的末尾(即最后一条数据记录之后),则EOF函数的返回值为“真”,否则EOF函数的返回值为“伪”。168“filenumber”是某个已被打开的数据文件的识别号。1 EOF函数常作为判定条件与循环语句相结合,如:

DoWhileNotEOF(1) [loopinstructions] Loop

Do [loopinstructions] LoopUntilEOF(1)169 EOF函数常作为判定条件与循环语句相结合,如:169七、运用ESLNetworkQueue处理实验中的信息传递170七、运用ESLNetworkQueue处理实验中的信息传经济实验中最常遇见的问题是信息传递。所有实验参加者在实验过程中通过实验程序所做出的决策,都要传递给研究人员并被记录下来。许多实验设计中,部分或全部实验参加者的决策在特定条件下会被其他实验参加者观察到。如何通过实验程序实现?171经济实验中最常遇见的问题是信息传递。171ESLNetworkQueue是专门处理实验中信息传递问题的VB控件。该控件大幅度降低了信息传递的任务难度。通过该控件,只需要在程序中键入一些简单的命令就能够经网络传递信息。172ESLNetworkQueue是专门处理实验中信息传递问1.信息传递的基本架构1731.信息传递的基本架构173信息传递的物理结构

在实验室中,研究人员所占用的计算机被称作“服务器”。服务器要与实验参加者保持距离,以免实验参加者窥视到服务器上的信息。服务器所处的位置要便于研究人员观察到实验参加者的活动。为满足这样的要求,实验经济学实验室通常被分成实验区和控制区两个区域。在实验区内,每个实验参加者占用一台计算机。实验经济学实验室的计算机数量依情况而定。174信息传递的物理结构在实验室中,研究人员所占用的计算机被称作实验者(即研究人员)与实验参加者之间信息传递的关系

PC1实验参加者1服务器(实验者)……PCn实验参加者n175实验者(即研究人员)与实验参加者之间信息传递的关系PC1在网络中,服务器是信息传递的中心,与n个实验参加者相连。实验参加者各自占用一台计算机,编号从PC1到PCn。每一个实验参加者只能向服务器提交信息,也只能从服务器获得信息。服务器在网络中是唯一的信息中转节点,实验参加者之间直接的信息传递被严格禁止。目的是保证研究人员能观察到实验运行的全部过程,并记录所有需要的数据。176在网络中,服务器是信息传递的中心,与n个实验参加者相连。172.ESLNetworkQueue简介1772.ESLNetworkQueue简介177用VB开发的经济实验程序都是由服务器程序和实验参加者程序共同构成的。服务器程序在实验者的计算机上运行,而实验参加者程序在实验参加者所使用的各台计算机上运行。实验参加者程序为实验参加者提供输入决策和阅读反馈信息的界面,而服务器程序将实验参加者的决策提供给研究人员、并把这些决策记录下来。178用VB开发的经济实验程序都是由服务器程序和实验参加者程序共同ESLNetworkQueue是实现服务器程序和实验参加者程序之间信息传递的工具。ESLNetworkQueue由两个VB控件构成:NQmonitor和NQsubject。NQmonitor被安装在服务器程序上,而NQsubject则被装在实验参加者程序上。179ESLNetworkQueue是实现服务器程序和实验参加ESLNetworkQueue的网络结构关系

NQsubject(1)NQmonitor……NQsubject(n)180ESLNetworkQueue的网络结构关系NQsub控件NQmonitor的特征181控件NQmonitor的特征181Mqserver属性Mqserver属性所描述的是服务器程序所在的计算机在互联网中的IP地址。将恰当的IP地址赋予NQmonitor.mqserver是进行信息传递的第一步,语句如下:

NQmonitor.mqserver=ip&“:2955” 语句中的ip是计算机的IP地址。182Mqserver属性Mqserver属性所描述的是服务器程序OpenQueues方法

OpenQueues方法在NQmonitor.mqserver属性被赋值后使用,其作用是打开信息队列,让控件NQmonitor做好信息传递服务的准备。语法格式如下: NQmonitor.OpenQueues183OpenQueues方法OpenQueues方法在NQmoSendMessage方法

NQmonitor的SendMessage方法的作用是由服务器向某个实验参加者发送信息,SendMessage方法要在信息队列已打开(即应用OpenQueues方法后)且所有实验参加者程序都已连入信息队列(即应用ConnectQueues方法)之后才能够应用。其语法格式如下:

NQmonitor.SendMessageMessage,MessageType,SubjectMessage是服务器所发送的信息的内容。MessageType是一个字符串,它所描述的是信息的类型。Subject是一个整数,它所描述的是接受信息的实验参加者的识别号码。184SendMessage方法NQmonitor的SendMeMessageArrived事件MessageArrived事件是某个实验参加者向服务器所发送的信息(即提交的决策)到达控件NQmonitor的信息队列后服务器所做出的响应。语法格式如下:

PrivateSubNQmonitor_MessageArrived(MessageAsVariant,MessageTypeAsString,SubjectAsInteger) [instructions] EndSubMessage是实验参加者所发送的信息的内容。MessageType是实验参加者所发送的信息的类型。Subject是发送该信息的实验参加者的识别号码。这三个固有常量仅可在MessageArrived事件内使用。185MessageArrived事件MessageArrived控件NQsubject的特征186

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论