《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt

上传人(卖家):三亚风情 文档编号:2780770 上传时间:2022-05-25 格式:PPT 页数:253 大小:808KB
下载 相关 举报
《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt_第1页
第1页 / 共253页
《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt_第2页
第2页 / 共253页
《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt_第3页
第3页 / 共253页
《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt_第4页
第4页 / 共253页
《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt_第5页
第5页 / 共253页
点击查看更多>>
资源描述

1、1实验经济学第七讲:经济实验程序开发方法财经大学经济学院-经济学实验室2 确保实验结果的有效性,实验室实验通常两小时内结束 人力组织 十几个甚至二十几个交易回合 每个交易回合随机配对 怎么办?开发计算机程序3 起先,开发实验程序只是为了更充分地掌握数据、减少实验运行失误 近年的发展表明,实验运行(交易)过程的电子化为实验方法开辟了新的天地 大大降低了交易成本 拓展了市场参与者的市场语言 新市场机制在互联网和电子商务时代随处可见 网络环境下设计新机制并运用实验手段检验新机制的特性,已经成了实验经济学的重要发展方向 41Visual Basic 快速入门5讨论的要点 对基本开发环境的介绍 面向对象

2、的程序设计方法 变量和变量组 选择结构 循环结构 对数据的存取 运用VB实现实验室内的信息传递 6一、VB的基本开发环境7 运行Microsoft Visual Basic 6.0中文版,弹出“新建工程”的对话窗口。 选择“标准 EXE”并点击按键“打开”。89 屏幕的中央是对象窗口。 对象窗口内所展示的是一个空白的窗体 窗体的标题栏上显示“Form1” 。 窗体(Form)是VB程序的用户界面。 程序员决定在窗体上放置哪些内容(这些内容的学名叫“控件”)、又要对这些内容进行哪些处理; 运行过程中,使用者将在窗体上看到这些内容的部分或全部,并根据编程人员的设计通过窗体上的内容实现特定功能 。1

3、0 屏幕上方所显示的是标题栏、菜单条和工具栏。 屏幕的左侧是VB的工具箱,工具箱内包含VB的多种控件。 “控件”是能够被放置在窗体上的内容。 窗体和控件在VB里都被称作“对象”。 屏幕的右上方所显示的是工程资源管理器。 定义应用程序的层次结构。 屏幕右下方是属性窗口。 所展示的是当前被选中的对象的各种属性。 “属性”所描述的是VB中对象的特征。 比如,窗体的属性包括窗体的名称、窗体的宽度和高度以及窗体在计算机屏幕上的位置等等。11编写一个最简单的应用程序熟悉一下VB开发环境,在动手的过程中很多问题会自然而然地明朗12 给窗体和工程命名。 选中空白窗体Form1。 在属性窗口的各个属性中,点亮“

4、(名称)”一栏并将窗体的名称改为“frmHello”。 再选中工程资源管理器,点亮根目录“工程1(工程1)”。 选中属性窗口中“(名称)”一栏,将工程1的名称改为“Hello”。 通过菜单将窗体文件“frmHello”和工程“Hello”存储在适当的地方。 13 要给VB程序中的对象起有意义的名字。 便于你追踪管理这些对象,也能帮助别的人理解你的程序。 按照对象的类型给名称加前缀,前缀由三个小写字母构成。 窗体对象(Form)的前缀是frm 图标对象(Label)的前缀是lbl 文本框对象(TextBox)的前缀是txt 命令按键对象(CommandButton)的前缀是cmd 在前缀的后面,

5、加上以大写字母开头的、有一定意义的单词来描述对象的作用。 txtInput是用于输入的文本框。14 将对象窗口最大化并调整frmHello的边框将其拉大。 在属性窗口中点亮frmHello的“Caption”属性,将其改为“Hello”。 快速双击屏幕左侧工具箱中的图形控件(Image),在窗体frmHello的中央就会出现一个图形对象Image1。 点击Image1的“Picture”属性右侧的省略号“”,将会弹出一个加载图片的对话框。在你的计算机内选择你喜欢的图片(注意,图片不要太大)并点击按键“打开”。 调整Image1的边框大小并用鼠标把Image1拖动到窗体的恰当位置。1516 在I

