高级语言中为什么要有数据类型这种概念?

解答:因为数据类型明显地或隐含地规定了在程序执行期间变量和表达的所有可能的取值范围,以及在这些数值范围上所允许进行的操作。

例如: C语言中定义变量i为int类型,就表达i是[-min,max]范围的整数,在这个整数集上可以进行+、-、*、/、%等操作

  • 数据类型的作用

1.数据类型(Data Type)

定义:数据类型是一组性质相同的值的集合以及在这组值上的操作

数据类型分两类:

  • 原子类型:不可以再分解的基本类型,例如整型、浮点型、字符型等
  • 结构类型:由若干个类型组合而成,是可以再分解的,例如整型数组是由若干整型数据组成的。

2.抽象数据类型(Abstract Data Type,ADT)

定义:是指一个数学模型以及定义在此模型上的一组操作。

大白话:就是把数据类型和相关操作捆绑在一起。

  • 由用户定义,从问题抽象出数据模型(逻辑结构)
  • 还包括定义在数据模型上的一组抽象运算(相关操作)
  • 不考虑计算机内的具体存储结构与运算的具体实现算法(与在计算机内部如何表现和实现无关)

3.抽象数据类型的形式定义

1.抽象数据类型的形式定义


抽象数据类型可用(D,S,P)三元组表示

其中:D是数据对象;

S是D上的关系集(数据对象之间的很多关系,关系组成的集合)

2.抽象数据类型的定义格式

ADT 抽象数据类型{
    数据对象:<数据对象的定义>
    数据关系:<数据关系的定义>
    基本操作:<基本操作的定义>
}ADT 抽象数据类型名

其中:数据对象、数据关系的定义用伪代码描述

基本操作定义格式为:

  • 基本操作名(参数表)
  • 初始条件:<初始条件描述>
  • 操作结果:<操作结果描述>

1.基本操作定义格式说明:

参数表:赋值参数 只为操作提供输入值
引用参数以&打头,除可提供输入值外,还将返回操作结果

定义一个操作power,让xy相乘
power (x,y)
则(x.y)就是参数表
x,y则是赋值参数
定义一个操作scale,缩放图像,
G`=scale(G,n)
把图像G放大n倍,G`返回操作结果

也可以通过
scale(&G,n)来通过G返回操作结果
我们称&G为引用参数

2.初始条件

描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始条件为空,则省略之。

3.操作结果

说明操作正常完成之后,数据结构的变化状况和应该返回的结果。


抽象数据类型(ADT)定义举例:Circle的定义

最后修改:2022 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