大學(xué)計(jì)算機(jī)基礎(chǔ)(第7章)_第1頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)(第7章)_第2頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)(第7章)_第3頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)(第7章)_第4頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)(第7章)_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《大學(xué)計(jì)算機(jī)基礎(chǔ)》第7章VBScript程序設(shè)計(jì)計(jì)算機(jī)的任何功能源于程序的編制。程序設(shè)計(jì)語(yǔ)言是實(shí)現(xiàn)程序編制的重要工具,當(dāng)前的主流技術(shù)是面向?qū)ο蟮某绦蛟O(shè)計(jì)。VBScript是一種解釋性的網(wǎng)頁(yè)腳本語(yǔ)言,具有面向?qū)ο蟮奶匦?,是?shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的有效工具。VBScript程序設(shè)計(jì)概述7.1VBScript編程基礎(chǔ)7.2程序流程控制7.3過(guò)程7.4提綱事件處理7.5程序調(diào)試7.67.1.1程序設(shè)計(jì)語(yǔ)言的發(fā)展歷程

計(jì)算機(jī)語(yǔ)言可以分成機(jī)器語(yǔ)言,匯編語(yǔ)言,高級(jí)語(yǔ)言三大類(lèi)。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用計(jì)算機(jī)語(yǔ)言來(lái)編寫(xiě)的。1.機(jī)器語(yǔ)言

機(jī)器語(yǔ)言是第一代計(jì)算機(jī)語(yǔ)言。計(jì)算機(jī)發(fā)明之初,人們只能直接用計(jì)算機(jī)的語(yǔ)言控制計(jì)算機(jī)動(dòng)作,就是寫(xiě)出一串串由“0”和“1”組成的指令序列由計(jì)算機(jī)執(zhí)行,這種語(yǔ)言就是機(jī)器語(yǔ)言。由于機(jī)器語(yǔ)言使用的是針對(duì)特定型號(hào)計(jì)算機(jī)的語(yǔ)言,故運(yùn)算效率是所有語(yǔ)言中最高的。7.1VBScript程序設(shè)計(jì)概述2.匯編語(yǔ)言

匯編語(yǔ)言是用一些簡(jiǎn)潔的英文字母、符號(hào)串來(lái)替代一個(gè)特定的指令的二進(jìn)制串,比如,用“ADD”代表加法,“MOV”代表數(shù)據(jù)傳遞等,降低編程的繁雜度。匯編語(yǔ)言同樣十分依賴(lài)于機(jī)器硬件,移植性不好,但效率仍十分高。3.高級(jí)語(yǔ)言

用高級(jí)語(yǔ)言編寫(xiě)的程序需要經(jīng)過(guò)翻譯,計(jì)算機(jī)才能執(zhí)行。雖然程序編譯占去了一些計(jì)算機(jī)時(shí)間,但是實(shí)踐證明,高級(jí)語(yǔ)言是有效地使用計(jì)算機(jī)與計(jì)算機(jī)執(zhí)行效率之間的一個(gè)很好的折中手段。7.1VBScript程序設(shè)計(jì)概述

程序設(shè)計(jì)語(yǔ)言

機(jī)器語(yǔ)言:

匯編語(yǔ)言:

高級(jí)語(yǔ)言:1011000000000101………..MOVA,5ADDA,2………..LETX=5+220PRINTX………..7.1.2面向?qū)ο缶幊痰幕舅枷?/p>

面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法,其基本思想是使用對(duì)象、類(lèi)、繼承、封裝、消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。

面向?qū)ο蟪绦蛟O(shè)計(jì)方法是從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類(lèi)的自然思維方式,強(qiáng)調(diào)直接以問(wèn)題域(現(xiàn)實(shí)世界)中的事物為中心來(lái)思考問(wèn)題、認(rèn)識(shí)問(wèn)題,并根據(jù)這些事物的本質(zhì)特點(diǎn),把它們抽象地表示為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位。7.1VBScript程序設(shè)計(jì)概述7.1.3VBScript語(yǔ)言特點(diǎn)與編程環(huán)境VBScript是一種解釋性的網(wǎng)頁(yè)腳本語(yǔ)言,具有面向?qū)ο蟮奶匦?。VBScript既可以作為客戶(hù)端編程語(yǔ)言,也可以作為服務(wù)器端編程語(yǔ)言。

客戶(hù)端編程語(yǔ)言:可以由瀏覽器解釋執(zhí)行的語(yǔ)言。當(dāng)編制的腳本(程序)被下載到一個(gè)兼容的瀏覽器中時(shí),瀏覽器將自動(dòng)執(zhí)行該腳本。

服務(wù)器端編程語(yǔ)言:腳本在服務(wù)器上執(zhí)行。不受瀏覽器的限制,網(wǎng)頁(yè)通過(guò)網(wǎng)絡(luò)傳送給瀏覽器,Web瀏覽器收到的只是標(biāo)準(zhǔn)的HTML文件。7.1VBScript程序設(shè)計(jì)概述編制VBScript程序的工具:1.使用純文本編輯器

使用純文本編輯器(如Windows的記事本)編寫(xiě)腳本程序,優(yōu)點(diǎn)是簡(jiǎn)單、易用,缺點(diǎn)是不能支持腳本語(yǔ)言的特性,因此這種方法只適用于編寫(xiě)和修改程序量不大的腳本程序。2.使用SPD2007

在SPD2007中,在“網(wǎng)頁(yè)”視圖中的“代碼”選項(xiàng)卡下可以直接編制HTML文檔,也可以輸入和編輯VBScript腳本程序代碼,并能在IE瀏覽器中瀏覽執(zhí)行結(jié)果。7.1VBScript程序設(shè)計(jì)概述

3.使用Microsoft腳本編輯器Microsoft腳本編輯器是SPD2007提供的一種專(zhuān)業(yè)化Web編程工具,用于查看和編輯HTML文檔,也可以調(diào)試VBScript腳本程序。

啟動(dòng)MicrosoftScriptEditor的方法:在SPD2007中打開(kāi)或新建任意一個(gè)HTML文檔,選擇“網(wǎng)頁(yè)”視圖下的“代碼”選項(xiàng)卡,執(zhí)行“工具”→“宏”命令,從彈出的子菜單中選擇“MicrosoftScriptEditor”選項(xiàng),即可打開(kāi)MicrosoftOffice內(nèi)置的腳本編輯器。7.1VBScript程序設(shè)計(jì)概述7.1.4程序代碼編寫(xiě)規(guī)則

每一種程序設(shè)計(jì)語(yǔ)言都有一套嚴(yán)格的書(shū)寫(xiě)規(guī)則。VBScript程序代碼也有自己的編寫(xiě)規(guī)則,不能超越其規(guī)定自由發(fā)揮。

1.程序代碼中不區(qū)分字母的大小寫(xiě)。

2.同一程序行上可以書(shū)寫(xiě)多條語(yǔ)句。語(yǔ)句之間用冒號(hào)“:”分隔,例如:

a=10:b=25。VBScript規(guī)定,一個(gè)程序行的長(zhǎng)度最多不能超過(guò)255個(gè)字符。

3.單行語(yǔ)句可分若干行書(shū)寫(xiě)。需要續(xù)行時(shí),在本行后加入續(xù)行符(一個(gè)空格后面跟隨一個(gè)下劃線“_”)。7.1VBScript程序設(shè)計(jì)概述4.注釋語(yǔ)句。注釋語(yǔ)句可以幫助其他程序員理解程序文件,在VBScript中的注釋語(yǔ)句以單引號(hào)(‘)或Rem表示。例如:

r=2:Remr表示圓的半徑s=3.14*r*r ‘求圓的面積

