首页 > 其他分享 >1.2.2 数据类型和抽象数据类型

1.2.2 数据类型和抽象数据类型

时间:2023-02-24 15:45:53浏览次数:36  
标签:ADT 定义 1.2 数据类型 抽象数据类型 操作 基本操作

1.2.2 数据类型和抽象数据类型

  • 在使用高级程序设计语言编写程序时,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。
  • 一些基本数据结构可以用数据类型来实现,如数组、字符串等
  • 而另一些常用的数据结构,如栈、队列、树、图等,不能直接用数据类型来表示。
  • 高级语言中的数据类型明显地或隐含地规定了在程序执行期间变量和表达的所有可能取值范围,以及在这些数值范围上所允许进行的操作。
    • 数据类型的作用
      • 约束变量或常量的取值范围
      • 约束变量或常量的操作

数据类型(Data Type)

  • 定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。
    • 数据类型=值的集合+值集合上的一组操作。

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

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

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

抽象数据类型的形式定义

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

​ 其中:D是数据对象
​ S是D上的关系集
​ P是对D的基本操作集

一个抽象数据类型的定义格式如下:

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

其中:

  • 数据对象、数据关系的定义用伪代码描述。
  • 基本操作的定义格式为:
    • 基本操作名(参数表)
    • 初始条件:<初始条件描述>
    • 操作结果:<操作结果描述>

基本操作顶格式说明:

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

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

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

ADT定义举例:Circle的定义

ADT Circle{
	数据对象:D={r,x,y|r,x,y均为实数}
	数据关系:R={<r,x,y>|r是半径,<x,y>是圆心坐标}
	基本操作:
			 Circle(&C,r,x,y)
			 			操作结果:构造一个圆
        double Area(C)
        		初始条件:圆已存在
        		操作结果:计算面积
       	double Circumference(C)
       			初始条件:圆已存在
       			操作结果:计算周长
}ADT Circle

标签:ADT,定义,1.2,数据类型,抽象数据类型,操作,基本操作
From: https://www.cnblogs.com/wangjunxiang/p/17151720.html

相关文章

  • 1.2.1 数据、数据元素、数据项和数据对象
    1.2.1数据、数据元素、数据项和数据对象数据(Data)数据元素(dataElement)数据项(DataItem)数据对象(DataObject)数据:是能输入计算机且能被计算机处理的各种符号的......
  • Day 11 11.2 文件操作
    文件操作引言到目前为止,我们做的一切操作,都是在内存里进行的,这样会有什么问题吗?如果一旦断电或发生意外关机了,那么你辛勤的工作成果将瞬间消失。是不是感觉事还挺大的呢......
  • 1.2 CPU是寄存器的集合体
    1.程序是把寄存器当作对象来描述的。2.汇编语言采用助记符来编写程序。3.机器语言是指CPU可以直接解释和执行的语言。  通过上面这个代码例子可以看出:机器语言级别......
  • mysql数据类型以及各种语句的总结
    数据类型分类整数型,浮点型(float和double),定点数,字符串(char,varchar,text),日期时间类型,修饰符字符串(char,varchar,text)char(n)固定长度,最多255个字符,注意不是字......
  • js中的数据类型有哪些?
    数据类型共有8中(1)基本数据类型:String、Number、Boolean、Null、Undefined、Symbol(ES6)、BigInt(2)引用数据类型:Object【Object是个大类,function函数、array数组、date日期......
  • 事件-Yii 基础-深入理解YII2.0(1.2)
    事件(Event)使用事件,可以在特定的时点,触发执行预先设定的一段代码,事件既是代码解耦的一种方式,也是设计业务流程的一种模式。现代软件中,事件无处不在,比如,你发了个微博,触发了......
  • Unbuntu源码下载编译nginx1.22.1
    下载nginx1.22.1源码nginx1.22.1使用ftp工具将下载的.tar.gz压缩包上传到服务器上。tar-zxvfnginx-1.22.1.tar.gz解压得到一个nginx-1.22.1文件夹。编译&安装官方......
  • 【更新公告】Airtest更新至1.2.9版本
    1.前言本次更新为Airtest库更新,版本提升至1.2.9,主要新增对Android13的支持、新增Windows和iOS的录屏接口等。2.更新功能1)新增对Android13的支持Airtest1.2.9版本......
  • SpringBoot19 - 数据类型转换
    数据类型转换​ 先把问题描述一下,这位开发者连接数据库正常操作,但是运行程序后显示的信息是密码错误。java.sql.SQLException:Accessdeniedforuser'root'@'localho......
  • 火热报名 | DockQuery 1.2 beta 版本体验官开启招募!
    DockQuery是什么?DockQuery代号「天狼」,是图尔兹全新自研的一款专业新型数据库桌面客户端,专为信创背景下国内外数据库开发/管理而设计,全面覆盖信创数据库目录、支持国内......