4.1 算法及其特征
授课题目:算法及其特征
授课章节:第四章 第1节
课 型:新授课
课 时:1课时
一、【教学目标】
1.知识与技能:
①熟悉将解决问题的方法归结为一系列清晰、准确的步骤的过程
②了解算法的基本要素和重要特征
2.过程与方法:
①运用恰当的方式描述算法
②运用python语言实现简单算法,解决问题
3.情感态度与价值观:
二、【教学重点】
①运用恰当的方式描述算法
②运用python语言实现简单算法,解决问题
三、【教学难点】
运用python语言实现简单算法,解决问题
四、【教学方法】
讲授法、讨论法、任务驱动法
五、【教学过程】
教学环节 教学内容 教师活动 学生活动 设计意图
一、创设情境 (活动1:寻找开关对应关系) 活动1(寻找开关对应关系)一个房间有3盏灯,房间外有3个开关分别控制这3盏灯,在只允许进房间一次的情况下,如何判断哪个开关控制哪盏灯? 想一想:灯泡除了亮和灭两种状态外,还有什么状态? 分析问题:灯具有亮和灭两种状态,同时开灯会伴有发热现象,触摸灯泡会有冷和热两种状态。因此一盏灯具可能有4种不同的状态。如何使3盏灯处于不同的状态? 解决问题的步骤(自然语言描述) 1.开1号和2号两个开关。 2.2分钟后关闭1号开关,进入房间。 3.显然亮着的灯由2号开关控制。触摸一下另外两盏不亮的灯,发热的灯肯定由1号开关确定。剩下的灯由3号开关控制。 解决问题的步骤(流程图描述) 创设情境、引发思考 思考解决问题的方法和步骤
二、新授内容 (算法) 算法的定义 算法是解决问题的方法和步骤。 算法的描述方法 ①自然语言;②流程图;③伪代码。 算法的特征 1.有穷性。算法必须能在执行有限步骤之后终止。 2.确切性。算法中的每一次运算都有明确的定义,无二义性,计算结果唯一。 3.输入项。一个算法有0个或多个输入。 4.输出项。算法一定要有输出。任何算法不能“无功而返”。 5.可行性。算法在有限时间内完成,运算必须是可以实现的。 幻灯片展示,诱导总结算法的特征 记笔记总结
三、创设新情境 (活动2 定量分析,解决问题) 活动2(寻找被污染的药丸)有4个分别装了4种药丸的药瓶,里面每颗药丸都有单颗标准质量,其中有一个药瓶中的所有药丸都被污染了。每颗被污染的药丸比正常药丸增重1克。请在只允许称量一次的情况下,判断出哪个药瓶中的药丸被污染了。 分析问题:如果从每个药瓶中取出1颗药丸分别进行称重,肯定可以判断哪颗药丸被污染了,但这不符合题目要求。如何改进判断方法呢?考虑:1颗药丸被污染,则增重1克;n颗药丸被污染,则增重n克;如果我们从不同的瓶子中取出不同颗数的药丸,则可以判断是哪个瓶子被污染了。 解决问题的步骤(自然语言描述) 1.从第1个瓶子取出1颗药丸; 2.从第2个瓶子取出2颗药丸; 3.从第3个瓶子取出3颗药丸; 4.从第4个瓶子取出4颗药丸; 以上共10颗药丸,进行称重,结果如下: 1.如果增重1克,则为1号瓶子污染; 2.如果增重2克,则为2号瓶子污染 …… 请根据算法设计程序,输入单颗药丸重量及10颗药丸的总重量,判断输出是哪个瓶子被污染。 创设情境、设置任务 尝试解决问题
四、创设新情境 (活动3 巧用运算,解决问题) 活动3(寻找误删的ID号)学校历届校友的数据存储在学校网络中心服务器中(共10000条,无重复数据),某管理员由于误操作删除了一位校友的ID号(8位整数)。恰好在备份文件中保存了所有人员的ID号(无重复数据,无序)。怎样快速找出被误删的ID号以便回复数据? 分析问题:仔细分析,我们发现参与处理的只有ID号,ID号的特征也很明显。 ①ID号的数据类型及大小范围是:8位整型; ②数据在两个文件中出现的次数:1次; ③备份文件中ID号总和与故障文件中的ID号总和差值为:误删ID号。 程序实现充分利用数值及计算的特点,可以将复杂的查找过程转换成简单的计算。准备copy.txt文件(10个数,每行一个)作为备份文件trouble.txt文件(9个数,每行一个)作为误删ID后的文件。用python编程计算两个文本文件中数据的总和之差。 指导学生编写程序,解决实际问题 编程调试,查看运行结果
五、创设新情境 (活动4 尝试枚举) 活动4(尝试枚举,谁是冠军)冠军是ABCD四位同学中一位。A说:不是我。B说:是C。C说:是D。D说:C说的不对。已知四人中有一人说了假话。问:到底谁是冠军。 分析问题:在不知道谁说真话、假话的情况下,最简单的方法就是把所有可能都枚举出来。因为只有一位冠军,可以枚举选手的编号,并对ABCD四个人的话进行判断。 枚举法是利用了计算机运算速度快、精确度高的特点来解决实际问题。枚举法是将所有可能的答案一一列举,合适就保留,不合适就丢弃,称为“枚举”或“穷举”。 程序实现 我们需要把每个人说的话转化成计算机能够执行的表达式。A说不是我,可以表达为: i!=‘A’,i表示冠军的编号。它的结果是一个逻辑值,在数值计算中会自动转换成1(真)或0(假)。那么题目中说有3个人说话是真的,我们可以将4个人的话都换成逻辑表达式,然后计算累和,枚举i,看i为哪一个值的时候累和为3。 champion=['A','B','C','D'] #设置选手列表 for i in champion: #循环读取选手编号 cond=(i!='A') +(i=='C') + (i=='D')+(i!='D') #查找符合条件的选手 if cond==3: #说真话是否是3人 print("冠军是:",i) #输出冠军 input("运行完毕,请按回车键退出...") 诱发思考,指导学生完成程序辨析 积极思考,上机完成程序
七、课堂小结 算法的定义(描述解决问题的方法和步骤) 算法的描述方法(自然语言、流程图、伪代码)。 算法的特点:有穷性、确切性、0个或多个输入、至少1个输出、可行性。 几种常用的简单算法:状态分析、定量分析、巧用运算、简单枚举。
六、【板书设计】
七、【教学反思】