需要特別注意的是,編寫(xiě)程序時(shí)一定要采用VBScript規(guī)定的有效符號(hào)。除注釋內(nèi)容及字符串以外,語(yǔ)句中使用的分號(hào)、引號(hào)、括號(hào)等符號(hào)都必須使用英文狀態(tài)下的符號(hào),否則程序?qū)⒉荒苷_\(yùn)行。7.1VBScript程序設(shè)計(jì)概述

5.嚴(yán)格按照VB規(guī)定的格式和符號(hào)編寫(xiě)程序

與其他高級(jí)語(yǔ)言一樣,在VB中使用的分號(hào)、引號(hào)、括號(hào)等符號(hào)都是英文狀態(tài)下的半角符號(hào),而不能使用中文狀態(tài)下的全角符號(hào)。

許多程序錯(cuò)誤都是由此而起!!!!

例如:

Ifa<5Thenx=10

Document.Write("x<1")

不能寫(xiě)成

Ifa<5Thenx=10

Document.Write(“x<1”)全角符號(hào)中文符號(hào)7.1.5一個(gè)簡(jiǎn)單的VBScript程序VBScript采用小程序段的方式進(jìn)行編程。當(dāng)客戶(hù)端請(qǐng)求一個(gè)含有VBScript腳本程序的網(wǎng)頁(yè)時(shí),VBScript腳本程序會(huì)隨HTML文檔一起從服務(wù)器下載到客戶(hù)端,然后由客戶(hù)端瀏覽器解釋和執(zhí)行這個(gè)腳本程序,并以頁(yè)面的方式顯示出來(lái)。

在HTML文檔中,

<SCRIPT></SCRIPT>為腳本標(biāo)記,其中:type=“text/VBScript”表示腳本語(yǔ)言是VBScript,瀏覽器會(huì)激活VBScript處理器進(jìn)行處理。另一種標(biāo)記方法是:LANGUAGE=“VBScript”,目前這兩種方法都可以表示<SCRIPT></SCRIPT>里的代碼是VBScript。7.1VBScript程序設(shè)計(jì)概述例7-1在瀏覽器上顯示“大家好!”、“節(jié)日快樂(lè)!”,VBScript程序如下:<HTML><HEAD><TITLE>例7-1</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>

Document.write("大家好!"&"<BR>")

x="節(jié)日快樂(lè)!"

Document.write(x)

</SCRIPT></BODY>

</HTML>7.1VBScript程序設(shè)計(jì)概述VBScript程序設(shè)計(jì)概述7.1VBScript編程基礎(chǔ)7.2程序流程控制7.3過(guò)程7.4提綱事件處理7.5程序調(diào)試7.6

用程序設(shè)計(jì)語(yǔ)言編制程序,最重要的兩個(gè)方面就是數(shù)據(jù)及程序控制。數(shù)據(jù)是程序要處理的對(duì)象,處理的結(jié)果也用數(shù)據(jù)來(lái)表示和存儲(chǔ);而程序控制則是對(duì)程序運(yùn)行流程的管理。7.2.1數(shù)據(jù)類(lèi)型

VBScript只有一種數(shù)據(jù)類(lèi)型,稱(chēng)為Variant(變體型)。Variant是一種特殊的數(shù)據(jù)類(lèi)型,根據(jù)使用的方式,它可以包含不同類(lèi)別的信息。Variant變量會(huì)自動(dòng)進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。需要時(shí)使用VBScript的轉(zhuǎn)換函數(shù)可以轉(zhuǎn)換數(shù)據(jù)的子類(lèi)型。7.2VBScript編程基礎(chǔ)7.2.2變量

變量是內(nèi)存中的臨時(shí)存儲(chǔ)單元,用于存儲(chǔ)程序運(yùn)行期間其值可以發(fā)生變化的量。一個(gè)變量有3個(gè)要素:變量名、數(shù)據(jù)類(lèi)型和變量值。使用變量并不需要了解變量在計(jì)算機(jī)內(nèi)存中的地址,只要通過(guò)變量名引用變量就可以查看或更改變量的值。

1.聲明變量

使用Dim語(yǔ)句在Script中顯式聲明變量。格式為:

Dim變量名列表

聲明多個(gè)變量時(shí),使用逗號(hào)分隔變量。例如:

Dima,b,c,d

另一種方式是通過(guò)直接在Script中使用變量名這一簡(jiǎn)單方式隱式聲明變量。7.2VBScript編程基礎(chǔ)2.變量命名規(guī)則第一個(gè)字符必須是字母。只能由字母、數(shù)字和下劃線組成,不能包含小數(shù)點(diǎn)、空格等字符。長(zhǎng)度不能超過(guò)255個(gè)字符。不能使用VBScript的關(guān)鍵字(也稱(chēng)保留字,如對(duì)象名、語(yǔ)句名、函數(shù)名等)作為變量名。在被聲明的作用域內(nèi)必須唯一。3.變量的作用域與生存期

變量的作用域由聲明它的位置決定。分為過(guò)程級(jí)變量和Script級(jí)變量。變量存在的時(shí)間稱(chēng)為生存期。Script級(jí)變量的生存期從被聲明的一刻起,直到Script運(yùn)行結(jié)束。對(duì)于過(guò)程級(jí)變量,其生存期僅是該過(guò)程運(yùn)行的時(shí)間,該過(guò)程結(jié)束后,變量隨之消失。7.2VBScript編程基礎(chǔ)4.變量賦值

賦值形式:變量在表達(dá)式左邊,要賦的值在表達(dá)式右邊。例如:B=200 S=“VBScript程序設(shè)計(jì)”

5.標(biāo)量變量和數(shù)組變量

只包含一個(gè)值的變量被稱(chēng)為標(biāo)量變量。包含一系列值的變量稱(chēng)為數(shù)組變量。①

一維數(shù)組

DimA(10) ‘聲明一個(gè)包含11個(gè)元素的一維數(shù)組②

多維數(shù)組數(shù)組并不僅限于一維。VBScript中數(shù)組的維數(shù)最大可以為60 DimMyTable(5,10)‘聲明一個(gè)6行11列的二維數(shù)組7.2VBScript編程基礎(chǔ)“值可變”:當(dāng)將某個(gè)數(shù)據(jù)存放到一個(gè)變量時(shí),就把變量中原有的值“沖”掉,換成新的值。例如,以下2個(gè)賦值語(yǔ)句:

a=3a=8

同一變量在不同時(shí)刻可以取不同的值“取之不盡”:在運(yùn)算過(guò)程中,如果沒(méi)有改變?cè)撟兞康闹?,那么,不管使用變量的值進(jìn)行多少次運(yùn)算,其值始終保持不變。例如

x=5a=3+x′x的值始終保持為5b=x*x–4*x變量的兩個(gè)重要特點(diǎn)7.2.3常量

常量是在程序執(zhí)行期間其值從不發(fā)生變化的數(shù)據(jù)。在VBScript中,常量分為普通常量和符號(hào)常量。1.普通常量

普通常量分為字符串常量、數(shù)字常量和日期型常量三種。

字符串常量簡(jiǎn)稱(chēng)字符串,它是由一對(duì)雙引號(hào)括起來(lái)的字符序列所組成,其中可以包含字母、漢字、數(shù)字、空格以及標(biāo)點(diǎn)符號(hào)等,長(zhǎng)度不超過(guò)20億個(gè)字符。

