(1)直接插入排序法:
(2)冒泡排序法:
现用直接插入排序法对任意输入的n个数进行从小到大的排序,其伪代码程序如下:
Begin
Read 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循环语句表示如下:
Begin
Read n
For i=1 to n
Read a(i)
End For
Do
w=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+1
end if
Next i
Loop Until w=0
For k=1 to n
Print a(k)
End For
End
例三与例五及算经中的“百钱百鸡”问题均对循环语句的应用提出更高要求,在算法理解及流程图的设计上思路一定要清晰。
分析:要用尽量少的硬币表示钱数,也就是要尽可能地用大面值的硬币.以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 ,,,
2.过程与方法目标:
(1)改变解决问题的思路,要将抽象的数学思维转变为具体的步骤化的思维方法,提高逻
辑思维能力;
(2)学会借助实例分析,探究数学问题。
1.知识与技能目标:
(1)了解中国古代数学中求两个正整数最大公约数的算法以及割圆术的算法;
(2)通过对“更相减损之术”及“割圆术”的学习,更好的理解将要解决的问题“算法化”
的思维方法,并注意理解推导“割圆术”的操作步骤。
教学环节 |
教学内容 |
师生互动 |
设计意图 |
||||
复习引入 |
请同学们思考以下的问题: 1.期末考试后,我们要求求出全班60名同学的数学成绩的总分,你采用什么方式进行计算? 2.某单位在1000名职工中寻找年龄最小的人参加某项活动,你采用什么方法进行筛选? 问题1:逐个相加计算得到总分; 问题2:逐个鉴别分析,得到最小值; |
学生思考回答 |
由实际问题引入,不仅能激发学生的学习兴趣,而且可以培养学生的解决实际问题的能力 |
||||
概念形成 |
解决以上两个问题时采用的方法有怎样的共同特点?应选用何种结构来实现 共同特点:有规律的重复计算,或者在程序中需要对某些语句进行重复的执行,即对不同的运算对象进行若干次的相同的运算或处理 选用结构方式:循环结构 Scilab程序语言中提供两种循环语句:for循环和while循环 |
学生独立思考,交流讨论、教师予以提示,协助梳理、 点拨指导 |
由特殊到一般培养学生的观察、归纳、概括能力 |
||||
概念深化 |
I 、for循环语句 请同学们看下面的一个例子: 例1.求1+2+3+…+1000=? (教材P27) 分析:算法思想:可以采用重复计算,而且数字1、2、3、…、1000是有规律的一列数,逐渐循环递增,每次增幅为1 解答:用for循环语句来实现计算
步骤:这个程序一共四步: 第一步是选择一个变量S表示和,并赋给初值0。 第二步开始进入for循环语句,首先设i为循环变量,分别设定其初值、步长、终值。这里初值为1,步长为1(步长是指循环变量i 每次增加的值。步长为1,可以省略不写,若为其他值,则不可省略),终值为1000。 第三步为循环表达式(循环体)。 第四步用“end”控制结束一次循环,开始一次新的循环。 循环体认识:第三步循环表达式“S=S+i”的理解:i=1 S=S+i 是 S=S+1,并把0+1赋值给S,第一次循环结束S为1,此时S记录了第一个数的值,遇到“end”开始第二次循环; i=2 S=S+i 是 S=S+2,并把1+2赋值给S,第二次循环结束S为1+2=3,此时S记录了前两个数的和,遇到“end”开始第三次循环; i=3 S=S+i 是 S=S+3,并把(1+2)+3赋值给S,第三次循环结束S为1+2+3=6,此时S记录的是前三个数的和,遇到“end”开始第四次循环;… 结果输出:把上述程序存到一个文件(“C:/gao/instum.sci”),点击菜单中的“Load into Scilab”就会在Scilab中执行你写的程序: (教材P28--P29)相关内容 总结:for循环语句的格式
课堂练习:教材P31 练习A 1 II、while循环语句 请同学们看下面一个例子: 例2 求平方值小于1000的最大整数 分析:算法思想、正数范围、逐个比较,若小于1000,循环继续;若大于等于1000,结束循环,输出结果。 while 语句格式
循环体认识:首先要求对表达式进行判断,如果表达式为真,则执行循环体部分,每次开始执行循环体前,都要判断表达式是否为真。这样重复执行,一直到表达式值为假时,就跳过循环体部分,结束循环。 解答:Scilab的格式来解决这个问题
在输入完程序的第二行后,击Enter键,再在提示符下输入j,击Enter键后,输出最大的j值 步骤:第一步是选择一个变量j表示数值,并赋给初值1; 第二步开始进入while循环语句 循环体:j*j<1000,j=j+1; 解释:j=1时,1*1=1<1000, j=1+1=2;遇到end开始第二次循环; j=2时,2*2=4<1000, j=2+1=3;遇到end开始第三次循环;… 第三步单击Enter键,再在提示符输入j,击Enter键,输出最大j值 课堂练习:教材P31 练习B 2 |
学生探讨思考,算法思想渗透,教师归纳整理,给出语句结构 激发学生兴趣,引导学生猜想,思考、观察、归纳,教师诱导、点评 |
使学生在具体实例中掌握算法思想、细化 通过步骤分析、归纳、整理、使学生再次经历由特殊到一般、由具象到抽象的思维过程,培养学生的归纳、概括能力 |
||||
应用举例 |
例3 教材P30 例题(略) 课堂练习:练习:P31 A 2,3,4 B 3,4 |
通过学生思考、解答交流,教师巡视,注意个别指导,发现普遍性问题,应及时提到全体学生面前供大家讨论 |
加强学生对于概念的理解,培养学生独立解决问题的能力,并加强学生的相互纠错能力。使学生深入了解课堂内容。 |
||||
归纳小结 |
引导学生回归本节课所学的知识及数学思想方法:(1)循环语句:for循环语句, while循环语句 (2)培养学生观察、归纳、概括能力,深入理解算法思想的应用 (3)善于用算法思想解决实际问题 |
学生先自觉回忆本节收获并交流,教师板书,并加强归纳整理 |
通过师生合作总结,使学生对本节课所学的知识结构有一个明确的认识,抓住本节的重点。 |
||||
作业 |
教材 P31 1-2 A
4 ; B 3 |
|
|
采用观察、分析、抽象、概括、自主探究、合作交流的教学方法,通过各种教学媒体(计算机)调动学生参与课堂教学的主动性与积极性。
2.难点:应用两种循环语句将具体问题程序化,搞清for循环和while循环的区别和联系
1.重点:理解for 语句与while语句的结构与含义,并会应用
3.情感、态度与价值观:在学习过程及解决实际问题的过程中,尽可能的用基本算法语句描述算法、体会算法思想的作用及应用,增进对算法的了解,形成良好的数学学习情感、积极的学习态度。
湖北省互联网违法和不良信息举报平台 | 网上有害信息举报专区 | 电信诈骗举报专区 | 涉历史虚无主义有害信息举报专区 | 涉企侵权举报专区
违法和不良信息举报电话:027-86699610 举报邮箱:58377363@163.com