
這是一份高中信息技術滬教版(2019)選修1 數據與數據結構3.了解數據類型和抽象數據類型優(yōu)秀教學ppt課件,文件包含項目二第三課時pptx、項目二第三課時doc等2份課件配套教學資源,其中PPT共32頁, 歡迎下載使用。
二、了解數據類型和抽象數據類型
五、抽象數據類型的表示
存儲結構是指數據的邏輯結構在計算機中的表示,即數據元素及其之間的關系在計算機中的表示,也稱為物理結構。
計算機進行教學管理需要做諸如學生信息的增、刪,或學生成績統(tǒng)計等工作。這些工作完成的前提是要把學生信息或成績等數據儲存在計算機內存中,同時要給出指令,“告訴”計算機針對不同的數據對象“做什么”和“怎么做”。 計算機的內存容量是有限的,而做兩個個位數的加法或兩個位數不同的小數的加法,顯然需要的空間大小可以不同。計算機研究者通過對不同數據進行分類的方法—數據類型,來描述不同數據的集合,為不同類型的數據分配了大小恰當的內存空間。
所有高級語言都定義了一系列的數據類型。 以 Pythn語言為例,基本數據類型也可以分為:
數字型( numbers,包括整型int和實數型flat)字符串型(string)
元組(tuple)列表(list)字典(dict)
教學管理數據中,班級學生人數是整型,學生成績是實數型,學生的姓名是字符串型等。
你還知道教學管理數據中:哪些是整型?哪些是實數型?哪些是字符串型?
除了上述基本數據類型外,Pythn語言還通過定義類(class)來實現結構類型。 例如,用“class student:”就可以定義包含學號、姓名等多個數據項的結構類型。這時,student就相當于是一種記錄類型,student的變量(一般稱對象)就可以存放學生信息數據元素了。
數據類型還有一個作用是定義了對數據的一些操作。這些操作在程序設計語言中是直接使用運算符或函數來實現的,如將班級學生人數相加得出年級學生人數,在Pythn中為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 LcateElem(self,x) #求元素x在表中的位置;若不存在x,則返回0 def Insert(self,i,x)#在表的第i個位置上插入一個新元素x def Delete(self,i)#刪除第i個元素
數據類型是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
數據類型用來說明一個數據在數據分類中的歸屬。它是數據的一種屬性。這個屬性限定了該數據的變化范圍。數據類型是被定義在程序設計語言中的,盡管不同的高級語言所定義的數據類型不盡相同。
抽象是指抽取出事物具有的普遍性的本質。它是抽出問題的特征而忽略非本質的細節(jié)。是對具體事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節(jié),只保留實現目標所必需的信息。
抽象數據類型( abstract data type,ADT)是指一個數學模型以及定義在此數學模型上的一組操作。
例如,將某兩個班級的學生數據定義為上述抽象數據類型后,調用其基本操作(如下面代碼中框出的部分)就可以實現將兩個班學生數據的合并(用Pythn語言編寫)。
1. Pythn中列表屬于抽象數據類型嗎?為什么?2.使用抽象數據類型有何好處?
數據類型是一組性質相同的值的集合及定義在此集合上的一些操作的總稱。高級程序設計語言的每一個變量、常量、表達式都有一個所屬的確定的數據類型。類型明顯或隱含地規(guī)定了在程序執(zhí)行期間變量或表達式所有可能取的范圍,以及在這些值上允許進行的操作。 例如,某語言整數類型取值范圍[-maxint,maxint]( maxint是依賴特定的計算機的最大整數),定義在其上的一組操作為:加、減、乘、除、整除和取模等。
按“值”的不同特性,高級程序語言中的數據類型可分為兩類:
一類是非結構的原子類型,如整型、字符型等,原子類型的值是不可分解的;
一類是結構類型,是由若干成分按某種結構組成的,因此是可以分解的,并且每個成分可以是非結構的,也可以是結構的例如,定義一個記錄類型,記錄包含姓名、性別等。
抽象數據類型中對數據對象和數據運算進行了聲明,對數據對象的表示和數據運算的實現進行了分離。
抽象數據類型的兩個重要特征
用抽象數據類型描述程序處理的實體時,強調的是其本質的特征、其所能完成的功能以及它和外部用戶的接口。
將實體的外部特征和內部實現細節(jié)分離,并且對外部用戶隱藏其內部實現細節(jié)。
ADT 數據對象: 數據關系: 基本操作:
按如下格式表示抽象數據類型
數據對象和數據關系用集合或自然語言來描述;基本操作用 Pythn語句描述具體格式如下所示:
def 基本操作名(參數表) #功能說明
例如,有理數抽象數據類型表示如右圖:
ADT Ratinal: 數據對象: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的分母
抽象數據類型把實際生活中的問題分解為多個規(guī)模小且容易處理的問題,然后建立一個計算機能處理的數據模型,并把每個功能模塊的實現細節(jié)作為一個獨立的單元,從而使具體實現過程隱蔽起來。 因此,抽象數據類型體現了程序設計中問題分離、抽象和信息隱蔽的特性。
假定把矩形定義為一種抽象數據類型,其數據部分包括矩形的長度和寬度,操作部分包括初始化矩形的尺寸、求矩形的周長矩形的面積。請完成矩形的ADT(抽象數據類型)描述。 提示:假定該抽象數據類型名用Rectangle(矩形)表示,定義矩形長度和寬度的數據用length和width表示,并假定其類型為浮點(flat)型,初始化矩形數據的函數名用InitRectangle表示,求矩形周長的函數名用 Circumference(周長)表示,求矩形面積的函數名用Area(面積)表示。
這是一份浙教版 (2019)選修1 數據與數據結構1.2 數據的組織優(yōu)秀ppt課件,文件包含12數據的組織課件pptx、12數據的組織教學設計doc等2份課件配套教學資源,其中PPT共38頁, 歡迎下載使用。
這是一份2020-2021學年3.探究點餐數據的計算機處理過程精品ppt課件
這是一份高中信息技術3.采用索引查找法查找商品精品ppt課件,文件包含項目九第三課時pptx、項目九第三課時doc等2份課件配套教學資源,其中PPT共41頁, 歡迎下載使用。
注冊成功