国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 媒體動畫 > 正文

Authorware基礎(chǔ)教程:authorware7程序設(shè)計基本的教學文章--運用列表

2024-09-08 19:26:44
字體:
供稿:網(wǎng)友

3.3  使用列表

列表變量是authorware中最為靈活的變量,它用于存儲一組相關(guān)的數(shù)據(jù),同時并不要求這些數(shù)據(jù)都屬于同一類型。利用authorware提供的列表處理函數(shù),可以很方便地對列表中的數(shù)據(jù)進行管理。列表可容納的最大元素數(shù)目是32 767。

3.3.1  線性列表

線性列表的所有元素都被包圍在一對方括號([ ])中,每個元素是一個單獨的值,元素之間由逗號進行分隔。

3.3.1.1  創(chuàng)建

可以通過以下幾種方式,創(chuàng)建列表型變量。

1.通過賦值語句

可以使用賦值語句創(chuàng)建一個列表型變量,例如程序語句:

linearlist:= [ ]

產(chǎn)生一個空白的名為linearlist的線性列表,而程序語句:

linearlist:=[ "a", "u", "t", "h", "o", "r"]

產(chǎn)生一個包含有6個字符型元素的線性列表。

2.通過array()

系統(tǒng)函數(shù)array用于快速創(chuàng)建具有多個相同元素的列表。例如程序語句:

linearlist:=array(0, 6)

產(chǎn)生一個具有6個元素的線性列表,即[0, 0, 0, 0, 0, 0]。

3.通過list()

系統(tǒng)函數(shù)list可以將字符串形式的數(shù)值序列轉(zhuǎn)換為列表。例如程序語句:

linearlist:=list("[1,2,3,4,5,6]")

將產(chǎn)生列表[1, 2, 3, 4, 5, 6]。這一函數(shù)通常用于將來自于程序外部(例如文本文件、數(shù)據(jù)庫等)的數(shù)據(jù)轉(zhuǎn)換為列表。

3.3.1.2  訪問列表中的元素

線性列表按照從左到右的順序標識其中每一個元素,因此可以使用下標(元素的存儲位置)對線性列表中的數(shù)據(jù)進行訪問,例如程序語句:

linearlist:=[ "a", "u", "t", "h", "o", "r"]

myvariable:= linearlist[1]

將變量myvariable賦值為"a",而程序語句:

linearlist[1]:= "a"

將線性列表linearlist的第一個元素賦值為"a",此時變量linearlist的值為[ "a", "u", "t", "h", "o", "r"]。

使用變量和循環(huán)語句控制列表的下標,可以實現(xiàn)遍歷列表中每個元素的目的。例如以下代碼實現(xiàn)對列表中所有元素求和的功能:

thesum:=0

linearlist:=[1997,1998,1999,2000,2001,2002,2003,2004,2005]

repeat with i:=1 to listcount(linearlist)

   thesum:=thesum+linearlist[i]

end repeat

坐標變量和矩形變量是兩類特殊的線性列表,其中包含的坐標也可以通過下標進行訪問。以下程序語句創(chuàng)建了一個坐標變量mypoint和一個矩形變量myrect:

mypoint:= point(100, 120)

myrect:= rect(point(10, 20), point( 30, 40))

mypoint的橫坐標以mypoint[1]表示,而myrect左上角的縱坐標以myrect[2]表示。

除了使用下標,還可以通過函數(shù)valueatindex(anylist, index )對線性列表中的元素進行訪問,該函數(shù)返回線性列表中指定位置處的元素值,如果參數(shù)anylist不是一個列表,或者索引號index小于1或不存在,該函數(shù)返回0。例如

linearlist:=[ "a", "u", "t", "h", "o", "r"]

myvariable:= valueatindex(linearlist, 3 )

獲得第3個元素的值"t",而valueatindex(myrect, 3)返回矩形右下角的橫坐標30。

3.3.1.3  增加、刪除元素

