教案2 算法初步复习

发布 2022-07-02 23:57:28 阅读 7127

第一章算法初步小结复习。

教学目的:总结算法解题的一般思路,即算法分析(提炼问题的数学本质)——画出程序框图——按框图编写伪**;通过本章学习增强解题的规范性.

教学重点:在准确理解算法的基础上,掌握流程图的画法及判断;掌握伪**的编写.

教学过程:例1.阅读下列伪**,并指出当时的计算结果:

1)read a, b2) read a, b3) read a, b

x←a+ba←a+ba←a+b

y←a-bb←a-bb←a-b

a←(x+y)/2a←(a+b)/2a←(a-b)/2

b←(x-y)/2b←(a-b)/2b←(a+b)/2

print a, bprint a, bprint a, b

a=__ba=__ba=__b___

例2.写出用二分法求方程在区间内的一个近似解(误差不超过)的一个算法.

说明:此题主要再次强调算法的问题根本上是一个思维的问题以及算法语言的基本规则;如何通过语句的结构形式规范处理及简化问题,从而增强解题的规范性.

流程图与伪**。

10 rend a,b,c

20 x0 ←(a+b)/2

30 f(a) ←a3-a-1

40 f(x0) ←x03-x0-1

50 if f(x0)=0 then goto 120

60 if f(a)f(x0)<0 then

70 b ←x0

80 else

90 a ←x0

100 end if

110 if |a-b|≧c then goto 20

120 print x0

n以上两例重点理解赋值语句,尤其是在循环结构中如何根据对变量的理解灵活赋值,从而用简炼的语句表示算法。

例3.满足方程的一组正整数称为勾股数或商高数,设计计算某一范围内的勾股数的算法.

for a from 3 to 30

for b from a+1 to 40

for c from b+1 to 50

if a2+b2=c2 then

p a, b, c

end if

endend

end例四.已知钱数(不足10元),要把它用于1元、5角、1角、1分的硬币表示,若要用尽量少的硬币个数表示,设计一个算法,求各硬币的个数.

分析:要用尽量少的硬币表示钱数,也就是要尽可能地用大面值的硬币.以1元钱的个数就是的整数部分,记为,则5角钱的个数就是(-)0.5的整数部分,记为;1角钱的个数就是(-*1-*0.

5)的整数部分,记为;1分钱的个数就是(-*1-*0.5-*0.1)的整数部分.

解:read

int()int((-0.5)

int((-1-*0.5)/0.1)

int((-1-*0.5-*0.1)/0.01)

print,,,

例五。 在日常生活中,人们经常要把一些记录中的数据排序,如招生录取中按照成绩对考生进行排序,汉字拼音检索中按照字母顺序对汉字进行排序等等。排序就是按照一定的规则,对数据加以排列整理,从而提高查找效率.

1)直接插入排序法:

2)冒泡排序法:

现用直接插入排序法对任意输入的n个数进行从小到大的排序,其伪**程序如下:

beginread n

for i=1 to n

read a(i)

end for

for i=2 to n

for j=1 to i-1

if a(j)>a(i) then

m=a(i)

a(i)=a(j)

a(j)=m

end if

end for

end for

for k=1 to n

print a(k)

end for

end再用直接冒泡排序法对任意输入的n个数进行从小到大的排序,其伪**程序如下:

10 begin

20 read n

30 for i=1 to n

40 read a(i)

50 end for

60 for j=1 to n-1

70 w=0

80 for i=1 to n-1

90 if a(i)>a(i+1) then

100 m=a(i)

110 a(i)=a(i+1)

120 a(i+1)=m

130 w=w+1

140 end if

150 end for

160 if w=0 then goto 180

170 end for

180 for k=1 to n

190 print a(k)

200 end for

210 end

用do循环语句表示如下:

beginread n

for i=1 to n

read a(i)

end fordow=0

for i=1 to n-1

if a(i)>a(i+1) then

m=a(i)

a(i)=a(i+1)

a(i+1)=m

w=w+1end if

next i

loop until w=0

for k=1 to n

print a(k)

end for

end例三与例五及算经中的“百钱百鸡”问题均对循环语句的应用提出更高要求,在算法理解及流程图的设计上思路一定要清晰。

例六.(李白买酒)“无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,三遇店和花,喝光壶中酒”.设计求酒壶中原有多少酒的一个算法并写出伪**.

s=0for i from 1 to 3

s←(s+1)/2

end for

pint s

例七.一个三位数,如果每一位数字的立方和等于它本身,则称之为“水仙花数”.设计一个算法,找出所有的水仙花数,用伪**表示.

for n from 100 to 999

int(n/100)

int((n-100x)/10)

z←n-100-10

if n=3+3+z3 then

pint n

end if

next n

end for

例八.一辆邮车依次前往城市am(),每到一个城市先卸下前面各城市发往该城市的邮袋1个,然后再装上该城市发往后面各城市的邮袋各1个,设n是邮车从第n个(1≤n<m,n∈n* )城市出发时邮车上邮袋的个数,设计一个算法,对任给两个正数m>n求n.

分析:到达第n个城市时,邮袋个数为前一个城市的邮袋个数减去前面城市发往该市的n-1个邮袋,再加上发往后面各城市的(m-n)个邮袋,可用循环计算i从1至n时,n的变化。

解: 伪**为:

read m,n

if m≤n then print“错误!m必须大于n”

else s←0

for i from 1 to n

s←s+(m- i)-(i-1)

next i

end for

end if

print s

例九.进位制与秦九韶算法。

1.用程序把进制数(共有位)转换为十进制数。

2.把一个十进制数化为k进制数

beginread a , ki=1do

r=mod(a,k)

a(i)=r

a=(a-r)/k

i=i+1loop until a=0

m=i-1for j=m to 1 step -1

print a(j);

next j

prin “(k;”)

end3.求次多项式当(是任意实数)的值。

解析:把次多项式改写如下形式:

发现规律结合所掌握算法,通过模仿,操作,探索,寻找解决问题的通法。

算法初步复习课教案

end if 3 循环结构。从某处开始,按照一定条件,反复执行某一处理步骤。当型 while型 循环 while 条件 循环体。wend 直到型 until型 循环 do循环体。loop until 条件。二 范例分析 例1 任意给定一个大于1的整数,试设计一个程序或步骤对是否为质数做出判定。解 算...

算法初步复习课教案

一 课题 算法初步复习课。二 教学目标 1 回顾算法的概念以及三种基本逻辑结构 2 掌握三种基本逻辑结构的应用 3 掌握条件结构与循环结构互相嵌套的应用。三 教学重点 三种基本逻辑结构的应用。四 教学难点 条件结构与循环结构互相嵌套的应用。五 教学方法 讲练结合法。六 教学过程 一 复习回顾 1 算...

算法初步复习

一 算法的定义 对一类问题的机械的 统一的求解方法称为算法。二 算法的特点 有限性 确定性。注 一般来说,算法有一个或多个输出。三 算法的描述方式 自然语言 流程图 程序设计语言 伪 四 自然语言描述中的典型例题 高斯消元法解线性方程组,即先将方程组化为一个三角形方程组,再通过回代过程求出方程组的解...