文档章节

百宝云数组语法新手教程

 简单007
发布于 2015/12/16 16:13
字数 2138
阅读 7
收藏 0

   通过这章的基础介绍,希望大家能够基本上掌握百宝云的语法与使用方法,能够根据自己的需要编写出自己的云服务的知识可能有点无味,但是却是百宝云的基础所在,所以大家还是好好把基础打下,这样才能更好更快的学习后面的知识。

   第五节数组

   数组这个知识点还是非常重要的,日常的项目里也少不了它的存在,因此,通过这节课,希望大家能掌握数组的一些常规使用方法,以便大家在日后的项目里熟练运用。

  5.1 概念

  数组是一系列数据的集合,可以存储大量数据,通过数组的下标、key,可以实现对数据的快速访问。

 

  为什么要使用数组,什么场景使用数组?

  好,首先我们来分析一个需求。

  小花参加一次唱歌比赛,有5名裁判打分,得到如下成绩:  89 90分 80分 95分 82分。那么要求是:去掉最高分与最低分,最后成绩是多少? 判断出是哪个裁判的分最高与最低?

如果我们还是按照以前的思路去写的话,代码是这样的

功能  得到成绩()

    变量 裁判1成绩 = 89

    变量 裁判2成绩 = 90

    变量 裁判3成绩 = 80

    变量 裁判4成绩 = 95

    变量 裁判5成绩 = 82    

    // 这样的写法去判断,代码思路比较乱,而且也不方便扩展,所以就不写了

// 想这样写的读者,可以自己去写写看.

结束

这样使用5个变量存储5个成绩,计算出最后成绩的话,需要5 个成绩两两比较,这样的处理比较麻烦。那么有没有方便的处理办法呢?

,这就需要用到数组了,使用数组之后,这些处理就方便很多了,后期的扩展也方便了。

那么用数组之后的写法是怎么的呢?如下

功能 得到成绩()

    变量 裁判成绩 = 数组()

    裁判成绩[0] = 89

    裁判成绩[1] = 90

    裁判成绩[2] = 80

    裁判成绩[3] = 95

    裁判成绩[4] = 82

    //变量 裁判成绩 = 数组(89,90,80,95,82)

    变量 最高分 = 裁判成绩[0],最高分裁判 = 0,最低分 = 裁判成绩[0],最低分裁判 = 0,总成绩 = 0

    遍历(变量 i = 1; i < 5; i++)

        如果(最高分 < 裁判成绩[i])

            最高分 = 裁判成绩[i]

            最高分裁判 = i

        结束

        

        如果(最低分 > 裁判成绩[i])

            最低分 = 裁判成绩[i]

            最低分裁判 = i

        结束

    结束

    

    遍历(变量 i = 0; i < 5; i++)

        如果(i == 最高分裁判 || i == 最低分裁判)

            继续

        结束

        

        总成绩 = 总成绩 + 裁判成绩[i]

    结束

    发送文本消息("总成绩为:" & 总成绩)

    发送文本消息("最高分裁判是:" & (最高分裁判 +1) & "号裁判")

    发送文本消息("最低分裁判是:" & (最低分裁判 +1) & "号裁判")

结束

这样一写之后,代码简洁了很多,条理看起来清楚了很多。扩展起来也简单多了,就增加数组元素,其他的都不要改了。

 

5.2 数组的基本用法

数组里面是可以同时存储多种类型数据。常用数组分下面三大类型

5.2.1索引数组

类的数组是最简单的数组,操作起来也很简单这类数组的下标基本上是从0开始,到数组长度-1。如上面的例子,使用的就是索引数组。简单示例如下:

//变量 a = 数组[3]("宝马","卡宴","奥迪")// 

    //或者 

    变量 a = 数组[3] 

    a[0] = "宝马" 

    a[1] = "卡宴" 

    a[2] = "奥迪" 

    

    //遍历数组 

    遍历(变量 i=0;i<3;i++) 

        发送文本消息(a[i]) 

    结束

 

5.2.2关联数组

这类数组的特点key è value是一个key对应一个value。这里的key可以是任意字符串。如下列的示例:

//变量 a = 数组("key1"="宝马","key2"="卡宴","key3"="奥迪") 

    //或者 

    变量 a = 数组() 

    a["key1"] = "宝马" 

    a["key2"] = "卡宴" 

    a["key3"] = "奥迪" 

    

    //显示指定数组元素 

    发送文本消息(a["key2"])

 

索引数组与关系数组的区别:

选项

描述

索引数组

定义

//索引数组变量定义有五种写法
1、变量 数据 = 数组[5] //未初始成员元素,默认所有元素为null,数组大小为5
2、变量 数据 = 数组[5]() //未初始成员元素,默认所有元素为null,数组大小为5
3、变量 数据 = 数组[5](1,2,3,4,5) //初始化成员元素,数组大小为5
4、变量 数据 = 数组[](1,2,3,4,5) //能过初始化成员元素,确定数组大小为5 
5、变量 数据 = 数组[] //定义数组大小为0的数组 

元素范围

下标是从0开始,到数组大小-1,如果访问元素,超过下标范围,程序会报错,提示访问数组越界 

访问方式

变量 内容 = 数据[0]
在访问的时候[]中间一定是整数型值,否则程序会提示访问越界数组

关联数组

 

定义

