内容正文:
第1节 问题与算法
授课教师:李磊
1
田忌赛马
如何让田忌的马战胜齐威王的马?
上
中
下
上
中
下
第一次
上
中
下
中
下
上
第二次
方
法
与
策略
生活中的问题与算法
03
人类社会之所以进步与发展,是因为人们在日常生活中一直不断地发现、提出各种问题,并积极寻求解决问题所需的各种策略、方法与途径。在运用计算机解决问题的实践过程中,人们逐步形成了算法的概念。
引领问题解决的指令表达
指挥机器执行的算法
指挥简易计算器计算“5+6=?”
算法的定义
用来指挥机器解决问题或执行任务所需的一系列步骤,便是算法(algorithm)。想要机器能够正确执行人给定的任务,就必须从它的视角来设计并描述可执行的算法。
算法特征与设计描述
算法由一系列步骤组成,但一系列步骤组成的却不一定是算法,因为算法必须具备一些基本特征。
算法的特征
输入
必须预设初始值或输入数值
输出
必须有一个或多个数据输出
可行性
每个步骤都
必须可执行
确定性
要有明确的执行对象及行为
有穷性
执行步骤的
次数必须有限
算 法 设 计
理解问题
描述算法
编程实践
评估优化
简单的算法设计过程
算法的设计
算法的描述
伪代码
伪代码类似于自然语言,用于描述算法的结构和逻辑,不可执行。
程序语言
程序语言是用来定义计算机指令执行流程的形式化语言。
自然语言
具有简单、通俗易懂的优点,但也容易产生歧义。
流程图
清晰、直观、简洁,虽画图费时,但对专业要求不高。
图形 名称 含义 范例
起止框 程序的开始或结束
处理框 对数据的处理
输入或输出框 数据的输入或输出
判断框 对某个条件进行判断
流程线 流程的进行方向
流程图的符号
开始
s=πr2
输出计算结果
r≥0?
算法描述的四种方式
开始
结束
步骤1:输入两个整数a,b
步骤2:计算S1=a+b
步骤3:计算S2=a-b
步骤4:输出S1,S2,结束。
用自然语言描述算法
用流程图表示
输入a,b
S1=a+b
S2=a-b
输出S1,S2
算法描述的四种方式
用伪代码描述算法
开始
步骤1: 输入两个整数 a 和 b
输入 a
输入 b
步骤2: 计算 s1 = a + b
s1 <- a + b
步骤3: 计算 s2 = a - b
s2 <- a - b
步骤4: 输出 s1 和 s2
输出 "s1 = ", s1
输出 "s2 = ", s2
结束
用程序语言描述算法
# 输入两个整数 a, b
a = int(input("输入a: "))
b = int(input("输入b: "))
# 计算 s1 和 s2
s1 = a + b
s2 = a - b
# 输出 s1, s2
print("s1 =", a+b, "s2 =", a-b)
用流程图描述求解绝对值的算法
确认计算机自动求解的基本步骤
01
明确输入、输出与相关约束条件
02
绘制流程图并与同学进行交流
03
绝对值是指一个数在数轴上的对应点到原点的距离,正数和0的绝对值是它本身(即|x|=x),而负数的绝对值则是它的相反数(即 |x|=-x)。如果让计算机来自动求解,则必须设计相应的算法。请用流程图描述计算机求解一个数的绝对值的算法。
用流程图描述求解绝对值的算法
开始
输入X
X≥0
结束
输出X
是
否
输出-X
绝对值是指一个数在数轴上的对应点到原点的距离,正数和0的绝对值是它本身(即|x|=x),而负数的绝对值则是它的相反数(即 |x|=-x)。如果让计算机来自动求解,则必须设计相应的算法。请用流程图描述计算机求解一个数的绝对值的算法。
日拱一卒,功不唐捐
授课教师:李磊
16
$$