人教版高中数学-湖北省巴东一中数学必修3教案 基本算法语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§1.2 基本算法语句
§1.2.1 输入语句、输出语句和赋值语句
一、教材分析
通过上一节的学习,学生了解了算法的含义,学习了用算法步骤和程序框图表示算法的方法,本节介绍用程序设计语言表示算法的方法. 算法步骤和程序框图表示的算法,计算机是不能理解的,程序是算法的精确形式,是计算机可以理解的算法.本节的教学重点是通过实例使学生理解三种基本算法语句的结构和用法,并在此基础上编写由算法语句组成的程序,从而更细致地刻画算法,进一步体会算法的基本思想.
二、教学目标
1、知识与技能
(1)正确理解输入语句、输出语句、赋值语句的结构。
(2)会写一些简单的程序。
(3)掌握赋值语句中的“=”的作用。
2、过程与方法
(1)让学生充分地感知、体验应用计算机解决数学问题的方法;并能初步操作、模仿。
(2)通过对现实生活情境的探究,尝试设计出解决问题的程序,理解逻辑推理的数学方法。
3、情感态度与价值观
通过本节内容的学习,使我们认识到计算机与人们生活密切相关,增强计算机应用意识,提高学生学习新知识的兴趣。
三、重点难点
教学重点:输入语句、输出语句和赋值语句的基本用法.
教学难点:算法语句的写法.
四、课时安排
1课时
五、教学设计
(一)导入新课
思路1(情境导入)
中国足球队在亚洲杯上的失利说明,中国足球仍然需要请外国教练.高水平的外国教练有先进的足球理念,有系统科学的训练计划,有先进的足球技术,但由于语言不通不能直接传授给队员. 算
法步骤、程序框图虽然容易掌握,但计算机不能理解,因此我们需要学习算法语句.
思路2(直接导入)
前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,我们开始学习算法语句.
(二)推进新课、新知探究、提出问题
(1)指出输入语句的格式、功能、要求.
(2)指出输出语句的格式、功能、要求.
(3)指出赋值语句的格式、功能、要求.
(4)利用框图总结三种语句的功能、格式、特点.
(5)指出三种语句与框图的对应关系.
讨论结果:
(1)输入语句的格式:INPUT“提示内容”;变量
例如:INPUT “x=”;x
功能:实现算法的输入变量信息(数值或字符)的功能.
要求:
1°输入语句要求输入的值是具体的常量.
2°提示内容提示用户输入的是什么信息,必须加双引号,提示内容“原原本本”的在计算机屏幕上显示,提示内容与变量之间要用分号隔开.
3°一个输入语句可以给多个变量赋值,中间用“,”分隔.
形式如:INPUT“a=,b=,c=,”;a,b,c
(2)输出语句的一般格式:PRINT“提示内容”;表达式
例如:PRINT“S=”;S
功能:实现算法输出信息(表达式)的功能.
要求:
1°表达式是指算法和程序要求输出的信息.
2°提示内容提示用户要输出的是什么信息,提示内容必须加双引号,提示内容要用分号和表达式分开.
3°如同输入语句一样,输出语句可以一次完成输出多个表达式的功能,不同的表达式之间可用“,”分隔.
形式如:PRINT “a,b,c:”;a,b,c
(3)赋值语句的一般格式:变量=表达式.
赋值语句中的“=”称作赋值号.
功能:将表达式所代表的值赋给变量.
要求:
1°赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个常量、变量或含变量的运算式.如:2=x是错误的.
2°赋值号的左右两边不能对换.赋值语句是将赋值号右边的表达式的值赋给赋值号左边的变量.如“A=B”“B=A”的含义运行结果是不同的,如x=5是对的,5=x是错的,A+B=C是错的,C=A+B是对的.
3°不能利用赋值语句进行代数式的演算(如化简、因式分解、解方程等),如y=x2-1=(x-1)(x+1),这是实现不了的.在赋值号右边表达式中每一个变量的值必须事先赋给确定的值.在一个赋值语句中只能给一个变量赋值,不能出现两个或以上的“=”.但对于同一个变量可以多次赋值.
(4)三种语句的功能、格式、特点如下:
在QBASIC语言中,输入语句是INPUT语句,输出语句是PRINT语句,赋值语句是LET语句(“LET”可以省略).下表列出了这三种语句的一般格式、主要功能和相关说明,供教师教学时参考,不要求学生掌握.
INPUT语句PRINT语句赋值语句
格式INPUT“提示内容”;变量
PRINT“提示内容”;
表达式
LET变量=表达式
功能可对程序中的变量赋值
可输出表达式的
值,计算可对程序中的变量赋值,计算
说明①又称“键盘输入语句”,在程序运
行过程中,停机等候用户由键盘
输入数据,而不需要在写程序时
指定
②“提示内容”和它后面的“;”可以
省略
③一个语句可以给多个变量赋
①又称“打印语句”,
将表达式的值在屏
幕上显示出来
②表达式可以是变
量、计算公式或系
统信息
③一个语句可以输
①在程序运行过程中给变量
赋值
②“LET”可以省略,“=”的右
侧必须是表达式,左侧必须
是变量
③一个语句只能给一个变量
赋值
值,中间用“,”分隔
④无计算功能
⑤用户由键盘输入的数据必须是
常量,输入多个数据时用“,”分隔,
且个数要与变量的个数相同
出多个表达式.不同
的表达式之间可用
“,”分隔
④有计算功能,能
直接输出计算公式
的值
④有计算功能
⑤将一个变量的值赋给另一
个变量,前一个变量的值保
持不变;可先后给一个变量
赋多个不同的值,但变量的
取值总是最后被赋予的值
(5)指出三种语句与框图的对应关系如下图.
(三)应用示例
思路1
例1 用描点法作函数y=x3+3x2-24x+30的图象时,需要求出自变量和函数的一组对应值.编写程序,分别计算当x=-5,-4,-3,-2,-1,0,1,2,3,4,5时的函数值.
算法分析:根据题意,对于每一个输入的自变量的值,都要输出相应的函数值.写成算法步骤如下:
第一步,输入一个自变量的x的值.
第二步,计算y=x3+3x2-24x+30.
第三步,输出y.
程序框图如下图:
显然,这是一个由顺序结构构成的算法,按照程序框图中流程线的方向,依次将程序框中的内
容写成相应的算法语句,就得相应的程序.
解:程序:
INPUT “x”;x
y=x^3+3*x^2-24*x+30
PRINT y
END
点评:前面我们学习了算法步骤、程序框图,我们对照程序框图与算法语句可以得到它们之间的对应关系.例如:在这个程序中,第1行中的INPUT语句就是输入语句.这个语句的一般格式是
其中,“提示内容”一般是提示用户输入什么样的信息,每次运行例1中的程序时,依次输入-5,-4,-3,-2,-1,0,1,2,3,4,5,计算机每次都把新输入的值赋给变量“x”,并按“x”新获得的值计算变量“y”的值.
例2 给一个变量重复赋值.
解:程序:
A=10
A=A+15
PRINT A
END
点评:给一个变量重复赋值,变量只保存最后一次赋值,比如此程序的输出值是25.
例3 编写程序,计算一个学生数学、语文、英语三门课的平均成绩.
算法分析:
先写出解决本例的算法步骤:
第一步,输入该学生数学、语文、英语三门课的成绩a,b,c.
第二步,计算y=
3c
b
a+
+
. 第三步,输出y.
程序框图如下:
由于PRINT语句还可以用于输出数值计算的结果,所以这个算法可以写成下列程序.
程序:
INPUT “Maths=”;a
INPUT “Chinese=”;b
INPUT “English=”;c
PRINT “The average=”;(a+b+c)/3
END
点评:例3中的第4行的PRINT语句是输出语句,它的一般形式是
PRINT“提示内容”;表达式
PRINT语句可以在计算机的屏幕上输出常量、变量的值和系统信息,同输入语句一样,这里的表达式前也可以有“提示内容”.
例4 变换两个变量A和B的值,并输出交换前后的值.
解:程序:
INPUT A,B
PRINT A,B
x=A
A=B
B=x
PRINT A,B
END
思路2
例1 写出求三个数a,b,c的方差的程序.
分析:方差是在初中统计内容中学习过的知识,计算所有数的方差首先计算所有数的平均数x ,
通过公式s 2
=n
x x x x x x n 2
2221)()()(-++-+- 来计算.
算法步骤:
第一步,计算平均数3
c
b a x ++=
. 第二步,计算方差s 2=
3
)()()(2
22x c x b x a -+-+-.
第三步,得到的结果即为所求. 程序如下: INPUT a ,b ,c y=(a+b+c)/3
S=((a -y)2+ (b -y)2+ (c -y)2)/3 PRINT S END
点评:套用公式求值问题是传统数学求值问题的一种,它是一种典型的顺序结构,也就是说只通过输入、输出和赋值语句就可以完成任务.解决这类问题的关键是先分析这种问题的解法,即构造计算的过程,再写出算法步骤和流程图,再翻译成算法语句即可.
例2 编写一个程序,要求输入两个正数a 和b 的值,输出a b 和b a 的值.
分析:可以利用INPUT 语
句输入两个正数,然后将a b 和b a 的值分别赋给两个变量输出即可.
也可以将a b 和b a 的底数和幂数进行交换,故还可以利用赋值语句,采用将两个变量的值互换的办法实现.
解:程序1: INPUT “a ,b :”;a ,b A=a^b B=b^a
PRINT “a^b=”;A ,“b^a=”;B END 程序2:
INPUT “a,b:”;a,b
A=a^b
PRINT “a^b=”;A
x=a
a=b
b=x
A=a^b
PRINT “b^a=”;A
END
点评:交换a,b的值可通过下面三个语句来实现:
t=a
a=b
b=t
通过引进一个中间变量t实现变量a和b的值的交换,因此只需用赋值语句即可实现算法.在一些较为复杂的问题算法中经常需要对两个变量的值进行交换,因此应熟练掌握这种方法.
(四)知能训练
1.判断下列给出的输入语句、输出语句和赋值语句是否正确?为什么?
(1)输入语句INPUT a;b;c
(2)输出语句A=4
(3)赋值语句3=B
(4)赋值语句A=B=-2
解:(1)错,变量之间应用“,”号隔开.
(2)错,PRINT语句不能用赋值号“=”.
(3)错,赋值语句中“=”号左右不能互换.
(4)错,一个赋值语句只能给一个变量赋值.
点评:输入语句、输出语句和赋值语句基本上对应于算法中的顺序结构.输入语句、输出语句和赋值语句都不包括“控制转移”,由它们组成的程序段必然是顺序结构.
2.请写出下面运算输出的结果.
(1)a=5
b=3
c=(a+b)/2
d=c*c
PRINT“d=”;d
(2)a=1
b=2
c=a+b
b=a+c-b
PRINT “a=,b=,c=”;a,b,c
(3)a=10
b=20
c=30
a=b
b=c
c=a
PRINT “a=,b=,c=” ;a,b,c
解:(1)16;语句c=(a+b)/2是将a,b和的一半赋值给变量c,语句d=c*c是将c的平方赋值给d,最后输出d的值.
(2)1,2,3;语句c=a+b是将a,b的和赋值给c,语句b=a+c-b是将a+c-b的值赋值给了b. (3)20,30,20;经过语句a=b后a,b,c的值是20,20,30.经过语句b=c后a,b,c的值是20,30,30.经过语句c=a后a,b,c的值是20,30,20.
点评:语句的识别问题是一个逆向性思维,一般我们认为我们的学习是从算法步骤(自然语言)至程序框图,再到算法语言(程序).如果将程序摆在我们的面前时,我们要先识别每个语句,再整体把握并概括出程序的功能.
(五)拓展提升
已知某生某三科的成绩为80、75、95分,求三科的总分及平均分.
分析:将三科成绩赋给三个变量A,B,C,然后对三个变量进行操作、运算,求其总分、平均分.变量的起名规则:由字母、数字、下划线组成,但第一个字符必须是字母(大、小写皆可),
起名时尽量做到见名知义,如本例中我们可用变量ZF表示总分,PJF表示平均分.解:程序框图如下图:
程序:
A=80
B=75
C=95
ZF=A+B+C
PJF=ZF/3
PRINT ZF,PJF
END
(六)课堂小结
(1)输入语句、输出语句和赋值语句的基本用法.
(2)用输入语句、输出语句和赋值语句编写算法语句.
(七)作业
习题1.2A组2.
§1.2.2 条件语句
一、教材分析
通过上一节的学习,学生学会了输入语句、输出语句和赋值语句的基本用法,本节介绍条件语句的用法. 程序中的条件语句与程序框图中的条件结构存在一一对应关系,这种对应关系对于学生理解条件语句的结构,进一步理解算法中的条件结构都是很有帮助的.我们可以给出条件语句的一般格式,让学生自己画出相应的程序框图,也可以给出程序框图,让学生写出算法语句.
二、教学目标
1、知识与技能
(1)正确理解条件语句的概念,并掌握其结构的区别与联系。
(2)会应用条件语句编写程序。
2、过程与方法
经历对现实生活情境的探究,认识到应用计算机解决数学问题方便简捷,促进发展学生逻辑思维能力
3、情感态度与价值观
了解条件语句在程序中起判断转折作用,在解决实际问题中起决定作用。
通过本小节内容的学习,有益于我们养成严谨的数学思维以及正确处理问题的能力。
三、重点难点
教学重点:条件语句的基本用法.
教学难点:算法语句的写法.
四、课时安排
1课时
五、教学设计
(一)导入新课
思路1(情境导入)
一位老农平整了一块良田,种瓜好呢,还是种豆好呢,他面临着一个选择.如果他选择种瓜,他会得瓜,如果他选择种豆,他会得豆.人的一生面临许多选择,我们要做出正确的选择.前面我们学习了条件结构,今天我们学习条件语句.
思路2(直接导入)
前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,上一节我们学习了输入语句、输出语句、赋值语句,今天我们开始学习条件语句.
(二)推进新课、新知探究、提出问题
(1)回忆程序框图中的两种条件结构.
(2)指出条件语句的格式及功能.
(3)指出两种条件语句的相同点与不同点.
(4)揭示程序中的条件语句与程序框图中的条件结构存在一一对应关系.
讨论结果:
(1)一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向.条件结构就是处理这种过程的结构.
用程序框图表示条件结构如下图:
(2)条件语句
1°“IF—THEN—ELSE”语句
格式:
IF 条件THEN
语句体1
ELSE
语句体2
END IF
功能:在“IF—THEN—ELSE”语句中,“条件”表示判断的条件,“语句体1”表示满足条件时执行的操作内容;“语句体2”表示不满足条件时执行的操作内容;END IF表示条件语句的结束.计算机在执行“IF—THEN—ELSE”语句时,首先对IF后的条件进行判断,如果符合条件,则执行THEN后面的“语句1”;若不符合条件,则执行ELSE后面的“语句2”.
2°“IF—THEN”语句
格式:
IF 条件THEN
语句体
END IF
功能:“条件”表示判断的条件;“语句”表示满足条件时执行的操作内容,条件不满足时,直接结束判断过程;END IF表示条件语句的结束.计算机在执行“IF—THEN”语句时,首先对IF后的条件进行判断,如果符合条件就执行THEN后边的语句,若不符合条件则直接结束该条件语句,转而执行其他后面的语句.
(3)相同点:首先对IF后的条件进行判断,如果符合条件就执行THEN后边的语句.
不同点:对于“IF—THEN—ELSE”语句,若不符合条件,则执行ELSE后面的“语句体2”.
对于“IF—THEN”语句,若不符合条件则直接结束该条件语句,转而执行其他后面的语句.
(4)程序中的条件语句与程序框图中的条件结构存在一一对应关系如下图:
(三)应用示例
思路1
例1 编写一个程序,求实数x 的绝对值.
算法分析:首先,我们来设计求实数x 的绝对值的算法,因为实数x 的绝对值为
|x|=⎩⎨⎧<-≥),
0(),0(x x x x 所以算法步骤可以写成:
第一步,输入一个实数x.
第二步,判断x 的符号.若x≥0,则输出x ;否则,输出-x.
显然,“第二步”可以用条件结构来实现.
程序框图如下图:
程序:
INPUT x
IF x >=0 THEN
PRINT x
ELSE
PRINT -x
END IF
END
点评:通过本题我们看到算法步骤可以转化为程序框图,程序框图可以转化为算法语句.本题揭示了它们之间的内在联系,只要理解了程序框图与算法语句的对应关系,把程序框图转化为算法语句就很容易了.
变式训练
阅读下面的程序,你能得出什么结论?
INPUT x
IF x<0 THEN
x=-x
END IF
PRINT x
END
解:由程序得出,该程序是输出x的绝对值.
例2 把前面求解一元二次方程ax2+bx+c=0的程序框图转化为程序.
解:由程序框图可以发现,其中包含着两个条件结构,而且内层的条件结构是外层的条件结构的一个分支,所以,可以用“IF—THEN—ELSE—END IF”来完成转化.
程序:
INPUT “a,b,c=”;a,b,c
d=b^2-4*a*c
IF d>=0 THEN
p=-b/(2*a)
q=SQR(d)/(2*a)
IF d=0 THEN
PRINT “x1=x2=”;p
ELSE
PRINT “x1,x2=”;p+q,p-q
END IF
ELSE
PRINT“No real root”
END IF
END
例3 编写程序,使任意输入的3个整数按从大到小的顺序输出.
算法分析:用a,b,c表示输入的3个整数.为了节约变量,把它们重新排列后,仍用a,b,c 表示,并使a≥b≥c.具体操作步骤如下:
第一步,输入3个整数a,b,c.
第二步,将a与b比较,并把小者赋给b,大者赋给a.
第三步,将a与c比较,并把小者赋给c,大者赋给a(此时a已是三者中最大的).
第四步,将b与c比较,并把小者赋给c,大者赋给b(此时a,b,c已按从大到小的顺序排列好). 第五步,按顺序输出a,b,c.
如下图所示,上述操作步骤可以用程序框图更直观地表达出来.
根据程序框图,写出相应的计算机程序.
INPUT “a,b,c=”;a,b,c
IF b>a THEN
t=a
a=b
b=t
END IF
IF c>a THEN
t=a
a=c
c=t
END IF
IF c>b THEN
t=b
b=c
c=t
END IF
PRINT a,b,c
END
思路2
例1 编写程序,输出两个不相等的实数a、b的最大值.
分析:要输出两个不相等的实数a、b的最大值,从而想到对a,b的大小关系进行判断,a,b 的大小关系有两种情况:(1)a>b;(2)b>a.这也就用到了我们经常提及的分类讨论的方式,找出两个数的最大值.
解:算法一:
第一步,输入a,b的数值.
第二步,判断a,b的大小关系,若a>b,则输出a的值,否则,输出b的值.
(程序框图如下图)
程序如下:(“IF—THEN—ELSE”语句)
INPUT “a,b”;a,b
IF a>b THEN
PRINT a
ELSE
PRINT b
END IF
END
算法二:
第一步,输入a,b的数值.
第二步,判断a,b的大小关系,若b>a,则将b的值赋予a;否则,直接执行第三步. 第三步,输出a的值,结束.
(程序框图如下图)
程序如下:(“IF—THEN”语句)
INPUT “a,b”;a,b
IF b>a THEN
a=b
END IF
PRINT a
点评:设计一个“好”的算法需要在大量的算法设计中积累经验.我们也可以先根据自己的思路设计算法,再与“成形”的、高效的、优秀的算法比较,改进思路,改进算法,以避免重复计算等问题,提高算法设计的水平.
(2)我们在平常的训练中尽可能地少引用变量,过多的变量不仅会使得算法和程序变得复杂,而且不利于计算机的执行.为此,我们在练习中要尽可能少引入变量并且要积极思考才能少引入变量.
例2 高等数学中经常用到符号函数,符号函数的定义为y=
⎪
⎩
⎪
⎨
⎧
<
-
=
>
,0
,1
,0
,0
,0
,1
x
x
x
试编写程序输入x的值,输出y的值.
解:程序一:(嵌套结构)
程序框图:(下图)
程序如下:
INPUT x
IF x>0 THEN
y=1
ELSE
IF x=0 THEN
y=0
ELSE
y=-1
END IF
END IF
PRINT y
程序二:(叠加结构)
程序框图(右图):
程序如下:
INPUT x
IF x>0 THEN
y=1
END IF
IF x=0 THEN
y=0
END IF
IF x<0 THEN
y=-1
END IF
PRINT y
END
点评:(1)条件结构的差异,造成程序执行的不同.当代入x的数值时,“程序一”先判断外层的条件,依次执行不同的分支,随后再判断内层的条件;而“程序二”中执行了对“条件1”的判断,同时也对“条件2”进行判断,是按程序中条件语句的先后依次判断所有的条件,满足哪个条件就执行哪个语句.
(2)条件语句的嵌套可多于两层,可以表达算法步骤中的多重限制条件.
(四)知能训练
中国网通规定:拨打市内电话时,如果不超过3分钟,则收取话费0.22元;如果通话时间超过3分钟,则超出部分按每分钟0.1元收取通话费,不足一分钟按以一分钟计算.设通话时间为t (分钟),通话费用y (元),如何设计一个程序,计算通话的费用.
解:算法程序如下:
INPUT “请输入通话时间:”;t
IF t<=3 THEN
y=0.22
ELSE
IF INT(t)=t THEN
y=0.22+0.1*(t -3)
ELSE
y=0.22+0.1*(INT(t -3)+1)
END IF
END IF
PRINT “通话费用为:”;y
END
(五)拓展提升
函数y=⎪⎩
⎪⎨⎧≤<-≤<≤≤,128),12(2,84,8,40,2x x x x x 写出求函数的函数值的程序.
解:INPUT x=”;x
IF x>=0 and x<=4 THEN
y=2*x
ELSE IF x<=8 THEN
y=8
ELSE y=2*(12-x)
END IF
END IF
PRINT y
END
(六)课堂小结
(1)条件语句的用法.
(2)利用条件语句编写算法语句.
(七)作业
习题1.2 B组1.
§1.2.3循环语句
一、教材分析
通过前面的学习,学生学会了输入语句、输出语句、赋值语句和条件语句的基本用法,本节将介绍循环语句的用法. 程序中的循环语句与程序框图中的循环结构存在一一对应关系,这种对应关系对于学生理解循环语句的结构,进一步理解算法中的循环结构都是很有帮助的.我们可以给出循环语句的一般格式,让学生自己画出相应的程序框图,也可以给出程序框图,让学生写出算法语句,提高学生的应用能力.
二、教学目标
1、知识与技能
(1)正确理解循环语句的概念,并掌握其结构的区别与联系。
(2)会应用循环语句编写程序。
2、过程与方法
经历对现实生活情境的探究,认识到应用计算机解决数学问题方便简捷,促进发展学生逻辑思维能力
3、情感态度与价值观
深刻体会到循环语句在解决大量重复问题中起重要作用。
减少大量繁琐的计算。
通过本小节内容的学习,有益于我们养成严谨的数学思维以及正确处理问题的能力。
三、重点难点
教学重点:循环语句的基本用法.
教学难点:循环语句的写法.
四、课时安排
1课时
五、教学设计
(一)导入新课
思路1(情境导入)
一位同学不小心违反了学校纪律,班主任令其写检查,他写完后交给班主任,班主任看后说:“认识不深刻,拿回去重写,直到认识深刻为止”.这位同学一想,这不是一个循环结构吗?可惜我还没学循环语句,不然可以写一个算法语句输入计算机了.同学们,今天我们开始学习循环语句.
思路2(直接导入)
前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,上一节我们学习了输入语句、输出语句、赋值语句和条件语句,今天我们开始学习循环语句.
(二)推进新课、新知探究、提出问题
(1)试用程序框图表示循环结构.
(2)指出循环语句的格式及功能.
(3)指出两种循环语句的相同点与不同点.
(4)揭示程序中的循环语句与程序框图中的条件结构存在一一对应关系.
讨论结果:
(1)循环结构
循环结构有两种形式:当型循环结构和直到型循环结构.
1°当型循环结构,如图(1)所示
2°直到型循环结构,如图(2)所示,
(1)当型循环结构(2)直到型循环结构
(2)循环语句
1°当型循环语句
当型(WHILE型)语句的一般格式为:
WHILE 条件
循环体
WEND
功能:计算机执行此程序时,遇到WHILE语句,先判断条件是否成立,如果成立,则执行WHILE 和WEND之间的循环体;然后返回到WHILE语句再判断上述条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到一次返回到WHILE语句判断上述条件不成立为止,这时不再执行循环体,而是跳到WEND语句后,执行WEND后面的语句.因此当型循环又称“前测试型”循环,也就是我们经常讲的“先测试后执行”“先判断后循环”.
2°直到型循环语句
直到型(UNTIL型)语句的一般格式为:
DO
循环体
LOOP UNTIL 条件
功能:计算机执行UNTIL语句时,先执行DO和LOOP UNTIL之间的循环体,然后判断“LOOP UNTIL”后面的条件是否成立,如果条件不成立,返回DO语句处重新执行循环体.这个过程反复执行,直到一次判断“LOOP UNTIL”后面的条件成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOP UNTIL条件”下面的语句.
因此直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试”“先循环后判断”.
(3)相同点:都是反复执行循环体语句.
不同点:当型循环语句是先判断后循环,直到型循环语句是先循环后判断.
(4)下面为循环语句与程序框图中的条件结构的一一对应关系.
1°直到型循环结构:
2°当型循环结构:
(三)应用示例
思路1
例1 修改前面编写过的求函数y=x3+3x2-24x+30的值的程序,连续输入11个自变量的取值,输出相应的函数值.
算法分析:与前面不同的是,本例要求连续输入11个自变量的取值.并输出相应的函数值,先写出解决本例的算法步骤:
第一步,输入自变量x的值.
第二步,计算y=x3+3x2-24x+30.
第三步,输出y.
第四步,记录输入次数.
第五步,判断输入的次数是否大于11.若是,则结束算法;否则,返回第一步.
显然,可以用计数变量n(1≤n≤11)记录次数,通过循环结构来实现算法.
程序框图如下图:
程序:
n=1
DO
INPUT x
y=x^3+3*x^2-24*x+30
PRINT y
n=n+1
LOOP UNTIL n>11
END
例2 教材中的用“二分法”求方程x2-2=0(x>0)的近似解的程序框图(见教材图1.120)包含了顺序结构、条件结构和循环结构.下面,我们把这个程序框图转化为相应的程序.
解:程序为:
INPUT “a,b,d=”;a,b,d
DO
m=(a+b)/2
g=a^2-2
f=m^2-2
IF g*f<0 THEN
b=m
ELSE
a=m
END IF
LOOP UNTIL ABS(a-b)<d OR f=0
PRINT m
END
点评:ABS()是一个函数,用来求某个数的绝对值,即ABS(x)=|x|.
例3 设计一个计算1×3×5×7×…×99的算法,编写算法程序.
解:算法如下:
第一步,s=1.
第二步,i=3.
第三步,s=s×i.
第四步,i=i+2.
第五步,如果i≤99,那么转到第三步.
第六步,输出s.
程序如下:(“WHILE型”循环语句)
s=1
i=3
WHILE i<=99。