
ASP程序的设计.ppt
25页第三章、脚本语言第三章、脚本语言 VBScript VBScript3-1、服务器端脚本和客户端脚本 ASP程序由HTML标记、脚本语言和文本组成,其中的脚本语言可以用任何一种脚本VBScript和Jscript编写,本章主要讲述VBScript 编程时既可编写服务器端脚本也可编写客户端脚本,服务器端脚本在Web服务器上运行,客户端脚本由客户端的浏览器运行 1、服务器端脚本 在2-19.asp中,没有对客户端用户输入的数据进行验证,如果用户没有输入任何数据就点击提交,则服务器端将收到“空字符串”,此时可在2-19a.asp中加入服务器端脚本进行验证,见例3-1.asp和3-1a.asp 例3-1服务器端脚本〔3-1.asp) . .程序3-1.asp的处理程序:(3-1a.asp) 2、客户端脚本 上例中所讨论的脚本程序在服务器端运行,每次用户输入的数据都要传到服务器端,验证后再传回客户端,效率并不高,此时可采用客户端脚本,见下例 例3-2客户端脚本〔3-2.asp)程序3-2.asp的处理程序(3-2a.asp) 可见3-2a.asp程序与2-19a.asp程序的作用完全相同,但效率不同。
注:因为Netscape的Navigator不支持VBScript,编写VBScript客户端脚本时最好加上 ****. .3-23-2、常量〔数)、常量〔数) 一、数据的类型 数据是对客观事物及其属性的描述在计算机的程序语言中,身高、体重等可以参加算术运算的数据又叫“数值型数据”;姓名、籍贯等不参与算术运算的数据又叫“字符型数据”;出生年月又叫“日期型数据”;性别等只有两种结果的数据又称为“逻辑型数据” 计算机中数据的类型:计算机中数据的类型: 数值型数据字符型数据日期型数据辑型数据 整型 -32768-+32767之间的整数长整型 -2147483648-+2147483647之间的整数单精度数 又精度数 见P79页 例如:某人姓名张三、年龄19岁,身高1.78,体重200公斤,这里的张三,19,1.78,200就是数据 . .二、数据的表示方法 ①数值型数据直接书写:(可用前缀来区分进制) 如:100 十进制 &H64 十六进制 &0144 八进制②字符型数据〔字符串〕必须用单引号或双引号括起来: 如:“西双版纳职业技术学院” ③日期型数据必须用一对#号括起来: 如:#9/21/2019 8:00:01# . .④逻辑型数据只有真True或假False两种取值 在VBScript中,只有一种数据类型,即Variant类型。
三、常量 在程序运行期间,值不发生变化的量,叫常量 如:<%const PI=3.1415 %>定义常量后,在程序中的任何地方可用PI来引用3.14159. .3-33-3、变量、变量 一、概念 在程序运行期间,值会发生变化的量,叫变量 变量常用来临时存储数据,在VBScript中变量可以未经声明就使用,且不区分大小写,因此VBScript又被称为弱类型语言见下列程序: 例2-19a.asp 这样做的好处方便了程序员,但如果程序中变量较多时,程序员自己可能也不知道变量中到底存储了什么值,给今后阅读程序增加了困难因而,建议养成良好的习惯,使用变量前先声明,后使用 二、变量的声明 . .①变量的声明用:DIM 语句,如:DIM X②声明多个变量时,用逗号分隔如:Dim x,y,z ③数组变量 具有相同变量名的一组下标变量,称为数组 声明数组变量时,变量名后带括号() 如:下例声明一个包含11个元素的一维数组:Dim A(10)VBScrript的数组下标总是从0开始Dim A(10)相当于定义了: A(0)A(0)、、A A〔〔1 1)、)、A(2)A(2)、、A A〔〔3 3)、)、A(4)A(4)、、A A〔〔5 5)、)、A(6)A(6)、、A A〔〔7 7)、)、A(8)A(8)、、A A〔〔9 9)、)、A(10)A(10)共十一个元素〔下共十一个元素〔下标变标变量),下量),下标标用来指明数用来指明数组组元素的位置。
元素的位置 * *. .用一个下用一个下标标就能确定一个元素在数就能确定一个元素在数组组中的位置,中的位置,则该则该数数组组称称为为一一维维数数组组 右下右下图为图为一一维维数数组组A(10)A(10)的元素在内存中的元素在内存中获获得的空得的空间间 由此可见,声明数组时不要太大,够用即可,否则浪费内存 A(0) A(0) A(1) A(1) A(2) A(2) … … A(10) A(10) 上界下界. .数数组组并不并不仅仅限于一限于一维维,可以是二,可以是二维维、三、三维维、、…………,声明多,声明多维维数数组组时时用逗号分隔括号中每个表示数用逗号分隔括号中每个表示数组组大小的数字如:下例声明了大小的数字如:下例声明了一个二一个二维维数数组组:: Dim B(1,2) Dim B(1,2) 相当于声明了以下六个元素:相当于声明了以下六个元素:B(0,0) B(0,1) B(0,2)B(0,0) B(0,1) B(0,2)B(1,0) B(1,1) B(1,2) B(1,0) B(1,1) B(1,2) 三、变量命名规则 右图为二维数组B(1,2)的元素在内存中获得的空间。
B(0,0) B(0,0) B(0,1) B(0,1) B(0,2) B(0,2) B(1,0) B(1,0) B(1,1) B(1,1) B(1,2) B(1,2) ①以字母开头②变量名长度不得超过255个字符③中间不能有空格和句号 . .上例中可加入: dim x '存放姓名dim y '存放密码 3-4、运算符 表示运算关系的符号 1、 算术运算符+(加) -(减) *(乘) /(除) MOD〔取模) ^(乘方) 注:算术运算符的运算优先顺序与数学中的相同:()注:算术运算符的运算优先顺序与数学中的相同:() ^ * / Mod + - ^ * / Mod + -四、变量的赋值 在在VBScriptVBScript中,用中,用赋值赋值号号““= =””对变对变量量赋值赋值,如,如X=1X=1,,y="y="张张金金龙龙" " ****. .2 2、关系运算符、关系运算符 > >< <>=>=<=<=<> <> 或或 ! ! 注:关系运算符的注:关系运算符的结结果只能是果只能是逻辑逻辑型的型的值值,即,即 T T 或或 F F,,关系运算一般用作程序中的关系运算一般用作程序中的““条件条件”” 如:如: <% <% x=2 x=2 y=3 y=3 z=5 z=5 if z>x+y then if z>x+y then response.write( response.write(““TrueTrue””) ) else else response.write( response.write(““FalseFalse””) ) end if end if %> %>此此时时的屏幕的屏幕输输出出结结果是:果是:True True 而不是而不是 False False演示程序演示程序3-3.asp 3-3.asp . .3 3、、连连接字符串运算符接字符串运算符 & & 和和 + + 例如:例如:<%<%dim strX,strY,strZdim strX,strY,strZstrX="strX="西双版纳西双版纳" "strY="strY="职业技术学院职业技术学院" " strZ="strZ="单位:单位:" + strX & strY " + strX & strY %>%>4 4、、逻辑逻辑运算符运算符 . .not not (非)(非) and and (与)(与) or or (或)(或) XOR( XOR(异或异或) EQV) EQV〔同或)〔同或) ((1 1〕逻辑非〕逻辑非 not x not x当逻当逻X X的值为真时,结果为假;当的值为真时,结果为假;当X X的值为假时,结果为真。
的值为假时,结果为真如:如: 3<9-5 3<9-5 (真)(真) NOT 3<9-5 ( NOT 3<9-5 (假假) ) ((2 2〕逻辑与〕逻辑与 x and y x and y仅当仅当x x和和y y的值同时为真时,结果才为真;否则为假的值同时为真时,结果才为真;否则为假 如:如: 9>6 9>6 (真)(真) 0>-1 0>-1 (真)(真) 9>6 and 0>-1 9>6 and 0>-1 (真)(真) . .((3 3〕逻辑或〕逻辑或 x or y x or y 仅当量仅当量x x和和y y的值同时为假时,结果才为假;否则为真的值同时为假时,结果才为假;否则为真。
如:如: 9<6 9<6 (假)(假) 0<-1 0<-1 (假)(假)9<6 or 0<-1 9<6 or 0<-1 (假)(假) ““或或””、、““与与””、、““非〞真值表非〞真值表X Xy yNot xNot xX and yX and yX or yX or y0 00 01 10 00 00 01 11 10 01 11 10 00 00 01 11 11 10 01 11 1. .((4 4〕〕逻辑逻辑异或异或 x XOR y x XOR y 仅当仅当x x和和y y的值不同时,结果为真;否则为假的值不同时,结果为真;否则为假 如:如: 9>6 9>6 (真)(真) 0<-1 0<-1 (假)(假)9>6 XOR 0<-1 9>6 XOR 0<-1 (真)(真)((5 5〕逻辑同或〕逻辑同或 x EQV y x EQV y仅当仅当x x和和y y的值相同时,结果为真;否则为假。
的值相同时,结果为真;否则为假如:如: 9>6 9>6 (真)(真) 0<-1 0<-1 (假)(假)9>6 EQV 0<-1 9>6 EQV 0<-1 (假)(假) . .““异或异或””、、““同或〞真值表同或〞真值表X Xy yX xor yX xor yX Eqv yX Eqv y0 00 00 01 10 01 11 10 01 10 01 10 01 11 10 01 1. .3-53-5、程序的三种结构、程序的三种结构 脚本程序有三种基本的结构:顺序结构、分支结构和循环结构脚本程序有三种基本的结构:顺序结构、分支结构和循环结构 一、顺序结构一、顺序结构默认情况下,脚本中的代码总是按书写的顺序执行,此种程序的结构称为顺序结构默认情况下,脚本中的代码总是按书写的顺序执行,此种程序的结构称为顺序结构 例例3-4顺序程序结构〔顺序程序结构〔3-4.asp))二、分支二、分支结结构构 程序在执行过程中产生不同走向的结构,叫分支结构。
程序在执行过程中产生不同走向的结构,叫分支结构在在VBScript中,实现分支的语句有:条件分支和选择分支两种中,实现分支的语句有:条件分支和选择分支两种 (一〕条件分支(一〕条件分支1、语法格式、语法格式2 2、作用、作用 先先测测试试< <条条件件1>1>,,如如果果为为假假,,再再测测试试< <条条件件2>2>,,依依次次类类推推,,直直到到找找到到一一个个为为真真的的条条件件当当找找到到一一个个为为真真条条件件时时,,就就执执行行相相应应的的语语句句块块,,然然后后执执行行end end ifif后的语句;如果条件都不为真,则执行后的语句;如果条件都不为真,则执行elseelse后的语句块后的语句块 . .例例3-5条件分支结构〔条件分支结构〔3-5.asp))( (二二) )、选择分支、选择分支 1 1、语法格式、语法格式<%<%select case select case 表达式表达式 case case 值值1 1 < <语句块语句块1>1> case case值值2 2 < <语句块语句块2>2> …… case else case else < <语句块语句块n>n> end select end select%>%> 2 2、作用、作用 先先计计算算表表达达式式的的值值,,然然后后与与每每个个casecase值值比比较较。
若若相相等等,,就就执执行行与与该该casecase关关联联的的语语句句块块当当找找到到一一个个为为真真条条件件时时,,就就执执行行相相应应的的语语句句块块,,然然后后执行执行end selectend select后的语句后的语句 或者或者: :(根据表达式的值,从多个(根据表达式的值,从多个casecase语句中选择语句中选择一个符合条件的一个符合条件的casecase语句执行语句执行 * *. .例例3-6选择分支结构〔选择分支结构〔3-6.asp)) x x<2000 0.95x 2000<=x<3000y= 0.8x 3000<=x<4000 0.5x x>=4000 编编程程序序要要求求::屏屏幕幕提提示示用用户户输输入入x的的值值,,传传到到服服务务器器后后,,计计算算y值值,,然然后后传传回回给给用用户程序如下:程序如下:3-6.asp 程序程序3-6.asp3-6.asp的服的服务务器器处处理程序理程序3-6a.asp3-6a.asp:: 说说明:分支明:分支语语句可以嵌套,嵌套的句可以嵌套,嵌套的层层数没有限定。
数没有限定例如例如 If … thenIf … then If … then If … then … … end if end ifelseelse If … then If … then … … end if end ifend ifend if三、循三、循环结环结构构 程序在运行程序在运行过过程中,有程中,有时时需要重复需要重复执执行某段行某段语语句句块块,使程序在某一局部出,使程序在某一局部出现现循循环环,,这这就需要就需要能能产产生循生循环环的的语语句 . .VBScriptVBScript提供了以下提供了以下实现实现循循环环的的语语句:句:forfor循循环环,,dodo循循环环以下介绍绍几个它几个它们们的的变变种 ( (一一) )、、for/nextfor/next步步长长循循环语环语句句 1 1、格式:、格式:For
后的语句其中:其中:< <步长值步长值> >可正可负可正可负 Exit for Exit for 用于退出用于退出forfor循环 例例3-7 3-7 计算计算y=1+3+5+y=1+3+5+……+99 +99 用用For/nextFor/next循环语句实现〔循环语句实现〔3-7.asp3-7.asp):): ( (二二) )、、for/eachfor/each循循环语环语句句 . .1 1、格式:、格式:For each For each 元素元素 in in 数组数组( (对象集合对象集合) )< <循环体循环体> >[exit for][exit for]Next Next 2 2、功能、功能 对数组中的每一个元素重执行对数组中的每一个元素重执行< <循环体循环体> > 如:假设数组如:假设数组A A〔〔5 5〕中存放了〕中存放了0,1,3,5,7,90,1,3,5,7,9的值,则可用以下语句输出的值,则可用以下语句输出<%<%I=0I=0for each I in A(5)for each I in A(5)response.write A(I)response.write A(I)nextnext%>%>说说明:循明:循环语环语句可以嵌套,嵌套的句可以嵌套,嵌套的层层数没有限定,随着嵌套数没有限定,随着嵌套层层数的加大,程序运行速数的加大,程序运行速度会度会变变慢。
慢 for I… for I… for J… for J… … … next nextnextnext如果不知道循环终值时,用如果不知道循环终值时,用ForFor循环较为方便循环较为方便 .( (三三) )、、Do while/loopDo while/loop循环循环1 1、格式:、格式:Do while
说明:这种形式保证说明:这种形式保证< <循环体循环体> >至少执行一次至少执行一次 . .例例3-9 73-9 7的多少次方可超过的多少次方可超过7845 7845 <% language="VBScript" %><% language="VBScript" %>
成过程,在需要时调用 过过程是用来程是用来执执行特定任行特定任务务的程序段代的程序段代码码 (一)、过程的命名(一)、过程的命名sub sub 过程名过程名( (形参表形参表) ) 代码段代码段 end sub end sub 注:当要注:当要传递传递的参数的参数为为多个多个时时,用逗号分隔,用逗号分隔 (二)、过程的调用(二)、过程的调用方法方法1 1::call call 过程名过程名( (实参表实参表) )方法方法2 2:过程名:过程名 实参表实参表 例如:例如:3-10.asp 3-10.asp 二、函数二、函数Function Function 与与过过程一程一样样,函数也是具有一定功能的一段代,函数也是具有一定功能的一段代码码,但,但调调用用时时函数将返回一个函数将返回一个值值 . .(一)、函数的命名(一)、函数的命名Function Function 函数名函数名( (形参表形参表) ) 代码段代码段 函数名函数名= =表达式表达式 end Function end Function (二)、函数的调用(二)、函数的调用方法方法1 1::call call 函数名函数名( (实参表实参表) ) 此时函数无返回值此时函数无返回值 方法方法2 2:变量:变量= =函数名函数名( (实参表实参表) ) 例:例:3-11.asp3-11.asp三、三、VBScriptVBScript的内置的内置标标准函数准函数 为为方便用方便用户户,,VBScriptVBScript提供了很多函数,在使用提供了很多函数,在使用时时只需只需调调用即可。
用即可见见P95-98P95-98或者或者P289-302P289-302 例:例:3-12.asp 3-12.asp ****. .。