通過賦值語句或函數(shù)addlinear(linearlist, value [, index])可以向線性列表中增加新的元素,例如賦值語句

linearlist:=[ "a", "u", "t", "h", "o", "r"]

linearlist[7]:= "w"

linearlist[8]:= "a"

向線性列表linearlist中增加兩個元素,此時變量linearlist的值為["a", "u", "t", "h", "o", "r", "w", "a"]。如果元素下標跳躍式增加,則被忽略的元素自動被賦值為0。例如賦值語句

linearlist[10]:= "e"

使變量linearlist的值變?yōu)閇 "a", "u", "t", "h", "o", "r", "w", "a", 0, "e"]

函數(shù)addlinear(linearlist, value [, index])用于向列表linearlist中指定位置處(通過索引參數(shù)index指定)插入值為value的元素。函數(shù)deleteatindex(anylist, index)用于刪除列表中指定位置處的元素。函數(shù)findvalue(anylist, value [, index])用于在列表中查找具有指定值的元素。使用以下代碼,可以將linearlist中無用的元素0替換為"r":

index:=findvalue(linearlist, 0 )

deleteatindex( linearlist, index)

addlinear(linearlist, "r", index)

使變量linearlist的值變?yōu)閇"a", "u", "t", "h", "o", "r", "w", "a", "r", "e"]。替換指定元素的功能也可以通過函數(shù)調(diào)用

setatindex(linearlist, "r", index)

或者賦值語句

    linearlist[index]:= "r"

來實現(xiàn)。

如果省略索引參數(shù),則對于未排序的線性列表,該函數(shù)向線性列表的末尾添加新的元素,而對于已排序的線性列表,authorware將根據(jù)value的值,自動將新的元素插入到線性列表中合適的位置,從而保持元素間的排序方式。如果索引跳躍式增加,則被忽略的元素自動被賦值為0。

3.3.1.4  排序

使用函數(shù)sortbyvalue(anylist1 [, anylist2,..., anylist10] [, order])可以按照元素的值對列表進行排序并標上排序標記。設(shè)置order為true時按升序排序,否則按照降序排序。如果需要對單個列表進行排序,例如對線性列表linearlist進行排序,可以按照如下方式使用排序函數(shù)

linearlist:= ["a", "u", "t", "h", "o", "r", "w", "a", "r", "e"]

sortbyvalue(linearlist, true)

結(jié)果是將linearlist的值轉(zhuǎn)變?yōu)閇"a", "a", "e", "h", "o", "r", "r", "t", "u", "w"]。

該函數(shù)可以按照參數(shù)中第一個列表的順序排列多個列表,即將相關(guān)的多個列表以第一個列表為基準同時進行排序。例如,現(xiàn)有兩個線性列表,分別記錄了三種商品的名稱和對應(yīng)的價格:

lista:=["ball", "apple", "cat"]

listb:=[30, 10, 20]

使用sortbyvalue(lista ,listb, true)可以按照商品名稱進行升序排序,此時lisrta= ["apple", "ball", "cat"],listb= [10, 30, 20]。

使用sortbyvalue(listb, lista, false)可以按照商品價格進行降序排序,此時listb= [30, 20, 10],lisrta= ["ball", "cat", "apple"]。

從上面的排序結(jié)果可知,在以某一個列表為基準進行排序的同時,維持了數(shù)據(jù)間的相對關(guān)系,即同一種商品的名稱和價格始終相對應(yīng)。如果多個列表的元素數(shù)目不一致,該函數(shù)不進行排序。

列表在排序之后,被authorware標記為已排序,此后如果對列表進行了改變元素順序的操作,比如使用函數(shù)addlinear( )向列表中指定位置處插入新的元素,列表就被重新標記為未排序。

3.3.2  屬性列表

