资料中包含下列文件,点击文件名可预览资料内容
还剩21页未读,
继续阅读
所属成套资源:新教科版信息技术选修1数据与数据结构PPT课件+教案全套
成套系列资料,整套一键下载
教科版 高二选择性必修1信息技术第3课《认识数据抽象》课件+教案
展开
1.3认识数据抽象高中信息技术/教科版/选择性必修1目录1.情景导入2.新知讲授3.拓展练习4.课堂小结1.情境导入大多数人家里都有电视机,那么有谁知道电视机接收节目、显示画面的原理?如果不知道这些原理,是否影响我们使用电视机来收看节目?本节我们将通过“电视机的抽象”“程序化电视机”等活动了解电视机的运行原理,建立抽象的概念。2.新知讲授在计算机科学中,抽象 (abstraction)是一种抛弃局部“物理的”细节,从整体“逻辑的”角度来看待事物的方式。所谓“逻辑的”,一般指事物的性质、功能、相互关联等,而“物理的”,则是事物的具体构成、实现细节和运作方式等。 任务一 电视机中的抽象 活动1 了解用户眼中的电视机每家每户的电视机在外观、尺寸、内部结构和节目接收方式上会有很多不同,但在收看节目方面,许多人都能够在短时间里熟悉一台电视机的操作方式,熟练地收看节目。如果电视机遥控器丢失,可以购买“万能遥控器”来操作电视,这说明了什么问题?说明电视机的基本功能都相同,甚至遥控器与电视机通信的方式也基本相同。从抽象的角度来看,用户看到的是电视机逻辑的一面。用户使用的是电视机设计者提供的一系列能够收看和切换电视节目的功能,这些功能会通过遥控器上的按钮来提供,电视机身上也有-些按钮,这些按钮也可以被称为操作界面或接口 (interface)。“节目源”按钮“频道”上下箭头按钮“音量”上下箭头按钮 任务一 电视机中的抽象 活动1 了解用户眼中的电视机抽象和接口通过抽象方法,我们可以专注于问题解决方案的顶层逻辑功能设计,从问题的整体和全局出发,定义一系列接口,让用户可以通过调用接口来执行逻辑功能,而无须关心接口的具体物理实现细节。这样,对于用户来说,问题的复杂程度就大大简化了。 任务一 电视机中的抽象 活动1 了解用户眼中的电视机 任务一 电视机中的抽象 活动2 了解机壳之内的物理实现同样是一台电视机,观众只需要一台遥控器就可以观看电视节目,无需关心电视机运行的原理。而对于家电维修员,不仅要知道如何使用电视机,而且需要知道保证电视机功能正常的物理实现细节。他需要理解节目画面如何被显示、遥控器信号如何被接收、如何连接内部的音箱等。成像模块是电视机画面输出的核心部件,虽然各种电视机的操作界面相似,但形成画面的成像模块却可能差别甚大,阅读下表的内容,了解不同成像方式实现的一些细节,试着查找资料,填写表中的空白部分。较高液晶显示屏较大光源透射投影大中等不同成像方式电视机的技术实现对比表 任务一 电视机中的抽象 活动2 了解机壳之内的物理实现计算机程序是如何抽象的呢?程序中的抽象编写程序的时候,也常常需要抽象。Python 提供了很多内置函数库,我们可以直接调用这些函数,而无须关心或者了解这些函数功能具体是如何实现的。例如,要计算某个数的平方根,可以在导入Python的math标准模块之后,直接调用math.sqrt()函数来求值,而不用了解这个函数是如何对整数或者浮点数开平方的。如果我们把电视机的逻辑功能接口写成Python 函数的形式,那么用户收看一次节目的过程就可以写成一段程序了。下表是电视机功能接口的定义表。 任务二 程序化的电视机 活动1 收看虚拟的电视机 任务二 程序化的电视机 活动1 收看虚拟的电视机补充完整下列程序,完成一次节目收看,并在计算机上运行和验证程序。01.#导入电视机模块02. import tv03. myTV=tv.TVSet( )04.myTV.powerOn( )#新建一个电视机对象#开启电源#切换到“TV”节目源#收看6频道#看下一个频道#看下一个频道#看下一个频道#看上一个频道#调小音量#关闭电源myTV.shift(“Tv”)myTV.channel(6)myTV.channelUp( )myTV.channelUp( )myTV.channelUp( )myTV.channelDown( )myTV.volumeDown( )myTV.powerOff( )过程抽象和数据抽象过程抽象和数据抽象实现操作接口用户实际上,在编写电视收看程序的时候,已经用到了电视机的数据抽象。利用 Python 语言的面向对象机制,我们在电视机模块tv中定义了一个电视机类TVSet。请从教科书配套资源中找到tv.py文件,查看其中电视机类TVSet的每一个方法说明,了解电视机类TVSet的使用方法,并将每个方法的名称摘抄在下表中。 任务二 程序化的电视机 活动2 了解电视机类TVSet的使用说明请从教科书配套资源中找到虚拟现实头盔模块vrhmd,修改前面的电视收看程序,完成全景影像节目收看。 任务二 程序化的电视机 活动3 了解虚拟现实头盔01.#导人虚拟现实头盔模块02. import vrhmd03.myTV=vrhmd.TVSet( )04.myTV.powerOn( )#切换到“VR”节目源#收看6频道#看下一个频道#看下一个频道#看下一个频道#看上一个频道#调小音量#关闭电源myTV.shift(“VR”)myTV.channel(6)myTV.channelUp( )myTV.channelUp( )myTV.channelUp( )myTV.channelDown( )myTV.volumeDown( )myTV.powerOff( )数据封装数据抽象实现了数据封装(encapsulation),其优势不仅在于能够把逻辑功能和实现细节分离,分解问题的复杂度,而且还使得数据对象的可扩展性大大增强,在更换逻辑功能的具体实现方案后,只要接口的功能和定义不变,就无须修改上层程序代码。利用抽象方法,可以将一个高复杂度的问题分解为若干层次。这种层层抽象的细分结构,既有效限制了每个层次上的问题复杂度,又有利于问题解决方案的重复利用,可以做到下层实现细节的变动不影响上层的逻辑功能,具有强大的灵活性和可扩展性。抽象数据类型抽象数据类型(Abstract Data Type,ADT)是抽象概念在数据结构上的具体应用。将数据对象分析的结果,以逻辑功能接口的形式固定下来,就成为抽象数据类型。抽象数据类型实现了数据对象的封装,并不涉及数据对象的实现细节,而是通过接口的形式描述了数据的组成和对数据的各种操作。抽象数据类型并不受特定实现和编程语言的约束,可以通过调整实现方法来应对应用需求的变化。抽象数据类型概念的引入,降低了大型软件系统的复杂度,提高了程序的可读性与可维护性,使软件系统的各部分相对隔离,在一定程度上解决了软件可靠性、生产率等方面的问题。3.拓展练习利用所学的物理学知识,编程实现平抛运动 (Horizontal Projectile Motion,HPM)类HPMotion,该类提供下列接口:class HPMotion:def __init__(self, h, vx): #初始化接口,参数为高度h和水平速度vx #指定时刻t的速度,返回元组 (vx,vy ) 分别是水平、竖直方向的速度值def velocity(self, t):#指定时刻t的位移,返回元组 ( dx,dy ) 分别是水平、竖直方向的位移def displacement(self, t):运行程序,通过调用HPMotion类的接口,无须了解内部计算公式,就能够得到指定时刻t的速度和位移值,深入体验数据抽象的概念及其带来的便利。class HPMotion: def__init__(self,h,vx) self.g=9.8 self.h=h self.vx=vx def velocity(self,t): vy=self.g*t return self.vx,vy def displacement(self,t): dx=self.vx*t dy=0.5*self.g*t*t return dx,dy hpm=HPMotion(10,60) import turtle tut=turtle.Turtle() turtle.setworldcoordinates(0,1000,1000,0) turtle.title("平抛运动") for t in range(20): print("时间s",t,"速度vx/vy",hpm.velocity(t),"位移dx/dy",hpm.displacement(t)) tut.goto(hpm.displacement(t)) tut.dot(10,"blue")4.课堂小结本节的主要学习内容是数据抽象的概念。通过常见的电视机案例,展现了数据抽象中“逻辑”“物理”“接口”“实现”等概念,通过程序实例说明了抽象方法的优势,引出抽象数据类型的概念。下节课见!