| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 664 人关注过本帖
标题:[原创]数组和函数的应用
只看楼主 加入收藏
huangyong
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖北武汉
等 级:版主
威 望:20
帖 子:603
专家分:7
注 册:2006-7-21
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
[原创]数组和函数的应用

一、数组:可储存连续的多项数据,而变量一般只能存放一个数据。
<% 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&"&nbsp;"&b&"&nbsp;"&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

搜索更多相关主题的帖子: 函数 应用 
2006-11-23 13:26
快速回复:[原创]数组和函数的应用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016488 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved