中小学教育资源及组卷应用平台
第二单元
初识数据结构
项目二
研究学校教学管理相关数据的组织处理
——初识数据结构
第三课时
了解数据类型和抽象数据类型
?教材分析
本节的主要内容是了解数据类型和抽象数据类型。为了在教学管理中对学生信息进行处理,需要定义学生类来实现结构类型,引出了抽象数据类型,并详细介绍了抽象数据类型的定义以及抽象数据类型对数据处理的优势。在对教材上的活动以及生活中其他问题情境进行抽象时,帮助学生感悟抽象数据类型在数据处理时的重要性;学会用数据结构来表达数据的逻辑关系,提高信息意识和计算思维能力。
?教学目标
1.理解数据类型的概念;
2.认识数据类型对数据处理的重要性。
?教学重点
1.数据类型的基本概念。
2.线性表的顺序存储和链式存储。
3.抽象数据类型的概念及定义。
?教学难点
1.线性表顺序存储和链式存储。
2.根据实际问题定义适合的抽象数据类型。
?教学方法
体验法、讲授法、讨论法、示例法
?教学准备
计算机教室、多媒体设备、多媒体广播软件、教学课件、学生上机练习的程序文件,学生工作单等。
?教学过程
一、新课导入
回顾学生基本数据的存储结构并导入新课——数据类型和抽象数据类型。
存储结构是指数据的逻辑结构在计算机中的表示,即数据元素及其之间的关系在计算机中的表示,也称为物理结构。
两种最基本的存储结构:顺序存储结构和链式存储结构。
二、了解数据类型和抽象数据类型
计算机进行教学管理需要做诸如学生信息的增、删,或学生成绩统计等工作。这些工作完成的前提是要把学生信息或成绩等数据储存在计算机内存中,同时要给出指令,“告诉”计算机针对不同的数据对象“做什么”和“怎么做”。
计算机的内存容量是有限的,而做两个个位数的加法或两个位数不同的小数的加法,显然需要的空间大小可以不同。计算机研究者通过对不同数据进行分类的方法—数据类型,来描述不同数据的集合,为不同类型的数据分配了大小恰当的内存空间。
所有高级语言都定义了一系列的数据类型。
以
Python语言为例,基本数据类型也可以分为:
◎原子类型——数字型(
numbers,包括整型int和实数型float)、字符串型(string)
◎结构类型——元组(tuple)、列表(list)、字典(dict)
教学管理数据中,班级学生人数是整型,学生成绩是实数型,学生的姓名是字符串型等。
思考与讨论
你还知道教学管理数据中哪些是整型?哪些:是实数型?哪些是字符串型?
除了上述基本数据类型外,Python语言还通过定义类(class)来实现结构类型。例如,用“class
student:”就可以定义包含学号、姓名等多个数据项的结构类型。这时,student就相当于是一种记录类型,student的变量(一般称对象)就可以存放学生信息数据元素了。
数据类型还有一个作用是定义了对数据的一些操作。这些操作在程序设计语言中是直接使用运算符或函数来实现的,如将班级学生人数相加得出年级学生人数,在Python中为T=a1+a2+a3+a4(假设有4个班级,每个班级的人数分别为a1、a2、a3、a4),这就是基于整数类型上的一种操作(加法运算)。计算机编程者在编程时,不需要关心整数在计算机中是如何表示的,计算机是如何分配相应的存储空间,如何实现加法操作的。
思考与讨论
整数型、实数型、字符串型通常定义了哪些操作?你使用过哪些?
事实上,各种计算机,不管是大型机、小型机、PC、平板电脑、PDA,甚至是智能手机都拥有“整数”类型,也需要整数间的运算,实现方法可能有所不同,但在计算机编程者看来,它们都是相同的,原因就在于整数类型定义的数学特性相同。这就是抽象的意义。从这个层面来看,整型其实是一抽象数据类型。
思考与讨论
其他数据类型是抽象数据类型吗?为什么?
当然,抽象数据类型不仅仅指已经定义并实现的数据类(如整型、字符串型等),还可以是计算机编程者对现实问题进行抽象后,在设计软件程序时自己定义的数据类型。以学生信息管理问题为例,对其进行抽象后,可以得出数据对象是学生信息这一数据元素的集合,此集合中数据元素之间的关系是一对一的线性关系。如果在此数学模型基础上定义插入、删除等一组基本操作,就形成一种抽象数据类型。该抽象数据类型可以如下所示:
核心概念
数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象数据类型(
abstract
data
type,ADT)是指一个数学模型以及定义在此数学模型上的一组操作。
小贴士
数据类型用来说明一个数据在数据分类中的归属。它是数据的一种属性。这个属性限定了该数据的变化范围。数据类型是被定义在程序设计语言中的,尽管不同的高级语言所定义的数据类型不尽相同。
抽象是指抽取出事物具有的普遍性的本质。它是抽出问题的特征而忽略非本质的细节。是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了繁杂的细节,只保留实现目标所必需的信息。
抽象数据类型中被定义过的基本操作,是通过编写出相应的程序模块实现的。以后用计算机解决此类问题时,凡是要用到这些基本操作,直接调用这些程序模块即可,而不必每次重新编写程序,大大降低了程序员的重复劳动。
例如,将某两个班级的学生数据定义为上述抽象数据类型后,调用其基本操作(如下面代码中框出的部分)就可以实现将两个班学生数据的合并(用Python语言编写)。
思考与讨论
1.
Python中列表属于抽象数据类型吗?为什么?
2.使用抽象数据类型有何好处?
三、数据类型
数据类型是一组性质相同的值的集合及定义在此集合上的一些操作的总称。高级程序设计语言的每一个变量、常量、表达式都有一个所属的确定的数据类型。类型明显或隐含地规定了在程序执行期间变量或表达式所有可能取的范围,以及在这些值上允许进行的操作。例如,某语言整数类型取值范围[-maxint,maxint](
maxint是依赖特定的计算机的最大整数),定义在其上的一组操作为:加、减、乘、除、整除和取模等。
按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,如整型、字符型等,原子类型的值是不可分解的;还有一种是结构类型,是由若干成分按某种结构组成的,因此是可以分解的,并且每个成分可以是非结构的,也可以是结构的例如,定义一个记录类型,记录包含姓名、性别等。
四、抽象数据类型
抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型的定义与其在计算机内部如何表示和实现无关,即只考虑在数据元素集合上能完成什么操作,而不考虑如何完成。例如,前面所说的整数类型,无论加减乘除操作是如何运算的,对于用户来说,这些操作的性质不会变。这就是抽象的意义。
抽象数据类型中对数据对象和数据运算进行了声明,对数据对象的表示和数据运算的实现进行了分离。
抽象数据类型的两个重要特征:
①抽象
用抽象数据类型描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口。
②封装
将实体的外部特征和内部实现细节分离,并且对外部用户隐藏其内部实现细节。
五、抽象数据类型的表示
本书按如下格式表示抽象数据类型
其中,数据对象和数据关系用集合或自然语言来描述;基本操作用
Python语句描述具体格式如下所示:
例如,有理数抽象数据类型表示如下:
抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐蔽起来。因此,抽象数据类型体现了程序设计中问题分离、抽象和信息隐蔽的特性。
六、课后活动
假定把矩形定义为一种抽象数据类型,其数据部分包括矩形的长度和宽度,操作部分包括初始化矩形的尺寸、求矩形的周长矩形的面积。请完成矩形的ADT(抽象数据类型)描述。
提示:假定该抽象数据类型名用Rectangle(矩形)表示,定义矩形长度和宽度的数据用length和width表示,并假定其类型为浮点(float)型,初始化矩形数据的函数名用InitRectangle表示,求矩形周长的函数名用
Circumference(周长)表示,求矩形面积的函数名用Area(面积)表示。
21世纪教育网
www.21cnjy.com
精品试卷·第
2
页
(共
2
页)
HYPERLINK
"http://21世纪教育网(www.21cnjy.com)
"
21世纪教育网(www.21cnjy.com)(共33张PPT)
第三课时
了解数据类型和抽象数据类型
信息技术沪教版
选择性必修1
第二单元
初识数据结构
项目二
研究学校教学管理相关数据的组织处理
——初识数据结构
一、新课导入
二、了解数据类型和抽象数据类型
三、数据类型
四、抽象数据类型
五、抽象数据类型的表示
六、课后活动
一、新课导入
存储结构
存储结构是指数据的逻辑结构在计算机中的表示,即数据元素及其之间的关系在计算机中的表示,也称为物理结构。
顺序存储结构
链式存储结构
二、了解数据类型和抽象数据类型
计算机进行教学管理需要做诸如学生信息的增、删,或学生成绩统计等工作。这些工作完成的前提是要把学生信息或成绩等数据储存在计算机内存中,同时要给出指令,“告诉”计算机针对不同的数据对象“做什么”和“怎么做”。
计算机的内存容量是有限的,而做两个个位数的加法或两个位数不同的小数的加法,显然需要的空间大小可以不同。计算机研究者通过对不同数据进行分类的方法—数据类型,来描述不同数据的集合,为不同类型的数据分配了大小恰当的内存空间。
所有高级语言都定义了一系列的数据类型。
以
Python语言为例,基本数据类型也可以分为:
原子类型
数字型(
numbers,包括整型int和实数型float)
字符串型(string)
结构类型
元组(tuple)
列表(list)
字典(dict)
教学管理数据中,班级学生人数是整型,学生成绩是实数型,学生的姓名是字符串型等。
思考与讨论
你还知道教学管理数据中:
哪些是整型?
哪些是实数型?
哪些是字符串型?
除了上述基本数据类型外,Python语言还通过定义类(class)来实现结构类型。
例如,用“class
student:”就可以定义包含学号、姓名等多个数据项的结构类型。这时,student就相当于是一种记录类型,student的变量(一般称对象)就可以存放学生信息数据元素了。
数据类型还有一个作用是定义了对数据的一些操作。这些操作在程序设计语言中是直接使用运算符或函数来实现的,如将班级学生人数相加得出年级学生人数,在Python中为T=a1+a2+a3+a4(假设有4个班级,每个班级的人数分别为a1、a2、a3、a4),这就是基于整数类型上的一种操作(加法运算)。计算机编程者在编程时,不需要关心整数在计算机中是如何表示的,计算机是如何分配相应的存储空间,如何实现加法操作的。
思考与讨论
整数型、实数型、字符串型通常定义了哪些操作?你使用过哪些?
事实上,各种计算机,不管是大型机、小型机、PC、平板电脑、PDA,甚至是智能手机都拥有“整数”类型,也需要整数间的运算,实现方法可能有所不同,但在计算机编程者看来,它们都是相同的,原因就在于整数类型定义的数学特性相同。这就是抽象的意义。从这个层面来看,整型其实是——抽象数据类型。
思考与讨论
其他数据类型是抽象数据类型吗?为什么?
抽象数据类型不仅仅指已经定义并实现的数据类(如整型、字符串型等),还可以是计算机编程者对现实问题进行抽象后,在设计软件程序时自己定义的数据类型。
以学生信息管理问题为例,对其进行抽象后,可以得出数据对象是学生信息这一数据元素的集合,此集合中数据元素之间的关系是一对一的线性关系。如果在此数学模型基础上定义插入、删除等一组基本操作,就形成一种抽象数据类型。该抽象数据类型可以如下所示:
ADT
List:
数据对象:D={ai
lai
∈
ElemSet,
i=1,2,…,n,n>=0}
数据关系:R={
l
ai-1,ai
∈D,i=2,…,n}
基本操作:
def
InitList(self))#建立一个空的表
def
GetElem(self.i)#返回表的第i个元素
def
Length(self)#求表的长度
def
LocateElem(self,x)
#求元素x在表中的位置;若不存在x,则返回0
def
Insert(self,i,x)#在表的第i个位置上插入一个新元素x
def
Delete(self,i)#删除第i个元素
数据对象的定义
数据关系的定义
基本操作的定义
数据类型
数据类型
数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
数据类型用来说明一个数据在数据分类中的归属。它是数据的一种属性。这个属性限定了该数据的变化范围。数据类型是被定义在程序设计语言中的,尽管不同的高级语言所定义的数据类型不尽相同。
抽象
抽象数据类型
抽象是指抽取出事物具有的普遍性的本质。它是抽出问题的特征而忽略非本质的细节。是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了繁杂的细节,只保留实现目标所必需的信息。
抽象数据类型(
abstract
data
type,ADT)是指一个数学模型以及定义在此数学模型上的一组操作。
例如,将某两个班级的学生数据定义为上述抽象数据类型后,调用其基本操作(如下面代码中框出的部分)就可以实现将两个班学生数据的合并(用Python语言编写)。
def
union(La,Lb):#本函数功能是将表Lb合并到表La中
La_len
=
Length(La)
#求表a的长度
Lb_len
=
Length(Lb)
#求表b的长度
for
i
in
range(l,Lb_len+1);
x
=
GetElem(Lb,i)
#获取表b的第i个数据元素
if
LocateElem(La,
x)==0:
La_len
=
la_len+1
La.Insert(La,La_len,x)
#将数据元素插入至表a中
return
思考与讨论
1.
Python中列表属于抽象数据类型吗?为什么?
2.使用抽象数据类型有何好处?
三、数据类型
数据类型是一组性质相同的值的集合及定义在此集合上的一些操作的总称。高级程序设计语言的每一个变量、常量、表达式都有一个所属的确定的数据类型。类型明显或隐含地规定了在程序执行期间变量或表达式所有可能取的范围,以及在这些值上允许进行的操作。
例如,某语言整数类型取值范围[-maxint,maxint](
maxint是依赖特定的计算机的最大整数),定义在其上的一组操作为:加、减、乘、除、整除和取模等。
按“值”的不同特性,高级程序语言中的数据类型可分为两类:
一类是非结构的原子类型,如整型、字符型等,原子类型的值是不可分解的;
一类是结构类型,是由若干成分按某种结构组成的,因此是可以分解的,并且每个成分可以是非结构的,也可以是结构的例如,定义一个记录类型,记录包含姓名、性别等。
四、抽象数据类型
抽象数据类型中对数据对象和数据运算进行了声明,对数据对象的表示和数据运算的实现进行了分离。
抽象数据类型的两个重要特征
用抽象数据类型描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口。
①抽象
将实体的外部特征和内部实现细节分离,并且对外部用户隐藏其内部实现细节。
②封装
五、抽象数据类型的表示
ADT<抽象数据类型名>
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
按如下格式表示抽象数据类型
数据对象和数据关系用集合或自然语言来描述;基本操作用
Python语句描述具体格式如下所示:
def
基本操作名(参数表)
#功能说明
例如,有理数抽象数据类型表示如右图:
ADT
Rational:
数据对象:D={e1,e2│e1,e2均为整数}
数据关系:R={│e1是分子,e2是分母}
基本操作:
def
_init_(self,num,den)
#构造有理数num/den
def
_add_(self,v1,v2)
#求出有理数v1+v2的和
def
_sub_(self,v1,v2)
#求出有理数v1-v2的差
def
_mul_(self,v1,v2)
#求出有理数v1
2的积
def
_div_(self,v1,v2)
#求出有理数v1/v2的商
def
nun(self,v1)
#求得有理数v1的分子
def
den(self,v1)
#求得有理数v1的分母
抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐蔽起来。
因此,抽象数据类型体现了程序设计中问题分离、抽象和信息隐蔽的特性。
六、课后活动
假定把矩形定义为一种抽象数据类型,其数据部分包括矩形的长度和宽度,操作部分包括初始化矩形的尺寸、求矩形的周长矩形的面积。请完成矩形的ADT(抽象数据类型)描述。
提示:假定该抽象数据类型名用Rectangle(矩形)表示,定义矩形长度和宽度的数据用length和width表示,并假定其类型为浮点(float)型,初始化矩形数据的函数名用InitRectangle表示,求矩形周长的函数名用
Circumference(周长)表示,求矩形面积的函数名用Area(面积)表示。
谢谢
21世纪教育网(www.21cnjy.com)
中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php