//关联数组定义有三种写法
变量 数据 = 数组() //未初始化成员元素的定义,没有成员元素,数组大小为0
变量 数据 = 数组("a","b","c",4,5,6) //初始化成员元素的定义,数组大小为6
变量 数据 = 数组("a"="a","b"="b","c"="c","d"=4,"e"=5,"f"=6) //初始化指定key的成员元素的定义,数组大小为6

元素范围

关联数组理论上可以无限大,且不会存在越界等错误.

访问方式

关联数组采用的是一种key->value对应的方式存在,我们在访问关联数组,采用如下方法 
变量 内容 = 数据["abc"]
在这里,关联数组本身具有自动增加元素的特性,当元素不存在,第一次访问的时候会自动增加,并设置初始值为null

 

 

5.2.3 多维数组

百宝云里的多维数组定义与其他语言的不同,不是 

变量 b = 数组[2][2]   /写法是错误的

这样的写法在百宝云里是错误的,应该是下面这样的写法:

//索引多维数组 

变量 车辆资料 = 数组[3](数组[3]("Volvo",22,18), 数组[3]("BMW",15,13), 数组[3]("Saab",5,2))  

//或者  

变量 车辆资料 = 数组[3]()  

车辆资料[0] = 数组[3]("Volvo",22,18)  

车辆资料[1] = 数组[3]("BMW",15,13)  

车辆资料[2] = 数组[3]("Saab",5,2)  

  

变量 n = 数组大小(车辆资料) 

遍历(变量 i=0;i  < n;i++)   

    变量 临时数组 = 车辆资料[i] 

    变量 n1 = 数组大小(临时数组) 

    遍历(变量 j=0;j  < n1;j++)   

        发送文本消息(临时数组[j])   

    结束 

结束

 

日常的项目当中,我们用二维数组就差不多了再增加维数,那样操作起来就麻烦了。

以下我们再来学习下keyàvalue类型的多维数组。示例如下

//关联索引数组 

变量 车辆资料 = 数组()   

车辆资料["张三"] = 数组("品牌" = "Volvo","里程" = 22,"车铃" = 18)   

车辆资料["李四"] = 数组("品牌" = "BMW","里程" = 15,"车铃" = 13)   

车辆资料["王五"] = 数组("品牌" = "Saab","里程" = 5,"车铃" = 2) 

  

//通过遍历的方式,访问关联数组中所有的元素 

变量 n = 数组大小(车辆资料) 

遍历(变量 i=0;i < n;i++)   

    变量 临时值 

    数组获取元素(车辆资料,i,临时值) 

    变量 n1 = 数组大小(临时值) 

    遍历(变量 j=0;j < n1;j++)   

        变量 临时键1,临时值1 

        关联数组获取元素(临时值,j,临时值1,临时键1) //记住这里只能是关联数组,否则会获取元素失败 

        发送文本消息("key:"&临时键1&" "&"value:"&临时值1) 

    结束 

结束   

  

//也可以通过关联数组的key 直接访问对应的元素    

发送文本消息("李四的车辆品牌是:" & 车辆资料["李四"]["品牌"])

 

百宝云还提供了一系列操作数组的命令,大家有时间的时候,都去看看这些命令,最好能把命令的示例给运行下,这样就更容易掌握各个命令的用途了。

 

© 著作权归作者所有

粉丝 0
博文 16
码字总数 14702
作品 0
长沙
私信 提问
纯干货 脚本开发,快速自制防破解网络验证系统

  防破解   百宝云做防破解要轻松很多,因为可以自己控制服务器端的逻辑代码,这样就可以自定义加解密自己的通讯数据,百宝云给了20+套比较有常用的加解密算法,可以自己随意选择   还有一...

简单007
2015/12/26
521
0
Linq 语法/List列表、数组处理数据方法总结(Chinar)

Linq List泛型数据数组数据处理用法归类 本文提供全图文流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...

chinar-yunxi
2018/09/27
0
0
6W+问答,14大百问集锦,精华都在这里了!

回首共同度过的2017年,每一个脚印都那么清晰。几组成绩单,和大家分享:这一年,社区沉淀了100W+博文,300+场直播,有600+专家加入社区,用户互动产生的问答6w+…… 年尾的时候,7032位开发...

云迹九州
2018/01/09
0
0
《Go编程基础》

《Go编程基础》是一套针对 Google 出品的Go语言的视频语音教程,主要面向新手级别的学习者。 第1课:Go开发环境搭建(土豆网 优才网 网易云课堂) 第2课:Go基础知识(土豆网 优才网 网易云课...

无闻
2013/04/14
25.2K
11
Shell脚本入门-5

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由0开始。 Shell 数组用括号来表...

Avner
2018/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊中国的通信行业:从“七国八制”到“中华”脊梁

本期文章和大家一起来聊一聊我曾经从事过的通信行业吧。最近各方面信息的泛滥,包括和华为的同学聊天,自己确实也感慨颇多。想想我自己本科主修通信工程,研究生再修信息与通信工程,从本科开...

CodeSheep
59分钟前
4
0
MDK:ARM M451M:exceed the range of code meory, continue to erase or not?

问题: 代码空间超限 几天前就遇到:exceed the range of code meory, continue to erase or not? 如下所示: 解决过程 开始以为中MDK软件的128KB限制,如是就不能生成HEX文件,应该链接时有提...

SamXIAO
今天
1
1
OSChina 周六乱弹 —— 因违反《中华人民共和国治安管理处罚法》第四十四条之规定

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :#今日歌曲推荐# 惊艳分享谷微的单曲《安守本份》(@网易云音乐) 《安守本份》- 谷微 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
367
8
Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
8
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部