數(shù)值常量分為整型、長(zhǎng)整型和浮點(diǎn)型。整型數(shù)和長(zhǎng)整型數(shù)都可以用十進(jìn)制、八進(jìn)制、十六進(jìn)制三種表示形式。浮點(diǎn)型由尾數(shù)、指數(shù)符號(hào)和指數(shù)3部分組成。對(duì)于單精度浮點(diǎn)數(shù),指數(shù)符號(hào)為E;對(duì)于雙精度浮點(diǎn)數(shù),指數(shù)符號(hào)為D。日期型常量用來(lái)表示日期和時(shí)間。它采用兩個(gè)“#”號(hào)把日期和時(shí)間的值括起來(lái),例如#05/10/2013#,#2010-10-01#等。7.2VBScript編程基礎(chǔ)2.符號(hào)常量

符號(hào)常量是用一個(gè)標(biāo)識(shí)符表示的常量,用于代替數(shù)字或字符串,其值從不發(fā)生改變。在VBScript中,符號(hào)常量分為預(yù)定義符號(hào)常量和用戶(hù)自定義常量。①

預(yù)定義符號(hào)常量。在VBScript中,提供了許多預(yù)定義符號(hào)常量,在使用之前無(wú)需定義。VBScript符號(hào)常量通常以前綴“vb”開(kāi)始,例如:vbCrLf表示回車(chē)符和換行符的組合,vbGreen表示綠色的數(shù)值。②

用戶(hù)自定義常量。通過(guò)Const語(yǔ)句來(lái)創(chuàng)建,使用Const語(yǔ)句可以創(chuàng)建名稱(chēng)具有一定含義的字符串型或數(shù)值型常量。ConstMyString="這是一個(gè)字符串"ConstPI=3.1415926ConstCutoffDate=#6-1-2013#7.2VBScript編程基礎(chǔ)7.2.4運(yùn)算符與表達(dá)式VBScript有4類(lèi)運(yùn)算符,包括算術(shù)運(yùn)算符、連接運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符。1.算術(shù)運(yùn)算符VBScript有8種算術(shù)運(yùn)算符:

^(乘方)→-(求負(fù))→*/→\→Mod→+-

示例:5*x^10+x/6–x^(1/3)

15Mod67.2VBScript編程基礎(chǔ)求整除后的余數(shù),結(jié)果為32.連接運(yùn)算符

連接運(yùn)算符有兩個(gè):&和+,其作用都是將兩個(gè)字符串連接起來(lái),合并成一個(gè)新字符串。例如:“高性能”&“計(jì)算” ‘結(jié)果是“高性能計(jì)算”“Office”&2010 ‘結(jié)果是“Office2010”“1234”+“5678” ‘結(jié)果是“12345678”

當(dāng)連接的兩個(gè)數(shù)據(jù)都是字符串時(shí),“&”和“+”的作用完全相同。但“&”會(huì)自動(dòng)將非字符串類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為字符串后再進(jìn)行連接,而“+”則不能自動(dòng)進(jìn)行轉(zhuǎn)換。7.2VBScript編程基礎(chǔ)3.比較運(yùn)算符

比較運(yùn)算符又稱(chēng)為關(guān)系運(yùn)算符,用于對(duì)兩個(gè)表達(dá)式進(jìn)行比較,比較結(jié)果為邏輯值。在VBScript中共有6個(gè)比較運(yùn)算符,包括:=、<>、<、>、<=、>=。比較運(yùn)算符的優(yōu)先級(jí)都相同,按照從左到右的順序進(jìn)行計(jì)算。

字符串?dāng)?shù)據(jù)也能比較大小,它是按其ASCII碼值進(jìn)行比較的。比較兩個(gè)字符串時(shí),從第一個(gè)字符開(kāi)始比較,其ASCII碼值大的字符串大。如果第一個(gè)字符相同,則取第二個(gè)字符進(jìn)行比較,依此類(lèi)推。例如:“A”小于“B”“12”小于“2”“ABC”大于“AB2”“ABC”大于“AB”7.2VBScript編程基礎(chǔ)4.邏輯運(yùn)算符

邏輯運(yùn)算符的作用是將操作數(shù)進(jìn)行邏輯運(yùn)算,結(jié)果是邏輯值?;镜倪壿嬤\(yùn)算符有三種,即And、Or、Not。進(jìn)行邏輯運(yùn)算時(shí),運(yùn)算符的優(yōu)先級(jí)依次是Not、AnD、Or,括號(hào)優(yōu)先。

例:Not(1<3) ‘結(jié)果為假5<=5And4<5+1 ‘結(jié)果為真“3”<=”3”O(jiān)R5>2 ‘結(jié)果為真7.2VBScript編程基礎(chǔ)5.表達(dá)式與運(yùn)算符優(yōu)先級(jí)

(1)表達(dá)式

將常量、變量或函數(shù)等用運(yùn)算符連接起來(lái)構(gòu)成的式子就是表達(dá)式。表達(dá)式的運(yùn)算結(jié)果是一個(gè)值。例如,a+b–c,a*b/c,a+20*b/12,aANDbORc等,都是合法的表達(dá)式。

表達(dá)式書(shū)寫(xiě)規(guī)則:①

不能使用上標(biāo)或下標(biāo)。例如X2必須寫(xiě)為X^2,X1+X2必須寫(xiě)為X1+X2;②

所有運(yùn)算符都不能省略。例如3X必須寫(xiě)為3*X;③

表達(dá)式中的括號(hào)都要用圓括號(hào),且必須成對(duì)出現(xiàn)。7.2VBScript編程基礎(chǔ)(2)運(yùn)算符優(yōu)先級(jí)

當(dāng)表達(dá)式包含多個(gè)運(yùn)算符時(shí),將按預(yù)定順序計(jì)算每一部分,這個(gè)順序被稱(chēng)為運(yùn)算符優(yōu)先級(jí)??梢允褂美ㄌ?hào)越過(guò)這種優(yōu)先級(jí)順序,強(qiáng)制首先計(jì)算表達(dá)式的某些部分。運(yùn)算時(shí),總是先執(zhí)行括號(hào)中的運(yùn)算符,然后再執(zhí)行括號(hào)外的運(yùn)算符。但是,在括號(hào)中仍遵循標(biāo)準(zhǔn)運(yùn)算符優(yōu)先級(jí)。優(yōu)先級(jí)相同的按照從左到右的順序計(jì)算。當(dāng)表達(dá)式包含多種運(yùn)算符時(shí),首先計(jì)算算術(shù)運(yùn)算符,其次連接運(yùn)算符,然后計(jì)算比較運(yùn)算符,最后計(jì)算邏輯運(yùn)算符。7.2VBScript編程基礎(chǔ)1+2*14Mod17\6/2=?

求出下列表達(dá)式的值想一想思考題

1+28Mod5

結(jié)果為41.按運(yùn)算符的優(yōu)先級(jí)分成若干運(yùn)算步驟先乘除,再整除\和求Mod,后加運(yùn)算

2.根據(jù)運(yùn)算符的運(yùn)算功能求出各步驟的結(jié)果7.2.5函數(shù)

函數(shù)是系統(tǒng)提供的實(shí)用功能。VBScript中的內(nèi)部函數(shù)也稱(chēng)為標(biāo)準(zhǔn)函數(shù),每個(gè)內(nèi)部函數(shù)完成特定的功能。函數(shù)調(diào)用的一般格式為:函數(shù)名(參數(shù)1,參數(shù)2,…)例如,要求某個(gè)數(shù)x的平方根,可以調(diào)用Sqr函數(shù):y=Sqr(x)VBScript常用內(nèi)部函數(shù)可以分為4類(lèi):轉(zhuǎn)換函數(shù)、字符串函數(shù)、數(shù)學(xué)函數(shù)和日期函數(shù)。VBScript中所有函數(shù)的返回值的數(shù)據(jù)類(lèi)型都是Variant。1.轉(zhuǎn)換函數(shù)

