2.53k likes | 2.64k Views
《 实验经济学 》 第七讲: 经济实验程序开发方法. 杜宁华 上海财经大学经济学院,经济学实验室 2009 年 4 月. 确保实验结果的有效性,实验室实验通常两小时内结束 人力组织 十几个甚至二十几个交易回合 每个交易回合随机配对 怎么办? 开发计算机程序. 起先,开发实验程序只是为了更充分地掌握数据、减少实验运行失误 近年的发展表明,实验运行(交易)过程的电子化为实验方法开辟了新的天地 大大降低了交易成本 拓展了市场参与者的市场语言 新市场机制在互联网和电子商务时代随处可见
E N D
《实验经济学》第七讲:经济实验程序开发方法《实验经济学》第七讲:经济实验程序开发方法 杜宁华 上海财经大学经济学院,经济学实验室 2009 年 4月
确保实验结果的有效性,实验室实验通常两小时内结束 • 人力组织 • 十几个甚至二十几个交易回合 • 每个交易回合随机配对 • 怎么办? • 开发计算机程序
起先,开发实验程序只是为了更充分地掌握数据、减少实验运行失误 • 近年的发展表明,实验运行(交易)过程的电子化为实验方法开辟了新的天地 • 大大降低了交易成本 • 拓展了市场参与者的市场语言 • 新市场机制在互联网和电子商务时代随处可见 • 网络环境下设计新机制并运用实验手段检验新机制的特性,已经成了实验经济学的重要发展方向
讨论的要点 • 对基本开发环境的介绍 • 面向对象的程序设计方法 • 变量和变量组 • 选择结构 • 循环结构 • 对数据的存取 • 运用VB实现实验室内的信息传递
运行Microsoft Visual Basic 6.0中文版,弹出“新建工程”的对话窗口。 • 选择“标准 EXE”并点击按键“打开”。
屏幕的中央是对象窗口。 • 对象窗口内所展示的是一个空白的窗体 • 窗体的标题栏上显示“Form1” 。 • 窗体(Form)是VB程序的用户界面。 • 程序员决定在窗体上放置哪些内容(这些内容的学名叫“控件”)、又要对这些内容进行哪些处理; • 运行过程中,使用者将在窗体上看到这些内容的部分或全部,并根据编程人员的设计通过窗体上的内容实现特定功能 。
屏幕上方所显示的是标题栏、菜单条和工具栏。屏幕上方所显示的是标题栏、菜单条和工具栏。 • 屏幕的左侧是VB的工具箱,工具箱内包含VB的多种控件。 • “控件”是能够被放置在窗体上的内容。 • 窗体和控件在VB里都被称作“对象”。 • 屏幕的右上方所显示的是工程资源管理器。 • 定义应用程序的层次结构。 • 屏幕右下方是属性窗口。 • 所展示的是当前被选中的对象的各种属性。 • “属性”所描述的是VB中对象的特征。 • 比如,窗体的属性包括窗体的名称、窗体的宽度和高度以及窗体在计算机屏幕上的位置等等。
编写一个最简单的应用程序熟悉一下VB开发环境,在动手的过程中很多问题会自然而然地明朗……编写一个最简单的应用程序熟悉一下VB开发环境,在动手的过程中很多问题会自然而然地明朗……
给窗体和工程命名。 • 选中空白窗体Form1。 • 在属性窗口的各个属性中,点亮“(名称)”一栏并将窗体的名称改为“frmHello”。 • 再选中工程资源管理器,点亮根目录“工程1(工程1)”。 • 选中属性窗口中“(名称)”一栏,将工程1的名称改为“Hello”。 • 通过菜单将窗体文件“frmHello”和工程“Hello”存储在适当的地方。
要给VB程序中的对象起有意义的名字。 • 便于你追踪管理这些对象,也能帮助别的人理解你的程序。 • 按照对象的类型给名称加前缀,前缀由三个小写字母构成。 • 窗体对象(Form)的前缀是frm • 图标对象(Label)的前缀是lbl • 文本框对象(TextBox)的前缀是txt • 命令按键对象(CommandButton)的前缀是cmd • 在前缀的后面,加上以大写字母开头的、有一定意义的单词来描述对象的作用。 • txtInput是用于输入的文本框。
将对象窗口最大化并调整frmHello的边框将其拉大。将对象窗口最大化并调整frmHello的边框将其拉大。 • 在属性窗口中点亮frmHello的“Caption”属性,将其改为“Hello”。 • 快速双击屏幕左侧工具箱中的图形控件(Image),在窗体frmHello的中央就会出现一个图形对象Image1。 • 点击Image1的“Picture”属性右侧的省略号“…”,将会弹出一个加载图片的对话框。在你的计算机内选择你喜欢的图片(注意,图片不要太大)并点击按键“打开”。 • 调整Image1的边框大小并用鼠标把Image1拖动到窗体的恰当位置。
在Image1的属性窗口中,将Image1的名称改为“imgNinghua”,并将“Visible”属性改为“False”。在Image1的属性窗口中,将Image1的名称改为“imgNinghua”,并将“Visible”属性改为“False”。 • 点击VB开发环境屏幕上方工具栏内的启动键“ ”来运行程序。我们发现运行中的窗体上并不能见到所载入的图片。 • 再点击屏幕上方工具栏内的结束键“ ” 以终止程序的运行。
快速双击屏幕左侧工具箱中的图标控件(label),在窗体frmHello的中央就会出现一个图标Label1。快速双击屏幕左侧工具箱中的图标控件(label),在窗体frmHello的中央就会出现一个图标Label1。 • 采用类似的步骤,将Label1的名称改为“lblHello”并将该图标移动到图片imgNinghua的右侧。 • 选中图标lblHello的“Caption”属性,并将该属性的内容改为“Hello, everyone.”。随后再选中图标lblHello的“Font”属性。点击该属性右侧的省略号“…”,你将会看到选择字体的对话框。选择小四号字并调整lblHello的边框大小。
快速双击图标lblHello,这时会弹出程序代码窗口,在该窗口内会显示如下字样:快速双击图标lblHello,这时会弹出程序代码窗口,在该窗口内会显示如下字样: Private Sub lblHello_Click() End Sub
lblHello_Click是一个事件。 • VB的事件是指VB的对象对某个外部事件所作出的响应。 • 事件lblHello_Click是程序使用者点击了图标lblHello之后程序所执行的操作。 • 在“Private Sub lblHello_Click()”和“End Sub”之间所加入的各行计算机语句,就是当使用者点击lblHello这一外部事件发生时VB程序才会执行的操作。
Private Sub lblHello_Click() imgNinghua.Visible = True End Sub
现在保存工程,点击启动键“ ”来运行程序。 • 试着点击一下“Hello, everyone.”,图片就会在窗体内出现。 (其实编程就这么简单!)
点击结束键“ ” 终止程序的运行。 • 如果编程人员不希望每次都在VB的开发环境内运行程序,编程人员可以生成可执行文件。 • 点击菜单中的“文件”并选中“生成Hello.exe(K)…”,将Hello.exe存放在你希望存放的目录中。
VB的窗体和控件是具有自己的属性、方法和事件的对象。VB的窗体和控件是具有自己的属性、方法和事件的对象。 • 属性是一个对象的性质 • 方法是对象的动作 • 事件是对对象的响应
小孩玩的气球同样具有属性、方法和事件 • 属性 • 直径和颜色 • 状态属性(充气的或未充气的) • 不可见的性质(如寿命) • 方法:气球本身所固有的方法和动作 • 充气方法(用氦气充满气球的动作) • 放气方法(排出气球中的气体) • 上升方法(放手让气球飞走) • 事件:预定义的对某些外部事件的响应 • 对刺破它的事件响应是放气 • 对放手事件的响应是升空
设置气球的属性: Balloon.Color = Red Balloon.Diameter = 10 Balloon.Inflated = True • 注意代码的语法,首先是对象 (Balloon),接着是属性 (Color),然后是赋值 (Red)。 • 属性也可以在程序设计阶段在“属性”窗口中设置。
调用气球的方法: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 • 它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。 • 在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。
气球对一个事件的响应如下所示: Sub Balloon_Puncture() Balloon.Deflate Balloon.MakeNoise "Bang" Balloon.Inflated = False Balloon.Diameter = 1 End Sub • 本例中代码描述了当刺穿事件发生时,气球的行为。
某个实验里,每个销售者都要同时提交两个决定:某个实验里,每个销售者都要同时提交两个决定: • 选择产品的销售价格 • 同时还要决定是否对产品价格作广告
在这个实验中的销售者 • 有可能先定价、再考虑是否作广告,随后将已经做好的决定同时提交; • 也有可能是相反的次序,先决定是否作广告、然后再定价,随后提交决策; • 还有可能,在最后提交决策之前她会改主意,比如她更改了初始选择的价格…… • 实验程序中应当如何实现这样的灵活性? • 面向对象的程序设计方法
传统的程序设计方法如C语言,Fortran等,都是面向过程的、线性的程序设计方法。传统的程序设计方法如C语言,Fortran等,都是面向过程的、线性的程序设计方法。 • 新发展起来的Java,VB等语言,是面向对象的程序设计方法。
面向过程的程序设计方法所强调的是如何完成某一任务。面向过程的程序设计方法所强调的是如何完成某一任务。 • 面向过程的程序设计中,编程人员要从完成任务的第一步直到最后一步安排计算机所执行的每一个细节。 • 在面向过程的程序的应用过程中使用者没有任何自主权、处于完全被动的角色 • 使用者无权决定提交信息和处理信息的次序
而面向对象的(或事件驱动的)程序设计中编程人员围绕着用户界面中的对象进行设计而面向对象的(或事件驱动的)程序设计中编程人员围绕着用户界面中的对象进行设计 • 只有用户对对象做出了某种动作之后程序才会进行特定的操作。 • 程序的使用者自己控制提交信息和处理信息的次序。
面向对象的程序设计大致要遵从下面五个步骤:面向对象的程序设计大致要遵从下面五个步骤: • 对应用程序进行规划; • 建立用户界面; • 编写程序代码(即计算机语句); • 对程序进行测试; • 书写程序文档。
对应用程序进行规划 • 首先要识别该程序要完成哪些任务。在识别任务时,对下述问题的回答会有帮助: • 实验参加者需要提交哪些信息? • 经济实验程序需要完成哪些计算和处理? • 在用户界面上需要向实验参加者展示哪些信息? • 新的信息在用户界面上出现时,旧的信息是否会消失? • 实验程序在什么条件下会结束运行?
对应用程序进行规划(续) • 确定所要完成的任务究竟要通过哪些对象来实现。 • 图标(Label)用于展示特定的标识或运算结果 • 文本框(TextBox)用于采集信息。
对应用程序进行规划(续) • 确定哪些对象的哪些事件被触发时,程序所需要实现的任务会被完成。 • 并不是所有的对象都需要事件触发。 • 你只需要针对部分对象的事件编写程序,这些程序语句会在事件发生时执行;而另外一些对象不需要你编程就能实现特定的任务。 • 比如文本框(TextBox)不需要任何事件触发就能实现采集信息的任务。
对应用程序进行规划(续) • 程序规划步骤可以用任务(Task)、对象(Object),事件(Event)的分解图(TOE)来实现。
用户界面设计 • 对VB来说用户界面设计就是对窗体上的各个对象的排列安排。 • 基本的原则: • 按照一定的顺序排列对象,要么从上至下,要么从左到右。 • 相关的对象放在相邻位置(如示例中的optRev和optNRev)。 • 涉及实验参加者提交决策的对象需要在醒目位置显示。 • 完成对各个对象的初步排列后,可以根据需要在对象的旁边添加一些图标以说明各个对象的作用。
作业: Programming with Visual Basic 6.0 Enhanced Edition, Diane Zak, Tutorial 2
变量的作用是在程序的运行过程中临时记录数据。变量的作用是在程序的运行过程中临时记录数据。 • 变量中所存储的数据在程序运行中可以被改变。 • 由于变量只在程序运行中发挥作用,变量的生命周期不会超过程序的运行周期。 • 一个变量里只能存放一段数据,将新的数据存入变量中势必会抹去变量中原有的数据。