![《實驗經濟學》課件第7講 經濟實驗程序開發(fā)方法_第1頁](http://file4.renrendoc.com/view/6d2027612efbc2c6e2ce3ee7bf4fdf19/6d2027612efbc2c6e2ce3ee7bf4fdf191.gif)
![《實驗經濟學》課件第7講 經濟實驗程序開發(fā)方法_第2頁](http://file4.renrendoc.com/view/6d2027612efbc2c6e2ce3ee7bf4fdf19/6d2027612efbc2c6e2ce3ee7bf4fdf192.gif)
![《實驗經濟學》課件第7講 經濟實驗程序開發(fā)方法_第3頁](http://file4.renrendoc.com/view/6d2027612efbc2c6e2ce3ee7bf4fdf19/6d2027612efbc2c6e2ce3ee7bf4fdf193.gif)
![《實驗經濟學》課件第7講 經濟實驗程序開發(fā)方法_第4頁](http://file4.renrendoc.com/view/6d2027612efbc2c6e2ce3ee7bf4fdf19/6d2027612efbc2c6e2ce3ee7bf4fdf194.gif)
![《實驗經濟學》課件第7講 經濟實驗程序開發(fā)方法_第5頁](http://file4.renrendoc.com/view/6d2027612efbc2c6e2ce3ee7bf4fdf19/6d2027612efbc2c6e2ce3ee7bf4fdf195.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《實驗經濟學》第七講:
經濟實驗程序開發(fā)方法財經大學經濟學院-經濟學實驗室1《實驗經濟學》第七講:
經濟實驗程序開發(fā)方法1確保實驗結果的有效性,實驗室實驗通常兩小時內結束人力組織十幾個甚至二十幾個交易回合每個交易回合隨機配對怎么辦?開發(fā)計算機程序2確保實驗結果的有效性,實驗室實驗通常兩小時內結束2起先,開發(fā)實驗程序只是為了更充分地掌握數據、減少實驗運行失誤近年的發(fā)展表明,實驗運行(交易)過程的電子化為實驗方法開辟了新的天地大大降低了交易成本拓展了市場參與者的市場語言新市場機制在互聯網和電子商務時代隨處可見網絡環(huán)境下設計新機制并運用實驗手段檢驗新機制的特性,已經成了實驗經濟學的重要發(fā)展方向3起先,開發(fā)實驗程序只是為了更充分地掌握數據、減少實驗運行失誤§1 VisualBasic快速入門4§1 VisualBasic快速入門4討論的要點對基本開發(fā)環(huán)境的介紹面向對象的程序設計方法變量和變量組選擇結構循環(huán)結構對數據的存取運用VB實現實驗室內的信息傳遞5討論的要點對基本開發(fā)環(huán)境的介紹5一、VB的基本開發(fā)環(huán)境6一、VB的基本開發(fā)環(huán)境6運行MicrosoftVisualBasic6.0中文版,彈出“新建工程”的對話窗口。選擇“標準EXE”并點擊按鍵“打開”。7運行MicrosoftVisualBasic6.0中文88屏幕的中央是對象窗口。對象窗口內所展示的是一個空白的窗體窗體的標題欄上顯示“Form1”。窗體(Form)是VB程序的用戶界面。程序員決定在窗體上放置哪些內容(這些內容的學名叫“控件”)、又要對這些內容進行哪些處理;運行過程中,使用者將在窗體上看到這些內容的部分或全部,并根據編程人員的設計通過窗體上的內容實現特定功能。9屏幕的中央是對象窗口。9屏幕上方所顯示的是標題欄、菜單條和工具欄。屏幕的左側是VB的工具箱,工具箱內包含VB的多種控件?!翱丶笔悄軌虮环胖迷诖绑w上的內容。窗體和控件在VB里都被稱作“對象”。屏幕的右上方所顯示的是工程資源管理器。定義應用程序的層次結構。屏幕右下方是屬性窗口。所展示的是當前被選中的對象的各種屬性?!皩傩浴彼枋龅氖荲B中對象的特征。比如,窗體的屬性包括窗體的名稱、窗體的寬度和高度以及窗體在計算機屏幕上的位置等等。10屏幕上方所顯示的是標題欄、菜單條和工具欄。10 編寫一個最簡單的應用程序熟悉一下VB開發(fā)環(huán)境,在動手的過程中很多問題會自然而然地明朗……11 編寫一個最簡單的應用程序熟悉一下VB開發(fā)環(huán)境,在動手的過程給窗體和工程命名。選中空白窗體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”??焖匐p擊屏幕左側工具箱中的圖形控件(Image),在窗體frmHello的中央就會出現一個圖形對象Image1。點擊Image1的“Picture”屬性右側的省略號“…”,將會彈出一個加載圖片的對話框。在你的計算機內選擇你喜歡的圖片(注意,圖片不要太大)并點擊按鍵“打開”。調整Image1的邊框大小并用鼠標把Image1拖動到窗體的恰當位置。14將對象窗口最大化并調整frmHello的邊框將其拉大。141515在Image1的屬性窗口中,將Image1的名稱改為“imgNinghua”,并將“Visible”屬性改為“False”。點擊VB開發(fā)環(huán)境屏幕上方工具欄內的啟動鍵“”來運行程序。我們發(fā)現運行中的窗體上并不能見到所載入的圖片。再點擊屏幕上方工具欄內的結束鍵“”以終止程序的運行。16在Image1的屬性窗口中,將Image1的名稱改為“img快速雙擊屏幕左側工具箱中的圖標控件(label),在窗體frmHello的中央就會出現一個圖標Label1。采用類似的步驟,將Label1的名稱改為“l(fā)blHello”并將該圖標移動到圖片imgNinghua的右側。選中圖標lblHello的“Caption”屬性,并將該屬性的內容改為“Hello,everyone.”。隨后再選中圖標lblHello的“Font”屬性。點擊該屬性右側的省略號“…”,你將會看到選擇字體的對話框。選擇小四號字并調整lblHello的邊框大小。17快速雙擊屏幕左側工具箱中的圖標控件(label),在窗體fr1818快速雙擊圖標lblHello,這時會彈出程序代碼窗口,在該窗口內會顯示如下字樣:PrivateSublblHello_Click()EndSub19快速雙擊圖標lblHello,這時會彈出程序代碼窗口,在該窗l(fā)blHello_Click是一個事件。VB的事件是指VB的對象對某個外部事件所作出的響應。事件lblHello_Click是程序使用者點擊了圖標lblHello之后程序所執(zhí)行的操作。在“PrivateSublblHello_Click()”和“EndSub”之間所加入的各行計算機語句,就是當使用者點擊lblHello這一外部事件發(fā)生時VB程序才會執(zhí)行的操作。20lblHello_Click是一個事件。20PrivateSublblHello_Click()imgNinghua.Visible=TrueEndSub21PrivateSublblHello_Click()21現在保存工程,點擊啟動鍵“”來運行程序。試著點擊一下“Hello,everyone.”,圖片就會在窗體內出現。 (其實編程就這么簡單?。?2現在保存工程,點擊啟動鍵“”來運行程序。22點擊結束鍵“”終止程序的運行。如果編程人員不希望每次都在VB的開發(fā)環(huán)境內運行程序,編程人員可以生成可執(zhí)行文件。點擊菜單中的“文件”并選中“生成Hello.exe(K)…”,將Hello.exe存放在你希望存放的目錄中。23點擊結束鍵“”終止程序的運行。23二、面向對象的程序設計方法24二、面向對象的程序設計方法241.VB的對象、屬性、方法和事件251.VB的對象、屬性、方法和事件25VB的窗體和控件是具有自己的屬性、方法和事件的對象。屬性是一個對象的性質方法是對象的動作事件是對對象的響應26VB的窗體和控件是具有自己的屬性、方法和事件的對象。26小孩玩的氣球同樣具有屬性、方法和事件屬性直徑和顏色狀態(tài)屬性(充氣的或未充氣的)不可見的性質(如壽命)方法:氣球本身所固有的方法和動作充氣方法(用氦氣充滿氣球的動作)放氣方法(排出氣球中的氣體)上升方法(放手讓氣球飛走)事件:預定義的對某些外部事件的響應對刺破它的事件響應是放氣對放手事件的響應是升空27小孩玩的氣球同樣具有屬性、方法和事件27設置氣球的屬性:
Balloon.Color=Red
Balloon.Diameter=10
Balloon.Inflated=True注意代碼的語法,首先是對象(Balloon),接著是屬性(Color),然后是賦值(Red)。屬性也可以在程序設計階段在“屬性”窗口中設置。28設置氣球的屬性:28調用氣球的方法:
Balloon.Inflate
Balloon.Deflate
Balloon.Rise5它的語法與屬性的語法相似,對象(一個名詞)后面緊跟著方法(一個動詞)。在第三個例子中有一個附加項,稱為一個參數,表示氣球上升的高度。一些方法有一個或多個參數,它們對執(zhí)行的動作做進一步的描述。29調用氣球的方法:29 氣球對一個事件的響應如下所示:
SubBalloon_Puncture()
Balloon.Deflate
Balloon.MakeNoise"Bang"
Balloon.Inflated=False
Balloon.Diameter=1EndSub本例中代碼描述了當刺穿事件發(fā)生時,氣球的行為。30 氣球對一個事件的響應如下所示:302.面向對象的程序設計方法312.面向對象的程序設計方法31某個實驗里,每個銷售者都要同時提交兩個決定:選擇產品的銷售價格同時還要決定是否對產品價格作廣告32某個實驗里,每個銷售者都要同時提交兩個決定:32在這個實驗中的銷售者有可能先定價、再考慮是否作廣告,隨后將已經做好的決定同時提交;也有可能是相反的次序,先決定是否作廣告、然后再定價,隨后提交決策;還有可能,在最后提交決策之前她會改主意,比如她更改了初始選擇的價格……實驗程序中應當如何實現這樣的靈活性?面向對象的程序設計方法33在這個實驗中的銷售者33傳統(tǒng)的程序設計方法如C語言,Fortran等,都是面向過程的、線性的程序設計方法。新發(fā)展起來的Java,VB等語言,是面向對象的程序設計方法。34傳統(tǒng)的程序設計方法如C語言,Fortran等,都是面向過程的面向過程的程序設計方法所強調的是如何完成某一任務。面向過程的程序設計中,編程人員要從完成任務的第一步直到最后一步安排計算機所執(zhí)行的每一個細節(jié)。在面向過程的程序的應用過程中使用者沒有任何自主權、處于完全被動的角色使用者無權決定提交信息和處理信息的次序35面向過程的程序設計方法所強調的是如何完成某一任務。35而面向對象的(或事件驅動的)程序設計中編程人員圍繞著用戶界面中的對象進行設計只有用戶對對象做出了某種動作之后程序才會進行特定的操作。程序的使用者自己控制提交信息和處理信息的次序。36而面向對象的(或事件驅動的)程序設計中編程人員圍繞著用戶界面 面向對象的程序設計大致要遵從下面五個步驟:對應用程序進行規(guī)劃;建立用戶界面;編寫程序代碼(即計算機語句);對程序進行測試;書寫程序文檔。37 面向對象的程序設計大致要遵從下面五個步驟:37我們先著重介紹前兩個步驟,后三個步驟將在下一講《經濟實驗程序開發(fā)實例》中穿插說明。38我們先著重介紹前兩個步驟,后三個步驟將在下一講《經濟實驗程序對應用程序進行規(guī)劃首先要識別該程序要完成哪些任務。在識別任務時,對下述問題的回答會有幫助:實驗參加者需要提交哪些信息?經濟實驗程序需要完成哪些計算和處理?在用戶界面上需要向實驗參加者展示哪些信息?新的信息在用戶界面上出現時,舊的信息是否會消失?實驗程序在什么條件下會結束運行?39對應用程序進行規(guī)劃首先要識別該程序要完成哪些任務。在識別任務對應用程序進行規(guī)劃(續(xù))確定所要完成的任務究竟要通過哪些對象來實現。圖標(Label)用于展示特定的標識或運算結果文本框(TextBox)用于采集信息。40對應用程序進行規(guī)劃(續(xù))確定所要完成的任務究竟要通過哪些對象對應用程序進行規(guī)劃(續(xù))確定哪些對象的哪些事件被觸發(fā)時,程序所需要實現的任務會被完成。并不是所有的對象都需要事件觸發(fā)。你只需要針對部分對象的事件編寫程序,這些程序語句會在事件發(fā)生時執(zhí)行;而另外一些對象不需要你編程就能實現特定的任務。比如文本框(TextBox)不需要任何事件觸發(fā)就能實現采集信息的任務。41對應用程序進行規(guī)劃(續(xù))確定哪些對象的哪些事件被觸發(fā)時,程序對應用程序進行規(guī)劃(續(xù))程序規(guī)劃步驟可以用任務(Task)、對象(Object),事件(Event)的分解圖(TOE)來實現。42對應用程序進行規(guī)劃(續(xù))程序規(guī)劃步驟可以用任務(Task)、任務(Task)對象(Object)事件(Event)銷售者輸入價格信息文本框txtPrice無銷售者選擇作廣告選擇按鍵optRevoptRev_Click點擊銷售者選擇不作廣告選擇按鍵optNRevoptRev_Click點擊同時提交價格與廣告決策命令按鍵cmdOKcmdOK_Click點擊對應用程序進行規(guī)劃(續(xù))43任務(Task)對象(Object)事件(Event)銷售者用戶界面設計對VB來說用戶界面設計就是對窗體上的各個對象的排列安排?;镜脑瓌t:按照一定的順序排列對象,要么從上至下,要么從左到右。相關的對象放在相鄰位置(如示例中的optRev和optNRev)。涉及實驗參加者提交決策的對象需要在醒目位置顯示。完成對各個對象的初步排列后,可以根據需要在對象的旁邊添加一些圖標以說明各個對象的作用。44用戶界面設計對VB來說用戶界面設計就是對窗體上的各個對象的排用戶界面設計(續(xù))45用戶界面設計(續(xù))45用戶界面設計(續(xù))46用戶界面設計(續(xù))46作業(yè): ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial247作業(yè):47三、變量、變量組和常量48三、變量、變量組和常量481.變量491.變量49變量的作用是在程序的運行過程中臨時記錄數據。變量中所存儲的數據在程序運行中可以被改變。由于變量只在程序運行中發(fā)揮作用,變量的生命周期不會超過程序的運行周期。一個變量里只能存放一段數據,將新的數據存入變量中勢必會抹去變量中原有的數據。50變量的作用是在程序的運行過程中臨時記錄數據。50創(chuàng)建新變量51創(chuàng)建新變量51類型所存儲數據值的范圍Byte(字節(jié)型)二進位數值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(字節(jié)型)二進位數值0至25變量名的前綴:類型前綴BytebytBooleanblnCurrencycurDate(time)dtmDoubledblIntegerintLonglngObjectobjSinglesngStringstrVariantvnt53變量名的前綴:類型前綴BytebytBooleanblnCu變量名必須以字母開頭。變量名中只能包含字母、數字和下劃線,其它任何字符都不允許在變量名中出現。變量名最長不能超過255個字符。不能用VB中的保留字作變量名。保留字在VB中有特定含義和功能,不能作其它用途。比如在VB中“Print”是打印命令,屬于保留字,不能充當變量名。54變量名必須以字母開頭。54Dim
variablenameAs
datatype或Public
variablenameAs
datatype
比如,我們需要記錄實驗當前的交易輪次。為達目的,我們可以創(chuàng)建一個整型變量“intRound”,定義該變量的語句如下:
DimintRoundAsInteger55DimvariablenameAsdatatype或賦值56賦值56賦值是將數據存放到特定位置的過程。這個“特定位置”,既可以是某個對象的屬性,也可以是變量。賦值語句中的賦值符號為“=”,賦值號左側是數據存放的位置,而賦值號右側是數據。如:
Label1.Caption=“Hello!” intRound=10 curPrice=10.23原則上,數據要存放到與其類型一致的位置上去。57賦值是將數據存放到特定位置的過程。這個“特定位置”,既可以是賦值語句的一個應用技巧是累加。比如,
intRound=10 intRound=intRound+5在創(chuàng)建新變量時,VB自動將空字符串賦予字符串型和變體型的變量,而那些數值類型的變量會被賦為“0”值。58賦值語句的一個應用技巧是累加。比如,58變量的有效范圍59變量的有效范圍59局部變量由Dim語句在事件內定義。局部變量的生命周期是事件的發(fā)生過程。一旦事件結束,局部變量的使命告終。
PrivateSublblHello_Click() DimiAsInteger EndSub 局部變量i只在lblHello_Click()內有效。60局部變量由Dim語句在事件內定義。局部變量的生命周期是事件的窗體變量窗體變量的生命周期即窗體從載入到終止的周期。窗體變量對窗體內所有對象都有效,能在不同對象、事件和過程之間傳遞數據。也由Dim語句定義。窗體變量在代碼窗口的通用聲明(GeneralDeclaration)區(qū)域定義。61窗體變量窗體變量的生命周期即窗體從載入到終止的周期。61全程變量全程變量的生命周期等同于程序的運行周期。全程變量能在程序的多個窗體之間傳遞數據。用Public語句在程序的代碼模塊中定義。代碼模塊是程序中的獨立文件,僅包含程序代碼。在菜單條中點擊“工程”并選擇“添加模塊”,在彈出的對話窗口中選擇新建模塊,一個新的代碼模塊Module1就會被添加到工程中。全程變量的定義位置是代碼模塊的通用聲明區(qū)域。62全程變量全程變量的生命周期等同于程序的運行周期。62OptionExplicit語句63OptionExplicit語句63VB允許程序開發(fā)者對變量隨用隨定義。OptionExplicit語句的作用是禁止在程序中運用未經正式定義的變量。具體做法:在工程下所有窗體和代碼模塊的通用聲明區(qū)域輸入OptionExplicit語句,并緊隨該語句對變量進行定義。64VB允許程序開發(fā)者對變量隨用隨定義。64 OptionExplicit
Dimi,j,kAsInteger DimstrNameAsString65 OptionExplicit652.變量組662.變量組66變量組是相互關聯的一組變量,這些變量有相同的名稱和相同的數據類型。程序開發(fā)人員運用變量組在內存中暫時存取數據;運用變量組的優(yōu)勢是用它存取數據的速度遠高于在外部存儲設備中存取數據的速度。67變量組是相互關聯的一組變量,這些變量有相同的名稱和相同的數據 Dimarrayname(lowersubscriptTouppersubscript,…,lowersubscriptTouppersubscript)Asdatatype或
Publicarrayname(lowersubscriptTouppersubscript,…,lowersubscriptTouppersubscript)Asdatatype68 Dimarrayname(lowersubscript“arrayname”是變量組的名稱。對變量組的命名規(guī)定與對變量的命名規(guī)定類同?!發(fā)owersubscriptTouppersubscript”表示變量組的一個維。VB最高允許定義60維的變量組。在變量組中的各個變量通過變量組的名稱和下標識別。變量組的有效范圍以及OptionExplicit語句的應用完全類同于之前對變量的介紹。69“arrayname”是變量組的名稱。對變量組的命名規(guī)定與對 某實驗的每個交易回合中市場上的三個銷售者同時選擇各自的出價,而實驗一共要進行10個交易回合。用二維變量組curPrice來記錄出價,定義該變量組的語句如下:
DimcurPrice(1To10,1To3)AsCurrency curPrice的第一組下標指示交易的輪次,而第二組下標指示的是銷售者。70 某實驗的每個交易回合中市場上的三個銷售者同時選擇各自的出價3.常量713.常量71有些實驗參數在更改實驗條件時需要修正,而這些實驗參數在同一實驗中卻是固定不變的常量。這就需要實驗程序在一開始的地方對這些常量參數進行定義,定義符號常量的語句格式如下:
Public
Const
constname
As
datatype=expression符號常量需要在VB的代碼模塊的通用聲明區(qū)域中定義,其有效范圍是程序運行的全程。72有些實驗參數在更改實驗條件時需要修正,而這些實驗參數在同一實作業(yè): ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial373作業(yè):73四、選擇結構74四、選擇結構74程序的三種基本結構:順序結構,選擇結構和循環(huán)結構。順序結構中,程序的語句按照出現的先后次序,由前到后一個接一個地被執(zhí)行。選擇結構中,程序根據某個比較結果選擇執(zhí)行語句的路徑。循環(huán)結構中,某些語句會被執(zhí)行若干次、或直到某個特定的條件被滿足時才會停止執(zhí)行這些語句。75程序的三種基本結構:順序結構,選擇結構和循環(huán)結構。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”以后的語句將被執(zhí)行;如果條件表達式的值為“偽”,那么“Else”以后的語句將被執(zhí)行?!癊ndIf”表示選擇結構的結束。需要注意的是,If…Then…Else語句中不一定包括“Else”和“Else”以后的語句。在這種情況下,當條件表達式為“偽”時直接進行“EndIf”之后的操作,而選擇結構內部不進行任何操作。79“condition”是條件表達式,其值只可能是“真”或“偽注意:
我們在介紹VB的語句格式的時候,方括號里的內容為可選內容,編程人員根據需要來決定是否選用這些內容。 如果某語句格式的方括號里的內容在編程中被省略掉,VB也不會將其視作語法錯誤。80注意:80條件表達式中可包括變量、常量、對象的屬性、函數、數學運算符,關系運算符以及邏輯運算符。81條件表達式中可包括變量、常量、對象的屬性、函數、數學運算符,關系運算符82關系運算符82VB中有6種關系運算符:=,>,>=,<,<=,<>。包含關系運算符的表達式的返回值只可能是“真”或“偽”。各個關系運算符之間并沒有優(yōu)先次序,在表達式中對它們按照從左到右的順序進行處理。關系運算符的處理優(yōu)先級要低于數學運算符的優(yōu)先級數學運算符的優(yōu)先順序是先處理乘方,再處理乘除,最后處理加減。83VB中有6種關系運算符:=,>,>=,<,<=,<>。83表達式1:10+3<5*2 處理順序:首先計算5*2,得到10;隨后計算10+3,得到13;最后判斷不等式13<10的真?zhèn)?,返回值為“偽”(False)。表達式2:7>3*4/2 處理順序:首先計算3*4,得到12;隨后計算12/2,得到6;最后判斷不等式7>6的真?zhèn)危祷刂禐椤罢妗保═rue)。84表達式1:10+3<5*284UCase函數和LCase函數
85UCase函數和LCase函數85在VB中進行字符串比較時,如果兩個字符串所包含的字母相同、但字母的大小寫有所區(qū)別,那么VB會判定兩個字符串不同。如何在對比兩個字符串的時候忽略字母大小寫的區(qū)別?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中最常見的邏輯運算符。各邏輯運算符的優(yōu)先次序為Not,And,Or。邏輯運算符在表達式中的優(yōu)先次序在數學運算符和關系運算符之后。Not的作用是將條件表達式的值反轉;若干個由And運算符連接起來的條件表達式,只有在每個條件表達式都為“真”的情況下,被連接起來的復合條件表達式才為“真”;若干個由Or運算符連接起來的條件表達式,只要其中有一個條件表達式為“真”,被連接起來的復合條件表達式就會為“真”。90Not,And,Or,是VB中最常見的邏輯運算符。90表達式1:3>2And6>5 處理順序:首先判斷不等式3>2的真?zhèn)?,返回值為“真”(True);隨后判斷不等式6>5的真?zhèn)?,返回值為“真”(True);最后判斷TrueAndTrue,得到返回值“真”。表達式2:10<25And6>5+1 處理順序:先計算5+1,得到6;隨后判斷不等式10<25的真?zhèn)危祷刂禐椤罢妗保═rue);第三步判斷不等式6>6的真?zhèn)?,返回值為“偽”(False);最后評價TrueAndFalse,得到返回值“偽”。91表達式1:3>2And6>591表達式3:8=4*2Or6>5+1 處理順序:先計算4*2,得到8;隨后判斷等式8=8的真?zhèn)?,返回值為“真”(True);由于Or運算符左側的條件表達式為“真”,條件表達式3整體的返回值也為“真”。92表達式3:8=4*2Or6>5+192所有包含邏輯運算符的表達式的返回值只可能是“真”或“偽”。如果你用And運算符連接兩個條件表達式,而And運算符左側的條件表達式的值為“偽”時,VB將不再判斷And運算符右側的條件表達式的真?zhèn)?。類似地,如果你用Or運算符連接兩個條件表達式,而Or運算符左側的條件表達式的值為“真”時,VB將不再判斷Or運算符右側的條件表達式的真?zhèn)巍?3所有包含邏輯運算符的表達式的返回值只可能是“真”或“偽”。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”為被測表達式,它可以是字符串,也可以是數值。被測表達式可以包含變量,常量,各種運算符以及對象的屬性?!癳xpressionlist”是一系列表達式的列表。在Case語句中,表達式列表中的每個表達式的數據類型必須與被測表達式的數據類型相一致。當表達式列表中的某一個表達式與被測表達式相吻合時,在該表達式后的操作將被執(zhí)行,而Case語句中的其它操作路徑將被忽略,直接進行“EndSelect”之后的操作。如果沒有任何一個表達式列表中的表達式與被測表達式相吻合,“CaseElse”之后的操作將被執(zhí)行;在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作業(yè): ProgrammingwithVisualBasic6.0EnhancedEdition,DianeZak,Tutorial4110作業(yè):110五、循環(huán)結構111五、循環(huán)結構111在實驗中,所進行的交易回合往往不止一輪。交易回合開始,要將基本信息發(fā)送給實驗參加者:輪次,銷售者的成本、購買者的保有價格,等等。交易回合結束,要將交易結果發(fā)送給實驗參加者:實驗參加者本輪的決策、其他參加者的決策,實驗參加者本人本輪的所得,到目前為止的累積所得,等等。用實驗程序來實現這些任務需要進行一些重復性操作,這就涉及到了循環(huán)結構。112在實驗中,所進行的交易回合往往不止一輪。112循環(huán)結構中,某些語句會被執(zhí)行若干次、或直到某個特定的條件被滿足時才會停止執(zhí)行這些語句。三種基本形式:ForNext循環(huán)DoWhile循環(huán)DoUntil循環(huán)113循環(huán)結構中,某些語句會被執(zhí)行若干次、或直到某個特定的條件被滿1.ForNext循環(huán)1141.ForNext循環(huán)114ForNext循環(huán)的作用是將某些特定的操作重復執(zhí)行一定的次數,其語法格式如下:
For
counter=startvalue
to
endvalue[Step
stepvalue] [instructions] Nextcounter115ForNext循環(huán)的作用是將某些特定的操作重復執(zhí)行一定的次“Counter”是一個數值類型的變量“startvalue”是循環(huán)的初始值,“endvalue”是循環(huán)的終值,而“stepvalue”是循環(huán)的步長。循環(huán)的初始值,終值和步長都必須是數值,這些數值既可以是正數,也可以是負數。如果編程人員省略了對循環(huán)的步長的定義,則VB自動將循環(huán)的步長規(guī)定為1。116“Counter”是一個數值類型的變量116ForNext循環(huán)按照如下步驟運行:第一步,在循環(huán)開始的時候,將循環(huán)的初始值“startvalue”賦予變量“Counter”。這一操作只進行一次。117ForNext循環(huán)按照如下步驟運行:117第二步,如果步長“stepvalue”為正,則需要判定變量“Counter”的值是否大于循環(huán)的終值“endvalue”(如果步長“stepvalue”為負,則是相反的情況,需要判定變量“Counter”的值是否小于循環(huán)的終值“endvalue”)。 如果判定結果為“真”,則循環(huán)終止;如果判定結果為“偽”,則循環(huán)內的操作“instructions”將被執(zhí)行。118第二步,如果步長“stepvalue”為正,則需要判定變量“第三步,將步長值“stepvalue”加入到變量“Counter”中,并返回到上述第二步。 直到變量“Counter”的值大于終值“endvalue”(若步長為負,則變量“Counter”的值小于終值“endvalue”)的時候,循環(huán)結束。119第三步,將步長值“stepvalue”加入到變量“Count ForNext循環(huán)示例: 在某實驗中有12名實驗參加者參與,每個人在實驗開始時得到150實驗幣的啟動資金。我們用一維變量組sngTPayoff(1to12)來表示12個實驗參加者的累積所得,其中的變量sngTPayoff(i)是第i個實驗參加者的累積所得。現在將各個實驗參加者的累積所得初始化為150個實驗幣。120 ForNext循環(huán)示例:120 DimiAsInteger DimsngTPayoff(1To12)AsSingle
Fori=1to12 sngTPayoff(i)=150 Nexti121 DimiAsInteger1212.DoWhile循環(huán)和DoUntil循環(huán)1222.DoWhile循環(huán)和DoUntil循環(huán)122DoWhile語句中,當循環(huán)的判定條件為真時,重復執(zhí)行循環(huán)內的操作;DoUntil語句重復執(zhí)行循環(huán)內的操作,直到循環(huán)的判定條件為真時終止。DoWhile循環(huán)和DoUntil循環(huán)都能夠實現ForNext循環(huán)中,將某些操作重復執(zhí)行特定次數的功能。123DoWhile語句中,當循環(huán)的判定條件為真時,重復執(zhí)行循環(huán) DoWhile循環(huán)的語句格式為: DoWhile
condition [loopinstructions] Loop DoUntil循環(huán)的語句格式為: Do [loopinstructions] LoopUntilcondition124 DoWhile循環(huán)的語句格式為:124循環(huán)的條件“condition”可包含變量、常量、函數、對象的屬性以及各種運算符,“condition”的返回值必須是“真”或“偽”。在DoWhile循環(huán)中,當且僅當循環(huán)的條件“condition”的值為“真”時,循環(huán)內的操作“l(fā)oopinstructions”才會被執(zhí)行;DoUntil循環(huán)中,當且僅當循環(huán)的條件“condition”的值為“偽”時,循環(huán)內的操作“l(fā)oopinstructions”才會被執(zhí)行,一旦“condtion”為“真”則循環(huán)終止。125循環(huán)的條件“condition”可包含變量、常量、函數、對象DoWhile循環(huán)也被稱作前試循環(huán)。ForNext循環(huán)也是一種前試循環(huán)。DoUntil循環(huán)也被稱作后試循環(huán)。DoUntil循環(huán)內的操作至少會被執(zhí)行一次。126DoWhile循環(huán)也被稱作前試循環(huán)。ForNext循環(huán)也 用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計數器和累加器是循環(huán)結構最常見的兩種應用。計數器用于統(tǒng)計數量,比如在某個實驗的某個回合,究竟有多少實驗參加者選擇了納什均衡策略?而累加器用于求和,比如實驗進行了5輪以后某個實驗參加者的累積所得是多少?130計數器和累加器是循環(huán)結構最常見的兩種應用。130計數器和累加器都需要初始化和更新。初始化是指為計數器和累加器賦初始值。多數情況下,計數器和累加器會被初始化為0或1。更新是指將新的數值加入到計數器或累加器中。計數器每次的更新為常量,而累加器的更新為變量。更新在循環(huán)內進行,而初始化在更新所在的循環(huán)開始之前進行。131計數器和累加器都需要初始化和更新。131 計數器示例:
某實驗有12名參加者,共進行20個回合。在每個回合里,各實驗參加者要在選項“A”與“B”之間選一個?,F所有參加者在各個回合中的選擇都已被存入二維變量組strChoice(1to12,1to20)。其中變量strChoice(i,j)是指第i個實驗參加者在第j個回合所作的選擇。現在我們需要構造一個新的計數器變量組intChoiceA(1to20),用于統(tǒng)計在各回合中選擇“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個回合?,F所有參加者在各個回合中的所得都已被存入二維變量組sngPayoff(1to12,1to20)。sngPayoff(i,j)是指第i個實驗參加者在第j個回合的所得?,F在需要計算各個實驗參加者在實驗結束后的累積所得,由變量組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數據領域又被稱作數據元素,是一段無法繼續(xù)細分的信息。實驗參加者的識別號碼交易的輪次實驗參加者的角色數據記錄是一系列相關聯的數據領域的組合。在經濟實驗中,一條數據記錄就是某個實驗參加者在某個輪次的全部實驗結果。囚徒困境對策實驗:數據記錄中包括輪次,實驗參加者的識別號,與其配對的參加者的識別號,實驗參加者的決策,與其配對的參加者的決策,實驗參加者本輪所得以及實驗參加者的累積所得。數據文件是相關聯的數據記錄的集合。在經濟實驗中,數據文件包括所有實驗參加者在所有輪次中的全部實驗結果。140數據領域又被稱作數據元素,是一段無法繼續(xù)細分的信息。140經濟實驗中最常用到的數據文件是順序存取的數據文件。對順序存取的數據文件中的數據記錄只能依次按順序處理。音樂磁帶:只能按照順序播放樂曲,不能隨意跳轉到喜愛的樂曲。順序存取的文件易于創(chuàng)建,也易于操作。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即輸出模式,創(chuàng)建新的數據文件并將數據記錄存入新文件中。如果數據文件已經存在,VB將抹去數據文件中原有的內容。Append即附加模式,打開已有的數據文件并在該文件的末尾附加新的數據記錄。如果數據文件不存在,VB會在相應目錄下創(chuàng)建新的數據文件。148“mode”是數據文件打開的模式148“filenumber”是你賦予數據文件的識別號碼?!癴ilenumber”必須是1到511之間的整數(包括1和511)。數據文件在被編程人員打開期間,其識別號碼是唯一的。(VB最多能同時打開511個數據文件)。149“filenumber”是你賦予數據文件的識別號碼。149VB運用記錄指針來確定下一個要被處理的數據記錄的位置。用輸入模式打開數據文件時,記錄指針指向文件的起點、第一條數據記錄之前;用輸出模式打開數據文件時,記錄指針指向空文件的開端;用附加模式打開數據文件時,記錄指針指向文件的末尾、最后一條數據記錄的后面。當前的數據記錄處理完畢,記錄指針指向下一條數據記錄。150VB運用記錄指針來確定下一個要被處理的數據記錄的位置。150 打開文件示例:在某實驗中,你需要在“D:\Experiment\”路徑下創(chuàng)建一個新的順序存取的數據文件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”是某個已經被打開的數據文件的識別號碼?!皏ariablelist”是變量的列表。當變量的列表中包括多個變量時,各個變量之間用逗號分割開。變量列表中的各變量分別對應于數據記錄的各個數據領域。變量列表中變量的數量以及各變量的數據類型必須與數據記錄中數據領域的數量和數據類型相一致。各變量在變量列表中的順序也必須與數據記錄中各數據領域的順序相一致。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”是某個已經被打開的數據文件的識別號碼?!皁utputlist”是輸出列表,輸出列表中既可以包含數字、字符串,也可以包含變量。當輸出列表中含有多個分量時,各分量之間用逗號分割。對輸出列表的規(guī)定與Input語句中關于變量列表的規(guī)定類似。如果輸出列表中包括字符串,字符串外要加上雙引號。如果輸出列表中包括字符型的變量,在該變量外不要加引號。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函數常作為判定條件與循環(huán)語句相結合,如:
DoWhileNotEOF(1) [loopinstructions] Loop
或
Do [loopinstructions] LoopUntilEOF(1)169 EOF函數常作為判定條件與循環(huán)語句相結合,如:169七、運用ESLNetworkQueue處理實驗中的信息傳遞170七、運用ESLNetworkQueue處理實驗中的信息傳經濟實驗中最常遇見的問題是信息傳遞。所有實驗參加者在實驗過程中通過實驗程序所做出的決策,都要傳遞給研究人員并被記錄下來。許多實驗設計中,部分或全部實驗參加者的決策在特定條件下會被其他實驗參加者觀察到。如何通過實驗程序實現?171經濟實驗中最常遇見的問題是信息傳遞。171ESLNetworkQueue是專門處理實驗中信息傳遞問題的VB控件。該控件大幅度降低了信息傳遞的任務難度。通過該控件,只需要在程序中鍵入一些簡單的命令就能夠經網絡傳遞信息。172ESLNetworkQueue是專門處理實驗中信息傳遞問1.信息傳遞的基本架構1731.信息傳遞的基本架構173信息傳遞的物理結構
在實驗室中,研究人員所占用的計算機被稱作“服務器”。服務器要與實驗參加者保持距離,以免實驗參加者窺視到服務器上的信息。服務器所處的位置要便于研究人員觀察到實驗參加者的活動。為滿足這樣的要求,實驗經濟學實驗室通常被分成實驗區(qū)和控制區(qū)兩個區(qū)域。在實驗區(qū)內,每個實驗參加者占用一臺計算機。實驗經濟學實驗室的計算機數量依情況而定。174信息傳遞的物理結構在實驗室中,研究人員所占用的計算機被稱作實驗者(即研究人員)與實驗參加者之間信息傳遞的關系
PC1實驗參加者1服務器(實驗者)……PCn實驗參加者n175實驗者(即研究人員)與實驗參加者之間信息傳遞的關系PC1在網絡中,服務器是信息傳遞的中心,與n個實驗參加者相連。實驗參加者各自占用一臺計算機,編號從PC1到PCn。每一個實驗參加者只能向服務器提交信息,也只能從服務器獲得信息。服務器在網絡中是唯一的信息中轉節(jié)點,實驗參加者之間直接的信息傳遞被嚴格禁止。目的是保證研究人員能觀察到實驗運行的全部過程,并記錄所有需要的數據。176在網絡中,服務器是信息傳遞的中心,與n個實驗參加者相連。172.ESLNetworkQueue簡介1772.ESLNetworkQueue簡介177用VB開發(fā)的經濟實驗程序都是由服務器程序和實驗參加者程序共同構成的。服務器程序在實驗者的計算機上運行,而實驗參加者程序在實驗參加者所使用的各臺計算機上運行。實驗參加者程序為實驗參加者提供輸入決策和閱讀反饋信息的界面,而服務器程序將實驗參加者的決策提供給研究人員、并把這些決策記錄下來。178用VB開發(fā)的經濟實驗程序都是由服務器程序和實驗參加者程序共同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方法的作用是由服務器向某個實驗參加者發(fā)送信息,SendMessage方法要在信息隊列已打開(即應用OpenQueues方法后)且所有實驗參加者程序都已連入信息隊列(即應用ConnectQueues方法)之后才能夠應用。其語法格式如下:
NQmonitor.SendMessageMessage,MessageType,SubjectMessage是服務器所發(fā)送的信息的內容。MessageType是一個字符串,它所描述的是信息的類型。Subject是一個整數,它所描述的是接受信息的實驗參加者的識別號碼。184SendMessage方法NQmonitor的SendMeMessageArrived事件MessageArrived事件是某個實驗參加者向服務器所發(fā)送的信息(即提交的決策)到達控件NQmonitor的信息隊列后服務器所做出的響應。語法格式如下:
PrivateSubNQmonitor_MessageArrived(MessageAsVariant,MessageTypeAsString,SubjectAsInteger) [instructions] EndSubMessage是實驗參加者所發(fā)送的信息的內容。MessageType是實驗參加者所發(fā)送的信息的類型。Subject是發(fā)送該信息的實驗參加者的識別號碼。這三個固有常量僅可在MessageArrived事件內使用。185MessageArrived事件MessageArrived控件NQsubject的特征186
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技公司商業(yè)模式創(chuàng)新的成功案例研究
- 科技助力構建平安校園新生態(tài)
- 家庭教育與醫(yī)療健康的關系
- DB6103T 81-2025袋栽銀耳栽培技術規(guī)范
- DB35T 2228-2024科技成果轉化效果評估導則
- 個人向企業(yè)租賃設備合同標準范本
- 個人地下停車位轉讓合同書
- 三人共同持股合同范例
- 個人貸款合同樣本(房產抵押)
- 二人合資創(chuàng)業(yè)合同書:經營合作協議
- 《走進神奇》說課稿
- 2024年內蒙古中考語文試卷五套合卷附答案
- 湖南2024年湖南省衛(wèi)生健康委直屬事業(yè)單位招聘276人筆試歷年典型考題及考點附答案解析
- 五年級下冊語文教案 學習雙重否定句 部編版
- 南京地區(qū)幼兒園室內空氣污染物與兒童健康的相關性研究
- 2024年湖南鐵路科技職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- (正式版)SHT 3115-2024 石油化工管式爐輕質澆注料襯里工程技術規(guī)范
- (正式版)JBT 9630.1-2024 汽輪機鑄鋼件無損檢測 第1部分:磁粉檢測
- 平安產險陜西省地方財政生豬價格保險條款
- 地震應急救援培訓課件
- 《有責任有擔當青春才會閃光》教學課件-2023-2024學年高一下學期愛國主義教育主題班會
評論
0/150
提交評論