第一章 算法初步 疑难规律方法.docx

上传人:b****0 文档编号:25933163 上传时间:2023-06-16 格式:DOCX 页数:18 大小:109.06KB
下载 相关 举报
第一章 算法初步 疑难规律方法.docx_第1页
第1页 / 共18页
第一章 算法初步 疑难规律方法.docx_第2页
第2页 / 共18页
第一章 算法初步 疑难规律方法.docx_第3页
第3页 / 共18页
第一章 算法初步 疑难规律方法.docx_第4页
第4页 / 共18页
第一章 算法初步 疑难规律方法.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第一章 算法初步 疑难规律方法.docx

《第一章 算法初步 疑难规律方法.docx》由会员分享,可在线阅读,更多相关《第一章 算法初步 疑难规律方法.docx(18页珍藏版)》请在冰豆网上搜索。

第一章 算法初步 疑难规律方法.docx

第一章算法初步疑难规律方法

1 算法概念的诠释

同学们也许对算法这个概念很陌生,但其实大家在日常生活中已经接触过很多算法了,广义地说,算法就是做某一件事情的步骤或程序.菜谱是做菜肴的“算法”,洗衣机的使用说明书是操作洗衣机的“算法”.每个算法都闪耀着人类的智慧,阅读和学习这些东西会给我们带来一种难以用语言表达的满足感和快感.在以后的学习和工作中我们会不断从实际应用中了解和领会算法是如何解决各个领域的实际问题,推动人类文明的发展的.

一、算法的特征

1.确定性

确定性:

算法中的每条运算规则必须是明确定义的、可行的,每一个步骤只能有一个确定的后继步骤,运行终止应得到问题的解答或指出问题没有解答.

2.有限性

一个算法必须保证在执行有限步后结束,至少不能出现无限循环或死循环,在此基础上越简洁越快越好.越简洁,占用内存越少,对设备的要求越基本;越快,这个意义就不用说了吧.比如一个计算对方导弹轨迹的算法,如果等你算出来,那边导弹已经落地了,那还有什么意义?

二、算法的思想

专业的事交给专业的人去做.普通人只要按专业人士给出的步骤,一步一步地去完成,这就是算法的思想,即程序思想,你也可以理解为傻瓜化思想.另外,算法强调的是通性通法,即给出一个算法,实际上是给出了一种解决一类问题的方法.比如给出一个计算圆的面积的算法,

它应该能计算各种半径的圆的面积,而不是只适用于半径为某一具体数的圆.

三、特别提示

1.算法中的每一步应该是确定的并且能够有效地执行且得到确定的结果,而不应当模棱两可,如求近似值却没有要求近似的精确度,则该问题不能求解.

2.现代算法主要是面向计算机的,如果算法中没有输出,程序也能运行,但是运行结果无法输出.如果想要得到结果,那就要有输出.

3.只要有公式可以利用,利用公式解决问题是最理想、最简便的方法,比如在写解方程x2-3x-4=0的算法时,用求根公式来做,步骤则较为简洁.

4.求解某一个问题的算法一般不是唯一的,我们通常选择较为简单的算法.

四、典例分析

例 下面给出了一个问题的算法:

第一步,输入x.

第二步,若x≥4,则执行第三步,否则执行第四步.

第三步,输出2x-1.

第四步,输出x2-2x+3.

这个算法解决的问题是什么?

分析 依据题目给出的算法步骤依次执行,是读懂算法的一个重要而基本的办法.

解 这个算法先是输入一个变量x,当x≥4时输出2x-1,当x<4时输出x2-2x+3,不难发现这个算法解决的问题是求分段函数f(x)=

的函数值.

2 典型算法举例

1.解方程(方程组)、不等式的算法

例1 用自然语言描述求一元二次方程x2+bx+c=0的根的算法.

思维切入 对于求方程的根,解方程组这样的数值型的问题,我们都有具体的计算方法,只要我们把平时的计算方法严格地按步骤描述出来即可.因此我们很容易得到下面的算法.

解 用自然语言来描述算法,

第一步,计算Δ=b2-4ac.

第二步,如果Δ<0,则原方程无实数解,输出“无实数解”;否则(Δ≥0)x1=

,x2=

,输出x1,x2的值.

点评 第二步中包含了一个判断Δ=b2-4ac是否小于零的条件,并根据判断结果进行不同的处理.算法是否“健壮”,也是衡量算法优劣的重要指标.如果思维不严谨,比如这个算法忘记考虑Δ=b2-4ac小于零的情形,实际运算一旦遇到,则会导致不是出错就是死机,那这个算法就是不“健壮”的.

例2 写出解x2-4x+3<0的算法.

思维切入 只要把平时的固定解法有条理地写出来,即为解不等式的算法.

解 第一步,求出对应方程的根x1=1,x2=3.

