算法与程序框图
2.体会算法的思想,会用自然语言设计简单的算法,并能解决有关的问题.
12世纪的算法 | 用阿拉伯数字进行__________的过程 |
数学中的算法 | 按照________解决某一类问题的_____和_____的步骤 |
现代算法 | 通常可以编成__________,让计算机执行并解决问题 |
1.算法没有一个精确化的定义,可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按要求设计好的、有限的、确切的计算序列,并且这样的步骤或序列能够解决一类问题.
2.算法与一般意义上具体问题的解法既有联系又有区别,它们之间是一般与特殊的关系,算法的获取要借助一般意义上具体问题的求解方法,任何一个具体问题都可以用这类问题的一般算法来解决.
【做一做1】 下列不能看成算法的是( )
A.洗衣机的使用说明书
B.烹制油焖大虾的菜谱
C.从山东济南乘汽车到北京,再从北京坐飞机到纽约
D.某小学生会做饭
答案:$D$
特征 | 说明 |
有限性 | 一个算法当运行完有限个步骤后必须_____,而不能无限地运行 |
确定性 | 算法的每一步计算,都必须有_____的结果,不能模棱两可,即算法的每一步只有_____的执行路径,对于相同的输入只能得到_____的输出结果 |
可行性 | 算法中的每一步必须能用实现算法的工具精确表达,并能在_____步内完成 |
有序性 | 算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能_____确定的后续步骤,只有执行完前一步才能执行后一步 |
特征 | 说明 |
普遍性 | 算法一般要适用于不同形式的输入值,而不是局限于某些特殊的值,即算法具有__________,一个算法总是针对某类问题设计的 |
不唯一性 | 解决一个或一类问题,可以有不同的方法和步骤,也就是说,解决这个或这类问题的算法不一定是_____的 |
【做一做2】 下列关于算法的描述正确的是( )
A.算法与求解一个问题的方法相同
B.算法只能解决一个问题,不能重复使用
C.算法过程要一步一步执行,每步执行的操作必须确切
D.解决一类问题的算法只有一个
答案:$C$
计算机解决任何问题都要依赖于____,只有将解决问题的过程分解为若干个________,即____,并用计算机能够接受的“____”准确地描述出来,计算机才能够解决问题.
1.写算法有些类似于写解题步骤,首先认真分析问题,找出解决此问题的一般数学方法,然后借助有关变量、参数对算法加以表述,最后将解决问题的过程划分为若干步骤,用简练的语言把各个步骤表示出来.
2.设计算法的要求为:(1)写出的算法必须能解决一类问题,并能重复使用;(2)要使算法尽量简单,步骤尽量少;(3)算法的步骤要一步一步执行,每一步执行的操作必须明确,不能含糊,而且在有限的步骤后能够得出确定的结果.
【做一做3】 将下面的算法补充完整.
已知一个学生的语文成绩为89分,数学成绩为96分,外语成绩为99分,求他的总成绩$D$和平均成绩$E$的一个算法为:
第一步,取$A=89, B=96, C=99$.
第二步,________.
第三步,________.
第四步,输出$D, E$.
答案:计算总成绩$D=A+B+C$ 计算平均成绩$E=\frac{D}{3}$
1.理解算法的概念
剖析:(1)算法可以理解为按照一定规则解决某一类问题所构成的完整的解题步骤,或看成按要求设计好的有限的确切的计算序列,并且这样的步骤或序列能够解决一类问题.
(2)算法常用以下方式来表示:
第一步,……
第二步,……
第三步,……
……
(3)描述算法可以有不同的方式:文字、图形、符号.
(4)算法是机械的,有时要进行大量的重复计算,只要按部就班地去做,总能算出结果,通常把算法过程称为“数学机械化”,其最大优点是可以让计算机来完成.
(5)求解某一个问题的算法不一定只有唯一的一个,可能有不同的算法.
2.算法必须按步骤来设计
剖析:计算机和人类解决问题的区别:人类解决问题具有灵活性,同一个问题针对不同的情况,人类可以采取不同的解决方案.例如,通过爬梯子到房顶上,若“梯子”的某一节已经损坏了,则人类能想方设法越过这一节继续爬梯子.若在爬梯子的过程中感觉累了,则人类就能想到先休息一会儿再上.与人类不同,计算机没有人类的这种主观能动性.解决问题时,计算机只能一节一节地“爬梯子”,即按事先设计好的步骤来执行.如果“梯子”的某一节已经损坏了,也就是某个步骤设计不正确,那么计算机就不再往下执行了.计算机没有“累”的时候,总是勇往直前地继续下去,因此计算机解决问题的方式即算法必须有步骤,且这些步骤必须是明确的、有效的,而且能够在有限步之内完成.
因此在设计算法时,要把人类解决问题的思维方式变为计算机解决问题的方式,即必须按步骤来解决问题,把所要解决的问题分解为有限个明确的、有效的步骤来完成,这就是算法.
算法的概念
【例1】 下列关于算法的理解不正确的是_______.(填序号)
①算法有一个共同的特点,就是对一类问题有效(而不是个别问题);
②算法一般是机械的,有时要进行大量重复的计算;
③任何问题都可以用算法来解决;
④若解决某一具体问题的算法不同,则结果不同.
反思
1.算法实际上是解决问题的一种程序性方法,它通常解决某一个或一类问题,用算法解决问题,体现了从特殊到一般的数学思想.2.判断一个问题是否有算法,关键看是否有解决这一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.
【变式训练1】 给出下列表述:
①求过$M(1,2)$ 与 $N(-3,-4)$两点的直线方程可先求直线$M N$的斜率,再利用点斜式方程求得;②求以$A(2,2), B(2,6), C(4,4)$为顶点的$\triangle A B C$的面积可先求$AB$的长$a$,再求直线$AB$的方程及点$C$到$AB$的距离$h$,最后利用$S=\frac{1}{2} a h$;③ 判断方程$x 2+x+1=0$ 有无实数根 ④植树需要运苗、挖坑、栽苗、浇水这些步骤。其中是算法的有( )
A.1个 B.2个
C.3个 D.4个
设计仅含有依次执行步骤的算法
【例2】 已知一个长方体的长、宽、高分别为3,4,5,设计一个算法求其体积.
反思
反思仅含有依次执行步骤的算法是较简单的算法.特别地,若有公式可以套用,则通常选择公式作为解决问题的算法.【变式训练2】 写出求二次函数$y=-2 x^{2}+4 x+1$最值的算法.
设计含有判断条件的算法
【例3】 已知函数$y=\left\{\begin{array}{l}{2 x+1, x>1} \\ {-x-1, x \leq 1}\end{array}\right.$设计一个算法,输入自变量
反思
设计含有判断条件的算法时,往往是先判断条件,再根据条件是否成立,设计不同的步骤.【变式训练3】 结合下面的算法:
第一步,输入$x$.
第二步,判断$x$是否小于0.若是,则输出$x+2$,结束算法;否则执行第三步.
第三步,输出$x-1$,结束算法.
当输入$x$的值为-1,0,1时,输出的结果分别为( )
A.-1,0,1 B.-1,1,0
C.1,-1,0 D.0,-1,1
设计含有重复步骤的算法
【例4】 写出求1×2×3×4×5×6的算法.
反思
若算法问题中涉及的运算进行多次重复的操作,且先后参与运算的各数之间有相同的变化规律,则可以引入变量(称之为循环变量)参与运算.
【变式训练4】 写出求1至1 000的正整数中3的倍数的一个算法(打印结果).