在VBScript中,Variant變量一般會(huì)根據(jù)需要自動(dòng)轉(zhuǎn)換成合適的數(shù)據(jù)類(lèi)型;但有時(shí)自動(dòng)轉(zhuǎn)換有可能造成數(shù)據(jù)類(lèi)型不匹配錯(cuò)誤。此時(shí),就應(yīng)使用VBScript的轉(zhuǎn)換函數(shù)來(lái)強(qiáng)制轉(zhuǎn)換數(shù)據(jù)的子類(lèi)型。VBScript中常用的類(lèi)型轉(zhuǎn)換函數(shù)見(jiàn)表7-6。7.2VBScript編程基礎(chǔ)<HTML><HEAD><TITLE>例7-2</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>

Num=1000

Document.Write(typename(Num)&“<BR>”)Document.Write(“歡迎第”&CStr(Num)&“個(gè)來(lái)訪者"&“<BR>”)Document.Write(typename(CStr(Num))

</SCRIPT></BODY>

</HTML>7.2VBScript編程基礎(chǔ)例7-2使用類(lèi)型轉(zhuǎn)換函數(shù)示例。顯示數(shù)值變量類(lèi)型,并將數(shù)值變量轉(zhuǎn)換為字符串變量。類(lèi)型轉(zhuǎn)換2.字符串函數(shù)

字符串在編程中使用廣泛,如用戶(hù)注冊(cè)時(shí)輸入的用戶(hù)名、密碼等信息,留言板中的留言標(biāo)題、內(nèi)容、留言人等信息,都是作為字符串處理的。VBScript提供了一些用于字符串查找、比較、截取等處理的函數(shù),見(jiàn)表7-7。

函數(shù)Instr在“字符串1”中查找“字符串2”,如果找不到,返回值為0;如果找到了,則返回“字符串2”的第一個(gè)字符在“字符串1”中的位置。f和k都是可選參數(shù),f表示開(kāi)始搜索的位置(默認(rèn)值為1),k表示比較方式,若k為0(默認(rèn)),表示區(qū)分大小寫(xiě);若k為1,則不區(qū)分大小寫(xiě)。例如:Instr(3,“A12a34A56”,“A”),結(jié)果為7,Instr(3,“A12a34A56”,“A”,1),結(jié)果為4;

在函數(shù)String中,字符也可以用ASCII代碼(見(jiàn)附錄B)來(lái)表示,例如String(6,42)與String(6,“*”)作用相同。7.2VBScript編程基礎(chǔ)<HTML><HEAD><TITLE>例7-3</TITLE></HEAD><BODY><SCRIPTTYPE="text/VBScript">dimuser_name,StrTempuser_name=Ucase("WangDonFang")

document.write(user_name&"<BR>")

StrTemp=Mid("Heisagoodprimeminister",9,4)

document.writeStrTemp </SCRIPT>

</BODY></HTML>7.2VBScript編程基礎(chǔ)例7-3使用字符串函數(shù)示例。將用戶(hù)名小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母;取字符串中的子串。3.數(shù)學(xué)函數(shù)

VBScript提供了10多種數(shù)學(xué)處理的函數(shù),表7-8列出了常用的6種數(shù)學(xué)函數(shù)。

其中隨機(jī)函數(shù)Rnd用于產(chǎn)生介于0和1之間的隨機(jī)數(shù)。所謂隨機(jī)數(shù)是人們預(yù)先不能估計(jì)到的數(shù)。Rnd通常與Int函數(shù)配合使用,

要生成[a,b]區(qū)間內(nèi)的隨機(jī)整數(shù),可以使用公式:Int((b-a+1)*Rnd+a)

默認(rèn)情況下,每次運(yùn)行一個(gè)應(yīng)用程序,VBScript會(huì)提供相同的“種子數(shù)”,使Rnd產(chǎn)生相同序列的隨機(jī)數(shù)。為了每次運(yùn)行時(shí)產(chǎn)生不同序列的隨機(jī)數(shù),可先執(zhí)行Randomize語(yǔ)句。7.2VBScript編程基礎(chǔ)

生成[1,5]區(qū)間范圍內(nèi)的隨機(jī)整數(shù),可以采用:

Int(5*Rnd+1)

產(chǎn)生的隨機(jī)數(shù)可以是1,2,3,4或5,這由VB運(yùn)行時(shí)隨機(jī)給定。5*Rnd的結(jié)果為下列的一種:

0.……1.……2.……3.……

5.……例7-4用隨機(jī)函數(shù)產(chǎn)生20個(gè)在[1,100]之間的正整數(shù),找出其中的最大數(shù)和最小數(shù)并輸出,同時(shí)輸出下標(biāo)。程序代碼如下:<HTML><HEAD><TITLE>例7-4</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>Dima(20)

Dimm,n,i,Max,MinRandomizeFori=1To20a(i)=Int(Rnd*100+1) Document.write(a(i)&“”)NextDocument.write(“<BR>”)7.2VBScript編程基礎(chǔ)定義數(shù)組產(chǎn)生隨機(jī)數(shù)Max=a(1)Min=a(1)Fori=2To20 Ifa(i)>MaxThenMax=a(i):m=i

Ifa(i)<MinThenMin=a(i):n=iNextDocument.write("最大的數(shù)是:"&Max&",下標(biāo)是:"&m&"<BR>")Document.write("最小的數(shù)是:"&Min&",下標(biāo)是:"&n&"<BR>")

</SCRIPT></BODY></HTML>7.2VBScript編程基礎(chǔ)保留最大數(shù),記錄下標(biāo)4.日期與時(shí)間函數(shù)

日期/時(shí)間函數(shù)用于進(jìn)行有關(guān)日期和時(shí)間的處理,VBScript常用的日期/時(shí)間函數(shù)見(jiàn)表7-9。

例7-5

利用VBScript在網(wǎng)頁(yè)中輸出當(dāng)前

的日期、時(shí)間、星期。程序代碼如下:7.2VBScript編程基礎(chǔ)<HTML><HEAD><TITLE>例7-5</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>Document.Write("當(dāng)前日期:"&Date()&"<BR>")Document.Write("當(dāng)前星期:"&Weekday(Date())&"<BR>")Document.Write("當(dāng)前時(shí)間:"&Time()&"<BR>")</SCRIPT></BODY></HTML>VBScript程序設(shè)計(jì)概述7.1VBScript編程基礎(chǔ)7.2程序流程控制7.3過(guò)程7.4提綱事件處理7.5程序調(diào)試7.6結(jié)構(gòu)化程序設(shè)計(jì)方法包含3種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。VBScript支持結(jié)構(gòu)化的程序設(shè)計(jì)方法,可以用這3種基本結(jié)構(gòu)及其組合來(lái)構(gòu)造程序,從而使程序結(jié)構(gòu)清晰、可讀性好,也易于調(diào)試和修改。7.3程序流程控制7.3.1順序結(jié)構(gòu)順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu)。顧名思義,順序結(jié)構(gòu)是按程序中語(yǔ)句編寫(xiě)的先后順序逐條執(zhí)行,只有在遇到分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等時(shí)才會(huì)改變執(zhí)行的順序。

在順序結(jié)構(gòu)中,按程序中語(yǔ)句編寫(xiě)的先后順序逐條執(zhí)行。主要包括以下一些簡(jiǎn)單語(yǔ)句。

輸入數(shù)據(jù):

賦值語(yǔ)句變量=表達(dá)式為變量賦值

InputBox函數(shù)通過(guò)輸入對(duì)話框接收數(shù)據(jù)

輸出結(jié)果:

Document.Write方法輸出信息到網(wǎng)頁(yè)

MsgBox函數(shù)以消息框形式輸出信息通常程序包含三部分內(nèi)容:輸入→處理→輸出1.賦值語(yǔ)句