第二步,确定根的大小x1

第三步,写出解集{x|1

2.套用公式求值的算法

例3 已知摄氏温度C与华氏温度F的关系是F=C×

+32,写出由摄氏温度求华氏温度的算法.

思维切入 这是一个函数求值问题,给C赋值再代入解析式求F.

解 第一步,输入摄氏温度C.

第二步,代入F=C×

+32.

第三步,输出华氏温度F.

点评 平时计算我们只注重第二步,其他步骤往往忽略了,算法却讲究“按部就班”,这类问题的算法一般分为三步:

第一步输入值,第二步套用公式,第三步输出结果.

3.判断性质型问题的算法

例4 试描述判断圆(x-a)2+(y-b)2=r2和直线Ax+By+C=0位置关系的算法.

思维切入 直线与圆的位置关系有三种:

相离、相切、相交,如果圆心到直线的距离d>r,则直线与圆相离,d=r则直线与圆相切,d

解 第一步,输入圆心的坐标、直线方程的系数和半径r.

第二步,计算z1=Ax0+By0+C.

第三步,计算z2=A2+B2.

第四步,计算d=

.

第五步,如果d>r则相离,如果d=r则相切,如果d

点评 算法要求分解成简单计算,不要直接计算d=

.一个比较大的程序,会分成若干模块,一个模块出了问题只需要修改这一模块,而不需要全盘翻工.

4.累加、累乘问题的算法

例5 用自然语言描述求解mul=1×2×3×4×5×6问题的算法.

思维切入 根据算法的特点,我们学过的加、减、乘、除运算法则都是算法,只要按照具体的规则有步骤地描述过程,便有了该题的算法.

解 第一步,计算1×2,得2.

第二步,将第一步中的运算结果2与3相乘得6.

第三步,将第二步中的运算结果6与4相乘得24.

第四步,将第三步中的运算结果24与5相乘得120.

第五步,将第四步中的运算结果120与6相乘得720.

点评 如果让人一步一步地做,太枯燥了.但这恰好是计算机的优势.所以算法好不好,还分让谁来执行,对人来讲是奇笨无比的办法,对计算机却可能是一个好办法.

思维拓展 该算法包含一个重复操作的过程是循环结构,我们可将算法改造得更为简练、科学.

解 第一步,设i=1,P=1.

第二步,如果i≤6执行第三步,否则执行第五步.

第三步,计算P×i并将结果代替P.

第四步,将i+1代替i,转去执行第二步.

第五步,输出P.

点评 i称为计数变量,每一次循环它的值增加1,由1变到6,P是一个累乘变量,每一次循环得到一个新的结果,然后新的结果代替原值.

3 程序框图画法全知晓

一、画程序框图的基本步骤

第一步,设计算法,因为算法的设计是画程序框图的基础,所以画程序框图前,首先写出相应的算法步骤,并分析算法需要用哪种基本逻辑结构(顺序结构、条件结构、循环结构)完成.

第二步,把算法步骤转化为对应的程序框图,在这种转化过程中往往需要考虑很多细节,是一个将算法“细化”的过程.

第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到整个表示算法的程序框图.

二、画程序框图的规则

1.使用标准的框图符号.

2.框图一般按从上到下、从左到右的方向来画.

3.除判断框外,大多数程序框只有一个进入点和一个退出点,判断框是唯一具有超过一个退出点的程序框.

4.在图形符号内描述的语言要简练清楚.

三、典例分析

1.顺序结构

顺序结构是最简单的算法结构,是任何一个算法都离不开的结构.若一个算法由若干个依次执行的步骤组成,则在画程序框图时,可直接由顺序结构完成.因为在其他的结构中都会涉及到顺序结构,所以关于顺序结构的画法,在此不再单独叙述.

2.条件结构

设计程序框图时,若是分段函数或执行时需要先判断才能执行的问题,则需要用到判断框,引入条件结构.

例1 如图,在边长为4的正方形ABCD的边上有一点P,沿着BCDA的方向由点B向点A运动,设点P运动的路程为x(0

分析 随着点P的位置不同,△APB的面积与路程x有不同的对应关系,所以需要先判断点P的位置,这就需要用到条件结构.先根据题意写出算法,再根据算法画出程序框图.即

第一步,按照题意,y与x的关系满足分段函数:

y=

第二步,用合适的含条件结构的程序框图表示该分段函数.

解 程序框图如图所示.

点评 该题中的分段函数是分三段的函数,需引入两个判断框.至于判断框的内容是没有顺序的,但与下一图形的内容或操作必须相互对应.同时,在画程序框图时,要特别注意图形符号的规范性.

3.循环结构

如果问题中进行了重复的运算,且有相同的规律,就可根据需要引入相关变量,利用这些规律组成一个循环体,用循环结构来解决.

例2某机械厂为增加产值进行了技术革新.据统计2009年的生产总值为500万元,技术革新后预计每年的生产总值比上一年增加5%,问最早要到哪一年生产总值才能超过600万元,试用程序框图表示.

分析 用变量n,a分别表示所经过的年数和生产总值的数量,注意变量的初始值以及递加的值是多少.由题意知第n年后的生产总值为a=500(1+0.05)n,此时为(2009+n)年.由于题中进行了重复的运算,故应引入循环结构.

解 程序框图如图所示.

点评 在本例中,给出了当型循环结构的框图,同学们可以自行完成直到型循环结构.

4 算法与函数的交汇

一、顺序结构与函数的交汇

例1 输入一个实数,画出求函数y=x3+3x-7的值的一个程序框图.

解 程序框图如图所示.

点评 一般的,对于一次函数、二次函数、高次函数等的求值问题,通常采用顺序结构.

二、条件结构与函数的交汇

例2 假设到银行办理个人异地汇款时,银行要收取一定的手续费,汇款不超过100元,收取1元手续费;超过100元但不超过5000元,按汇款额的1%收取手续费;超过5000元,一律收取50元手续费.试写出汇款额为x元时,银行收取手续费y元的计算方法,并画出程序框图.

解 本题是一个实际问题,应先建立数学模型:

y=

由此可知,求手续费,需先判断x的取值范围.故应用条件结构描述,程序框图如图所示.

点评 对于三段或以上的分段函数,可以写成嵌套式条件结构,也可以用顺序结构一段一段地讨论.

三、循环结构与函数的交汇

例3 已知函数y=x2+2x-5,x∈[-20,20],且x∈Z,画出求该函数最大值的程序框图.

分析 因为所给函数是二次函数,其定义域是{x|-20≤x≤20,x∈Z},即函数只能在[-20,20]内取整数,因此,只要求出函数的自变量对应的每一个函数值,从中找出最大值便可以解决问题.

解 程序框图如图所示.

点评 一般地,对一些有规律的重复计算的算法,如累计求和、累乘求积等问题通常需要用循环结构来执行.同时要注意,循环结构不能是永不休止的“死循环”,必须在某一条件下终止循环,这就需要条件结构来进行判断.所以说,循环结构中一定包括条件结构.

总之,函数与算法虽各自独立,但我们可以从内涵与外延两个方面找到它们的交汇点.因此,我们平时要注意多联系、多思考,以便更好地挖掘算法中的函数思想,更好地把握并灵活应用算法中的函数思想.

5 解读输入、输出、赋值语句

一、输入、输出语句

输入语句的一般格式为

若有多个输入的量,需要一个一个输入,计算机可以给出提示框,这时的输入格式为

“提示内容”一般是提示用户输入什么样的信息.INPUT语句可以给多个变量赋值,如INPUT “三角形的三条边长为”;a,b,c.

输出语句的一般格式为

上述输出的只是一个值,若要连同式子一起输出,则格式为

输入、输出语句的提示内容要放到“”内,提示内容和表达式之间用“;”隔开,变量之间用“,”隔开.

例1 已知正四棱柱的底边长a和高h,试编写程序,计算该四棱柱的体积.

解 

INPUT a

INPUT h

PRINT “四棱柱的体积为”;h*a^2

END

INPUT“四棱柱的底边长是”;a

INPUT“四棱柱的高是”;h

PRINT“四棱柱的体积为”;h*a^2

END

点评 本题给出了两个程序,区别是有没有提示内容.其本质是一样的,只是程序二更好些,便于使用者操作.另外,语句是面向计算机的,格式不对就出错或者拒绝执行,所以使用语句时特别讲究格式规范,哪怕一个标点也要注意.

二、赋值语句

赋值语句的一般格式为

赋值语句中的“=”叫做赋值号,计算机执行赋值语句时,先计算“=”右边的表达式,然后将结果赋给左边的变量,它和数学中的等号不同.

赋值号“=”左边只能是变量,不能是表达式等;赋值号的右侧可以是常数,也可以是表达式,对于数学表达式,程序会先将表达式的值求出,再赋给左边的变量.

例2 在一次数学考试中,小明、小亮、小强的成绩分别为a,b,c.后来发现统计错了,a应为小亮的成绩,b为小强的成绩,c为小明的成绩,试编写一个程序,更正成绩单,并输出.

分析 本题实际上是交换三个数的值,将a的值给b,b的值给c,c的值给a.

解 程序如图

INPUT “三位同学的成绩分别为”;a,b,c

x=a

a=c

c=b

b=x

PRINT “三位同学的真正成绩分别为”;a,b,c

END

点评 引入的第四个变量x的作用是存放变量a的值,在数的交换问题中常常要再引入一个变量,否则会造成数值的丢失.

6 条件语句小聚

一、常用的条件语句

条件语句是用来表达算法中的条件结构的,主要有两种形式,一种是“IF-THEN-ENDIF”语句,一种是“IF-THEN-ELSE-ENDIF”语句.其中,“ENDIF”是条件语句的结束标志.

当判断条件成立与否都需要执行某操作时,使用“IF-THEN-ELSE-ENDIF”语句;当条件判断后只需执行一种操作时,使用“IF-THEN-ENDIF”语句.

例1 运行如图所示的程序,输出的y与输入的x满足的关系式为____________________.

INPUT x

IF x<1 OR x>8 THEN

y=2^x

ELSE

y=3*x+1

ENDIF

PRINTy

END

分析 本题中使用的是“IF-THEN-ELSE-ENDIF”语句.当条件成立时,执行语句“y=2^x”,不成立时,执行语句“y=3*x+1”,故y=

答案 y=

点评 求分段函数的值是条件语句的重要应用之一.

二、条件语句的复合

当问题比较复杂,需要执行的分支较多时,可多次使用条件语句,并列或嵌套使用.

并列形式如图:

IF 条件1 THEN

 语句体1

ENDIF

IF 条件2 THEN

 语句体2

ENDIF

嵌套形式如图:

IF 条件1 THEN

 语句体1

ELSE

 IF 条件2 THEN

 语句体2

 ELSE

 语句体3

 ENDIF

ENDIF

注意:

①一般要求一个“IF”都要有一个“ENDIF”与其对应;②在用条件语句的嵌套书写程序时,要弄清哪个“IF”对应哪个“ENDIF”;③书写时,注意每一层要对齐.

例2 已知a,b,c三个实数中,有且只有一个是负数,设计一个程序,筛选出这个负数.

分析 需要对这三个数逐一进行判断,故用条件语句的并列形式或嵌套形式.

解 程序如图.

INPUT “a,b,c=”;a,b,c

IF a<0 THEN

PRINT a

ELSE

IF b<0 THEN

 PRINT b

ELSE

 PRINT c

ENDIF

ENDIF

END

7 透析循环语句

循环语句是用来实现算法中的循环结构的,主要用于处理一些需要反复执行的运算任务.

一、两种循环语句

1.WHILE语句

(1)格式:

如图.

WHILE 条件

 循环体

WEND

(2)功能:

用于实现当型循环.

(3)工作原理:

先判断条件是否成立,如果成立,则执行循环体;然后返回到WHILE语句再判断条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到返回后条件不成立为止,这时不再执行循环体,直接跳出循环,执行“WEND”后面的语句.循环体可能一次也不执行.

2.UNTIL语句

(1)格式:

如图.

DO

循环体

LOOPUNTIL 条件

(2)功能:

用于实现直到型循环.

(3)工作原理:

先执行一次循环体,然后判断“LOOPUNTIL”后面的条件是否成立,如果条件不成立,返回重新执行循环体,这个过程反复执行,直到“LOOPUNTIL”后面的条件成立为止.这时跳出循环体,执行“LOOPUNTIL”后面的语句.循环体至少执行一次.

3.两种语句间的联系

(1)都是反复执行某种操作的语句;

(2)二者之间可以相互转化.同一问题的算法,可由两种语句来书写,但要注意“条件”的正确表述.

二、学习循环语句四注意

1.循环语句中的变量一般需要进行一定的初始化操作

累加变量的初始值通常取0,累乘变量的初始值通常取1.

2.在循环体中要有改变计数变量值的语句

每执行一次循环体,循环体中涉及到的变量一般都应发生改变,从而步步逼近满足跳出循环体的条件.

3.循环体中各语句的顺序

循环体中语句均相同,顺序不同时,运行后输出的结果一般不同.

4.循环体中,计数变量的取值范围

计数变量的初始值和终值是决定循环次数的重要因素,不容轻视.

三、数学应用

1.累加求和,累乘求积.

2.求含参不等式成立的参数的最大(小)值.

3.数字检索,即在某些数中搜索满足条件的数.

4.根据递推公式求项.

例 编写程序,计算2+23+25+…+299的值.

分析 这是一个累加问题,可以用WHILE语句,也可以用UNTIL语句来编写程序.

解 程序如图.

i=1

S=0

WHILE i<=50

 S=S+2^(2*i-1)

i=i+1

WEND

PRINTS

END

点评 解决具体的构造循环语句的算法问题,要尽可能地少引入变量,因为较多的变量会使得程序设计比较麻烦.同一问题的程序并不唯一.本题也可用如图所示的程序表示.注意两程序中循环体部分的区别.当然了,变量的初值不同,程序也会有所改变.

i=1

S=0

WHILE i<=99

 S=S+2^i

 i=i+2

WEND

PRINT S

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1