屬性列表用于存儲屬性和對應(yīng)的屬性值,其中每個元素由一個屬性標識符及其對應(yīng)的屬性值構(gòu)成,屬性標識符和屬性值之間由冒號進行分隔。例如[#type:#text, #rect:rect(142, 76, 272, 92), #text:"hello, welcome."]就是用于描述一個文本對象的屬性列表。

3.3.2.1  創(chuàng)建

可以使用賦值語句創(chuàng)建一個屬性列表,例如程序語句

proplist:= [:]

產(chǎn)生一個空白的名為proplist的屬性列表,而程序語句

proplist:= [#a:1, #c:2, #b:3]

產(chǎn)生一個包含有3個元素的屬性列表。

3.3.2.2  訪問列表中的元素

屬性列表以屬性標識符標識其中每一個元素。因此可以使用屬性標識符作為下標,訪問不同屬性對應(yīng)的屬性值,例如程序語句

proplist:= [#a:1, #c:2, #b:3]

myvariable:= proplist[#a]

將變量myvariable賦值為1,而程序語句

proplist[#b]:= 4

將屬性列表proplist中第3個元素(即由#b標識的元素)的屬性值設(shè)置為4,此時變量proplist的值為[#a:1, #c:2, #b:4]。

函數(shù)propertyatindex(proplist, index)可以獲得屬性列表中指定索引位置的元素的屬性,如果參數(shù)proplist不是一個屬性列表,或者索引號index小于1或不存在,該函數(shù)返回空值。例如propertyatindex (proplist, 2 )返回#c(即第2個元素的屬性標識符)。

函數(shù)valueatindex(proplist, index)可以求出屬性列表中指定索引位置的元素的屬性值,如果參數(shù)proplist不是一個列表,或者索引號index小于1或不存在,該函數(shù)返回空串。例如valueatindex (proplist, 2 )返回2(即第2個元素的屬性值)。

3.3.2.3  增加、刪除元素

系統(tǒng)函數(shù)addproperty()用于向?qū)傩粤斜碇性黾有碌脑?。例如以下程序語句:

proplist:=[:]

addproperty(proplist, #name, "john")

addproperty(proplist, #userid, "1234-5678")

addproperty(proplist, #password, "3721")

創(chuàng)建出一個用于描述個人信息的屬性列表[#name:"john", #userid:"1234-5678", #password: "3721"]。

函數(shù)deleteatproperty(proplist, #property)用于刪除具有特定屬性的元素,例如以下程序語句:

deleteatproperty(proplist, #password)

使屬性列表proplist的值變?yōu)閇#name:"john", #userid:"1234-5678"]。屬性列表中可能存在重復(fù)的屬性,在這種情況下函數(shù)deleteatproperty()僅刪除第一個具有特定屬性的元素。

3.3.2.4  排序

函數(shù)sortbyproperty(propertylist1 [, propertylist2,..., propertylist10] [, order])可以按照屬性標識符對屬性列表進行排序,函數(shù)sortbyvalue(anylist1 [, anylist2,..., anylist10] [, order])可以按照屬性值對屬性列表進行排序,屬性列表在排序之后被做上排序標記。設(shè)置order為true時按升序排序,否則按照降序排序。如果需要對單個屬性列表進行排序,例如對屬性列表proplist2按照屬性值進行降序排序,可以按照如下方式使用排序函數(shù):

sortbyvalue(proplist2 , false)

結(jié)果是將proplist2的值變?yōu)閇#b:4, #c:2, #a:1]。對屬性列表proplist2按照屬性標識符進行升序排序,可以按照如下方式使用排序函數(shù):

sortbyproperty(proplist2,true)

結(jié)果是將proplist2的值變?yōu)閇#a:1, #b:4, #c:2]。

使用排序函數(shù)可以對多個屬性列表進行排序。例如,現(xiàn)有如下兩個屬性列表:

lista:=[#z:1, #x:2, #y:3]

listb:=[#a:1, #c:2, #b:3]

使用sortbyproperty(lista, listb, true)可以按照lista屬性列表的屬性標識符進行升序排序,此時lista = [#x:2, #y:3, #z:1],listb = [#c:2, #b:3, #a:1]。

使用sortbyvalue(listb, lista, false)可以按照listb屬性列表的屬性值進行降序排序,此時listb = [#b:3, #c:2, #a:1],lista = [#y:3, #x:2, #z:1]。

3.3.3  多維列表

多維列表就是以列表為元素的列表,例如描述一個【顯示】設(shè)計圖標中圖像對象和文本對象的列表:

[[#type:#image, #rect:rect(12, 57, 377, 219), #filename:"c://my picture//01.bmp", #storage:#external, #format:"bmp"], [#type:#text, #rect:rect(230, 22, 316, 54), #text:"hello world!"]]

就是一個具有兩個元素的二維列表,其中每個元素都是一個一維屬性列表。在aws中,多維列表的最大維數(shù)是10。

3.3.3.1  創(chuàng)建

可以使用賦值語句創(chuàng)建一個多維列表,例如程序語句

list:= [ [0,0],[0,0],[0,0],[0,0] ]

創(chuàng)建了一個二維列表,其中每個元素被初始化為[0,0]。另外,還可以使用系統(tǒng)函數(shù)array(value, dim1 [, dim2, dim3, ...dim10])創(chuàng)建一個以數(shù)值value進行填充的多維列表,參數(shù)dim1~dim10決定每一維中的元素數(shù)目。例如程序語句:

list:=array(9,3,4)

創(chuàng)建了一個有3個列表元素的二維列表,其中每個元素被初始化為具有4個元素的一維列表[9,9,9,9],變量list的值為[[9, 9, 9, 9], [9, 9, 9, 9], [9, 9, 9, 9]]。以下程序語句用于創(chuàng)建具有3個屬性列表元素的二維列表

multiproplist:=[]

multiproplist:= array([#name:"", #userid:"", #password:""], 3 )

變量multiproplist的值為[[#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""]]。

3.3.3.2  訪問多維列表中的元素

在通過下標訪問多維列表中的數(shù)據(jù)時,需要按照從外向內(nèi)的順序輸入數(shù)據(jù)在列表每一維中所處的位置,例如程序語句:

list:=array(9,3,4)

list[2,3]:=0

將列表list的第二個元素(第一維中)中的第三個元素(第二維中)賦值為0,變量list的值變?yōu)閇[9, 9, 9, 9], [9, 9, 0, 9], [9, 9, 9, 9]]。而程序語句:

list[2]:=[1, 2, 3, 4]

將列表list的第二個元素(第一維中)賦值為[1, 2, 3, 4],變量list的值變?yōu)閇[9, 9, 9, 9], [1, 2, 3, 4], [9, 9, 9, 9]]。

以下程序語句創(chuàng)建一個由個人記錄組成的數(shù)據(jù)表(二維列表),并對其中第一個記錄進行初始化:

multiproplist:=[]

repeat with i:= 1 to 3

   addlinear( multiproplist, [#name:"", #userid:"", #password:""] )

end repeat

multiproplist[1][#name]="tom"

multiproplist[1][# userid]="8765-4321"

multiproplist[1][# password]="7up8down"

變量multiproplist的值為: [[#name:"tom", #userid:" 8765-4321", #password:"7up8down"], [#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""]]。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陈巴尔虎旗| 江北区| 遵义市| 安图县| 江城| 慈利县| 河津市| 海阳市| 灵宝市| 武城县| 清水河县| 祁阳县| 晋江市| 满洲里市| 巴林右旗| 山阳县| 罗田县| 资兴市| 黎川县| 桐柏县| 塘沽区| 三穗县| 泰宁县| 许昌县| 克山县| 曲麻莱县| 炉霍县| 巴林右旗| 屏南县| 广安市| 读书| 潍坊市| 夏邑县| 思南县| 囊谦县| 永安市| 松溪县| 呼图壁县| 井冈山市| 简阳市| 简阳市|