格式:[Let]變量=表達(dá)式功能:計(jì)算右端的表達(dá)式,并把結(jié)果賦值給左端的變量。Let表示賦值,通常省略。符號(hào)“=”被稱(chēng)為賦值號(hào)。例如:

sum=99'把數(shù)值99賦給變量sum

txt="程序設(shè)計(jì)"

'把字符串賦給變量txt1

說(shuō)明:(1)表達(dá)式中的變量必須是賦過(guò)值的,否則變量的初值自動(dòng)取零值(變長(zhǎng)字符串變量取空字符)。例如:

a=1c=a+b+3

'b未賦過(guò)值,為0

執(zhí)行后,c值為4

(2)賦值語(yǔ)句跟數(shù)學(xué)中等式具有不同的含意,例如

x=x+1

表示把變量x的當(dāng)前值加上1后再將結(jié)果賦給變量“先讀后寫(xiě)”:讀出x的內(nèi)容→加1→寫(xiě)回x(覆蓋原有內(nèi)容)

(3)變量出現(xiàn)在賦值號(hào)的右邊和左邊,其用途是不相同的。出現(xiàn)在右邊表達(dá)式中時(shí),變量是參與運(yùn)算的元素(其值被讀出);出現(xiàn)在左邊時(shí),變量起存放表達(dá)式的值的作用(被賦值)。例如

x=2a=3x=2*a+5

當(dāng)執(zhí)行第3行語(yǔ)句“x=2*a+5”時(shí),將讀出變量a的值(即3),把該值乘2后加5,然后將結(jié)果(11)賦值給變量x。例7-6給定一個(gè)兩位數(shù),要求交換個(gè)位數(shù)和十位數(shù)的位置,然后把交換后的數(shù)顯示在網(wǎng)頁(yè)上。程序代碼如下:<HTML><HEAD><TITLE>例7-6</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>Dimx,a,b,c ‘定義4個(gè)變量

x=86 ‘給定一個(gè)2位數(shù)

a=Int(x/10) ‘取十位數(shù)

b=xMod10 ‘取個(gè)位數(shù)

c=b*10+a ‘個(gè)、十位交換

Document.Write("交換后的數(shù):"&c)

</SCRIPT></BODY></HTML>7.3程序流程控制

處理方法兩位數(shù)

ab

b②取出個(gè)位數(shù)

a①取出十位數(shù)

③組成新兩位數(shù):b*10+a2.Document.Write輸出方式Document(文檔)對(duì)象是Web瀏覽器中的一個(gè)重要對(duì)象,它代表當(dāng)前的整個(gè)網(wǎng)頁(yè)。使用Document對(duì)象的Write方法可以向網(wǎng)頁(yè)輸出信息。常用格式:

Document.Write(輸出項(xiàng))

例:

Document.Write(x)Document.Write("x="&x)Document.Write("x="&x&",y="&y)

3.消息對(duì)話框使用MsgBox函數(shù)可以產(chǎn)生一個(gè)消息對(duì)話框。一般格式如下:

MsgBox(輸出信息)

或MsgBox輸出信息

4.輸入對(duì)話框格式:InputBox(提示信息)

功能:產(chǎn)生一個(gè)輸入對(duì)話框,在對(duì)話框中顯示“提示信息”,并能接收用戶(hù)輸入的一行信息。例7-7使用InputBox函數(shù)輸入一個(gè)用戶(hù)名,然后通過(guò)MsgBox函數(shù)輸出信息。程序代碼如下:<HTML><HEAD><TITLE>例7-7</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>Dimnamename=InputBox("請(qǐng)輸入用戶(hù)名:")

MsgBox("尊敬的"&name&",歡迎登錄網(wǎng)站!")

</SCRIPT></BODY>

</HTML>7.3程序流程控制7.3.2選擇結(jié)構(gòu)在實(shí)際應(yīng)用中,有許多問(wèn)題需要判斷某些條件,根據(jù)判斷的結(jié)果決定程序的流程。使用選擇結(jié)構(gòu)可以實(shí)現(xiàn)這種處理。在VBScript中實(shí)現(xiàn)選擇結(jié)構(gòu)主要有兩類(lèi)語(yǔ)句:條件語(yǔ)句(if)和多分支語(yǔ)句(selectcase)。7.3程序流程控制1.If語(yǔ)句If語(yǔ)句有以下兩種形式:

(1)If…Then語(yǔ)句If…Then語(yǔ)句常用的語(yǔ)法格式:

If條件Then

語(yǔ)句塊

EndIf其中“條件”是一個(gè)比較表達(dá)式或邏輯表達(dá)式。功能:若“條件”成立(值為真),則執(zhí)行Then后面的“語(yǔ)句塊”(一個(gè)或多個(gè)語(yǔ)句),否則直接執(zhí)行“EndIf”的下一條語(yǔ)句。注意:EndIf表示語(yǔ)句的結(jié)束,輸入時(shí)End和If之間至少要留一個(gè)空格,否則程序語(yǔ)法檢查時(shí)會(huì)出錯(cuò)。其他語(yǔ)句如EndSuB、EndDo等,也必須按此處理。7.3程序流程控制

在IF條件中,有時(shí)需要判斷字符的大小。字符大小是按其ASCII碼值進(jìn)行比較的。

1.下列字符中,____字符最大,____字符最小。

A.1

B.ZC.*

D.a

2.假設(shè)a=1,b=2,下列邏輯表達(dá)式中其值為真的有

A.a<=0B.a>=0Andb>2C.a<=0Or"b">"ab"D.a>=0AndNotb<2E.2*a=-bOra>0Andb>0

請(qǐng)你給出答案想一想思考題最大字符:D最小字符:CFFTTT例7-8任給兩個(gè)數(shù),判斷其中較大的數(shù)并顯示出來(lái)。程序代碼如下:<HTML><HEAD><TITLE>例7-8</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>dimx,y,mx=Csng(InputBox(“請(qǐng)輸入第一個(gè)數(shù):”)) ‘轉(zhuǎn)換為單精度數(shù)

y=Csng(InputBox(“請(qǐng)輸入第二個(gè)數(shù):”))

m=xifm<ythen ‘兩數(shù)比較

m=y ‘最大數(shù)保存在m中

EndIfDocument.write(“最大的數(shù)是:”&m)</SCRIPT></BODY>

</HTML>7.3程序流程控制(2)If…Then…Else語(yǔ)句

格式:

If條件Then

語(yǔ)句塊1Else

語(yǔ)句塊2EndIf

功能:首先測(cè)試條件,如果條件成立(即值為真),則執(zhí)行Then后面的語(yǔ)句塊1,如果條件不成立(即值為假),則執(zhí)行Else后面的語(yǔ)句塊2。而在執(zhí)行Then或Else之后的語(yǔ)句塊后,會(huì)從EndIf之后的語(yǔ)句繼續(xù)執(zhí)行。真假ABEa=1:b=3

c=4*a-bIfa*2-1<=bThenb=2*b+cEndIfIfb-a>cThena=a+1c=c-1Elsea=a-1EndIf

下列程序段運(yùn)行后,a、b、c的值是?想一想思考題270(3)條件語(yǔ)句的嵌套在條件語(yǔ)句中,Then和Else后面的語(yǔ)句塊也可以包含另一個(gè)條件語(yǔ)句,這就形成條件語(yǔ)句的嵌套。使用這種結(jié)構(gòu),可以控制基于多種可能的程序流程。使用條件語(yǔ)句嵌套時(shí),一定要注意If與Else、If與EndIF的配對(duì)關(guān)系。在多個(gè)條件中進(jìn)行選擇的更好方法是使用SelectCase語(yǔ)句。7.3程序流程控制例7-10輸入某課程的百分制成績(jī),顯示出對(duì)應(yīng)的成績(jī)等級(jí)。例如輸入56,則顯示“不及格”。本例采用條件語(yǔ)句的嵌套,程序代碼如下:<SCRIPTTYPE="text/VBScript">Dimmarkmark=Csng(inputbox("輸入成績(jī):"))

