代码结构的设计
出处:按学科分类—工业技术 企业管理出版社《工程师手册》第234页(4639字)
代码结构的设计首先建立在信息分类与编码方法的基础上,一般包括代码的总体设计,以及代码类型、代码长度、代码位置排序的选择和确定等。
1.代码种类的选择
在选择代码种类时,先考虑字符型类型,然后再从功能的角度考虑合适的代码。
(1)字符类型的选择
数字型代码、字母型代码、数字字母混合型代码各有所长,如何从中选择合适者,通常是根据使用者的需求、信息量的多少、信息交换的频率、计算机的容量、使用者的习惯等多种因素综合考虑后来选用合适的字符类型。
从信息处理的效率以及信息交换考虑,以数字符代码较好。
如从提供便于人们识别的信息,可考虑字母型代码。但在采用字母型代码时,通常一律采用大写字母,不能大写、小写同时出现。此外,还要避免使用元音(A、E、I、O、U),以防止形成不易辨认的英文字。
在代码结构中,要求既用数字、又使用字母,则采用数字、字母混合码。但在采用混合码时,要注意有一定控制的,即有一定规律的混合码要比不控制的,即无规律的混合码更可靠,出现错误的概率要少些。例如,五个字符的混合码中的AB001比A00B1,A0B01……等更可靠。此外,应尽量避免音相似、形相似的字符在一个代码中同时出现,以避免混淆和产生误解。对形相似的,如O、Z、I、S、V易与0、2、1、5、U相混;音相似的,字母B、C、D、G、P和T;字母M和N等要避免同时出现。
(2)功能型代码的选择
从图10.3.2-1所示按功能划分的代码类型中,选择合适的代码,主要看在逻辑上是否满足用户的需要。
对于仅要求起标识作用,常采用无含义的顺序码。对于象计划、统计信息管理系统使用的代码,为了提高处理速度,往往在代码结构上,使它在不调出文件的情况下,就能直接根据代码进行统计、求和、汇总,设计的代码常常采用层次码结构,也可采用复合码。如要掌握某一事物或概念的全部综合属性或特征时,就常常采用按面分类法的组合码。因这种代码能反映事物或概念多方面的属性和特征。对于代码较长需要校验时,就要采用自检码。
2.代码字符的排序和代码位置顺序的选择
代码字符的排序以选用代码字符的自然排序为好。对数字字符采用自然数的排列顺序,而字母字符则按字母排列顺序。这样便于代码自动排序。
代码位置顺序的选择,即指描述信息的属性或特征的一定规则或排列顺序的选择。它反映了代码编排的一定逻辑规律性,因而,代码位置顺序的选择一定要符合人们通常对信息的特征或属性描述的一般规律和习惯。
对于无含义的代码,通常不存在代码位置顺序的选择,因它本身不反映信息的排列顺序,只是信息的唯一标识。
对于有含义代码,其位置顺序的选择十分重要。一般来说,代码位置顺序的选择主要根据使用者的要求、习惯和管理上的需要,以及机器处理的效率来考虑。
有含义代码中层次码,其高位码要比低位码表示的概念范围广。例如,我国行政区划代码的安排和描述是由大→小,即省、地区、县,则代码位置高位→低位反映的概念范围也是由大→小。又如有的国家根据使用者管理上的需要,将工业产品品名表册作为分类的基本属性及排列顺序为:制造产品的原材料,生产工艺和产品的用途。即首先定原材料品名,然后根据生产工艺的特点分成的产品品名,再根据产品的用途列出消费品的品名。这样排列的顺序既便于管理,同时也能克服工业和贸易之间的某些矛盾。
又如有含义代码中的特征组合码各面代码顺序要根据使用的习惯和要求,以及有关的需要来安排,一般来说,永久的固定的属性放在前面,非永久的、非固定的属性放在后面。之外,还常常根据人们认识事物的一般规律来排列,如“先主后次”,“先粗后精”,“先宏观后微观”,“先外形后内形”等,以尽量符合使用要求。还有,代码中同一码位内各信息的安排,随着代码的增加应遵循一定的规律,与此同时,还要考虑某些信息的排列组合情况。
3.代码长度
代码长度的确定是代码结构设计中比较重要的内容。一般来说,其确定取决于编码对象的多少,代码字符与代码类型的选择,以及要留有适当的后备容量等因素,通常代码长度的设计要注意以下问题。
(1)简短 在满足各种要求的前提下,代码长度应尽量简短,以便节省机器存贮空间和数据处理传送的时间,便于人们使用和掌握,但必须保证使用者的最佳容量。
(2)定长 一般使用固定长度的代码要比不定长度的代码更可靠、更容易。因此通常要用固定长度。例如,顺序码应当用等长码001~199,而不是1~199。
(3)分段 当代码长于4个或5个数字字符时,应分成小段,分割可用“-”、“空格”等。例如,代码754-623要比754623易于记忆,而且更能精确记录下来。
(4)扩展 代码结构应能适应外界变化的需要有扩展的可能性。并要求在增加新编码对象时,不打乱原有对象,同时还不破坏原代码结构。
对于层次编码法,其编码长度与分类对象数目之间的关系如下式:
式中:L——代码总长度;
i——第i层(或第i面);
ai——第i层(或第i面)的代码字符集的字符个数;
Qi——第i层(或第i面)的编码对象总个数;
n——代码分类的层次数(或面的个数)。
4.约定
在代码结构中,还要遵循人们已习惯了的共同约定。
(1)对字符“0”和“9”的约定 一般来说,全部“0”字符代码不采用。有时,“0”字符常常用来标识特殊码。这种码是用来满足特殊管理需要而设置的,不符合代码标准中的分类原则和编码方法。因此必须要有标识,以便计算机和人们识别。而这种标识常常在固定的代码位置上以“0”字符来标识。如《全国工农业产品(商品、物资)分类与代码》中的开列区都是用“0”来标识的。另外,“0”字符还常常用来填补码位,如XX00××或××××00。
字符“9”或末尾一位为“9”的代码表示收容类目,“其他是×××”。
(2)数字范畴信息的代码对于信息内容是属于数量值或序号的信息无须编码。可直接采用其自然形式(适当加以位数上的调整)。例如,百分含量或统计的产量数值等。
对于数值的分类,原则上要求在数值处理后再进行分类,否则将失去统计数值的准确性。
总之,实际编码中可能还有这样或那样的约定与要求,但只要不符合分类原则和编码方法都必须给以说明和标识,以便计算机识别与处理信息。
5.校验码的确定
代码作为计算机的重要输入内容之一,其正确性将直接影响到整个处理工作的质量。特别是在人们需要重复抄写代码和将它通过人手输入计算机时,发生错误的可能性极大。为了保证正确输入,有意识地在编码设计结构中原有代码的基础上,另外附加一个校验码,使它事实上变成代码的一个组成部分,校验码是通过事先规定的数学方法计算出来。代码一旦输入,计算机会用同样的数学运算方法按输入的代码数学计算出校验码,并将它与输入的校验码进行比较。如不一致,表明代码录人有误,并自动提示录入人员,从而达到确保代码输入的正确性。
校验码可以发现的错误有:抄写错误,如1写成7;易位错误,如1234写成1324;双易位错误,如26913写成21963;随机错误,包括以上两种或三种综合性错误或其他错误。
校验码的形成有很多算法,还有待于统一标准化。一般用算术级数法和几何级数法。差别在前者计算时权按算术级数,后者计算时权按几何级数。
(1)算术级数法
原代码 1 2 3 4 5
各乘以权 6 5 4 3 2
乘积之和 6+10+12+12+10=50
以11为模去除乘积之和,则
50÷11=4……6(余6)
又从11减去余数6得校验码为:
11-6=5
从而带有校验码的完整代码便为:123455
(2)几何级救法
原代码 1 2 3 4 5
各乘以权 32 16 8 4 2
乘积之和 32+32+24+16+10=114
同样以11为模去除乘积之和,则
114÷11=10……4(余4)
又从11减去余数4得校验码为
11-4=7
从而带有校验码的完整代码在这里为:123457
实践表明,按几何级数法确定的校验码,发现错误的百分率较高。