6、mage1的属性窗口中,将Image1的名称改为“imgNinghua”,并将“Visible”属性改为“False”。 点击VB开发环境屏幕上方工具栏内的启动键“ ”来运行程序。我们发现运行中的窗体上并不能见到所载入的图片。 再点击屏幕上方工具栏内的结束键“ ” 以终止程序的运行。 17 快速双击屏幕左侧工具箱中的图标控件(label),在窗体frmHello的中央就会出现一个图标Label1。 采用类似的步骤,将Label1的名称改为“lblHello”并将该图标移动到图片imgNinghua的右侧。 选中图标lblHello的“Caption”属性,并将该属性的内容改为“Hello, e

7、veryone.”。随后再选中图标lblHello的“Font”属性。点击该属性右侧的省略号“”,你将会看到选择字体的对话框。选择小四号字并调整lblHello的边框大小。 1819 快速双击图标lblHello,这时会弹出程序代码窗口,在该窗口内会显示如下字样:Private Sub lblHello_Click()End Sub20 lblHello_Click是一个事件。 VB的事件是指VB的对象对某个外部事件所作出的响应。 事件lblHello_Click是程序使用者点击了图标lblHello之后程序所执行的操作。 在“Private Sub lblHello_Click()”和“En

8、d Sub”之间所加入的各行计算机语句,就是当使用者点击lblHello这一外部事件发生时VB程序才会执行的操作。 21Private Sub lblHello_Click() imgNinghua.Visible = TrueEnd Sub 22 现在保存工程,点击启动键“ ”来运行程序。 试着点击一下“Hello, everyone.”,图片就会在窗体内出现。(其实编程就这么简单!) 23 点击结束键“ ” 终止程序的运行。 如果编程人员不希望每次都在VB的开发环境内运行程序,编程人员可以生成可执行文件。 点击菜单中的“文件”并选中“生成Hello.exe(K)”,将Hello.exe存放

9、在你希望存放的目录中。24二、面向对象的程序设计方法251VB的对象、属性、方法和事件26 VB的窗体和控件是具有自己的属性、方法和事件的对象。 属性是一个对象的性质 方法是对象的动作 事件是对对象的响应 27 小孩玩的气球同样具有属性、方法和事件 属性 直径和颜色 状态属性(充气的或未充气的) 不可见的性质(如寿命) 方法:气球本身所固有的方法和动作 充气方法(用氦气充满气球的动作) 放气方法(排出气球中的气体) 上升方法(放手让气球飞走) 事件:预定义的对某些外部事件的响应 对刺破它的事件响应是放气 对放手事件的响应是升空 28设置气球的属性: Balloon.Color = Red Ba

10、lloon.Diameter = 10 Balloon.Inflated = True 注意代码的语法,首先是对象 (Balloon),接着是属性 (Color),然后是赋值 (Red)。 属性也可以在程序设计阶段在“属性”窗口中设置。 29调用气球的方法: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。 在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。 30气球对一个事件的响应如下所示: Sub Ball

11、oon_Puncture() Balloon.Deflate Balloon.MakeNoise Bang Balloon.Inflated = False Balloon.Diameter = 1 End Sub 本例中代码描述了当刺穿事件发生时,气球的行为。312面向对象的程序设计方法32 某个实验里,每个销售者都要同时提交两个决定: 选择产品的销售价格 同时还要决定是否对产品价格作广告 33 在这个实验中的销售者 有可能先定价、再考虑是否作广告,随后将已经做好的决定同时提交; 也有可能是相反的次序,先决定是否作广告、然后再定价,随后提交决策; 还有可能,在最后提交决策之前她会改主意,比如

12、她更改了初始选择的价格 实验程序中应当如何实现这样的灵活性?面向对象的程序设计方法34 传统的程序设计方法如C语言,Fortran等,都是面向过程的、线性的程序设计方法。 新发展起来的Java,VB等语言,是面向对象的程序设计方法。 35 面向过程的程序设计方法所强调的是如何完成某一任务。 面向过程的程序设计中,编程人员要从完成任务的第一步直到最后一步安排计算机所执行的每一个细节。 在面向过程的程序的应用过程中使用者没有任何自主权、处于完全被动的角色 使用者无权决定提交信息和处理信息的次序 36 而面向对象的(或事件驱动的)程序设计中编程人员围绕着用户界面中的对象进行设计 只有用户对对象做出了

13、某种动作之后程序才会进行特定的操作。 程序的使用者自己控制提交信息和处理信息的次序。 37面向对象的程序设计大致要遵从下面五个步骤: 对应用程序进行规划; 建立用户界面; 编写程序代码(即计算机语句); 对程序进行测试; 书写程序文档。38 我们先着重介绍前两个步骤,后三个步骤将在下一讲经济实验程序开发实例中穿插说明。 39对应用程序进行规划 首先要识别该程序要完成哪些任务任务。在识别任务时,对下述问题的回答会有帮助: 实验参加者需要提交哪些信息? 经济实验程序需要完成哪些计算和处理? 在用户界面上需要向实验参加者展示哪些信息? 新的信息在用户界面上出现时,旧的信息是否会消失? 实验程序在什么

14、条件下会结束运行?40对应用程序进行规划(续) 确定所要完成的任务究竟要通过哪些对象对象来实现。 图标(Label)用于展示特定的标识或运算结果 文本框(TextBox)用于采集信息。 41对应用程序进行规划(续) 确定哪些对象的哪些事件事件被触发时,程序所需要实现的任务会被完成。 并不是所有的对象都需要事件触发。 你只需要针对部分对象的事件编写程序,这些程序语句会在事件发生时执行;而另外一些对象不需要你编程就能实现特定的任务。 比如文本框(TextBox)不需要任何事件触发就能实现采集信息的任务。 42对应用程序进行规划(续) 程序规划步骤可以用任务(Task)、对象(Object),事件(

15、Event)的分解图(TOE)来实现。 43任务(Task)对象(Object)事件(Event)销售者输入价格信息文本框txtPrice无销售者选择作广告选择按键optRevoptRev_Click 点击销售者选择不作广告选择按键optNRevoptRev_Click 点击同时提交价格与广告决策命令按键cmdOKcmdOK_Click 点击对应用程序进行规划(续)44用户界面设计 对VB来说用户界面设计就是对窗体上的各个对象的排列安排。 基本的原则: 按照一定的顺序排列对象,要么从上至下,要么从左到右。 相关的对象放在相邻位置(如示例中的optRev和optNRev)。 涉及实验参加者提交决

16、策的对象需要在醒目位置显示。 完成对各个对象的初步排列后,可以根据需要在对象的旁边添加一些图标以说明各个对象的作用。45用户界面设计(续)46用户界面设计(续)47 作业:Programming with Visual Basic 6.0 Enhanced Edition, Diane Zak, Tutorial 248三、变量、变量组和常量491. 变量50 变量的作用是在程序的运行过程中临时记录数据。 变量中所存储的数据在程序运行中可以被改变。 由于变量只在程序运行中发挥作用,变量的生命周期不会超过程序的运行周期。 一个变量里只能存放一段数据,将新的数据存入变量中势必会抹去变量中原有的数据

