版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
參考書書名:VisualBasic程序設(shè)計簡明教程〔6.0版〕作
者:龔沛曾陸慰民楊志強出版社:高等教育出版社3/25/2024VisualBasic程序設(shè)計第一章VisualBasic入門第二章VisualBasic的代碼編程根底第三章VisualBasic的過程、函數(shù)和方法第四章創(chuàng)立用戶界面第五章菜單設(shè)計與多文檔界面第六章文件管理與操作3/25/2024第一章 VisualBasic入門1.1程序和程序設(shè)計語言1.2類、對象、屬性、方法與事件1.3VisualBasic簡介1.4VisualBasic根底1.5VisualBasic應(yīng)用程序的結(jié)構(gòu)3/25/2024第二章 VisualBasic的代碼編程根底2.1代碼根底2.2數(shù)據(jù)類型及運算2.3順序結(jié)構(gòu)程序設(shè)計2.4選擇結(jié)構(gòu)程序設(shè)計2.5循環(huán)結(jié)構(gòu)程序設(shè)計2.6數(shù)組3/25/2024第三章VisualBasic的過程、函數(shù)和方法3.1Sub過程3.2Function過程3.3參數(shù)傳遞3.4遞歸過程3.5變量、過程的作用域3/25/2024第四章 創(chuàng)立用戶界面4.1VisualBasic的窗體4.2VisualBasic的控件4.3常用標(biāo)準(zhǔn)控件4.4常用的繪圖方法4.5鍵盤與鼠標(biāo)事件過程4.6多重窗體程序設(shè)計4.7對話框3/25/2024第五章 菜單設(shè)計與多文檔界面5.1菜單的根本概念5.2菜單編輯器簡介5.3設(shè)計菜單欄5.4設(shè)計彈出式菜單5.5多文檔界面應(yīng)用程序3/25/2024第六章 文件管理與操作6.1文件系統(tǒng)的根本概念6.2FSO對象模型(略)6.3文件系統(tǒng)控件6.4用傳統(tǒng)的文件I/O語句和函數(shù)處理文件3/25/20241.1程序和程序設(shè)計語言
人們想用計算機解決一個問題,必須事先設(shè)計好計算機處理信息的步驟,把這些步驟用計算機能夠識別的指令編寫出來并送入計算機執(zhí)行,計算機才能按照人的意圖完成指定的工作。我們把計算機能執(zhí)行的指令序列稱為程序,而編寫程序的過程稱為程序設(shè)計。3/25/20241.1程序和程序設(shè)計語言計算機程序:計算機為完成一個特定任務(wù)而執(zhí)行的一系列指令集合計算機程序設(shè)計語言:人與計算機之間進(jìn)行通信的工具,是一組記號和一些用以組合這些記號的規(guī)那么程序設(shè)計語言低級語言——面向特定的計算機而設(shè)計的語言機器語言匯編語言高級語言面向過程的語言面向?qū)ο蟮恼Z言〔OOP〕3/25/2024低級語言機器語言(面向機器的語言)可以被計算機直接理解和執(zhí)行、難記憶、不直觀、難理解、開發(fā)周期長、對用戶要求高、程序可移植性差匯編語言比機器語言更易于理解、編制與修改,但不同指令集的CPU的匯編語言也不盡相同,需要匯編成機器語言才能被計算機直接執(zhí)行高級語言面向過程語言(FORTRAN、C、PASCAL、BASIC)可移植性好、語句功能強、編程效率高、解放了程序員,需要詳細(xì)描述解題過程面向?qū)ο笳Z言(C++、JAVA、VisualBasic、VC++)把要處理的數(shù)據(jù)和處理數(shù)據(jù)的算法“封裝”在一起,用于抽象地描述現(xiàn)實世界的對象。代碼可重用性高、編程效率高、執(zhí)行過程與面向過程的應(yīng)用程序不同——事件驅(qū)動,每次執(zhí)行的順序可能不同3/25/2024高級語言程序的執(zhí)行解釋執(zhí)行優(yōu)點:方便調(diào)試缺點:速度不快、不能脫離編譯環(huán)境編譯執(zhí)行優(yōu)點:可執(zhí)行文件能脫離編譯環(huán)境,獨立運行,執(zhí)行效率高注:VisualBasic是在調(diào)試時采用解釋執(zhí)行,設(shè)計完畢后可以把它編譯成可執(zhí)行文件3/25/20241.2VisualBasic簡介特點VisualBasic用于網(wǎng)頁設(shè)計的Vbscript用于流行軟件的二次開發(fā)的嵌入式VisualBasic語言VisualBasicForApplication(VBA)版本簡介學(xué)習(xí)版專業(yè)版企業(yè)版3/25/2024安裝〔典型安裝、自定義安裝〕MicrosoftWindowsNT95和更高版本,或MicrosoftWindowsNTWorkstation4.0或更高版本486DX/66MHZ或更高的處理器,或任何運行于MicrosoftWindowsNTWorkstation的Alpha處理器CD-ROMMicrosoftWindows支持的VGA或分辨率更高的監(jiān)視器16MBRAMforwindows95,32MBRAMforwindowsNTWorkstation鼠標(biāo)或其他定點設(shè)備MSDN3/25/20241.3VisualBasic根底啟動VB方法一:通過開始菜單方法二:使用“資源管理器”方法三:桌面快捷方式VB的IDE3/25/20241.4 類、對象、屬性、方法與事件類——對象的模板,是對象的歸納與總結(jié)。即把同屬一個類的對象所具有的共同特征的描述提取出來,作為一個概念來研究工具箱上的所有控件對象——實際存在的東西,是類的具體表現(xiàn),即類的實例化與現(xiàn)實世界不同在于:在面向?qū)ο蟪绦蛟O(shè)計中是先有類才有對象例:被拖動到窗體上的控件3/25/2024屬性——一個對象具有的靜態(tài)特征同屬于一個類的對象具有相同的屬性,但每個對象屬性值可能不同例:方法——一個對象具有的動態(tài)特征,它是指對象所具有的動作和行為例:對象.方法[參數(shù)列表]例如:form1.print“你好!” form1.cls3/25/2024事件:對象能夠識別并做出反響的外部刺激,用來傳遞信息當(dāng)人受到該事件刺激時就會作出反響,在應(yīng)用程序中我們稱之為事件過程例:Sub對象名_事件過程名[〔參數(shù)列表〕]…..(事件過程代碼〕EndSub例如:Subcommand1_Click()command1.Visible=FalseEndSub3/25/20241.5VB應(yīng)用程序開發(fā)過程創(chuàng)立VB應(yīng)用程序的五個主要步驟:新建一個工程創(chuàng)立應(yīng)用程序界面設(shè)置屬性編寫代碼保存工程→進(jìn)行編譯與運行應(yīng)用程序,生成exe可執(zhí)行程序3/25/20241.5.1新建工程方法一:翻開vb,默認(rèn)就已經(jīng)有一個工程方法二:文件→新建工程3/25/20241.5.2創(chuàng)立應(yīng)用程序界面控件的畫法方法一:鼠標(biāo)拖動方法二:雙擊鼠標(biāo)注意鼠標(biāo)與CTRL鍵的配合使用控件的選擇改變控件大小移動控件使用鼠標(biāo)通過“屬性”窗口鎖定控件格式菜單窗體編輯器Ctrl鍵微調(diào)控件的復(fù)制和刪除3/25/2024設(shè)置窗體和控件的屬性屬性窗口的翻開視圖——屬性窗口工具欄上的屬性窗口按鈕設(shè)計窗體上右鍵——選擇“屬性窗口”屬性窗口的三個元素對象框排序選項卡屬性列表3/25/2024設(shè)置屬性的幾個步驟〔設(shè)計模式下〕選擇對象鼠標(biāo)選擇屬性對象框列表中選擇修改屬性對于定義的屬性值設(shè)置下拉列表框雙擊列表項在程序的代碼中通過賦值實現(xiàn),其格式為:對象名.屬性=屬性值例如:command1.Caption=“顯示”3/25/2024例:設(shè)計如右界面Form注意Name屬性、Capion屬性以及窗體名稱的區(qū)別!TextboxLabelCommand3/25/2024編寫事件過程翻開代碼編輯器雙擊要編寫代碼的窗體和控件工程管理窗口中單擊“查看代碼按鈕”選項——編輯器——缺省為整個模塊查閱左下角的“過程查看”按鈕典型的時間序列啟動應(yīng)用程序,裝載和顯示窗體窗體或控件接收有用戶引發(fā)或系統(tǒng)或代碼間接引發(fā)的事件假設(shè)相應(yīng)的事件存在代碼那么執(zhí)行代碼等待下一次事件3/25/2024保存、編譯、創(chuàng)立exe文件保存運行應(yīng)用程序F5“啟動”按鈕運行——啟動創(chuàng)立exe可執(zhí)行文件3/25/20241.6VisualBasic應(yīng)用程序的結(jié)構(gòu)一個VB應(yīng)用程序中各主要文件的結(jié)構(gòu)關(guān)系如以下圖:3/25/2024注意窗體名與窗體文件名的區(qū)別保存時出現(xiàn)的兩次保存對話框如何翻開一個已存在的應(yīng)用程序工程資源管理窗口窗體模塊(.frm)類模塊(.cls)標(biāo)準(zhǔn)模塊(.bas)3/25/20242.1代碼根底在代碼中添加注釋‘我是注釋將單行語句分成多行使用續(xù)行符:空格加下劃線例:Print_“你好!”在同一行內(nèi)續(xù)行符后不能加注釋將單個語句合并到同一行使用冒號分開例:Text1.text=“hello”:I=9:cmd.caption=“確定”在VB編寫代碼過程中無大小寫區(qū)分,但必須使用半角符號3/25/20242.2數(shù)據(jù)類型及計算根本數(shù)據(jù)類型數(shù)據(jù)類型寬度(字節(jié))取值范圍Byte(字節(jié)型)1(8位)0~255間的無符號數(shù)(非負(fù))Integer%(整型)2(16位)-32768~32767Long&(長整型)4(32位)-2147483648~2147483647Single!(單精度浮點型)4(32位)符號位1位,指數(shù)8位,23位尾數(shù)-3.402823*1038~3.402823*1038Double#(雙精度浮點型)8(64位)符號位1位,指數(shù)11位,52位尾數(shù)-1.79769313486232*10308~1.79769313486232*103083/25/2024Boolean(邏輯型、布爾型)2(16位)TRUE/FALSECurrency@(貨幣型)8(64位)-922337203685477.5808~922337203685477.5808String$(字符型)使用雙引號定長字符串型最多不能超過65536(216)個字符變長字符串型最多不能超過20億(231)個字符Date#(日期型)8使用“#”將日期時間文字括起來如:#2007/03/20#Object(對象型)4Variant(變體型)根據(jù)需要分配3/25/2024一、字符串型〔String〕字符串包括除雙引號和回車以外可打印的所有字符,雙引號作為字符串的定界符號。例:“1234”,“張三”,“”注意字符串中空格是有效字符。二、數(shù)值型VB中的數(shù)值型數(shù)據(jù)分為整型和實型兩大類。1.整型整型數(shù)是不帶小數(shù)點和指數(shù)符號的數(shù)。包括整型、長整型和字節(jié)型整數(shù)3/25/2024〔1〕整型〔Integer,類型符%〕整型數(shù)用兩個字節(jié)存儲,取值范圍是-32768到+32767。例:15,-345,654%都是整數(shù)型。而45678%那么會發(fā)生溢出錯誤。〔2〕長整型〔Long,類型符&〕長整型用4個字節(jié)存儲,取值范圍是-2147483648到+2147483647。例:123456,45678&都是長整數(shù)型?!?〕字節(jié)型〔Byte〕用一個字節(jié)存儲,取值范圍是0到255。3/25/20242.實型實型數(shù)據(jù)主要分為單精度、雙精度和貨幣型3種。〔1〕單精度浮點數(shù)〔Single,類型符!〕單精度數(shù)用4個字節(jié)存儲,有7位有效數(shù)字,取值范圍1.401298E-45<|x|<3.402823E+38。例:3.14!,2.718282。(2)Double〔雙精度,類型符#〕3/25/2024〔3〕貨幣型〔Currency,類型符@〕貨幣型數(shù)據(jù)主要用來表示貨幣值,用8個字節(jié)存儲,貨幣型是定點數(shù),精確到小數(shù)點后面第4位,第五位四舍五入。整數(shù)局部最多15位。例如:3.56@、65.123456@都是貨幣型。三、邏輯型〔Boolean〕 邏輯型數(shù)據(jù)只有兩個:邏輯真True和邏輯假False,用2個字節(jié)存儲。當(dāng)把邏輯值轉(zhuǎn)化為數(shù)值型時,F(xiàn)alse為0,True為-1。3/25/2024四、日期型〔Date〕日期型數(shù)據(jù)用8個字節(jié)來存儲,日期范圍從公元100年1月1日到9999年12月31日,可以用#括起來放置日期和時間,允許用各種表示日期和時間的格式。日期可以用“/”、“,”、“-”分隔開,可以是年、月、日,也可以是月、日、年的順序。時間必須用“:”分隔,順序是:時、分、秒。例:#1999-08-1110:25:00pm#、#08/23/99#、#03-25-7520:30:00#、#98,7,18#等都是有效的日期型數(shù)據(jù)。在VB中會自動轉(zhuǎn)換成mm/dd/yy〔月/日/年〕的形式。3/25/2024五、變體型〔Variant〕 變體型也稱為可變類型,它是一種特殊的數(shù)據(jù)類型。它的類型可以是前面表達(dá)的數(shù)值型、日期型、字符型等,完全取決于程序的需要。從而增加了VB數(shù)據(jù)處理的靈活性。3/25/2024六、自定義數(shù)據(jù)類型[Public/Private]Type自定義數(shù)據(jù)類型名 元素名一 As 已有的數(shù)據(jù)類型 元素名二 As 已有的數(shù)據(jù)類型 ……EndType自定義數(shù)據(jù)類型中元素的類型必須使用“As數(shù)據(jù)類型”來顯示聲明自定義數(shù)據(jù)類型中的元素為字符串時必須是定長字符串,格式:String*常數(shù)3/25/2024例:PrivateTypeTeacher intNum As Integer strName As String*8 stu(50) As StudentEndType3/25/2024七、枚舉類型[Public/Private]Enum自定義數(shù)據(jù)類型名 元素名1[=元素值] 元素名2[=元素值] ……EndEnum例:PrivateEnumColor red=1 orange=2 green cyan=5 blue amethyst EndEnum 返回第一個元素值默認(rèn)為0,元素值為任何長整型數(shù)3/25/2024變量變量:在程序執(zhí)行過程中,值會改變的量。在內(nèi)存中有一定大小的存儲空間,VB中執(zhí)行應(yīng)用程序期間,用來臨時存儲數(shù)據(jù)。它包括名字和數(shù)據(jù)類型命名規(guī)那么:只能以字母開頭,由數(shù)字、字母和下劃線組成不能包括標(biāo)點符號<=255個字符不能與關(guān)鍵字重復(fù)在同一個作用域中,變量名不能重復(fù)2a a_3 integer a~4對變量起名字建議使用前綴如:gstrUserName3/25/2024聲明變量:VB中變量不被聲明也可以使用,未聲明的變量是Variant。但很容易出錯,為了防止,就要強制聲明強制聲明變量方法:在模塊的聲明段加上:optionexplicit3/25/2024變量的顯示聲明Dim/Static局部變量名As類型名DimStatic靜態(tài)變量Dim/Private模塊變量名As類型名Public/Global全局變量名As類型名例DimblnChoiceAsBooleanPublicaasLongPrivatetasStringDimgstr$DimIasinteger,jasSingle過程級窗體/標(biāo)準(zhǔn)模塊級標(biāo)準(zhǔn)模塊級3/25/2024變量的作用域局部變量又稱過程級變量,在過程中聲明,且只能在這個過程中使用,可以在一個過程中的任何位置聲明過程級變量。Dim關(guān)鍵字的特點是當(dāng)所有過程執(zhí)行完畢,變量就會消失,釋放所占的內(nèi)存。下次使用重新分配。Static關(guān)鍵字聲明的是靜態(tài)變量,只有在過程被第一次執(zhí)行時分配內(nèi)存空間,執(zhí)行結(jié)束后占用的內(nèi)存仍保存,直到下一次時變量值仍存在。3/25/2024標(biāo)準(zhǔn)模塊級變量是指在聲明變量的這個模塊中的所有過程都可以使用的變量。聲明模塊級變量要在模塊開始的通用聲明段中全局變量是指在所有模塊中都可以使用的變量,要在模塊開頭的聲明段中聲明。3/25/2024隱式聲明P26對于局部變量可以使用隱式聲明例:I%=234J$=“234”變量的賦值:使用“=”例1:dimmynameasstring myname=“Mike”X%=2203/25/2024使用print方法顯示變量的值:I=9S=“你好!”PrintI?s思考:下面的x與y的值在單擊兩次命令按鈕后會等于多少?Privatesubcommand1_click()DimxasintegerStaticyasintegerx=x+1y=y+1X=789Printx,yEndsub3/25/2024變體變量可以存儲除定長字符串與自定義類型之外的任何系統(tǒng)定義類型的數(shù)據(jù)DimvasvariantV=214V=“hello”是VB默認(rèn)類型的變量類型DimvDimint1,int2,int3AsInteger可以引用對象三個特殊的值EmptyNull——數(shù)據(jù)未知或不確定Error3/25/2024對象變量定義:Dim變量名AsObject/Control/對象變量名Object——所有對象Control——所有控件對象變量名——某種類型的對象型變量賦值:Set對象變量=對象名對象被聲明為特定類型的對象時只能引用該類型的變量例:Dimobj3AsTextBox Setobj3=cmdok對象型變量在聲明之后賦制之前值為Nothing例2.43/25/2024枚舉類型的變量是一個模塊級、長整型變量例2.5例數(shù)據(jù)類型的轉(zhuǎn)換出現(xiàn)情況賦值變量賦值:x%=30.5〔取整數(shù)局部〕屬性賦值:Form1.Caption=123方法、過程的調(diào)用表達(dá)式的計算3/25/2024隱式轉(zhuǎn)換〔不同類型變量賦值或運算〕一般規(guī)那么:運算結(jié)果類型一般與表示范圍大、精度高的數(shù)據(jù)保持一致數(shù)值之間的轉(zhuǎn)換整型→浮點型j!=3浮點型→整型:小數(shù)局部“四舍五入”I%=2.6〔注意:假設(shè)為2.5那么取整數(shù)局部〕字符串與數(shù)值類型的轉(zhuǎn)換假設(shè)字符串中有非數(shù)字字符〔包括空格和空串〕那么顯示“類型不匹配”錯誤3/25/2024邏輯型與數(shù)值型的轉(zhuǎn)換False→0,True→-10→Flase,非0→True邏輯型與字符串型的轉(zhuǎn)換true→”true”,false→”false”“true”→True,”false”→False(字符串不區(qū)分大小寫)日期時間型轉(zhuǎn)換為字符串型:按日期的短格式轉(zhuǎn)換為相應(yīng)的字符串日期時間型轉(zhuǎn)換為數(shù)值型數(shù)據(jù):日期局部〔整數(shù)局部〕:1899/12/31-日期值〔天數(shù)〕時間局部〔小數(shù)局部〕:時間/243/25/2024顯式轉(zhuǎn)換轉(zhuǎn)換函數(shù)將表達(dá)式轉(zhuǎn)換成轉(zhuǎn)換函數(shù)將表達(dá)式轉(zhuǎn)換成Cbool()BooleanCLng()LongCbyte()ByteCSng()SingleCcur()CurrencyCStr()StringCdate()DateCvar()variantCDbl()DoubleCVErr()ErrorCint()IntegerCdec()Decimal3/25/20242.3常量直接常量整型、長整型與字節(jié)型〔末尾加&表示長整型常量〕十進(jìn)制 如:183八進(jìn)制:以&O開頭 如:&O73十六進(jìn)制:以&H開頭 如:&HA7C浮點型浮點數(shù)形式如整數(shù)局部或小數(shù)局部為0,可省略0但不可省略小數(shù)點 如:.34 15. 38.28指數(shù)形式:men或mEn(m與n都不可省略) 如:8E9 -.5e-83/25/2024字符串型常量如:“I’mgoodatprogramming.”用兩個連續(xù)的雙引號表示一個雙引號表示如下文字:他說:“我是程序員?!边壿嬓统A?True/False日期時間型常量# 如:#3/7/200513:00:38#“他說:”“我是程序員?!啊薄?/25/2024符號常量有數(shù)據(jù)類型和常量名幾種聲明方法過程級:Const常量名[As類型名]=表達(dá)式模塊級:[Private]Const常量名[As類型名]=表達(dá)式全局常量〔在標(biāo)準(zhǔn)模塊中聲明〕PublicConst常量名[As類型名]=表達(dá)式例:ConstPIAsSingle=3.1415926不能在窗體模塊和類模塊中聲明全局常量“=”右端的表達(dá)式可以使用不包括函數(shù)的表達(dá)式或其他常量來賦值3/25/20242.4常用內(nèi)部函數(shù)立即窗口Ctrl+G視圖—立即窗口轉(zhuǎn)換函數(shù)取整函數(shù)函數(shù)功能例Int(x)求不大于自變量的整數(shù)Int(-4.67)Int(4.67)Fix(x)去掉小數(shù)部分,取整Fix(-4.67)Fix(4.67)Round(x)四舍五入,取整Round(-4.67)Round(4.67)3/25/2024數(shù)制轉(zhuǎn)換函數(shù)Hex$(x)Oct$(x)類型轉(zhuǎn)換函數(shù)Asc(字符串)例:PRINTASC(“A”)——顯示65Chr$(表達(dá)式)Val(字符串)轉(zhuǎn)換過程中遇到字母停止轉(zhuǎn)換例:?Val(“12”+”30”)?Val(“12+30”) ?val(“34ab2”) ?Val(“34e3”)Str$(數(shù)值表達(dá)式)——1230——12——34——340003/25/2024數(shù)學(xué)函數(shù)三角函數(shù)Sin(x)、Cos(x)、Tan(x)、Atn(x)絕對值函數(shù)Abs(x)符號函數(shù)Sgn(x)平方根函數(shù)Sqr(x)指數(shù)和對數(shù)函數(shù)Exp(x),log(x)請表示公式:Sqr(exp(3)*abs(sin(5.121)))3/25/2024日期和時間函數(shù)日期函數(shù)Day(標(biāo)記變量)、Weekday(標(biāo)記變量)、Month(標(biāo)記變量)、Year(標(biāo)記變量)標(biāo)記變量為VB提供的內(nèi)部變量Now〔variant類型〕當(dāng)Now為雙精度浮點數(shù)時,整數(shù)局部為1899/12/31到現(xiàn)在所經(jīng)過的天數(shù),小數(shù)局部為從當(dāng)天0點起所經(jīng)過的毫秒數(shù)Year取值范圍為1753~2078Weekday為1~7,1代表星期天Date$函數(shù)/語句Date$=日期字符串,字串格式可以為:“dd-mm-yy”,”dd-mm-yyyy”,”dd/mm/yy”,”dd/mm/yyyy”3/25/2024時間函數(shù)Hour(標(biāo)記變量)、Minute(標(biāo)記變量)、Second(標(biāo)記變量)Time$函數(shù)/語句日期/時間數(shù)值轉(zhuǎn)化函數(shù)DateValue(日期字符串)字串格式有:dd-mm-yy,dd-mm-yyyy,dd/mm/yy,dd/mm/yyyyTimeValue(時間字符串)日期/時間運算函數(shù)DateSerial(年,月,日)TimeSerial(時,分,秒)3/25/2024隨機數(shù)函數(shù)隨機數(shù)函數(shù)Rnd(x)產(chǎn)生一個0~1之間的單精度隨機數(shù)當(dāng)x<0時,每次產(chǎn)生的隨機數(shù)相同當(dāng)x=0時,產(chǎn)生的隨機數(shù)與上次相同當(dāng)x>0和省略時,獲得隨機系列的下一個隨機數(shù)產(chǎn)生N~M范圍內(nèi)的隨機數(shù):Int(Rnd*(M-N+1))+N例如:產(chǎn)生一個1~6的隨機數(shù):INT(Rnd*6)+1Randomize[(x)]:初始化隨機數(shù),用以保證每次產(chǎn)生不同的隨機數(shù)序列3/25/2024字符串函數(shù)Ltrm$(c)去掉字符串左邊空白字符Ltrm(“A”)”A”Rtrm$(c)去掉字符串右邊空白字符Rtrm(“A”)”A”Left$(c,n)取字符串左邊的n個字符Left(“ask”,2)“as”Right$(c,n)取字符串右邊的n個字符Right(“ask”,2)“sk”Mid$(c,p,n)從p位置開始取字符串的n個字符Mid(“while”,2,4)“hile”Len(c)字符串的長度Len(“while”)5String$(n,c)返回c中首字符組成的n個字符串String(2,“abc”)“aa”String$(n,ASCII)返回c中首字符組成的n個字符串String(3,66)“BBB”3/25/2024InStr(3,“Doityourself”,”you”)7在c1中從n1開始查找c2,省略n1從頭開始找找不到為0C1長度為0,返回0C1為Null,返回NullC2長度為0,返回首字符位置C2為Null,返回Null首字符位置>c2位置,返回0InStr([n1,]c1,c2)Lcase(“mY”)“my”把大寫轉(zhuǎn)換為小寫Lcase$(c)Ucase(“mY”)“MY”把小寫轉(zhuǎn)換為大寫Ucase$(c)Space(3)“”返回n個空格Space$(n)3/25/20242.3順序結(jié)構(gòu)程序設(shè)計賦值語句使用“=”完成變量的賦值和設(shè)定屬性操作變量名/屬性名=值〔可以為數(shù)值、表達(dá)式或 屬性值〕例:intNum=10Text1.Text=“你好!”str1=Text1.TextInt2=34+8思考:如何將兩個變量a和b內(nèi)的內(nèi)容互換3/25/2024運算符和表達(dá)式算術(shù)運算符算術(shù)運算的操作數(shù)是數(shù)值型,結(jié)果也是數(shù)值型mod運算結(jié)果正負(fù)號與第一個操作數(shù)相同運算速度:加減>乘除>乘方運算符意義形式說明^指數(shù)運算A^B-負(fù)號-A*乘A*B/除法運算A/B10/3=3.3333333333333\整除運算A\B只能用于整數(shù)運算,若有小數(shù)則四舍五入轉(zhuǎn)換為整數(shù)。絕對值小于0.5的數(shù)不能作為被除數(shù)Mod求余(模)運算AModB+加法運算A+B還可做字符串連接符(&)-減法運算A-B高低3/25/2024關(guān)系運算符——結(jié)果為邏輯型數(shù)據(jù)運算符例結(jié)果<23<3False<=“23”<=“3”True>“ABCDE”>”ABR”Fasle>=“bc”>=“大小”False=“abc”=“abr”False<>“abc”<>”ABC”True以上運算符優(yōu)先級相同,假設(shè)同時出現(xiàn),那么從左到右依次結(jié)合運算8<>5>9 <=> (8<>5)>9關(guān)系運算符的優(yōu)先級低于算術(shù)運算符5>9+4 <=> 5>(9+4)3/25/2024關(guān)系運算的規(guī)那么如下:〔1〕當(dāng)兩個操作式均為數(shù)值型,按數(shù)值大小比較?!?〕字符串比較,那么按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止.。例:"ABCDE">"ABRA" 結(jié)果為False〔3〕數(shù)值型與可轉(zhuǎn)換為數(shù)值型的數(shù)據(jù)比較,如:29>"189",按數(shù)值比較,結(jié)果為False?!?〕數(shù)值型與不能轉(zhuǎn)換成數(shù)值型的字符型比較,如:77>"sdcd",不能比較,系統(tǒng)出錯。3/25/2024邏輯運算符——結(jié)果為邏輯型3/25/2024邏輯運算“真值表”ABAANDBAORBNOTAAImpBAEqvBAXorBTTTTFTTFTFFTFFFTFTFTTTFTFFFFTTTF3/25/2024表達(dá)式的書寫中需注意的問題〔1〕運算符不能相鄰。例a+-b是錯誤的?!?〕乘號不能省略。例x乘以y應(yīng)寫成:x*y〔3〕括號必須成對出現(xiàn),均使用圓括號?!?〕表達(dá)式從左到右在同一基準(zhǔn)并排書寫,不能出現(xiàn)上下標(biāo)〔5〕要注意各種運算符的優(yōu)先級別,為保持運算順序,在寫VB表達(dá)式時需要適當(dāng)添加括號〔〕。如:
(b-sqr(b*b-4*a*c))/(2*a)(a+b)/(a-b)3/25/2024表達(dá)式的執(zhí)行順序一般情況下為從左到右,但如果有優(yōu)先級高的運算符那么優(yōu)先運算,接下來為較高的運算符,最后才是優(yōu)先級最低的運算符當(dāng)運算符不止一種時:算術(shù)運算>=字符運算>關(guān)系運算>=邏輯運算可以用括號改變優(yōu)先順序,強令表達(dá)式的某些局部優(yōu)先運行。括號內(nèi)的運算總是優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外。例:3+5*2-14mod3 5+34<14-6ornot“a”<“A”and14Mod2 5+34<14-6andnot“a”<“A”or14Mod2 5+34<14-6ornot“A”<“a”and14Mod3 3/25/2024例一:性別為“男”、年齡小于40歲、職稱為副教授以上(教授或副教授)性別=“男”and年齡<40and(duty=“副教授”orduty=“教授”)例二:潤年(能被4整除并且不能被100整除或者這個數(shù)能被400整除)(YearMod4=0andYearMod100<>0)or(YearMod400=0)例三:請表示:10≤X<20 X>=10AndX<203/25/2024數(shù)據(jù)輸出Print方法輸出 [對象名.]Print[輸出列表]對象包括:窗體、圖片框、打印機和立即窗口Print語句每執(zhí)行一次就自動換行輸出列表可為數(shù)值表達(dá)式或字符串。對于表達(dá)式,先計算后輸出,輸出后自動換行。輸出列表可以用分隔符〔逗號、分號或空格〕將表達(dá)式隔開:逗號:以14個字符位置為單位把一個輸出行分為假設(shè)干個區(qū)段,逗號后的表達(dá)式在下一個區(qū)段輸出分號或空格:按緊湊輸出格式輸出數(shù)據(jù)3/25/2024與Print方法有關(guān)的函數(shù)Tab(n):光標(biāo)移到n指定的位置例:PrintTab(10);”ac”當(dāng)n比行寬大時顯示位置為nMod行寬;當(dāng)n<1〔最左邊的行號〕,輸出位置移到第一列例2.8Spc(n):光標(biāo)跳過n個空格與Tab(n)函數(shù)類似,區(qū)別Space$(n)產(chǎn)生n個空格字符串3/25/2024Formate$(數(shù)值表達(dá)式[,格式字符串])按“格式字符串”指定格式輸出“數(shù)值表達(dá)式”可以對數(shù)值或日期格式化Print語句沒有賦值功能,不能在輸出數(shù)據(jù)時對變量賦值printa=4Print“a=4”例:Print“23-12=”;Print23-12Print“★”;“☆”;“◆”Print3/25/2024Format函數(shù)例如
①數(shù)值格式化
Format(8315.4,“00000.00”) 08315.40
Format(8315.4,“#####.##”) 8315.4
Format(8315.4,“##,##0.00”) 8,315.40
Format(315.4,“$##0.00”) $315.40
②日期和時間格式化
Format(Now,“m/d/yyyy”) 2/22/2004
Format(Now,“ddd,mmdd,yy”) Sun,0222,04
Format(Now,“d-mmm”) 22-Feb
Format(Now,“mmmm-yy”) February-04
Format(Now,“hh:mmAM/PM”) 04:18PM 3/25/2024使用Text控件輸出例:Dimint1asintegerint1=39text1.text=str(int1)Text1.text=“你好”數(shù)據(jù)輸入InputBox函數(shù)功能:翻開一個對話框,等待用戶鍵入內(nèi)容。當(dāng)用戶單擊“確定”按鈕或按回車鍵時,函數(shù)返回輸入的值,單擊取消按鈕時,返回空字符串。3/25/2024語法:InputBox(提示[,標(biāo)題][,默認(rèn)值][,x座標(biāo)][,y座標(biāo)][,幫助文件][,主題])Text1.text=InputBox("請輸入信息","信息輸入框","Mike“)3/25/2024例1:uName=InputBox(“你叫什么?”,“輸入姓名”,“無名氏”)例2:dimstrSasString*40,strNameasString*40
strS=“請輸入你的姓名”+Chr(13)+Chr(10)+”然后單擊確定”
strName=InputBox(strS,”輸入框”,,100,100)text1.text=strname利用TEXT控件輸入例:dimint1asintegerint1=cint(text1.text)Printint13/25/2024MsgBox語句功能:彈出一個對話框用來提示用戶語法:MsgBoxprompt[,buttons][,title]buttons參見書P56MsgBox"我是提示信息!",vbOKOnly+vbCritical,"我是標(biāo)題"3/25/2024MsgBox函數(shù)功能:在對話框中顯示消息,等待用戶單擊按鈕,并返回一個Integer類型的數(shù)告訴用戶單擊哪一個按鈕語法:變量%=MsgBox(提示[,按鈕][,標(biāo)題])注意:帶()的Msgbox〔即msgbox函數(shù)〕是有返回值的,需要賦值給變量;而不帶()的msgbox〔即msgbox語句〕無返回值,不需要賦值給變量,用于顯示較簡單的信息返回值參見書P573/25/2024DimIasIntegerI=MsgBox(“我是提示信息!”,vbYesNoCancel+vbQuestion,“我是標(biāo)題”)變量I的值就是用戶單擊的那個按鈕的值——假設(shè)用戶單擊了“是”按鈕,那么I的值即為6;假設(shè)用戶單擊了“否”按鈕,那么I的值即為7;假設(shè)用戶單擊了“取消”按鈕,那么I的值即為23/25/2024例:I=msgbox(“您的名字叫張三?”,vbyesno+32,”姓名提示”)ifI=6then?“歡送張三!”else?“您不是張三!”Endif3/25/2024字形字體類型FontName一般格式:[窗體名.]/[控件名.]/Printer.FontName[“=字體類型名”]字體大小FontSize[=點數(shù)]默認(rèn)的最小點數(shù)為9粗體FontBold[=Boolean]如:Form1.FontBold=True斜體FontItalic[=Boolean]刪除線FontStrikethru[=Boolean]加下劃線FontUnderline[=Boolean]重疊顯示FontTransParent[=Boolean]3/25/2024打印機輸出直接輸出:Printer.Print[輸出列表]打印機對象的Page屬性功能:設(shè)置頁號打印機對象的NewPage屬性功能:強制打印機跳到下一頁打印打印機對象的EndDoc屬性功能:結(jié)束文件打印窗體輸出:[窗體名.]PrintForm功能:將窗體顯示的信息輸出到打印機上3/25/2024順序結(jié)構(gòu)程序思考題⑴銀行存款的本利計算公式:P=P(1+R)n其中P為本息,P為本金,R為年利率,N為存款年限。說明:要求所以變量的值用inputbox函數(shù)來獲得,最后的結(jié)果使用msgbox語句〔或者print方法〕顯示輸出。(2)三邊求三角面積公式:其中A、B、C為三邊長度,S為三邊長度和的一半。說明:要求所以變量的值使用三個文本框來獲得。最后的結(jié)果也用文本框顯示提示:需要使用三個文本框,一個命令按鈕3/25/20242.3選擇結(jié)構(gòu)程序設(shè)計
在程序設(shè)計中經(jīng)常遇到這類問題,它需要根據(jù)不同的情況采用不同的處理方法。例如,一元二次方程的求根問題,要根據(jù)判別式小于零或大于等于零的情況,采用不同的數(shù)學(xué)表達(dá)式進(jìn)行計算。對于這類問題,如果用順序結(jié)構(gòu)編程,顯然力不從心。必須借助選擇結(jié)構(gòu)。本章主要介紹實現(xiàn)選擇結(jié)構(gòu)的語句。包括:行If語句、塊If語句、ElseIf語句、SelectCase語句,以及選擇結(jié)構(gòu)在程序設(shè)計中的應(yīng)用。3/25/2024塊If格式:If條件then語句塊1[Else語句塊2]EndIf3/25/2024說明: 〔1〕“條件”一般為關(guān)系表達(dá)式或邏輯表達(dá)式。 通常把關(guān)系表達(dá)式或邏輯表達(dá)式的值為真時,稱為條件滿足;值為假時,稱為條件不滿足。反之亦然。 〔2〕語句塊1、語句塊2分別是“條件”滿足或不滿足時,處理方法的描述,可以是假設(shè)干個語句。 〔3〕If…Then、Else、EndIf是VB的保存字。功能: 塊If首先判斷“條件”,其值為真時,執(zhí)行語句塊1;為假時執(zhí)行語句塊2。當(dāng)缺省[Else…]中的內(nèi)容時,該選擇結(jié)構(gòu)只對條件滿足的情況進(jìn)行處理。執(zhí)行過程如以下圖所示。3/25/20243/25/2024思考以下程序運行后的最后結(jié)果是多少?DimaasInteger,basIntegera=1b=3Ifa<bThena=4Elsea=-1EndIfPrinta3/25/2024【例1】火車站行李費的收費標(biāo)準(zhǔn)是50kg以內(nèi)〔包括50kg〕0.20元/kg,超過局部0.50元/kg。編寫程序,要求根據(jù)輸入的任意重量,計算出應(yīng)付的行李費。根據(jù)題意計算公式如下:3/25/20243/25/20243/25/2024程序代碼如下:'"計算"按鈕代碼PrivateSubCommand1_Click〔〕Dimweightassingle,payassingle’獲得文本框1中輸入內(nèi)容weight=Text1.TextIfweight>50Thenpay=〔weight-50〕*0.5+50*0.2Elsepay=weight*0.2EndIf’使文本框2顯示應(yīng)付款Text2.Text=payEndSub3/25/2024PrivateSubCommand2_Click〔〕Text1.Text=""Text2.Text=""EndSubPrivateSubCommand3_Click〔〕EndEndSub3/25/2024塊If的嵌套
所謂塊If語句的嵌套,就是在語句塊1或語句塊2中又包含塊If語句。If<表達(dá)式1>then
if<表達(dá)式11>then ……
endif……endif 在使用這種條件的嵌套時要注意:有一個Else必然有一個If與之對應(yīng),并且配對的If是與它前面最近的一個未配對的If語句。嵌套不可以交叉
3/25/2024【例2】任意輸入3個數(shù),按照從大到小的順序輸出。程序運行界面如以下圖:
3/25/2024算法分析:排序的根本方法,就是比較大小,然后根據(jù)比較的結(jié)果分別加以處理。本例把3個數(shù)分別放在A,B,C中,處理過程為:假設(shè)A<B為真,交換A,B的值;否那么不做處理。這樣就保證了A≥B;然后再用C去比較。具體流程以下圖所示:3/25/20243/25/2024屬性設(shè)置表3/25/2024程序代碼如下:‘"排序"按鈕代碼PrivateSubCommand1_Click〔〕DimaAsSingle,cAsSingle,bAsSingle,tasSinglea=Text1.Textb=Text2.Textc=Text3.Text'三個文本框的數(shù)據(jù)賦值給變量Ifa<bThent=aa=bb=t 'a<b時交換a、b的值EndIf '保證A>B3/25/2024Ifc>aThen '用C去比較Text4.Text=c 'C>A成立,C最大Text5.Text=aText6.Text=bElseIfc<bThenText4.Text=a'C<B成立,C最小Text5.Text=bText6.Text=cElseText4.Text=a'C處于中間Text5.Text=cText6.Text=bEndIfEndIfEndSub3/25/2024ElseIf語句格式:If條件1then語句塊1ElseIf條件2then語句塊2……[Else語句塊n+1]EndIf3/25/2024功能: 〔1〕依次判斷條件,如果找到一個滿足的條件,那么執(zhí)行其下面的語句塊,然后跳過EndIf,執(zhí)行后面的程序。 〔2〕如果所列出的條件都不滿足,那么執(zhí)行Else語句后面的語句塊;如果所列出的條件都不滿足,又沒有Else子句,那么直接跳過EndIf,不執(zhí)行任何語句塊。 ElseIf結(jié)構(gòu)的執(zhí)行過程如以下圖所示。3/25/2024ElseIf結(jié)構(gòu)執(zhí)行過程3/25/2024【例3】輸入一個學(xué)生的一門課分?jǐn)?shù)x〔百分制〕,當(dāng)x≥90時,輸出“優(yōu)秀”;當(dāng)80≤x<90時,輸出“良好”;當(dāng)70≤x<80時,輸出“中”;當(dāng)60≤x<70時,輸出“及格”,當(dāng)x<60時,輸出“不及格”。 算法分析:本例適合用多路分支結(jié)構(gòu)來解決。運行界面如以下圖所示。3/25/20243/25/2024屬性設(shè)置表3/25/2024程序代碼如下:'"鑒定"按鈕代碼PrivateSubCommand1_Click〔〕Dimscore!score=Text1.TextIfscore>=90ThenText2.Text="優(yōu)秀"ElseIfscore>=80andscore<90ThenText2.Text="良好"ElseIfscore>=70andscore<80ThenText2.Text="中"3/25/2024ElseIfscore>=60andscore<70ThenText2.Text="及格"ElseText2.Text="不及格"EndIfEndSub
'“退出”按鈕代碼PrivateSubCommand2_Click〔〕EndEndSub3/25/2024‘“鑒定”按鈕代碼的條件判斷還可寫成如下:PrivateSubCommand1_Click〔〕Dimscore!score=Text1.TextIfscore>=90ThenText2.Text="優(yōu)秀"ElseIfscore>=80ThenText2.Text="良好"ElseIfscore>=70ThenText2.Text="中"3/25/2024ElseIfscore>=60ThenText2.Text="及格"ElseText2.Text="不及格"EndIfEndSub
3/25/2024ElseIf語句,實際完成的是塊If的嵌套,它和塊If嵌套的格式上有很大區(qū)別,ElseIf結(jié)構(gòu)只有一對If和EndIf語句。另外應(yīng)注意:【ElseIf】和【ElseIf】的區(qū)別。3/25/2024行If語句格式:If條件then語句1[Else語句2] 功能:當(dāng)條件滿足時,執(zhí)行語句1;條件不滿足時,執(zhí)行語句2。 從行If的格式和功能不難看出,行If語句是一種簡單的分支結(jié)構(gòu),只是把一個簡單的塊If結(jié)構(gòu)寫在一行中,減少了語句行,省略了“EndIf”的書寫。行If完全可以用塊If代替。3/25/2024【例4.4】任意輸入3個數(shù),找出其中的最大值。3/25/2024屬性設(shè)置表3/25/2024程序代碼如下:PrivateSubCommand1_Click〔〕DimaAsSingle,bAsSingle,cAsSingle,maxAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)max=aIfb>maxThenmax=bIfc>maxThenmax=cText4.Text=maxEndSubIfb>maxthenMax=bEndifIfc>maxthenMax=cEndif3/25/2024Bad!請判斷下面程序段的嵌套情況
Ifscore>60ThenIfflag=1Thenx=x+5Elsex=x+10EndIfElseIfflag=1Thenx=x-5ElseIfflag=0Thenx=x-10EndIfIfscore<=60Thenx=x+20EndIfGood!Ifscore>60ThenIfflag=1Thenx=x+5Elsex=x+10EndIfElseIfflag=1Thenx=x-5ElseIfflag=0Thenx=x-10EndIfIfscore<=60Thenx=x+20EndIf3/25/2024Iif函數(shù)語法為:Iif(表達(dá)式1,表達(dá)式2,表達(dá)式3〕當(dāng)表達(dá)式1為TRUE時,返回表達(dá)式2的值,否那么返回表達(dá)式3的值GOTO語句GOTOLINE例子見書663/25/2024SelectCase語句當(dāng)對一個表達(dá)式的不同取值情況作不同處理時,用ElseIf語句程序結(jié)構(gòu)顯得較為雜亂,而用SelectCase語句將使程序的結(jié)構(gòu)更清晰,SelectCase語句又稱為情況語句。3/25/2024格式:SelectCase測試表達(dá)式Case表達(dá)式列表1語句塊1Case表達(dá)式列表2語句塊2…Case表達(dá)式列表n語句塊n[CaseElse語句塊n+1]EndSelect3/25/2024功能:根據(jù)“測試表達(dá)式”的值,選擇第一個符合條件的語句塊執(zhí)行。 SelectCase語句的執(zhí)行過程是:先求“測試表達(dá)式”的值,然后順序測試該值符合哪一個Case子句中情況,如果找到了,那么執(zhí)行該Case子句下面的語句塊,然后執(zhí)行EndSelect下面的語句;如果沒找到,那么執(zhí)行CaseElse下面的語句塊,然后執(zhí)行EndSelect下面的語句。3/25/2024說明:“測試表達(dá)式”可以是數(shù)值型或字符串型表達(dá)式;“表達(dá)式列表”形式有以下3種:〔1〕一個表達(dá)式或用逗號隔開的假設(shè)干表達(dá)式如:Case6或:Case1,3,5,7〔2〕表達(dá)式1To表達(dá)式2 如:Case1To10〔3〕Is關(guān)系運算符表達(dá)式如:CaseIs>=803/25/2024【例4.5】把例4.3中“鑒定”按鈕的代碼用SelectCase語句改寫。PrivateSubCommand1_Click〔〕Dimscore!score=Text1.TextSelectCasescoreCaseIs>=90Text2.Text="優(yōu)秀"3/25/2024CaseIs>=80Text2.Text="良好"CaseIs>=70Text2.Text="中"CaseIs>=60Text2.Text="及格"CaseElseText2.Text="不及格"EndSelectEndSub3/25/2024ONGOTO語句見書683/25/2024選擇結(jié)構(gòu)程序思考題2.模仿“幸運52”節(jié)目中猜某商品價格的方式,設(shè)計一個猜數(shù)字游戲。按“開始”按鈕開始游戲,用戶將猜到“數(shù)字”輸入到輸入框內(nèi),然后按“回車”鍵或點擊“判定”按鈕確認(rèn)。軟件應(yīng)根據(jù)輸入的“數(shù)據(jù)”進(jìn)行判斷,并〔用Textbox控件〕顯示提示結(jié)果:“高了!”、“低了!”和“已經(jīng)很接近答案了,努力??!”。3.模擬擲篩子游戲,產(chǎn)生1~6的隨機數(shù),根據(jù)篩子的點數(shù)決定中獎情況4.設(shè)計一個密碼輸入界面,要求有密碼驗證功能1.計算分段函數(shù)Y=x≠0x=03/25/20242.4循環(huán)結(jié)構(gòu)程序設(shè)計在實際工作中,常遇到一些操作過程不太復(fù)雜,但又需要反復(fù)進(jìn)行相同處理的問題,比方,在窗體上打印一百條相同的字符串,這個問題的解決邏輯上并不復(fù)雜,但如果單純用順序結(jié)構(gòu)來處理,那將得到一個非常乏味且冗長的程序:3/25/2024Print“你好“Print"你好“Print"你好“Print"你好“Print"你好“Print"你好“……Print"你好“Print"你好“100次3/25/2024由上面的例子不難看出,程序其實就是在反復(fù)執(zhí)行語句:Print"你好",程序當(dāng)然非常簡單易懂,但缺乏最根本的編程技巧。要想方便地解決這類問題,最好的方法就是用循環(huán)語句。 所謂循環(huán)就是重復(fù)地執(zhí)行一組語句。 我們用循環(huán)語句解決上面的問題,程序非常簡短:Fori=1To100Print"你好“Nexti3/25/2024上述程序段便是一個循環(huán)語句,在循環(huán)過程中第2句被反復(fù)執(zhí)行了100次,從而打印出最終的圖形。 通過上面的比照可知,循環(huán)結(jié)構(gòu)非常適合于解決處理的過程相同、處理的數(shù)據(jù)相關(guān),但處理的具體值不同的問題。我們把能夠處理這類問題的語句稱為循環(huán)語句。 VB提供了三種不同風(fēng)格的循環(huán)語句,它們分別是: 〔1〕While…Wend語句; 〔2〕For…Next語句; 〔3〕Do…Loop語句。 我們將對這3種循環(huán)語句逐一介紹。3/25/2024循環(huán):同一個程序段重復(fù)執(zhí)行假設(shè)干次當(dāng)型循環(huán)當(dāng)條件表達(dá)式為True時執(zhí)行循環(huán),為False時退出循環(huán)關(guān)鍵字為while直到型循環(huán)執(zhí)行循環(huán),直到條件表達(dá)式的值為True時才結(jié)束循環(huán)關(guān)鍵字為until條件循環(huán)體FalseTrue條件循環(huán)體FalseTrue3/25/2024循環(huán)語句必須包含的三局部內(nèi)容循環(huán)初始條件終止條件循環(huán)體用If語句和GoTo語句實現(xiàn)循環(huán)見書72語句和Wend實現(xiàn)循環(huán)早期Basic語言語法:While條件 語句塊〔循環(huán)體〕Wend 3/25/2024結(jié)合下面的程序段,我們做進(jìn)一步的說明:x=1Whilex<5Printx,x=x+1Wend該程序段的執(zhí)行結(jié)果是:1234循環(huán)的初始條件循環(huán)的終止條件循環(huán)體3/25/2024思考:如果令第一條語句:“x=1”改為x=5,會出現(xiàn)什么情況?如果把第二句的“x<5”改為“x<10”,“x>0”以及”x>1”結(jié)果又都如何?如果刪去x=x+1這一條語句結(jié)果會如何?x=1Whilex<5Printx,x=x+1Wend3/25/2024While循環(huán)的幾點說明While循環(huán)語句本身不能修改循環(huán)條件,所以必須在While…Wend語句的循環(huán)體內(nèi)設(shè)置相應(yīng)語句,使得整個循環(huán)趨于結(jié)束,以防止死循環(huán)。While循環(huán)語句先對條件進(jìn)行判斷,然后才決定是否執(zhí)行循環(huán)體。如果開始條件就不成立,那么循環(huán)體一次也不執(zhí)行。【例1】求1+2+3……+103/25/2024程序如下:PrivateSubForm_Click〔〕DimIAsInteger,sAsIntegerI=0s=0WhileI<10I=I+1s=s+IWendPrint"1+2+3……+10的結(jié)果是:";sEndSub思考:如果把這兩行代碼對調(diào),是否也能得到希望的結(jié)果?3/25/2024用For…Next語句實現(xiàn)循環(huán)For計數(shù)器變量=初始值To終止值[Step增量] 循環(huán)體 [ExitFor]Next[計數(shù)器變量]說明循環(huán)變量:亦稱為循環(huán)控制變量,必須為數(shù)值型。初值、終值:都是數(shù)值型,可以是數(shù)值表達(dá)式。增量:循環(huán)變量的增量,是一個數(shù)值表達(dá)式。一般來說,增量為正,初始值應(yīng)小于終止值;假設(shè)為負(fù),初始值應(yīng)大于終止值。步長不能是0。如果步長是1,Step1可略去不寫。循環(huán)體:在For語句和Next語句之間的語句序列。Next后面的循環(huán)變量與For語句中的循環(huán)變量必須相同。執(zhí)行過程3/25/20243/25/2024這里所說的“超過”有兩種含義,即大于或小于。當(dāng)步長為正值時,循環(huán)變量大于終值為“超過”;當(dāng)步長為負(fù)值時,循環(huán)變量小于終值為“超過”。Int2=0Forint1=1to10step–1int2=int2+1Next‘以上循環(huán)體執(zhí)行次數(shù)為0次!我們通過分析下面的程序來進(jìn)一步理解For語句的執(zhí)行過程。3/25/2024Forn=1To10Step3Printn,Nextn具體執(zhí)行情況如下:第幾次循環(huán) n 與終值比較 執(zhí)行循環(huán)體否 1 1 <10 執(zhí)行 2 4 <10 執(zhí)行 3 7 <10 執(zhí)行 4 10 =10 執(zhí)行 5 13 >10 停止執(zhí)行 上面程序的執(zhí)行結(jié)果為:147103/25/2024循環(huán)次數(shù):Int(〔終值-初值〕/步長+1)如判斷下面程序段執(zhí)行次數(shù):1、Int2=0Forint1=1to–2step–1int2=int2+1next2、Int2=0Forint1=1to10step1exitforint2=int2+1next3/25/2024例:使用for循環(huán)語句在窗體上打印如以下圖形3/25/2024PrivateSubForm_Click()PrintTab(10);"※"ForI=0To6PrintTab(10);"※";Spc(2*I);"※"NextIPrintTab(10);"※※※※※※※※※"EndSub3/25/2024思考:如果上述圖形到下個兒〔如以下圖所示〕,上述的代碼應(yīng)該如何修改?3/25/2024PrivateSubForm_Click()PrintTab(10);"※※※※※※※※※"ForI=6To0Step-1PrintTab(10);"※";Spc(2*I);"※"NextIPrintTab(10);"※"EndSub3/25/20242.4.4Do…Loop語句實現(xiàn)循環(huán)當(dāng)型循環(huán)形式Do[While條件] 語句塊〔循環(huán)體〕 LoopDo 語句塊〔循環(huán)體〕 Loop例2.23將數(shù)字反轉(zhuǎn)ExitDoDoWhileTrue語句塊〔循環(huán)體〕LoopDo語句塊〔循環(huán)體〕LoopWhile條件思考:如果要把計算的結(jié)果值從文本框(textbox)中輸出應(yīng)該如何修改程序?3/25/2024例:把While和Wend計算1~100之間數(shù)的總和的代碼改為求所有奇數(shù)的總和,并用do-while語句實現(xiàn)PrivateSubForm_Click()DimIAsInteger,sAsIntegerI=0s=0dowhileI<100I=I+1IfIMod2<>0Thens=s+IEndIfLoopPrint"1~100的奇數(shù)和是:";sEndSub3/25/2024直到型循環(huán)DoUntil條件 語句塊〔循環(huán)體〕 LoopDo 語句塊〔循環(huán)體〕 LoopUntil條件例2.24計算n的階乘注意:使用For實現(xiàn)的循環(huán),循環(huán)的次數(shù)事先,而doloop(while或until)實現(xiàn)的循環(huán)次數(shù)事先未知3/25/2024例:求兩自然數(shù)m,n的最大公約數(shù)。設(shè)計思想:〔1〕m除以n得到余數(shù)r;〔2〕假設(shè)r=0,那么n為要求的最大公約數(shù),算法結(jié)束;否那么執(zhí)行〔3〕;〔3〕n→m,r→n,再轉(zhuǎn)到〔1〕執(zhí)行。 程序如下:PrivateSubcommand1_Click〔〕Dimm%,n%,r%,m1%,n1%m1=Val〔Text1.Text〕 n1=Val〔Text2.Text〕3/25/2024m=iif(m1>n1,m1,n1)n=iif(n1<m1,n1,m1)r=mModnDoUntilr=0m=nn=rr=mModnLoopPrint"它們的最大公約數(shù)是";nEndSubDimm%,n%,r%,temp%M=val(text1.text)N=val(text2.text)Ifm<nthentemp=mm=nn=tempEndif……3/25/20243/25/2024循環(huán)的嵌套循環(huán)的嵌套是指一個循環(huán)體內(nèi)完整地包括了另一個循環(huán)。一重循環(huán)套一重為二重循環(huán),如果二重循環(huán)的內(nèi)循環(huán)中又包含一個循環(huán),那么稱為三重循環(huán),依此類推。三重以上的可稱為多重循環(huán)?!惭h(huán)語句還可以與條件語句的嵌套〕注意:使用幾個For循環(huán)嵌套時要注意使用不同的變量名For循環(huán)和Do可以混合嵌套,但是各循環(huán)間不得交叉。下例是非法的循環(huán)嵌套。ForI…ForJ……NextINextJ就和我們一層層的包裹東西是一樣的!3/25/2024DoFor DoLoopNextLoop二重循環(huán)三重循環(huán)正確的循環(huán)為:3/25/2024Do ForI=1to10… …forI=1to10 Do … … ExitDo ExitfornextI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)合規(guī)管理體系建設(shè)合同范本及實施指南3篇
- 2025年度個人貨車租賃合同保險條款說明3篇
- 2025年度旅游行業(yè)知識產(chǎn)權(quán)顧問合同4篇
- 2025年女方放棄撫養(yǎng)費及子女監(jiān)護(hù)權(quán)離婚協(xié)議書子女成長支持協(xié)議
- 2025年度高新技術(shù)企業(yè)股份無償贈與合作協(xié)議
- 二零二五年度石材行業(yè)環(huán)保政策咨詢合同
- 二零二五年度專業(yè)護(hù)理機構(gòu)護(hù)工勞動合同
- 二零二五年度銀行承兌匯票擔(dān)保業(yè)務(wù)風(fēng)險管理協(xié)議
- 二零二五版房建木工勞務(wù)合同合同解除與終止流程范本3篇
- 2025年度農(nóng)產(chǎn)品電商銷售合同履約保障與風(fēng)險控制
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評估指導(dǎo)手冊
- 大疆80分鐘在線測評題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語單詞詞匯表(蘇教譯林版)
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費報銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
評論
0/150
提交評論