Ifmark<60ThenMsgBox("不及格!")

ElseIfmark<80ThenMsgBox("及格!")

ElseIfmark<90thenMsgbox("良好!")

ElseMsgbox("優(yōu)秀!")

EndIfEndIfEndIf</SCRIPT>7.3程序流程控制2.SelectCase語(yǔ)句

SelectCase結(jié)構(gòu)提供了If…Then…Else結(jié)構(gòu)的一個(gè)變通形式,可以從多個(gè)語(yǔ)句塊中選擇執(zhí)行其中的一個(gè)。SelectCase語(yǔ)句提供的功能與If…Then…Else語(yǔ)句類(lèi)似,但是可以使代碼更加簡(jiǎn)練易讀。格式如下:SelectCase<表達(dá)式>

Case<結(jié)果1>

<語(yǔ)句1>

Case<結(jié)果2>

<語(yǔ)句2>

……

Case<結(jié)果n>

<語(yǔ)句n>

CaseElse

<語(yǔ)句n+1>EndSelect7.3程序流程控制說(shuō)明:首先對(duì)表達(dá)式進(jìn)行運(yùn)算。該運(yùn)算可以為數(shù)學(xué)運(yùn)算或字符串運(yùn)算。然后將運(yùn)算結(jié)果依次與結(jié)果1到結(jié)果n作比較,當(dāng)找到與計(jì)算結(jié)果相等的結(jié)果時(shí)就執(zhí)行該語(yǔ)句段,執(zhí)行完畢就跳出selectcase條件式。而當(dāng)運(yùn)算結(jié)果與所有的結(jié)果都不相等時(shí),就執(zhí)行caseelse后面的語(yǔ)句段n+1。例7-11根據(jù)輸入的數(shù)字,顯示相應(yīng)的學(xué)位。例如輸入1,則顯示“學(xué)士”。程序代碼如下:<HTML><HEAD><TITLE>例7-11</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>dimaa=int(inputbox("請(qǐng)輸入一個(gè)1--4的值:")) ‘轉(zhuǎn)換為整型數(shù)selectcaseacase1msgbox("學(xué)士")case2msgbox("碩士")case3msgbox("博士")case4msgbox("博士后")caseelsemsgbox("輸入錯(cuò)誤!")endselect</SCRIPT></BODY>

</HTML>7.3程序流程控制7.3.3循環(huán)結(jié)構(gòu)在程序設(shè)計(jì)中,經(jīng)常要對(duì)某一處理過(guò)程反復(fù)執(zhí)行多次,這就需要使用循環(huán)結(jié)構(gòu)。VBScript提供了多種設(shè)計(jì)循環(huán)結(jié)構(gòu)程序的語(yǔ)句,其中最常用的是For…Next和Do…Loop語(yǔ)句。

采用循環(huán)程序可以解決一些按一定規(guī)則重復(fù)執(zhí)行的問(wèn)題。循環(huán)是指在指定的條件下多次重復(fù)執(zhí)行一組語(yǔ)句,被重復(fù)執(zhí)行的一組語(yǔ)句稱(chēng)為循環(huán)體。7.3程序流程控制1.For…Next語(yǔ)句For…Next語(yǔ)句用于按指定的次數(shù)運(yùn)行語(yǔ)句塊。在循環(huán)中使用計(jì)數(shù)器變量,該變量的值隨每一次循環(huán)增加或減少。

For…Next語(yǔ)句的一般語(yǔ)法格式如下:

For循環(huán)變量=初值To終值[Step步長(zhǎng)值]循環(huán)體

Next7.3程序流程控制

功能:控制重復(fù)執(zhí)行循環(huán)體中的一組語(yǔ)句。本語(yǔ)句使用一個(gè)起計(jì)數(shù)器作用的循環(huán)變量,每重復(fù)執(zhí)行一次循環(huán)之后,循環(huán)變量就會(huì)按一定的步長(zhǎng)增加或者減少,直到超過(guò)規(guī)定的終值為止。初值、終值和步長(zhǎng)值都是數(shù)值表達(dá)式,步長(zhǎng)值可以是正數(shù)(稱(chēng)為遞增循環(huán)),也可以是負(fù)數(shù)(稱(chēng)為遞減循環(huán))。若步長(zhǎng)值為1,則Step1可以省略。(1)單重循環(huán)單重循環(huán)的執(zhí)行步驟如下:①保存初值、終值和步長(zhǎng)值②將初值賦給循環(huán)變量;③判斷循環(huán)變量值是否超過(guò)終值。若超過(guò)終值則退出循環(huán),執(zhí)行Next后面的語(yǔ)句;④執(zhí)行循環(huán)體;⑤遇到Next語(yǔ)句時(shí),修改循環(huán)變量,即把循環(huán)變量的當(dāng)前值加上步長(zhǎng)值后賦給循環(huán)變量;⑥轉(zhuǎn)③判斷循環(huán)條件及繼續(xù)執(zhí)行。(2)循環(huán)的嵌套循環(huán)的嵌套是指一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),又稱(chēng)多重循環(huán)。其執(zhí)行規(guī)則是,外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)就要從頭開(kāi)始執(zhí)行一輪。7.3程序流程控制例7-12在某次比賽中,有7個(gè)評(píng)委打分(由鍵盤(pán)輸入7個(gè)評(píng)委的分?jǐn)?shù)),去掉一個(gè)最高分,去掉一個(gè)最低分后,求出平均分為該參賽者的最終得分。程序代碼如下:<SCRIPTtype=“text/VBScript”>Dimn,s,max,min,avgs=0max=0 ‘賦初值min=100Fori=1To7 ‘輸入7個(gè)評(píng)分

n=Csng(InputBox("請(qǐng)輸入第"&i&"位評(píng)委的分?jǐn)?shù):"))‘轉(zhuǎn)換為單精度數(shù)

Ifn>maxThenmax=nIfn<minThenmin=ns=s+nNexts=s-max-min ‘去掉最高分、最低分avg=s/5 ‘計(jì)算平均值Document.Write("最高分是:"&max&“<BR>”)Document.Write("最低分是:"&min&“<BR>”)Document.Write("平均分是:"&avg&“<BR>”)</SCRIPT>7.3程序流程控制例7-13

制作“九九乘法表”。1)由于“九九乘法表”是一個(gè)9行9列的二維表,故可采用兩重循環(huán)進(jìn)行控制;2)假定i作為外循環(huán)變量、j作為內(nèi)循環(huán)變量,可利用內(nèi)循環(huán)變量作為被乘數(shù)、外循環(huán)變量作為乘數(shù),內(nèi)循環(huán)每執(zhí)行一輪換一次乘數(shù)。使用Document.Write("<BR>")控制換行。7.3程序流程控制<HTML><HEAD><TITLE>例7-13</TITLE></HEAD><BODY><pre><FONTFACE="黑體"SIZE="4"COLOR="red">

九九乘法表</FONT><BR><SCRIPTtype="text/VBScript">Dimi,jdocument.Write("<BR>")'換行

Fori=1To9 '九行

Forj=1To9'九列

ifi*j<=9thendocument.Write(j&"*"&i&"="&j*i&"")elsedocument.Write(j&"*"&i&"="&j*i&"")endifNextdocument.Write("<BR>")'換行

Next</SCRIPT></pre></BODY></HTML>7.3程序流程控制(3)利用循環(huán)實(shí)現(xiàn)累加和連乘的計(jì)算

