第3课时 循环结构
[目标]
1.掌握两种循环结构的程序框图的画法;2.能进行两种循环结构的程序框图的转化;3.能正确设计程序框图,解决有关实际问题.
[重点]
用框图表示算法的循环结构.
[难点]
利用循环结构解决实际问题.
知识点一 循环结构
[填一填]
1.循环结构的概念
在一些算法中,经常会出现从某处开始,按照一定的条件反复执行某些步骤的情况,这就是循环结构,反复执行的步骤称为循环体.
2.循环结构的分类及特征
[答一答]
1.条件结构和循环结构有什么区别和联系?
提示:
2.直到型循环与当型循环结构中“条件”的作用的异同点有哪些?
提示:(1)区别:直到型循环结构中的循环条件是终止循环的,只要一满足条件就终止执行循环体,只有不满足条件时,才反复执行循环体;而当型循环结构中的循环条件是维持循环的,只有满足条件才执行循环体.
(2)联系:两种循环结构中的条件是对立关系.两种循环结构虽形式不同,但功能和作用是相同的,一般情况下,直到型循环与当型循环可以相互转化,最终达到的目的是一样的.我们将循环结构中的条件称为循环条件.
知识点二 程序框图的画法
[填一填]
1.用程序框图表示算法
在用自然语言表述一个算法后,可以画出程序框图,用顺序结构、条件结构和循环结构来表示这个算法.
2.程序框图的优点
清楚、简练、便于阅读和交流.
[答一答]
3.任何一个算法的程序框图中都必须含有三种基本逻辑结构吗?
提示:根据算法解决实际问题的不同,其程序框图中可以不同时包含三种基本逻辑结构.
4.设计一个算法的程序框图需要哪几个步骤?
提示:第一步,用自然语言表述算法步骤.
第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的程序框图.
第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法的程序框图.
类型一 循环结构的设计
[例1] 画出计算1+++…+的值的一个程序框图.
[分析] →→→
→
[解] 程序框图如下:
方法一:当型循环结构 方法二:直到型循环结构
运行含循环结构的程序框图的步骤
(1)按顺序逐步运行.
(2)写出每次运行后各个变量的结果.
(3)一直写到满足条件(或不满足条件)退出循环,输出结果.
[变式训练1] 画出计算1×3×5×7×…×99的值的程序框图.
解:(1)直到型循环 (2)当型循环
类型二 循环结构的实际应用
[例2] (1)某城市缺水问题比较突出,为了制定节水管理办法,对全市居民某年的月均用水量进行了抽样调查,根据如图所示的程序框图,若其中4位居民的月均用水量(单位:吨)分别为1,1.5,1.5,2,则输出的结果s为________.
(2)某商场第一年销售计算机5
000台,如果平均每年销售量比上一年增加10%,那么从第一年起,大约几年可使总销售量达40
000台?画出解决此问题的程序框图.
[解析] (1)第一步,s1=s1+x1=0+1=1,s=1,i=2;
第二步,s1=s1+x2=1+1.5=2.5,s=,i=3;
第三步,s1=s1+x3=2.5+1.5=4,s=,i=4;
第四步,s1=s1+x4=4+2=6,
s=×6=,i=5,不满足i≤4,输出s=.
(2)解:程序框图如图所示:
[答案] (1) (2)见解析
利用循环结构解决应用问题的方法
[变式训练2] 上海浦东新区2008年的生产总值约为3
151亿元人民币,如果从此浦东新区生产总值的年增长率为10.5%,求浦东新区最早哪一年的生产总值超过8
000亿元人民币?某同学为解答这个问题设计了一个程序框图,但不慎将此框图的一个处理框中的内容污染而看不到了,则此框图中因被污染而看不到的内容应是( B )
A.a=a+b
B.a=a×b
C.a=(a+b)n
D.a=a×bn
解析:根据题意,本程序框图意义为计算生产总值.
由题意知,a=3
151,b=1.105,n=2
008,
当满足a>8
000时,跳出循环,输出年份n.
当不满足a>8
000时,执行语句n=n+1.
根据已知,a为2008年生产总值,b为“1+增长率”,
故执行的语句应为a=a×b.故选B.
类型三 循环结构的读图问题
命题视角1:确定循环条件的读图问题
[例3] 阅读下边的程序框图,若输出s的值为-7,则判断框内可填写( )
A.i<3?
B.i<4?
C.i<5?
D.i<6?
[解析] 由框图知,第一步为s=1,i=3,第二步为s=-2,i=5,第三步为s=-7,i=7,因为输出s的值为-7,所以判断框内为“i<6?”,故选D.
[答案] D
这类问题一般从计数变量i的初始值开始计算,依次算出s的值,直到满足输出结果为止,也就是采用归纳法进行检验.
[变式训练3] 某程序框图如图所示,若输出的S=57,则判断框内为( A )
A.k>4?
B.k>5?
C.k>6?
D.k>7?
解析:根据已知运行程序框图得:k=2,S=4;k=3,S=11;k=4,S=26;k=5,S=57,结合选项,从而判断框中应填“k>4?”.
命题视角2:确定循环体的读图问题
[例4] 某店一个月的收入和支出总共记录了N个数据a1,a2,…,aN,其中收入记为正数,支出记为负数.该店用如下图所示的程序框图计算月总收入S和月净盈利V,那么在图中空白的处理框①,②中,应分别填入下列四个选项中的( )
A.T=T-A S=S+A
B.T=T+A S=S-A
C.T=T+A S=S+A
D.T=T-A S=S-A
[解析] 由题意知A>0代表收入,A<0代表支出,所以①表示支出的累加,故填T=T+A;②表示收入的累加,故填S=S+A,选C.
[答案] C
确定循环体关键是看累加或累乘等运算的主体是什么,题目要求的目的是什么.
[变式训练4] 下图给出的是计算1+++…+的值的一个程序框图,则图中执行框①处和判断框②处应填的语句是( B )
A.S=S+n,i=15?
B.S=S+,i>15?
C.S=S+,i=15?
D.n=S+n,i>15?
解析:根据所求式子的各分数的分母依次为1、3、5、7、…、29,得①处应填S=S+,而所求式子是15个数的和,所以②处应填i>15?,故选B.
1.下面的程序框图中是循环结构的是( C )
A.①②
B.②③
C.③④
D.②④
解析:①是顺序结构,②是条件结构,③是当型循环,④是直到型循环.
2.直到型循环结构的框图为( B )
3.如图,该程序框图的功能是输出乘积为624的相邻的两个正的偶数,输出结果为i=24,i+2=26.
4.如图是求12+22+32+…+1002的值的程序框图,则正整数n=100.
解析:i=1,s=0;s=12,i=2;s=12+22,i=3;…,所以n=100.
5.用自然语言描述算法步骤,并画出程序框图来求1×2×3×…×19×20的值.
解:算法设计:
第一步:令P=1;
第二步:令i=2;
第三步:P=P×i;
第四步:i=i+1;
第五步:若i>20不成立,
则返回第三步,继续执行;
若i>20成立,
则输出P的值,算法结束.
程序框图如图:
——本课须掌握的三大问题
1.用循环结构描述算法,一般来说需要事先确定三件事:①确定循环变量和初始条件;②确定算法中反复执行的部分,即循环体;③确定循环的循环条件.
2.循环结构中,当型循环结构可能一次也不执行循环体,而直到型循环结构至少要执行一次循环体.循环结构中,常用的变量有计数变量、累加变量及累乘变量.计数变量用来记录循环的次数,同时它的取值还用于判断循环是否终止.
3.循环结构不能是死循环,一定要在某个条件下终止循环,需要条件结构来做出判断,因此循环结构中一定包含条件结构.
PAGE第2课时 条件结构
[目标]
1.会用条件结构画程序框图;2.体会条件结构在程序框图中的作用;3.进一步熟悉程序框图的画法.
[重点]
用条件结构画程序框图.
[难点]
条件结构的应用.
知识点 条件结构的含义与程序框图
[填一填]
1.条件结构的概念
算法的流程根据条件是否成立,有不同的流向,处理这种过程的结构就是条件结构.
2.条件结构的分类及特征
[答一答]
1.条件结构与顺序结构的明显区别是什么?
提示:条件结构与顺序结构的明显区别是:条件结构有判断框,顺序结构没有判断框.
2.条件结构中的判断框有两个出口,由此说明条件结构执行的结果也就有两种可能,对吗?
提示:这种说法不对,判断框虽然有两个出口,但根据条件是否成立,选择的出口是确定的,故执行结果也是唯一的.
3.根据给出的程序框图,计算f(-1)+f(2)=0.
解析:因为f(x)=所以f(-1)=-4,f(2)=4,所以f(-1)+f(2)=-4+4=0.
类型一 条件结构的功能
[例1] (1)如图所示的程序框图,其功能是( )
A.输入a,b的值,按从小到大的顺序输出它们的值
B.输入a,b的值,按从大到小的顺序输出它们的值
C.求a,b中的最大值
D.求a,b中的最小值
(2)对任意非零实数a,b,若a?b的运算原理如程序框图所示,则3?2=________.
[解析] (1)取a=1,b=2知,该程序框图输出b=2,因此是求a,b中的最大值.
(2)由于a=3,b=2,则a≤b不成立,则输出==2.
[答案] (1)C (2)2
由程序框图定义一种运算,再依据该运算规则计算所给式子的值是本题的特点.在解题时,要准确理解条件结构的功能和作用,特别是判断框的否定出口,不要忽略“a=b”的情况.
[变式训练1] 已知M=ln2,N=lg10,执行如图所示的程序框图,则输出S的值为ln2.
解析:依题意,可得M
类型二 简单条件结构的设计
[例2] 画出计算函数y=|2x-3|的函数值的程序框图.(x由键盘输入)
[解] 程序框图如图所示:
本题是一个分段函数问题,因此当给出变量x的值时,必须先判断x的所属范围,然后再确定利用哪一个表达式求函数值.本题仅用顺序结构是办不到的,算法中要增加判断x所属范围的步骤,故应用条件结构才能解决此问题.
[变式训练2] 画出计算函数y=的函数值的程序框图(x由键盘输入).
解:程序框图如图所示:
类型三 条件结构的嵌套问题
[例3] 已知函数y=写出求该函数的函数值的算法,并画出程序框图.
[分析] 求分段函数的函数值问题,算法中需对x范围作出判断分析,画程序框图时必须用条件结构.
[解] 算法如下:
第一步,输入x.
第二步,如果x<0,那么使y=2x-1,执行第五步;否则,执行第三步.
第三步,如果0≤x<1,那么使y=x2+1,执行第五步;否则,执行第四步.
第四步,y=x2+2x.
第五步,输出y.
程序框图如图所示.
?1?解决分段函数求值问题,一般采用条件结构设计算法.?2?对于判断两个条件以上的问题,往往需要用条件结构的嵌套,这时要注意嵌套的次序.
[变式训练3] 函数y=写出求该函数函数值的算法及程序框图.
解:算法:
第一步,输入x.
第二步,如果x>0,那么使y=-1;
如果x=0,那么使y=0;
如果x<0,那么使y=1.
第三步,输出函数值y.
程序框图如下图所示.
类型四 条件结构的实际应用
[例4] 某班的一次数学考试,成绩满分为100分.现对该班的成绩进行分析评价:成绩超过80分的为A,低于60分的为C,其他的为B.
请设计算法,当输入的数学成绩为x时,输出相应的评价结果.(写出算法,画出程序框图)
[分析] 对成绩的分析评价分三种情况讨论,因此引用条件结构的叠加画程序框图.
[解] 第一步,输入学生的数学成绩.
第二步,判断该同学的数学成绩是否大于80,若是,输出A.否则,进行第三步.
第三步,判断该同学的数学成绩是否小于60,若是,输出C.否则输出B,
结束.
程序框图如图所示.
利用条件结构解决实际应用的方法
(1)解应用题型应先审题,根据题意建立函数模型,根据所列函数再设计程序框图.
(2)涉及多个条件判断,画程序框图时,一定要分清主次,弄清每个判断框中的条件,以及满足条件时程序的流向.
[变式训练4] 某居民区的物业部门每月向居民收取卫生费,计费方法如下:3人和3人以下的住户,每户收取5元,超过3人的住户,每超出1人加收1.2元,设计一个算法,根据输入的人数,计算应收取的卫生费,并画出程序框图.
解:设卫生费用y表示,人数用x表示,
则y=
算法如下:
第一步,输入x.
第二步,判断x.若x≤3,则y=5,执行第四步;否则执行第三步.
第三步,y=5+1.2(x-3).
第四步,输出y.
程序框图如图所示:
1.条件结构不同于顺序结构的特征是含有( B )
A.处理框
B.判断框
C.输入、输出框
D.起止框
2.下列算法中,含有条件结构的是( C )
A.求两个数的积
B.求点到直线的距离
C.解一元二次方程
D.已知梯形两底和高求面积
3.某市的出租车收费办法如下:不超过2千米收7元(即起步价7元),超过2千米的里程每千米收2.6元,另每车次超过2千米收燃油附加费1元(不考虑其他因素).相应收费系统的程序框图如图所示,则①处应填( D )
A.y=7+2.6x
B.y=8+2.6x
C.y=7+2.6(x-2)
D.y=8+2.6(x-2)
解析:首先建立函数模型,由题意知该系统属于分段函数,函数解析式为y=因此框图中①处应填y=8+2.6(x-2).
4.已知函数f(x)=程序框图(上图)表示的是给定x值,求其相应函数值的算法.请将该流程图补充完整.其中①处应填x≤3?,②处应填y=-3x2.若输入x=3,则输出结果为5.
5.设计一个程序框图,使之能判断任意输入的整数x是奇数还是偶数.
解:程序框图如下:
——本课须掌握的两大问题
1.对条件结构的理解
顾名思义,条件结构是处理实际问题中含有条件判断的一种基本逻辑结构,条件成立与否其流向是不同的.
2.条件结构的两种形式的区别
一种是在两个分支中都包含算法的步骤,符合条件就执行步骤A,否则执行步骤B;另一种是在一个分支中包含算法的步骤A,而在另一个分支上不包含算法的任何步骤,符合条件就执行步骤A,否则执行这个条件结构后的步骤.
PAGE1.1.2 程序框图与算法的基本逻辑结构
第1课时 程序框图与顺序结构
[目标]
1.理解程序框图的含义;2.记住各种程序框的画法和功能;3.会用算法的顺序结构表示算法.
[重点]
程序框的画法、功能,用顺序结构表示算法.
[难点]
对程序框图的理解.
知识点一 程序框图
[填一填]
1.定义:程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.
2.表示:在程序框图中,一个或几个程序框的组合表示算法中的一个步骤;带有方向箭头的流程线将程序框连接起来,表示算法步骤的执行顺序.
3.基本程序框及其功能
[答一答]
1.用程序框图表示算法,相对于自然语言描述的算法有什么优点?
提示:用程序框图表示算法,相对于自然语言描述的算法更直观、清晰、易懂,便于检查、修改和交流,也更接近于计算机的程序设计.
2.什么框有一个入口两个出口?其他框的出、入口情况怎样?
提示:判断框有一个入口,两个出口;开始框只有一个出口,结束框只有一个入口;输入、输出框及处理框有一个入口,一个出口.
3.什么框具有计算功能?
提示:处理框具有计算功能.
知识点二 顺序结构
[填一填]
1.算法的基本逻辑结构
用程序框图表示算法时,算法的逻辑结构展现得非常清楚.算法的三种基本逻辑结构为顺序结构、条件结构和循环结构.尽管算法千差万别,但都是由这三种基本逻辑结构构成的.
2.顺序结构
[答一答]
4.(1)顺序结构是任何算法都离不开的基本结构吗?
(2)顺序结构因为有确定的顺序,所以流程线可不画箭头,对吗?
提示:(1)任何一个算法都离不开顺序结构,顺序结构是最简单、最基础的结构.
(2)不对.流程线本身是带有箭头的线.
类型一 程序框图的基本概念
[例1] (1)下列说法正确的是( )
A.程序框图中的图形符号可以由个人来确定
B.也可以用来执行计算语句
C.输入框只能紧接在起始框之后
D.长方形框是执行框,可用来对变量赋值,也可用来计算
(2)任何一个算法都离不开的基本结构是( )
A.顺序结构
B.条件分支结构
C.输出结构
D.三个都是
[解析] (1)程序框是由通用图形符号构成,并且有特殊含义,A不正确;菱形框是判断框,只能用来判断,所以B不正确;输入框可用在算法中任何需要输入的位置,所以C也不正确;由程序框的功能可知D项正确.
(2)顺序结构是任何一个算法都离不开的基本结构.故选A.
[答案] (1)D (2)A
使用程序框的四点注意事项
(1)使用标准的框图符号:终端框(起止框)、输入、输出框、处理框(执行框)、判断框都有各自专用的图形符号,不可更改.
(2)起止框:任何程序框图不可缺少.
(3)输入、输出框:可以用在算法中任何需要输入、输出的位置.
(4)算法中间要处理的数据和计算,可分别写在不同的处理框内.
[变式训练1] (1)下列关于程序框图的说法正确的是( A )
A.程序框图是描述算法的图形
B.程序框图中可以没有输出框,但必须要有输入框给变量赋值
C.程序框图虽可以描述算法,但不如用自然语言描述算法直观
D.程序框图和流程图不是一个概念
解析:由于算法设计时要求返回执行的结果,故必须要有输出框,对于变量的赋值则可以通过处理框完成,故算法设计时不一定要用输入框,所以B项是错误的;相对于自然语言,用程序框图描述算法的优点主要就是直观、形象,容易理解,在步骤上表达简单了许多,所以C选项是错误的;程序框图就是流程图,所以D选项也是错误的.故而本题答案选A.
(2)下列功能中属于处理框的是( B )
①赋值;②计算;③判断;④输入、输出.
A.①②③
B.①②
C.④
D.①②④
解析:处理框的功能是赋值和计算,判断则是判断框的功能,输入、输出则要通过输入、输出框来完成,故赋值和计算都属于处理框的功能.
类型二 程序框图的功能
[例2] 如图所示的程序框图是为解决某个问题而绘制的.仔细分析各图框中的内容及图框之间的关系,回答下列问题:
(1)图框①中x=2的含义是什么?
(2)图框②中y=ax+b的含义是什么?
(3)该程序框图解决的是怎样的一个问题?
(4)若a=4且最终输出的结果是y=3,则当x取5时输出的结果5a+b的值应该是多大?
(5)在(4)的前提下,输入的x值越大,输出的ax+b的值是不是越大?为什么?
[解] (1)图框①中x=2表示x的值为2.
(2)图框②中y=ax+b的含义:在执行①的前提下,即当x=2时计算ax+b的值,即y的值为ax+b.
(3)该程序框图解决的是求函数f(x)=ax+b的函数值的问题.其中输入的是自变量x的值,输出的是x对应的函数值.
(4)a=4,y=3,即2×4+b=3,得b=-5.
所以,当x取5时,f(5)=5a+b=5×4-5=15.
(5)在(4)的前提下,输入的x值越大,输出的ax+b的值越大,因为f(x)=4x-5是R上的增函数.
高考对程序框图考查的类型之一就是读图,因此考生需要明白程序框图的作用是什么,解决的是一个什么样的问题,这样才能解决相应的问题.对于顺序结构的程序框图,按照从上到下的顺序依次判断即可.
[变式训练2] 如图所示是一个算法的程序框图,若输入x1,x2,x3的值分别是98,100,96,则输出的y值是98.
解析:由程序框图知,若输入x1,x2,x3的值分别是98,100,96,则m=98+100+96=294.
y=×294=98.故输出y的值为98.
类型三 用顺序结构表示算法
[例3] 已知f(x)=x2-1,求f(2),f(-3),f(3),并计算f(2)+f(-3)+f(3)的值,设计出解决该问题的一个算法,并画出程序框图.
[分析] 先分别求f(2),f(-3),f(3)的值,然后再计算三者的和.
[解] 算法如下:
第一步,x=2;
第二步,y1=x2-1;
第三步,x=-3;
第四步,y2=x2-1;
第五步,x=3;
第六步,y3=x2-1;
第七步,y=y1+y2+y3;
第八步,输出y1,y2,y3,y.
程序框图:
顺序结构是最简单的算法结构,是任何一个算法中都不可缺少的,框与框之间是按从上到下的顺序进行的,用来解决简单的问题和作为复杂结构的基础.
[变式训练3] 已知两个单元分别存放了变量x和y,试交换两个变量的值,并输出x和y,请写出算法并画出程序框图.
解:
算法如下:
第一步,输入x,y.
第二步,把x的值赋给p.
第三步,把y的值赋给x.
第四步,把p的值赋给y.
第五步,输出x,y.
程序框图如右图.
1.程序框图中“”表示的意义是( B )
A.框图的开始或结束
B.数据的输入或结果的输出
C.赋值、执行计算的传送
D.根据给定条件判断
解析:在程序框图中,“”为输入、输出框,表示数据的输入或结果的输出.
2.在顺序结构中,一定不含有的程序框是( D )
A.终端框
B.输入、输出框
C.处理框
D.判断框
解析:顺序结构中不含对条件的判断.
3.如图是求长方体的体积和表面积的一个程序框图,补充完整,横线处应填.
解析:根据题意,长方体的长、宽、高应从键盘输入,故横线处应填写输入框
4.已知一个圆柱的底面半径为R,高为h,求圆柱的体积.设计解决该问题的一个算法,并画出相应的程序框图.
解:算法如下:
第一步,输入R,h.
第二步,计算V=πR2h.
第三步,输出V.
程序框图如图所示.
——本课须掌握的两大问题
1.画程序框图的规则
(1)使用标准的框图符号.
(2)框图一般按从上到下、从左到右的方向画.
(3)除判断框外,大多数其他框图符号只有一个进入点和一个退出点.判断框是具有超过一个退出点的唯一的符号.
(4)常见的判断是“是”与“否”两分支的判断,而且有且仅有两个结果.
(5)在图形符号内描述的语言要非常简练清楚.
2.对顺序结构的理解
(1)顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,可以用图表示顺序的示意图,其中A和B两个框是依次执行的,只有在执行完A框所指定的操作后,才能接着执行B框所指定的操作.
(2)顺序结构至少会有一个输入、输出框,一定有流程线,一定不会有判断框.
PAGE第一章
算法初步
1.1 算法与程序框图
1.1.1 算法的概念
[目标]
1.通过学习解二元一次方程组的方法,体会算法的基本思想;2.了解算法的含义和特征;3.会用自然语言表述简单的算法.
[重点]
用自然语言表述算法.
[难点]
算法的含义及思想的理解.
知识点一 算法的概念
[填一填]
1.算法的概念
在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤.现在,算法通常可以编成计算机程序,让计算机执行并解决问题.
2.算法的五个特征
(1)确定性:算法中每一步都是确定的,并且能有效地执行且得到确定的结果.
(2)有限性:一个算法的步骤是有限的,不能无限地进行下去,它能在有限步的操作后解决问题.
(3)有序性:算法从初始步骤开始,分为若干明确的步骤,每个步骤只能有一个确定的后续步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步.
(4)不唯一性:解决一个问题可以有多种不同的算法.
(5)普遍性:给出一个算法的程序步骤,它可以解决一类问题,并且能够多次重复使用.
[答一答]
1.解决一个问题的算法是唯一的吗?
提示:不是.解决一个问题的算法可以有多个,如解二元一次方程组的算法有加减消元法和代入消元法.但一般算法有优劣之分.结构简单、步骤少、速度快的算法是较好的算法,如对于不同的方程组,有的加减消元简单,有的代入消元简单.
2.是不是任何一个算法都有明确的结果?为什么?
提示:是.算法中的每一步都是确定的,并且能有效地执行且得到确定的结果,而不应当模棱两可.
3.下列对算法的理解不正确的是( D )
A.一个算法应包含有限的步骤,而不能是无限的
B.算法中的每一步都应当是确定的,而不应当是含糊、模棱的
C.算法中的每一步骤都应当有效地执行,并得到确定的结果
D.一个问题只能设计出一种算法
解析:根据算法的概念及特征判断.由算法的有限性知A正确;由算法的确定性可知B正确;由算法的逻辑性知C正确;由算法的不唯一性知D不正确.
知识点二 算法的设计
[填一填]
1.算法设计的目的
设计算法的目的实际上是寻求一类问题的算法,它可以通过计算机来完成.设计算法的关键是把过程分解成若干个明确的步骤,然后用计算机能够接受的“语言”准确地描述出来,从而达到计算机执行的目的.
2.算法设计的要求
(1)写出的算法必须能解决一类问题;
(2)要使算法尽量简单、步骤尽量少;
(3)要保证算法正确,且计算机能够执行.
[答一答]
4.描述算法的方式唯一吗?
提示:描述算法可以有不同的方式.例如,可以用自然语言和数学语言加以叙述,后面还会学习用程序设计语言给出精确的说明,或者用框图直观地显示算法的全貌.
5.将下面的算法补充完整.
已知一个学生的语文成绩为89分,数学成绩为96分,外语成绩为99分,求他的总分和平均成绩的一个算法为:
第一步,取A=89,B=96,C=99.
第二步,计算总分D=A+B+C.
第三步,计算平均成绩E=.
第四步,输出D,E.
类型一 算法的概念
[例1] 下列说法正确的是( )
A.算法就是某个问题的解题过程
B.算法执行后可以产生不同的结果
C.解决某一个具体问题算法不同,则结果不同
D.算法执行步骤的次数不可以很大,否则无法实施
[解析] 选项B正确,例如:判断一个整数是否为偶数,结果为“是偶数”和“不是偶数”两种;选项A,算法不能等同于解法;选项C,解决某一个具体问题算法不同,但结果应相同;选项D,算法可以为很多次,但不可以无限次.
[答案] B
?1?明确算法的含义及算法的五个特征.
?2?判断一个问题是否有算法,关键看是否有解决某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步骤之内完成.
?3?算法实际上是一种程序方法,在利用算法解决问题时,体现了特殊与一般的数学思想.
[变式训练1] 有人对哥德巴赫猜想“任何大于4的偶数都能写成两个奇质数之和”设计了如下操作步骤:
第一步,检验6=3+3.
第二步,检验8=3+5.
第三步,检验10=5+5.
……
利用计算机一直进行下去!
请问:利用这种步骤能够证明猜想的正确性吗?这是一个算法吗?
解:利用这种步骤不能证明猜想的正确性.此步骤不满足算法的有限性,因此不是算法.
类型二 算法的设计
命题视角1:数值性问题的算法设计
[例2] 写出求1+2+3+4+5+6的一个算法.
[解] 法一:第一步,计算1+2得到3.
第二步,将第一步中的运算结果3与3相加得到6.
第三步,将第二步中的运算结果6与4相加得到10.
第四步,将第三步中的运算结果10与5相加得到15.
第五步,将第四步中的运算结果15与6相加得到21.
法二:第一步,将原式变形为(1+6)+(2+5)+(3+4)=3×7.
第二步,计算3×7.
设计具体问题的算法的一般步骤
(1)分析问题,找出解决问题的一般数学方法;(2)借助有关变量或参数对算法加以表述;(3)将解决问题的过程划分为若干步骤;(4)用简练的语言将这个步骤表示出来.
[变式训练2] 求1×3×5×7×9×11的值的一个算法如下,请补充完整.
第一步,求1×3得结果3.
第二步,将第一步所得结果3乘以5,得到结果15.
第三步,再将第二步所得结果15乘以7,得到结果105.
第四步,再将第三步所得结果105乘以9,得到结果945.
第五步,再将第四步所得结果945乘以11,得到结果10
395,即为最后结果.
解析:依据算法功能可知,第三步应为“再将第二步所得结果15乘以7,得到结果105”.
命题视角2:非数值性问题的算法设计
[例3] 现有有限个正整数,试设计一个求这些正整数中的最大数的算法.
[分析] 先假定一个基础数(如第一个数),让它作为其中的最大的数,然后将第二个数与这个基础数比较,将这两者中的较大者再作为基础数与第三个数比较,找出其中的较大者,将其作为基础数与第四个数比较,依此类推,直到与最后一个数比较完毕,就能确定出有限个正整数中的最大数.
[解] 第一步,先假定这些正整数中的第一个数为“最大数”.
第二步,将这些正整数中的下一个数与“最大数”比较.如果它大于此“最大数”,那么就假定它是“最大数”.
第三步,如果还有其他正整数,那么重复第二步.
第四步,一直到没有可比较的数为止,这时假定的“最大数”就是这有限个正整数中的最大数.
非数值型计算问题,如:排序、查找、变量变换、文字处理等需先建立过程模型,通过模型进行算法设计与描述.设计具体的数学问题的算法,实际上就是寻求一类问题的算法,它可以通过计算机来完成.
[变式训练3] 对任意3个整数a,b,c,写出求最大数的算法.
解:算法步骤如下:
第一步,令max=a.
第二步,比较max与b的大小,若b>max,则令max=b;否则max不变.
第三步,比较max与c的大小,若c>max,则令max=c;否则max不变.
第四步,max就是a,b,c中的最大数.
1.算法的有穷性是指( C )
A.算法的最后必包含输出
B.算法中每个操作步骤都是可执行的
C.算法的步骤必须有限
D.以上说法均不正确
解析:算法必须在有限步内完成,故选C.
2.下列各式中S值不可以用算法求解的是( D )
A.S=1+2+3+4
B.S=12+22+32+…+1002
C.S=1++…+
D.S=1+2+3+4+…
解析:D中的求和不符合算法步骤的有限性,所以它不可以用算法求解.
3.下面是学生高智“出家门先打车去飞机场,再乘飞机去北京”的一个算法,请补充完整.
第一步,出家门.
第二步,打车去飞机场.
第三步,乘飞机去北京.
4.写出求1+2+3+4+5+6+…+100的一个算法,可运用公式1+2+3+…+n=直接计算.第一步:取n=100;第二步:计算S=;第三步:输出计算的结果.
5.解关于x的方程ax+2=0(a∈R),写出算法.
解:算法如下:
第一步,移项,得ax=-2.
第二步,当a≠0时,x=-,输出x,结束算法.
当a=0时,输出方程无实根,结束算法.
——本课须掌握的三大问题
1.算法与一般意义上数学问题的解法是一般与特殊的关系,算法是“通用”的方法,是解决某一类问题的程序和步骤,而解法则是算法的具体体现,是在解决具体问题时将算法的各个步骤具体化.
2.算法是“傻瓜化”的,相对于某一类问题的算法,不能省略任何一个小步骤,不能忽略任何一种可能的情况,否则计算机都不能完成执行过程,而只要按照算法一步一步进行,这类问题都会得到解决.
3.加、减、乘法运算法则、多项式的运算法则以及我们学过的许多数学公式等都是算法.
PAGE第2课时 进位制
[目标]
1.理解进位制的概念,能进行不同进位制数间的转化;2.了解进位制的程序框图和程序.
[重点]
不同进位制之间的转化关系.
[难点]
对进位制定义及进位制转化的原理的理解.
知识点 进位制及进位制之间的互化
[填一填]
1.进位制
(1)概念:进位制是为了计数和运算方便而约定的记数系统,“满几进一”就是几进制.
(2)基数:几进制的基数就是几.
2.不同进位制之间的互化
(1)k进制化为十进制的方法:
anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k+a0(an,an-1,…,a1,a0∈N,0(2)十进制化为k进制的方法——除k取余法.
[答一答]
1.进位制是如何表示数字的?
提示:若一个数为十进制数,则其基数可以省略不写,若是其他进位制的数,在没有特别说明的前提下,其基数必须写出,常在数的右下角标明基数.
2.如何将一个非十进制数转化为另一个非十进制数?
提示:先把该数转化为十进制数,再用除k取余法转化为另一个非十进制数.
3.不同进位制的数能比较大小吗?
提示:进位制是人们为了计数和运算方便而约定的记数系统,不同进位制的数可以比较大小,一般转化成十进制数比较大小更方便.
4.把十进制数93化为二进制数为1011101(2).
解析:以2作为除数相应得出的除法算式为:
即93=1011101(2).
类型一 k进制数化为十进制数
[例1] 将下列各数化成十进制数.
(1)11001000(2);(2)310(8).
[分析] 解答本题可按其他进制转化为十进制的方法,先写成不同位上的数乘以基数的幂的形式,再相加求和.
[解] (1)11001000(2)=1×27+1×26+0×25+0×24+1×23+0×22+0×21+0×20=200;
(2)310(8)=3×82+1×81+0×80=200.
k进制数化为十进制数:先把k进制数写成不同位上的数字与k的幂的乘积之和的形式,再按十进制数的运算规则计算出结果.
[变式训练1] (1)101(2)转化为十进制数是( B )
A.2
B.5
C.20
D.101
解析:101(2)=1×22+0×21+1×20=5.
(2)312(4)化为十进制数后的个位数字是4.
解析:312(4)=3×42+1×41+2×40=54,个位数字是4.
类型二 十进制数化k进制数
[例2] (1)试把十进制数136转化为二进制数;
(2)试把十进制数1
234转化为七进制数.
[解] (1)由于136=2×68+0,
68=2×34+0,
34=2×17+0,
17=2×8+1,
8=2×4+0,
4=2×2+0,
2=2×1+0,
1=2×0+1.
所以136=10001000(2).
(2)1
234=7×176+2,
176=7×25+1,
25=7×3+4,
3=7×0+3.
所以1
234化为七进制数为3412(7).
?1?应注意搞清每一次除法中的被除数、除数,当商为零时停止除法,把每步所得的余数倒着排成一个数,就是相应的二进制数.
?2?十进制化七进制数与化二进制数方法类似,要认真体会其原理.
[变式训练2] 将十进制数30化为二进制数.
解:即30(10)=11110(2).
类型三 不同进制数之间的转化
[例3] (1)下列各数85(9),301(5),1000(4)中最小的数是________.
(2)把四进制数13022化为六进制数.
[分析] (1)都化为十进制数再比较大小;(2)先把四进制数化为十进制数,再化为六进制数.
[解析] (1)85(9)=8×9+5×90=72+5=77.
301(5)=3×52+0×51+1×50=75+1=76.
1000(4)=1×43+0×42+0×41+0×40=64.
所以1000(4)最小.
(2)解:先把四进制数13022化为十进制数.13022(4)=1×44+3×43+0×42+2×41+2×40=256+192+0+8+2=458.
再把十进制数458化为六进制数.
458=2042(6).故13022(4)=2042(6).
[答案] (1)1000(4) (2)见解析
非十进制数直接利用公式anan-1…a1a0?k?=ankn+an-1kn-1+…+a1k+a0就可以转化为十进制数;k进制数和m进制数之间需要用十进制数来转化,即先把k进制数转化为十进制数,再利用除m取余法转化为m进制数.
[变式训练3] 将七进制数235(7)化为八进制数为174(8).
解析:先将235(7)化为十进制数,再将十进制数化为八进制数.
235(7)=2×72+3×71+5×70=124;利用除8取余法(如图所示)可得124=174(8).所以235(7)=174(8).
1.333(4)是( B )
A.十进制数
B.四进制数
C.三进制数
D.二进制数
2.以下各数可能是七进制数的是( B )
A.7654
B.2010
C.1009
D.8888
解析:七进制数中各位上的数字小于7,则仅有2010可能是七进制数.
3.将389化成四进制数的末位是( A )
A.1
B.2
C.3
D.0
解析:如右图:可见389=12011(4),故选A.
4.6化为三进制数为20(3).
解析:
则6=20(3).
5.把301(5)化为七进制数.
解:301(5)=3×52+0×51+1×50=76.
∴301(5)=136(7).
——本课须掌握的三大问题
1.要把k进制数化为十进制数,首先把k进制数表示成不同位上数字与k的幂的乘积之和,其次按照十进制的运算规则计算和.
2.十进制数化为k进制数(除k取余法)的步骤:
3.把一个非十进制数化为另一个非十进制数时,要先把这个数化为十进制数,再利用“除k取余法”化为另一个非十进制数.
含参数的不同进位制数间的转化
开讲啦
利用不同进位制数之间的互化,可以求一些特定的未知数.首先用字母将非十进制数准确表示为十进制数,得
到关于几个字母的关系式.为了求得每个字母的值,需要充分利用不同进位制对每一位上数的范围的要求,得到有限几个可能的值,通过具体检验得解.该类题目是对不同进制的数之间互化的综合考查.
[典例] 若10b1(2)=a02(3),求数字a,b的值以及与此两数的等值十进制数.
[解] 把10b1(2)化为十进制数:10b1(2)=1×23+0×22+b×21+1×20=2b+9,把a02(3)化为十进制数:a02(3)=a×32+0×31+2×30=9a+2,所以2b+9=9a+2.由于在二进制中,b的值只能为0或1,当b=0时,a=,舍去;当b=1时,a=1.所以a=b=1,与此两数等值的十进制数为11.
[规律总结] 解决上述问题,先用字母把已知两数的十进制形式表示出来,可以得到关于两个字母的关系式,再依据不同进制对每一位上数字的不同要求进行验证,求得字母的值,进而求出十进制数.
[针对训练] 若k进制数132(k)与二进制数11110(2)相等,则k=4.
解析:将这两个数都转化为十进制数,132(k)=k2+3k+2,11110(2)=24+23+22+21=30,
∴k2+3k+2=30,解之,得k=4或k=-7(舍去).
PAGE1.3 算法案例
第1课时 辗转相除法、更相减损术与秦九韶算法
[目标]
1.会用辗转相除法与更相减损术求两个数的最大公约数;2.会用秦九韶算法求多项式的值.
[重点]
两种算法的原理及应用.
[难点]
两种算法思想的理解.
知识点一 辗转相除法与更相减损术
[填一填]
1.辗转相除法
(1)辗转相除法是用于求两个正整数的最大公约数的一种算法,这种算法是由欧几里得在公元前300年左右首先提出的,因而又叫欧几里得算法.
(2)所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数.若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数.
2.更相减损术
更相减损术是我国古代数学专著《九章算术》中介绍的一种求两数最大公约数的方法.其基本过程是:第一步,任意给定两个正整数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.第二步,以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数或这个数与约简的数的乘积就是所求的最大公约数.
[答一答]
1.任意给定两个正整数,是否用辗转相除法和更相减损术都可以求它们的最大公约数?
提示:是.辗转相除法和更相减损术都能在有限步内结束,故均可以用来求两个正整数的最大公约数.
2.求最大公约数时,如何选择辗转相除法和更相减损术?
提示:当两个数大小差别不大时,两种方法的计算次数区别不大,只是辗转相除法以除法为主,更相减损术以减法为主;当两个数大小差别较大时,辗转相除法的计算次数明显较少,可选择辗转相除法.
3.用“辗转相除法”求得459和357的最大公约数是51.
解析:用辗转相除法:459=357×1+102,357=102×3+51,102=51×2.∴459与357的最大公约数为51.
知识点二 秦九韶算法
[填一填]
把一个n次多项式f(x)=anxn+an-1xn-1+…+a1x+a0改写成如下形式:
f(x)=anxn+an-1xn-1+…+a1x+a0
=(…((anx+an-1)x+an-2)x+…+a1)x+a0.
求多项式的值时,首先计算最内层括号内一次多项式的值,即v1=anx+an-1,然后由内向外逐层计算一次多项式的值,即
v2=v1x+an-2,
v3=v2x+an-3,
…
vn=vn-1x+a0,
这样,求n次多项式f(x)的值就转化为求n个一次多项式的值.
[答一答]
4.利用秦九韶算法求多项式f(x)=anxn+an-1xn-1+…+a1x+a0的值时,如何改写多项式,用这种方法,最多可进行多少次乘法,多少次加法?
提示:可将多项式改写为f(x)=(…(((anx+an-1)x+an-2)x+an-3)x+…+a1)x+a0,这样最多只需n次乘法和n次加法即可求出多项式的值.
5.用秦九韶算法计算多项式f(x)=12+5x-8x2+7x3+6x4+5x5+3x6当x=-4时,v3的值为-129.
解析:v1=3×(-4)+5=-7,
v2=(-7)×(-4)+6=34,
v3=34×(-4)+7=-129.
类型一 辗转相除法与更相减损术
[例1] 求228与1
995的最大公约数.
[解] 法一:(辗转相除法)1
995=8×228+171,228=1×171+57,171=3×57,
所以228与1
995的最大公约数为57.
法二:(更相减损术)1
995-228=1
767,1
767-228=1
539,
1
539-228=1
311,1
311-228=1
083,
1
083-228=855,855-228=627,
627-228=399,399-228=171,
228-171=57,171-57=114,114-57=57.
所以228与1
995的最大公约数为57.
辗转相除法计算次数少,步骤简捷,更相减损术计算次数多,步骤复杂,但是更相减损术每一步的计算都是减法,比做除法运算要简单一些,一般当数较小时可以考虑用更相减损术,当数较大时可以考虑用辗转相除法.
[变式训练1] 用辗转相除法和更相减损术求1
515与600的最大公约数,需要运算的次数分别为( B )
A.4,15
B.5,14
C.5,13
D.4,12
解析:辗转相除法:1
515=600×2+315,600=315×1+285,315=285×1+30,285=30×9+15,30=15×2,故最大公约数为15,且需计算5次.用更相减损术:1
515-600=915,915-600=315,600-315=285,315-285=30,285-30=255,255-30=225,225-30=195,195-30=165,165-30=135,135-30=105,105-30=75,75-30=45,45-30=15,30-15=15.故最大公约数为15,且需计算14次.
类型二 秦九韶算法的应用
[例2] 利用秦九韶算法分别计算f(x)=8x7+5x6+3x4+2x+1在x=2与x=-1时的值,并判断多项式f(x)在区间[-1,2]有没有零点.
[分析] ①分别求多项式f(x)在x=2与x=-1时的值;
②秦九韶算法是,因此多项式f(x)中缺失的几项:x5,x3,x2应该补充完整f(x)=8x7+5x6+3x4+2x+1=((((((8x+5)x+0)x+3)x+0)x+0)x+2)x+1.
[解] ∵f(x)=8x7+5x6+3x4+2x+1=((((((8x+5)x+0)x+3)x+0)x+0)x+2)x+1,且x=2,∴v0=8,
v1=8×2+5=21,
v2=21×2+0=42,
v3=42×2+3=87,
v4=87×2+0=174,
v5=174×2+0=348,
v6=348×2+2=698,
v7=698×2+1=1
397.
∴当x=2时,f(x)=1
397.
同理可求当x=-1时,f(x)=-1.
又∵f(-1)f(2)=-1
397<0,则多项式f(x)在区间[-1,2]上有零点.
秦九韶算法的算法步骤
第一步,输入多项式次数n、最高次项的系数an和x的值.
第二步,将v的值初始化为an,将i的值初始化为n-1.
第三步,输入i次项的系数ai.
第四步,v=vx+ai,i=i-1.
第五步,判断i是否大于或等于0.若是,则返回第三步;否则,输出多项式的值v.
[变式训练2] 用秦九韶算法求多项式f(x)=2+0.35x+1.8x2-3x3+6x4-5x5+x6在x=-1时的值时,令v0=a6,v1=v0x+a5,…,v6=v5x+a0,则v3的值是-15.
解析:
f(x)=(((((x-5)x+6)x-3)x+1.8)x+0.35)x+2,v0=1,v1=v0x-5=-6,v2=v1x+6=-6×(-1)+6=12,v3=v2x-3=-15.
类型三 算法思想的应用
[例3] 运用秦九韶算法求7次多项式f(x)=a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0当x=x0时的值,x0,a1~a7都由键盘输入,画出算法的程序框图.
[分析] 用秦九韶算法对一个n次多项式变形,可以得到下面的表达式:
这是一个反复执行的步骤,因此可用循环结构来实现.
[解] 程序框图如下图所示:
秦九韶算法思想就是先将多项式函数从外到内依次提取x,然后通过一次式的反复计算,逐步得出n次多项式的值,对于一个n次多项式,最多只需做n次乘法和n次加法即可.
[变式训练3] 阅读程序:
若INPUT语句中输入m,n的数据分别是72,168,则程序运行的结果为24.
解析:该程序是用辗转相除法求两个数的最大公约数的算法程序,输入72,168,即求它们的最大公约数,可求出它们的最大公约数为24.
1.如图所示的程序表示的算法是( B )
A.交换m,n的值
B.辗转相除法
C.更相减损术
D.秦九韶算法
2.两个整数490和910的最大公约数是( D )
A.2
B.10
C.30
D.70
解析:(910,490)→(490,420)→(420,70)→(350,70)→(280,70)→(210,70)→(140,70)→(70,70).
3.用秦九韶算法计算多项式f(x)=3x6+4x5+5x4+6x3+7x2+8x+1当x=0.4时的值时,需要做乘法和加法的次数分别是( A )
A.6,6
B.5,6
C.5,5
D.6,5
解析:f(x)=(((((3x+4)x+5)x+6)x+7)x+8)x+1.
4.78和36的最大公约数为6.
解析:78-36=42,42-36=6,36-6=30,30-6=24,24-6=18,18-6=12,12-6=6.
5.已知函数f(x)=x3-2x2-5x+6,用秦九韶算法求f(10)的值.
解:由秦九韶算法,得
f(x)=x3-2x2-5x+6=(x2-2x-5)x+6
=((x-2)x-5)x+6.
当x=10时,f(10)=((10-2)×10-5)×10+6
=(8×10-5)×10+6=75×10+6=756.
——本课须掌握的三大问题
1.辗转相除法,就是对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,这时的较小的数即为原来两个数的最大公约数.
2.更相减损术,就是对于给定的两个正整数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,继续上面的减法,直到差和较小的数相等,此时相等的两数即为原来两个数的最大公约数.
3.用秦九韶算法求多项式f(x)当x=x0的值的思路为:
①改写;
②计算;
③结论f(x0)=vn.
PAGE1.2.3 循环语句
[目标]
1.了解两种循环语句的格式及其执行过程,明确各自终止循环的条件;2.能用循环语句编写程序解决有关问题.
[重点]
用两种循环语句将循环结构的程序框图转化为算法语句.
[难点]
对两种循环语句的理解.
知识点 循环语句
[填一填]
1.循环语句用来实现算法中的循环结构,程序设计语言中循环语句主要有两种类型:UNTIL语句和WHILE语句.
2.UNTIL语句的一般格式是,计算机执行UNTIL语句时,先执行一次循环体,然后对条件的真假进行判断,当条件不符合时,执行循环体,直到满足条件时,不再执行循环体,跳出循环,执行LOOP UNTIL语句后的其他语句,因此,UNTIL语句又称为后测试型循环语句.
3.WHILE语句的一般格式是,当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE和WEND之间的循环体;若条件不符合,计算机将不再执行循环体,直接跳到WEND语句后执行其他语句,因此WHILE语句也称为前测试型循环语句.
[答一答]
1.两种循环语句表示同一算法时,语句中的循环体和条件是否都一样?
提示:循环体可以相同,条件正好相反.当型循环(WHILE)语句,是条件不成立时,结束循环,向下执行;而直到型循环(UNTIL)语句是在条件成立时,结束循环,向下执行.
2.循环语句与条件语句有什么关系?
提示:循环语句中一定有条件语句,条件语句是循环语句的一部分,离开条件语句,循环语句无法循环;但条件语句可以脱离循环语句单独存在,可以不依赖循环语句独立地解决问题.
类型一 两种语句的特征
[例1] (1)下面的程序执行后输出的结果是( )
A.2
B.1
C.0
D.-1
(2)下面程序执行后输出的结果是________.
[解析] (1)第一次执行循环体:S=5,n=4;
第二次执行循环体:S=9,n=3;
第三次执行循环体:S=12,n=2,此时S≥10,循环终止,故输出n=2.
(2)i=11时,s=1×11=11;i=10时,s=11×10=110;
i=9时,s=110×9=990;i=8时,i<9成立,输出s的值为990.
[答案] (1)A (2)990
?1?直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试”,“先循环后判断”.
?2?当型循环也叫“前测试型”循环,也就是我们经常讲的“先测试后执行”“先判断后执行”.
[变式训练1] 有如下两个程序,下面判断正确的是( B )
A.两个程序输出的结果相同
B.程序(1)输出的结果比程序(2)输出的结果大
C.程序(2)输出的结果比程序(1)输出的结果大
D.两个程序输出的结果的大小不能确定
解析:程序(1)中,当i=99时不满足i>99,故再执行一次,∴s=1×3×5×…×99;程序(2)中,当i=99时,不满足i<99,跳出循环,故s=1×3×5×…×97.
类型二
利用“直到型”与“当型”结构编写程序
[例2] 试编写程序,求满足1+3+5+…+n>10
000的最小自然数n.
[分析] 在不知道循环次数时,可设置一个累加变量,每加一个数与10
000比较,直到刚好大于10
000为止.
[解] 解法1:程序如下:
解法2:程序如下:
?1?利用循环语句编写程序时要注意以下问题:
①循环语句中的变量一般需要进行一定的初始化操作.
②在循环体中一定要改变控制条件的变量的值,否则会出现“死循环”,并且循环体每执行一次,控制条件中的变量就应更逼近满足跳出循环体的条件.
?2?对同一算法来说,两种循环语句中控制循环的条件互为反条件.因此,两种语句可以互相转化.
[变式训练2] 下面是利用直到型循环语句编写的程序,请把它改写为当型循环语句.
解:当型循环语句如下.
类型三 循环结构的实际应用
[例3] 给出以下10个数:4,10,70,33,95,74,29,17,60,30,要求将大于40的数找出来.画出求解该问题的算法的程序框图,并写出程序.
[分析] 可以从第1个数开始与40进行大小比较,若该数大于40就输出,小于或等于40就直接与下一个数进行比较.这样需比较10次,可用一个计数变量的循环结构设计算法.
[解] 程序框图如图所示.
程序如下:
本题是用循环语句解决实际问题,解决实际问题的一般步骤为:首先将应用问题的条件转换为数学语言,即将实际问题中的数学模型抽象出来,然后对抽象出来的数学模型进行分析,选取合适的逻辑结构,将算法步骤用自然语言表示出来,最后画出程序框图,然后将其转换为程序语句即可.
[变式训练3] 某高中男子体育小组的100
m赛跑的成绩如下:(单位:秒)
12.1,13.2,12.7,12.8,12.5,12.4,12.7,11.5,11.6,11.7,
从这些成绩中搜索出小于12.1秒的成绩,并画出程序框图,编写相应的程序.
解:程序框图如图所示,
程序如下:
i=1
WHILE i<=10
INPUT Gi
IF Gi<12.1 THEN
PRINT Gi
i=i+1
END IF
WEND
END
1.下列关于循环语句的说法不正确的是( C )
A.反复进行同一操作的算法可以用循环语句表示
B.程序框图中的循环结构可以用循环语句来实现
C.在循环语句中可以没有循环体
D.在循环语句中一定有条件控制着循环
2.关于下面一段程序,其中正确的说法是( C )
A.语句中的循环体共执行了10次
B.循环体是无限循环的
C.语句中的循环体一次也不执行
D.语句中的循环体只执行了一次
解析:由于k=10,则k=0不成立,则不执行循环体.
3.执行下面的程序,输出的结果为( A )
A.15
B.10
C.7
D.1
解析:当i=1时,S=0×2+1=1;当i=2时,S=1×2+1=3;当i=3时,S=3×2+1=7;当i=4时,S=7×2+1=15,退出循环.输出S的值为15,故选A.
4.给定程序:
则程序运行的结果是7.
解析:当I=7时,s>20时,终止循环,此时输出I=7.
5.根据下面的程序写出其运行的结果,并画出相应的程序框图.
解:根据已知中的给出的程序语言,可知其流程包含了循环结构,循环的条件是i≤59,运行结果:S=1+3+5+…+59=900.
相应的程序框图如图:
——本课须掌握的问题
应用循环语句编写程序要注意以下三点:
(1)循环语句中的变量一般需要进行一定的初始化操作,也就是要设置一些变量的初始值.
(2)循环语句在循环的过程中需要有“结束”的语句,程序中最忌“死循环”.
(3)在循环中要改变循环条件的成立因素.
程序每执行一次循环体,循环条件中涉及到的变量就会发生改变,且在步步逼近跳出循环体的条件.
用WHILE语句编写程序时的几个关键问题
开讲啦
一些复杂的算法问题常常用到循环结构,循环结构需要用循环语句来实现,而写好一个循环语句的关键之一则是找准循环控制条件.若循环语句应用不当,则会导致很多错误,这也是做题中常犯的错误.
[典例] (1)循环语句中的变量一般需要进行一定的初始化操作,下面我们以用WHILE语句实现1到100累加为例,作一下说明.
求“1+2+…+100”的部分程序如下:
这段程序中,循环的条件是“i<=100”,因此,一开始i肯定需要一个确定的值.前面的“i=1”这一个语句,在声明变量i的同时,也为i赋了初始值“1”.这样,条件“i<=100”得以成立.
(2)恰当设置条件使循环语句能循环
在用循环语句编写程序时,有时因条件设置不当导致不循环.例如,编写程序,求1×2×3×…×100的值.
[错解]
[错解分析] 这是当型循环,当条件“i>=100”成立时,执行循环.而由程序可知,i的初值为1,第一次执行循环时,i的值就不满足条件“i>=100”,故根本就不执行循环,而是直接执行语句“PRINT s”,算法的运算结果是输出s的初始值1.错因在于循环语句的条件设置不恰当,导致不循环.正确的程序应是把条件“i>=100”改为“i<=100”.
[针对训练] 计算+++…+的值,下面给出了两种解法,请指出错在哪里?
解:原式中共有18个数相加,错解一中由“i<=17”得共循环17次,结果错误;错解二中当i=37时,循环结束,s少加了最后一项.
PAGE1.2.2 条件语句
[目标]
1.记住条件语句的格式,并会用条件语句将条件结构的程序框图转化为算法语句;2.体会程序框图与算法语句的关系.
[重点]
条件语句的格式及应用.
[难点]
条件语句的嵌套.
知识点 条件语句
[填一填]
[答一答]
1.格式一和格式二的区别和联系是什么?
提示:(1)联系:两种语句首先都要对条件进行判断,然后才执行相应的语句体;执行完语句体后,完成条件语句;都以IF开始,以END
IF结束.
(2)区别:①条件语句只有一个语句体,是满足条件时执行语句体.
②条件语句含有两个语句体:满足条件时执行一个语句体;不满足条件时执行另一个语句体.
2.在条件语句中
其中B表示的是( D )
A.不满足条件时执行的内容
B.条件语句
C.条件
D.满足条件时执行的内容
3.当输入x=-3.2时,程序
输出的结果为3.2.
类型一
条件语句与条件结构的转换
[例1] (1)根据下面的程序,填写程序框图.
①________,②________,③________.
(2)根据下面的程序框图,写出程序.
[解析] (1)根据条件语句可知该语句为求分段函数
y=的值.
所以三个空中分别填的内容为:
①x≥?,②y=2x-5,③y=5-2x.
(2)解:程序如下:
[答案] (1)①x≥? ②y=2x-5 ③y=5-2x
(2)见解析
?1?由程序框图写语句时,对顺序结构的程序框图只需利用输入、输出、赋值语句即可完成.其中输入、输出框对应输入、输出语句,执行框对应赋值语句.
?2?算法语句和程序框图是从不同的角度以不同的形式解决问题,设计程序时一般先画程序框图,再把程序框图“翻译”成算法语句.
[变式训练1] 求函数y=|x-4|+1的函数值,则①处应填y=5-x.
解析:如果x<4,则y=4-x+1=5-x,故①处应填y=5-x.
类型二 利用条件语句编写程序
[例2] 设计程序,对输入的任意两个不同实数,按从大到小的顺序输出.
[解] 解法1:(用IF—THEN语句):
程序框图如图所示.
程序如下:
解法2:(用IF—THEN—ELSE语句):
程序框图如图所示.
程序如下:
两种条件语句的选择标准
(1)要解决的问题如果只需要对满足条件时的情况作出处理,不需要处理不满足条件时,可选用IF—THEN语句.
(2)要解决的问题,如果既需要解决满足条件时的情况,又需要解决不满足条件时的情况,可选用IF—THEN—ELSE语句.
[变式训练2] 编写程序,任意输入一个数x,判断它是否是方程2x2-3x-2=0的根.
解:程序框图如下:
程序如下:
类型三 条件语句的嵌套与叠加
[例3] 已知函数f(x)=编写一个程序,对输入的每一个x值,都得到相应的函数值.
[思路分析] →→
[解] 用变量x,y分别表示自变量和函数值.
程序如下:
方法1:(嵌套式)
方法2:(叠加式)
?1?条件语句必须以IF开始,以END
IF结束,一个IF必须和一个END
IF对应,尤其对条件语句的嵌套问题,应注意每一层的结构的完整性,不能漏掉END
IF.对于三段或三段以上的分段函数求函数值时,通常需要用条件语句的嵌套.
?2?条件语句的叠加中每一个条件语句都是一个独立的整体,在下一个条件语句之前要加上“END
IF”.
[变式训练3] 设计一个程序,输入学生的成绩S,根据该成绩的不同值进行以下输出:若S<60,则输出“不及格”;若60≤S≤90,则输出“及格”;若S>90,则输出“优秀”.
解:方法一(嵌套式)
方法二:(叠加式)
程序如下:
1.下列问题需要用条件语句来描述其算法的是( B )
A.输入x,输出它的相反数
B.输入x,输出它的绝对值
C.求边长为1的正三角形的面积
D.求棱长为1的正四面体的体积
解析:A,C,D都不需要分类,所以不需要条件语句;而B需要分类,故需用条件语句.
2.该程序运行后,变量y的值为( B )
A.4 B.16
C.6 D.8
解析:因为x=4,所以执行y=x2=16,故选B.
3.已知程序如图.
若输入x=-2,则输出y的值为1.
解析:程序的功能是求函数y=的函数值,因为-2<-1,所以y=2-1=1,即输出y的值为1.
4.已知如图所示的程序,其运行结果是66.
解析:因为33<99,
所以t=33,a=99,b=33,a=99-33=66.
5.试设计程序,求函数y=|x-4|+1的函数值.
解:因为y=|x-4|+1=
所以设计程序如下:
——本课须掌握的两大问题
1.两种条件语句的区别与联系
(1)区别:IF—THEN—ELSE语句含有两个语句体,满足条件时执行一个语句体,不满足条件时执行另一个语句体;而IF—THEN条件语句,只有一个语句体,是满足条件时执行的语句体.
(2)联系:两种语句首先都要对条件进行判断,然后才执行相应的语句体;执行完语句体后,程序都交汇于一点完成条件语句;都以IF开始,以END
IF结束.
2.使用条件语句时应注意的问题
(1)条件语句是一个语句,IF,THEN,ELSE,END
IF都是语句的一部分.
(2)条件语句必须是以IF开始,以END
IF结束,一个IF必须与一个END
IF相对应.
(3)如果程序中只需对条件为真的情况作出处理,不用处理条件为假的情况时,ELSE分支可以省略,此时条件语句就由双支变为单支.
(4)为了程序的可读性,一般IF、ELSE与END
IF顶格书写,其他的语句体前面则空两格.
PAGE1.2 基本算法语句
1.2.1 输入语句、输出语句和赋值语句
[目标]
1.记住输入语句、输出语句和赋值语句的格式及功能;2.会用这三种语句将顺序结构的程序框图转化为程序语句;3.体会算法步骤、程序框图和算法语句的关系.
[重点]
三种语句的格式、功能及应用.
[难点]
算法步骤、程序框图、算法语句关系的理解.
知识点一 输入语句
[填一填]
1.为了实现算法的三种基本逻辑结构,各种程序设计语言中都包含下列基本的算法语句,并且形式是类似的.它们分别是:输入语句、输出语句、赋值语句、条件语句、循环语句.
2.输入语句的一般格式
输入语句与程序框图中的输入框对应,以BASIC语言为例,其一般格式为:
INPUT
“提示内容”;变量
其中,“提示内容”一般是提示用户输入什么样的信息.
3.输入语句的作用
输入语句的作用是输入提示内容要求的相应信息或值,计算机每次都把新输入的值赋给变量.
输入语句可以给多个变量赋值,其格式为:
INPUT
“提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量3,….
[答一答]
1.程序中同时输入多个变量的值,是否一定要用多个输入语句?
提示:一个输入语句可以一次给多个变量赋值,中间用“,”隔开,如输入x,y的值,可以写成:
也可以写成:
知识点二 输出语句
[填一填]
1.格式:PRINT
“提示内容”;表达式
2.功能:
[答一答]
3.输出语句可以输出任意变量或表达式吗?
提示:不能.输出语句输出的变量或表达式中的变量必须在程序中已经赋值,没有赋值的变量或含没有赋值的变量的表达式无法使用输出语句输出.
4.输出语句有没有计算功能?
提示:有计算功能.可以根据提供的表达式进行计算.
知识点三 赋值语句
[填一填]
1.一般格式:
2.功能是将表达式所代表的值赋给变量,赋值语句中的“=”叫做赋值号,它和数学中的等号不完全一样,计算机执行赋值语句时,先计算“=”右边表达式的值,然后把这个值赋给“=”左边的变量.
[答一答]
5.赋值符号与等号的区别是什么?
提示:赋值语句中的“=”与代数运算中的“=”的意义是不同的.例如赋值语句a=b,表示把b的值赋给a,而不是说a与b相等.又如语句i=i+1,在赋值语句中表示i的值自身加1,而在代数式中i=i+1是不成立的.
6.赋值语句的左边可以是表达式吗?如A+15=A对吗?
提示:赋值语句左边只能是变量名称,而不能是表达式;赋值语句右边表达式可以是一个常量、变量或含变量的运算式.A+15=A是错误的.
7.下列赋值能使y的值为4的是( D )
类型一 三种基本语句的格式
[例1] 指出下列语句中的错误,并改正.
(1)A=B=50
(2)x=1,y=2,z=3
(3)INPUT
“请输入”x
(4)INPUT,x
(5)PRINT
A-B=;C
[分析] 根据各个语句的格式进行找错并改正即可.
[解] (1)在一个赋值语句中只能给一个变量赋值,应改为“A=50 B=50”
(2)一个赋值语句只能给一个变量赋值,应改为“x=1 y=2 z=3”
(3)INPUT语句的提示内容后面缺少“;”,应改为INPUT
“请输入”;x
(4)INPUT语句的提示内容可以省略,省略的同时,“;”必须省略,多个变量之间用“,”隔开,但是“,”不能单独存在,因此应改为INPUT x
(5)PRINT语句的提示内容应该在双引号中,应改为PRINT
“A-B=”;C
对于概念的理解问题,只需将所给内容与基本输入、输出和赋值语句的形式进行比较,找出不同即可得出结论.
[变式训练1] 下列语句书写正确的是②③⑤(只填序号).
①INPUT x=3
②INPUT a,b,c
③PRINT a,b,c
④A=B=C=3
⑤i=i+1
解析:对于①,不能直接输入x=3,书写格式不正确,故①错误;
对于②,省略了“提示内容”,书写正确,故②正确;
对于③,省略了“提示内容”,书写正确,故③正确;
对于④,根据赋值语句的格式,“=”左边应为单个变量,右边为表达式或具体数值,故④错误;
对于⑤,符合赋值语句的格式,且赋值语句具有计算功能,故⑤正确.
类型二 算法语句与程序框图的转换
[例2] 读下面的程序,根据程序画出程序框图.
[解] 程序框图如图所示:
算法语句与程序框图的关系
(1)顺序结构的程序框图利用输入语句、输出语句和赋值语句即可完成.其中输入、输出框对应输入语句和输出语句,执行框对应赋值语句.
(2)由程序画程序框图是上述过程的逆过程,只需把输入语句、输出语句与输入、输出框对应转化,将赋值语句与执行框对应转化即可.
[变式训练2] 根据如图所示的程序框图,写出相应的程序.
解:程序为:
类型三 用三种基本语句编写程序
[例3] 编写程序,输入4个数,输出这4个数的平均数.
[分析] →→
[解] 算法分析:
第一步,输入四个数a,b,c,d.
第二步,计算y=.
第三步,输出y.
程序框图如图所示.
程序如下:
?1?算法语句和程序框图是从不同的角度以不同的形式解决问题的,设计程序时一般先画程序框图,再把程序框图“翻译”成算法语句.
?2?根据顺序结构的程序框图写程序时,“INPUT语句”是输入框中的信息,赋值语句是处理框中的信息,输出框中的信息是“PRINT语句”的内容.
[变式训练3] “六一”儿童节这天,糖果店的售货员忙极了,请你设计一个程序,帮助售货员算账,已知水果糖每千克10元,奶糖每千克15元,巧克力每千克25元.那么依次购买这三种糖果a,b,c千克,应收取多少元钱?写出一个算法,画出程序框图,并写出程序.
解:算法如下:
第一步,输入三种糖果的价格x,y,z.
第二步,输入购买三种糖果的千克数a,b,c.
第三步,计算Y=ax+by+cz.
第四步,输出Y.
程序框图如图所示:
程序如下:
1.下列给出的输入、输出语句正确的是( D )
解析:①中INPUT语句可以给多个变量赋值,但变量之间应用“,”隔开;②中INPUT语句只能是变量,而不能是表达式;③中PRINT语句中不能用赋值号“=”;④中PRINT语句可以输出常量、表达式的值.
( C )
A.1个
B.2个
C.3个
D.4个
解析:正确的是(1)(2)(4),(3)(5)错误.
3.以下程序执行后,变量a,b的值分别为( A )
A.20,15
B.35,35
C.5,5
D.-5,-5
解析:依次执行结果为:a=15+20=35,b=35-20=15,a=35-15=20,所以最后输出结果是20,15.
5.根据下列程序框图写出程序.
解:程序如下:
——本课须掌握的两大问题
1.需输入信息时用INPUT语句,需输出信息时用PRINT语句,当变量需要的数据较少或给变量赋予算式时,用赋值语句,当变量需要输入多组数据且程序重复使用时,使用输入语句较好.
2.赋值语句是一个程序必不可少的重要组成部分,使用赋值语句,一定要注意其格式要求,不能利用赋值语句进行代数式计算等.
学科素养培优精品微课堂
对赋值语句认识不正确
开讲啦
对于赋值语句来讲,它实质上是先将赋值号“=”右边表达式的值计算出来,然后把该值赋给“=”左边的变
量,使该变量的值等于表达式的值.交换两个变量的值的方法是引进第三个变量,用三个赋值语句完成.避免因对赋值语句认识不准确,不能正确理解两变量交换数据的程序而导致错误.
[典例] 编写一个交换两个变量A和B的值的程序.
[常见错解] 程序如下:
[误区分析] 按照错解的程序运行,若输入3,9,则输出的结果是图(1),而不是要求的结果图(2),这是因为A=B表示把变量B的值9赋给变量A,A的初始值3被“覆盖”,A的值此时变为9,而变量B的值保持不变;B=A表示把变量A的值9赋给变量B,变量B的值被“覆盖”,也变为9了.所以一个程序编写完成之后,最后在草稿纸上“运行”一下,看自己编写的程序是否满足题意,如果不满足,就要找出问题,进行调整修改.
[正确解答] 程序如下:
[针对训练] 计算机执行下面的程序后,输出的结果是( B )
A.6 B.10 C.4 D.16
解析:由B=2,得A=4,B=6,A=10,所以输出的结果为10,故选B.
PAGE