17、。51创建新变量52类型所存储数据值的范围Byte (字节型)二进位数值0至255Boolean (布尔型)逻辑值真或伪(True or False)Currency (货币型) 小数点前最多15位,小数点后最多4位的实数+/- 9E14Date (日期型)日期和时间信息公元100年1月1日至公元9999年12月31日Double (双精度)实数+/- 5E-324至1.8E308Integer (整型)整数-32768至32767Long (长整型)整数+/- 2000000000Object (对象型)VB中的对象Single (单精度)实数+/- 1E-45至3E38String (字符

18、串型) 文本信息最长65400个字符Variant (变体型)任意其它类型的数据其它类型数据的最大取值范围53变量名的前缀:类型前缀BytebytBooleanblnCurrencycurDate(time)dtmDoubledblIntegerintLonglngObjectobjSinglesngStringstrVariantvnt54 变量名必须以字母开头。 变量名中只能包含字母、数字和下划线,其它任何字符都不允许在变量名中出现。 变量名最长不能超过255个字符。 不能用VB中的保留字作变量名。保留字在VB中有特定含义和功能,不能作其它用途。比如在VB中“Print”是打印命令,属于保

19、留字,不能充当变量名。55Dim variablename As datatype 或Public variablename As datatype比如,我们需要记录实验当前的交易轮次。为达目的,我们可以创建一个整型变量“intRound”,定义该变量的语句如下:Dim intRound As Integer56赋值57 赋值是将数据存放到特定位置的过程。这个“特定位置”,既可以是某个对象的属性,也可以是变量。 赋值语句中的赋值符号为“=”,赋值号左侧是数据存放的位置,而赋值号右侧是数据。如:Label1.Caption = “Hello!”intRound = 10curPrice = 10

20、.23 原则上,数据要存放到与其类型一致的位置上去。58 赋值语句的一个应用技巧是累加。比如,intRound = 10intRound = intRound +5 在创建新变量时,VB自动将空字符串赋予字符串型和变体型的变量,而那些数值类型的变量会被赋为“0”值。59变量的有效范围60局部变量 由Dim语句在事件内定义。局部变量的生命周期是事件的发生过程。一旦事件结束,局部变量的使命告终。Private Sub lblHello_Click()Dim i As IntegerEnd Sub局部变量i只在lblHello_Click()内有效。61窗体变量 窗体变量的生命周期即窗体从载入到终止

21、的周期。 窗体变量对窗体内所有对象都有效,能在不同对象、事件和过程之间传递数据。 也由Dim语句定义。 窗体变量在代码窗口的通用声明(General Declaration)区域定义。62全程变量 全程变量的生命周期等同于程序的运行周期。 全程变量能在程序的多个窗体之间传递数据。 用Public语句在程序的代码模块中定义。 代码模块是程序中的独立文件,仅包含程序代码。 在菜单条中点击“工程” 并选择“添加模块”,在弹出的对话窗口中选择新建模块,一个新的代码模块Module1就会被添加到工程中。 全程变量的定义位置是代码模块的通用声明区域。 63Option Explicit语句64 VB允许程

22、序开发者对变量随用随定义。 Option Explicit语句的作用是禁止在程序中运用未经正式定义的变量。 具体做法:在工程下所有窗体和代码模块的通用声明区域输入Option Explicit语句,并紧随该语句对变量进行定义。65Option ExplicitDim i, j, k As IntegerDim strName As String662. 变量组67 变量组是相互关联的一组变量,这些变量有相同的名称和相同的数据类型。 程序开发人员运用变量组在内存中暂时存取数据; 运用变量组的优势是用它存取数据的速度远高于在外部存储设备中存取数据的速度。 68Dim arrayname(lower

23、 subscript To upper subscript,, lower subscript To upper subscript) As datatype 或Public arrayname(lower subscript To upper subscript,,lower subscript To upper subscript) As datatype69 “arrayname”是变量组的名称。对变量组的命名规定与对变量的命名规定类同。 “lower subscript To upper subscript”表示变量组的一个维。 VB最高允许定义60维的变量组。 在变量组中的各个变量通

