内容正文:
4.1算法及其特征(第一课时)
《软件社团纳新-探讨面试解决方案》
学习目标
★熟悉将解决问题的方法归结为一系列清晰、准确的步骤的过程。
★了解算法的基本要素和重要特征。
★运用恰当的方式描述算法。
★运用Python语言实现简单算法,解决问题。
姓名:小新
职业:高一学生
爱好:计算机编程
性格:活泼开朗大男孩
大家好啊!我是小新。我们学校“软件开发社团”要招募新成员了,报名的同学要经过面试才能加入。我已经开始了面试闯关任务,现在遇到了难题,请大家帮我一起完成闯关吧!
通关任务
第一关:寻找“开关对应关系”
第二关:定量分析,寻找“被污染的药丸”
第三关:巧用运算,寻找“误删的ID号”
第四关:尝试枚举,求解“谁是冠军”
思考:我们可以用什么样的方法和步骤来帮他解决问题?
教材版本 出版社 / 机构 算法定义
人教版(高中必修 1) 人民教育出版社 算法是解决问题的一系列确定的、有限的步骤,具有有穷性、确定性、可行性、输入输出明确性。
苏教版(高中必修 3) 江苏凤凰教育出版社 算法是解决问题的有条理的步骤集合,要求步骤明确、有限、有效,且能在有限时间内完成。
粤教版(高中必修 1) 广东教育出版社 算法是有限步骤内求解问题的规则集合,可被机械执行,强调输入输出的明确性与步骤的无歧义性。
教科版(高中必修 1) 教育科学出版社 算法就是解决问题的方法和步骤。
浙教版(高中选修 1) 浙江教育出版社 算法是解决问题的步骤序列,具有有穷性、确定性、可行性、输入输出明确性,是程序设计的核心。
AP 计算机科学(美国) College Board An algorithm is a step-by-step procedure for solving a problem or accomplishing a task, often involving logical operations and data manipulation.
《算法导论》(学术经典) MIT Press 算法是定义良好的计算过程,取输入并产生输出,通过有限步骤实现特定目标,强调数学严谨性与效率分析。
算法其实就在我们身边,日常生活中的一些做法如果我们将他抽象成数学描述,可能就是一些非常有效的算法。
图片由豆包AI生成
算法可能是一个计算公式,可能是一个赢得游戏的策略,也可能是一个解决综合问题的复杂方案。但无论是什么算法,它的核心逻辑都是“输入--处理--输出”。其中,输出是连接算法与外部世界的桥梁。
去超市购物
做周末计划
抖音短视频
......
导航系统
第一关:
一个房间有3盏灯,房间外有3个开关分别控制这3盏灯。在只允许进房间一次的情况下,如何判断哪个开关控制哪盏灯?
寻找“开关对应关系”
图4.1.1 开关对应关系
“软件开发社团”面试项目
寻找“开关对应关系”
视觉上:亮/灭
触觉上:热/冷
“软件开发社团”面试项目
一盏可以正常使用的灯,视觉上来看,灯的状态是( 亮/灭 )的;触觉上来看,灯的状态是( 热/冷 )的。所以,一盏灯有( 4 )种状态。而在房间里共有3盏灯,完全可以保障每盏灯的状态都是唯一的。
寻找“开关对应关系”
关闭1号开关
灯亮
2号开关控制
发热
1号开关控制
3号开关控制
图4.1.2 “开关对应关系”流程图
如何使3盏灯处于不同的状态?
请用自然语言描述你的算法:
第一步:
第二步:
第三步:
第四步:
......
为开关和灯分别编号
开1号、2号两个开关,2分钟后关闭1号开关
进入房间,亮着的灯由2号开关控制
触摸不亮的灯,发热的由1号开关控制,不发热的灯由3号开关控制
该算法用到哪种结构?
“软件开发社团”面试项目
寻找“开关对应关系”
“软件开发社团”面试项目
为什么不用程序语言来表示该算法呢?
有难度!
自然语言:表述贴近自然,表述方便,但容易有二义性;
流程图:表示比较清晰,但绘制麻烦;
程序语言:功能强大,编写有难度。
在解决实际问题时,我们应该根据问题所需选择恰当的表达方式。
观察现象,自主思考
分析 寻找“开关对应关系” 算法的特征
哪些信息属于输入? 输入项: □0个输入 □1个输入 □多个输入 0个或多个输入
哪些信息属于输出? 输出项: □0个输出 □1个输出 □多个输出 一定要有输出
执行的结果是什么? 执行的结果:□确定的 □不确定的 □都可以 确切性
需要几步得到结果? 执行的步骤:□有限 □无限 □都可以 有穷性
是否在有限时间内完成? 执行的时间:□有限 □无限 □都可以 可行性
√
√
√
√
√
“软件开发社团”面试项目
寻找“被污染的药丸”
第二关:
有4个装了药丸的瓶子,每颗药丸都有单颗标准质量,其中一个药瓶中所有药丸被污染了。每颗被污染药丸比污染前增重1克。只允许称量一次,判断出哪个瓶子的药丸被污染了。
1.1颗药丸被污染增重为1克,增重量为n克说明( )颗药丸被污染;
2.从1-4号药瓶依次取1-4颗药丸,共取出( )颗药丸;
3.设每颗正常药丸重d克,取出的药丸污染前总重( )克;实际称量取出的所有药丸重w;则比污染前增重x=( )克。
结论:被污染的药瓶序号为( )。
n
10
10d
w-10d
w-10d
“软件开发社团”面试项目
合作探究,寻找“被污染的药丸”
“软件开发社团”面试项目
现在各小组按照这个思路,讨论设计算法,并用程序语言描述算法,五分钟后我们进行展示。
d=int(input(“请输入每颗药丸的标准重量:”))
w=int(input(“请输入药丸称得的重量:”))
x=
print(“被污染的药瓶序号是:”,x)
input(“运行完毕,请按回车键退出.......”)
w-10*d
类比总结
分析 寻找“开关对应关系” 寻找“被污染的药丸” 算法的特征
哪些信息属于输入? 输入项: □0个输入 □1个输入 □多个输入 输入项: □0个输入 □1个输入 □多个输入 0个或多个输入
哪些信息属于输出? 输出项: □0个输出 □1个输出 □多个输出 输出项: □0个输出 □1个输出 □多个输出 一定要有输出
执行的结果是什么? 执行的结果:□确定的 □不确定的 □都可以 执行的结果:□确定的 □不确定的 □都可以 确切性
需要几步得到结果? 执行的步骤:□有限 □无限 □都可以 执行的步骤:□有限 □无限 □都可以 有穷性
是否在有限时间内完成? 执行的时间:□有限 □无限 □都可以 执行的时间:□有限 □无限 □都可以 可行性
√
√
√
√
√
√
√
√
√
√
“软件开发社团”面试项目
帮小新完成了两项闯关任务,你对算法的基本要素和重要特征有了什么样的认识?
归纳总结
对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
分析问题
解决一个问题,可能有多种算法。例如,数学题常常有“一题多解”,应该通过分析、比较、挑选-种最优的算法。
设计算法
计算机只能接受并执行计算机程序设计语言编写的程序。当为解决一个问题确定了算法后,还必须将该算法用计算机程序设计语言编写程序。这个过程成为“编码”或“编程”。
编写程序
编写完成的程序,不一定完全符合实际问题的要求,还必须在计算机上运行这个程序,排除程序中可能出现的错误,才能得到结果。
调试与维护
计算机解决问题的过程
归纳总结
“软件开发社团”面试项目
活学活用,快问快答
1、用计算机编程解决问题时,首先应该确定程序“做什么”,这个环节对应的过程是( )
A. 分析问题 B. 设计算法 C.编写程序 D.调试运行
2、下列关于算法的表述中,错误的是( )
A. 算法是解决问题的方法步骤 B. 算法至少应该有一个输出
C. 算法依赖于程序设计语言 D.算法是程序设计的基本依据
3、一个算法应该具有“确定性“等5个特性,对另外4个特性的描述中错误的是( )
A. 有零个或多个输入 B. 有零个或多个输出 C.有穷性 D.可行性
4、某同学设计了一个算法,步骤如下所述,该算法违背了( )
A. 确定性特征 B. 有穷性特征
C. 可行性特征 D. 无二义性特征
A
C
B
B
课堂小结
自然语言、流程图、程序语言
算法的描述方法
分析问题、设计算法、编写程序、调试与维护
程序设计基本流程
解决问题的方法与步骤
算法的概念
有穷性、确切性、输入项、输出项、可行性
算法的特征
课后作业
同学们,距离小新通关还有两个任务,课后请同学们思考解决办法,并尝试根据自己的解决方案,编写程序代码,我们下节课再见!
第一关:寻找“开关对应关系”
第二关:定量分析,寻找“被污染的药丸”
第三关:巧用运算,寻找“误删的ID号”
第四关:尝试枚举,求解“谁是冠军”
通关任务
下节课再见!
16080.0
15072.0
21600.0
Lavf60.16.100
$$