记录:整齐地组织你的数据 (教学大纲 3.2.2)
欢迎来到记录 (Records) 这一章!你之前已经学过整数和字符串等基本数据类型,以及数组等简单的数据结构。但是,当你需要存储复杂的、相关联的信息时,比如某个学生的个人档案,其中每一项数据类型各不相同,该怎么办呢?
这时记录就派上用场了!记录是一种非常有用的结构,它允许你将不同类型的信息捆绑在一起,形成一个整洁的整体。掌握这个概念是构建组织良好且健壮程序的核心。让我们开始学习吧!
究竟什么是记录?
记录 (Record) 是一种基础数据结构,旨在将一组相关的值(称为字段 (fields))存储在一个统一的名称下。之后,你可以将整个集合作为一个实体 (entity) 来进行操作。
类比:学生档案袋
想象一下你在为班级保存纸质档案。你肯定不会把所有的姓名、所有的成绩和所有的出生日期分别扔进三个独立的堆里。
相反,你会把与某一个学生(例如 Sarah)相关的所有信息都放进一个贴着“Sarah”标签的档案袋里。
记录就是那个档案袋(Sarah)。
里面装着的不同信息位就是字段 (Fields)。
核心组成规则
记录最重要的特征是其字段通常具有不同的数据类型。
看看我们学生记录的字段:
• 字段 1: StudentID (数据类型: 整数 Integer)
• 字段 2: Name (数据类型: 字符串 String)
• 字段 3: DateOfBirth (数据类型: 日期/时间 Date/Time)
• 字段 4: IsEnrolled (数据类型: 布尔值 Boolean)
所有这些不同类型的数据在逻辑上是关联的,并被组合成一个结构——即记录。教学大纲要求你熟悉这种将一组值(字段)组合成一个记录的过程。
记录是容器(实体)。
字段是容器内用于存放单项数据的槽位。
字段通常具有不同的数据类型。
记录 vs. 数组:别弄混了!
理解记录与数组(你在 3.2.1 节中学过)之间的区别至关重要。这是学生们最容易混淆的地方!
数组 (同构数据)
• 用途:存储通常为相同数据类型的集合(例如,50 个考试分数的列表)。
• 访问:使用索引 (index)(位置编号,例如 Array[3])来访问项目。
记录 (异构数据)
• 用途:存储通常为不同数据类型但逻辑上都属于同一个实体的集合(例如,第 50 号学生的所有详细信息)。
• 访问:使用字段名(例如,StudentRecord.Name)来访问项目。
记忆小贴士: 把 Array(数组)想成一个重复行 (Repeating Rows) 的单列表格(相同类型)。把 Record(记录)想成表格中的单一行(拥有不同的列/字段)。
在编程中使用记录
在编程中,使用记录之前,必须先定义其结构,然后创建该结构的一个实例(特定副本)来存储数据。
第一步:定义记录结构
你需要告诉编程语言记录的样子——它包含哪些字段,以及每个字段存储什么类型的数据。
让我们定义一个名为 Product(产品)的基础记录结构:
RECORD Product
ProductID: INTEGER
Name: STRING
Price: REAL/FLOAT
InStock: BOOLEAN
END RECORD
你知道吗? 在许多现代语言(如 Python)中,记录通常使用非面向对象的类或数据结构(如 C# / VB.Net 中的 `struct`)来实现,这纯粹是为了像教学大纲中所说的那样,方便地将数据捆绑在一起。
第二步:创建实体并赋值
结构定义好后,你可以创建该记录的一个特定实例(一个实体),并为其字段赋值。
我们基于 Product 结构创建两个实体:Item1 和 Item2。
DECLARE Item1 AS Product
DECLARE Item2 AS Product
现在我们使用点标记法 (dot notation) 来访问各个字段并分配数据:
Item1.ProductID ASSIGN 405
Item1.Name ASSIGN "Laptop"
Item1.Price ASSIGN 899.99
Item1.InStock ASSIGN True
Item2.ProductID ASSIGN 406
Item2.Name ASSIGN "Mouse"
第三步:操作记录
由于记录是作为一个单一实体来处理的,你现在可以将 Item1(包含所有四个相关字段)传递给子程序,或者将整个 Item1 结构存储在数组或列表中。
例如,要访问第一件商品的价格:
OUTPUT "The price is: " & Item1.Price
(输出结果为:The price is: 899.99)
这种将相关但不同类型的数据进行分组的能力,使得记录成为计算机科学中数据管理和对象建模必不可少的一部分。
🔑 重点回顾:记录的本质
记录 (Record) 是一种定制的数据包,它将几条逻辑上相关的数据(称为字段)组合成一个单一的单位。与数组不同,这些字段可以(且通常)具有不同的数据类型。