C语言程序设计冒泡排序教学案例 杨进

C 语言程序设计冒泡排序教学案例

永川职业教育中心 杨进

【案例背景】

排序是计算机学科中一项复杂而重要的技术,在各种软件中使用频率都很高,因此专家们研究了各种排序算法。在中职类设计课程教学中,常以冒泡排序来讲解排序的原理,它简单,但过程繁琐, 传统教学很难激发学生兴趣,学生不易理解,也很难编写掌握冒泡排序。因此,如何合理设计教学过程,让学生掌握冒泡排序的思想和编程方法,又能发散思维,扩充知识,进而激发学生对编程课程的兴趣,是一个关键问题。

1、学情分析

学生已学习了程序设计的三种结构,学习使用了数组。但在学习排序算法的过程中学生可能会对数组变量的变化在理解上存在一定困难,在排序算法中,对双重循环内外层的作用及有关循环参数的设置可能会产生一些不合理或是错误,需要通过实践的体验进行强化使用规范。

2、教学目标

知识目标:掌握冒泡排序的原理;能结合冒泡排序的原理看懂冒泡排序的主要代码;理解冒泡排序的流程图;

能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,进一步体会算法与程序实现的关系;

情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的读程习惯;

3、教学重点、难点

重点:冒泡排序算法的基本思想,双重循环应用

难点:双重循环程序的解读,冒泡排序算法实现后对程序的理解

4、教学策略与手段

以循序渐进、层层深入为教学的指导方针,采用讲解法、演示法、讨论合作、分析归纳法引导学生参与思考,由特殊到一般,有效地突出重点突破难点,逐步深化对冒泡算法、循环思想和执行过程的理解。

5、课前准备

PPT 课件、冒泡排序的视频文件。

【案例描述】

师:在前面的学习中,我们学过了用EXCEL 进行一些简单的数据处理方法,请同学们说说看你是怎么对同学的成绩排次序的?

生:先选好数后,点排序就行了。

师:是的。只要用EXCEL 的排序功能就可以了,点点鼠标就能完成。在前面的学习中,我们已经解开了很多单击鼠标就可以完成某一个任务的秘密,今天我们就来探访一下排序的秘密。

师:先让我们来做个舞蹈视频,同时要求同学们谈谈看后的自己的想法。并要请几位同学模拟示范。

这段真人编排的排序算法的舞蹈视频,非常生动有趣,能充分吸引学生的眼球,极大激发了学生的兴趣。

播放完毕,老师提问:请同学们说说你们看到了什么?

生:议论并说自己的想法。(冒泡排序的过程)

由于视频播放相对较快,为了让学生更好理解与参与,老师还根据具体情况请了四位涌跃分子来作下一个游戏。

请四位同学从前到后坐好并拿好老师给你们的数字,然后从后面开始两个两个比较你们手中的数,如果后面的同学数小的话就和前面的同学换一下座位,直到拿到最小数的同学坐在第一个位子为止。

现在开始,请其他同学注意观察。

请同学们说说你们看到了什么?

生:议论并说自己的想法

师:我听到了同学们的发言了,你们都看到了最小数已经在最前面了,并且是经过了3次的比较。想一想,如果要让拿第二小的数的同学坐上第二个座位,还要进行几次的比较呢?(注意只能从后开始两两比较)请拿数的同学演示一下。几次?

生:两次

师:对了,是两次,比第一次少了一次。请四位同学回到座位。刚才我们通过四位

同学的演示其实给我们展示了一种数据排序的方法---冒泡法。那么什么是冒泡排序法呢?

冒泡排序法:是指把n 个要排序的数看成一垂直列,从最下面的数开始两两比较相邻的两个数,把小的数向上换,经过n-1次处理以达到排序目的的一种排序方法。(课件展示)

分析总结学生的演示:(课件展示)

第1次冒泡排序时 j 从 4 开始到2:

第2次冒泡排序时 j 从 4 开始到3:

第3次冒泡排序时 j 从 4 开始到

4

如果用伪代码可表示为:

