内容正文:
算法及其特征
第一课时
第 4 单元
4.1
学习目标
★熟悉将解决问题的方法归结为一系列清晰、 准确的步骤的过程。
★了解算法的基本要素和重要特征。
★运用恰当的方式描述算法。
★运用Python语言实现简单算法,解决问题。
软件设计师是业务领域和技术领域的专家。面对客户需求,软件设计师要对问题进行整体分析以找到解决方案,通过洽当的方式与客户沟通;面对技术问题,软件设计师需要借助计算机编程解决实际问题。我们将通过“软件开发社招新”项目讨论计算机编程解决问题的过程。
活动1 寻找“开关对应关系”
软件开发社团要招募新成员,报名的同学要经过面试才能加入。第一关面试题是:“一个房间有3盏灯,房间外有3个开关分别控制这3盏灯在只允许进房间一次的情况下, 如何判断哪个开关控制哪盏灯?”
设计算法是解决问题的核心,它的基本任务是对问题进行定性分析和定量分析,遵循算法的特征和约定,寻求计算的方法和规则,明确解决问题的途径。
分析问题——灯的状态和特性
灯只有亮、灭两种状态,但是灯又具有一种特殊性,即开灯的同时会伴随发光发热,因此灯被触摸时还有冷、热两种状态。综上所述,一盏灯可能有4种不同的状态。
灯亮
灯灭
发热
不发热
怎么样保证每盏灯的状态都是唯一的?题目中并没有限制开关按动次数,所以3个开关的闭合状态是可以随意改变的。
设计算法——写出步骤和方法(用自然语言描述)
第二步:同时打开1号和2号开关
第三步:2分钟后关掉1号开关
第四步:进入房间
第五步:判断哪一盏灯发亮,亮着这个灯由2号开关控制。
第一步:给灯和开关编号
第六步:判断未发光的灯是否发热,如果发热了,这个灯由1号开关控制,未发热的灯由3号开关控制。
设计算法——写出步骤和方法(用流程图描述)
①2分钟后关闭1号开关
②灯是否发光
③灯是否发热
④该灯由2号开关控制
⑤该灯由1号开关控制
⑥该灯由3号开关控制
①
⑥
⑤
④
②
③
算法的特征
有穷性
确切性
输出项
可行性
输入项
算法必须能在执行有限个步骤之后终止。
算法中的每一次运算都有明确的定义,具有无二义性,并且可以通过计算得到唯一的结果。
算法一定要有输出。任何算法都不能 “无功而返" 。
输入项。一个算法有0个或多个输入,以刻画运算对象的初始悄况,所谓0个输入是指算法本身给出了初始条件。
算法中执行的任何计算都可以在有限时间内完成(