资源简介 中小学教育资源及组卷应用平台第三单元特殊的线性表项目五模拟实现软件的撤消功能——栈的应用第二课时设计算法?教材分析本节的主要内容是设计算法。通过以模拟实现软件的撤消功能为主线,整个项目分为问题分析、设计算法和程序实现三个部分。本节课时是通过分析撤消字符操作实例中输入、撤消两个操作,理解栈的“进栈(入栈)”“出栈”两大基本操作,通过活动让学生自行设计进栈、出栈操作和算法。在这一课时过程中,进一步培养学生的信息意识和计算思维。?教学目标1.理解顺序栈存储的原理和特点;2.能设计进栈、出栈的算法;3.培养学生的信息意识和计算思维能力。?教学重点1.理解栈后进先出的特点;2.理解进栈、出栈操作的原理。?教学难点1.理解进栈、出栈操作的原理。2.培养学生的信息意识和计算思维能力。?教学方法体验法、讲授法、讨论法、示例法?教学准备 计算机教室、多媒体设备、多媒体广播软件、教学课件、Python编程环境、学生上机练习的程序文件,预先编制的Python程序文件等。?教学过程一、新课导入复习上堂的内容——栈1.核心概念栈(stack):是一种仅允许在表的一端进行插入或删除操作的线性表。这一端被称为栈顶(top),栈也称为后进先出(lastinfirstout,LIFO)线性表。2.栈的抽象数据类型表示:ADTStack:数据对象:D={ai|ai,∈ElemSet,i=l,2,…,n,n>=0}数据关系:R={ai-1,ai>|ai-1,ai∈D,i=2,…,n}#an为栈顶基本操作:def_init_(self)#初始化一个空栈defSEmpty(self)#若栈空,则返回True,否则返回FalsedefGetTop(self)#返回栈的栈顶元素defPush(self,e)#e元素进栈defPop(self)#返回出栈元素二、设计算法在文档中依次输入a,b,c,d,e后,这些字母会依次进栈点击一下“撤消”按钮,栈内最后一个字母就会出栈。栈可以用数组来存储元素,也可以用链表存储元素。假设用数组存储元素,即用数组存放输入的字母,用一个变量作为栈顶指针,如图3-9中的top。栈顶指针始终指向栈内的最后的元素。图3-9进栈示意进栈和出栈的操作就可以用算法来描述了。思考与讨论栈与队列的操作有何不同?栈的进栈出栈都从栈顶经过,栈底是封闭的;队列进队是在队尾进,出队是在队首出,队首与队尾都是不封闭的。栈的操作特点是后进先出;队列的操作特点是先进先出。栈在操作过程中只需要使用一个指针top;队列需要使用两个front、rear。三、栈的常用基本操作进栈(push):也称入栈,是向栈插入新元素,即把新元素插入到栈顶元素的上面,使之成为新的栈顶元素。出栈(pop):也称退栈,是删除栈顶元素,使其相邻的后一个元素成为新的栈顶小贴士用数组存储的栈称为顺序栈。为方便理解,本项目只存储字母。1.进栈进栈就是从栈底开始,按顺序逐步向栈内添加数据。算法思想:若栈不满,则先将栈顶指针增1,然后送入进栈元素。栈满不能进栈。defPush(self,e):#e为进栈元素,假设栈的容量为sizeif(self.top==self.size-1):print("栈满,不能进栈")else:self.top=self.top+1self.stack[self.top]=ereturn2.出栈出栈就是从栈顶开始,按逆序逐步将栈内数据取出算法思想:若栈不空,则将栈顶指针所指空间内容取出赋予变量,然后将栈顶指针减1。栈空则没有元素可出。defPop(self):ifself.top==-1:print(“栈空,没有元素出栈")else:e=self.Stack[selftop]self.top=self.top-1returne四、课堂活动在算法流程框图中完成进栈和出栈操作(数组名和变量名可以自取)。参考答案:21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://21世纪教育网(www.21cnjy.com)"21世纪教育网(www.21cnjy.com)(共22张PPT)第二课时设计算法信息技术沪教版选择性必修1第三单元特殊的线性表项目五模拟实现软件的撤消功能——栈的应用0102030404课堂活动03栈的常用基本操作02设计算法01新课导入一、新课导入1.核心概念栈(stack):是一种仅允许在表的一端进行插入或删除操作的线性表。这一端被称为栈顶(top),栈也称为后进先出(lastinfirstout,LIFO)线性表。2.栈的抽象数据类型表示:ADTStack:数据对象:D={ai|ai,∈ElemSet,i=l,2,…,n,n>=0}数据关系:R={ai-1,ai>|ai-1,ai∈D,i=2,…,n}#an为栈顶基本操作:def_init_(self)#初始化一个空栈defSEmpty(self)#若栈空,则返回True,否则返回FalsedefGetTop(self)#返回栈的栈顶元素defPush(self,e)#e元素进栈defPop(self)#返回出栈元素二、设计算法在文档中依次输入a,b,c,d,e后,这些字母会依次进栈点击一下“撤消”按钮,栈内最后一个字母就会出栈。栈可以用数组来存储元素,也可以用链表存储元素。假设用数组存储元素,即用数组存放输入的字母,用一个变量作为栈顶指针,如图中的top。栈顶指针始终指向栈内的最后的元素。思考与讨论栈与队列的操作有何不同?思考与讨论栈的进栈出栈都从栈顶经过,栈底是封闭的;队列进队是在队尾进,出队是在队首出,队首与队尾都是不封闭的。思考与讨论栈的操作特点是后进先出;队列的操作特点是先进先出。栈在操作过程中只需要使用一个指针top;队列需要使用两个front、rear。三、栈的常用基本操作栈的常用基本操作进栈(push):也称入栈,是向栈插入新元素,即把新元素插入到栈顶元素的上面,使之成为新的栈顶元素。进栈出栈(pop):也称退栈,是删除栈顶元素,使其相邻的后一个元素成为新的栈顶出栈进栈进栈就是从栈底开始,按顺序逐步向栈内添加数据。算法思想:若栈不满,则先将栈顶指针增1,然后送入进栈元素。栈满不能进栈。defPush(self,e):#e为进栈元素,假设栈的容量为sizeif(self.top==self.size-1):print("栈满,不能进栈")else:self.top=self.top+1self.stack[self.top]=ereturn出栈出栈就是从栈顶开始,按逆序逐步将栈内数据取出。算法思想:若栈不空,则将栈顶指针所指空间内容取出赋予变量,然后将栈顶指针减1。栈空则没有元素可出。defPop(self):ifself.top==-1:print(“栈空,没有元素出栈")else:e=self.Stack[selftop]self.top=self.top-1returne课堂活动在算法流程框图中完成进栈和出栈操作(数组名和变量名可以自取)。开始栈不满吗?否是结束进栈操作在算法流程框图中完成进栈和出栈操作(数组名和变量名可以自取)。开始栈不满吗?否是结束进栈操作Strck[top]←etop←top+1在算法流程框图中完成进栈和出栈操作(数组名和变量名可以自取)。开始栈不空吗?否是结束出栈操作在算法流程框图中完成进栈和出栈操作(数组名和变量名可以自取)。开始栈不空吗?否是结束出栈操作e←Strck[top]top←top-1谢谢21世纪教育网(www.21cnjy.com)中小学教育资源网站有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源列表 项目五(第二课时).doc 项目五(第二课时).pptx