第1次冒泡排序时 j 从 4 开始到2:

for (j=4;j>=2 ,j--)

if (d[j]

第2次冒泡排序时 j 从 4 开始到3:

for (j=4;j>=3 ,j--)

if ( d[j]

第3次冒泡排序时 j 从 4 开始到4:

for (j=4;j>=4 ,j--)

if ( d[j]

问:如果我们用一个变i (值分别为1,2,3)来记录冒泡的次数,请问能否将上述的三次代码合并成一段通用的代码呢?

生:能(学生讲伪代码)

for ( j= 4,j>=i+1,j--)

if ( d[j]

师:对

归纳分析引入核心代码:

当i=1到3时:(课件展示)

for (j= 4;j>=i+1;j--)

if ( d[j]

那么,我们用我们学过的循环语句就可以把某一次的比较表示为:(课件展示) for (j= 4;j>=i+1;j--)

if ( d[j]

问:这只是某一次比较的代码,那么我们怎么把是第几次体现出来呢?(提示:i 是用来记录次数的)

生:思考

师:其实,我们可以在刚才的循环外再加一层循环,使i 也参与变化,以达到对次数的控制(课件展示)

for (i=1;i

for (j=4 ;j>= i+1;j--)

if ( d[j]

这种在循环体内又有一个循环的格式我们称为双重循环。对于双重循环,在执行时只要明白:“外变一,内一轮”的思路,我们就是对它进行剖析。

刚才我们已经讲解了4个数冒泡排序的代码,那么有n 个数呢?(课件展示)

for (i=1;i

for (j=n ;j>= i+1;j--)

if ( d[j]

分析冒泡排序的源程序(用tc 编辑器演示分析)

为了进一步检验学生的情况,老师作了问题延伸:

编写一个评分系统的代码段:有10个评委,最后得分为去掉一个最高分与一个最低分后的平均分。(提示:排序后要将最小和最大的数去除,再累加其余各数并除以8)。

【案例反思】

1、本课时采用通过对冒泡排序的基本方法进行分析,利用视频、游戏等多种教

学手段,采用正向讲解算法思想,总结规律,归纳算法等方法,一方面使学生顺利从排序的思想过渡到伪代码并到代码的书写,逐步引出双循环和冒泡排序的程序实现,另一方面培养学生观察算法,分析算法和使用算法的双向思维意识和发散思维能力,提高学生自觉能力和独立思考能力,体现了在课程教学中培养学生综合素质的教育思想。

2、老师要注意讲授时间,要能及时调节课堂气氛,防止学生课内思维疲劳。

C 语言程序设计冒泡排序教学案例

永川职业教育中心 杨进

【案例背景】

排序是计算机学科中一项复杂而重要的技术,在各种软件中使用频率都很高,因此专家们研究了各种排序算法。在中职类设计课程教学中,常以冒泡排序来讲解排序的原理,它简单,但过程繁琐, 传统教学很难激发学生兴趣,学生不易理解,也很难编写掌握冒泡排序。因此,如何合理设计教学过程,让学生掌握冒泡排序的思想和编程方法,又能发散思维,扩充知识,进而激发学生对编程课程的兴趣,是一个关键问题。

1、学情分析

学生已学习了程序设计的三种结构,学习使用了数组。但在学习排序算法的过程中学生可能会对数组变量的变化在理解上存在一定困难,在排序算法中,对双重循环内外层的作用及有关循环参数的设置可能会产生一些不合理或是错误,需要通过实践的体验进行强化使用规范。

2、教学目标

知识目标:掌握冒泡排序的原理;能结合冒泡排序的原理看懂冒泡排序的主要代码;理解冒泡排序的流程图;

能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,进一步体会算法与程序实现的关系;

情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的读程习惯;

3、教学重点、难点

重点:冒泡排序算法的基本思想,双重循环应用

难点:双重循环程序的解读,冒泡排序算法实现后对程序的理解

4、教学策略与手段

以循序渐进、层层深入为教学的指导方针,采用讲解法、演示法、讨论合作、分析归纳法引导学生参与思考,由特殊到一般,有效地突出重点突破难点,逐步深化对冒泡算法、循环思想和执行过程的理解。

5、课前准备

PPT 课件、冒泡排序的视频文件。

【案例描述】

师:在前面的学习中,我们学过了用EXCEL 进行一些简单的数据处理方法,请同学们说说看你是怎么对同学的成绩排次序的?

生:先选好数后,点排序就行了。

师:是的。只要用EXCEL 的排序功能就可以了,点点鼠标就能完成。在前面的学习中,我们已经解开了很多单击鼠标就可以完成某一个任务的秘密,今天我们就来探访一下排序的秘密。

师:先让我们来做个舞蹈视频,同时要求同学们谈谈看后的自己的想法。并要请几位同学模拟示范。

这段真人编排的排序算法的舞蹈视频,非常生动有趣,能充分吸引学生的眼球,极大激发了学生的兴趣。

播放完毕,老师提问:请同学们说说你们看到了什么?

生:议论并说自己的想法。(冒泡排序的过程)

由于视频播放相对较快,为了让学生更好理解与参与,老师还根据具体情况请了四位涌跃分子来作下一个游戏。

请四位同学从前到后坐好并拿好老师给你们的数字,然后从后面开始两个两个比较你们手中的数,如果后面的同学数小的话就和前面的同学换一下座位,直到拿到最小数的同学坐在第一个位子为止。

现在开始,请其他同学注意观察。

请同学们说说你们看到了什么?

生:议论并说自己的想法

师:我听到了同学们的发言了,你们都看到了最小数已经在最前面了,并且是经过了3次的比较。想一想,如果要让拿第二小的数的同学坐上第二个座位,还要进行几次的比较呢?(注意只能从后开始两两比较)请拿数的同学演示一下。几次?

生:两次

师:对了,是两次,比第一次少了一次。请四位同学回到座位。刚才我们通过四位

同学的演示其实给我们展示了一种数据排序的方法---冒泡法。那么什么是冒泡排序法呢?

冒泡排序法:是指把n 个要排序的数看成一垂直列,从最下面的数开始两两比较相邻的两个数,把小的数向上换,经过n-1次处理以达到排序目的的一种排序方法。(课件展示)

分析总结学生的演示:(课件展示)

第1次冒泡排序时 j 从 4 开始到2:

第2次冒泡排序时 j 从 4 开始到3:

第3次冒泡排序时 j 从 4 开始到

4

如果用伪代码可表示为:

第1次冒泡排序时 j 从 4 开始到2:

for (j=4;j>=2 ,j--)

if (d[j]

第2次冒泡排序时 j 从 4 开始到3:

for (j=4;j>=3 ,j--)

if ( d[j]

第3次冒泡排序时 j 从 4 开始到4:

for (j=4;j>=4 ,j--)

if ( d[j]

问:如果我们用一个变i (值分别为1,2,3)来记录冒泡的次数,请问能否将上述的三次代码合并成一段通用的代码呢?

生:能(学生讲伪代码)

for ( j= 4,j>=i+1,j--)

if ( d[j]

师:对

归纳分析引入核心代码:

当i=1到3时:(课件展示)

for (j= 4;j>=i+1;j--)

if ( d[j]

那么,我们用我们学过的循环语句就可以把某一次的比较表示为:(课件展示) for (j= 4;j>=i+1;j--)

if ( d[j]

问:这只是某一次比较的代码,那么我们怎么把是第几次体现出来呢?(提示:i 是用来记录次数的)

生:思考

师:其实,我们可以在刚才的循环外再加一层循环,使i 也参与变化,以达到对次数的控制(课件展示)

for (i=1;i

for (j=4 ;j>= i+1;j--)

if ( d[j]

这种在循环体内又有一个循环的格式我们称为双重循环。对于双重循环,在执行时只要明白:“外变一,内一轮”的思路,我们就是对它进行剖析。

刚才我们已经讲解了4个数冒泡排序的代码,那么有n 个数呢?(课件展示)

for (i=1;i

for (j=n ;j>= i+1;j--)

if ( d[j]

分析冒泡排序的源程序(用tc 编辑器演示分析)

为了进一步检验学生的情况,老师作了问题延伸:

编写一个评分系统的代码段:有10个评委,最后得分为去掉一个最高分与一个最低分后的平均分。(提示:排序后要将最小和最大的数去除,再累加其余各数并除以8)。

【案例反思】

1、本课时采用通过对冒泡排序的基本方法进行分析,利用视频、游戏等多种教

学手段,采用正向讲解算法思想,总结规律,归纳算法等方法,一方面使学生顺利从排序的思想过渡到伪代码并到代码的书写,逐步引出双循环和冒泡排序的程序实现,另一方面培养学生观察算法,分析算法和使用算法的双向思维意识和发散思维能力,提高学生自觉能力和独立思考能力,体现了在课程教学中培养学生综合素质的教育思想。

2、老师要注意讲授时间,要能及时调节课堂气氛,防止学生课内思维疲劳。


相关文章

  • C程序设计毕业论文
  • 摘 要 <C 程序设计>作为各大院校必修课程之一.因为C 语言是计算机程序语言的入门语言.课程中一些难以理解的程序算法,传统的书本加教师讲授的学习模式往往花费了大量的时间,而学生却难以完全理解和接受.而利用多媒体CAI 课件,通 ...查看


  • 数据结构课程设计-综合排序
  • 东华理工大学 课程设计报告 课程设计题目: 综合排序的设计 学生姓名:何杨 班 级:1223202 专 业:信息与计算科学 指导教师:郭树蕻 2014年 12 月 13 日 目录 摘要 ........................... ...查看


  • 数据结构选择题集锦
  • 单项选择 ( B ) 1. 通常所说的主机是指∶ A) CPU B) CPU和内存 C) CPU.内存与外存 ( C )2. 在计算机内部,一切信息的存取.处理和传送的形式是∶ A) ACSII码 B) BCD码 C) 二进制 D) 十六进 ...查看


  • C语言冒泡.插入法.选择排序算法
  • C 语言中三种常见排序算法分析 一.冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序. 算法分析:如果有n 个数,则要进行n-1趟比较.在第1趟比较中要进行n-1次相邻元素的两两比较,在第j 趟比较中要进行n-j 次两两比较.比较 ...查看


  • 银监会专业笔试
  • 2015年的银监会计算机类专业科目笔试的真题.举例如下: [例1]"science"是XML 中一个元素的定义,其中元素的内容是( ). A.title B.style C.italic D.science [例2]SQ ...查看


  • 软件基础答案电子版
  • 一.填空 1. 软件从传统上可以分为两大类,一类为系统软件,如操作系统:另一类为应用软件. 2. 算法是由若干计算机指令组成的有穷序列,其有穷性.确定性和可行性和输入输出特性 是算法的五大基本特征. 3. 面向对象程序设计以类作为构造程序的 ...查看


  • 数据结构课程设计实验报告心得体会C++
  • 专业班级:姓 名:学 号:设计时间:指导教师: 排序算法比较分析 08软件工程2班 汪伟 08010xxxxx 2010-9-15--2010-9-27 杨薇薇 课程设计报告的内容 一.题目:排序算法比较 1. 设计目的 1. 掌握各种排序 ...查看


  • 数据结构导论试题1
  • 全国2004年10月高等教育自学考试 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为( ) A.逻辑结构.存储结构.机外表示 B.存储结构.逻辑结构.机外表示 C.机外表示.逻辑结构.存储结构 D.机外表示.存储结构. ...查看


  • 进制转换和排序习题
  • 进制转换.逻辑判读.排序专项习题 一.选择题 1.设字符串S="Olympic ",S 的非空子串的数目是( ). A. 29 B. 28 C. 16 D. 17 E. 7 2.将数组{8, 23, 4, 16, 77, ...查看


热门内容