版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章VB可視化程序設(shè)計(jì)基礎(chǔ)
模擬計(jì)算器程序設(shè)計(jì)窗體基本的輸入/輸出控件命令按鈕VisualBasic程序設(shè)計(jì)語言基礎(chǔ)基本語句數(shù)組過程知識(shí)延伸——焦點(diǎn)2/6/20231知識(shí)回顧通過一個(gè)文字移動(dòng)的例子,講解VB功能特色集成開發(fā)環(huán)境可視化編程的基本概念(類和對(duì)象)可視化編程的基本步驟工程管理和程序調(diào)試提問:什么是類?什么是對(duì)象?提問:可視化程序設(shè)計(jì)的三種工作模式?提問:可視化程序設(shè)計(jì)編程的基本步驟。2/6/20232本章目標(biāo)熟悉窗體、標(biāo)簽、文本框和命令按鈕的使用掌握VB的基本語法掌握三種控制語句掌握數(shù)組的定義和使用掌握過程的定義和使用能根據(jù)所學(xué)基礎(chǔ)知識(shí)開發(fā)簡單應(yīng)用程序2/6/202332.2窗體什么是窗體在程序設(shè)計(jì)時(shí),窗體是設(shè)計(jì)的平臺(tái)在程序運(yùn)行時(shí),窗體是應(yīng)用程序與用戶交互的平臺(tái)窗體由系統(tǒng)菜單、標(biāo)題欄、最小化和最大化按鈕、關(guān)閉按鈕組成系統(tǒng)菜單標(biāo)題欄最小化按鈕最大化按鈕關(guān)閉按鈕2/6/20235窗體—常用屬性(3-1)示例:模擬黑板。(單擊查看代碼)剛運(yùn)行時(shí)單擊后雙擊后2/6/20236NameBackColor和ForeColorBorderStyleHeight和WidthCaption用來指定窗體的名稱,在代碼中用來引用窗體用來指定窗體的背景顏色和前景顏色用來指定窗體的邊框樣式用來指定窗體的高度和寬度,單位:twip用來指定窗體的標(biāo)題信息(單擊查看補(bǔ)充材料)2/6/20237窗體—常用屬性(3-3)VisibleEnabledAutoRedrawPicture用來指定窗體是否可見指定窗體運(yùn)行時(shí)是否可響應(yīng)用戶或系統(tǒng)的操作用來實(shí)現(xiàn)窗體上輸出內(nèi)容的持久顯示如:當(dāng)單擊窗體時(shí),窗體是否能否調(diào)用窗體單擊事件過程即:當(dāng)窗體由非激活狀態(tài)轉(zhuǎn)回到激活狀態(tài)時(shí),仍然能夠顯示原來輸出的內(nèi)容用來設(shè)置窗體上顯示的圖形
LoadPicture函數(shù)的使用Form1.Picture=LoadPicture("圖形文件路徑")(單擊查看補(bǔ)充材料)2/6/20239窗體—事件Load(加載)事件窗體被裝入內(nèi)存工作區(qū)時(shí)觸發(fā)該事件通常用來在啟動(dòng)程序時(shí)對(duì)屬性和變量進(jìn)行初始化Click(單擊)事件鼠標(biāo)單擊窗體時(shí)觸發(fā)DblClick(雙擊)事件鼠標(biāo)雙擊窗體時(shí)觸發(fā)Resize事件當(dāng)窗體第一次顯示或改變大小時(shí)觸發(fā)Resize事件使用。(單擊查看代碼)2/6/202310窗體—常用方法(2-1)Print用于在窗體上輸出數(shù)據(jù)格式[對(duì)象.]Print[{tab(n)|spc(n)][表達(dá)式列表][;|,]Cls清除運(yùn)行時(shí)在窗體上顯示的文本和圖形不能清除設(shè)計(jì)階段窗體上的文本和圖形2/6/202311幾個(gè)練習(xí)例題示例:在Load事件中通過代碼為窗體和命令按鈕的屬性設(shè)置初始值。單擊按鈕實(shí)現(xiàn)窗體向屏幕右下角移動(dòng),同時(shí)實(shí)現(xiàn)用Print方法顯示窗體的當(dāng)前位置。單擊窗體實(shí)現(xiàn)窗體恢復(fù)至登錄時(shí)的位置。(單擊查看代碼)示例:在窗體上顯示一個(gè)圖片,使圖片充滿整個(gè)窗體
且在窗體大小發(fā)生變化的時(shí),仍然是圖片充滿整個(gè)窗體(單擊查看代碼)(提示:需用Image控件)2/6/2023132.3基本的輸入/輸出控件標(biāo)簽用于顯示文本信息起提示作用在運(yùn)行的時(shí)候用戶不能直接錄入信息文本框是一個(gè)文本編輯區(qū)域用于輸入、編輯、修改和顯示文本信息在運(yùn)行的時(shí)候用戶可以直接錄入信息2/6/202314標(biāo)簽—屬性(2-1)CaptionBorderStyleBackStyleAlignmentBackColor和ForeColor用標(biāo)簽制作浮雕效果文字。(單擊查看代碼)用來設(shè)置標(biāo)簽要顯示的內(nèi)容用來設(shè)置標(biāo)簽有無邊框0-None標(biāo)簽無邊框(默認(rèn))1-FixedSingle標(biāo)簽有立體邊框用來設(shè)置標(biāo)簽背景是否透明0-Transparent透明1-Opaque不透明(默認(rèn))用來設(shè)置標(biāo)簽內(nèi)文本的水平對(duì)齊方式2/6/202315標(biāo)簽—事件ClickDblClick在實(shí)際應(yīng)用中,標(biāo)簽一般只起到顯示文字和提示作用,因此一般不用編寫事件過程2/6/202317文本框控件用文本框制作一個(gè)登錄界面。窗體上有系統(tǒng)的標(biāo)題
窗體上有用戶名和密碼的輸入
單擊“確定”按鈕,判斷輸入的用戶名和密碼是否正確如果正確,提示“歡迎光臨?。?!”如果不正確,提示“用戶名和密碼錯(cuò)誤,請(qǐng)重新輸入!”同時(shí),清空密碼文本框內(nèi)容,并把焦點(diǎn)放到用戶名文本框,讓用戶重新輸入單擊“取消”按鈕,退出程序的運(yùn)行(單擊查看代碼)2/6/202318文本框—屬性(4-1)Text文本框沒有Caption屬性Text屬性設(shè)置顯示的文本信息對(duì)文本框中字符格式的設(shè)置將會(huì)影響文本框全部內(nèi)容,不能只對(duì)部分內(nèi)容設(shè)置格式MaxLength設(shè)置文本框允許輸入的最大字符數(shù)默認(rèn)為0,表示無限制PassWordChar設(shè)置是否在文本框中顯示用戶鍵入的字符如PassWordChar不為空,文本框中顯示指定字符,但此時(shí)Text屬性值仍然為實(shí)際文本內(nèi)容;否則,文本框顯示實(shí)際輸入文本內(nèi)容。2/6/202319文本框—屬性(4-3)創(chuàng)建多行文本框: 默認(rèn)情況下,文本框只顯示單行文本,無滾動(dòng)條,不支持回車換行。MultiLine只能在設(shè)計(jì)時(shí)(即屬性窗口中)設(shè)置只有在ScrollBars為非零值時(shí)有效取值為True或FalseScrollBars只能在設(shè)計(jì)時(shí)(即屬性窗口中)設(shè)置設(shè)置文本框是否具有水平或垂直滾動(dòng)條ScrollBars0-None無滾動(dòng)條
1-Horizontal只有水平滾動(dòng)條
2-Vertical只有垂直滾動(dòng)條
3-Both具有水平和垂直兩種滾動(dòng)條2/6/202321文本框—屬性(4-4)Enabled設(shè)置是否相應(yīng)用戶或系統(tǒng)的操作取值為True或FalseLocked設(shè)置文本框是否可以編輯取值為True或False兩者的區(qū)別?相同點(diǎn):兩者都不允許用戶直接錄入內(nèi)容不同點(diǎn):Locked為True時(shí),可以接受焦點(diǎn);Enabled為False時(shí),不能接受焦點(diǎn)。2/6/202322屬性類型總結(jié)只能在設(shè)計(jì)階段設(shè)置的屬性MultiLine、ScrollBars只能在運(yùn)行階段設(shè)置的屬性SelStart、SelLength、SelText可同時(shí)在運(yùn)行和設(shè)計(jì)階段設(shè)置的屬性問題:設(shè)計(jì)階段選中某個(gè)控件,在屬性窗口中顯示該控件的所有屬性。2/6/202323文本框—事件Click和DblClickChange在改變文本框的Text屬性時(shí)觸發(fā)該事件問題:如果有Text1_Change事件過程,運(yùn)行時(shí)用戶在文本框中輸入“Change”,會(huì)觸發(fā)幾次Text1_Change事件過程?LostFocus當(dāng)文本框失去焦點(diǎn)時(shí)觸發(fā)GotFocus當(dāng)文本框獲得焦點(diǎn)時(shí)觸發(fā)6次2/6/202325練習(xí)例題示例:要求輸入合法數(shù)字?jǐn)?shù)據(jù)。在第一個(gè)文本框輸入信息,當(dāng)輸入結(jié)束時(shí),判斷數(shù)據(jù)是否有效
對(duì)于輸入正確的數(shù)據(jù),在第二個(gè)文本框中顯示“正確??!”對(duì)于輸入錯(cuò)誤的數(shù)據(jù),則顯示錯(cuò)誤信息,并清除第一個(gè)文本框中輸入的信息,使焦點(diǎn)重新回到文本框
提示:判斷是否為數(shù)字,使用函數(shù)IsNumeric(參數(shù))(單擊查看代碼)2/6/202326命令按鈕—屬性(2-2)Value
設(shè)計(jì)階段無效,只能在運(yùn)行時(shí)獲取或設(shè)置用于檢查或設(shè)置按鈕當(dāng)前是否被按下True:按下 False:未按下Default設(shè)置窗體中的某個(gè)命令按鈕為缺省按鈕當(dāng)按Enter鍵時(shí),相當(dāng)于單擊該按鈕Cancel設(shè)置窗體中的某個(gè)命令按鈕為取消按鈕當(dāng)按Esc鍵時(shí),相當(dāng)于單擊該按鈕在同一窗體中,只能有一個(gè)命令按鈕的Default屬性為True,也只能有一個(gè)按鈕的Cancel屬性為True。2/6/202329命令按鈕—事件Click按鈕沒有DblClick事件2/6/2023302.5VB程序設(shè)計(jì)語言基礎(chǔ)編碼規(guī)則數(shù)據(jù)類型變量和常量運(yùn)算符和表達(dá)式常用函數(shù)2/6/202331編碼規(guī)則VB代碼不區(qū)分字母的大小寫語句書寫自由在同一行可以書寫多條語句,語句間用冒號(hào)“:”分隔一條語句可以分若干行書寫,此時(shí)在后面添加續(xù)行符(一個(gè)空格后面跟一個(gè)下劃線)一行允許多達(dá)255個(gè)字符注釋有利于程序的維護(hù)和調(diào)試Rem:作為一個(gè)單獨(dú)的語句出現(xiàn)撇號(hào)“‘”:可以直接出現(xiàn)在語句的后面2/6/202332數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型數(shù)值型(Numeric)邏輯型(Boolean)日期型(Date)字符型(String)可變型(Variant)對(duì)象型(Object)用戶自定義類型標(biāo)準(zhǔn)數(shù)據(jù)類型2/6/202333標(biāo)準(zhǔn)數(shù)據(jù)類型(4-1)數(shù)值類型字節(jié)型(Byte)整型(Integer):類型符為%長整型(Long):類型符為&單精度型(Single):類型符為!雙精度型(Double):類型符為#貨幣型(Currency):類型符為@ 定點(diǎn)實(shí)數(shù),最多保留小數(shù)點(diǎn)右邊4位和小數(shù)點(diǎn)左邊15位2/6/202334標(biāo)準(zhǔn)數(shù)據(jù)類型(4-2)邏輯型(Boolean)只有兩個(gè)值:True、False可以和數(shù)值互換
True:-1(非零值) False:0例如:(1+2)AndTrue? TrueXorNot10?字符型(String)雙引號(hào)是字符串的界定符VB用兩個(gè)字節(jié)表示一個(gè)字符(包括西文字符和中文字符)采用的是Unicode字符集分為定長字符串和不定長字符串如:"可視化程序設(shè)計(jì)VisualBasic"3或True10或True長度:192/6/202335標(biāo)準(zhǔn)數(shù)據(jù)類型(4-3)日期型(Date)日期范圍:從公元100年1月1日到9999年12月31日時(shí)間范圍:從0:00:00到23:59:59
用“#”把日期括起來 如:#September26,2004#,#9/26/2004#, #2004-9-2610:20:30am#用數(shù)字序列表示 小數(shù)點(diǎn)左邊:日期;小數(shù)點(diǎn)右邊:時(shí)間 參照時(shí)間:1899年12月31日0:00:00 如:DimTAsDate:T=-2.5:PrintT?補(bǔ)充材料:國際化代碼1899年12月28日12:00:002/6/202336標(biāo)準(zhǔn)數(shù)據(jù)類型(4-4)變體類型(Variant)一種特殊的數(shù)據(jù)類型
是所有未定義變量的數(shù)據(jù)類型對(duì)數(shù)據(jù)的處理取決于上下文的需要例如:
DimaAsVarianta=10% 'a此時(shí)是整型
a=“VB” 'a此時(shí)是字符型
a=True 'a此時(shí)是布爾類型2/6/202337自定義類型是由用戶自己定義的數(shù)據(jù)類型,它由若干個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類型組成。定義語句格式
[Private|Public]Type類型名 元素名As數(shù)據(jù)類型 元素名As數(shù)據(jù)類型 ……EndType例如TypeStudent NumberAsInteger NameAsString*6 AgeAsInteger BirthdayAsDate SexAsBooleanEndType2/6/202338變量與常量常量在程序執(zhí)行過程中保持不變的數(shù)據(jù)文字常量
如:3.14 20% True “VB”符號(hào)常量:用標(biāo)示符表示一個(gè)固定Const常量名[As數(shù)據(jù)類型]=表達(dá)式通常常量名的所有字母都大寫如:ConstPIAsDouble=3.1415926系統(tǒng)常量:VB系統(tǒng)提供的符號(hào)常量如:vbMinimized(最小化)2/6/202339變量與常量變量在程序運(yùn)行過程中其值可以發(fā)生改變的量每一個(gè)變量都有名字和數(shù)據(jù)類型變量名用來唯一地標(biāo)志每一個(gè)變量數(shù)據(jù)類型表明了該變量的類型變量的聲明顯示聲明隱式聲明(初學(xué)者最好不要使用隱式聲明)Public|Dim|Static|Private變量名As數(shù)據(jù)類型[,變量名As數(shù)據(jù)類型…]Public|Dim|Static|Private變量名<類型符>[,變量名<類型符>…]例如:DimintAAsInteger,intB%
隱式聲明:不顯式聲明變量而直接使用
此時(shí)變量被默認(rèn)為Variant數(shù)據(jù)類型2/6/202340變量變量的命名規(guī)則必須以字母或漢字開頭由字母、漢字、數(shù)字和下劃線組成長度小于或等于255個(gè)字符不能使用VB中的關(guān)鍵字VB中不區(qū)分變量名的大小寫
如:MyName,myname,myName是同一個(gè)變量變量名由多個(gè)單詞組成時(shí),建議每個(gè)單詞的第一個(gè)字母大寫,其余字母小寫變量的作用域單擊窗體時(shí),輸出單擊的次數(shù)(查看代碼)2/6/202341運(yùn)算符算術(shù)運(yùn)算符/(浮點(diǎn)除) \(整除)%(取余)關(guān)系運(yùn)算符兩個(gè)漢字用拼音進(jìn)行比較漢字字符大于西文字符邏輯運(yùn)算符Not And Or或Xor Eqv Imp字符運(yùn)算符+ &優(yōu)先級(jí)(重點(diǎn))算術(shù)運(yùn)算符>字符運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算符
/(浮點(diǎn)除):同數(shù)學(xué)的除法,結(jié)果可以是小數(shù)
\(整除):對(duì)兩數(shù)進(jìn)行除法運(yùn)算后取商的整數(shù)部分。若參與運(yùn)算的兩個(gè)數(shù)都是整數(shù),則可直接進(jìn)行運(yùn)算。若參與運(yùn)算的兩個(gè)數(shù)中有實(shí)數(shù),則先將實(shí)數(shù)的小數(shù)部分進(jìn)行四舍五入,再進(jìn)行運(yùn)算。
%(取余):對(duì)兩數(shù)進(jìn)行除法運(yùn)算后取商的余數(shù)部分。參與運(yùn)算的兩個(gè)數(shù)的處理同整除運(yùn)算。例如:16.5\3=5
字符串只有連接運(yùn)算
區(qū)別
+:兩邊必須是字符串
&:兩邊不一定是字符串,但必須有空格例如
"abcdef"&12345'結(jié)果為"abcdef12345“"abcdef"+12345'出錯(cuò)
"123"&456'結(jié)果為"123456""123"+456'結(jié)果為579 "123"+"456“'結(jié)果為123456
注意:"123"+True=1222/6/202342表達(dá)式什么是表達(dá)式?
由常量、變量、函數(shù)、運(yùn)算符以及括號(hào)連接起來的有意義的式子稱為表達(dá)式。書寫規(guī)則運(yùn)算符不能相鄰。例a+-b是錯(cuò)誤的。乘號(hào)不能省略。例x乘以y應(yīng)寫成:x*y。括號(hào)必須成對(duì)出現(xiàn),均使用圓括號(hào)。從左到右在同一基準(zhǔn)上書寫,無高低、大小。能用系統(tǒng)函數(shù)的地方盡量使用系統(tǒng)函數(shù)。2/6/202343幾個(gè)練習(xí)例題用人單位招聘秘書:年齡小于40歲的女性,學(xué)歷??苹虮究颇挲g學(xué)歷And本科??芆r招聘條件(學(xué)歷=“專科”O(jiān)r學(xué)歷=“本科”)And年齡<40And性別=“女”算術(shù)表達(dá)式
x大于等于3,并且小于等于73<=xAndx<=7性別2/6/202344常用函數(shù)函數(shù)類型
內(nèi)部函數(shù)用戶自定義函數(shù)內(nèi)部函數(shù)(標(biāo)準(zhǔn)函數(shù))數(shù)學(xué)函數(shù)字符串函數(shù)轉(zhuǎn)換函數(shù)時(shí)間/日期函數(shù)隨機(jī)函數(shù)格式輸出函數(shù)函數(shù)調(diào)用方法
函數(shù)名([參數(shù)表])2/6/202345數(shù)學(xué)函數(shù)Abs(x)函數(shù):求x的絕對(duì)值,x為數(shù)值型參數(shù)Exp(x)函數(shù):求ex的值Log(x)函數(shù):求x的自然對(duì)數(shù),返回lnx的值,且x>0Sgn(x)函數(shù):求x的符號(hào)值(符號(hào)函數(shù))Sqr(x)函數(shù):求x的算術(shù)平方根,x≧0Int(x)和Fix(x)函數(shù):均為取整運(yùn)算(但有區(qū)別)隨機(jī)函數(shù)Rnd()三角函數(shù)2/6/202346Int和Fix函數(shù)的區(qū)別共同點(diǎn)均刪除參數(shù)的小數(shù)部分,返回整數(shù)部分取整時(shí)均不進(jìn)行四舍五入當(dāng)參數(shù)為正數(shù)時(shí),兩者功能相同區(qū)別當(dāng)參數(shù)為負(fù)數(shù)時(shí)Int返回小于或等于參數(shù)的第一個(gè)負(fù)整數(shù)Fix返回大于或等于參數(shù)的第一個(gè)負(fù)整數(shù)例題(單擊查看代碼)(單擊查看補(bǔ)充資料)2/6/202347隨機(jī)函數(shù)用來產(chǎn)生隨機(jī)數(shù).形式Rnd[(x)]:返回一個(gè)單精度的隨機(jī)數(shù)取值范圍:0<=Rnd<1 [0,1)RandomizeRandomize[(x)]產(chǎn)生隨機(jī)數(shù)的種子,保證每次運(yùn)行產(chǎn)生不同的隨機(jī)數(shù)求某個(gè)必區(qū)間[下界,上界]的隨機(jī)整數(shù)
公式:Int((上界-
下界+1)×Rnd())+下界
產(chǎn)生在區(qū)間[1,6]上的隨機(jī)整數(shù)(查看代碼)2/6/202348轉(zhuǎn)換函數(shù)Asc(c)函數(shù):將字符c轉(zhuǎn)換成ASCII碼值Chr(n)函數(shù):將ASCII碼值轉(zhuǎn)換成字符LCase(c)函數(shù):將字符串c中的大寫字母轉(zhuǎn)換為小寫字母UCase(c)函數(shù):將字符串c中的小寫字母轉(zhuǎn)換為大寫字母Str(n)函數(shù):將數(shù)值n轉(zhuǎn)換成字符串Val(c)函數(shù):將數(shù)字字符轉(zhuǎn)換成數(shù)值
Str()函數(shù)將非負(fù)數(shù)值轉(zhuǎn)化成字符類型后,會(huì)在轉(zhuǎn)換后的字符串左邊增加空格,即數(shù)值的符號(hào)位。
CStr$():不加符號(hào)位。
Val()將數(shù)字字符串轉(zhuǎn)化為數(shù)值類型,當(dāng)字符串中出現(xiàn)數(shù)值類型規(guī)定的字符外的字符時(shí),則停止轉(zhuǎn)換。2/6/202349字符串函數(shù)Len(c)函數(shù):求字符串c的長度Left(c,n)和Right(c,n):返回字符串c左(右)邊的n個(gè)字符Mid(c,n1,n2)函數(shù):自字符串c的第n1個(gè)字符開始向右取n2個(gè)連續(xù)的字符。LTrim(c)、RTrim(c)和Trim(c)函數(shù):去掉字符串c左邊、右邊、左右兩邊的空格String(n,c)函數(shù):返回字符串c的首字符組成的n個(gè)字符的字符串。InStr([n1,]c1,c2)函數(shù):在字符串c1中從第n1個(gè)字符開始查找字符串c2,若找到返回位置值;若找不到,則返回0Space(n)函數(shù):產(chǎn)生由n個(gè)空格組成的字符串2/6/202350時(shí)間/日期函數(shù)Time()或者Time函數(shù):返回系統(tǒng)時(shí)間Date()或者Date函數(shù):返回系統(tǒng)日期Year(d)函數(shù):返回參數(shù)d的年號(hào)d為日期類型參數(shù)Month(d)函數(shù):返回參數(shù)d的月份號(hào)Day(d)函數(shù):返回參數(shù)d的日期號(hào)WeekDay(d):返回參數(shù)d的星期號(hào)Now函數(shù):返回系統(tǒng)的日期和時(shí)間2/6/202351格式輸出函數(shù)格式:Format(<表達(dá)式>,<格式字符串>)功能:按格式字符串指定的格式輸出表達(dá)式的值。說明:表達(dá)式可以是數(shù)值型、字符型、日期型數(shù)據(jù)。示例:運(yùn)行下面代碼查看結(jié)果(單擊查看代碼)PrivateSubForm_Click() PrintFormat(2.71828,“#####.##")PrintFormat(2.71828,”00000.00”)PrintFormat(Date,"dddddd")PrintFormat(time,“ttttt”)EndSub(單擊查看代補(bǔ)充資料)2/6/202352Shell函數(shù)負(fù)責(zé)執(zhí)行一個(gè)可執(zhí)行文件。形式:Shell(命令字符串[,窗口類型])命令字符串:要執(zhí)行的應(yīng)用程序名,包括路徑,且必須是可執(zhí)行文件(擴(kuò)展名為exe、com、bat)窗口類型:執(zhí)行應(yīng)用程序的窗口大小。返回一個(gè)Variant。
如果成功,代表這個(gè)程序的進(jìn)程ID; 若不成功,則會(huì)返回0。2/6/202353Shell函數(shù)示例i=Shell("c:\windows\calc.exe")j=Shell("c:\",1)提示:如果不知道應(yīng)用程序的路徑名,可用Start命令啟動(dòng)程序:i=Shell(start&"calc.exe");i=Shell(start&"vb6.exe")2/6/202354常見錯(cuò)誤邏輯表達(dá)式書寫錯(cuò),在VB沒有造成語法錯(cuò)而形成邏輯錯(cuò)例如,數(shù)學(xué)表達(dá)式3≤x<10
VB表達(dá)式寫為
3<=x<10。問題在于VB中的邏輯量與數(shù)值量可相互轉(zhuǎn)換。同時(shí)給多個(gè)變量賦值,在VB沒有造成語法錯(cuò)而形成邏輯錯(cuò)例如:Dimx%,y%,z%:x=y=z=1標(biāo)準(zhǔn)函數(shù)名寫錯(cuò)變量名寫錯(cuò)檢查方法:在通用聲明段加OptionExplicit語句書寫位置錯(cuò)在通用聲明段只能有Dim語句,不能有賦值等其他語句2/6/2023552.6基本語句順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)其他輔助控制語句Exit語句Goto語句2/6/202356順序結(jié)構(gòu)—賦值語句格式[Let]變量名=表達(dá)式 將表達(dá)式的值賦值給變量名[Let][對(duì)象名.]屬性名=表達(dá)式 將表達(dá)式的值賦值給對(duì)象的屬性說明表達(dá)式可以是任何類型,一般應(yīng)與變量名的類型一致賦值號(hào)左邊只能是變量或?qū)ο髮傩?,不能是常量常?shù)符號(hào)或表達(dá)式不能在同一個(gè)賦值語句中,同時(shí)給多個(gè)變量賦值 例如:x=y=z=1交換A、B兩個(gè)值(單擊查看代碼)2/6/202357順序結(jié)構(gòu)—InputBox函數(shù)(2-1)功能只需一行即可實(shí)現(xiàn)輸入窗體的功能產(chǎn)生一個(gè)對(duì)話框,作為輸入數(shù)據(jù)的界面,等待用戶輸入并返回所輸入的內(nèi)容。格式
InputBox$(prompt$,[title$],[default$],[xpos],[ypos])說明prompt:提示信息,最大長度為1024個(gè)字符title:對(duì)話框標(biāo)題,默認(rèn)為當(dāng)前工程的名稱default:輸入?yún)^(qū)中缺省顯示信息,默認(rèn)為空串函數(shù)返回值是字符串類型2/6/202358順序結(jié)構(gòu)—InputBox函數(shù)(2-2)顯示如下圖所示的對(duì)話框。語句表示為:DimstrNameAsStringstrName=InputBox("請(qǐng)輸入你的姓名"+vbCrLf+"然后單擊確定","輸入框")使用InputBox函數(shù)一次只能輸入一個(gè)數(shù)據(jù).2/6/202359順序結(jié)構(gòu)—MsgBox函數(shù)(2-1)格式
函數(shù)形式:MsgBox%(prompt$,[buttons],[title])過程形式:MsgBoxprompt,[buttons],[title]功能
在屏幕上顯示諸如提示、詢問、警告或錯(cuò)誤等消息,對(duì)用戶的操作作出提醒或反饋。通過用戶在對(duì)話框中選擇的按鈕識(shí)別用戶所做的響應(yīng),作為程序繼續(xù)執(zhí)行的依據(jù)。說明Prompt和title同InputBox函數(shù)buttons:數(shù)值表達(dá)式,用來控制在對(duì)話框內(nèi)顯示的按鈕種類和數(shù)量以及圖標(biāo)類型。(由四類數(shù)值相加產(chǎn)生)函數(shù)返回值是整數(shù)類型2/6/202360順序結(jié)構(gòu)—MsgBox函數(shù)(2-2)Button參數(shù)建立一個(gè)退出對(duì)話框,對(duì)退出再次確認(rèn)。(查看代碼)2/6/202361練習(xí)例題修改文本框章節(jié)中的登錄界面。如果用戶名和密碼正確,彈出對(duì)話框,提示“歡迎光臨?。?!”如果不正確,彈出對(duì)話框,提示“用戶名和密碼錯(cuò)誤,是否重新輸入?”如果選擇是,清空密碼文本框內(nèi)容,并把焦點(diǎn)放到用戶名文本框,讓用戶重新輸入;如果選擇否,推出應(yīng)用程序的執(zhí)行注意:學(xué)生的用戶名一般輸入的是學(xué)號(hào),而學(xué)號(hào)全部是數(shù)字字符。在進(jìn)行有效性檢查時(shí)也用對(duì)話框提示錯(cuò)誤信息(單擊查看代碼)2/6/202362命名參數(shù)的使用注意 InputBox()、MsgBox()中的參數(shù)必須按語法要求規(guī)定的順序提供數(shù)值, 默認(rèn)部分也要用逗號(hào)占位符跳過。引入“命名參數(shù)”
命名參數(shù)可用“:=”以任意順序賦值
prompt:提示 buttons:按鈕 title:標(biāo)題 default:默認(rèn) xPos:x坐標(biāo) yPos:y坐標(biāo)例如:
InputBox("請(qǐng)輸入您的學(xué)號(hào)","學(xué)生成績查詢系統(tǒng)")
InputBox(Title:="學(xué)生成績查詢系統(tǒng)",prompt:="請(qǐng)輸入您的學(xué)號(hào)")
MsgBox("登錄成功",vbOKOnly+vbInformation,"成功登錄頁面")
MsgBox(Title:="成功登錄頁面",buttons:=vbOKOnly+vbInformation,prompt:="登錄成功")2/6/202363順序結(jié)構(gòu)—Print方法語法 [對(duì)象名稱.]Print[tab(n)|spc(n)][表達(dá)式列表][;|,]功能
在指定對(duì)象上輸出表達(dá)式的值說明對(duì)象可以是窗體、圖形框和打印機(jī)Tab(n):表示在參數(shù)n指定的位置輸出表達(dá)式的值Spc(n):表示跳過n個(gè)空格Print方法在Form_Load事件過程中不起作用。如果要在該事件中顯示數(shù)據(jù),必須在該過程中加上Form1.Show方法或把AutoRedraw設(shè)置為True.2/6/202364幾個(gè)練習(xí)例題顯示下圖所示的圖形。用Print方法輸出圖形。改變(單擊查看代碼)(單擊查看代碼)Fori=1To5PrintTab(i);String(6-i,"▼");Spc(6);String(i,"▲")Nexti若把程序中的Spc(6)換成Tab(6)會(huì)怎樣?;Tab(6);2/6/202365選擇結(jié)構(gòu)特點(diǎn):根據(jù)所給定條件的真假,選擇不同的語句。兩種類型
If語句
SelectCase語句2/6/202366If語句(4-1)單分支結(jié)構(gòu)If<表達(dá)式>Then語句塊EndIf或If<表達(dá)式>Then<語句表達(dá)式語句塊TF例如:已知兩個(gè)數(shù)x和y,比較兩個(gè)數(shù)的大小,使x大于yIfx<yThent=x:x=y:y=tEndIf或Ifx<yThent=x:x=y:y=t2/6/202367If語句(4-2)雙分支結(jié)構(gòu)If<表達(dá)式>Then語句塊1Else 語句塊2EndIf或If<表達(dá)式>Then<語句塊1>Else<語句塊2>表達(dá)式語句塊1TF語句塊2計(jì)算分段函數(shù)單分支結(jié)構(gòu)實(shí)現(xiàn):y=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)
雙分支結(jié)構(gòu)實(shí)現(xiàn):
Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf2/6/202368If語句(4-3)多分支語句
If<表達(dá)式1>Then <語句塊1>
ElseIf<表達(dá)式2>Then <語句塊2> … [Else
語句塊n+1]
EndIf求一元二次方程ax2+bx+c=0的根。(查看代碼)2/6/202369If語句的嵌套If語句的嵌套是指If或Else后面的語句塊中又包含If語句。形如: If<表達(dá)式1>Then
If<表達(dá)式11>Then … EndIf
… EndIf示例:已知x,y,z三個(gè)數(shù),使得x>y>z。要求:用一個(gè)If語句和一個(gè)If嵌套實(shí)現(xiàn)。
Ifx<yThent=x:x=y:y=t
Ify<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIf
EndIfIf語句(4-4)2/6/202370幾個(gè)練習(xí)例題示例:已知變量strC中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。IfUcase(strC)>="A"AndUcase(strC)<="Z"Then PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是數(shù)字字符"Else PrintstrC+"其他字符"EndIf2/6/202371示例:已知百分制成績mark,顯示對(duì)應(yīng)的五級(jí)制成績哪些正確,哪些錯(cuò)誤?√√(返回常見錯(cuò)誤)2/6/202372SelectCase語句格式SelectCase變量或表達(dá)式 Case表達(dá)式列表1 語句塊1 Case表達(dá)式列表2 語句塊2 … [CaseElse
語句塊n+1]EndSelect數(shù)值型或字符串表達(dá)式<表達(dá)式列表>:與<變量或表達(dá)式>同類型的下面四種形式之一:表達(dá)式 例:"A"
一組枚舉表達(dá)式(用逗號(hào)分隔) 例:2,4,6,8
表達(dá)式1To表達(dá)式2 例:60To100
Is關(guān)系運(yùn)算符表達(dá)式 例:Is<602/6/202373幾個(gè)練習(xí)例題SelectCasestrC Case"a"To"z","A"To"Z" PrintstrC+"是字母字符" Case"0"To"9" PrintstrC+"是數(shù)字字符" CaseElse PrintstrC+"其他字符"EndSelect示例:已知變量strC中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。示例:判斷成績等級(jí)。SelectCasescoreCase90To100Print"優(yōu)"Case80To89Print"良"Case70To79Print"中"Case60To69Print"及格"CaseElsePrint"不及格"EndSelect制作簡單的計(jì)算器。在三個(gè)文本框中分別輸入兩個(gè)操作數(shù)和一個(gè)運(yùn)算符。
單擊“計(jì)算”按鈕,根據(jù)輸入的運(yùn)算符進(jìn)行相應(yīng)計(jì)算,并把結(jié)果寫入第四個(gè)文本框。
單擊“清除”按鈕,清空四個(gè)文本框。
單擊“退出”按鈕,結(jié)束應(yīng)用程序的執(zhí)行。(單擊查看代碼)2/6/202374題:已知坐標(biāo)點(diǎn)(x,y),判斷其落在哪個(gè)象限內(nèi)方法一
Ifx>0Andy>0ThenPrint"在第一象限"
ElseIfx<0Andy>0ThenPrint"在第二象限"
ElseIfx<0Andy<0ThenPrint"在第三象限"
ElseIfx>0Andy<0ThenPrint"在第四象限"
EndIf
方法二SelectCasex,yCasex>0Andy>0 Print"在第一象限"Casex<0Andy>0 Print"在第二象限"Casex<0Andy<0 Print"在第三象限"Casex>0Andy<0 Print"在第四象限"EndSelect上面兩段代碼,哪個(gè)能實(shí)現(xiàn),哪個(gè)不能實(shí)現(xiàn)?√
SelectCase后不能出現(xiàn)多個(gè)變量;
Case后不能出現(xiàn)變量及有關(guān)運(yùn)算符。(返回常見錯(cuò)誤)2/6/202375條件函數(shù)IIf函數(shù)
格式:Iif(<條件>,<條件為True時(shí)的值>,<條件為False是的值>)例如:求x,y的最大值max=IIf(x>y,x,y)Switch函數(shù)
格式:Switch(條件表達(dá)式1,條件表達(dá)式1為True時(shí)的值[,條件表達(dá)式2,條件表達(dá)式2為True時(shí)的值……])例如:學(xué)生成績等級(jí)Switch(grade>=90,“優(yōu)秀”,grade>=80,“良好”,grade>=70,“中等”,grade>=60,“及格”,grade<=60,“不及格”)Choose函數(shù)格式:Choose(數(shù)字類型變量,值為1的返回值,值為2的返回值……)例如:Op=Choose(Nop,"+","-","×","÷")2/6/202376常見錯(cuò)誤在選擇結(jié)構(gòu)中缺少配對(duì)的結(jié)束語句對(duì)多行式的If塊語句中,應(yīng)有配對(duì)的EndIf語句結(jié)束。多分支選擇ElseIf關(guān)鍵字的書寫和條件表達(dá)式的表示ElseIf不要寫成ElseIf;多個(gè)條件表達(dá)式次序問題,見示例。SelectCase語句的使用SelectCase后不能出現(xiàn)多個(gè)變量;Case子句后不能出現(xiàn)變量,見示例。2/6/202377循環(huán)結(jié)構(gòu)指對(duì)同一程序段執(zhí)行若干次,被重復(fù)執(zhí)行的語句塊成為循環(huán)體。For/Next循環(huán)Do/Loop循環(huán)While/Wend循環(huán)2/6/202378For/Next循環(huán)計(jì)數(shù)循環(huán)語句,用于控制循環(huán)次數(shù)預(yù)知的循環(huán)格式:
For<循環(huán)變量>=<初值>to<終值>[Step<步長>]
<語句塊>[ExitFor]<語句塊>Next[<循環(huán)變量>]循環(huán)變量賦初值循環(huán)變量<=終值語句塊語句塊循環(huán)變量加步長TExitFor·F有無計(jì)算1到100的奇數(shù)和Dimi%,ss=0Fori=1To100step2s=s+iNexti2/6/202379步長循環(huán)次數(shù)=注意出了循環(huán),循環(huán)控制變量值的問題。允許循環(huán)變量在循環(huán)體內(nèi)被賦值,但這樣會(huì)影響原來的循環(huán)控制規(guī)律。ExitFor:強(qiáng)制退出循環(huán)步長=1可省略Fori=2To13Step3循環(huán)執(zhí)行次數(shù)Printi, 輸出i的值分別為:Nexti 25811Print“I=“,i 出了循環(huán)輸出為:I=142/6/202380練習(xí)例題求最大最小值問題要求:隨機(jī)產(chǎn)生10個(gè)[100,200]之間的整數(shù)輸出,并求最大值。如圖所示Max=100Fori=1To10x=Int(Rnd*101+100):Printx,
Ifx>MaxThenMax=xNextiPrint"最大值=";Max2/6/202381Do/Loop循環(huán)形式1:前測(cè)試循環(huán)
Do{While|Until}<條件>語句塊[ExitDo語句塊]Loop形式2:后測(cè)試循環(huán)Do語句塊[ExitDo語句塊]Loop{While|Until}<條件>2/6/202382練習(xí)例題我國有13億人口,按人口增長0.8計(jì)算,多少年后我國人口超過26億。分析:解決此問題有兩種方法,其一可根據(jù)公式:26=13*(1+0.008)n,直接利用標(biāo)準(zhǔn)對(duì)數(shù)函數(shù)求得;其二可利用循環(huán)求得,代碼如下:x=13:n=0 'x表示當(dāng)前人口數(shù),n表示年數(shù)DoWhilex<26x=x*1.008 '每年增加后的人口數(shù)n=n+1 '年數(shù)加1LoopPrintn;"年后我國人口達(dá)到";x;",超過26億"2/6/202383循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套制作九九乘法表。求水仙花數(shù)。提示:一個(gè)3位數(shù)abc,滿足:100*a+10*b+c=a^3+b^3+c^3(單擊查看代碼)(單擊查看代碼)2/6/202384注意事項(xiàng)外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉內(nèi)循環(huán)變量與外循環(huán)變量不能同名在使用Goto語句時(shí),不能從循環(huán)體外轉(zhuǎn)入循環(huán)體內(nèi)多重循環(huán)最好按照縮進(jìn)格式書寫Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii√2/6/202385While/Wend循環(huán)格式While<條件><循環(huán)體>Wend說明每次執(zhí)行完循環(huán)體后都將執(zhí)行Wend語句,它將轉(zhuǎn)回到While語句,在判斷語句條件是否成立如果條件為Null,則將默認(rèn)條件值為FalseWend語句不能省略2/6/202386常見錯(cuò)誤不循環(huán)或死循環(huán)的問題主要是循環(huán)條件、循環(huán)初值、循環(huán)終值、循環(huán)步長的設(shè)置有問題。循環(huán)結(jié)構(gòu)中缺少配對(duì)的結(jié)束語句
For缺少配對(duì)的Next循環(huán)嵌套時(shí),內(nèi)外循環(huán)交叉累加、連乘時(shí),存放累加、連乘結(jié)果的變量賦初值問題在一重循環(huán)中,存放累加、連乘結(jié)果的變量初值設(shè)置應(yīng)在循環(huán)語句前。2/6/2023872.7數(shù)組靜態(tài)數(shù)組動(dòng)態(tài)數(shù)組控件數(shù)組若我們要求一個(gè)班100個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于平均分的人數(shù)。以前怎么做?可以引入數(shù)組?。▎螕舨榭创a)2/6/202388數(shù)組具有相同名字不同下標(biāo)的變量來表示一組具有相同性質(zhì)的數(shù)據(jù)注意數(shù)組不是一種數(shù)據(jù)類型數(shù)組是一組相同類型的變量集合數(shù)組必須先聲明后使用聲明數(shù)組名、類型、維數(shù)和數(shù)組大小按聲明時(shí)數(shù)組的大小確定與否靜態(tài)數(shù)組(定長):聲明時(shí)確定了大小動(dòng)態(tài)數(shù)組(變長):聲明時(shí)未給出大小2/6/202389靜態(tài)數(shù)組聲明 Dim數(shù)組名(下標(biāo)1[,下標(biāo)2…])[As類型]說明
幾個(gè)下標(biāo)就表示是幾維數(shù)組,最多為60維[下界To]上界省略下界為0靜態(tài)數(shù)組的下標(biāo)必須為常數(shù)每一維大小:上界-下界+1數(shù)組大?。好恳痪S大小相乘例如:Dimmark(1..105)AsInteger‘一維數(shù)組Mark(1)Mark(2)Mark(3)……Mark(104)Mark(105)2/6/202390例如:DimlArray(0to3,0to4)AsLong等價(jià)于DimlArray(3,4)AsLong注意下界缺省為0,但是可以重新定義數(shù)組的下界
OptionBase1錯(cuò)誤的聲明,下標(biāo)是變量n=InputBox(“請(qǐng)輸入n”):Dimmark(n)AsSingle分清楚數(shù)組的聲明和引用lArray(0,0)lArray(0,1)lArray(0,2)lArray(0,3)lArray(0,4)lArray(1,0)lArray(1,1)lArray(1,2)lArray(1,3)lArray(1,4)lArray(2,0)lArray(2,1)lArray(2,2)lArray(2,3)lArray(2,4)lArray(3,0)lArray(3,1)lArray(3,2)lArray(3,3)lArray(3,4)2/6/202391幾個(gè)練習(xí)例題示例:隨機(jī)產(chǎn)生20個(gè)0到100的整數(shù),按每行5個(gè)元素輸出。示例:冒泡法排序。選擇法排序。示例:交換數(shù)組中的各元素并打印交換后的數(shù)組元素。要求:數(shù)組大小為10,整型,數(shù)組第一個(gè)元素與最后一個(gè)元素交換,第二個(gè)元素與倒數(shù)第二個(gè)交換……依次類推。(單擊查看代碼)(單擊查看代碼)(查看代碼)2/6/202392動(dòng)態(tài)數(shù)組聲明時(shí)沒有給出數(shù)組的大小,即省略了括號(hào)中的下標(biāo)。當(dāng)要使用它時(shí),隨時(shí)用ReDim語句重新指出數(shù)組的大小格式:
ReDim數(shù)組名(下標(biāo)1,下標(biāo)2,……)[As類型]例如:
SubForm_Click() Dimx()AsSingle n=Inputbox(“輸入n”) ReDimx(n)EndSub示例:求若干個(gè)學(xué)生的平均分。(單擊查看代碼)2/6/202393說明
Dim、Private、Public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。在過程中可多次使用ReDim來改變數(shù)組的大小和維數(shù)。使用ReDim語句會(huì)使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)來保留數(shù)組中的數(shù)據(jù)。使用Preserve只能改變最后一維的大小,前面幾維大小不能改變。ReDim中的下標(biāo)可以是常量,也可以是有了確定值的變量。
靜態(tài)數(shù)組在程序編譯時(shí)分配存儲(chǔ)單元,動(dòng)態(tài)數(shù)組在運(yùn)行時(shí)分配存儲(chǔ)單元。2/6/202394數(shù)組的操作數(shù)組元素賦值用循環(huán)
Fori=1to105 mark(i)=Int(Rnd*101) Nexti用Array函數(shù)
DimibAsVariant ib=Array("abc","def","67") Fori=0ToUBound(ib) Picture1.Printib(i);""; Nexti數(shù)組直接對(duì)數(shù)組賦值Dima()AsVariant,b()AsVarianta=Array(1,2,3,4,5)ReDimb(UBound(a))b=aFori=LBound(ib)ToUBound(ib)利用Array對(duì)數(shù)組各元素賦值,聲明的數(shù)組是可調(diào)數(shù)組或連圓括號(hào)都可省,并且其類型只能是Variant。其下標(biāo)下界由OptionBase決定,且可由LBound函數(shù)獲得;上界由UBound函數(shù)獲得。2/6/202395控件數(shù)組定義由一組相同類型的控件組成特點(diǎn)共用一個(gè)控件名,即Name屬性值一致具有相同的屬性建立時(shí)系統(tǒng)給每個(gè)控件賦值唯一的索引號(hào)(Index)控件共享同樣的事件過程,通過傳遞的下標(biāo)值區(qū)分控件數(shù)組中的各個(gè)控件元素例如SubCmdOperation_Click(IndexAsInteger) SelectCaseIndex Case0 ‘選擇加號(hào) ……‘進(jìn)行兩個(gè)數(shù)的加法運(yùn)算 Case1 ‘選擇減號(hào) …… ‘進(jìn)行兩個(gè)數(shù)的減法運(yùn)算 EndSelectEndSub2/6/202396控件數(shù)組的建立和使用(2-1)在設(shè)計(jì)時(shí)建立在窗體上畫出某控件,可進(jìn)行控件名的屬性設(shè)置,這是建立的第一個(gè)數(shù)組元素選中該控件,進(jìn)行“復(fù)制”和“粘貼”操作,系統(tǒng)會(huì)提示:“已經(jīng)有一個(gè)控件為’[控件名]’。創(chuàng)建一個(gè)控件數(shù)組嗎?”單擊“是”按鈕后,就建立了一個(gè)控件數(shù)組。進(jìn)行若干次“粘貼”操作,就建立了相應(yīng)個(gè)數(shù)的控件數(shù)組元素進(jìn)行事件過程的編程。第一個(gè)元素修改數(shù)組的第一個(gè)元素名稱第二個(gè)元素?cái)?shù)組的第二個(gè)元素名稱和Index屬性2/6/202397練習(xí)例題利用控件數(shù)組的方法建立四個(gè)命令按鈕,當(dāng)單擊某個(gè)命令按鈕,顯示不同的圖形或結(jié)束操作。提示:界面上四個(gè)命令按鈕用一個(gè)按鈕數(shù)組實(shí)現(xiàn)。代碼處理時(shí),由Index的不同取值,執(zhí)行不同的操作。(單擊查看代碼)控件名IndexCaptionPicshape空白空白CmdOperation0直線CmdOperation1矩形CmdOperation2圓CmdOperation3結(jié)束2/6/202398控件數(shù)組的建立和使用(2-2)運(yùn)行時(shí)添加控件數(shù)組在窗體上畫出某控件,設(shè)置該控件的Index值為0,表示該控件為控件數(shù)組,建立第一個(gè)元素在編程時(shí)通過Load方法添加其余的若干個(gè)元素,每個(gè)新添加的控件數(shù)組元素通過Left和Top屬性,確定其在窗體的位置,并將Visible屬性設(shè)置為True;也可以使用Unload方法刪除某個(gè)添加的元素2/6/202399幾個(gè)練習(xí)例題建立如圖所示的計(jì)算器,進(jìn)行數(shù)值的輸入和四則運(yùn)算。數(shù)字按鈕控件數(shù)組(運(yùn)行時(shí)創(chuàng)建)運(yùn)算符按鈕控件數(shù)組(設(shè)計(jì)時(shí)創(chuàng)建)
數(shù)值的數(shù)制轉(zhuǎn)換數(shù)組(設(shè)計(jì)時(shí)創(chuàng)建)(單擊查看代碼)Fori=1To9
Loadnumber(i)number(i).Top=100number(i).Left=100number(i).Caption=inumber(i).Visible=TrueNexti2/6/2023100使用范圍分類統(tǒng)計(jì)
分類統(tǒng)計(jì)是將一批數(shù)據(jù)中按分類的條件統(tǒng)計(jì)每一類中包含的個(gè)數(shù)。例如,將學(xué)生成績按優(yōu)、良、中、及格、不及格五類,統(tǒng)計(jì)各類的人數(shù)。這類問題一般要掌握分類條件表達(dá)式的書寫和各類中計(jì)數(shù)器變量的使用。排序:冒泡法、選擇法、插入法等學(xué)生作品示例:輸入一串字符,統(tǒng)計(jì)各字母出現(xiàn)的次數(shù)(不區(qū)分字母大小寫),并顯示統(tǒng)計(jì)結(jié)果。(查看代碼)(演示)2/6/2023101常見錯(cuò)誤靜態(tài)數(shù)組聲明下標(biāo)出現(xiàn)變量
n=InputBox("輸入數(shù)組的上界") Dima(1Ton)AsInteger數(shù)組下標(biāo)越界引用的下標(biāo)比數(shù)組聲明時(shí)的下標(biāo)范圍大或小。數(shù)組維數(shù)錯(cuò)數(shù)組聲明時(shí)的維數(shù)與引用數(shù)組元素時(shí)的維數(shù)不一致。Dima(3,5)AsLonga(i)=10獲得數(shù)組的上界(UBound)、下界(LBound)2/6/20231022.8過程過程是用來執(zhí)行一個(gè)特定任務(wù)的一段程序代碼分類一系統(tǒng)定義內(nèi)部函數(shù)過程事件過程用戶自定義分類二(由關(guān)鍵字區(qū)分)以Sub保留字開始的子過程以Function保留字開始的函數(shù)過程以Property保留字開始的屬性過程以Event保留字開始的事件過程2/6/2023103Function過程示例:已知多邊形各條邊的長度,要計(jì)算多邊形的面積。分析:計(jì)算多邊形面積,可將多邊形分解成若干個(gè)三角形。計(jì)算三角形面積的公式為:
xyz定義函數(shù)過程area:PublicFunctionarea(x!,y!,z!)AsSingleDimc!c=1/2*(x+y+z)area=Sqr(c*(c-x)*(c-y)*(c-z))EndFunction調(diào)用函數(shù)過程:Subcommand1_click()……輸入若干個(gè)三角形邊長S=area(a,b,c)+area(c,d,e)S=S+area(e,f,g)PrintSEndSub2/6/2023104Function過程的定義方法一:利用“工具”菜單—”添加過程”方法二:利用代碼窗口直接定義格式:[Public|Private][Static]Function函數(shù)過程名([參數(shù)列表])[As類型] 局部變量或常數(shù)定義 語句塊 函數(shù)名=返回值函數(shù)過程體 [ExitFunction] 語句塊 函數(shù)名=返回值EndFunction參數(shù)列表::[ByVal]變量名[()][As類型]ExitFunction:退出函數(shù)函數(shù)名=返回值:在函數(shù)體內(nèi)至少對(duì)函數(shù)名賦值一次2/6/2023105Function過程的調(diào)用函數(shù)過程的調(diào)用同標(biāo)準(zhǔn)函數(shù)形式函數(shù)過程名([參數(shù)列表])Call函數(shù)過程名[(參數(shù)列表)]函數(shù)過程名[參數(shù)列表]參數(shù)列表:實(shí)參或?qū)嵲?,必須與形參個(gè)數(shù)相同,位置與類型一一對(duì)應(yīng)2/6/2023106練習(xí)例題示例:定義MyReplace$(S$,oldS$,newS$)函數(shù)過程,具有Replace函數(shù)功能(單擊查看代碼)PrivateSubCommand1_Click()s=“VB程序設(shè)計(jì)教程5.0版”PrintMyReplace(s,"5.0","6.0")EndSubFunctionMyReplace$(s$,OldS$,NewS$)Dimi%,lenOldS%lenOldS=Len(OldS) i=InStr(s,OldS) DoWhilei>0 s=Left(s,i-1)+NewS+Mid(s,i+lenOldS)i=InStr(s,OldS) LoopMyReplace=s EndFunctionEndSubPrivateSubCommand1_Click()s=“VB程序設(shè)計(jì)教程5.0版”PrintMyReplace(s,"5.0","6.0")S”5.0””6.0”MyReplace$(s$,OldS$,NewS$)程序運(yùn)行流程
2/6/2023107子過程函數(shù)過程的不足不是為了獲得某個(gè)函數(shù)值,而是為了某種功能的處理,例如文字移動(dòng)動(dòng)畫要獲得多個(gè)結(jié)果(查看代碼)示例:定義MyReplace$(S$,oldS$,newS$)函數(shù)過程,具有Replace函數(shù)功能(單擊查看代碼)定義子過程swap:PublicSubSwap(x,y) Dimt t=x:x=y:y=tEndSub調(diào)用子過程:a=10:b=20Print"兩個(gè)數(shù)交換前:a=";a,"b=";b
Swapa,bPrint"兩個(gè)數(shù)交換后:a=";a,"b=";b2/6/2023
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024實(shí)習(xí)合同書范本參考
- 2024裝修工程協(xié)議合同
- 個(gè)人借款合同法律解讀
- 2024個(gè)人門面房屋租賃合同書常用版
- 經(jīng)典代理合同參考
- 企業(yè)租車協(xié)議書樣式
- 2024年度環(huán)保工程設(shè)計(jì)與施工合同
- 2024房屋抵款合同書
- 2024解除勞動(dòng)合同的賠償
- 成都市古建筑工程施工合同
- 反洗錢考試題庫及答案
- 管理經(jīng)濟(jì)學(xué)課后答案
- 《波特價(jià)值鏈模型》課件
- 學(xué)術(shù)規(guī)范與學(xué)術(shù)道德課件
- 中考數(shù)學(xué)復(fù)習(xí)《圓》專題訓(xùn)練-附帶有答案
- 數(shù)據(jù)倉庫與AI應(yīng)用整合
- 2023年版勞動(dòng)合同法全文
- 《交換機(jī)基礎(chǔ)原理》培訓(xùn)課件
- 人教版-初中-道德與法治-《共圓中國夢(mèng)》說課稿
- 短視頻的拍攝與剪輯
- 成人疝護(hù)理查房課件
評(píng)論
0/150
提交評(píng)論