4.3 抽象数据类型(分层作业)信息技术浙教版2019选择性必修1

2025-10-30
| 12页
| 171人阅读
| 0人下载

资源信息

学段 高中
学科 信息技术
教材版本 高中信息技术浙教版选修1 数据与数据结构
年级 高一
章节 4.3 抽象数据类型
类型 作业-同步练
知识点 数据类型与抽象数据类型,抽象数据类型的描述,抽象数据类型的作用
使用场景 同步教学-新授课
学年 2025-2026
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 DOCX
文件大小 61 KB
发布时间 2025-10-30
更新时间 2024-11-08
作者 wuhao1987
品牌系列 上好课·上好课
审核时间 2024-11-08
下载链接 https://m.zxxk.com/soft/48508784.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

4.3抽象数据类型 1课时(分层作业) 【基础达标】 1.具有相同性质的计算机数据的集合及在这个数据集合上的一组操作是 。 2.抽象数据类型简称 ,是指一个数学模型及定义在该模型上的 。 3.关于抽象数据类型的作用,下列描述不正确的是( ) A.抽象数据类型将生活中的一些细小规模的问题抽象成规模较大的问题 B.使用抽象数据类型编写出来的程序结构更加清晰,层次更加分明 C.使用抽象数据类型编写的程序具有模块化特点,具有更好的可维护性 D.抽象数据类型的表示和实现都可以封装起来,便于移植和重用 4.关于抽象数据类型的作用,下列说法不正确() A.抽象数据类型把实际问题分解成多个规模较小且容易处理的问题,体现了模块化思想 B.Python自定义函数作为能完成某种特定功能的模块,体现了模块化编程思想 C.抽象数据类型通过数据封装,将实体的外部特征和其内部实现细节分离,并且对外部用户隐藏其内部实现细节 D.抽象数据类型不允许程序员自由选择数据结构,目的是规范设计,减少出错 5.下列关于抽象数据类型的说法,不正确的是 A,程序设计语言的一个内置类型可以看作是一个抽象数据类型 B.抽象数据类型的定义仅取决于它的一组逻辑特性,与其在计算机内部的表示与实现无关 C.定义一个抽象数据类型,只需要清浙地表达出各方面的形式要求即可 D.使用抽象数据类型编写的程序结构清晰、层次分明,也便于程序的移植和重用 6.下列有关Pyton抽象数据类型(ADT)的说法中,不正确的是() A.抽象数据是指一个数学模型及定义在该模型上的一组操作 B.Python 的一个内置类型不是一个抽象数据类型 C.抽象数据类型是一种思想,也是一种技术 D.定义一个抽象数据类型(ADT),目的是要定义一类计算对象,使它们具有某些特定的功能 7.下列有关 Python 抽象数据类型(ADT)的说法中,错误的是() A. ADT的基本思想是抽象,与在计算机内部如何表示和实现有关 B.Python 中的列表 list 就是一种抽象数据类型 C.Python 中通常使用类(class)来实现抽象数据类型 D, 定义一个抽象数据类型,目的是要定义一类计算对象,使它们具有某些特定的功能 8.下列有关抽象数据类型的说法,错误的是() A.抽象数据类型简称为 ADT B.抽象数据类型是指一个数学模型及定义在该模型上的一组操作 C.Python 的字符串类型就是一个抽象数据类型 D,定义一个抽象数据类型,只需要清晰表述出各方面的形式要求即可 9.有如下自定义函数: def fun(a): s=0 for i in a: s+=i return s 则 Python 内置函数中,与自定义函数fun(a)的功能相似的是() A.len( ) C.max( ) B.sum( ) D.min( ) 【巩固提升】 1.下面给出了队列的抽象数据类型部分描述信息: ADT Queue: Queue(self) #创建空队列 is empty(self) #判断队列是否为空,空时返回Tme,否则返回False enqueue(self,elem) #将元素elem加人队列,即人队 dequeue(self) #制除队首元素并将其返回,即出队 peek(self) #查看队首元素,不删除 请根据队列的ADT描述,结合钱的相关操作,定义栈的抽象数据类型ADT。 2.如何定义一个矩形抽象数据类型? 3.小王构造了一个圆的抽象数据类型,其中定义了一些圆的相关操作: ADT Circle(): Circle(self,r,x,y) #创建一个圆,r表示半径,x为圆心横坐标,y为圆心纵坐标 diam(self) #求圆的直径 area(self) #求圆的面积 perimeter(self) #求圆的周长 taper(self,h) #求高为h的圆锥的体积 arc(self,angle) #求圆中角度为angle的弧长 请回答下列问题: (1)若要定义一个方法column()求高为h的圆柱的体积,则划线处应填人的语句是 。 (2)在该抽象数据类型中,各个数据的数据类型最合适的是 (单选,填字母)。 A.r(int),x(float),y(float) B.r(float),x(float),y(float) C.r(string),x(list),y(list) D.r(int),x(int),y(int) 4.有如下自定义函数: def fun(s) : ans=[ ] for ch in s: if "a"<= ch <="z" ans.append(chr(ord(ch)-32)) else : ans.append( ch) return "-".join( ans) 则 Python 字符串内置方法中,与自定义函数fun(s)的功能相似的是() A.s.islower( ) B.s.isupper( ) C.s.lower( ) D.s.upper( ) 5.下列是一个简单的ADT: class qt: def ini (self,str1): self.ss = str1 def revst(self,s1): return self.ss[:- 1] sstr=input("please input:") x=qt(sstr) if sstr==x.revst(sstr): print("Yes") else: print("No") 下列关于该抽象数据类型(ADT) 实例的说法,不正确的是( ) A.qt为抽象数据类型名 B.x为qt类的一个对象 C.程序运行后,输入123421,输出的结果为“Yes” D.程序运行后,输入abccba, 输出的结果为“Yes” 6.下列是一个简单的 ADT: class Sstring: def init_(self,str1): self.ss = strl def substr(self,a,b): return self.ss[a-l:b] def concat(self,str2): return self.ss + str2 sstrl=Sstring("Python" ) print(sstrl.substr(2,4)) print(sstrl.concat(" is so easy!")) 下列有关该抽象数据类型(ADT)实例的说法中,不正确的是() A.Sstring 为抽象数据类型名 B.sstrl为 Sstring 类的一个对象 C.执行代码“print(sstr1.substr(2,4))”,输出结果为“yth” D,执行代码“print(sstrl.concat("is so easy!"))”,输出结果为“yth is so easy!” 【链接高考】 1.定义一个简单的ADT,部分代码如下: class mystring: def init_(self,ssepl): self.ss=ssepl def substr(self,a,b): return self.ss[a:b+1] def concat(self,ssep2): return self.ss+ssep2 s=mystring("Beautiful") print(s.substr(1,5)) print(s.concat("flower!")) 下列关于该抽象数据类型实例的说法,不正确的是() A.mystring为抽象数据类型名 B.s为mystring类的一个对象 C.执行语句“print(s.substr(1,5))”,输出结果为 Beauti D.执行语句“print(s.concat("flower!"))”,输出结果为Beautifulflower! 2.创建一个简单的ADT,如下所示: classNd( ): def _init_(self,data): self.data=data def judge(self): if self.data%5==0: print(self.data,“是5的倍数”) else: print(self.data,“不是5的倍数”) #创建实例 my_data=Nd(10) my_data.judgeodd( ) 下列有关该抽象数据类型(ADT)实例的说法中,不正确的是( ) A.创建的类名称为Nd B.def judge(self)的功能是定义judge函数 C.程序代码执行后的结果为“10是5的倍数” D.my_data为Nd类的一个对象 3.下面是一个简单的 ADT: class jdage(): def init_(self,name,age): #初始化属性 name 和 age Self.name= name Self.age= age def jd<self): if self. age<18: print(self.name+"还未成年。") else: print(self.name+"已成年。") #创建实例: my_stu = jdage("Peter",26) my_stu.jd() 下列有关该抽象数据类型实例的说法中,不正确的是() A.创建的类名称为jdage B.my_stu 为 jdage 类的一个对象 C.程序代码执行后的结果为“Peter已成年。” D.def jd(self)的功能是定义jd 函数 4.下列是一个简单的 ADT: class qt: def_init_( self,str1): self.ss=strl def revst( self,sl): retun self.ss[ ::-1] sstr= input( "please input: ") x=qt(sstr) if sstr = = x.revst(sstr): print("Yes") else: print( "No") 下列有关该现象数据类型(ADT)实例的说法中,不正确的是() A.qt为抽象数据类型名 B.x为 qt类的一个对象 C.程序运行时,若输人123421,则输出结果为 Yes D.程序运行时,若输人abccba,则输出结果为 Yes 5.下列是一个加减乘除四则运算的ADT,请回答程序后的问题: class operator(): def init_( self,datal ,data2 ,ch): self.datal = datal self.data2 = data2 ① def cal( self): if self.ch= ="+": c=self.data1+self.data2 print( self.datal ,"+" ,self.data2 ,"=" ,c) if self.ch= ="_": c =self.datal-self.data2 print(self.datal ,"-" ,self.data2 ,"=",e) if self.ch= =" * ": c=self.datal* self.data2 print( self.datal ," * ",self.data2 ,"=",c) if self.ch=="/". if self.data2!=0: ② print(self.datal ,"/",self.data2,"=",c ) else: print("分母不能为 0”) #创建实例: my_operator=operator( 2,6," *" ) my_operator.cal() (1)程序运行后,输出的结果是 。 (2)请在程序划线处填人合适的语句。 6.下面给出了字符串抽象数据类型的部分描述信息 ADT String: String(self,sscq) #基于字符串序列sseq建立一个字符串 is empty(self) #判断字符串是不是空串 len(self) #取得字符串的长度 char(self,index) #取得字符串中位置index的字符 substr(self,a,b) #取得字符串中[a:b]的子串,左闭右开区间 match(self,string) #查找串string在本字符串中第一次出现的位置 ........ 现有一字符串对象s,请回答下列问题: (1)根据字符串抽象数据类型的描述,若要获取字符串s下标位置为 [x:y](左闭右闭)区间内容的子串,正确的调用方式为 。 (2)基于字符串序列sscq建立一个字符串的操作s=String(sscq),可 以理解为对字符串s的初始化操作,初始的值为 。 (3)当s=""时 ,s.is empty()的返回值为True,则 当s="ABCDEF"时,s.is empty()的返回值为 ,s.len()的返回值为 。 (4)当要调用match方法时,需要提供的参数个数为 。 参考答案 【基础达标】 1.数据类型 2.ADT、一组操作 3.【答案】A [解析]抽象数据类型把生活中的实际问题分解成规模更小且容易处理的问题。 4.【答案】D [解析]抽象数据类型允许程序员自由选择数据结构,以便持续优化算法,提高程序运行效率。 5.【答案】C [解析]定义一个抽象数据类型,不仅要清晰地表述出各方面的形式要求,还要清晰地表述出功能要求,因此答案为 C。 6.【答案】B [解析]Python的一个内置类型也可以看作是一个抽象数据类型。 7.【答案】A [解析]ADT的基本思想是抽象,它的定义仅取决于它的一组逻辑特性,把数据结构及其操作 作为一个整体来研究,而与其在计算机内部如何表示和实现无关,因此 A选项错误。 8.【答案】D [解析]本题主要考查的是抽象数据类型的相关知识。定义一个抽象数据类型,不仅需要清晰表述出各方面的形式要求,还需要清晰表达出功能要求,也就是希望这个操作完成什么样的计算或产生什么效果等,因此答案为 D。 9.【答案】B [解析]自定义函数fun(a)的功能是计算并返回列表a的元素之和,与之功能相似的是内置函数 sum()。 【巩固提升】 1.【答案】 ADT Stack: Stack(self) #创建空栈 is empty(self) #判断栈是否为空,空时返回True,否则返回False push(self,elem) #将元素elem加人栈,即人栈 pop(self) #删除栈顶元素并将其返回,即出栈 peek(self) #查看栈顶元素,不删除 [解析]栈涉及的操作主要有建栈、判断栈是否为空、人栈、出栈,查看栈顶元素等操作,结合队列的ADT描述,可以完成栈的ADT描述。 2.【答案】 ADT jx: chang; #长度数据 kuan; #宽度数据 zc(self) #求矩形的周长 mj(self) #求矩形的面积 [解析] ADT 抽象数据类型名: Data 数据元素之间逻辑关系的定义 Operation 操作1 初始条件 操作结果描述 操作2 …… 操作n …… endADT 3.【答案】(1)column(self,h)(2)B [解析](1)根据已有的方法,可知应填入的语是column(self,h)。 (2)为提高计算的精确度,半径、坐标的数据类型最好为浮点型。 4.【答案】D [解析]自定义函数fun(s)的功能是将字符串s中的小写字母转换成大写字母,并返回新的字符串,与之功能相似的是内置函数 s.upper()。 5.【答案】C [解析]类中的revst(self.sl)操作的功能是将字符串s1中的字符进行反转,然后与输人的字符串进行比较,如果相等则判断为回文串,输出“Yes”,否则输出“No”,因此,输人123421时,输出结果为“No”。 6.【答案】D [解析]执行代码“print(sstrl.concat("is soeasy!"))”,输出结果为“Python is so easy!”,因此,答案为 D。 【链接高考】 1.【答案】C [解析]执行语句“print(s.substr(1,5))”,取得字符串s中[1:5+1]的子串,左闭右开区间,字符串的索引从0开始,输出结果为eauti。 2.【答案】B [解析]本题主要考查的是抽象数据类型(ADT)的组成。defjudge(self)的功能是定义judge操作,而不是函数。因此,不正确的是 B。 3.【答案】D [解析]本题主要考查的是抽象数据类型的组成。defid(self)的功能是定义id操作,而不是函教,因此错误的是 D。 4.【答案】C [解析]类中的revst(self.s1)操作的功能是将字符串s1中的字符进行反转,然后与输人的字符串进行比较,如果相等则判断为回文串,输出“Yes”,否则输出“No”,因此,输人123421时,输出结果为“No”。 5.【答案】(1)2*6=12 (2)①self.ch=ch ②c = self.dalal/self.data2 [解析]本题考查定义一个抽象数据类型。(1)根据语句 my_operator=operator(2,6,"≈")可知,数据 datal 和data2 进行乘法运算,因此输出结果为2*6=12。(2)划线①处的语句功能是初始化属性c,因此填人的代码为self.ch=ch;划线②处的语句表示 datal 和 data2 进行除法运算,结果存储在变量c中。 6.【答案】(1)wubstsa,b+l)(2)sscq (3)False、6 (4)2 [解析](1)根据ADT指述,从宇符串中获取子中的操作为sbstr,需要三个参数,第一个参数为字符串本身5,第二、第三个参数分别为子申的开始位置和结束位置的下一个位置。(2)由于操作Siing(s,ss8q)的作用是基于字符中序列scq建立一个字符串s,所以s的初值为s5c9。(3)由于操作is_empty(s)的作用为判断字符中是否为空,若当字符串为空时返回Tnme,则非空时返回Falsc:操作lcn(3)的作用是返同字符串s的长度,所以lem(5)的结果为6.(4)根据ADT指述,操作cham(selfindcx)调用时需要两个参数,一个参数为字符串本身,另一个参数为位置。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

4.3 抽象数据类型(分层作业)信息技术浙教版2019选择性必修1
1
4.3 抽象数据类型(分层作业)信息技术浙教版2019选择性必修1
2
4.3 抽象数据类型(分层作业)信息技术浙教版2019选择性必修1
3
所属专辑
相关资源
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。