1、2.1 算法的概念及描述 算法的概念广义地讲,“算法”指的是解决问题或完成任务的一系列步骤。在计算机科学领域内,“算法”指的是用计算机解决问题的步骤,是为了解决问题而需要让计算机有序执行的、无歧义的、有限步骤的集合。针对同一个问题,可能会有多种算法,每种算法的效率可能会有所差别。换水问题 三个杯子,A杯装有“可乐”,B杯是“雪碧”,C杯是空杯。如何把两个杯子中的饮料互换。方法1:A杯可乐倒入C杯中;B杯雪碧倒入A杯中;C杯可乐倒入B杯中。方法2:B杯雪碧倒入C杯中;A杯可乐倒入B杯中;C杯雪碧倒入A杯中。这就是算法!算法的特征1、有穷性:算法必须保证它的执行步骤是有限的,即它是能终止的。2、确
2、定性:算法中的每个步骤必须是明确的。错误示范:输出:L/正整数 正确示范:输出:L/10 3、可行性:算法中的每一步操作都要是可实施的。错误示范:计算y=x+1的所有整数解 正确示范:x=5,计算y=x+1的整数解 错误示范:当d0时输出:dd4、有0个或多个输入:算法在执行时需从外界获取可变的数据,如果问题求解时所有数据都是不变且已知的,可以不输入数据。5、有一个或多个输出:算法的目的是求解问题,问题求解的结果应该以一定的方式输出。没有输出的算法没有意义。算法的特征正确示范1:输出:3+2*8 正确示范2:输入身高h、体重w,bmi=w/h2,输出bmi 错误示范:输入身高h、体重w,计算b
3、mi 正确示范:输入身高h、体重w,计算bmi,输出bmi 1.在求一元二次方程实数根的算法中,当方程不存在实数根时,也要求输出“方程无实数根”。这一要求主要体现了算法特征中的 A.有穷性 B.确定性 C.有1个或多个输出 D.有0个或多个输入 2.不能用算法解决“输出所有偶数”的问题,因为不符合算法特征中的 A.有穷性 B.有输出 C.确定性 D.唯一性 练一练CA3.下列问题不能用算法描述的是 A.已知a、b、c的值,求一元二次方程ax2bxc0(a0)的实数解 B.计算某个班级英语成绩的平均分 C.列出方程y2x1的所有实数解 D.根据矩形的长和宽求面积 C练一练算法的要素1、数据 参与
4、运算的初始数据、中间数据、结果数据。2、运算 明确每一步的运算是什么、对哪些数据运算。3、控制转移 根据数据或运算结果的特点进行不同的处理,需要控制转移执行不同的操作。算法的要素案例BMI指数:(1)输入身高h、体重w(2)计算BMI指数(BMI=w/h2)(3)若BMI=24,输出“超重”;否则,输出“正常”数据 运算 控制转移 算法的描述方法2、流程图 3、伪代码 1、自然语言 4、计算机程序设计语言 1.自然语言 例:停车场车位探测中的算法(1)输入变量flag的值(2)若flag的值为1,则设置指示灯为绿色,输出“空车位”;否则,设置指示灯为红色,输出“非空车位”2.流程图 2.流程图
5、 3.伪代码(1)条件判断语句 格式1:if 条件 then (语句序列1)else (语句序列2)格式2:if 条件 then (语句序列1)(2)循环语句 格式:while 条件 (循环体)3.伪代码 flag 车位探测结果;If flag=1 then (指示灯绿色 输出“空车位”)Else (指示灯红色 输出“非空车位”)4.计算机程序设计语言 flag=int(input(“输入车位状态值:”)if flag=1:print(“绿色”)print(“空车位”)else:print(“红色”)print(“非空车位”)四种描述方法对比 自然语言 流程图 伪代码 计算机语言 优点 通俗易
6、懂 结构清晰、寓意明确 直观简洁、写法灵活 能让计算机理解并执行 缺点 容易产生歧义 情况复杂时,过多的流程线影响算法的理解 错误不易排查,计算机无法理解并执行 有一定程序设计语言基础的人才能看懂 练一练4.关于算法,下列叙述正确的是 A.一种算法只能用一种程序语言来实现 B.流程图是算法的一种表示形式 C.解决任何一个具体问题只有一种算法 D.算法是解题方法的精确描述,它可以有无限个步骤 B5.已知圆柱体底面圆半径r和高h,求圆柱体体积V的算法如下:Vr2h 输入底面圆半径r 输出体积V 输入圆柱体高h 计算圆柱体体积V,正确的次序是 A.B.C.D.D练一练6.用伪代码描述算法:输入a、b的值;ca;ab;bc;输出a、b的值;当输入a的值为3,b的值为5时,输出结果中a和b的值分别为()A.3 5 B.3 3 C.5 5 D.5 3 D课堂总结 算法的概念 算法的特征:有穷性、可行性、确定性、0个或多个输入、1个或多个输入 算法的要素:数据、运算、控制转移 算法的描述:自然语言、流程图、伪代码、计算机程序语言