资源简介 教学单元 认识数据 教学主题 算法及其特征教学目标知识与技能 能够合理并综合运用三种类型的流程图 能够将算法、流程图进行互相转换 能够通过流程图解决实际问题 过程与方法 通过讲授时的活动练习和探究任务,提高综合运用算法、流程图实现程序设计的能力。 情感态度价值观 能够从实际生活中、其他学科中感知到算法和流程图的实际价值。核心素养培养通过选择排序算法将算法、流程图和程序设计结合起来,奠定高级算法基础和高阶信息素养。教学内容算法;选择排序算法与数组数据类型;枚举算法教学媒体电子白板、PPT教学过程教学环节 教师活动 学生活动 设计意图旧知复习 将流程图转换为算法 【问题】 该流程图的目的是什么? 1.输入变量a、b的值。 2.比较a和b。如果a>b,则a存入以max命名的存储单元中;否则,b存入max。 3.输出结果max。 回答问题:比较a与b的大小,并输出最大值。 让学生通过观察流程图,图形化语言的内容转化为中文的思维流程,使其回忆选择结构流程图的使用过程和结果。课堂讲授 【知识点一、算法】软件开发社团要招募新成员,报名的同学要经过面试才能加入。第一关面试题是: “一个房间有3盏灯,房间外有3个开关分别控制这3盏灯。在只允许进房间一次的情况下,如何判断哪个开关控制哪盏灯? 【任务分析】 灯的属性: 1、亮与不亮; 2、热与不热; 灯亮推出开关的控制 灯热推出灯曾经亮过。 其步骤为: 首先开1号、2号两个开关; 2分钟后关闭1号开关; 进房间,显然亮着的灯由2号开关控制; 接下来摸一下另外两盏不亮的灯,发热的灯肯定由1号开关控制; 最后确定3号开关控制的灯。 思考并依据教师提示和任务要求,探究完成步骤分析。 经过梳理算法步骤,将其转化为流程图。 首先,学生依据任务分析探究完成算法的实现,理解算法的功能和价值,然后将算法转化为流程图,使其深度理解算法和流程图的区别于练习,并能够综合运用算法和流程图。 最后由学生和教师共同归纳总结算法的内涵和特征,培养其结论的推理能力。2、算法 从某种意义上说,算法也是一种数学模型。一般而言,问题求解的第一步是数学建模。用数学语言描述实际现象,将现实世界的问题抽象成数学模型,就可能发现问题的本质并判定其能否求解,继而找到求解该问题的方法和算法。 3、算法的重要特征 有穷性 算法必须能在执行有限个步骤之后终止。 确切性 算法中的每一次运算都有明确的定义,具有无二义性,并且可以通过计算得到唯一的结果。 输入项 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身给出了初始条件。 输出项 算法一定要有输出。任何算法都不能"无功而返"。 可行性 算法中执行的任何计算都可以在有限时间内完成(也称为有效性)。算法中的运算都必须是可以实现的。 认真思考并记录笔记。【知识点二、选择排序算法与数组数据类型】选择排序算法是常用的一种排序思维。 播放【选择排序】视频,让学生观看视频并思考其原理。 1、选择排序算法 内涵 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,所以称为:选择排序。 原理(或算法) 设第一个元素为比较元素,依次和后面的元素比较 比较完所有元素找到最小的元素,将它和第一个元素互换 重复上述操作,我们找出第二小的元素和第二个位置的元素互换 以此类推找出剩余最小元素将它换到前面,即完成排序 观看视频并思考总结内涵和原理。 自主书写算法过程。 遇到疑难需要向教师提出。 根据教师引导完成提问中的内容并理解数组实例的排序过程。 阅读题目。 认真思考并记录笔记。 根据代码执行结果深度理解数组的原理和表示方式。 学生依据教师提示逐步完成流程图。 程序代码: A = [4,5,6,3,2,1] #print(len(A)) #len(A):返回数组A的长度,可通过print(len(A))来看一下结果 for i in range(len(A)): min_idx = i #设min_idx为A数组的初始位置,即A[min_idx]=64 for j in range(i+1, len(A)): #执行循环,进行两个数的比较,将最小值的序号赋值为min_idx if A[min_idx] > A[j]: min_idx = j A[i], A[min_idx] = A[min_idx], A[i] #交换顺序,将最小值放在前面 print ("排序后的数组:") for i in range(len(A)): print("%d" %A[i]) 程序结果 让学生反复观看视频,在教师引导下总结归纳选择排序算法的内涵和原理。 由学生总结归纳肯定存在难度和挑战,因此教师提供具体实例脚手架为学生详细解释和程序选择排序算法的过程,并逐步解决学生的思维疑惑。 在实例中让学生理解数组数据类型的使用,既能让学生理解字符串,又能拓展学习数据的相应函数。引入方式恰当合理。 在探究练习中,教师的提示支架非常重要,在综合任务完成过程中,不断关注学生的挑战难点,并且提供恰当的提示,引导学生自主完成任务。2、详解选择排序算法过程 观察下侧交换位置,请你说出各数组的实现过程和原理。3、练习 给出数组4、5、6、3、2、1 1、画出每次排序的结果,并说明每次排序的过程。 2、绘制选择排序的流程图。 练习前为学生提供支架知识: 【数据类型——数组】 数组用于在单个变量中存储多个值。 为学生讲解数组的实际存储原理以及表示方式。 【练习】尝试以下代码 教师提示学生完成该数组排序的过程和需用用到的流程图结构: 核心结构:循环结构和选择结构 设需要比较的数为a[i] 设移动比较的数为a[j] 循环结构为: j=i+1:起始比较 j=j+1:逐位移动 选择结构为: 如果a【知识点三、枚举算法】我们常利用计算机运算速度快、精确度高的特点解决实际问题。在设计算法时,最简单的方法就是"直译"我们的思维过程。有一种算法是把所有可能的答案一一列举,合适就保留,不合适就丢弃。这种方法称作“枚举”或“穷举”。 【活动】 这次面试的冠军在A、B、C、D四位同学中。 A说:“不是我。” B说:“是C。” C说:“是D。” D说:“C说的不对。” 已知四人中有一人说了假话。你能判断出到底谁是冠军吗?说出你的结论和判断过程。 【分析】C和D是矛盾的 在不知道谁说真话、谁说假话的情况下,最简单的方法就是把所有可能都枚举出来。因为只有一位冠军,所以可以枚举选手的编号,并对A、B、C、D四个人的话进行判断。 在本任务中,我们需要把每个人说的话转化成计算机能够执行的表达式。如A说: “不是我。”可以表示为“i!='A'”,其中i为枚举冠军选手编号。 【问题】 1、(i==‘D’)+(i!=‘D’)结果必然为1。 2、尝试修改代码,使得输出冠军为A 认真听讲并记笔记。 认真分析题干,并判断ABCD四个人中,哪些人说话存在矛盾,即两者之间只有1位是正确的。 通过教师的分析判断,设计如下代码并执行: champion=['A','B','C','D'] #设置选手列表# for i in champion: cond=(i!='A')+(i=='C')+(i=='D')+(i!='D') if cond==3: print("冠军是:",i) 回答问题并完成任务。 枚举法中的综合练习任务能够让学生理解循环+判断的综合运用,并能够解决实际生活中的案例。 体现出学生探究活动的自主学习能力和教师的引导作用。拓展学习 PAD流程图 PAD图(问题分析图)是一种算法描述工具,它所描述的程序结构十分清晰。 最左边的竖线是程序的主线,即第一层控制结构。随着程序层次的增加,PAD图逐渐向右衍生,每增加一个层次,图形向右扩展一条竖线。程序从最左边上端的节点开始按自上而下、从左到右的顺序执行。 【任务】 依据拓展资料,将“选择排序”算法转换成PAD流程图 自主查找资料并学习相关的pad流程图内容。并完成相应任务。 学生自主查找资料学习在软件工程领域中的高级流程图内容。课后作业 1、算法和流程图的区别是什么? 2、如何解决一个问题最终利用代码实现程序? 3、选择排序的原理是什么? 4、枚举算法的原理是什么? 巩固、加强学习,并解决开放性问题。(共28张PPT)算法及其特征2019教科版高中信息技术学习目标熟悉将解决问题的方法归结为一系列清晰、准确的步骤的过程。了解算法的基本要素和重要特征。运用恰当的方式描述算法。运用Python 语言实现简单算法,解决问题。三维目标一、旧知复习【流程图】一、旧知复习【流程图】1.输入变量a、b的值。2.比较a和b。如果a>b,则a存入以max命名的存储单元中;否则,b存入max。3.输出结果max。将右侧的流程图转换为算法该流程图的目的是什么?比较a与b的大小,并输出最大值。算法软件开发社团要招募新成员,报名的同学要经过面试才能加入。第一关面试题是:“一个房间有3盏灯,房间外有3个开关分别控制这3盏灯。在只允许进房间一次的情况下,如何判断哪个开关控制哪盏灯?”二、知识讲授二、知识讲授1、亮与不亮;2、热与不热;灯亮推出开关的控制灯热推出灯曾经亮过。灯的属性算法二、知识讲授分析步骤:首先开1号、2号两个开关;2分钟后关闭1号开关;进房间,显然亮着的灯由2号开关控制;接下来摸一下另外两盏不亮的灯,发热的灯肯定由1号开关控制;最后确定3号开关控制的灯。根据左侧算法补充完整流程图算法二、知识讲授首先开1号、2号两个开关;2分钟后关闭1号开关;进房间,显然亮着的灯由2号开关控制;接下来摸一下另外两盏不亮的灯,发热的灯肯定由1号开关控制;最后确定3号开关控制的灯。根据左侧算法补充完整流程图算法二、知识讲授首先开1号、2号两个开关;2分钟后关闭1号开关;进房间,显然亮着的灯由2号开关控制;接下来摸一下另外两盏不亮的灯,发热的灯肯定由1号开关控制;最后确定3号开关控制的灯。根据左侧算法补充完整流程图算法二、知识讲授算法从某种意义上说,算法也是一种数学模型。一般而言,问题求解的第一步是数学建模。用数学语言描述实际现象,将现实世界的问题抽象成数学模型,就可能发现问题的本质并判定其能否求解,继而找到求解该问题的方法和算法。二、知识讲授算法二、知识讲授选择排序算法观看视频并思考,视频里是如何实现由小到大排序的?二、知识讲授选择排序算法二、知识讲授【9和2交换】【6和4交换】???观察左侧交换位置,请你说出各数组的实现过程和原理。选择排序算法二、知识讲授给出数组4、5、6、3、2、11、画出每次排序的结果,并说明每次排序的过程。2、绘制选择排序的流程图。【练习】选择排序算法二、知识讲授数据类型——数组数组用于在单个变量中存储多个值【练习】尝试以下代码二、知识讲授数据类型——数组数组用于在单个变量中存储多个值语句 阐释 结果course = ["语文", "数学", "英语"] print(course) 设置数组为course ["语文", "数学", "英语"] 输出数组courseprint(len(course)) 输出数组course的长度course[0]=“历史” print(course) 将“语文”改为“历史” 输出数组coursefor i in course: print(i) 遍历course数组,并将每个值赋给i,输出i【练习】尝试以下代码二、知识讲授核心结构:循环结构和选择结构设需要比较的数为a[i]设移动比较的数为a[j]循环结构为:j=i+1:起始比较j=j+1:逐位移动选择结构为:如果a选择排序算法二、知识讲授【练习】设计程序代码实现数组4、5、6、3、2、1的Python程序选择排序算法二、知识讲授A = [4,5,6,3,2,1]#print(len(A)) #len(A):返回数组A的长度,可通过print(len(A))来看一下结果for i in range(len(A)):min_idx = i #设min_idx为A数组的初始位置,即A[min_idx]=64for j in range(i+1, len(A)): #执行循环,进行两个数的比较,将最小值的序号赋值为min_idxif A[min_idx] > A[j]:min_idx = jA[i], A[min_idx] = A[min_idx], A[i] #交换顺序,将最小值放在前面print ("排序后的数组:")for i in range(len(A)):print("%d" %A[i])【运行程序】选择排序算法二、知识讲授我们常利用计算机运算速度快、精确度高的特点解决实际问题。在设计算法时,最简单的方法就是"直译"我们的思维过程。有一种算法是把所有可能的答案一一列举,合适就保留,不合适就丢弃。这种方法称作“枚举”或“穷举”。枚举算法二、知识讲授枚举算法这次面试的冠军在A、B、C、D四位同学中。A说:“不是我。”B说:“是C。”C说:“是D。”D说:“C说的不对。”已知四人中有一人说了假话。你能判断出到底谁是冠军吗?说出你的结论和判断过程。【活动】C和D是矛盾的二、知识讲授在不知道谁说真话、谁说假话的情况下,最简单的方法就是把所有可能都枚举出来。因为只有一位冠军,所以可以枚举选手的编号,并对A、B、C、D四个人的话进行判断。在本任务中,我们需要把每个人说的话转化成计算机能够执行的表达式。如A说:“不是我。”可以表示为“i!='A'”,其中i为枚举冠军选手编号。枚举算法二、知识讲授champion=['A','B','C','D']#设置选手列表#for i in champion: cond=(i!='A')+(i=='C')+(i=='D')+(i!='D') if cond==3: print("冠军是:",i)执行左侧代码并尝试说明cond的内涵。1、(i==‘D’)+(i!=‘D’)结果必然为1。2、尝试修改代码,使得输出冠军为A枚举算法三、拓展学习PAD流程图PAD图(问题分析图)是一种算法描述工具,它所描述的程序结构十分清晰。最左边的竖线是程序的主线,即第一层控制结构。随着程序层次的增加,PAD图逐渐向右衍生,每增加一个层次,图形向右扩展一条竖线。程序从最左边上端的节点开始按自上而下、从左到右的顺序执行。三、拓展学习PAD流程图依据拓展资料,将“选择排序”算法转换成PAD流程图四、课后作业1、算法和流程图的区别是什么?2、如何解决一个问题最终利用代码实现程序?3、选择排序的原理是什么?4、枚举算法的原理是什么? 展开更多...... 收起↑ 资源列表 算法及其特征.docx 算法及其特征.pptx