课件23张PPT。 第一章 算法初步
1.1 算法与程序框图
1.1.1 算法的概念算法的概念知识探究(一):算法的概念思考1:在初中,对于解二元一次方程组你学过哪些方法? 加减消元法和代入消元法思考2:用加减消元法解二元一次方程组 的 具体步骤是什么? ①+②×2,得 5x=1 . ③ 解③,得 . ②-①×2,得 5y=3 . ④ 解④,得 .第一步,第二步,第三步,第四步,第五步, 得到方程组的解为 . 第一步,①× - ②× ,得
. ③第二步,解③ ,得 . 第三步,②× - ①× ,得
. ④第四步,解④ ,得 . 思考4:根据上述分析,用加减消元法解二元一次方程组,可以分为五个步骤进行,这五个步骤就构成了解二元一次方程组的一个“算法”.我们再根据这一算法编制计算机程序,就可以让计算机来解二元一次方程组.那么解二元一次方程组的算法包括哪些内容? 思考5:一般地,算法是由按照一定规则解决某一类问题的基本步骤组成的.你认为:
(1)这些步骤的个数是有限的还是无限 的?(2)每个步骤是否有明确的计算任务?思考6:有人对哥德巴赫猜想“任何大于4的偶数都能写成两个质数之和”设计了如下操作步骤:第一步,检验6=3+3,
第二步,检验8=3+5,
第三步,检验10=5+5,
……
利用计算机无穷地进行下去!
请问:这是一个算法吗?思考7:根据上述分析,你能归纳出算法的概念吗? 在数学中,按照一定规则解决某一类问题的明确和有限的步骤称为算法. 算法过程: 要能一步一步执行,每一步执行的操作,
必须确切,不能含混不清楚,而且经过有限步后能得
出结果。具有下面几个特点:归纳与总结算法的含义:
通常指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。算法的三种表示形式: 用自然语言表示、用程序框图表
示、用程序表示。算法的特征 有穷性: 一个算法应包含有限的操作步骤而不能是
无限的。 确定性: 算法中每一个步骤应当是确定的,而不能应当
是含糊的、模棱两可的。有效性: 算法中每一个步骤应当能有效地执行,并得到
确定的结果。一般性: 一个算法必须解决一类问题。 知识探究(二):算法的步骤设计思考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是质数.思考4:用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用i+1替代; 判断“i>88”是否成立?若是,则89是质数,结束算法;否则,返回第二步. 第一步, 第四步, 第三步, 第二步, 算法设计:思考5:一般地,判断一个大于2的整数是否为质数的算法步骤如何设计? 第一步,给定一个大于2的整数n; 第二步,令i=2; 第三步,用i除n,得到余数r; 第四步,判断“r=0”是否成立.若是,则n 不是质数,结束算法;否则,将i 的值增加1,仍用i表示; 第五步,判断“i>(n-1)”是否成立,若是, 则n是质数,结束算法;否则,返回 第三步. 理论迁移 例 设函数f(x)的图象是一条连续不断的曲线,写出用“二分法”求方程 f(x)=0的一个近似解的算法. 第一步,取函数f(x),给定精确度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];对于方程 ,给定d=0.005.小结作业 算法是建立在解法基础上的操作过程,算法不一定要有运算结果,问题答案可以由计算机解决.设计一个解决某类问题的算法的核心内容是设计算法的步骤,它没有一个固定的模式,但有以下几个基本要求: (1)符合运算规则,计算机能操作;(2)每个步骤都有一个明确的计算任务;(4)步骤个数尽可能少;(5)每个步骤的语言描述要准确、简明.(3)对重复操作步骤作返回处理;作业:
P5练习:1,2.课件27张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第二课时问题提出 1.用程序框、流程线及文字说明来表示算法的图形称为程序框图,它使算法步骤显得直观、清晰、简明.其中程序框有哪几种基本图形?它们表示的功能分别如何? 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框 流程线 2.顺序结构是任何一个算法都离不开的基本逻辑结构,在一些算法中,有些步骤只有在一定条件下才会被执行,有些步骤在一定条件下会被重复执行,这需要我们对算法的逻辑结构作进一步探究.条件结构与循环结构知识探究(一):算法的条件结构思考1:在某些问题的算法中,有些步骤只有在一定条件下才会被执行,算法的流程因条件是否成立而变化.在算法的程序框图中,由若干个在一定条件下才会被执行的步骤组成的逻辑结构,称为条件结构,用程序框图可以表示为下面两种形式:你如何理解这两种程序框图的共性和个性? 思考2:判断“以任意给定的3个正实数为三条边边长的三角形是否存在”的算法步骤如何设计?第二步,判断a+b>c,b+c>a,c+a>b是否同时成立.若是,则存在这样的三角形;否则,不存在这样的三角形.第一步,输入三个正实数a,b,c.思考3:你能画出这个算法的程序框图吗? 例1 设计一个求解一元二次方程ax2+bx+c=0的算法,并画出程序框图表示. 理论迁移算法分析:第一步,输入三个系数a,b,c.第二步,计算△=b2-4ac.第三步,判断△≥0是否成立.若是,则计 算 ;否则,输出“方程没有 实数根”,结束算法.第四步,判断△=0是否成立.若是,则输出 x1=x2=p,否则,计算x1=p+q,x2=p-q, 并输出x1,x2. 程序框图:知识探究(二):算法的循环结构思考1:在算法的程序框图中,由按照一定的条件反复执行的某些步骤组成的逻辑结构,称为循环结构,反复执行的步骤称为循环体,那么循环结构中一定包含条件结构吗? 思考2:某些循环结构用程序框图可以表示为: 这种循环结构称为直到型循环结构,你能指出直到型循环结构的特征吗? 在执行了一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环.思考3:还有一些循环结构用程序框图可以表示为:这种循环结构称为当型循环结构,你能指出当型循环结构的特征吗?在每次执行循环体前,对条件进行判断,如果条件满足,就执行循环体,否则终止循环.思考4:计算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表示.思考5:用直到型循环结构,上述算法的程序框图如何表示?思考6:用当型循环结构,上述算法的程序框图如何表示?练习巩固1、设计一算法,求积:1×2×3×…×100,画出流程图思考:该流程图与前面的例中求和的流程图有何不同? 例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.循环结构:程序框图:2、设计一算法输出1~1000以内能被3整除的整数算法:S1:确定i的初始值为0;S2:判断i是否等于1000,若是则程序结束,否则进入S3;S3:使i增加1,判断i是否能被3整除,若能输出i,并返回S2;否则直接返回S2理论迁移 练习 画出求三个不同实数中的最大值的程序框图. 第二步,令i=1 第三步,用i除n,得到余数r 第四步,判断“r=0”是否成立。若是,则i是n的因数;否则i不是n的因数。 第六步,判断“i>n”是否成立。若是,输出因数,结束算法;否则,返回第三步。第一步,给定大于1的正整数n作业讲评:任意给定一个大于1的正整数n,试设计一个算法求出n的所在因数.算法:第五步,将i的值增加1,仍用i表示。开始输入ni=1求n除以i的余数ri=i+1i≥n?是否i是n的因数结束是r=0?用程序框图来表示算法,常有三种不同的基本逻辑结构:否顺序结构条件结构直到型循环结构(3)条件结构和循环结构的程序框图各有两种形式,相互对立统一.条件结构和循环结构的基本特征:小结作业(1)程序框图中必须有两个起止框,穿插输入、输出框和处理框,一定有判断框.(2)循环结构中包含条件结构,条件结构中不含循环结构.作业:
P20习题1.1A组:2,3.课件16张PPT。1.1.2 程序框图与算法 的基本逻辑结构 第一课时问题提出1.算法的含义是什么? 在数学中,按照一定规则解决某一类问题的明确和有限的步骤称为算法. 2.算法是由一系列明确和有限的计算步骤组成的,我们可以用自然语言表述一个算法,但往往过程复杂,缺乏简洁性,因此,我们有必要探究使算法表达得更加直观、准确的方法,这个想法可以通过程序框图来实现.程序框图与顺序结构思考2:我们将上述算法用右边的图形表示:思考1:“判断整数n(n>2)是否为质数”的算法步骤如何?第一步,给定一个大于2的整数n第二步,令i=2第三步,用i除n,得到余数r第四步,判断“r=0”是否成立.若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示第五步,判断“i>(n-1)”是否成立,若是,则n是质数,结束算法;否则,返回第三步 知识探究一:算法的程序框图上述表示算法的图形称为算法的程序框图又称流程图,其中的多边形叫做程序框,带方向箭头的线叫做流程线,你能指出程序框图的含义吗? 用程序框、流程线及文字说明来表示算法的图形. 思考3:在上述程序框图中,有4种程序框,2种流程线,它们分别有何特定的名称和功能? 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框 流程线 表示一个算法的起始和结束 表示一个算法输入和输出的信息 赋值、计算 判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N” 连接程序框,表示算法步骤的执行顺序 思考4:在逻辑结构上,“判断整数n(n>2)是否为质数”的程序框图由几部分组成?知识探究(二):算法的顺序结构思考1:任何一个算法各步骤之间都有明确的顺序性,在算法的程序框图中,由若干个依次执行的步骤组成的逻辑结构,称为顺序结构,用程序框图可以表示为:思考2:若一个三角形的三条边长分别为a,b,c,令 ,则三角形的面积
.你能利用这个公式设计一个计算三角形面积的算法步骤吗?第一步,输入三角形三条边的边长 a,b,c. 第二步,计算 . 第三步,计算 .第四步,输出S. 思考3:上述算法的程序框图如何表示? 例1 一个笼子里装有鸡和兔共m只,且鸡和兔共n只脚,设计一个计算鸡和兔各有多少只的算法,并画出程序框图表示.理论迁移算法分析: 第一步,输入m,n.第二步,计算鸡的只数 .第三步,计算兔的只数y=m-x.第四步,输出x,y.程序框图: 例2 已知下图是“求一个正奇数的平方加5的值”的程序框图,若输出的数是30,求输入的数n的值.顺序结构的程序框图的基本特征:小结作业(2)各程序框从上到下用流程线依次连接.(1)必须有两个起止框,穿插输入、输出框和处理框,没有判断框.(3)处理框按计算机执行顺序沿流程线依次排列.作业:
P20习题1.1B组:1.课件13张PPT。输入、输出、赋值语句 算法语句第一课时常用的程序设计语言:BASIC,C/C++, Delphi ,VB、ASP、Java等等。 算法的三种基本逻辑结构:顺序结构,条件结构和循环结构。各种程序语言都包含了下列基本的算法语句:计算机运行程序语句的基本顺序:复习引入算法:第二步:计算 的值;框图:例1.用描点法作函数 的图象时,需要求出
自变量和函数的一组对应值,编写程序,分别计算当x=-5,
-4,-3,-2,-1,0,1,2,3,4,5时的函数值。第一步:输入x的值;第三步:输出x,y的值。程序:新课讲解例1.用描点法作函数 的图象时,需要求出
自变量和函数的一组对应值,编写程序,分别计算当x=-5,
-4,-3,-2,-1,0,1,2,3,4,5时的函数值。程序:输入语句:输出语句:赋值语句:新课讲解BASIC语言中的常用运算符号新课讲解例2.编写程序,计算一个学生数学、语文、英语三门课的平均成绩。算法:第一步:分别输入三科的成绩a,b,c;第二步:计算average=(a+b+c)/3;第三步:输出三科平均分。框图:程序:INPUT “Maths=”;aINPUT “Chinese=”;bINPUT “English=”;caverage=(a+b+c)/3PRINT “The average=”;averageENDINPUT “Maths, Chinese, English=”;a,b,c程序2:PRINT “The average=”;(a+b+c)/3END新课讲解例3.分析下列程序,考虑输出的结果是什么?程序2: A=10
A=A+15
PRINT A
END程序1: a=1
x=a+1
PRINT x
END程序3: a=1
b=3
PRINT “a+b=”;a+b
END 答: 2答: 25答: a+b=4新课讲解例4.分析下列程序,判断运行的结果。a=2
b=3
c=a+b
b=a+c-b
PRINT “a=,b=,c=”;a,b,c
END(1)(2)INPUT A
INPUT B
PRINT A,B
x=A
A=B
B=x
PRINT A,B
END新课讲解例5.下面输入、输出语句正确的有:
(3) PRINT A=4
(1) INPUT a,b,c(2) INPUT x=3
(4) PRINT 20,3*2
√√新课讲解××新课讲解课堂练习4.程序:INPUT “水果糖的质量(千克):”;a
INPUT “奶糖的质量(千克):”;b
INPUT “巧克力糖的质量(千克):”;c
sum=10.4*a+15.6*b+25.2*c
PRINT “应收取的金额为:”;sum
END新课讲解小结:输入、输出、赋值语句是程序算法语言中的三种基本语句,很多复杂的程序都是由这三种基本语句构成。输入语是没有计算功能的,而出输语句是可以进行计算的。小结与作业课件19张PPT。2019/3/10§1.2.2条件语句算法初步2019/3/10复习巩固1、输入语句、输出语句和赋值语句对应于算法中的哪种结构?这三种语句的一般格式是什么? 顺序结构输入语句输出语句赋值语句INPUT “提示内容”;变量PRINT “提示内容”;表达式变量=表达式2019/3/10INPUT “提示内容”;变量PRINT “提示内容”;表达式变量=表达式可对程序中
的变量赋值可输出表达式的值,计算可对程序中的变量赋值,计算(1)提示内容和它后面 的“;”可以省略(2)一个语句可以给多个变
量赋值,中间用“,”分隔(3)无计算功能(1)表达式可以是变量,
计算公式,或系统信息(2)一个语句可以输入多个表达式,中间用“,”分隔(3)有计算功能(1)“=”的右侧必须是表达式,左侧必须是变量(2)一个语句只能给一个变量赋(3)有计算功能2019/3/10IF 条件 THEN
语句体1
ELSE
语句体2
END IFIF 条件 THEN
语句体
END IF2、条件结构常用的程序语言和格式(单分支条件结构)(双分支条件结构)2019/3/10例5:编写一程序,求实数X的绝对值。算法步骤:S1:输入一个实数XS2:判断X的符号,若X≧0,则输出X;否则输出-X程序框图:开始输入XX≧0输出X输出-X结束YN程序:
INPUT X
IF X>=0 THEN
PRINT X
ELSE
PRINT -X
END IF
END2019/3/102、把下列语句的意义翻译成程序框图(2)IF x>0 THEN
y=1
ELSE
y=0
END IF(1)IF x<0 THEN
x=ABS(x) END IF PRINT “x的绝对值为:”;x 开始X=abs(x)结束开始y=1y=0结束YNYN输出xX<0?X>0?2019/3/10例6 编写程序,输入一元二次方程 的系数,输出它的实数根。
自然语言描述:第一步:输入a,b,c第二步:计算判别式m第四步:判断m=0是否成立。若是,则输出x1=x2=p;否则x1=p+q
X2=p-q,并输出x1,x2.第三步:判断m≧0是否成立
若是,则计算p= ,q=
否则输出“方程无实数根”,结束算法。2019/3/10程序:INPUT “A,B,C=”;a,b,cm=b^2-4*a*cIF m>=0 thenp=-b/(2a)q=SQR(m)/(2*a) IF m=0 THENPRINT “X1=X2=“;p ELSEPRINT “x1,x2=“;p+q,p-qEND IFELSEPRINT “方程无实根“END IFEND2019/3/10QBASIC程序:INPUT “a,b,c=:”;a,b,cd = b * b – 4 * a * cp = – b / (2 * a)q = SQR(ABS(d)) / (2 * a)IF d >= 0 THENx1 = p + qx2 = p – qIF x1 = x2 THENPRINT “方程只有一解”;x1ELSEPRINT “xl,x2=”; x1, x2END IFELSEPRINT “无实根”END IFEND 开 始输入a,b,cΔ=b2-4acp= -b/2aq=SQR(ABS (Δ))/(2a)x1=p+q
x2=p-qΔ≥0?x1=x2?原方程有两个不等
的实数根x1,x2原方程有两个相等
的实数根x1,x2原方程无实数根结 束是否是否程序框图:另解:2019/3/10例7 编写程序,使得任意输入3个整数按大到小的顺序输出。算法分析:算法思想:3个数两两比较,确定大小。按a、b、c输入,要按a、b、c输出,关键要找到最大值,将它赋值给a,中值赋给b,最小值赋给c。第一步 输入3个整数a、b、c第二步 将a与b比较,并把小者赋给b,大的赋给a;第三步 将a与c比较,并把小者赋给c,大的赋给a第四步 将b与c比较,并把小者赋给c,大的赋给b第五步 按顺序输出a,b,c2019/3/10INPUT “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相应的QBASIC程序:开始t=a,a=b,b=tt=a,a=c,c=tt=b,b=c,c=t输入a,b,c输入a,b,cb>a?c>a?c>b?结束是是否否是否对应的流程图:2019/3/10小结1、条件结构的程序表示2、注意书写的规范性IF 条件 THEN
语句1
ELSE
语句2
END IFIF 条件 THEN
语句
END IFYN2019/3/10P30 练习开始输入a,b,ca+b>c,a+c > b,
b+c > a是否同时成立?存在这样的
三角形不存在这样
的三角形结束否是(1) 该程序框图所表示的算法是作用是什么?并根据程序框图写出相应的程序。程序:INPUT a,b,cIF a+b>c and a+c>b and b+c>a THENPRINT “存在这样的三角形”ELSEPRINT “不存在这样的三角形”ENDIFEND2019/3/10(2).读程序,说明程序的运行过程:INPUT “Please input an integer:” ; x
IF x>9 AND X<100 THEN
A=x10
b=x MOD 10
x=10*b+a
PRINT x
END IF
END 本程序的运行过程为:输入整数X,若X是满足9END2019/3/10(4).闰年是指能被4整除但不能被100整除,或者能被400整除的年份,编写一个程序,判断输入的年份是否为闰年?开始输入年份yA=y MOD 4B=y MOD 100C=y MOD 400A=0且B≠0C=0是闰年是闰年结束不是闰年INPUT “请输入年份”
A=y MOD 4
B=y MOD 100
C=y MOD 400
IF A=0 AND B<>0 THEN
PRINT “是闰年”
ELSE
IF C=0 THEN
PRINT “是闰年”
ELSE
PRINT “不是闰年”
END IF
END IF
END程序:NYYN2019/3/10开始输入mm≤50?m≤100?y=m×0.25y=0.25×50+
0.35×(m-50)y=0.25×50+0.35×
50+0.45×(m-100)输入m结束INPUT “m=”;mIF m<=50 THENy=m﹡0.25ELSEIF m<=100 THENy=0.25﹡50+0.35﹡ (m-50)ELSEy=0.25﹡50+0.35﹡50+
0.45﹡ (m-100)END IFEND IFPRINT “y=”;yEND 程序:程序框图:否否是是2019/3/10有三个数 a,b,c由键盘输入,输出其中最大的数,写出该问题的算法,画出程序框图,并写出相应的程序。算法:
第一步:输入三个整数a,b,c第二步:判断a>b且a>c是否成立,若成立,则输出a,若不成立,则转入第三步;第三步:判断b>c是否成立,若成立,则输出b,若不成立,则输出c;第四步:输出最大数 开始输入a,b,ca>b,a>c输出ab>c输出b输出c结束2019/3/10以下给出的是用算法基本语句描述的某一个问题的算法,根据程序回答发下的问题。Input m,n,p,q
If m>n and m>p and m>q then
print m
end if
If n>p and n>q then
print n
end if
If p>q then
print p
else
print q
end if
end问题1:若输入的四个数是8,2,1,13,问输出结果是多少?问题2:该程序表示的算法的功能是什么?输出13求出任意输入四个数m,n,p,q中的最大数课件22张PPT。§1.2.3 算法基本语句
算法初步温故而知新1、顺序结构常用的程序语言和格式2、条件结构常用的程序语言和格式输入语句 INPUT “提示文字”;变量输出语句 PRINT “提示文字”;表达式赋值语句 变量=表达式(1)IF 条件成立 THEN
语句1
ELSE
语句2
END IF(2)IF 条件成立 THEN
语句
END IF3、设计一个计算1+2+3+……+100的算法,并画出程序框图. 循环结构的定义: 在一些算法中,从某处开始,按照一定条件,反复执行
某一处理步骤的情况,这就是循环结构。
反复执行的处理步骤称为循环体。两种循环结构有什么差别?While(当型)循环Until(直到型)循环两种循环结构有什么差别?先执行循环体,然后再检查条件是否成立,如果不成立就重复执行循环体,直到条件成立退出循环。先判断指定的条件是否为真,若条件为真,执行循环条件,条件为假时退出循环。先执行 后判断先判断 后执行3、循环结构的程序框图思考:如何用程序语句表示呢?WHILE 条件
循环体
WENDDO
循环体
LOOP UNTIL 条件计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOP UNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。 当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。 i = 1S = 0WHILE i<=100i = i + 1S = S + iWENDPRINT SEND例1、根据1.1.2例3中的程序框图,编写
计算机程序来计算1+2+…+100的值i = 1S = 0DOi = i + 1sum = sum + iLOOP UNTIL i>100PRINT SEND例1、根据1.1.2例3中的程序框图,编写
计算机程序来计算1+2+…+100的值练习:下面是一个计算20以内的正偶数的积的算法。请填写程序框图和相应的程序。i=——
S=——
WHLIE ________
________
________
WEND
PRINT S
END21S=S*i12i=i+2i<=20?S=S*ii=i+2i<=20?3、根据下面的程序,画出
其算法的程序框图i=-1
WHILE i<=1
x=i
y=x*x*x
i=i+0.2
PRINT “y=”;y
WEND
END开始结束i<=1i=-1i=i+0.2y=x*x*xx=i输出yNY4、根据下面的程序语句画出对应的程序框图,并分析程序的结果。s=0
i=2
WHILE i<=18
s=s+i
i=i+3
WEND
PRINT “s=”;s
END(1)(2)i=1
sum=0
m=1
DO
m=m*i
sum=sum+m
i=i+1
LOOP UNTIL i>10
PRINT sum
ENDS=574037913sum=1!+2!+...+n!例题:例8、编写程序,计算函数f(x)=x3+3x2-24x+30当连续输入11个自变量-5,-4,-3,-2,-1,0,1,2,3,4,5时的函数值。练习、用直到型循环语句设计一个计算10个数平均数的算法,并写出程序.开始结束输出A输入xs=0,i=1i=i+1s=s+xi>10?A=s/101122NY程序框图:算法语句:s=0,i=1
DO
INPUT x
s=s+x
i=i+1
LOOP UNTIL i>10
A=s/10
PRINT A
END例9.根据你画出的用二分法求方程x2-2=0的
近似根的程序框图,写出相应的程序语句。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
ENDP32 1.按照图1.1-2中的程序
框图编写程序,判断大于2的整数是否为质数。 INPUT “n=”;n
i=2
DO
r= n MOD i
i=i+1
LOOP UNTIL i>=n-1 OR r=0
IF r=0 THEN
PRINT n;“is not a prime number."
ELSE
PRINT n;“is a prime number."
END IF
END练习 P322、编写一个程序,输入正整数n,计算它的
阶乘n!(n!=n*(n-1)*…*3*2*1)开始结束i=i+1m=m*im=1,i=1输入n输出mi>n?1122算法步骤:第一步,输入n第二步,令m=1,n=1第三步,计算m=m*i,i=i+1第四步,若i>n则输出m,
否则返回第三步程序框图:YNm=1
i=1
INPUT "请输入n的值:";n
DO
m=m*i
i=i+1
LOOP UNTIL i>n
PRINT "这个数的阶乘为:";m
END程序语句:补充1、设计一个算法框图:求满足1+2 + 3 + … + n>1000的最小正整数n,并写出相应的QBASIC程序。i = 0sum = 0DOi = i + 1sum = sum + iLOOP UNTIL sum>1000PRINT iEND补充2、设计一个算法框图:逐个输出12,22,32,…,n2,并写出相应的QBASIC程序。INPUT n
i = 0
WHILE i < n
i = i + 1
t = i ^ 2
PRINT t
WEND
ENDINPUT n
i = 0
DO
i = i + 1
t = i ^ 2
PRINT t
LOOP UNTIL i > = n
END循环结构的程序框图循环语句WHILE 条件
循环体
WENDDO
循环体
LOOP UNTIL 条件作业:课本P33
习题1.2A组第3题
B组 第2题课件18张PPT。1.3算法案例(第一课时)表示算法的三种方式:算法步骤(自然语言)程序框图(图形语言)计算机程序(程序语言)复习引入3 159 45[问题1]:在小学,我们已经学过求最大公约数的知识,你能求出18与90的最大公约数吗?18 9023∴18和90的最大公约数是2×3×3=18.先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.[问题2]:求8251与6105的最大公约数?新课讲解1 53求两个正数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的最大公约数。 以上我们求最大公约数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。 研探新知一、辗转相除法(欧几里得算法)1、定义:
所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将除数变被除数,余数变除数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。辗转相除法是一个反复执行直到余数等于0停止的算法 [问题3]你能把辗转相除法写成算法步骤吗?研探新知第四步,若r=0,则m,n的最大公约数等于m;
否则,返回第二步辗转相除法求最大公约数算法步骤:第一步,给定两个正数m,n第二步,计算m除以n所得到余数r第三步,m=n,n=r研探新知[问题4]:该算法的程序框图如何表示?求m除以n的余数r新课讲解问题5:该程序框图对应的程序如何表述?INPUT m,nDOr=m MOD nm=nn=rLOOP UNTIL r=0PRINT mEND求m除以n的余数rm=nn=r新课讲解问题6:如果用当型循环结构构造算法,求两个正整数m,n的最大公约数的程序框图和程序分别如何表示?研探新知《九章算术》——更相减损术 算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之. 第一步:任意给顶两个正整数;判断他们是否都是偶数.若是,则用2约简;若不是则执行第二步. 第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数.继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数.例2 用更相减损术求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。练习2:用更相减损术求两个正数84与72的最大公约数。 (12)研探新知辗转相除法与更相减损术的比较: (1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主;计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.研探新知思考2:上述求两个正整数的最大公约数的方法称为更相减损术.一般地,用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?研探新知(2)算法步骤第一步:输入两个正整数m,n(m>n);
第二步:若m,n都是偶数,则不断用2约简,使他们不同时是偶数,约简后的两个数仍记为m,n.
第三步:把m-n的差赋予d;
第四步:判断d不等于n是否成立。若是,则 n,d中的较大者记为m,较小者记为n,返回第三步;否者, (k是约简整数的2的个数) 为所求的最大公约数.(3)程序框图输入m,n(m>n) m=m/2k=k+1n=n/2K=0是m,n均是偶数?否d=m-nd≠nd>n?输出结束是否是否d=m-nm=dm=nn=d1、分别用辗转相除法和更相减损术求168与93的最大公约数. 辗转相除法:168=93×1+75,
93=75×1+18,
75=18×4+3,
18=3×6.练习更相减损术:168-93=75, 93-75=18,
75-18=57, 57-18=39,
39-18=21, 21-18=3,
18-3=15, 15-3=12,
12-3=9, 9-3=6,
6-3=3. 1.辗转相除法,就是对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,这时的较小的数即为原来两个数的最大公约数. 2. 更相减损术,就是对于给定的两个正整数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,继续上面的减法,直到差和较小的数相等,此时相等的两数即为原来两个数的最大公约数.小结与作业3、辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到小结与作业课本P48页练习T1;课件15张PPT。2019/3/101.3 算法案例 第二课时 2019/3/10秦九韶算法2019/3/10问题提出 1.辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,我们将算法转化为程序后,就可以由计算机来执行运算,实现了古代数学与现代信息技术的完美结合. 2.对于求n次多项式的值,在我国古代数学中有一个优秀算法,即秦九韶算法,我们将对这个算法作些了解和探究.2019/3/10知识探究(一):秦九韶算法的基本思想 思考1:对于多项式f(x)=x5+x4+x3+x2+x+1,求f(5)的值. 若先计算各项的值,然后再相加,那么一共要做多少次乘法运算和多少次加法运算?4+3+2+1=10次乘法运算, 5次加法运算. 2019/3/10思考2:在上述问题中,若先计算x2的值,然后依次计算x2·x,(x2·x)·x,((x2·x)·x)·x的值,这样每次都可以利用上一次计算的结果,再将这些数与x和1相加,那么一共做了多少次乘法运算和多少次加法运算? 4次乘法运算,5次加法运算. 2019/3/10思考3:利用后一种算法求多项式f(x)=anxn+an-1xn-1+…+a1x+a0的值,这个多项式应写成哪种形式?f(x)=anxn+an-1xn-1+…+a1x+a0 =(anxn-1+an-1xn-2+…+a2x+a1)x+a0
=((anxn-2+an-1xn-3+…+a2)x+a1)x+a0 =…
=(…((anx+an-1)x+an-2)x+…+a1)x+a0.2019/3/10思考4:对于f(x)=(…((anx+an-1)x+ an-2)x+…+a1)x+a0,由内向外逐层计算一次多项式的值,其算法步骤如何? 第一步,计算v1=anx+an-1. 第二步,计算v2=v1x+an-2.第三步,计算v3=v2x+an-3.
…第n步,计算vn=vn-1x+a0.2019/3/10思考5:上述求多项式 f(x)=anxn+an-1xn-1+…+a1x+a0的值的方法称为秦九韶算法,利用该算法求f(x0)的值,一共需要多少次乘法运算,多少次加法运算? 思考6:在秦九韶算法中,记v0=an,那么第k步的算式是什么? vk=vk-1x+an-k (k=1,2,…,n)2019/3/10知识探究(二):秦九韶算法的程序设计 思考1:用秦九韶算法求多项式的值,可以用什么逻辑结构来构造算法?其算法步骤如何设计?第一步,输入多项式的次数n,最高次 项的系数an和x的值. 第二步,令v=an,i=n-1. 第三步,输入i次项的系数ai. 第四步,v=vx+ai,i=i-1.第五步,判断i≥0是否成立.若是,则返回第 三步;否则,输出多项式的值v. 2019/3/10思考2:该算法的程序框图如何表示?2019/3/10思考3:该程序框图对应的程序如何表述?INPUT “n=”;nINPUT “an=”;aINPUT “x=”;x v=ai=n-1WHILE i>=0INPUT “ai=”;b v=v*x+bi=i-1 WENDPRINT yEND2019/3/10理论迁移 例1 已知一个5次多项式为 用秦九韶算法求f(5)的值.f(x)=((((5x+2)x+3.5)x-2.6)x+1.7)x-0.8.v1=5×5+2=27;v2=27×5+3.5=138.5;v3=138.5×5-2.6=689.9;v4=689.9×5+1.7=3451.2;v5=3451.2×5-0.8=17255.2.所以f(5)= =17255.2.2019/3/102 -5 0 -4 3 -6 0x=5105252512512160560830403034所以,当x=5时,多项式的值是15170.练一练:用秦九韶算法求多项式 f(x)=2x6-5x5-4x3+3x2-6x当x=5时的值.解:原多项式先化为:
f(x)=2x6-5x5 +0×x4-4x3+3x2-6x+0
列表21517015170 注意:n次多项式有n+1项,因此缺少哪一项应将其系数补0.2019/3/10 例2 阅读下列程序,说明它解决的实际问题是什么?INPUT “x=”;a
n=0
y=0
WHLE n<5
y=y+(n+1)*a∧n
n=n+1
WEND
PRINT y
END2019/3/10小结作业 评价一个算法好坏的一个重要标志是运算的次数,如果一个算法从理论上需要超出计算机允许范围内的运算次数,那么这样的算法就只能是一个理论算法.在多项式求值的各种算法中,秦九韶算法是一个优秀算法. 课件28张PPT。2019/3/10算法案例(第三课时)进位制2019/3/10复习引入:1、秦九韶算法的方法和步骤?
2、秦九韶算法的程序框图?
3、举例说明日常生活中的进位制。2019/3/10一、进位制1、什么是进位制?进位制是人们为了计数和运算方便而约定的记数系统。进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。新课讲解:2019/3/10 比如: 满二进一,就是二进制; 满十进一,就是十进制;
满十二进一,就是十二进制; 满六十进一,就是六十进制“满几进一”就是几进制,几进制的基数就是几.基数:2019/3/102、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明.最常见的进位制应该是我们数学中的十进制,比如一般的数值计算,但是并不是生活中的每一种数字都是十进制的.
古人有半斤八两之说,就是十六进制与十进制的转换.
比如时间和角度的单位用六十进位制, 计算“一打”数值时是12进制的。
电子计算机用的是二进制 。 2019/3/10 式中1处在百位,第一个3所在十位,第二个3所在个位,5和9分别处在十分位和百分位。十进制数是逢十进一的。 我们最常用最熟悉的就是十进制数,它的数值部分是十个不同的数字符号0,1,2,3,4,5,6,7,8,9来表示的。十进制:例如133.59,它可用一个多项式来表示:133.59=1*102+3*101+3*100 +5*10-1+9*10-22019/3/10 实际上,十进制数只是计数法中的一种,但它不是唯一
记数法。除了十进制数,生产生活中还会遇到非十进制的
记数制。如时间:60秒为1分,60分为1小时,它是六十进
制的。两根筷子一双,两只手套为一副,它们是二进制的。其它进制: 二进制、七进制、八进制、十二进制、
六十进制……二进制只有0和1两个数字,七进制用0~6七个数字十六进制有0~9十个数字及ABCDEF六个字母.2019/3/10 为了区分不同的进位制,常在数的右下角标明基数,十进制一般不标注基数.例如十进制的133.59,写成133.59(10)七进制的13,写成13(7);二进制的10,写成10(2) 2019/3/10A2019/3/103、十进制的构成十进制由两个部分构成例如:3721其它进位制的数又是如何的呢?(用10个数字来记数,称基数为10)表示有:1个1,2个十, 7个百即7个10的平方,3个千即3个10的立方2019/3/10其它进制数化成十进制数公式2019/3/10二、 二进制二进制是用0、1两个数字来描述的.如11001二进制的表示方法区分的写法:11001(2)或者(11001)2八进制呢?如7342(8)k进制呢?anan-1an-2…a1(k)?2019/3/10三、二进制与十进制的转换1、二进制数转化为十进制数例1:将二进制数110011(2)化成十进制数。解:根据进位制的定义可知所以,110011(2)=51.2019/3/10其它进制数化成十进制数公式2、把其他进位制的数化为十进制数的公式是什么?2019/3/10例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b。(1)算法步骤:第一步,输入a,k和n的值;第二步,将b的值初始化为0,i的值初始化为1;第三步,b=b+ai*ki-1, i=i+1第四步,判断i>n是否成立.若是,则执行第五步,否则,返回第三步;第五步,输出b的值.2019/3/10(2)程序框图:2019/3/10(3)程序:INPUT “a,k,n=”;a,k,n
b=0
i=1
t=a MOD 10
DO
b=b+t*k^(i-1)
a=a10
t=a MOD 10
i=i+1
LOOP UNTIL i>n
PRINT b
END2019/3/10**上面的程序如采用get函数,可简化为:备注:GET函数用于取出a的右数第i位数2019/3/10方法:除2取余法,即用2连续去除89或所得的商,然后取余数。例、 把89化为二进制数解:根据“逢二进一”的原则,有89=2×44+1= 2× (2×22+0)+1= 2×( 2×( 2×11+0)+0)+1= 2× (2× (2× (2× 5+1)+0)+0)+15= 2× 2+1=2×(2×(2×(2×(22+1)+1)+0)+0)+189=1×26+0×25+1×24+1×23+0×22+0×21+1×20所以:89=1011001(2)=2×(2×(2×(23+2+1)+0)+0)+1=2×(2×(24+22+2+0)+0)+1=2×(25+23+22+0+0)+1=26+24+23+0+0+2089=2×44+144= 2×22+022= 2×11+011= 2× 5+1= 2× (2× (2× (2× (2× 2+1)+1)+0)+0)+1所以89=2×(2×(2×(2×(2 × 2 +1)+1)+0)+0)+12、十进制转换为二进制2019/3/10注意:
1.最后一步商为0,
2.将上式各步所得的余数从下到上排列,得到:
89=1011001(2)另解(除2取余法的另一直观写法):522212010余数112244892222011012019/3/10例1:把89化为五进制数。3、十进制转换为其它进制解:根据除k取余法以5作为除数,相应的除法算式为:所以,89=324(5)2019/3/10例2、设计一个程序,实现“除k取余法”。(1)、 算法步骤:第一步,给定十进制正整数a和转化后的数的基数k;第二步,求出a 除以k 所得的商q ,余数r;第三步,若q 0, 则a=q, 返回第二步;否则,执行第四步;第四步,将依次得到的余数从右到左排列,得到k 进制数。2019/3/10(2)程序框图:2019/3/10(3)程序:INPUT “a,k=”;a,k
b=0
i=0
DO
q=ak
r=a MOD k
b=b+r*10^i
i=i+1
a=q
LOOP UNTIL q=0
PRINT b
END2019/3/10练习:
完成下列进位制之间的转化:
(1)10231(4)= (10);
(2)235(7)= (10);
(3)137(10)= (6);
(4)1231(5)= (7);
(5)213(4)= (3);
(6)1010111(2)= (4)。2019/3/101.进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为k,即可称k进位制,简称k进制。k进制需要使用k个数字;2.十进制与二进制之间转换的方法;
先把这个k进制数写成用各位上的数字与k的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果。小结2019/3/103.十进制数转化为k进制数的方法:(除k取余法)
用k连续去除该十进制数或所得的商,直到商为零为止,然后把每次所得的余数倒着排成一个数,就是相应的k进制数。2019/3/10作业:
1、P48 3,4
2、P50 A3 B1