24、过变量组的名称和下标识别。 变量组的有效范围以及Option Explicit语句的应用完全类同于之前对变量的介绍。70某实验的每个交易回合中市场上的三个销售者同时选择各自的出价,而实验一共要进行10个交易回合。用二维变量组curPrice来记录出价,定义该变量组的语句如下:Dim curPrice(1 To 10, 1 To 3) As CurrencycurPrice的第一组下标指示交易的轮次,而第二组下标指示的是销售者。713. 常量72 有些实验参数在更改实验条件时需要修正,而这些实验参数在同一实验中却是固定不变的常量。这就需要实验程序在一开始的地方对这些常量参数进行定义, 定义符号常

25、量的语句格式如下:Public Const constname As datatype = expression 符号常量需要在VB的代码模块的通用声明区域中定义,其有效范围是程序运行的全程。73 作业:Programming with Visual Basic 6.0 Enhanced Edition, Diane Zak, Tutorial 374四、选择结构75 程序的三种基本结构:顺序结构,选择结构和循环结构。 顺序结构中,程序的语句按照出现的先后次序,由前到后一个接一个地被执行。 选择结构中,程序根据某个比较结果选择执行语句的路径。 循环结构中,某些语句会被执行若干次、或直到某个特定

26、的条件被满足时才会停止执行这些语句。 76 根据实验参与者的选择做出判断,来决定每个人的所得。最后通牒对策,在10元的潜在收益中,提议者建议自己得到X元,而回应者得到1 X元。在见到提案以后,如果回应者接受这个提案,那么就按照提案来分配所得;如果回应者拒绝这个提案,则提议者和回应者的收益全部为零。 在回应者见到提案后,实验程序如何根据回应者“接受”或“拒绝”的选择来决定提议者和回应者的所得? 771基本选择结构:IfThenElse语句78IfThenElse语句是VB中最基本的选择结构。语句格式如下:If condition Theninstructions when the conditi

27、on is trueElseinstructions when the condition is falseEnd If79 “condition”是条件表达式,其值只可能是“真”或“伪”(True or False)。 如果条件表达式的值为“真”,那么“Then”以后的语句将被执行;如果条件表达式的值为“伪”,那么“Else”以后的语句将被执行。 “End If”表示选择结构的结束。 需要注意的是,IfThenElse语句中不一定包括“Else” 和“Else”以后的语句。 在这种情况下,当条件表达式为“伪”时直接进行“End If”之后的操作,而选择结构内部不进行任何操作。 80 注意:我

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

29、5 * 2处理顺序:首先计算5 * 2,得到10;随后计算10 + 3,得到13;最后判断不等式13 3 * 4 / 2处理顺序:首先计算3 * 4,得到12;随后计算12 / 2,得到6;最后判断不等式7 6的真伪,返回值为“真”(True)。 85UCase函数和LCase函数 86 在VB中进行字符串比较时,如果两个字符串所包含的字母相同、但字母的大小写有所区别,那么VB会判定两个字符串不同。 如何在对比两个字符串的时候忽略字母大小写的区别? 87 UCase函数的语句格式是UCase(String),其中“String”是一个任意的字符串。 UCase(String)所返回的是一个新的

30、字符串,新字符串将原字符串“String”中所有的小写字母都转换成大写。 UCase函数既可以出现在关系运算符的左侧,也可以出现在关系运算符的右侧。但是在赋值语句中,UCase函数只能出现在赋值号的右侧。88 LCase函数的语句格式是LCase(String),它的作用是将原字符串中所有的大写字母都转换成小写。 89逻辑运算符90 Not,And,Or,是VB中最常见的逻辑运算符。 各逻辑运算符的优先次序为Not,And,Or。逻辑运算符在表达式中的优先次序在数学运算符和关系运算符之后。 Not的作用是将条件表达式的值反转; 若干个由And运算符连接起来的条件表达式,只有在每个条件表达式都为

