检索数据的关键是记住数据存放在什么地方。如果数据元素是按着某种一致的和很清晰的结构存放的,就可能用记住结构的方法检索数据。
最简单的数据结构是列表。例如,为计算平均值程序所准备的数据,能以用逗号隔开的数值形式存放(图8.1),逗号区分了每个单独的数据元素。
大多数编程语言都支持较复杂的数据结构,称为数组(图8.2)。每个数组元素能存放一个数据的值,分配给每个元素一个独有的编号,用来区别于其它的元素。引用这个编号,一个特定的数据元素能被插入、提取或处理。例如,在图8.2的数组中,元素用行号和列号区别,第一行第三列包含的值是29。数组一填好,能就写入磁盘、磁带或勘察的辅助介质中,以后,为处理它而读入到主存储器中。
设想一个产生姓名和地址标签的程序。每个标签需要姓名、街道地址、城市名、州名和邮政编码,如果仅需要几个标签,那么可以按列表方式存放数据。但需要的标签一多,分离的数据元素很快就变得冗长了。一种可供选择的方案是建立一个姓名和地址的数组,每行保存一个标签的数据。唯一的问题是,每个单独的元素被处理之前,整个数组必须被存放在主存中,而主存的空间又是有限的,因此,即使采用了数组,相对地说也产生不了多少标签。
一个比较好的解决办法是把这些数组组成一个文件(图8.3)。所有的计算机数据都以数字的排列开始。在文件中把数字分组,形成字符;接着,字符组形成有意义的数据元素,称为字段;一组相关的字段就是一个记录。文件就是一组相关的记录。例如,在姓名和地址的文件中,单独的姓名一项就是一个字段。每个记录为一个标签存放了完整的一组数据(姓名、街道地址等)。文件由所有的记录组成。
文件中的数据按记录逐个地被处理。通常,文件存放在辅助存储器上,如磁盘。为了读一个记录,处 理它的字段,产生合适的输出,接着读出和处理另外的记录,要编写一些程序。因为一次只有一个记录在主存内,所以只需要很少的主存空间;又因为许多记录能存在单个磁盘上,所以大量的数据可在一个有限的空间内被处理。