表驱动是什么:通过查找数据表来代替复杂的逻辑结构(如如果……其他的……
、开关等);表驱动的优点是:1,将编程的重心调整到解决问题上,而不是复杂的逻辑判断;
2,增加了程序的灵活性,易添加,易修改。
3,数据驱动,如果将数据写入文件,每次启动时,从文件中读取,那么,如果要修改一些变量,可能直接修改数据文件,而不是去修改程序结构;
表驱动的三种方法:
1,直接驱动法:你需要找什么,指定索引,就可以给你立即返回索引在表中对应的元素或者动作,
<代码>案例1:(一维查找:即可以代替一层的如果结构或者开关结构): 比如你要查找1——12月份每个月的天数,如下: month_day[12]={30 31日,30日,29日,30日,31日31日31日,30日,30日,31日30}; 返回month_day [5]; 这样直接对应的就是5月的天数; 直接驱动是指索引和需要的得到的数据或者动作是直接对应关系; 案例2:(三维查找:即有三个条件同时限制,如果使用如果或者开关可能需要三层嵌套结构) 比如一个路由景点,收费标准因性别:是否学生,以及是否残疾三项共同决定门票的价格,那么,我们可以 使用三维数据驱动表来代替复杂的上层如果语句; int entrance_ticket_fee [] [] []={{{0,10},{0,15}},{{0,15},{15、30}}} 这是一个三维向量,三个维度分别代表了不同的限制, 第一维代表性别,索引0代表女,1代表男; 第二维代表是否是学生,索引0代表是,索引1代表不是; 第三维代表是否是残疾,索引0代表残疾,索引1代表健康; 以上这个三维数组代表的是: 女孩,学生,残疾0元 女孩,学生,健康10元; 女孩,非学生,残疾0元; 女孩,非学生,非常急15元; 男孩,学生,残疾0元; 男孩,学生,健康,15元; 男孩,非学生,残疾15元; 男孩,非学生,健康,30元; 通过给定性别:是否是学生,是否残疾,来确定其返回值; 返回entrance_ticket_fee[0][1][1]//15元; 2,索引驱动法: 由于很多情况,有分段时,各段情况不一样,比如按年龄来分,18岁以下和60岁以上的人景区门票按照标准减一半,而19岁—59之 间的人,门票和年龄相对应,那么,如果还用直接索引法的话,对于0 - 18岁以下和60岁以上,都对应一个数值,那么其实可以用 一个索引来代替,这样就节省了空间,这种转化通过函数来实现; 索引驱动是对直接驱动法在节约空间方面的改进; 3阶梯访问表: 很多问题,并不需要一对一,而是要将其进行归类,简单的例子,比如说按成绩分类: 100 - 90:A 89 - 80:B 79 - 60:C 59 - 0:D 给定一个数,判断其所在的范围,即可以云阶梯访问。 阶梯访问是通过将要对比的数(原数据)和各个区域的上限(或者下限)进行比较,可以选择顺序比较,也可以选择二分法之类的。 阶梯访问是对索引驱动法的在节约内存空间方面的再次改进代码>