31、“真”的情况下,被连接起来的复合条件表达式才为“真”; 若干个由Or运算符连接起来的条件表达式,只要其中有一个条件表达式为“真”,被连接起来的复合条件表达式就会为“真”。 91 表达式1:3 2 And 6 5处理顺序:首先判断不等式3 2的真伪,返回值为“真”(True);随后判断不等式6 5的真伪,返回值为“真”(True);最后判断True And True,得到返回值“真”。 表达式2:10 5 + 1处理顺序:先计算5 + 1,得到6;随后判断不等式10 6的真伪,返回值为“伪”(False);最后评价True And False,得到返回值“伪”。92 表达式3:8 = 4 * 2

32、 Or 6 5 + 1处理顺序:先计算4 * 2,得到8;随后判断等式8 = 8的真伪,返回值为“真”(True);由于Or运算符左侧的条件表达式为“真”,条件表达式3整体的返回值也为“真”。93 所有包含逻辑运算符的表达式的返回值只可能是“真”或“伪”。 如果你用And运算符连接两个条件表达式,而And运算符左侧的条件表达式的值为“伪”时,VB将不再判断And运算符右侧的条件表达式的真伪。 类似地,如果你用Or运算符连接两个条件表达式,而Or运算符左侧的条件表达式的值为“真”时,VB将不再判断Or运算符右侧的条件表达式的真伪。942IfThenElse语句基础上的层次选择结构95 层次选择结

33、构是指在某个选择结构中,根据条件表达式的判定结果所选择的某一条操作路径上嵌入了另一个选择结构。 96示例示例1:在某个价格竞争的实验中,我们用变量sngCost表示销售者的成本,用变量intSellerID表示销售者的识别号码。1号销售者和3号销售者的成本是1.2元,2号销售者的成本是1.5元,而其他所有销售者的成本都是1.8元。我们需要用层次选择结构对变量sngCost赋值。 97If intSellerID = 1 Or intSellerID = 3 ThensngCost = 1.2ElseIf intSellerID = 2 ThensngCost = 1.5ElsesngCost

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

35、销售者的奖励。99If intSellerID = 1 ThenIf sngSales = 10000 thensngBonus = 500ElsesngBonus = 200End IfElseIf intSellerID = 2 ThenIf sngSales = 20000 ThensngBonus = 600ElsesngBonus = 550End IfElsesngBonus = 150End IfEnd If100If intSellerID = 1 And sngSales = 10000 ThensngBonus = 500ElseIf intSellerID = 1 And

36、 sngSales = 20000 ThensngBonus = 600ElseIf intSellerID = 2 And sngSales =a instructions for the case of =aEnd Select107示例1:Select Case intSellerIDCase 1, 3sngCost = 1.2Case 2sngCost = 1.5Case ElsesngCost = 1.8End Select108示例2:Select Case intSellerIDCase 1Select Case sngSalesCase Is = 10000sngBonus =

37、 500Case ElsesngBonus = 200End SelectCase 2Select Case sngSalesCase Is = 20000sngBonus = 600Case ElsesngBonus = 550End SelectCase ElsesngBonus = 150End Select109示例2:Select Case TrueCase intSellerID = 1 And sngSales = 10000sngBonus = 500Case intSellerID = 1 And sngSales = 20000sngBonus = 600Case intS

38、ellerID = 2 And sngSales 20000sngBonus = 550Case ElsesngBonus = 150End Select110 作业:Programming with Visual Basic 6.0 Enhanced Edition, Diane Zak, Tutorial 4111五、循环结构112 在实验中,所进行的交易回合往往不止一轮。 交易回合开始,要将基本信息发送给实验参加者:轮次,销售者的成本、购买者的保有价格,等等。 交易回合结束,要将交易结果发送给实验参加者:实验参加者本轮的决策、其他参加者的决策,实验参加者本人本轮的所得,到目前为止的累积所

