内容正文:
3.3.1 解析算法
1
0.用算法解决问题的过程
抽象与建模
找到核心要素
得出计算模型
设计算法
明确输入输出
描述数据处理
编写程序
用计算机程序语言描述,形成计算机程序
调试运行程序
关注语法错误
逻辑错误等
2
1.基本思想
【解析算法】
是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。
解题思路:
明确问题的前提条件
明确要求的解
找出前提条件与所求解之间关系的数学表达式
要先读题,找出已知条件、求解问题,观察分析找出各要素之间的关系,建立解析关系表达式。
解析就是深入分析、剖析的意思
3
1.基本思想
【解题关键】
要确保数学表达式的正确性
在程序中正确描述该数学表达式。(python运算符的正确使用)
4
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
1.抽象与建模
找到核心要素(问题的前提条件和要求的解)
得出计算模型
前提条件:
自由落体运动
时间为5秒,设为t
重力加速度g为10m/s,设为g
要求的解:
小球下落的高度,假设为h
根据自由落体运动:
h=1/2gt2
5
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
2.设计算法
输入数据
处理数据
输出数据
无
h=1/2gt2
输出h
输入本金p
输入期数t
输出h
t=5
g=10
h=1/2gt2
6
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
3.编写程序
t=5
g=10
h=g*t**2/2
print(h)
输入本金p
输入期数t
输出h
t=5
g=10
h=1/2gt2
7
2. 实例分析
Q2:判断一个数是否是3和7的公倍数,请用程序实现上述功能。
1.抽象与建模
找到核心要素
得出计算模型
假设要判断的数为 x
判断条件:3和7的公倍数
3和7的公倍数
x%3==0 and x%7==0
x是公倍数或x不是公倍数
2.设计算法
输入数据
处理数据
输出数据
输入x
x%3==0 and x%7==0
输出x是公倍数或x不是公倍数
3.编写程序
x=int(input(“请输入一个数”))
if x%3==0 and x%7==0:
print(‘x是公倍数’)
else:
print(‘x不是公倍数’)
8
3. 课堂实战
1.人口增长问题
2.设备价值问题
3.蔡勒公式
4.十进制转二进制
5.二进制转十进制
6.二进制转十六进制
7.十六进制转二进制
9
3. 课堂实战
二进制转十进制
n="011101"
res=0
for i in range(len(n)):
res=res*2+int(n[i])
十进制转二进制
n=int(input())
res=""
while n>0:
res=str(n%2)+res
n=n//2
print(res)
10
3. 课堂实战
十六进制转十进制
n="A3"
dic={'0':0,'1':1,'3':3,'A':10}
res=0
for i in n:
res=res*16+dic[i]
print(res)
十进制转十六进制
n=int(input())
res=""
g="0123456789ABCDEF"
while n>0:
res=g[n%16]+res
n=n//16
print(res)
11
3.3.2 枚举算法
12
13
1.基本思想
【枚举算法】
1.建立正确的数学模型,即得出正确的数学代数式
2.将数学代数式转化为正确的python表达式
13
我手里有三把一模一样的钥匙,分别可以开教室、办公室、寝室的门。当我晚上回到寝室,该如何找到能开寝室门的钥匙呢?
每把都试一遍
14
一一列举
逐一检验
分支
循环
枚举
筛选
1.基本思想
15
不能遗漏任何一个正确解
尽可能地缩小解的列举范围,提高算法的效率
1.基本思想
【枚举算法要注意的问题】
4. 课堂实战
【Q0:例举出300以内被7整除的所有的数,如何编程实现?】
列举的范围是什么?
检验的条件是什么?
列举方式是什么?
n=0,1,2,···,300
被7整除的数:n%7==0
for循环
如何编程实现
for i in range(301):
if i%7==0:
print(i)
4. 课堂实战
【Q1:编程推算单据中被涂抹数字】
有一张单据上有一个