3.3解析算法&枚举算法 课件(共27张PPT)2023—2024学年高中信息技术浙教版(2019)必修1

资源下载
  1. 二一教育资源

3.3解析算法&枚举算法 课件(共27张PPT)2023—2024学年高中信息技术浙教版(2019)必修1

资源简介

(共27张PPT)
3.3.1 解析算法
0.用算法解决问题的过程
抽象与建模
找到核心要素
得出计算模型
设计算法
明确输入输出
描述数据处理
编写程序
用计算机程序语言描述,形成计算机程序
调试运行程序
关注语法错误
逻辑错误等
1.基本思想
【解析算法】
是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。
解题思路:
明确问题的前提条件
明确要求的解
找出前提条件与所求解之间关系的数学表达式
1.基本思想
【解题关键】
要确保数学表达式的正确性
在程序中正确描述该数学表达式。(python运算符的正确使用)
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
1.抽象与建模
找到核心要素(问题的前提条件和要求的解)
得出计算模型
前提条件:
自由落体运动
时间为5秒,设为t
重力加速度g为10m/s,设为g
要求的解:
小球下落的高度,假设为h
根据自由落体运动:
h=1/2gt2
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
2.设计算法
输入数据
处理数据
输出数据

h=1/2gt2
输出h
输入本金p
输入期数t
输出h
t=5
g=10
h=1/2gt2
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
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不是公倍数’)
3. 课堂实战
1.人口增长问题
2.设备价值问题
3.蔡勒公式
4.十进制转二进制
5.二进制转十进制
6.二进制转十六进制
7.十六进制转二进制
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)
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)
3.3.2 枚举算法
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:编程推算单据中被涂抹数字】
有一张单据上有一个5位数的编号n,如图所示,其千位数和十位数处已经变得模糊不清,但是知道这个5位数是23的倍数。现要设计一个算法,找出所有满足这些条件的5位数,并统计这些5位数的个数。
4. 课堂实战
【编程推算单据中被涂抹数字】
列举的范围是什么?
检验的条件是什么?
列举方式是什么?
千位的数:i=0,1,···,9
十位的数:j=0,1,···,9
被23整除:
(20506+i*1000+j*10)%23==0
双重for循环,找出这些数并统计其个数count_1
4. 课堂实战
【编程推算单据中被涂抹数字】
count =0
# 循环i
#循环j
t=20506+i*1000+j*10
if t % 23 == 0:
count+=1; print(t)
print(“这些5位数的个数为” ,count)
4. 课堂实战
【编程推算单据中被涂抹数字】
count =0
for i in range(10): # 循环i
for j in range(10): #循环j
t=20506+i*1000+j*10
if t % 23 == 0:
count+=1; print(t)
print("这些5位数的个数为" ,count)
3. 课堂实战
【Q2:编程推算水仙花数】
“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身。编程输出所有的水仙花数。
例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
【Q2:编程推算水仙花数】
各位数字的立方和等于该数本身
列举范围是什么?
如何表示这个数?如何表示各位的数字?
3. 课堂实战
【Q2:编程推算水仙花数】
列举每个位上可能的数字
百位:i 十位:j 个位:k
三位数n=i*100+j*10+k
逐一检验可能的解,判断条件是什么?
i : 1 ~ 9
j : 0 ~ 9
k : 0 ~ 9
n == i ** 3 + j ** 3 + k ** 3
3. 课堂实战
24
【Q3:今有雉、兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?】
当鸡为1的时候,兔子为1,满足条件吗?
当鸡为1的时候,兔子为2,满足条件吗?
当鸡为1的时候,兔子为3,满足条件吗?
……
当鸡为2的时候,兔子为1,满足条件吗?
当鸡为2的时候,兔子为2,满足条件吗?
当鸡为2的时候,兔子为3,满足条件吗?
……
3. 课堂实战
【Q3:今有雉、兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?】
鸡x的取值范围为 0~35
兔y的取值范围为 0~35
在这个取值范围内的所有x和y
判断:如果 x、y满足35个头 94只脚
那么我们要求的x、y
3. 课堂实战
初值
终值
【Q3:今有雉、兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?】
3. 课堂实战
h = 35
f = 94
for x in range(0,36):
for y in range(0,36):
if x + y == 35 and 2 * x + 4 * y == 94 :
print(x,y)

展开更多......

收起↑

资源预览