课件16张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第一课时复习回顾1.算法的含义是什么? 在数学中,按照一定规则解决某一类问题的明确和有限的步骤称为算法. 2.算法是由一系列明确和有限的计算步骤组成的,我们可以用自然语言表述一个算法,但往往过程复杂,缺乏简洁性,因此,我们有必要探究使算法表达得更加直观、准确的方法,这个想法可以通过程序框图来实现.1.1.2-1 程序框图与顺序结构“判断整数n(n>2)是否为质数”的算法步骤如何?第一步,给定一个大于2的整数n; 第二步,令i=2; 第三步,用i除n,得到余数r; 第四步,判断“r=0”是否成立.若是,则n 不是质数,结束算法;否则,将i 的值增加1,仍用i表示; 第五步,判断“i>(n-1)”是否成立,若是, 则n是质数,结束算法;否则,返回 第三步. 我们将上述算法用下面的图形表示:上述表示算法的图形称为算法的程序框图又称流程图,其中的多边形叫做程序框,带方向箭头的线叫做流程线,你能指出程序框图的含义吗? 用程序框、流程线及文字说明来表示算法的图形. 在上述程序框图中,有4种程序框,2种流程线,它们分别有何特定的名称和功能? 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框 流程线 表示一个算法的起始和结束 表示一个算法输入和输出的信息 赋值、计算 判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N” 连接程序框,表示算法步骤的执行顺序 在逻辑结构上,“判断整数n(n>2)是否为质数”的程序框图由几部分组成?任何一个算法各步骤之间都有明确的顺序性,在算法的程序框图中,由若干个依次执行的步骤组成的逻辑结构,称为顺序结构,用程序框图可以表示为:第一步,输入三角形三条边的边长 a,b,c. 第四步,输出S. 上述算法的程序框图如何表示? 例1 一个笼子里装有鸡和兔共m只,且鸡和兔共n只脚,设计一个计算鸡和兔各有多少只的算法,并画出程序框图表示.典例讲解算法分析: 第一步,输入m,n.第三步,计算兔的只数y=m-x.第四步,输出x,y.程序框图: 例2 已知下图是“求一个正奇数的平方加5的值”的程序框图,若输出的数是30,求输入的数n的值.顺序结构的程序框图的基本特征:小结(2)各程序框从上到下用流程线依次连接.(1)必须有两个起止框,穿插输入、输出框和处理框,没有判断框.(3)处理框按计算机执行顺序沿流程线依次排列.课件21张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第二课时复习回顾 1.用程序框、流程线及文字说明来表示算法的图形称为程序框图,它使算法步骤显得直观、清晰、简明.其中程序框有哪几种基本图形?它们表示的功能分别如何? 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框 流程线 2.顺序结构是任何一个算法都离不开的基本逻辑结构,在一些算法中,有些步骤只有在一定条件下才会被执行,有些步骤在一定条件下会被重复执行,这需要我们对算法的逻辑结构作进一步探究.1.1.2-2 条件结构与循环结构在某些问题的算法中,有些步骤只有在一定条件下才会被执行,算法的流程因条件是否成立而变化.在算法的程序框图中,由若干个在一定条件下才会被执行的步骤组成的逻辑结构,称为条件结构,用程序框图可以表示为下面两种形式:你如何理解这两种程序框图的共性和个性? 判断“以任意给定的3个正实数为三条边边长的三角形是否存在”的算法步骤如何设计?第二步,判断a+b>c,b+c>a,c+a>b是否同时成立.若是,则存在这样的三角形;否则,不存在这样的三角形.第一步,输入三个正实数a,b,c.你能画出这个算法的程序框图吗? 在算法的程序框图中,由按照一定的条件反复执行的某些步骤组成的逻辑结构,称为循环结构,反复执行的步骤称为循环体,那么循环结构中一定包含条件结构吗? 某些循环结构用程序框图可以表示为: 这种循环结构称为直到型循环结构,你能指出直到型循环结构的特征吗? 在执行了一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环.还有一些循环结构用程序框图可以表示为:这种循环结构称为当型循环结构,你能指出当型循环结构的特征吗?在每次执行循环体前,对条件进行判断,如果条件满足,就执行循环体,否则终止循环.计算1+2+3+…+100的值可按如下过程进行:第1步,0+1=1.
第2步,1+2=3.
第3步,3+3=6.
第4步,6+4=10.
……
第100步,4950+100=5050. 我们用一个累加变量S表示每一步的计算结果,即把S+i的结果仍记为S,从而把第i步表示为S=S+i,其中S的初始值为0,i依次取1,2,…,100,通过重复操作,上述问题的算法如何设计? 第四步,判断i>100是否成立.若是,则输出S,结束算法;否则,返回第二步.第一步,令i=1,S=0.第二步,计算S+i,仍用S表示.第三步,计算i+1,仍用i表示.用直到型循环结构,上述算法的程序框图如何表示?用当型循环结构,上述算法的程序框图如何表示? 例1 设计一个求解一元二次方程ax2+bx+c=0的算法,并画出程序框图表示. 典例讲解算法分析:第一步,输入三个系数a,b,c.第二步,计算△=b2-4ac.第四步,判断△=0是否成立.若是,则输出 x1=x2=p,否则,计算x1=p+q,x2=p-q, 并输出x1,x2. 程序框图: 例2 某工厂2005年的年生产总值为200万元,技术革新后预计以后每年的年生产总值都比上一年增长5%.设计一个程序框图,输出预计年生产总值超过300万元的最早年份.第三步,判断所得的结果是否大于300. 若是,则输出该年的年份; 否则,返回第二步.第一步, 输入2005年的年生产总值.第二步,计算下一年的年生产总值.算法分析:(3)控制条件:当“a>300”时终止循环.(1)循环体:设a为某年的年生产总值,t为年生产总值的年增长量,n为年份,则t=0.05a,a=a+t,n=n+1.(2)初始值:n=2005,a=200.循环结构:程序框图:(3)条件结构和循环结构的程序框图各有两种形式,相互对立统一.条件结构和循环结构的基本特征:小结(1)程序框图中必须有两个起止框,穿插输入、输出框和处理框,一定有判断框.(2)循环结构中包含条件结构,条件结构中不含循环结构.课件20张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第三课时复习回顾 1.算法的基本逻辑结构有哪几种?用程序框图分别如何表示? 顺序结构条件结构循环结构 2.在学习上,我们要求对实际问题能用自然语言设计一个算法,再根据算法的逻辑结构画出程序框图,同时,还要能够正确阅读、理解程序框图所描述的算法的含义,这需要我们对程序框图的画法有进一步的理解和认识.程序框图的画法知识探究(一):多重条件结构的程序框图 解关于x的方程ax+b=0的算法步骤如何 设计?第三步,判断b是否为0.若是,则输出“方程的解为任意实数”;否则,输出“方程无实数解”.第一步,输入实数a,b. 该算法的程序框图如何表示? 思考3:你能画出求分段函数的值的程序框图吗?你能画出求分段函数
的值的程序框图吗?用“二分法”求方程 的近似解的算法如何设计? 知识探究(二):混合逻辑结构的程序框图第一步,令f(x)=x2-2,给定精确度d. 第二步,确定区间[a,b],满足f(a)·f(b)<0. 第四步,若f(a)·f(m)<0,则含零点的区间为[a,m];否则,含零点的区间为[m,b].将新得到的含零点的区间仍记为[a,b]. 第五步,判断[a,b]的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似解;否则,返回第三步. 该算法中哪几个步骤可以用顺序结构来表示?这个顺序结构的程序框图如何?该算法中第四步是什么逻辑结构?这个步骤用程序框图如何表示?该算法中哪几个步骤构成循环结构?这个循环结构用程序框图如何表示?根据上述分析,你能画出表示整个算法的程序框图吗?知识探究(三):程序框图的阅读与理解怎样理解该程序框图中包含的逻辑结构?该程序框图中的循环结构属于那种类型? 该程序框图反映的实际问题是什么?求12-22+32-42+…+992-1002的值. 典例讲解 例 画出求三个不同实数中的最大值的程序框图. 小结设计一个算法的程序框图的基本思路:第二步,确定每个算法步骤所包含的逻 辑结构,并用相应的程序框图表示.第一步,用自然语言表述算法步骤.第三步,将所有步骤的程序框图用流程 线连接起来,并加上两个终端框.课件19张PPT。1.2 基本算法语句 1.2.1 输入语句、输出语句和赋值语句复习回顾 1.算法的的基本逻辑结构有哪几种? 2.设计一个算法的程序框图的基本思路如何? 第二步,确定每个算法步骤所包含的逻 辑结构,并用相应的程序框图表示.第一步,用自然语言表述算法步骤.第三步,将所有步骤的程序框图用流程 线连接起来,并加上两个终端框. 3.计算机完成任何一项任务都需要算法,但是,用自然语言或程序框图表示的算法,计算机是无法“理解”的. 因此我们还需要将算法用计算机能够理解的程序设计语言来表示. 输入语句、输出语句、赋值语句一、输入语句和输出语句 在每个程序框图中,输入框与输出框是两个必要的程序框,我们用什么图形表示这个程序框?其功能作用如何?表示一个算法输入和输出的信息. 已知函数y=x3+3x2-24x+30,求自变量x对应的函数值的算法步骤如何设计?第一步,输入一个自变量x的值.第三步,输出y.第二步,计算y=x3+3x2-24x+30.该算法是什么逻辑结构?其程序框图如何?我们将该程序框图中第一个程序框省略,后四个程序框中的内容依次写成算法语句,就得到该算法的计算机程序: 这个程序由4个语句行组成,计算机按语句行排列的顺序依次执行程序中的语句,最后一行的END语句表示程序到此结束. 在这个程序中,第1行中的INPUT语句称为输入语句,其一般格式是:INPUT “提示内容”;变量INPUT “a,b,c=”;a,b,c在这个程序中,第3行中的PRINT语句称为输出语句,其一般格式是: PRINT “提示内容”;表达式PRINT “S=”;S或 PRINT “Sum=”;a+b二、赋值语句 在算法的程序框图中,处理框是一个常用的程序框,我们用什么图形表示这个程序框?其功能作用如何?赋值、计算. 在上述求函数值的程序中,第二行中的语句称为赋值语句,其一般格式是:变量=表达式考察给一个变量重复赋值的程序: A=10
A=A+15
PRINT A
END
那么,A的输出值是多少?25典例讲解 例1 写出计算一个学生语文、数学、英语三门课的平均成绩的算法、程序框图和程序. 算法分析:第一步,输入该学生数学、语文、英语三门 课的成绩. 第三步,输出y. 程序框图:PRINT “The average=”;(a+b+c)/3程序:INPUT “Chinese=”;aINPUT “Maths=”;bINPUT “English=”;cEND 例2 写出“交换两个变量A和B的值,并输出交换前后的值”的程序.INPUT “A,B=”;A,BPRINT A,Bx=AA=BB=xPRINT A,BEND小结2. 输入语句和输出语句中的“提示内容”有时可以省略.1.利用输入语句、输出语句和赋值语句可以写出任何一个顺序结构的算法程序.课件21张PPT。1.2 基本算法语句 1.2.2 条件语句复习回顾 1.输入语句、输出语句和赋值语句的一般格式分别是什么? 输入语句: INPUT “提示内容”;变量 输出语句: PRINT “提示内容”;表达式 赋值语句: 变量=表达式 2.对于顺序结构的算法或程序框图,我们可以利用输入语句、输出语句和赋值语句写出其计算机程序.对于条件结构的算法或程序框图,要转化为计算机能够理解的算法语言,我们必须进一步学习条件语句. 条件语句知识探究(一):条件语句(1) IF 条件 THEN
语句体
END IFIF 条件 THEN
语句体
END IF 当计算机执行上述语句时,首先对IF后的条件进行判断,如果(IF)条件符合,那么(THEN)执行语句体,否则执行END IF之后的语句.求实数x的绝对值有如下一个算法:
第一步,输入一个实数x.
第二步,判断x的符号.若x<0,则x=-x; 否则,x=x.
第三步,输出x.
该算法的程序框图如何表示?这个算法含有顺序结构和条件结构,你能写出这个算法对应的程序吗? ENDINPUT xIF x<0 THENx=-xEND IFPRINT x读下面的程序,你能说明它是一个什么问题的算法吗? INPUT “a,b=”;a,b
IF a>b THEN
x=a
a=b
b=x
END IF PRINT a,b
END 对实数a,b按从小到大排序. 知识探究(二):条件语句(2) IF 条件 THEN
语句体1
ELSE
语句体2
END IF你能理解这个算法语句的含义吗?IF 条件 THEN
语句体1
ELSE
语句体2
END IF当计算机执行上述语句时,首先对IF
后的条件进行判断,如果(IF)条件
符合,那么(THEN)执行语句体1,
否则(ELSE)执行语句体2.求实数x的绝对值又有如下一个算法: 第一步,输入一个实数x.
第二步,判断x的符号.若x≥0,则输出 x;否则,输出-x.
该算法的程序框图如何表示?你能写出这个算法对应的程序吗? ENDINPUT “x=”;xIF x>=0 THEN PRINT xELSEPRINT -xEND IF阅读下面的程序,你能说明它是一个什么问题的算法吗?INPUT “x=”;x
IF x>=1 THEN
y=x∧2+3*x
ELSE
y=x-4
END IF PRINT y
END 典例讲解 例1 将下列解一元二次方程ax2+bx+c=0的程序框图转化为程序.ENDINPUT “a,b,c=”;a,b,cd=b∧2-4*a*cIF d>=0 THENp= -b/(2*a)q=SQR(d)/(2*a)IF d=0 THENPRINT “x1=x2=”;pELSEPRINT “x1,x2=”;p+q,p-qEND IFELSEPRINT “No real root.”END IF 例2 编写程序,使任意输入的3个整数按从大到小的顺序输出.第四步,将b与c比较,并把小者赋给c,大者 赋给b.第一步,输入3个整数a,b,c.第二步,将a与b比较,并把小者赋给b,大者 赋给a.第三步,将a与c比较,并把小者赋给c,大者 赋给a.第五步,按顺序输出a,b,c.算法分析:INPUT a,b,cIF b>a THENt=aa=bb=tEND IFIF c>a THENt=aa=cc=tEND IFIF c>b THENt=bb=cc=tEND IFPRINT a,b,cEND小结2.编写含有多个条件结构的程序时,每个条件语句执行结束时都以END IF表示.1.条件语句有两种形式,应用时要根据实际问题适当选取.课件17张PPT。算法的基本逻辑结构1、顺序结构
2、条件结构
3、循环结构输入语句输出语句赋值语句条件语句INPUT “提示内容”;变量PRINT “提示内容”;变量变量=表达式IF 条件 THEN
语句A
ELSE
语句B
END IFIF 条件 THEN
语句
END IF基本算法语句1.2.3 循环语句 循环变量、循环体、循环终止条件循环结构三要素:直到(until)型循环结构DO
循环体
LOOP UNTIL 条件Until型循环语句DO
循环体
LOOP UNTIL 条件否至少执行一次循环体循环体满足条件?否是是当(while)型循环结构while型循环语句WHILE 条件
循环体
WENDWHILE 条件
循环体
WENDDO
循环体
LOOP UNTIL 条件WHILE 条件
循环体
WEND(否)(是)例1.设计一个计算1+2+3+…+100的一个程序框图.While型WHILE 条件
循环体
WENDWHILE
WENDi<100i=i+1
S=S+ii=0
S=0PRINT S
END这个程序在解决什么问题?Until型例1.设计一个计算1+2+3+…+100的一个程序框图.能否写出until型的?DO
循环体
LOOP UNTIL 条件DO
LOOP UNTILS=S+i
i=i+1i>100i=1
S=0PRINT S
END例2、已知函数y=x3+3x2-24。设计一算法,使得连续输入自变量的11取值,输出相应函数值。结束输出yn=1开始n= n+ 1n>11?否是输入xy=x3+3x2-24DO
INPUT x
PRINT x^3+3*x^2-24
n=n+1
LOOP UNTIL n>11n=1END注:引入计数变量n例2、已知函数y=x3+3x2-24。设计一算法,使得连续输入自变量的11取值,输出相应函数值。另解解4:INPUT a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11
y1=a1^3+3*a1^2-24
….
PRINT y1,y2,…..y11
END另解练习1:根据下面的程序语句画出对应的程序框图,并分析程序的结果。答案:S=57-1(3)i=1
S=0
m=1
DO
m=m*i
S=S+m
i=i+1
LOOP UNTIL i>10
PRINT S
END答案:4037913练习2:课本P32-1、2DO
r=n MOD i
i =i+1
LOOP UNTIL i>n-1 OR r=0 IF r=0 THEN
PRINT “n不是质数”
ELSE
PRINT “n是质数”
END IFINPUT “n”;n
i=2END课本P32-1探究交流: 编写一个程序,输入正整数n,计算它的阶乘n!(n!=n×(n-1) ×…×3×2×1)WHILE型程序:UNTIL型:课本P32-1开始m=(a+b)/2a=mb=mf(a)f(m)<0?|a-b|<d或f(m)=0?结束输出所求的近似根m是否是输入d,a,b例3、设计一个算法,求关于x的方程x2-2=0的近似解。算法步骤:第一步:令f(x)=x2-2,给定精确度d第三步,取m=(a+b)/2。第五步:判断|a-b|
否成立。若是,则[a,m]为含零点区间,否则,[m,b]为含零点区间。将新得到的含零点区间记为[a,b]。第二步:确定区间[a,b],满足
f(a) ·f(b)<0IF g*f<0 THEN
b=m
ELSE
a=m
END IF g=a^2-2
f=m^2-2DO
m=(a+b)/2LOOP UNTIL ABS(a-b)END课件18张PPT。算法的基本逻辑结构1、顺序结构
2、条件结构
3、循环结构输入语句输出语句赋值语句条件语句INPUT “提示内容”;变量PRINT “提示内容”;表达式变量=表达式IF 条件 THEN
语句A
ELSE
语句B
END IFIF 条件 THEN
语句
END IF基本算法语句DO
循环体
LOOP UNTIL 条件WHILE 条件
循环体
WEND(否)(是)1.3.1 算法案例----辗转相除术与更相减损术问:你会求18与30的最大公约数吗?3 518 30239 15∴18和30的最大公约数是2×3=6.问:能否用上面通过取公约数求最大公约数的办法求 8251与6105 的最大公约数?1.辗转相除法例.求两个正数 8251和6105 的最大公约数。解:8251=6105×1+2146;6105=2146×2+1813;
2146=1813×1+333;
1813=333×5+148;
333=148×2+37;
148=37×4+0.∴37是 的最大公约数8251与6105∴8251与6105的公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,
∴ 8251与6105的最大公约数也是6105与2146的最大公约数。8251=6105(欧几里德算法)练习1:利用辗转相除法求两数4081与20723的最大公约数. 所以,53 是 4081 和 20723 的最大公约数。解:20723=4081×5+318;
4081=318×12+265;
318=265×1+53;
265=53×5+0.
问:从上面两个例子可否看出计算的规律是什么? 1:用大数除以小数2:除数变成被除数,余数变成除数3:重复1,直到余数为0辗转相除法问:辗转相除法中的关键步骤是哪种逻辑结构?循环结构问: 给定两个正整数m,n(m>n), 你能为辗转相除法编写一个计算机程序吗?算法分析:m = n × q + r辗转相除法1:给定两个正整数m,n2:计算m除以n所得的余数r.3:m=n,n=r.4:若r=0,则m,n的最大公约数等于n;否则,返回第二步.程序框图:算法分析:1:给定两个正整数m,n(m>n)2:计算 m 除以 n 所得的余数r.3:若r=0,则m,n的最大公约数等于n;否则,m=n,n=r,返回第二步.辗转相除法程序:程序框图:INPUT m,n
DO
r=m MOD n
m=n
n=r
LOOP UNTIL r=0
PRINT m
END辗转相除法直到型程序:问:你能用当型循环结构构造法,求两个正数的最大公约数吗?试写出算法步骤、程序框图和程序。INPUT m,n
DO
r=m MOD n
m=n
n=r
LOOP UNTIL r=0
PRINT m
END辗转相除法WHILE r<>0
m=n
n=r
r=m MOD n
WEND
PRINT m
ENDr=m MOD nINPUT m,n当型循环结构2.更相减损术算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。翻译:
第一步:任意给出两个正数,判断它们是否都是偶数。若是,用2约简;若不是,执行第二步。第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。例.求两个正数 8251和6105 的最大公约数。更相减损术解:因为8251,6105都不是偶数,把两数大数减小数,辗转相减:8251-6105=2146
6105-2146=3959
3959-2146=1813
2146-1813=333
1813-333=1480
1480-333=1147
1147-333=814814-333=481
481-333=148
333-148=185
185-148=37
148-37=111
111-37=74
74-37=37∴37是8251和6105的最大公约数练习:用更相减损术求两个正数84与72的最大公约数。 答案:12问:把更相减损术与辗转相除法比较,你有什么发现?3.辗转相除法与更相减损术的比较: 1)都是求最大公约数的方法。
计算上辗转相除法以除法为主,更相减损术以减法为主;计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?第一步,给定两个正整数m,n(m>n). 第二步,计算m-n所得的差k. 第三步,比较n与k的大小,其中大者用m表 示,小者用n表示. 第四步,若m=n,则m,n的最大公约数等于 m;否则,返回第二步. 该算法的程序框图如何表示?该程序框图对应的程序如何表述?INPUT m,nWHILE m<>nk=m-nIF n>k THENm=nn=kELSEm=kEND IFWENDPRINT mEND课件15张PPT。1.3.2 秦九韶算法例:设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7
当x=5时的值的算法,并写出程序.?问:上面算法中,共用了多少次乘法和加法?有没有稍微高效的算法?分析:可以利用前面的计算结果,以减少计算量即先计算x2,然后依次计算的值.例:求f(x)=2x5-5x4-4x3+3x2-6x+7在x=5时的值。?问:上面算法中,共用了多少次乘法和加法??问:能否有更好的算法,来解决任意多项式
的求值问题?f(x)=2x5-5x4-4x3+3x2-6x+7
=(2x4-5x3-4x2+3x-6)x+7
=((2x3-5x2-4x+3)x-6)x+7
=(((2x2-5x-4)x+3)x-6)x+7
=((((2x-5)x-4)x+3)x-6)x+7
v5=v4x+7=534×5+7=2677
v4=v3x-6=108×5-6=534
v3=v2x+3=21×5+3=108
v2=v1x-4=5×5-4=21
v1=v0.x-5=2×5-5=5
v0=2所以,当x=5时,多项式的值是2677.例1:求f(x)=2x5-5x4-4x3+3x2-6x+7在x=5时的值。《数书九章》——秦九韶算法V1V2例1:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值.解: f(x)=((((2x-5)x-4)x+3)x-6)x+7v5=v4x+7=534×5+7=2677
v4=v3x-6=108×5-6=534
v3=v2x+3=21×5+3=108
v2=v1x-4=5×5-4=21
v1=v0x-5=2×5-5=5
v0=2所以,当x=5时,多项式的值是2677.然后由内向外逐层计算一次多项式的值,即这是怎样的一种改写方式?最后的结果是什么?《数书九章》——秦九韶算法设f(x)是一个n次的多项式对该多项式按下面的方式进行改写:问:当知道了x的值后该如何求多项式的值?f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0.然后由内向外逐层计算一次多项式的值,f(x)=(…(anx+an-1)x+an-2)x+…+a1)x+a0.v1=anx+an-1,v2=v1x+an-2,v3=v2x+an-3vn=vn-1x+a0.……?问:当x=x0(x是任意实数)时的值,需要多少次乘法运算,多少次加法运算?《数书九章》——秦九韶算法f(x)=(…((anx+an-1)x+an-2)x+…+a1)x+a0.练习:利用秦九韶算法分别计算f(x)=8x7+5x6+3x4+2x+1在x=2与x=-1的值,并判断多项式f(x)在区间[-1,2]上有没有零点。解:f(x)=8x7+5x6+3x4+2x+1=8x7+5x6+0·x5+3x4+0·x3+0·x2+2x+1=((((((8x+5)x+0)x+3)x+0)x+0)x+2)x+1V0=8
V1=8×2+5=21
V2=21×2+0=42
V3=42×2+3=87V4=87×2+0=174 V5=174×2+0=348
V6=348×2+2=698
V7=698×2+1=1397∴∴ a7=8,a6=5,a5=0,a4=3,a3=0,a2=0,a1=2,a0=1所以,x=2时f(x)=1397练习:利用秦九韶算法分别计算f(x)=8x7+5x6+3x4+2x+1在x=2与x=-1的值,并判断多项式f(x)在区间[-1,2]上有没有零点。所以,x=2时f(x)=1397……所以当x=-1时,f(x)=-1因为f(-1)f(2)<0,所以在区间[-1,2]有零点。注意:n次多项式有n+1项,因此缺少哪一项应将其系数补0.特点:秦九韶算法是求一元多项式的值的一种方法.
把求一个n次多项式的值转化为求n个一次多项式的值,通过这种转化,把运算的次数由至多n(n+1)/2次乘法运算和n次加法运算,减少为n次乘法运算和n次加法运算,大大提高了运算效率.《数书九章》——秦九韶算法(K=1,2,3,…,n)《数书九章》——秦九韶算法问:怎么用程序语言表示秦九韶算法呢?算法步骤:1:输入多项式系数n,最高次项的系数an和x的值.2:将v 的值初始化为an,将i的值初始化为n-1.3:输入i次项的系数ai .4: v=vx+ai,i=i-1.5:判断i是否大于0或等于0.若是,则返回第三步;否则,输出多项式的值v.V=an算法步骤:1:输入多项式系数n,最高次项的系数an和x的值.2:将v 的值初始化为an,将i的值初始化为n-1.3:输入i次项的系数ai .4: v=vx+ai,i=i-1.5:判断i是否大于0或等于0.若是,则返回第三步;否则,输出多项式的值v.开始输入n,an,x 的值i>=0?i=i-1是i=n-1v=vx+ai输入ai程序框图:程序框图:程序:INPUT “n=“;n
INPUT “an=”;a
INPUT “x=“;x
v=a
i=n-1
WHILE i>=0
PRINT “i=“;i
INPUT “ai=”;a
v=v*x+a
i=i-1
WEND
PRINT v
END阅读下列程序,说明它解决的实际问题是什么?INPUT “x=”;a
n=0
y=0
WHLE n<5
y=y+(n+1)*a∧n
n=n+1
WEND
PRINT y
END课件23张PPT。1.3.3 进位制一般的数值计算十进制半斤=八两 十六进制时间和角度六十进制电子计算机二进制问:什么是进位制?不同的进位制之间又有什么联系呢?进位制:人们为了计数和运算的方便而约定的一种记数系统。约定满二进一,就是二进制;
满十进一,就是十进制;
满十六进一,就是十六进制;……。 “满k进一”,就是k进制。k进制的基数就是k。二进制八进制十进制十六进制0,10,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(分别对应10~15)0,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9问:什么是k进制的基数?102816可使用数字符号的个数称为基数.基数都是大于1的整数.注:为了区分不同的进位制,常在数字的右下脚标明基数. 如111001(2)表示二进制数,34(5)表示5进制数.十进制数一般不标注基数.(4)C7A16(16)问:十进制有何特点? 十进制数3721有何意义?十进制数3721中的3表示3个千(103),7表示7个百(102)2表示2个十(101)1表示1个一(100)∴3721=3×103+7×102+2×101+1×100.满十进一每个数字都小于10首位不为零102中“10”即十进制的基数10十进制数 3721=3×103+7×102+2×101+1×100.1011(2)3421(5)=1×23+0×22+1×21+1×20=3×53+4×52+2×51+1×50C7A16(16)=12×164+7×163+10×162+1×161+6×160.∴一般k进制数的整数anan-1an-2……a2a1a0(k)=an×kn + an-1×kn-1 +… +a1×k1 + a0×k0 2)anan-1…a1a0(k) (0 =an×kn+an-1×kn-1+…+a1×k1+a0×k0 .2) 按照十进制数的运算规则计算出结果.C7A16(16)=12×164+7×163+10×162+1×161+6×160.=8176863421(5)=3×53+4×52+2×51+1×50=4861011(2)=1×23+0×22+1×21+1×20=11问:如何将十进制数转化为其它进制数?例:把89化为二进制的数.89=an×2n+an-1×2n-1+…+a1×21+a0×20 .89=64+16+8+1
=1×26+0×25+1×24+1×23+0×22+0×21+1×20 =1011001(2)89=44×2+1, 44=22×2+0, 22=11×2+0, 11=5×2+1, 5=2×2+1, 2=1×2+0, 1=0×2+1, 89=64+16+8+1
=1×26+0×25+1×24+1×23+0×22+0×21+1×20 =1011001(2) =44×2+1,
=(22×2+0)×2+1
=((11×2+0)×2+0)×2+1
=(((5×2+1)×2+0)×2+0)×2+1
=((((2×2+1)×2+1)×2+0)× 2+0)×2+1
=(((((1×2)+0)×2+1)×2+1)×2+0)× 2+0)×2+1=((((((0×2+1)×2)+0)×2+1)×2+1)×2+0)× 2+0)×2+1可以用2连续去除89或所得商(一直到商为0为止),然后取余数
---除2取余法.44 1例:把89化为二进制的数.除2取余法:22 011 05 12 11 00 1把算式中各步所得的余数从下到上排列,得到89=1011001(2).这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.练习:把89化为五进制的数.解:以5作为除数,相应的除法算式为:17 43 20 3∴ 89=324(5).问:你会把三进制数10221(3)化为二进制数吗?解:第一步:先把三进制数化为十进制数:
10221(3)=1×34+0×33+2×32+2×31+1×30
=81+18+6+1=106. 第二步:再把十进制数化为二进制数: 106=1101010(2).进位制的概念及表示方法;
各种进位制之间的相互转化.anan-1…a1a0(k)
=an×kn+an-1×kn-1+…+a1×k1+a0×k0 .=an×kn + an-1×kn-1 +… +a1×k1 + a0×k0 问:怎样将k进制数转化为十进制数?anan-1an-2……a2a1a0(k)=an×kn + an-1×kn-1 +… +a1×k1 + a0×k0 设ai 为右数第i位数
i=1 ai
S=S+ai*k^(i-1)
i=i+1循环体a(k)=anan-1an-2……a2a1a0(k)=an×kn + an-1×kn-1 +… +a1×k1 + a0×k0 1:输入a,k,n
2:S=0,i=1
3:找到ai ,S=S+ai×ki-1,i=i+1
4:判断i>n是否成立,若是,则执行 第5步;否则,返回第三步。
5:输出S的值。算法步骤:k进制数 十进制数是否把k进制数化为十进制数b.INPUT “a,k,n=”;a,k,n
S=0
i=1
t = a MOD 10
DO
S=S+t*k^(i-1)
a=a10
t=a MOD10
i=i+1
LOOP UNTIL i>n
PRINT S
END十进制数a转化为k进制数bINPUT “a,k=”;a,k
S=0
i=0
DO
q=ak
r=a MOD k
S=S+r*10^i
i=i+1
a=q
LOOP UNTIL q=0
PRINT S
END “除k 取余法”例:韩信点兵
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”n=2
DO
r1=n MOD 3
r2= n MOD 5
r3=n MOD 7
n=n+1
LOOP UNTIL r1=2 AND r2=3 AND r3=2
PRINT n
END练习:李白买酒
“无事街上走,提壶去买酒.遇店加一倍,见花喝一斗.三遇店和花,喝光壶中酒”。试问壶中原有多少酒? 课件25张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第三课时复习回顾 1.算法的基本逻辑结构有哪几种?用程序框图分别如何表示? 顺序结构条件结构循环结构直到型循环结构1+2+3+…+100的算法程序框图1+2+3+…+100的算法程序框图当型循环结构 例 某工厂2005年的年生产总值为200万元,技术革新后预计以后每年的年生产总值都比上一年增长5%.设计一个程序框图,输出预计年生产总值超过300万元的最早年份.第三步,判断所得的结果是否大于300. 若是,则输出该年的年份; 否则,返回第二步.第一步, 输入2005年的年生产总值.第二步,计算下一年的年生产总值.算法分析:程序框图: 在学习上,我们要求对实际问题能用自然语言设计一个算法,再根据算法的逻辑结构画出程序框图,同时,还要能够正确阅读、理解程序框图所描述的算法的含义,这需要我们对程序框图的画法有进一步的理解和认识.知识探究(一):多重条件结构的程序框图 解关于x的方程ax+b=0的算法步骤如何 设计?第三步,判断b是否为0.若是,则输出“方程的解为任意实数”;否则,输出“方程无实数解”.第一步,输入实数a,b. 该算法的程序框图如何表示? 思考3:你能画出求分段函数的值的程序框图吗?你能画出求分段函数
的值的程序框图吗? 设计一个求解一元二次方程ax2+bx+c=0的算法,并画出程序框图表示. 算法分析:第一步,输入三个系数a,b,c.第二步,计算△=b2-4ac.第四步,判断△=0是否成立.若是,则输出 x1=x2=p,否则,计算x1=p+q,x2=p-q, 并输出x1,x2. 程序框图:用“二分法”求方程 的近似解的算法如何设计? 知识探究(二):混合逻辑结构的程序框图第一步,令f(x)=x2-2,给定精确度d. 第二步,确定区间[a,b],满足f(a)·f(b)<0. 第四步,若f(a)·f(m)<0,则含零点的区间为[a,m];否则,含零点的区间为[m,b].将新得到的含零点的区间仍记为[a,b]. 第五步,判断[a,b]的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似解;否则,返回第三步. 该算法中哪几个步骤可以用顺序结构来表示?这个顺序结构的程序框图如何?该算法中第四步是什么逻辑结构?这个步骤用程序框图如何表示?该算法中哪几个步骤构成循环结构?这个循环结构用程序框图如何表示?根据上述分析,你能画出表示整个算法的程序框图吗?知识探究(三):程序框图的阅读与理解怎样理解该程序框图中包含的逻辑结构?该程序框图中的循环结构属于那种类型? 该程序框图反映的实际问题是什么?求12-22+32-42+…+992-1002的值. 画出求三个不同实数中的最大值的程序框图. 小结设计一个算法的程序框图的基本思路:第二步,确定每个算法步骤所包含的逻 辑结构,并用相应的程序框图表示.第一步,用自然语言表述算法步骤.第三步,将所有步骤的程序框图用流程 线连接起来,并加上两个终端框.课件24张PPT。问题提出1.用计算机解二元一次方程组 .exe2.在上述解二元一次方程组的过程中,计算机是按照一定的指令来工作的,其中最基础的数学理论就是算法,本节课我们就来学习: 1.1.1 算法的概念问1:在初中,对于解二元一次方程组你学过哪些方法? 加减消元法和代入消元法 ①+②×2,得 5x=1 . ③ ②-①×2,得 5y=3 . ④ 第一步,第二步,第三步,第四步,第五步, 根据上述分析,用加减消元法解二元一次方程组,可以分为五个步骤进行,这五个步骤就构成了解二元一次方程组的一个“算法”.我们再根据这一算法编制计算机程序,就可以让计算机来解二元一次方程组.一般地,算法是由按照一定规则解决某一类问题的基本步骤组成的.问4:
(1)这些步骤的个数是有限的还是无限 的?(2)每个步骤是否有明确的计算任务?问5:有人对哥德巴赫猜想“任何大于4的偶数都能写成两个质数之和”设计了如下操作步骤:第一步,检验6=3+3,
第二步,检验8=3+5,
第三步,检验10=5+5,
……
利用计算机无穷地进行下去!
请问:这是一个算法吗?问6:根据上述分析,你能归纳出算法的概念吗? 在数学中,按照一定规则解决某一类问题的明确和有限的步骤称为算法. 算法的基本特征:明确性:算法对每一个步骤都有确切的的规定,即每一步对于利用算法解决问题的人或计算机来说都是可读的、可执行的,而不需要计算者临时动脑筋. 有效性:算法的每一个步骤都能够通过基本运算有效地进行,并得到确定的结果;对于相同的输入,无论谁执行算法,都能够得到相同的最终结果.有限性:算法应由有限步组成,至少对某些输入,算法应在有限多步内结束,并给出计算结果.算法的步骤设计:例1:如果让计算机判断7是否为质数,如何设计算法步骤? 第一步,用2除7,得到余数1,所以2不能整除7.第四步,用5除7,得到余数2,所以5不能整除7. 第五步,用6除7,得到余数1,所以6不能整除7. 第二步,用3除7,得到余数1,所以3不能整除7.第三步,用4除7,得到余数3,所以4不能整除7. 因此,7是质数.例2:如果让计算机判断35是否为质数,如何设计算法步骤? 第一步,用2除35,得到余数1,所以2不能整除35.第二步,用3除35,得到余数2,所以3不能整除35.第三步,用4除35,得到余数3,所以4不能整除35. 第四步,用5除35,得到余数0,所以5能整除35.因此,35不是质数.例3:整数89是否为质数?如果让计算机判断89是否为质数,按照上述算法需要设计多少个步骤? 第一步,用2除89,得到余数1,所以2不能整除89.第二步,用3除89,得到余数2,所以3不能整除89.第三步,用4除89,得到余数1,所以4不能整除89. …… …… …… ……
第八十七步,用88除89,得到余数1,所以88不能 整除89.因此,89是质数.用2~88逐一去除89求余数,需要87个步骤,这些步骤基本是重复操作(1)用i表示2~88中的任意一个整数,并从2开始取数;(2)用i除89,得到余数r. 若r=0,则89不是质数;若r≠0,将i用i+1替代,再执行同样的操作; (3)这个操作一直进行到i取88为止.你能按照这个思路,设计一个“判断89是否为质数”的算法步骤吗?那么有没有方法可以减少算法的步骤呢?用i除89,得到余数r; 令i=2; 若r=0,则89不是质数,结束算法;若r≠0,否则,将i的值增加1,仍用i表示;判断“i>88”是否成立?若是,则89是质数,结束算法;否则,返回第二步. 第一步, 第四步, 第三步, 第二步, 算法设计:一般地,判断一个大于2的整数是否为质数的算法步骤如何设计? 第一步,给定一个大于2的整数n; 第二步,令i=2; 第三步,用i除n,得到余数r; 第四步,判断“r=0”是否成立.若是,则n 不是质数,结束算法;否则,将i的值增加1,仍用i表示; 第五步,判断“i>(n-1)”是否成立,若是, 则n是质数,结束算法;否则,返回 第三步. 第一步,取函数 ,给定精确度d. 第二步,确定区间[a,b],满足f(a)·f(b)<0. 第五步,判断[a,b]的长度是否小于d或f(m)是否等于0. 若是,则m是方程的近似解;否则,返回第三步.第四步,若f(a)·f(m)<0,则含零点的区间 为[a,m],否则,含零点的区间为[m,b]. 将新得到的含零点的区间仍记为[a,b];练习1. 任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.算法步骤:第一步:给定一个正实数r;
第二步:计算以r为半径的圆的面积S=πr2;
第三步:得到圆的面积S.练习2. 任意给定一个大于 1 的正整数 n ,设计一个算法求出 n 的所有因数.算法步骤: 第一步, 依次以2 ~(n – 1)为除数除 n ,检查余数是否为0;若是,则是 n 的因数;若不是,则不是 n 的因数; 第二步, 在 n 的因数中加入 1 和 n; 第三步, 输出n的所有因数.小结:算法的特征是什么?明确性有效性有限性算法的概念:算法通常指可以用来解决的某
一类问题的步骤或程序,这些步骤或程序必须是明
确的和有效的,而且能够在有限步之内完成的.作业:
P5练习:1,2.