内容正文:
第2章 算法与程序实现
2.1 解决问题的一般过程和用计算机解决问题
1 解决问题的一般过程:
分析问题——寻找解决问题的途径和方法——尝试解决问题
2 计算机的特点:
运算速度快、精度高、逻辑运算能力强、存储容量大、自动化程 度高、不会遗忘。
3 用计算机解决问题
即让计算机按照程序执行指令,可以提高问题解决的效率。
4 什么是算法
解决某类问题的方法、步骤(确定的,有限的)和过程。
5 编写程序
程序是一组可执行的计算机指令,编写程序即利用计算机程序设 计语言描述算法(可以理解为把用人类语言描述的解决问题的 算法翻译成计算机能够认识的形式,从而让计算机能够按照算法 预设的步骤,帮助人类解决问题)
6 计算机程序设计语言
注意:机器语言是唯一能够被计算机直接执行的程序设计语言(直接用二进制0和1形式编写而成)其他语言需要编译(翻译为机器语言)
7 认识Python语言
例:用Python语言模拟红绿灯,编程实现一个“灯”由红色变为绿色的效果
思考:算法与程序的关系?用自己的方式描述该问题的算法
Python中的注释语句以“#”开头,起解释说明的作用,不会被执行
8 安装Python,体验程序的运行。(https://www.python.org/)
2.2 算法的概念及描述
1 认识算法
解决某类问题的方法和步骤。(例:“更相减损术”求最大公约 数)在计算机领域,算法是一个精心设计的运算序列,描述了计 算机如何将输入转化为输出的过程。
算法
输入
输出
数据加工机器
2 算法的特征(重要)
有输入:有0个或多个输入(可以没有输入)
有输出:有一个或多个输出(必须得有输出)
有穷性:在执行有限个步骤之后终止
可行性:每一步操作必须是计算机可以执行的
确定性:每个步骤必须是确定的,没有歧义,没有二义性
3 算法的描述:自然语言,流程图,伪代码
4 用流程图描述算法(例:“倒计时15s”算法流程图P51)
注意:一定要会读流程图,用P51,P53,P54的例子练习
5 算法的三种基本控制结构(重要)
顺序结构:按照先后顺序,从上到下依次执行,先A后B
选择结构:根据条件是否成立,选择不同的分支A或B执行
循环结构:当条件成立时,反复执行A,直至条件不成立
2.3 程序设计基本知识
1 Python中部分常用的数据类型
例:写出以下数据的类型(注意:只要出现引号就是字符串型)
123(整形int) 1.23(浮点型float) ’1.23’(字符串型str)
”123”(字符串型str) ’A’(字符串型str) [1,4,’B’](列表list)
True(布尔型bool) ”False”(字符串型str) 3.14(浮点型float)
2 常量与变量
(1)常量指在程序运行过程中,其值不能改变的量。
(2)变量指在程序运行过程中,其值可以改变的量,它是内存中 存放数据的存储单元,用变量名来标识,变量相当于一个容器
a
1
a = 1
表示变量a中此时存储的是1
(3)变量名的命名规则:(重要)
①只能包含字母、汉字、数字和下划线(_)
②不能以数字开头;区分大小写,如: ab和Ab是两个变量
③不能使用系统关键字(for、in、if、continue、break、else、 and、not、or等)
例:ab(√) 1ab(×) _ab(√) _1ab(√)
ab1(√) for(×) 1for(×) for1(√)
3 赋值语句
变量名 = 表达式(python中“=”表示赋值,将等号右边的值或 表达式的值赋值给等号左边的变量,本质上是一个存储的过程)
例:a=1 a=a+1 colors=[“red”,”yellow”,”green”]
4 运算符与表达式
(1)算术运算符
运算符
说明
表达式举例
结果
+、-
加、减
1+2
3
*、/
乘、除
10/4
2.5
%
取模(取余数)
10%3
1
**
幂(次方)
2**3
8
//
整除(取商)
10//4
2
例:计算 3*10%4*(6-3)**2 的结果(注意运算优先级)
原式 = 3*10%4*3**2 = 3*10%4*9 = 30%4*9 = 2*9 = 18
注意:先算括号,再算幂运算,然后按照顺序从左往右依次计算; 乘、除、取模、整除运算优先级相同)
(2)关系运算符
用于比较两个值的大小,结果为布尔值True或False
例:2==3是在比较2是否等于3?结果为是(True)或否(False)
2<=3是在比较2是否小于或等于3?(结果为True)
2!=3是在比较2是否不等于3?(结果为True)
(3) 逻辑运算符
可以对关系式或布尔值进行运算,结果仍为布尔值True或 False(类比数学中的交并补集(对应与或非)理解记忆)
且 = 与
取相反值,非真即假,非假即真
(4) 运算优先级
① “()”优先级最高
② 算术运算符 > 关系运算符 > 逻辑运算符
③ not > and > or
……
(5)混合运算练习(重要)
注意数学中的运算符和python中有所区别,注意运算优先级
例:2<=3 or 1>=2,先算or两边的关系运算得到:True or False, 然后运用or运算的法则(一真必真)得到最终结果为True
5 顺序结构(重要)
(1)输入函数input( )
接收键盘的输入,返回值为字符串型数据。例如:x = input(" 请输入一个正整数:")
(2)输出函数print( )
在屏幕上输出一个或多个输出项的值,多个输出项中间用逗 号隔开,例如:print(x, "是奇数")。
(3)函数:预先定义好的一段逻辑相对独立、功能相对单一的代 码块。在需要时可以直接调用函数,而不必重写代码。
6 选择结构:表达式成立(条件满足)则执行True后面的语句块,若不成立则执行False后面的语句块(重要)
例:判断一个正整数的奇偶性
注意:在Python中用缩进表示语句块之间的层次关系,同一级语句缩进量相同;缩进表示包含关系
多分支:超过两种情况要用多分支语句,if else语句加elif实现
7 循环结构(重要)
(1)while语句:只要表达式为真(条件成立),就重复执行循 环体内的语句块,直至条件不成立
练习:修改代码,实现以下功能:正计时20秒
i=1
while i<=20:
……
i=i+1
(2)for语句:每次从序列中按顺序取一个元素赋值给循环变量, 进行一次循环;直至依次访问完序列中的所有元素,循环结束
练习:修改代码,实现以下功能:正计时20秒
range(1,21,1)
注意:在 for 语句中,循环次数由序列中元素的个数决定,序列 指有序列表,如: [1,2,3,4] 就是一个包含4个元素的序列
(3)range()函数:返回(生成)一个等差整数序列,格式为:range(起 始值,终值,步长 )。通过三个参数来控制生成的序列,生成的 序列不包括终值,并且起始值和步长(序列中相邻两个元素之间 的差,后一个元素减前一个)可以缺省,缺省时默认为 0和1
例:如果要生成序列 [1,2,3,4],则range函数的三个参数为(1,5,1), 注意终值为5(不包括5),类似于数学中的左闭右开区间 [ 1 , 5 )
(4)for语句中还可以直接使用列表等序列
(5) 循环嵌套(多层循环):一个循环结构内可以包含另一个循 环,首先执行外层循环,外循环每执行一次,内循环则需执行一 个完整的循环。
8 Python语言中的模块(工具包):编写程序时,先导入所需的模块,就可以在程序中调用该模块中的函数。如turtle,time,math等(P65)
9 break和continue语句(例P67)
break语句:终止某个循环,执行循环体外的第一条语句
continue语句:终止本次循环,进入下一次循环
2.4 常见算法的程序实现
1 枚举算法:列举出所有可能得情况,并逐一验证,找出所有解
例:寻找1000以内所有的素数(一个一个试)(穷举法)
2 递归算法(了解)
1
学科网(北京)股份有限公司
$