数据压倒一切。如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明。编程的核心是数据结构,而不是算法。

——Rob Pike 

     本文基于这样的认识:数据是易变的,逻辑是稳定的。

     本文例举的编程实现多为代码片段,但不影响描述的完整性。

     本文例举的编程虽然基于C语言,但其编程思想也适用于其他语言。

     此外,本文不涉及语言相关的运行效率讨论。

 

 

1 概念提出

     所谓表驱动法(Table-Driven Approach)简而言之就是用查表的方法获取数据。此处的“表”通常为数组,但可视为数据库的一种体现。

     根据字典中的部首检字表查找读音未知的汉字就是典型的表驱动法,即以每个字的字形为依据,计算出一个索引值,并映射到对应的页数。相比一页一页地顺序翻字典查字,部首检字法效率极高。

     具体到编程方面,在数据不多时可用逻辑判断语句(if…else或switch…case)来获取值;但随着数据的增多,逻辑语句会越来越长,此时表驱动法的优势就开始显现。

 

     例如,用36进制(A表示10,B表示11,…)表示更大的数字,逻辑判断语句如下:

 1 if(ucNum < 10)
 2 {
 3     ucNumChar = ConvertToChar(ucNum);
 4 }
 5 else if(ucNum == 10)
 6 {
 7     ucNumChar = 'A';
 8 }
 9 else if(ucNum == 11)
10 {
11     ucNumChar = 'B';
12 }
13 else if(ucNum == 12)
14 {
15     ucNumChar = 'C';
16 }
17 //... ...
18 else if(ucNum == 35)
19 {
20     ucNumChar = 'Z';
21 }
View Code

相关文章: