内容正文:
姓名: 班级:
第二章 算法与问题解决
第3节 算法解决问题的一般过程
【知识技能】
解决编程过程中遇到的问题
【学习目标】
学会通过抽象与建模、设计算法、编写程序、调试运行的步骤去解决
【知识清单】
1. 用计算机解决问题时,由于实际问题情境的复杂性,需要先对实际问题进行抽象与建模,再根据建立的计算模型设计算法,并将算法用合适的方式加以准确描述。
2. 用算法解决问题的一般过程
一、抽象与建模
抽象与建模指的是从现实项目的真实情境中提炼出核心的要素并加以确定或假设,最终定义出一个有明确已知条件和求解目标的问题,并用数学符号描述解决该问题的计算模型。
抽象与建模可以通过下列两个步骤逐步分析出计算模型:
(1)提炼核心要素并加以确定或假设。
(2)用数学符号描述解决问题的计算模型。
二、设计算法
在计算模型的基础上,遵循算法的特征、围绕算法的要素设计算法,并选择恰当的方式合理地描述算法。
对任何数据的处理,总体上都需要经历下列三个步骤:
(1)输入数据。
(2)处理数据。
(3)输出处理结果。
三、描述算法
选用合适的方式(自然语言、流程图或伪代码等)合理、准确地描述算法。
3. 案例
“动动有奖”是某手机走路计步器程序(程序界面如图所示),它能根据系统传递给它的走路步数给运动者奖励,运动者可以用累计的“奖金”去换取软件开发商提供的各种体育用品。具体的奖励规则如下:
①每天走路的前1000步奖励0.3金,之后每2000步奖励0.1金(不足2000步没有奖励),每天最高奖励不超过3金。
②每天必须到计步器页面点击“领奖”按钮,才能领取昨日走路奖金。
③如果连续3天领奖成功,从第4天起走路奖金翻1倍(乘以2),每天最高奖励不超过6金。翻倍期间若有1天没有领奖(即连续每天领奖行为中断),则翻倍权益取消,重新连续3天领奖成功才能继续翻倍。
(1)抽象与建模
提炼核心要素并加以确定或假设
每天走路的前1000步奖励0.3金,之后每2000步奖励0.1金(不足2000步没有奖励),每天最高奖励不超过3金。
(用流程图描述一天获得的“奖金”)
抽象:找出“动动有奖”奖励规则中的核心要素,并将不确定的核心要素设置为变量(一般使用字母)确定下来。
1. 一天走路多少步
2. 一天走路获得奖金数
建模:用数学符号描述解决问题的计算模型
(2) 设计算法
对任何数据的处理,总体上都需要经历下列三个步骤:①输入数据。②处理数据。③输出处理结果。
1.输入走路步数X 。
2. 。
3.输出“奖金”t。
按照“自顶向下、逐步细化”的结构化程序设计思想,对前面的算法进行如下细化:
①输入总天数n
②表示天数的变量i初始化为1。
③若 ,则转④,否则转⑦。
④输入第i天的数据(包括第i天走路步数Xi,是否成功领取第i天“奖金”的标记F)
⑤根据当前输入的数据Xi,Fi,统计该天领取的奖金并累加到总奖金total中。
⑥ ,然后转③。
⑦输出变量total的值。
(3) 描述算法
用流程图来描述解决该问题的算法
【典例训练】
例1 [2023温州期末]使用算法解决实际问题时,首先应该做的是 ( )
A. 抽象与建模 B.设计算法 C.描述算法 D.编写程序
例2某景点门票收费规定如下:身高在1.1米及以下的人免费;超过1.1米但不超过1.4米的人收取全票费用的一半;超过1.4米的人收取全票费用。假设人的身高为h米,全票用为m元。请回答下列问题:
(1) 根据题目描述,列出计算门票费用s的数学表达式。
(2) 设计算法解决该问题,应采用的算法控制结构是 (单选,填字母)。
例3印度有个国王打算奖赏发明了国际象棋的大臣,国王问他想要什么,他对国王说:“陛下,我只要一些麦粒,请您在这张棋盘的第一格放1粒麦子,第二格放2粒表子,第三格放4粒麦子,第4格放8粒麦子,一次类推到64格棋盘。”国王觉得这个要求太容易满足了,就答应了,当人们把一袋一袋的麦子搬来开始计数时,国王发现,就是把全印度的麦粒全部拿来,也满足不了他的要求,那么,这位大臣要求得到的麦子到底是多少呢?
(1)根据大臣的要求,第6格中放的麦粒数为
(2)解决麦粒问题的流程图如图b,使用的算法控制结构是
(选填,填字母,A.顺序结构B.分支结构C.循环结构)
(3) 请将流程图补充完整:① ;②
(4) 流程图中s的值指的是 。
例4角谷猜想是指一个正整数x,如果x是奇数,则将其乘以3,然后再加1;如果是偶数,则将其除以2。这样经过若干次运算后,总可以得到自然数1。
小明根据角谷猜想进行了算法设计,并用如下流程图来描述该算法。
请回答下列问题
(1)解决此问题所使用的控制结构为
(2)根据本题算法的流程图所示,则流程图中①②处应填写的内容
分别是:① ;②
(3)若输人x的值为5,则输出的运算次数为
若输人x的值为128,则输出的运算次数为 (填数字)
学科网(北京)股份有限公司
$