在循環(huán)程序中,常用的算法是累加和連乘。累加(如s=s+k)是在原有和的基礎(chǔ)上每次再加一個(gè)數(shù),連乘(c=c*k)則是在原有積的基礎(chǔ)上每次再乘一個(gè)數(shù)。例7-14計(jì)算s=1+2+3+…+10的值。程序代碼如下:<HTML><HEAD><TITLE>例7-14</TITLE></HEAD><BODY><SCRIPTTYPE="text/VBScript">Dims,ks=0 '累加器清0

Fork=1To10s=s+k '累加

Next document.write("s="&s) </SCRIPT></BODY></HTML>如果要計(jì)算的是s=1+2+3+…+n,則程序結(jié)構(gòu)不用改變,只需將上述程序代碼中的終值10改為n就可以了。7.3程序流程控制

s=0'累加器初值為0

Fork=1To10s=s+k'累加器,在原有和的基礎(chǔ)上每次加一個(gè)數(shù)

NextDocument.Write("s="&s)

程序執(zhí)行結(jié)果是:s=55

分析例7-14累加器

s=s+k舊值。前n項(xiàng)之和新加的數(shù)k=1s←s+k01k=3s←s+k1+23k=2s←s+k12k=8s←s+k1+2+…78……例7-15計(jì)算s=1×2×3×…×10的值。程序代碼如下:<HTML><HEAD><TITLE>例7-15</TITLE></HEAD><BODY><SCRIPTTYPE="text/VBScript">Dimk,cc=1

'置初值

Fork=1To10c=c*k'累乘

Next document.write("c="&c) </SCRIPT></BODY></HTML>語(yǔ)句c=c*k起連乘的作用。在連乘之前,必須先將c置1(不能置0)。顯然,上述程序若把循環(huán)終值改為n,也可以計(jì)算n項(xiàng)連乘的情況。7.3程序流程控制

t=1'累乘器初值為1

Forc=1To10t=t*c'累乘器,在原有積的基礎(chǔ)上每次乘一個(gè)數(shù)

NextDocument.Write("T="&t)

程序執(zhí)行結(jié)果是:T=3628800

分析例7-15c=1t←t*c11c=3t←t*c1*23c=2t←t*c12c=8t←t*c1*2*…78……累乘器

t=t*k舊值。前n項(xiàng)之積新乘的數(shù)2.

Do…Loop語(yǔ)句可以使用Do…Loop語(yǔ)句多次(次數(shù)不定)運(yùn)行語(yǔ)句塊。當(dāng)條件為T(mén)rue時(shí)或條件變?yōu)門(mén)rue之前,重復(fù)執(zhí)行語(yǔ)句塊。

常用語(yǔ)法格式:DoWhile條件循環(huán)體Loop或:Do循環(huán)體LoopWhile條件7.3程序流程控制功能:根據(jù)條件重復(fù)執(zhí)行循環(huán)體中的一組語(yǔ)句。第一種語(yǔ)句格式首先判斷條件,如果條件為真,則執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。因此,如果一開(kāi)始條件就不滿(mǎn)足,循環(huán)體可能一次也不執(zhí)行;第二種語(yǔ)句格式先執(zhí)行循環(huán)體,然后再判斷條件,如果為真,則繼續(xù)執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。因此,第二種語(yǔ)句格式最少執(zhí)行循環(huán)體一次。例7-16檢查用戶(hù)密碼輸入是否正確。如果輸入錯(cuò)誤超過(guò)三次,將結(jié)束程序。代碼編寫(xiě)如下:<HTML><HEAD><TITLE>例7-16</TITLE></HEAD><BODY><SCRIPTtype=“text/VBScript”>DimPassword,CounterConstP=“123456”Counter=1DoWhileCounter<4Password=inputbox(“請(qǐng)輸入六位密碼:”,”密碼輸入”)

IfPassword=PthenMsgbox(“恭喜您,密碼正確!”)Exitdo

Else

