§1.3秦九韶算法、辗转相除法与更相减损术
【教学目标】:
1、了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质。
2、理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析。
3、基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序。
【教学重点】
1、秦九韶算法的特点及其程序设计。
2、理解辗转相除法与更相减损术求最大公约数的方法。
【教学难点】
1、秦九韶算法的先进性理解及其程序设计。
2、把辗转相除法与更相减损术的方法转换成程序框图与程序语言。
【学法】:
探究秦九韶算法对比一般计算方法中计算次数的改变,比较辗转相除法与更相减损术求最大公约数在算法上的区别,并从程序的学习中体会数学的严谨,领会数学算法计算机处理的结合方式,初步掌握把数学算法转化成计算机语言的一般步骤。
【教学过程】
秦九韶计算多项式的方法
例1、 设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值的算法,并写出程序。
个别学生提出一般的解决方案,如:
x=5
y=2 * x^5 – 5 * x^4 – 4 * x^3 + 3 * x^2 – 6 * x + 7
PRINT“y=”;y
END
提问:例1计算时需要多少次乘法计算?多少次加法计算?有什么优缺点?
学生答:上述算法一共做了解15次乘法运算,5次加法运算,优点是简单、易懂。缺点是不通用,不能解决任意多项式的求值问题,而且计算效率不高。
提问:计算x的幂时,可以利用前面的计算结果,以减少计算量,即先计算x2,然后依次计算x2.x,(x2.x).x, ((x2.x).x).x的值,这样计算上述多项式的值,一共需要多少次乘法,多少次加法
学生答:上述算法一共做了解4次乘法运算,5次加法运算。
结论:第二种做法与第一种做法相比,乘法的运算次数减少了,因而能提高运算效率,而且对于计算机来说,做一次乘法所需的运算时间比做一次加法要长得多,因此第二种做法更快地得到结果。
我们把多项式变形为:f(x)= 2x5-5x4-4x3+3x2-6x+7=((((2x-5)x-4)x+3)x-6)x+7
从内到外,如果把每一个括号都看成一个常数,x的系数依次是什么?
用图表可以表示为:
多项式x系数 2 -5 -4 3 -6 7 运算
10 25 105 540 2670 +
变形后x的"系数" 2 5 21 108 534 2677 *5
最后的系数2677即为所求的值,让学生描述上述计算过程。
上述算法就是“秦九韶算法”。
如何应用秦九韶算法完成一般的多项式f(x)=anxn+an-1xn-1+….+a1x+a0求值问题?
f(x)=anxn+an-1xn-1+….+a1x+a0
=( anxn-1+an-1xn-2+….+a1)x+a0
=(( anxn-2+an-1xn-3+….+a2)x+a1)x+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次多项式的求值问题转化成求n个一次多项式的值的问题
观察秦九韶算法的数学模型,计算vk时要用到vk-1的值,若令v0=an,我们可以得到下面的递推公式:
v0=an
vk=vk-1+an-k(k=1,2,…n)
这是一个在秦九韶算法中反复执行的步骤,可以用循环结构来实现。
例2、已知一个五次多项式f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8用秦九韶算法求当x=5时多项式的值。
提出问题:在小学,我们已经学过求最大公约数的知识,如口算求出12与20的公约数。
分析:
我们都是利用找公约数的方法来求最大公约数,如果公约数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们的最大公约数?比如求8251与6105的最大公约数?这就是我们这一堂课所要探讨的内容。
辗转相除法
例3 求两个正数8251和6105的最大公约数。
分析:8251与6105两数都比较大,而且没有明显的公约数,可以把它们都变小一点,根据已有的知识即可求出最大公约数
8251=6105×1+2146
显然8251的最大公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,所以8251与6105的最大公约数也是6105与2146的最大公约数。
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
则37为8251与6105的最大公约数。
以上我们求最大公约数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。利用辗转相除法求最大公约数的步骤如下:
(1):用较大的数m除以较小的数n得到一个商和一个余数;
(2):若=0,则n为m,n的最大公约数;若≠0,则用除数n除以余数得到一个商和一个余数;
(3):若=0,则为m,n的最大公约数;若≠0,则用除数除以余数得到一个商和一个余数;……
依次计算直至=0,此时所得到的即为所求的最大公约数。
其程序框图见课本
其程序语言(BASIC)如下:
INPUT “m=”;m
INPUT “n=”;n
IF m MOD n=n
n=x
END IF
r=m MOD n
WHILE r<>0
r=m MOD n
m=n
n=r
WEND
PRINT m
END
更相减损术
我国早期也有解决求最大公约数问题的算法,就是更相减损术。在《九章算术》中记载了更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母 子之数,以少减多,更相减损,求其等也,以等数约之。
翻译为:
(1):任意给出两个正数;判断它们是否都是偶数。若是,用2约简;若不是,执行第二步。
(2):以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
例4 用更相减损术求98与63的最大公约数.
分析:由于63不是偶数,把98和63以大数减小数,并辗转相减,
即:98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98与63的最大公约数是7。
辗转相除法与更相减损术的区别:
(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到
小结
(1)秦九韶算法计算多项式的值及程序设计
(2)对比分析辗转相除法与更相减损术求最大公约数的计算方法及完整算法程序。§1.2.1输入、输出语句和赋值语句
【教学目标】:
(1) 正确理解输入语句、输出语句、赋值语句的结构。
(2) 让学生充分地感知、体验应用计算机解决数学问题的方法;并能初步操作、模仿。
(3) 过实例,使学生理解3种基本的算法语句(输入语句、输出语句和赋值语句)的表示方法、结构和用法,能用这三种基本的算法语句表示算法,进一步体会算法的基本思想。
【教学重点】正确理解输入语句、输出语句、赋值语句的作用。
【教学难点】准确写出输入语句、输出语句、赋值语句。
【学法】:
我们用自然语言或程序框图描述的算法,计算机是无法“看得懂,听得见”的。因此还需要将算法用计算机能够理解的程序设计语言翻译成计算机程序。程序设计语言有很多种。如BASIC,Foxbase,C语言,C++,J++,VB,VC,JB等。为了实现算法中的三种基本的逻辑结构:顺序结构、条件结构和循环结构,各种程序设计语言中都包含下列基本的算法语句:输入语句、输出语句、赋值语句条件语句和循环语句.今天,我们一起用类BASIC语言学习输入语句、输出语句、赋值语句。
【教学过程】
输入语句、输出语句和赋值语句基本上对应于算法中的顺序结构。下面的例题是用这三种基本的算法语句表示的一个算法。
例1:用描点法作函数y=x3+3x2-24x+30的图象时,需要求出自变量和函数的一组对应值。编写程序,分别计算当x=-5,-4,-3,-2,-1,0,1,2,3,4,5时的函数值。
程序:INPUT“x=”;x 输入语句
y=x^3+3*x^2-24*x+30 赋值语句
PRINT x 打印语句
PRINT y 打印语句
END
(学生先看,再跟着做, 学生先不必深究该程序如何得来,模仿编写程序,通过运行自己编写的程序发现问题所在,进一步提高学生的模仿能力,并观察与BASIC语言的异同)
探究:在这个程序中,你们觉得哪些是输入语句、输出语句和赋值语句呢?(同学们互相交流、议论、猜想、概括出结论。提示:“input”和“print”(”Disp”)的中文意思等)
输入语句
(1)输入语句的一般格式
(2)输入语句的作用是实现算法的输入信息功能;
(3)“提示内容”提示用户输入什么样的信息,变量是指程序在运行时其值是可以变化的量;
(4)输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式;
(5)提示内容与变量之间用分号“;”隔开,若输入多个变量,变量与变量之间用逗号“,”隔开。
输出语句
(1)输出语句的一般格式
(2)输出语句的作用是实现算法的输出结果功能;
(3)“提示内容”提示用户输入什么样的信息,表达式是指程序要输出的数据;
(4)输出语句可以输出常量、变量或表达式的值以及字符。
赋值语句
(1)赋值语句的一般格式
(2)赋值语句的作用是将表达式所代表的值赋给变量;
(3)赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的。赋值号的左右两边不能对换,它将赋值号右边的表达式的值赋给赋值号左边的变量;
(4)赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个数据、常量或算式;
(5)对于一个变量可以多次赋值。
注意:①赋值号左边只能是变量名字,而不能是表达式。如:2=X是错误的。
②赋值号左右不能对换。如“A=B”“B=A”的含义运行结果是不同的。
③不能利用赋值语句进行代数式的演算。(如化简、因式分解、解方程等)
④赋值号“=”与数学中的等号意义不同。
例2:编写程序,计算一个学生数学、语文、英语三门课的平均成绩。
分析:先写出算法,画出程序框图,再进行编程。
程序:
例3、给一个变量重复赋值。
程序:
学生得到以下结论:对于一个变量可以多次赋值,变量的值就是最后一次的赋值。
例4、交换两个变量A和B的值,并输出交换前后的值。
程序:
分析:引入一个中间变量X,将A的值赋予X,
又将B的值赋予A,再将X的值赋予B,从
而达到交换A,B的值。(比如生活中交换装
满红墨水和蓝墨水的两个瓶子里的墨水,需要
再找一个空瓶子)
P24练习 1. 2. 3参考答案:
程序: INPUT “请输入华氏温度:”;x
y=(x-32)*5/9
PRINT “华氏温度:”;x
PRINT “摄氏温度:”;y
END
创新:如果要求输入一个摄氏温度,输出其相应的华氏温度,又该如何设计程序?(学生课后思考,讨论、再利用TI-voyage200图形计算器完成)
2. 程序: INPUT “请输入a(a 0)=”;a
INPUT “请输入b(b 0)=”;b
X=a+b
Y=a-b
Z=a*b
Q=a/b
PRINT a,b
PRINT X,Y,Z,Q
END
3. 程序: p=(a+b+c/2
t=p*(p-a)*(p-b)*(p-c)
s=SQR(t)
PRINT “该三角形的面积为:”;s
END(注:SQR()是函数名,用来求某个数的平方根)
【课堂小结】
本节课介绍了输入语句、输出语句和赋值语句的结构特点及联系。掌握并应用输入语句,输出语句,赋值语句编写一些简单的程序解决数学问题,特别是掌握赋值语句中“=”的作用及应用。编程一般的步骤:先写出算法,再进行编程。我们要养成良好的习惯,也有助于数学逻辑思维的形成。注意:BASIC语言中的标准函数,如SQR(x)表示x的算术平方根,ABS(x)表示x的绝对值等。
INPUT“提示内容”;变量
PRINT“提示内容”;表达式
变量=表达式
INPUT “Maths=”;a
INPUT “Chinese=”;b
INPUT “English=”;c
PRINT “The average=”;(a+b+c)/3
END
A=10
A=A+15
PRINT
END
INPUT A
INPUT B
PRINT A,B
x=A
A=B
B=x
PRINT A,B
END§1.3进位制
【教学目标】:
(1) 了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换。
(2) 学习各种进位制转换成十进制的计算方法,研究十进制转换为各种进位制的除k去余法,并理解其中的数学规律。
【教学重点】各进位制表示数的方法及各进位制之间的转换
【教学难点】除k取余法的理解以及各进位制之间转换的程序框图及其程序的设计
【学法】:
学习各种进位制特点的同时探讨进位制表示数与十进制表示数的区别与联系,熟悉各种进位制表示数的方法,从而理解十进制转换为各种进位制的除k取余法。
【教学过程】
引入
我们常见的数字都是十进制的,比如一般的数值计算,但是并不是生活中的每一种数字都是十进制的.比如时间和角度的单位用六十进位制,电子计算机用的是二进制,旧式的称是十六进制的,计算一打数值时是12进制的......那么什么是进位制 不同的进位制之间又又什么联系呢
进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57,可以用二进制表示为111001,也可以用八进制表示为71、用十六进制表示为39,它们所代表的数值都是一样的。
一般地,若k是一个大于一的整数,那么以k为基数的k进制可以表示为:
,
而表示各种进位制数一般在数字右下脚加注来表示,如111001(2)表示二进制数,34(5)表示5进制数
如:把二进制数110011(2)化为十进制数.
110011=1*25+1*24+0*23+0*22+1*21+1*20=32+16+2+1=51
把八进制数化为十进制数.
例4、把二进制数110011(2)化为十进制数.
解:110011=1*25+1*24+0*23+0*22+1*21+1*20=32+16+2+1=51
例5
把89化为二进制数.
解:根据二进制数满二进一的原则,可以用2连续去除89或所得商,然后去余数.
具体的计算方法如下:
89=2*44+1
44=2*22+0
22=2*11+0
11=2*5+1
5=2*2+1
所以:89=2*(2*(2*(2*(2*2+1)+1)+0)+0)+1
=1*26+0*25+1*24+1*23+0*22+0*21+1*20
=1011001(2)
这种算法叫做除2取余法,还可以用下面的除法算式表示:
把上式中的各步所得的余数从下到上排列即可得到89=1011001(2)
上述方法也可以推广为把十进制化为k进制数的算法,这种算法成为除k取余法.
例6
利用除k取余法把89转换为5进制数
具体的计算方法如把十进制数化为二进制数。
把k进制数a(共有n位)转换为十进制数b的过程可以利用计算机程序来实现,语句为:
INPUT a,k,n
i=1
b=0
WHILE i<=n
t=GET a[i]
b=b+t*k^(i-1)
i=i+1
WEND
PRINT b
END
练习:书P45 1、 2、3
小结:
(1)进位制的概念及表示方法
(2)十进制与二进制之间转换的方法及程序
作业:作业本第19页到20页§1.1.1 算法的概念
【教学目标】:
(1) 了解算法的含义,体会算法的思想。
(2) 能够用自然语言叙述算法。
(3) 掌握正确的算法应满足的要求。
(4) 会写出解线性方程(组)的算法。
【教学重点】算法的含义、解二元一次方程组和判断一个数为质数的算法设计。.
【教学难点】把自然语言转化为算法语言。.
【学法】:
1、写出的算法,必须能解决一类问题(如:判断一个整数n(n>1)是否为质数;求任意一个方程的近似解;……),并且能够重复使用。
2、要使算法尽量简单、步骤尽量少。
【教学过程】
一、本章章头图说明
章头图体现了中国古代数学与现代计算机科学的联系,它们的基础都是“算法”。
算法作为一个名词,在中学教科书中并没有出现过,我们在基础教育阶段还没有接触算法概念。但是我们却从小学就开始接触算法,熟悉许多问题的算法。如,做四则运算要先乘除后加减,从里往外脱括弧,竖式笔算等都是算法,至于乘法口诀、珠算口诀更是算法的具体体现。广义地说,算法就是做某一件事的步骤或程序。菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。在数学中,主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。
古代的计算工具:算筹与算盘.
20世纪最伟大的发明:计算机,计算机是强大的实现各种算法的工具。
例1:解二元一次方程组:
分析:解二元一次方程组的主要思想是消元的思想,有代入消元和加减消元两种消元的方法,下面用加减消元法写出它的求解过程.
解:第一步:② - ①×2,得: 5y=3; ③
第二步:解③得 ;
第三步:将代入①,得 .
学生探究:对于一般的二元一次方程组来说,上述步骤应该怎样进一步完善?
老师评析:本题的算法是由加减消元法求解的,这个算法也适合一般的二元一次方程组的解法。下面写出求方程组的解的算法:
例2:写出求方程组的解的算法.
解:第一步:②×a1 - ①×a2,得: ③
第二步:解③得 ;
第三步:将代入①,得
算法概念:
在数学上,现代意义上的“算法”通常是指可以用计算机来解决的某一类问题是程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.
说明:
1.“算法”没有一个精确化的定义,教科书只对它作了描述性的说明.
2. 算法的特点:
(1)有限性:
一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的.
(2)确定性:
算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可.
(3)顺序性与正确性:
算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题.
(4)不唯一性:
求解某一个问题的解法不一定是唯一的,对于一个问题可以有不同的算法.
(5)普遍性:
很多具体的问题,都可以设计合理的算法去解决,如心算、计算器计算都要经过有限、事先设计好的步骤加以解决.
例题讲评:
例3、任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判断.
分析:(1)质数是只能被1和自身整除的大于1的整数.
(2)要判断一个大于1的整数n是否为质数,只要根据质数的定义,用比这个整数小的数去除n,如果它只能被1和本身整除,而不能被其它整数整除,则这个数便是质数.
解:算法:
第一步:判断n是否等于2.若n=2,则n是质数;若n>2,则执行第二步.
第二步:依次从2~(n-1)检验是不是n的因数,即整除n的数.若有这样的数,则n不是质数;若没有这样的数,则n是质数.
说明:本算法是用自然语言的形式描述的.设计算法一定要做到以下要求:
(1)写出的算法必须能解决一类问题,并且能够重复使用.
(2)要使算法尽量简单、步骤尽量少.
(3)要保证算法正确,且计算机能够执行.
例4、.用二分法设计一个求方程的近似根的算法.
分析:该算法实质是求的近似值的一个最基本的方法.
解:设所求近似根与精确解的差的绝对值不超过0.005,算法:
第一步:令.因为,所以设x1=1,x2=2.
第二步:令,判断f(m)是否为0.若是,则m为所求;若否,则继续判断大于0还是小于0.
第三步:若,则x1=m;否则,令x2=m.
第四步:判断是否成立?若是,则x1、x2之间的任意值均为满足条件的近似根;若否,则返回第二步.
说明:按以上步骤,我们将依次得到课本第4页的表1-1和图1.1-1.于是,开区间(1.4140625,1.41796875)中的实数都满足假设条件的原方程是近似根.
练习1:
写出解方程x2-2x-3=0的一个算法。
解:算法1:
第一步:移项,得x2-2x-3=0; ①
第二步:①式两边同加1并配方,得(x-1)2=4; ②
第三步:②式两边开方,得x-1=±2; ③
第四步:解③得x=3或x=-1。
算法2:
第一步:计算方程的判别式判断其符号△=22+4×3=16>0;
第二步:将a=1,b=-2,c=-3代入求根公式x= EQ \F(-b±,2),
得x1=3,x2=-1
评析:比较两种算法,算法2更简单,步骤少,所以利用公式解决问题是最理想、合算的算法。因此在寻求算法的过程中,首先是利用公式。
下面设计一个求一般的一元二次方程ax2+bx+c=0的根的算法如下:
第一步:计算△=b2+4ac;
第二步:若△<0;
第三步:输出方程无实根;
第四步:若△≥0;
第五步:计算并输出方程根x1,2= EQ \F(-b±,2)。
练习2、求1×3×5×7×9×11的值,写出其算法。
第一步,先求1×3,得到结果3;
第二步,将第一步所得结果3再乘以5,得到结果15;
第三步,再将15乘以7,得到结果105;
第四步,再将105乘以9,得到945;
第五步,再将945乘以11,得到10395,即是最后结果。
评析:求解某个问题的算法不同于求解一个具体问题的方法,算法必须能够解决一类问题,并且能够重复使用;算法过程要能一步一步地执行,每一步操作必须确切,能在有限步后得出结果。
小结
1、算法概念和算法的基本思想
(1)算法与一般意义上具体问题的解法的联系与区别;
(2)算法的五个特征。
2、利用算法的思想和方法解决实际问题,能写出一此简单问题的算法
作业: (课本第5页练习)
1、任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.
解:算法步骤:
第一步:输入任意一个正实数r;
第二步:计算以r为半径的圆的面积:;
第三步:输出圆的面积S.
2、任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.
解:算法步骤:
第一步:依次以2~(n-1)为除数去除n,检查余数是否为0.若是,则是n的因数;若不是,则不是n的因数;
第二步:在n的因数中加入1和n;
第三步:输出n的所有因数.§1.2.2条件语句、循环语句
【教学目标】:
(1) 正确理解条件语句、循环语句的概念,并掌握其结构。
(2) 会应用条件语句、循环语句编写程序。
【教学重点】条件语句的步骤、结构及功能;两种循环语句的表示方法、结构和用法,用循环语句表示算法。
【教学难点】会编写程序中的条件语句,理解循环语句的表示方法、结构和用法,会编写程序中的循环语句。
【学法】:
了解条件语句在程序中起判断转折作用,在解决实际问题中起决定作用,了解循环语句在解决大量重复问题中起重要作用,减少大量繁琐的计算。
【教学过程】
条件语句
1、条件语句的一般格式有两种:(1)IF—THEN—ELSE语句;(2)IF—THEN语句。
2、IF—THEN—ELSE语句
IF—THEN—ELSE语句的一般格式为图1,对应的程序框图为图2。
图1 图2
分析:在IF—THEN—ELSE语句中,“条件”表示判断的条件,“语句1”表示满足条件时执行的操作内容;“语句2”表示不满足条件时执行的操作内容;END IF表示条件语句的结束。计算机在执行时,首先对IF后的条件进行判断,如果条件符合,则执行THEN后面的语句1;若条件不符合,则执行ELSE后面的语句2。
3、IF—THEN语句
IF—THEN语句的一般格式为图3,对应的程序框图为图4。
注意:“条件”表示判断的条件;“语句”表示满足条件时执行的操作内容,条件不满足时,结束程序;END IF表示条件语句的结束。计算机在执行时首先对IF后的条件进行判断,如果条件符合就执行THEN后边的语句,若条件不符合则直接结束该条件语句,转而执行其它语句。
例1、编写程序,输入一元二次方程ax2+bx+c=0的系数,输出它的实数根。
分析:先把解决问题的思路用程序框图表示出来,然后再根据程序框图给出的算法步骤,逐步把算法用对应的程序语句表达出来。(程序框图先由学生讨论,再统一,可以参考课本)
算法分析:
在求解方程之前,需要首先判断判别式的符号,再根据判别式的符号判断方程根的情况:△>0时,方程有两个不相等的实数根;△=0时,方程有两个相等的实数根;△<0时,方程没有实数根。这个过程可以用算法中的条件结构来表示。
例2、编写程序,使得任意输入的3个整数按从大到小的顺序输出。
算法分析:用a,b,c表示输入的3个整数;为了节约变量,把它们重新排列后,仍用a,b,c表示,并使a≥b≥c.具体操作步骤可先讨论,再对照课本。
程序框图和程序:(参照课本 )
练习: 3x2+1 (x>0),
1、已知函数f(x)= x+1 (x=0),
2x2+3x (x<0),
编写一个程序,对每输入的一个x值,都得到相应的函数值。(学生利用条件语句的嵌套,可选择IF—THEN语句)
课本练习2
提示:mod 的用法(即整除中取余数) ;intdiv的用法(即整除中取商的整数部分)
算法中的循环结构是由循环语句来实现的。对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。即WHILE语句和UNTIL语句。
WHILE语句
(1)WHILE语句的一般格式是 对应的程序框图是
(2)当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。因此,当型循环有时也称为“前测试型”循环。
UNTIL语句
(1)UNTIL语句的一般格式是 对应的程序框图是
(2)直到型循环又称为“后测试型”循环,从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOP UNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。
分析:
当型循环与直到型循环的区别:(先由学生讨论再归纳)
(1) 当型循环先判断后执行,直到型循环先执行后判断;
(2) 在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中,是当条件不满足时执行循环体。
例3:编写程序,计算自然数1+2+3+……+99+100的和。
分析:这是一个累加问题。我们可以用WHILE型语句,也可以用UNTIL型语句。(从而得到:解决问题的方法不是唯一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题。)
程序(WHILE语句): 程序(UNTIL语句):
例4、根据1.1.2中的图1.1-2,将程序框图转化为程序语句。
改进循环次数,实际上当循环次数等于的整数次时已足够了!
练习(课本32页)
小结
1、条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套
编程的一般步骤:
(1)算法分析 :根据提供的问题,利用数学及相关学科的知识,设计出解决问题的算法。
(2)画程序框图:依据算法分析,画出程序框图。
(3)写出程序 :根据程序框图中的算法步骤,逐步把算法用相应的程序语句表达出来。
2、循环语句的两种不同形式:WHILE语句和UNTIL语句(另补充了For语句),掌握它们的一般格式。
3、在用WHILE语句和UNTIL语句编写程序解决问题时,一定要注意它们的格式及条件的表述方法。WHILE语句中是当条件满足时执行循环体,而UNTIL语句中是当条件不满足时执行循环体。
4、循环语句主要用来实现算法中的循环结构,在处理一些需要反复执行的运算任务。如累加求和,累乘求积等问题中常用到。
否
是
满足条件?
语句1
语句2
IF 条件 THEN
语句1
ELSE
语句2
END IF
满足条件?
语句
是
否
IF 条件 THEN
语句
END IF
(图3)
(图4)
循环体
满足条件?
否
是
WHILE 条件
循环体
WEND
满足条件?
循环体
是
否
DO
循环体
LOOP UNTIL 条件
i=1
sum=0
WHILE i<=100
sum=sum+I
i=i+1
WEND
PRINT sum
END
i=1
sum=0
DO
sum=sum+I
i=i+1
LOOP UNTIL i>100
PRINT sum
END§1.1.2 程序框图(2课时)
【教学目标】:
1、掌握程序框图的概念;会用通用的图形符号表示算法,掌握算法的三个基本逻辑结构
2、掌握画程序框图的基本规则,能正确画出程序框图。
3、通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程;学会灵活、正确地画程序框图。
【教学重点】经过模仿、操作、探索,经历通过设计程序框图表达求解问题的过程,重点是程序框图的基本概念、基本图形符号和3种基本逻辑结构
【教学难点】 难点是能综合运用这些知识正确地画出程序框图。
【学法】:
1、要弄清各种图形符号的意义,明确每个图形符号的使用环境,图形符号间的联结方式。图形符号都有各自的使用环境和作用
2、在我们描述算法或画程序框图时,必须遵循一定的逻辑结构,事实证明,无论如何复杂的问题,我们在设计它们的算法时,只需用顺序结构、条件结构和循环结构这三种基本逻辑就可以了,因此我们必须掌握并正确地运用这三种基本逻辑结构。
【教学过程】
引入:
算法可以用自然语言来描述,但为了使算法的程序或步骤表达得更为直观,我们更经常地用图形方式来表示它。
程序框图基本概念:
(1)程序构图的概念
程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形。
一个程序框图包括以下几部分:表示相应操作的程序框;带箭头的流程线;程序框外必要的文字说明。
(2)构成程序框的图形符号及其作用
程序框 名称 功能
起止框 表示一个算法的起始和结束,是任何流程图不可少的。
输入、输出框 表示一个算法输入和输出的信息,可用在算法中任何需要输入、输出的位置。
处理框 赋值、计算,算法中处理数据需要的算式、公式等分别写在不同的用以处理数据的处理框内。
判断框 判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N”。
流程线 连接程序框
学习这部分知识的时候,要掌握各个图形的形状、作用及使用规则,画程序框图的规则如下:
1、使用标准的图形符号。
2、框图一般按从上到下、从左到右的方向画。
3、除判断框外,大多数流程图符号只有一个进入点和一个退出点。判断框具有超过一个退出点的唯一符号。
4、判断框分两大类,一类判断框“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,有几种不同的结果。
5、在图形符号内描述的语言要非常简练清楚。
(3)、算法的三种基本逻辑结构:顺序结构、条件结构、循环结构。
顺序结构
顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
顺序结构在程序框图中的体现就是用流程线将程序框自上而
下地连接起来,按顺序执行算法步骤。如在示意图中,A框和B
框是依次执行的,只有在执行完A框指定的操作后,才能接着执
行B框所指定的操作。
例3、已知一个三角形的三边分别为2、3、4,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图。
(算法—自然语言)
第一步: a=2,b=3,c=4;
第二步:p=;
第三步:S=
应用:请写出求A(x1,y1),B(x2,y2)的两点距离的一个算法,并画出程序框图。
(学生动手先构思算法,然后画出程序框图)
条件结构
条件结构是指在算法中通过对条件的判断,
根据条件是否成立而选择不同流向的算法结构。
它的一般形式如右图所示:
注意:
1、 右图此结构中包含一个判断框,根据给定的
条件P是否成立而选择执行A框或B框。无论
P条件是否成立,只能执行A框或B框之一,不
可能同时执行A框和B框,也不可能A框、B框都不执行。
2、 一个判断结构可以有多个判断框。
例4、任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在。画出这个算法的程序框图。
解:
算法分析:判断分别以这3个数为三边边长的三角形是否存在,只需要验收这3个数当中任意两个数的和是否大于第3个数,这就需要用到条件结构。
程序框图:(见课本)
应用:设计求一个数x的绝对值的算法,并画出相应的程序框图。
循环结构:
在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,显然,循环结构中一定包含条件结构。循环结构又称重复结构,循环结构可细分为两类:
(1)、一类是当型循环结构,如下左图所示,它的功能是当给定的条件P成立时,执行A框,A框执行完毕后,再判断条件P是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件P不成立为止,此时不再执行A框,离开循环结构。
(2)、另一类是直到型循环结构,如下右图所示,它的功能是先执行,然后判断给定的条件P是否成立,如果P仍然不成立,则继续执行A框,直到某一次给定的条件P成立为止,此时不再执行A框,离开循环结构。
当型循环结构 直到型循环结构
注意:
1、 循环结构要在某个条件下终止循环,这就需要条件结构来判断。因此,循环结构中一定包含条件结构,但不允许“死循环”。
2、 在循环结构中都有一个计数变量和累加变量。计数变量用于记录循环次数,累加变量用于输出结果。计数变量和累加变量一般是同步执行的,累加一次,计数一次。
例5、设计一个计算1+2+3+…+100的值的算法,并画出程序框图。
解:
算法如下:
第一步:sum=0;
第二步:i=1;
第三步:sum=sum+i;
第四步:i=i+1;
第五步:如果i不大于100,返回重新执行第三步,第四步,第五步,否则,算法结束,最后得到的sum值就是1+2+3+…+100的值。
程序框图(可参看课本)
应用:设计一个计算的值的算法,并画出程序框图。
课堂小结:
本节课主要讲述了程序框图的基本知识,包括常用的图形符号、算法的基本逻辑结构,算法的基本逻辑结构有三种,即顺序结构、条件结构和循环结构。其中顺序结构是最简单的结构,也是最基本的结构,循环结构必然包含条件结构,所以这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过这三种结构来表达。
在具体画程序框图时,要注意的问题:流程线上要有标志执行顺序的前头;判断框后边
的流程线应根据情况标注“是”或“否”;在循环结构中,要注意根据条件设计合理的计数变
量、累加变量等,特别要条件的表述要恰当、精确。
作业:P20 A组 1,2,3 B组 1,2 作业本上1到5页
B
A
结束
开始
p= EQ \F(2+3+4,2)
S= EQ \R(,p(p-2)(p-3)(p-4))
输入S
否
是
B
A
p
成立
A
成立
A
P
不成立
不成立
P
p