走进算法
——算法与算法描述
生活中处处有算法
烧水泡茶,它需要做4项工作,即洗好水壶(2分钟),洗好
茶杯(3分钟),准备茶叶(1分钟),烧开水(10分钟)。
1. 洗水壶,灌水烧水;水开后,再洗茶杯,准备茶叶,冲水泡茶。
2. 先洗水壶,洗茶杯,放茶叶,一切就绪,再烧水,水开后再泡茶。
3. 洗水壶,灌水烧水;烧水过程中,洗茶杯,放茶叶,水开后泡茶。
哪种方法好?为什么?算法有优劣之分,在生活和程序
设计中都要注意选择较好的算法。
什么是算法
算法:解决问题的方法和步骤。
有穷性:指算法必须能在执行有限个步骤之后终止 。
确切性:算法的每一步骤必须有确切的定义(无二义性)。“张三
对李四说他的孩子考上了大学”。
输入项: 一个算法有0个或多个输入。
输出项: 一个算法有一个或多个输出。没有输出的算法是毫无意义。
可行性:每个操作步骤都可以在有限时间内完成(也称之为有效性)。
算法的特点
编写一个包含有1000个有序数列(序号从1到1000)的数
列,查找数字的程序:当输入某个数字时,程序立刻显示出
该数字所在的序号。
随机查找
顺序查找
二分查找
思考问题:
(1)哪一种算法比较好?为什么?
(2)如何理解“算法的优劣直接影响所编程序
的质量,算法是程序的灵魂”这句话呢?
查数问题
计算出s=2+4+6…+100的值。
试设计出多种算法,并比较这些算法中哪算法更加简单与高效。
用自然语言描述算法。
练一练
写写看:
“将a加b除以a减b的值赋给x 变量”写出x变量的赋值语句。
用自然语言描述。
流程图:几何图形来描述算法流程。
符 号 名 称 含 义
起止框 开始、结束
处理框 计算等处理
输入/输出 输入和输出内容
判断框 判断条件满足与否
流程线 程序的流向
算法如何描述
(1)自然语言。
(2)流程图。
(3)程序设计语言。
算法如何描述
例题:给定三角形的底和高,计算三角形的面积?
算法描述
自然语言:
(1)输入三角形的底a和高h。
(2)判断a>0,h>0。
(3)计算面积公式s=a*h/2。
(4)输出面积s。
流程图
a = InputBox("输入长")
h = InputBox("输入高")
if (a>0) and (h>0) then
s = a * h / 2
Print s
Else
Print “无解”
End IfVB程序设计语言
输出无解
a>0,h>0
开始
输入底a高h
计算面积s=a*h/2
输出面积s
结束
Y
N
1. 阅读流程图,说明该流程图描述的算法及功能。
练一练
开始
输入数a
输出a
结束
a=x
Y
N
生成随机数x
a>x
输出“小了”输出“大了”
Y N
练一练
2. 阅读流程图,说明该流程图描述的算法及功能。
开始
n=1,sum=0
n>10
输出 sum
结束
输入 a
n n+1
sum sum+a
yes
NO
练一练
3. ax+b=0,一元一次方程求解的算法描述:
用自然语言、流程图描述 开始
输入a,b
输出x
结束
a0
Y
N
x=-b/a
输出无数个解
b=0
输出无解
Y N
拓展题
从键盘输入两个不同的数,然后显示大的数。请设计算法并画出流程图。