内容正文:
第三章
算法的程序实现
第三章 复习课件
浙教版2019必修1
目录
1
单元
学习目标
2
小节知识图谱
3
考点串讲
4
题型剖析
5
针对训练
6
课堂总结
单元学习目标
一
01
了解用计算机解决问题的一般过程;
掌握分析问题、设计算法、编写程序、调试运行等步骤的具体内容和方法;
能够运用所学知识分析实际问题,并尝试用计算机解决简单问题,提升信息技术学科素养和对科技认同感;
02
04
03
能够运用所学知识进行简单算法的设计和程序实现,已解决实际问题;
单元学习目标
二
三
1.能够运用所学知识分析实际问题,并尝试用计算机解决简单问题,提升信息技术学科素养和对科技认同感;
1.掌握分析问题、设计算法、编写程序、调试运行等步骤的具体内容和方法;
2.能够运用所学知识进行简单算法的设计和程序实现,已解决实际问题;
单元知识图谱
第一节
考点串讲
用计算机编程解决问题
的一般过程
抽象建模
设计算法
编写程序
调试
运行程序
算法特征、算法要素、结构化程序设计思想
算法要素(变量)、计算模型
自然语言、流程图、伪代码、程序设计语言
运行程序
考点串讲
通过运行程序,计算机会自动执行程序中的命令。但是,在将算法进行程序实现时,可能会因为录入错误、语法错误、逻辑错误等原因,导致程序不能正常运行或输出错误的结果。此时,需要对程序进行调试,以便发现错误并进行修正。
程序编辑在英文状态下运行,注意区分大小写
编辑程序时观察代码的颜色变化
注意的空格的使用规范
单元知识图谱
第二节
第一部分
考点串讲
顺序结构
概念
图例
特点
顺序结构指的是算法中各个步骤按照先后顺序依次执行的结构。
顺序结构的算法执行时,必定具有下列特点:
①每个步骤按照算法中出现的顺序依次执行。
②每个步骤一定会被执行一次,而且只执行一次。
顺序结构算法的一般结构
考点串讲
编程环境
集成开发环境
Integrated Development Environment
简 称
IDE
DLE是开发Python程序的基本IDE。打开IDLE,会出现交互式解释器Python Shell,如右图所示,可以通过它在IDLE内部执行Python命令,也可以在Python Shell的提示符“>>>”后输入任意的语句、表达式或者一小段代码进行测试。
考点串讲
数据类型与表达式
数据类型 数据表示形式
整型
数学中的整数,如:1,–8080,0等 ;十六进制数(用0x前缀),如:0xff00,0xa5b4c3d2 等
实型
数学中的实数,如:3.14,–9.01等 ;用科学记数法表示的实数,如:0.000012可以写成1.2e–5 等
字符串型
用单引号、双引号或三引号表示,如:'这是一个字符串!'、"This is a string!"、'''X'''等
布尔型
只有两种值:True和False。布尔型数据可以进行not、and和or等逻辑运算
考点串讲
算术运算是运用算术运算符进行数的加、减、乘、除等数学运算。
运算符 表达式 描述 示例 优先级
** x**y 求x的y次幂 5**2结果为25 1
* x*y 将x与y相乘 5*2结果为10 2
/ x/y 用x除以y,产生实数值 5/2结果为2.5 2
// x//y 用x除以y,取整数部分 5//2结果为2 2
% x%y 用x除以y,取余数 5%2结果为1 2
+ x+y 将x与y相加 5+2结果为7 3
- x-y 将x减去y 5-2结果为3 3
考点串讲
逻辑运算符经常用于描述复杂情况的判断。
运算符 表达式 描述 示例
and x and y 布尔“与” True and False结果为False
or x or y 布尔“或” True or False结果为True
not not x 布尔“非” not False结果为True
Python
逻辑运算符
考点串讲
变量和赋值语句
1
2
3
4
5
6
变量名可以包括字母、数字和下划线“_”,但不能以数字开头;
变量名区分大小写;
为了便于理解,变量名应具有一定含义,即“见名知意”;
不能用系统关键字作为变量名;
变量名中不能有“\/&%*$?<}^”等特殊字符与标点;
变量名中不能有空格。
Python语言中,变量命名规则
考点串讲
基本数据结构
Python有五个标准的数据类型:Numbers(数字)、String(字符串)、List(列表)、rm(元组)、Dictionary(字典)。
Numbers(数字)
浮点型(float):浮点型由整数部分与小数部分组成,如2.5。
整型(int):通常被称为整型或整数,是不带小数的数,
如a = 10 b = -60 c = 6841。
复数(complex):复数由实数部分和虚数部分构成,可以用a+bj或者complex(a, b)表示,复数的实部a和虚部b都是浮点型,例如:a = 3.0+4.0j b=complex(0,1)。
01
02
03
Python
支持三种不
同的数值
类型
考点串讲
String
(字符串)
字符串是由一些数据元素共同组成的一个序列整体,用单引号或双引号括起来的文本,如‘abc’、"xyz"等。字符串的索引从0开始,-1 为从末尾开始的位置。
已知str = ‘Hello World!’,写出下列程序的结果。
执行代码 注释 结果
print (str)
print str[0]
print str[1:4]
print str * 2
Hello World!
输出完整字符串
输出字符串中的第一个字符
输出字符串中第二个至第五个之间的字符串,就是第二个、第三个、第四个
输出字符串两次
H
ell
Hello World!Hello World!
考点串讲
List
(列表)
List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用 [ ] 标识,是 python 最通用的复合数据类型。若要访问的不是单个元素,而是一定范围内的多个元素,可以通过冒号“:”间隔的,两个索引参数(开始元素序号、结束元素序号的后一个序号)来实现。
info
列表索引
考点串讲
顺序结构的流程图
顺序结构是最常用、最简单的程序结构,其语句执行顺序是自上而下,依次执行的。
考点串讲
函数是 Python 语言程序的基石,是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。
Python常见内建函数
单元知识图谱
第二节
第二部分
考点串讲
1.if 语句
(1)单分支if语句
if(条件表达式)后面加冒号“:”,当语句A是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。
执行过程
如果条件表达式为真,则执行语句A,然后继续往下执行;
如果条件表达式为假,则不执行语句A,然后继续往下执行。
格式
if<条件> :
<语句块>
考点串讲
(2)双分支if语句
③
②
执行过程:
如果条件表达式为真,则执行语句A,
然后继续往下执行。如果条件表达式为假,则执行语句B,然后继续往下执行。
if(条件表达式)后
面加冒号“:”,当语句A和语句B是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。
格式:
if<条件> :
<语句块1>
else :
<语句块2>
①
考点串讲
注意
if语句中的冒号表示下方紧接着一个语句块。在Python中,语句块是一行或放在一起多行的语句,一般通过行缩进来标识。同一个if语句中,if、else下方的语句块必须采用相同的缩进。
在Python中,行尾冒号的作用是告诉Python接下来要创建一个新的语句块。因此,只要某一行以冒号结尾,它接下来的内容就应该有缩进。Python中有一个惯例:总是将语句块缩进4个空格。
语句块缩进
考点串讲
2.if-elif 语句
作用:应用if条件语句可以快速地实现程序的分支选择,但当分支比较多时,用if...elif...else语句来实现比较简便。
格式
if<条件1> :
<语句块1>
elif<条件2> :
<语句块2>
……
elif<条件N> :
<语句块N>
else :
<语句块N+1>
执行
过程
考点串讲
1.for 语句
循环结构的算法
for语句
while语句
01
02
for循环语句是通过遍历某一序列对象来构建循环,循环结束的条件是对象遍历完成。
①概念:
②格式:
for <变量> in <序列> :
<循环体>
[else:
<语句块>]
考点串讲
for <变量> in <序列> :
<循环体>
注意
迭代变量
<变量>:每经过一次循环,就会得到序列中的一个元素,并通过循环体处理它
<序列>:通常是字符串、列表、range对象实例等
当序列中的元素全部遍历完时,程序会自动退出循环,继续执行else子句中的语句块(该else子句可选)。若循环过程中执行了循环体中的break语句,则程序会中途退出for语句,转而去执行for语句后面的语句(即使有else子句,该子句也不会被执行)。
考点串讲
range函数
格式
功能
总结
range( start, end , steps )
start:起始值(可以不写(不写时默认从0开始));
end:终值(取不到)
steps:步长(默认1,可省略)
创建一个整数列表
在for循环中,当序列遍历完后,序列的长度就是for循环语句执行的次数
考点串讲
2.while 语句
在许多情况下,当一个循环执行之前,可能并不知道它需要执行的次数。这时,就可以使用while循环。
用法
格式
注意
当型循环,只要条件满足,就不断循环;否则,退出循环。
while <条件> :
<循环体>
这里有缩进
考点串讲
表达式
语句或语句组
N
Y
while(表达式):
语句或语句组
①表达式一般是一个关系表达式或一个逻辑表达式,表达式的值应该是一个逻辑值真(True)或假(False)。
②当表达式的值为真时,执行循环体语句;当表达式的值为假时,退出循环,执行循环体外的下一条语句(即while后面没有缩进的第一条语句)。
③每次循环都是执行完循环体语句后回到表达式处重新开始判断,重新计算表达式的值。一旦表达式的值为假就退出循环,为真时就继续执行循环体语句。
④循环体中必须有改变条件表达式值的语句,否则将成为死循环。
考点串讲
函数的构造及应用
Python中的内建函数能实现许多功能,但在实际程序设计中,并不是所有的功能都有内建函数来直接提供支持,有时候需要根据实际情况自己构造函数以实现常用代码的模块化。
定义函数的语法
def 函数名(参数集合) :
<函数体>
[return 函数值]
define定义的意思
与变量的命名规范相同
冒号不能缺少
1个tab键或者四个空格键的缩进
考点串讲
模块的导入及应用
什么是模块
?
模块是python中的最高级别组织单元,它将程序代码和数据封装起来以便重复使用。
模块中包含了实现某一类业务的多个函数和属性。
模块就是一个实现某种业务的工具包。
要使用工具包中的工具(一般是函数),就需要导入这个模块。模块也称包或者库。
在python中,一个文件就叫做一个模块(以“.py”为后缀名)。
考点串讲
random模块
名称 含义
random.random() 随机生成一个【0,1)范围内的实数
random.uniform(a,b) 随机生成一个【a,b】范围内的实数
random.randint(a,b) 随机生成一个【a,b】范围内的整数
random.choice(seq) 从序列的元素中随机挑选一个元素
如:random.choice(range(10)),即从0到9中随机挑选一个整数
random.sample(seq,k) 从序列中随机挑选k个元素
random.shuffle(seq) 将序列的所有元素随机排序
Python random模块:
Python中的random模块用于生成随机数。
考点串讲
Image模块
Image模块是PIL库(Python Imaging Library)中的重要模块,引用它可以完成对图像的一些常用操作,比如获取图像尺寸和像素颜色、旋转图像或改变图像格式等。
考点串讲
第三节
考点串讲
解析算法的基本思想是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式并通过表达式的计算来实现问题的求解。
在解析算法的程序实现过程中,首先要确保数学表达式的正确性,然后在程序中正确描述该数学表达式。
考点串讲
在解析算法的程序实现过程中,首先要确保数学表达式的正确性,然后在程序中正确描述该数学表达式。
考点串讲
①
基本
思想
把问题所有可能的解一一列举,然后判断每一个列举出的可能解是否为正确的解。
②
解题
思路
逐一列举可能解的范围,这个过程用循环结构实现。
对每一个可能解进行验证,这个过程用分支结构实现。
枚举算法及其程序实现
考点串讲
③
程序实现
把问题所有可能的解一一列举,然后判断每一个列举出的可能解是否为正确的解。
操作 模块 程序
一一列举 循环结构 For语句 / While语句
逐个比较 判断分支结构 If语句
考点串讲
总结归纳枚举算法的一般程序结构特点:
枚举算法通常会包含循环结构。因为它需要遍历所有可能的情况。
枚举算法需要明确枚举的范围。这个范围是根据问题的要求来确定的。
与循环结构紧密配合的是条件判断语句。在循环内部,需要通过条件判断来检查当前枚举的情况是否满足问题的要求。
枚举算法一般是按照一定的顺序逐个检查可能的情况。
考点/题型剖析
1.(2024•浙江)题目:在无人机自主飞行系统中,编写控制无人机飞行的程序代码是在( )步骤
A.问题分析 B.算法设计
C.代码实现 D.结果验证
答案:C
详解:本题考查用计算机编程解决问题的一般过程。C选项正确,代码实现步骤是将设计好的算法和策略转化为具体的程序代码,以实现对无人机飞行的控制。所以编写控制无人机飞行的程序代码是在代码实现步骤。A选项问题分析主要是对无人机自主飞行的需求和问题进行剖析,确定系统的目标和功能要求等,不涉及代码编写。B选项算法设计是确定无人机自主飞行的控制算法和策略,为代码实现提供指导,但本身不是代码编写。D选项结果验证是在代码实现后对无人机的飞行效果进行测试和验证,确保系统的正确性和稳定性。因此,本题选择C。
考点/题型剖析
2.关于Python算术操作符,以下选项中描述错误的是( )。
A.x//y表示x与y之整数商,即不大于x与y之商的最大整数
B.x**y表示x的y次幂,其中,y必须是整数
C.x%y表示x与y之商的余数,也称为模运算
D.x/y表示x与y之商
答案:B
详解:错误x**y表示x的y次幂,其中,y可以是整数,也可以是小数。
考点/题型剖析
3.小马设计了一个程序,其功能是根据用户输入自己的年龄,判断其是否成年,由于不小心误删了两行代码,请你推测可能删除的代码是下列哪个选项(当年龄大于等于18显示成年,否则显示未成年):
age=_______
if _______:
print("成年")
else:
print("未成年")
A.int(input( )) age>=18
B.input() age>=18
C.int( input( )) age>18
D.input() age>18
答案:A
详解:当年龄大于等于18显示成年,因此age>=18,排除C和D选项;input()获取的用户信息是字符串类型,18是整数类型,相同数据类型才能进行比较,因此需要将用户输入信息转换为整数类型,排除B选项。故选A。
考点/题型剖析
4.下面的程序段运行后的结果为( )
s=0
for i in range(1,6,2):
s=s+i
print(s)
A.15 B.10
C.12 D.9
答案:D
详解:本题考查的是Python循环语句。range(1,6,2)生成的是1,3,5的整数,故s=0+1+3+5=9。选项D正确。
考点/题型剖析
5.关于Python循环结构,以下选项中描述错误的是( )。
A. Python通过for、while等保留字提供遍历循环和条件循环结构。
B. break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行。
C. continue语句的作用是中止整个循环。
D. 遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等。
答案:C
详解:A 正确;B 正确;C 错误 continue语句只结束本次循环体的执行,而不是中止整个循环。D 正确。
考点/题型剖析
5.关于Python循环结构,以下选项中描述错误的是( )。
A. Python通过for、while等保留字提供遍历循环和条件循环结构。
B. break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行。
C. continue语句的作用是中止整个循环。
D. 遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等。
答案:C
详解:A 正确;B 正确;C 错误 continue语句只结束本次循环体的执行,而不是中止整个循环。D 正确。
针对训练
1.请编写程序实现:输入圆环的内径和外径,输出圆环的面积。
要求:
(1)保留到小数点后两位;
(2)使用math模块;
(3)同行输入圆环的内径和外径(第一个数为内径,第二个数为外径)。
示例
输入:
4 6
输出:
15.71
import math
n=input().split(" ")
s=math.pi*(math.pow(float(n[1])/2,2)-math.pow(float(n[0])/2,2))
print("%.2f"%s)
针对训练
2.程序如下
a=int(input())
b=int(input ())
c=a+b
print(a,’+’,b,’=’,c)
通过键盘分别输入23和3,运算结果是( )
A.26 B.23+3=26 C.’23’+”3”=26 D.24+4=28
答案:B
解析:本题考查Python程序执行
a=23,b=3,c=23+3=26,最后输出23+3=26,故本题选B选项。
针对训练
3.购买地铁车票:乘1-4站3元/人;5-9站4元/人;9站以上5元/人。根据输入的站数N,输出应付款M,如需将算法补充完整,最适合的选项是( )
A.N>9
B.N<=9
C.5<=N<=9
D.N>=5 and N<=9
答案:B
解析:本题考查条件语句。根据题目要求,购买地铁车票:乘1-4站3元/人;5-9站4元/人;9站以上5元/人。故N<=9满足5-9站4元/人,最适合,因此选项B正确。
针对训练
4.下面if语句统计满足“性别 (gender) 为男、职称(rank) 为副教授、年龄(age)小于40岁”条件的人数,正确的语句为( )
A.if(gender=="男" or age<40 and rank=="副教授"): n+=1
B.if(gender=="男" and age<40 and rank=="副教授"): n+=1
C.if(gender=="男" and age<40 or rank=="副教授"): n+=1
D.if(gender=="男" or age<40 or rank=="副教授"): n+=1
答案:B
解析:本题主要考查if条件分支。题目中的条件都是与的关系,所以要用and连接,故本题选B选项。
针对训练
5.计算表达式1/2+2/3+3/5+5/8+…前30项的和。实现此功能的Python程序如下:
a,b=1,2
s=0
for i in range(30):
(1)
print(s)
横线中的代码由下列3个语句组成:①b=b+a ②s=s+a/b ③a=b-a
下列选项中代码顺序正确的是( )
A.①③②B.③①② C.②①③ D.②③①
答案:C
解析:本题考查的是循环语句的应用。变量a、b的初值分别为1和2,观察该表达式,第1项应为a/b,第2项应为b/(a+b),所以第1步应执行s=s+a/b;接下来考虑更新a、b值,即实现a=b,b=a+b,先执行b=b+a,再执行a=b-a,相当于a=a+b-a=b,故代码顺序为②①③,选项C正确。
针对训练
6.有Python程序如下:
import random
n=7;a=[0]*n
a[0]=random.randint(60,100)
for i in range(1,n):
a[i]=a[i-1]-random.randint(0,i)
for i in range(1,n,2):
a[i]=a[i]-a[i-1]%2
print(a)
执行该程序段后,可能输出的结果是( )
A.[67,65,64,64,61,61,54] B.[72,71,72,69,67,62,57]
C.[83,81,81,77,75,73,69] D.[94,94,94,89,89,88,82]
答案:C
详解:本题考查Python程序。A选项错误,a[4]、a[5]均为奇数,因此在未执行a[5]=a[5]-a[4]%2之前,a[5]为62,a[4]为61,但是由于a[5]=a[4]-random.randint(0,5),不可能出现a[5]>a[4]的情况。B选项错误,由a[2]>a[1]可知,在执行a[1]=a[1]-a[0]%2语句中,a[0]为奇数,但是a[0]为72并非奇数,因此不可能出现这样的情况。D选项错误,a[3]=a[2]-5,但是在a[i]=a[i-1]-random.randint(0,i)中random.randint(0,i)最大为3,因此不可能出现这样的情况。故答案为:C。
课堂总结
用计算机程序解决问题时,需要将算法用某种计算机程序设计语言精确描述(也称“编写程序”),并在计算机上调试运行直至正确,才能最终解决问题。
在计算机科学中,常见的程序设计语言有Python、C++、Java、Ruby、Visual Basic等。同一个算法可以用不同的程序设计语言来实现。尽管不同的程序设计语言特点不同,语法规则也可能不同,但是程序设计方法基本相同。本章将以Python程序设计语言为基础,介绍将算法进行程序实现的一般过程与方法。
THANKS
感谢观看
第三章 算法的程序实现
浙教版2019必修1
$