教师备课系统一一多媒体教案 试型”循环.其对应的程序结构框图为:(如上右图) (2) UNTIL语句的一般格式是 循环体 循环体 LOOP 满足条 TTMT 其对应的程序结构框图为:(如上右图) (二)例题讲解 例1编写程序,输入一元二次方程ax2+bx+c=0的系数,输出它的实数根 分析:先把解决问题的思路用程序框图表示出来,然后再根据程序框图给出的算法 步骤,逐步把算法用对应的程序语句表达 出来 INPUT“a,b,c=”;a,b,c 算法分析:我们知道,若判别式 d=b^24*a*c IF d>=0 THEN △=b2-4ac>0,原方程有两个不 p=B(2*a) q=SQR(D)/(2*a) 相等的实数根x1 √A IF d=0 THEN b ELSE PRINT“x1,x2=;p+q,pq END IF 若△=0,原方程有两个相等的实数 ELSE PRINT“ No real root! b END IF END 若Δ<0,原方程没有实数根.也就是 说,在求解方程之前,需要首先判断判别 式的符号.因此,这个过程可以用算法中的条件结构来实现 又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算x1和x2之前 先计算P=-aq-2a
教师备课系统──多媒体教案 6 试型”循环.其对应的程序结构框图为:(如上右图) (2)UNTIL 语句的一般格式是: 其对应的程序结构框图为:(如上右图) (二)例题讲解 例 1 编写程序,输入一元二次方程 2 ax bx c + + = 0 的系数,输出它的实数根. 分析:先把解决问题的思路用程序框图表示出来,然后再根据程序框图给出的算法 步骤,逐步把算法用对应的程序语句表达 出来. 算法分析:我们知道,若判别式 2 = − b ac 4 0 ,原方程有两个不 相等的实数根 1 2 b x a − + = 、 2 2 b x a − − = ; 若 = 0 ,原方程有两个相等的实数 根 1 2 2 b x x a = = − ; 若 0 ,原方程没有实数根.也就是 说,在求解方程之前,需要首先判断判别 式的符号.因此,这个过程可以用算法中的条件结构来实现. 又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算 1 x 和 2 x 之前, 先计算 2 b p a = − , 2 q a = . DO 循环体 LOOP UNTIL 条件 满足条件? 循环体 是 否 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
人教版新课标普通高中◎数学③必修 程序框图:(参照教材12页) 程序:(如上页图所示) INPUT 注:SQR()和ABS()是两个函数,分c 别用来求某个数的平方根和绝对值 IF b>a THEN x≥0, 即,SQR(x)=√x,ABS(x)= x,x<0 a=b 例2编写程序,使得任意输入的3个整数 END IF 按从大到小的顺序输出 IF c>a THEN 算法分析:用a,b,c表示输入的3个整 数:为了节约变量,把它们重新排列后,仍用 a,b,c表示,并使a≥b≥c 具体操作步骤如下. END IF 第一步:输入3个整数a,b,c. IF c>b THEN 第二步:将a与b比较,并把小者赋给b, 大者赋给a. 第三步:将a与c比较.并把小者赋给c, 大者赋给a,此时a已是三者中最大的 END IF 第四步:将b与c比较,并把小者赋给c, PRINt a,b,e 大者赋给b,此时a,b,c已按从大到小的顺序、END 排列好 第五步:按顺序输出a,b,c. 程序框图:(参照教材28页) 程序:(如右框图所示) 例3编写程序,计算自然数1+2+3+…+99+100的和 分析:这是一个累加问题.我们可以用 WHILE型语句,也可以用 UNTIL型语句 由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单 与复杂的问题. 程序 WHIE型: UN∏L型: sum =0 sum=0 WHLIE 1=100 DO sum=sum+i sumFsumTI
人教版新课标普通高中◎数学③ 必修 7 程序框图:(参照教材 12 页) 程序:(如上页图所示) 注:SQR()和 ABS()是两个函数,分 别用来求某个数的平方根和绝对值. 即, SQR( ) = x x , 0 ABS( )= - 0 x x x x x , , , . 例 2 编写程序,使得任意输入的 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. 程序框图:(参照教材 28 页) 程序:(如右框图所示) 例 3 编写程序,计算自然数 1+2+3+…+99+100 的和. 分析:这是一个累加问题.我们可以用 WHILE 型语句,也可以用 UNTIL 型语句. 由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单 与复杂的问题. 程序: WHILE 型: UNTIL 型: 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 i=1 sum=0 WHLIE 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
教师备课系统一一多媒体教案 例4根据教材1.1.2中的图1.1-2,将程序框图转化为程序语句 分析:仔细观察,该程序框图中既有条件结构,又有循环结构. 程序: INPUT“n fl ag IF n>2 THEN D=2 WHILE D<=n-1 AND flag=l IF n MOD D=0 THEN flag=0 ELSE D=D+1 WEND ELSE IF flag=l THEN PRINT n;“是质数 ELSE PRINT n;“不是质数 END IF END IF END 思考:上述判定质数的算法是否还能有所改进?(让学生课后思考.) 补例:某纺织厂1997年的生产总值为300万元,如果年生产增产率为5%,计算最 早在哪一年生产总值超过400万元 分析:从1997年底开始,经过x年后生产总值为300×(1+5%)x,可将1997年 生产总值赋给变量a,然后对其进行累乘,用n作为计数变量进行循环,直到a的值超 过400万元为止 解:(详见下页)
教师备课系统──多媒体教案 8 例 4 根据教材 1.1.2 中的图 1.1-2,将程序框图转化为程序语句. 分析:仔细观察,该程序框图中既有条件结构,又有循环结构. 程序: 思考:上述判定质数的算法是否还能有所改进?(让学生课后思考.) 补例:某纺织厂 1997 年的生产总值为 300 万元,如果年生产增产率为 5%,计算最 早在哪一年生产总值超过 400 万元. 分析:从 1997 年底开始,经过 x 年后生产总值为 300×(1+5%)x,可将 1997 年 生产总值赋给变量 a,然后对其进行累乘,用 n 作为计数变量进行循环,直到 a 的值超 过 400 万元为止. 解:(详见下页) INPUT “n=”;n flag=1 IF n>2 THEN D=2 WHILE D<=n-1 AND flag=1 IF n MOD D=0 THEN flag=0 ELSE D=D+1 END IF WEND ELSE IF flag=1 THEN PRINT n;“是质数.” ELSE PRINT n;“不是质数.” END IF END IF END