一、数组:可储存连续的多项数据,而变量一般只能存放一个数据。
<% x=array(168,333,432)
Response.Write x(2) '需要输出数组的下标才正常.
%>
注:数组的数据顺序从0开始起算的.在术语中,数组中的每一项数据叫做元素,而用来指定某一个元素的0,1,2....顺序叫做下标.
★Ubound函数的使用
说明:Ubound函数是VB script 所提供的内建函数,用途是读取数组中最大的下标,使用时传入数组的名称.例:Ubound(x)表示读取x数组中最大的下标.
★redim 建立数组的语句
使用格式:
redim 数组名(数组下标的最大值)
注:新建的数组所有元素都等于Empty
实例:小学三年级一班有20位同学,老师想把ASP成绩公布于score.ASP网页上,让同学们自行上网查询,查询方法:
http://127.0.0.1/score.asp?num=学号
(注:20位同学学号:3101-3120,分数自定)
<%
num=array("3101","3102","3103","3104","3105","3106","3107","3108","3109","3110","3111","3112","3113","3114","3115","3116","3117","3118","3119","3120")
score=array("80","90","50","60","70","65","99","100","20","0","70","76","54","67","89","76","53","90","64","94")
a=Request("b")
for i=0 to ubound(num)
if a=num(i) then
Response.Write "学号:"&num(i)&"<br>"
Response.Write "成绩:"&score(i)&"<br>"
exit for '退出FOR....NEXT循环
end if
next
%>
二.二维数组的使用
除了一一排列数据外,数组也可存放表格式的数据
redim x(4,3) 注:下标也从零开始计算.
4代表列下标 3表示行下标
<%
redim a(4,3)
a(0,0)=232
a(1,0)=435
a(2,0)=23324
a(3,0)=546
a(4,0)=6574
a(0,1)=345
a(1,1)=56768
a(2,1)=234
a(3,1)=243557
a(4,1)=21336768
for i=0 to 4
for j=0 to 3
Response.Write "("&i&"),("&j&")="
Response.Write a(i,j)&"<br>"
next
next
%>
三.子程序
用来封装语句区段的程序单元,而被封装的子程序里的语句区段,并不属于任何语句,是个别独立的,但这些独立的程序单元却可以给其它程序单元单独使用,因些我们会把经常重复撰写的代码写成子程序,以节省程序开发的时间.
sub 程序名称
封装语句区段的程序代码块
end sub
封装后IIS不直接编译子程序的,需要通知程序名称才能调用出来.
调用的方法是:call 程序名称 注:call可以省略.
注:子程序具有返回的特性,所以我们可以把子程序放在任意位置,而不受影响.
实例:做一个分数检查程序,如大于60分即及格,小于60分不及格 大于等于50分补考。
<%
name1="古杨"
score=45
sub pass
Response.Write(name1&",")
if score>=60 then
Response.Write("您及格了!")
elseif score>=50 then
Response.Write("您还有机会补考!")
else
Response.Write("你不及格了!")
end if
end sub
call pass
Response.Write("<hr>")
%>
★带有参数的子程序 (不用掌握)
我们可以把有参数的子程序视为“插卡式的电子游戏机”,其中定义在子程序的参数就好像电子游戏机的“插条”,而调用端所传入的参数则是“游戏卡”。
使用格式如下:
sub 子程序名称(参数一,参数二等)
调用子程序并传入参数的方法:
子程序名称 参数一,参数二等
四.函数
函数是另一种特殊形式的子程序.它也包括我们上次讲的SUB子程序所有的功能.
函数和子程序的区别:函数包括子程序所有的功能,而且它增加了"返回值"的功能.
使用格式:
Function 函数名称(参数一,参数二等) '参数是可以省略的.
封装语句区段的程序代码块
end function
注:如果不需要返回值,则不需要加括号:Function 函数名称 参数一,参数二等,如果要加括号,前面一定要加call
调用函数并传入参数的方法:
函数名称 参数一,参数二等
★设置返回值的语法:
在函数结束执行之前,执行以下语句:
函数名称=欲返回的值
例:写F(x)=x^2+2*x+1函数
<%
function f(x)
f=x^2+2*x+1
end function
a=f(1)
Response.Write(a)
%>
例:sum(n)=1+2+3+4+.....+N的函数
<%
function sum(n)
sum=0
for i=1 to n
sum=sum+i
next
end function
a=sum(200)
Response.Write a
%>
注:掌握包含文件的方法
Dim 语句与局部变量(只在部分代码里有效):主要应用在公共函数或公共文件里面的变量
注:我们在网页上建的变量默认为全局变量,它的生命周期是在当前网页执行完之前都有效.
附:定义常量 Const 可固定变量的值,不允许使用表达式。
附:option explicit 可强制所有的变量必须要事先声明,否则会提示报错,方便程序调制!但要求必须在所有输出代码之前使用,否则会出错。
<%
i=10 '默认是全局变量
a=sum(15)
Response.Write a&"<p>"
Response.Write i&"<p>"
function sum(n)
dim i '定义i为局部变量,也就是说只在函数内有效,使得程序更独立!
sum=0
for i=1 to n
sum=sum+i
next
end function
%>
注:定义局部变量须知:
1、函数名称不能定义
2、参数名称也不能定义
3、内建或自定义函数名和关键字都不能定义
★VBScript内建函数的实际使用
1.字符串类型函数
●用ucase/lcase函数避免大小写问题
●用trim函数除去不必要的空格 注:只去掉字符串前面的空格
●用split函数与重复性数据的输入 注:可把重复性数据分离出来并自动转换为数组
●用replace函数与字符串的替换
●instr函数与字符串的比较 注:可比较两个字符串,返回相同字母所在的位置(数值)。
例:http://localhost/functionss.asp?b=50&b=60 注:有两个重复的参数,不同的值。
split 函数的使用:
<%
a=Trim(Request.QueryString("b")) 'a里面的值是 123,456,789
a1=split(a,",") '可在A变量里分出单独的数据出来,自动转换成数组
Response.Write a
Response.Write "<br>"
Response.Write a1(0)
Response.Write "<br>"
Response.Write a1(1)
%>
用replace函数与字符串的替换
格式:replace(变量,变量里要替换的字符串,替换的结果字符串)
<%
a="hello! how are you?<br> very good!"
b=replace(a,"<br>","<p>")
c=replace(a,"good","bad")
Response.Write(a)
Response.Write("<p>")
Response.Write(b)
Response.Write("<p>")
Response.Write(c)
%>
2.数值类型函数
★formatnumber函数和数值的格式输出 作用:帮助我们格式化数据。
★利用CSNG/CDBL转换数值输出 附:cint也是可以把字符串或数值转换成整数类型的实数
★RND函数与随机游戏
应用格式:
x=formatnumber(数值,所取小数点位数) 不影响运算,依然是实数类型。
注:CSNG和CDBL都把字符串或数值传换成实数.CSNG转换的数值只有7位,而CDBL转换的数值有15位.
<%
a="40"
b="50"
x=cdbl(a)+cdbl(b)
Response.Write(x)
%>
RND函数的原理:它只能产生大于等于零并小于1的实数.
<%
a=rnd() 'rnd函数不需要写入参数.0<=rnd()<1
Response.Write(a)
%>
为了让它产生从0到N的随机整数,代码如下:
fix(rnd*N) '它可产生从0到N-1的随机整数.
fix函数的作用是去掉小数点留下整数.
但RND函数产生的变化是有规律的,需要在随机函数调用之前加以下语句完善:
randomize
<%
randomize
a=fix(rnd*6)
Response.Write(a)
%>
上机实习作业:随机骰子(用图片来代替数字显示)
<%
randomize
a=fix(rnd*6)+1
b=fix(rnd*6)+1
c=fix(rnd*6)+1
Response.Write(a&" "&b&" "&c&"<p>")
Response.Write("<hr>您掷出的点数是:"&a+b+c)
%>
3.日期时间类型函数
◆用year,month及day函数自设日期格式
◆用hour,minute及second函数自设时间格式
◆用dateadd函数计算使用期限
◆用datediff函数计算时间差
a=now() 返回年月日小时分钟钞
b=date() 返回年月日
注:在应用日期时间类型时,需要在函数参数里加上date
date函数用来表示年月日.而now表示年月日小时分秒.
可直接使用,如:Response.Write date
如果要提取日期的某一部分,举例如:year(date) '则提取年份出来.
<%
a=now
y=year(a)
m=month(a)
d=day(a)
h=hour(a)
mm=minute(a)
s=second(a)
Response.Write y&"年"&m&"月"&d&"日 "&h&"小时"&mm&"分钟"&s&"秒"
%>
dateadd的使用格式:dateadd("d",60,date) dateadd(时间单位,时间间隔,当前时间)
<%
mydate=#2004/12/06# '用#号键来表示里面的数字是时间
a=dateadd("d",5,mydate)
Response.Write "谢谢您的使用,您可以使用到"&a
%>
datediff的使用格式:datediff("d",now,"未来时间")
其它常用函数 (学会举一反三)如LEN函数的应用:可判断字符串的长度(利用函数来完成) 提取函数:left函数上机思
str=strleft(content,20)
response.write str