内容正文:
浙教版(2019) 必修1数据与计算
2.3用算法解决问题的过程
1
学习目标
计算思维:分解问题、抽象建模、设计算法
信息意识:识别数据价值,理解信息处理流程
数字化学习:运用工具表达算法
信息社会责任:充分考虑算法是否可行
学校举行迎新大合唱比赛,每个班级合唱结束后,主持人当场宣读10个评委的打分,然后再统计出总评分作为该班级的最终得分。每个班级表演所得的总评分计算规则如下:
(1)在10个评委的打分中去掉一个最高分和一个最低分。
(2)剩余8个分数的平均分即为总评分。
为了在比赛现场能快速根据主持人所宣读的10个分数计算出总评分,小伟需要为比赛编写一个计算机程序。请你设计一个解决该问题的算法,并用合适的方式描述。
情境创设
问题提出
如何设计一个算法,让计算机能够快速、准确地完成这个计算任务?
用计算机解决问题时,由于实际问题情境的复杂性,需要先对实际问题进行抽象与建模,再根据建立的计算模型设计算法,并将算法用合适的方式加以准确描述。
新知探究—抽象与建模
抽象与建模是从现实项目的真实情境中提炼出核心的要素并加以确定或假设,最终定义出一个有明确已知条件和求解目标的问题,并用数学符号描述解决问题的设计模型。
新知探究—抽象与建模
1.提炼核心要素并加以确定或假设
本问题的已知数据包含了评委的评分,以及评委数。因为这些数据在事先都不确定,所以需要通过输入将数据传递给算法,不妨用变量n表示评委个数,score表示评委的评分,avg表示最终总评分。
为了使建立的问题模型具有一般性,可以认为评委数是不定的,所以用变量n来表示这个可变的数据。
新知探究—抽象与建模
2.用数学符号描述解决问题的计算模型
明确了问题的已知条件后,需要明确问题的解决目标。这个问题的解决目标比较直接,就是计算出n个评委给出的班级最终比赛得分。
基于上述分析,可以得出解决该问题的计算模型如下:
已知有n,(1≤n≤20)个数据:scorei,(1≤i≤n, 0≤ scorei ≤100),计算最终总评分avg。
处理规则:
① 找出n个数scorei中的最大值 max_score 和最小值 min_score
②计算所有分数总和sum_score
③修正总和: sum_last = sum_score - max_score - min_score
④计算平均: avg = sum_last /( n-2)
新知探究—设计算法
有了计算模型后,就可以遵循算法的特征、围绕算法的要素设计算法。
对任何数据的处理,总体上需要经历下列三个步骤:
输入数据
处理数据
输出处理结果
新知探究—设计算法
1.输入数据
输入数据: 本问题需要输入的数据是总评委数n以及n个评委的打分scorei
算法描述如下:
输入总评委数n
表示评委的变量i初始化为1.
输入第i个评委的评分scorei,i增加1。
如i≤n,则转③,否则转数据处理
数据输入的步骤是相同的操作,故用循环结构
新知探究—设计算法
2.处理数据
本问题需要处理的数据:
寻找最值:遍历找出n个评委评分的最大值和最小值
计算总和:遍历累加所有评分
修正计算,得出最终评分:减去最大值和最小值后求平均
请以小组为单位,讨论本问题需要处理的数据有哪些,并进行交流分享。
新知探究—设计算法
2.处理数据
算法描述如下:
表示评委评分总和变量sum_score、最大值变量max_score和最小值变量min_score初始化为0。
如i≤n,则转③,否则转④
sum_score= sum_score+scorei。若max_score>scorei, 则max_score=scorei,若min_score<scorei, 则min_score=scorei。i增加1,转②
修正最后总分last_score= sum_score- max_score- min_score
最终得分 avg = sum_last /( n-2)
请把本问题需要处理的数据的算法进行描述。
新知探究—设计算法
3.输出数据
本问题需要输出的数据:
去掉的最高分
去掉的最低分
最终评分
请以小组为单位,讨论本问题需要输出的数据有哪些。
新知探究—设计算法
3.输出数据
算法描述如下:
输出去掉的最高分max_score
输出去掉的最低分min_score
输出最终评分avg
请把本问题需要输出数据的算法进行描述。
新知探究—设计算法
4.结合数据的输入、处理、输出,把本问题的算法设计归总。
结合本问题中算法对数据的输入、处理、输出过程,把本问题的设计算法进行归总。
新知探究—设计算法
4.结合数据的输入、处理、输出,把本问题的算法设计归总。
算法描述如下:
输入总评委数n
表示评委的变量i初始化为1,评委评分总和变量sum_score、最大值变量max_score和最小值变量min_score初始化为0。
输入第i个评委的评分scorei,i增加1.
sum_score= sum_score+scorei。
若max_score<scorei, 则max_score=scorei。
若min_score>scorei, 则min_score=scorei。
如i≤n,则转③,否则转⑧
修正最后总分last_score= sum_score- max_score- min_score
最终得分 avg = sum_last /( n-2)
输出去掉的最高分max_score、输出去掉的最低分min_score、输出最终评分avg
新知探究—描述算法
由于计算时涉及较多的条件判断,为了直观建议先用流程图描述解读该问题的算法,请同学们以小组为单位,进行讨论交流,绘制出本问题的流程图。
last_score= sum_score- max_score- min_score)
开始
输入评委数n
结束
max_score<scorei
i≤n?
是
输入第i个评委的评分scorei
sum_score= sum_score+scorei
i=i+1
i=1, sum_score=0, max_score=0, min_score=0
max_score=scorei
输出去掉的最低分min_score
是
否
min_score>scorei
min_score=scorei
avg = sum_last /( n-2)
输出去掉的最高分max_score
输出最终评分avg
是
新知探究——描述算法
拓展链接
常用算法介绍
本例采用模拟策略来设计算法,即根据现实事务的实际流程和要求逐步进行处理,以达到数据处理的目标。计算机科学家根据各种问题的模型特征提出了各种针对性的算法设计策略,如穷举算法、顺序查找算法、对分查找算法、冒泡排序算法、深度优先搜索法以及动态规划等。
课堂练习
1.用算法解决问题的一般步骤包括( )、( )、( )
2.常用算法的描述方法有 ( )、( )、
( )、( )
请同学用1分钟回顾本次课的内容,请同学代表进行分享。
小结
用算法解决问题的过程
1.抽象与建模
提炼核心要素并加以确定或假设
用数学符号描述解决问题的计算模型
2.设计算法
3.描述算法
课后思考
本次课的问题解决的是1个参赛班级的最终评分,请同学们思考,如果我们要解决的是问题是:
(1)根据评委的打分得出刚刚参赛班级最终得分。
(2)每次对已经参赛班级得分进行排名。
请你设计解决该问题的算法,并进行描述。
谢 谢 观 看!
$