39、得,等等。 用实验程序来实现这些任务需要进行一些重复性操作,这就涉及到了循环结构。 113 循环结构中,某些语句会被执行若干次、或直到某个特定的条件被满足时才会停止执行这些语句。 三种基本形式: For Next循环 Do While循环 Do Until循环1141For Next循环115 For Next循环的作用是将某些特定的操作重复执行一定的次数,其语法格式如下:For counter = startvalue to endvalue Step stepvalueinstructionsNext counter116 “Counter”是一个数值类型的变量 “startvalue”是

40、循环的初始值,“endvalue”是循环的终值,而“stepvalue”是循环的步长。 循环的初始值,终值和步长都必须是数值,这些数值既可以是正数,也可以是负数。如果编程人员省略了对循环的步长的定义,则VB自动将循环的步长规定为1。117For Next循环按照如下步骤运行: 第一步,在循环开始的时候,将循环的初始值“startvalue”赋予变量“Counter”。这一操作只进行一次。118 第二步,如果步长“stepvalue”为正,则需要判定变量“Counter”的值是否大于循环的终值“endvalue”(如果步长“stepvalue”为负,则是相反的情况,需要判定变量“Counter”

41、的值是否小于循环的终值“endvalue”)。如果判定结果为“真”,则循环终止;如果判定结果为“伪”,则循环内的操作“instructions”将被执行。119 第三步,将步长值“stepvalue”加入到变量“Counter”中,并返回到上述第二步。直到变量“Counter”的值大于终值“endvalue”(若步长为负,则变量“Counter”的值小于终值“endvalue”)的时候,循环结束。 120For Next循环示例循环示例:在某实验中有12名实验参加者参与,每个人在实验开始时得到150实验币的启动资金。我们用一维变量组sngTPayoff(1 to 12)来表示12个实验参加者的

42、累积所得,其中的变量sngTPayoff(i)是第i个实验参加者的累积所得。现在将各个实验参加者的累积所得初始化为150个实验币。121Dim i As IntegerDim sngTPayoff(1 To 12) As SingleFor i = 1 to 12sngTPayoff(i) = 150Next i1222Do While循环和Do Until循环123 Do While语句中,当循环的判定条件为真时,重复执行循环内的操作; Do Until语句重复执行循环内的操作,直到循环的判定条件为真时终止。 Do While循环和Do Until循环都能够实现For Next循环中,将某些

43、操作重复执行特定次数的功能。124Do While循环的语句格式为:Do While conditionloop instructionsLoopDo Until循环的语句格式为:循环的语句格式为:Do loop instructionsLoop Until condition125 循环的条件“condition”可包含变量、常量、函数、对象的属性以及各种运算符,“condition”的返回值必须是“真”或“伪”。 在Do While循环中,当且仅当循环的条件“condition”的值为“真”时,循环内的操作“loop instructions”才会被执行; Do Until循环中,当且仅当

44、循环的条件“condition”的值为“伪”时,循环内的操作“loop instructions”才会被执行,一旦“condtion”为“真”则循环终止。 126 Do While循环也被称作前试循环。For Next循环也是一种前试循环。 Do Until循环也被称作后试循环。Do Until循环内的操作至少会被执行一次。127用Do While语句完成示例:Dim i As IntegerDim sngTPayoff(1 To 12) As Singlei = 1Do While i 121293计数器和累加器130 计数器和累加器是循环结构最常见的两种应用。 计数器用于统计数量,比如在某