Msgbox(“對(duì)不起。密碼錯(cuò)誤!”Counter=Counter+1

EndIfLoopIfCounter=4thenMsgBox"抱歉,您今日的輸入次數(shù)已達(dá)到3次,請(qǐng)明日再試,謝謝參與!"Endif

</SCRIPT></BODY>

</HTML>7.3程序流程控制VBScript程序設(shè)計(jì)概述7.1VBScript編程基礎(chǔ)7.2程序流程控制7.3過(guò)程7.4提綱事件處理7.5程序調(diào)試7.6過(guò)程是完成某種特殊功能的一組獨(dú)立的程序代碼。過(guò)程有兩個(gè)重要作用:一是把一個(gè)復(fù)雜的任務(wù)分解為若干個(gè)小任務(wù),可以用過(guò)程來(lái)表達(dá),從而使任務(wù)更易理解,更易實(shí)現(xiàn)和維護(hù);二是代碼重用,使同一段代碼可以重復(fù)使用。在VBScript中,過(guò)程分為兩類(lèi):Sub過(guò)程和Function過(guò)程。7.4.1Sub過(guò)程

Sub過(guò)程是包含在Sub和EndSub語(yǔ)句之間的一組VBScript語(yǔ)句。使用Sub過(guò)程的方式,首先是用Sub…EndSub定義過(guò)程,然后用Call語(yǔ)句調(diào)用該過(guò)程。7.4過(guò)程1.定義Sub過(guò)程定義Sub過(guò)程的語(yǔ)句格式如下:

Sub過(guò)程名([參數(shù)表])過(guò)程體

EndSub

Sub過(guò)程可以帶參數(shù)(也稱(chēng)形式參數(shù)或形參),參數(shù)的實(shí)際值(也稱(chēng)實(shí)際參數(shù)或?qū)崊ⅲ┯烧{(diào)用程序在調(diào)用過(guò)程時(shí)賦給。通過(guò)參數(shù),調(diào)用程序和被調(diào)用過(guò)程之間可以傳遞數(shù)據(jù)。如果Sub過(guò)程無(wú)任何參數(shù),Sub語(yǔ)句也必須包含空括號(hào)()。為使程序結(jié)構(gòu)清晰和便于調(diào)用,VBscript中通常把Sub過(guò)程安排在頭部(HEAD)中。7.4過(guò)程

對(duì)于重復(fù)使用的程序段,為了避免程序代碼的重復(fù),可以把這一程序段獨(dú)立出來(lái),編成一個(gè)過(guò)程。當(dāng)程序需要執(zhí)行這個(gè)任務(wù)時(shí),可使用調(diào)用語(yǔ)句(如Call)實(shí)行調(diào)用。子過(guò)程執(zhí)行完后,會(huì)返回調(diào)用程序中的調(diào)用語(yǔ)句Call的后續(xù)語(yǔ)句繼續(xù)執(zhí)行。

過(guò)程調(diào)用示例

調(diào)用過(guò)程

……CallSubA……CallSubA……過(guò)程SubA使用過(guò)程……程序段程序段……相同處理的程序段可編成獨(dú)立的過(guò)程(如SubA)2.調(diào)用Sub過(guò)程當(dāng)程序中需要執(zhí)行Sub過(guò)程時(shí),可以使用Call語(yǔ)句實(shí)現(xiàn)調(diào)用。如果Sub過(guò)程有參數(shù),必須輸入過(guò)程名及所有參數(shù)值,參數(shù)值之間使用逗號(hào)分隔,所有參數(shù)包含在括號(hào)之中。其語(yǔ)句格式如下:Call過(guò)程名([實(shí)參表])例7-17使用Sub過(guò)程實(shí)例。程序代碼如下:<HTML><HEAD><TITLE>例7-17</TITLE><SCRIPTtype=“text/VBScript”>

Subputname(name) '定義過(guò)程

Document.Write(name&“,”&“您好!<BR>”)

EndSub</SCRIPT></HEAD><BODY><SCRIPTtype=“text/VBScript”>Dimnn=InutBox(“請(qǐng)輸入姓名:”)Callputname(n) '調(diào)用過(guò)程

Document.Write(“祝您身體健康!”)

</SCRIPT></BODY>

</HTML>7.4過(guò)程7.4.2Function過(guò)程

Function過(guò)程是包含在Function和EndFunction語(yǔ)句之間的一組VBScript語(yǔ)句。Function過(guò)程與Sub過(guò)程類(lèi)似,但是Function過(guò)程可以返回值。即使Function過(guò)程無(wú)任何參數(shù),F(xiàn)unction語(yǔ)句也必須包含空括號(hào)()。Function過(guò)程通過(guò)函數(shù)名返回一個(gè)值,這個(gè)值是在過(guò)程的語(yǔ)句中賦給函數(shù)名的。

在下面的示例中,Celsius函數(shù)將華氏度換算為攝氏度。Sub過(guò)程ConvertTemp調(diào)用此函數(shù)時(shí),包含參數(shù)值的變量被傳遞給函數(shù)。換算結(jié)果返回到調(diào)用過(guò)程并顯示在消息框中。SubConvertTemp()temp=InputBox("請(qǐng)輸入華氏溫度。",1)

MsgBox"溫度為"&Celsius(temp)&"攝氏度。"EndSubFunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction

調(diào)用Function過(guò)程時(shí),函數(shù)名必須用在變量賦值語(yǔ)句的右端或表達(dá)式中。7.4過(guò)程VBScript程序設(shè)計(jì)概述7.1VBScript編程基礎(chǔ)7.2程序流程控制7.3過(guò)程7.4提綱事件處理7.5程序調(diào)試7.67.5.1事件的概念

事件(Event)是指由系統(tǒng)事先設(shè)定的、能被對(duì)象識(shí)別和響應(yīng)的動(dòng)作。當(dāng)對(duì)象發(fā)生了某個(gè)事件,就會(huì)執(zhí)行與此對(duì)象的這個(gè)事件相應(yīng)的代碼,這段代碼被稱(chēng)為“事件過(guò)程”。事件的發(fā)生多數(shù)與鼠標(biāo)的使用有關(guān),如單擊(Click)、雙擊(DbClick)、移動(dòng)到上面(MouseOver)、離開(kāi)(MouseOut)等。每個(gè)對(duì)象都有自己所能識(shí)別的事件。7.5事件處理VBScript是采用事件驅(qū)動(dòng)編程機(jī)制的語(yǔ)言。在事件驅(qū)動(dòng)編程中,程序員只要編寫(xiě)響應(yīng)用戶(hù)動(dòng)作的程序,如選擇命令、移動(dòng)鼠標(biāo)等,而不必考慮按精確次序執(zhí)行的每個(gè)步驟。在事件驅(qū)動(dòng)的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼片段。事件可以由用戶(hù)操作觸發(fā),也可以由來(lái)自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā),甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)所經(jīng)過(guò)的代碼的路徑都是不同的。在這種機(jī)制下,不必編寫(xiě)一個(gè)大型程序,而是建立一個(gè)由若干個(gè)微小程序組成的應(yīng)用程序,這些微小程序都可以由用戶(hù)啟動(dòng)的事件來(lái)激發(fā)。利用VBScript,可以方便地編寫(xiě)此類(lèi)應(yīng)用程序。7.5事件處理7.5.2鼠標(biāo)事件鼠標(biāo)事件是VBScript編程中最常用到的事件,多數(shù)控件都支持鼠標(biāo)操作,因此對(duì)鼠標(biāo)事件進(jìn)行編程是非常重要的。鼠標(biāo)事件主要有以下幾種:Click:?jiǎn)螕羰录磫螕羰髽?biāo)時(shí)發(fā)生的事件。DblClick:雙擊事件,即雙擊鼠標(biāo)時(shí)發(fā)生的事件。MouseDown:鼠標(biāo)按下時(shí)發(fā)生的事件。MouseUp:鼠標(biāo)抬起時(shí)發(fā)生的事件。MouseMove:鼠標(biāo)移動(dòng)時(shí)發(fā)生的事件,當(dāng)鼠標(biāo)移過(guò)此控件時(shí)就會(huì)觸發(fā)此事件,執(zhí)行其相應(yīng)代碼。鼠標(biāo)事件的發(fā)生順序是:(1)首先發(fā)生的是MouseMove事件,當(dāng)鼠標(biāo)移動(dòng)時(shí),將會(huì)連續(xù)觸發(fā)MoouseMove事件。(2)當(dāng)鼠標(biāo)按下時(shí)發(fā)生MouseDown事件。(3)鼠標(biāo)松開(kāi)時(shí)發(fā)生MouseUp事件。(4)如果按住的是鼠標(biāo)左鍵,則Click事件在MouseUp之后發(fā)生。在上面所列出的這些事件中,最常用到的是Click事件和DblClcik事件7.5事件處理7.5.3鍵盤(pán)事件鍵盤(pán)事件是在鍵盤(pán)的某個(gè)鍵按下去時(shí)觸發(fā)。除了鼠標(biāo)事件外,通常需要對(duì)鍵盤(pán)事件進(jìn)行編程。鍵盤(pán)事件主要有以下幾種:(1)KeyDown:當(dāng)鍵盤(pán)上某鍵被按下去時(shí)發(fā)生。(2)KeyUp:鍵盤(pán)上的鍵抬起來(lái)時(shí)發(fā)生。(3)KeyPree:此事件發(fā)生在鍵盤(pán)被按下后和字符被顯示出來(lái)之前發(fā)生。對(duì)于鍵盤(pán)事件,相對(duì)來(lái)說(shuō)KeyDown事件和KeyUp事件使用比較少,通常情況下對(duì)KeyPress事件編程較多,因?yàn)榇耸录⒅劓I盤(pán)被按下的是哪個(gè)鍵。KeyPress事件定義如下:PrivateSubTextl_KeyPress(KeyAsciiAsInteger)

語(yǔ)句塊EndSub其中,參數(shù)KeyAscii被定義為整型變量,表示被按下去鍵的Ascii碼,可以通過(guò)對(duì)變量KeyAscii值的判斷來(lái)執(zhí)行一些特殊操作。7.5事件處理7.5.4動(dòng)態(tài)網(wǎng)頁(yè)編程方法在VBScript中,通過(guò)調(diào)用事件過(guò)程可以實(shí)現(xiàn)網(wǎng)頁(yè)的動(dòng)態(tài)編程。調(diào)用事件過(guò)程的方法有多種,其中比較常用的一種,是通過(guò)過(guò)程名調(diào)用事件過(guò)程在Script標(biāo)記內(nèi)用Sub語(yǔ)句定義事件過(guò)程,并且要求過(guò)程名稱(chēng)必須由對(duì)象名稱(chēng)、下劃線(_)以及事件名稱(chēng)組合而成。例7-18編寫(xiě)程序,在網(wǎng)頁(yè)上設(shè)置2個(gè)命令按鈕和一個(gè)文字塊(即文字“VBScript程序設(shè)計(jì)”)。打開(kāi)網(wǎng)頁(yè)后,當(dāng)單擊“文字變大”命令按鈕時(shí),文字塊的字體變大;單擊“文字變小”命令按鈕時(shí),文字塊的字體變小。7.5事件處理<html><head><title>例7-18</title><SCRIPTTYPE="text/VBScript">subbutt1_OnClick() '命令按鈕butt1的單擊事件處理過(guò)程

Ifmyfont.size<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論