45、个实验的某个回合,究竟有多少实验参加者选择了纳什均衡策略? 而累加器用于求和,比如实验进行了5轮以后某个实验参加者的累积所得是多少? 131 计数器和累加器都需要初始化和更新。 初始化是指为计数器和累加器赋初始值。多数情况下,计数器和累加器会被初始化为0或1。 更新是指将新的数值加入到计数器或累加器中。 计数器每次的更新为常量,而累加器的更新为变量。 更新在循环内进行,而初始化在更新所在的循环开始之前进行。 132计数器示例计数器示例:某实验有12名参加者,共进行20个回合。在每个回合里,各实验参加者要在选项“A”与“B”之间选一个。现所有参加者在各个回合中的选择都已被存入二维变量组strCh

46、oice(1 to 12, 1 to 20)。其中变量strChoice(i, j)是指第i个实验参加者在第j个回合所作的选择。现在我们需要构造一个新的计数器变量组intChoiceA(1 to 20),用于统计在各回合中选择“A”的实验参加者的人数。133Dim i, j As IntegerDim intChoiceA(1 To 20) As IntegerFor i = 1 to 20intChoiceA(i) = 0For j = 1 to 12If strChoice(j, i) = “A” ThenintChoiceA(i) = intChoiceA(i) + 1End IfNex

47、t jNext i 134累加器示例累加器示例:某实验有12名参加者,共进行20个回合。现所有参加者在各个回合中的所得都已被存入二维变量组sngPayoff(1 to 12, 1 to 20)。sngPayoff(i, j)是指第i个实验参加者在第j个回合的所得。现在需要计算各个实验参加者在实验结束后的累积所得,由变量组sngTPayoff(1 to 12)表示。其中变量sngTPayoff(i) 是第i个实验参加者的累积所得。每个实验参加者在第一回合开始时的启动资金皆为150个实验币。 135Dim i, j As IntegerDim sngTPayoff(1 To 12) As Sing

48、leFor i = 1 to 12sngTPayoff(i) = 150For j = 1 to 20sngTPayoff(i) = sngTPayoff(i)+ sngPayoff(i, j) Next jNext i 136六、对数据的存取137 研究人员需要记录实验参加者在实验中的决策和所得。 变量和变量组能起到在程序运行过程中临时存取数据的作用。 程序一旦结束运行,变量和变量组就会从计算机内存中消失,所存放的数据也随之消失。 为避免数据丢失,研究人员需要把实验数据长久保存在数据文件中。1381数据文件139 程序文件所包含的是实现一系列操作的指令的集合。 VB工程文件 与工程文件关联的

49、窗体文件和代码模块 数据文件专门用于承载信息,由数据领域和数据记录构成。140 数据领域又被称作数据元素,是一段无法继续细分的信息。 实验参加者的识别号码 交易的轮次 实验参加者的角色 数据记录是一系列相关联的数据领域的组合。 在经济实验中,一条数据记录就是某个实验参加者在某个轮次的全部实验结果。 囚徒困境对策实验:数据记录中包括轮次,实验参加者的识别号,与其配对的参加者的识别号,实验参加者的决策,与其配对的参加者的决策,实验参加者本轮所得以及实验参加者的累积所得。 数据文件是相关联的数据记录的集合。 在经济实验中,数据文件包括所有实验参加者在所有轮次中的全部实验结果。141 经济实验中最常用

50、到的数据文件是顺序存取的数据文件。 对顺序存取的数据文件中的数据记录只能依次按顺序处理。 音乐磁带:只能按照顺序播放乐曲,不能随意跳转到喜爱的乐曲。 顺序存取的文件易于创建,也易于操作。 1422对顺序存取的数据文件的基本操作143顺序存取的数据文件的文件类型144 VB中最常用的顺序存取的数据文件是以“*.txt”的后缀为结尾的文本文件。 文本文件的一行为一条数据记录。 数据记录的各个数据领域之间用逗号分割开。如果某数据领域为字符串,在字符串外要加上双引号。 上述格式的文本文件可以直接用Microsoft Excel打开。 145打开文件 146打开顺序存取的数据文件要用到Open语句,其格

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(《实验经济学》课件PPT第7讲 经济实验程序开发方法.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|