基于翻转课堂的冒泡排序算法的函数实现设计

2018-01-04 12:02边倩王振铎陈晓范王振辉
电脑知识与技术 2018年29期
关键词:翻转课堂函数

边倩 王振铎 陈晓范 王振辉

摘要:在C语言中,函数是完成相对独立功能的一段程序,函数的应用突出C是函数式的语言特征。冒泡排序算法是C语言程序设计的经典案例,算法涉及C语言的数组的使用、循环的应用。该文将冒泡排序算法的实现与函数结合起来,采用层层递进的方式分析了算法的函数实现过程。利用翻转课堂的教学模式,尝试将函数实现的三要素:函数定义、函数调用、参数传递融入算法的实现过程中,目的在于使学生能够灵活运用数组,掌握用数组来解决一系列问题的方法和技巧;进一步提高学生综合运用函数的能力。

关键词:翻转课堂;函数;冒泡排序算法

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2018)29-0095-03

1 引言

翻转课堂“The Flipped Classroom”,作为一种基于信息技术的新型教学模式,近年来在国内外颇受关注。翻转课堂不是在线课程,它是直接指导和建议式学习的混合模式;翻转课堂并非用视频替代教师,它是一种增加师生互动的方法;翻转课堂为学生提供了一个自主学习的环境,让学生都能跟进学习进度,获得个性化教育[1]。将翻转课堂理念引入到程序设计类课程的教学中,强调“学生自主学习+教师引导解惑”的教学模式,提高教学效果,达到培养学生计算机实际动手能力的目的。

本讲翻转课堂内容隶属C语言程序设计这门课程。在计算机教育方面,C语言是为数不多的与国外保持内容同步的课程之一,在本科生教学中的地位之重要不言而喻,因而,它是全校各專业本科教学中的一门重要公共技术基础课,初步系统地介绍了结构化程序设计的思想和方法。课程教学要求学生在掌握相关C语言的语言知识,编程技术的基础上进一步掌握程序设计的思想和方法,进而用编程手段来解决各种实际问题。由于C语言是许多后续专业课程的基础,因此,在本科生教学体系中,C语言教学仅是起点,而非终点。在课程教学思路,借助程序设计的知识作为载体,通过传授基本问题的求解过程和基本思路,力求让学生逐步建立用编程手段来解决人们遇到的各式各样问题的计算思维。旨在培养学生分析问题,解决问题的能力。为了培养计算思维能力,课程重点放在讲思路上。授课理念为:以基础概念和结构为主线,以程序设计方法和解题思路为核心[2]。本讲翻转课堂内容的设计思路是将函数、数组知识点有机地融入微课中,利用冒泡排序算法案例,合理的设计翻转课堂内容,使学生通过课下自学能够充分掌握所学内容。

2 本讲教学总体思想

本讲翻转课堂的设计思想是:以算法设计为主线,函数应用为目的展开整个教学活动的[3]。首先,从应用方面进行问题导入,引起学生的兴趣。接下来,从算法设计角度出发,进行算法分析,培养学生的逻辑思维能力。然后,用函数实现算法,培养学生的程序设计能力;进而培养学生函数的应用能力。最后,提出算法的优化改进,扩展学生的思维。

3 翻转课堂设计

3.1 课程引入

课程首先引入函数的功能特性。对于大型程序的开发,实现的方法往往采用自顶向下,分而治之的方法,即将程序按功能分割成相对独立的模块,那么每一个相对独立的模块用什么来实现呢?就是函数。所以说:函数是一段可以重复调用的,功能相对独立的完整的一段程序。如图1所示。

接下来,向学生进一步提出问题:函数功能如何实现?

向学生总结出函数实现的三要素:函数定义、函数调用、参数调用[4]。首先要定义好函数,函数的定义包括函数首部和函数体,函数体先进行声明,然后是语句设计;接下来,函数必须通过调用才能实现其功能,函数调用有三种形式:函数语句调用、函数表达式调用,函数参数调用;最后,在函数调用时,要完成函数参数的传递,将实际参数传递给形参。函数定义是功能的设计,函数调用和参数传递是功能的实现。为了说明函数的实现三要素,以冒泡排序算法函数设计为例来理解函数的三要素。图2所示为微课堂函数三要素讲解。

3.2 冒泡排序算法函数设计

通过对函数的实现的三要素解析,用冒泡排序算法的实现来剖析函数实现的三要素。具体给出算法实现的流程分析和函数设计。

1) 冒泡排序的基本思想[4]

先以五个随机数由小到大的排序过程为例,说明冒泡排序算法的基本思想。通过排序过程的动画演示,分析出排序的核心思想是:相邻者比较,逆序则交换。对于n个数,共进行n-1趟排序,在第j趟排序中共两两比较n-j次。

2)提取要点

通过排序的动画演示过程及核心思想分析,梳理思路,提取排序过程的要点。

排序采用什么样的数据结构来实现?一维数组。

如何实现比较的趟数和每趟两两比较次数,二重循环。

如何进行每趟的两两比较?相邻元素,逆序交换。

3) 冒泡排序的算法设计

介绍冒泡排序流程分析时,采用提取要素及推演归纳的方法。首先提取算法实现的关键要素,然后对算法的实现过程推演归纳,给出算法实现的流程。在要点分析的基础上,进一步来进行排序算法流程设计。设:j 为外循环控制变量,i 为内循环控制变量。第一步,确定排序趟数,n-1趟,这是外循环,循环语句为:控制变量J初值从零开始,控制条件是小于n-1,第二步,确定第J趟两两比较的次数,n-j次,这是内循环,循环语句为:i初值为0,控制条件为n-j-1。最后,确定第j趟待排序元素依次比较交换,用条件表达式实现,如果前一个元素a[i]大于后一个元素a[i+1],则进行交换。

4) 冒泡排序算法函数实现

介绍冒泡排序函数实现时,采用逐层递进的方法,在流程分析的基础上,按照函数设计的三要素,层层递进完成函数设计。依据算法流程设计,来实现排序函数功能。根据前面分析的算法流程,和函数定义格式[5],完成函数设计。如图2所示。

首先设计函数首部。由于排序不带回返回值,所以函数类型为void。这里我们给函数取名bubble(形参表?),根据前面的分析,可以知道,此处形式参数为:排序数组和待排序元素(这里设排序整形数组为a,排序元素个数为n);

5) 冒泡排序算法主函数设计

排序算法的函数虽然设计好了,但是,并没有实现其功能。函数必须通过调用,才能完成功能的实现。下面来设计主调函数。主调函数的语句设计中,启发学生思考主调函数主要完成的任务:排序元素的输入;调用排序函数实现元素排序;将排序结果输出。这里排序元素个数采用宏定义来完成。

6)函数调用及参数传递

主函数中设计中,如果定义的排序函数置于主调函数后面,在主函数里要对被调函数进行声明。翻转课堂的视频讲解中要向学生强调:函数声明要同函数定义的类型、名称、参数保持一致。如何进行调用呢?根据学习的内容,应该知道,采用函数语句的调用形式,调用时要进行参数的传递了。重点强调,参数传递为实际参与比较的参数传递给函数定义的形式參数。

3.3 思维扩展

完成了排序算法的函数实现翻转课堂设计,为了启发学生扩展思维,案例设计中突出某趟排序已经有序(例如第四趟排序),如图4所示。在执行第4趟排序时,没有发生数组元素交换,表明此时数组已经达到有序[6],若让排序继续执行没有实际意义。

能否从“优化”角度出发对算法加以改进?请学生们在学完本次课程之后,课后完成优化程序的设计,课堂上进行程序设计优化算法的讨论。

3.4 内容小结

针对函数的综合应用,设计了本讲翻转课堂。内容的设计上突出函数的含义、冒泡排序算法的函数设计。对函数实现分,重点完成剖析算法思想和算法流程,通过算法的函数实现设计,目的是让学生更深入的理解函数功能实现的基本三要素。翻转课堂小结内容设计如图5所示。

4 结束语

基于程序设计课程的翻转课堂教学模式的探索研究实现的目标是:探索基于翻转课堂的《C语言程序设计》课程中的教学实施模式和策略。翻转课堂首先是以学生自主学习为中心的一种学习方式的探索[7],作为教师需要了解学生有什么样的学习需求,教师要根据学习内容,认真组织设计好讲授内容,便于学生课下自主反复认真学习教学内容,启发学生独立思索讲授内容。

参考文献:

[1] 刘英.基于“翻转课堂”的课程教学改革[J].中国高等教育,2016(18):36-38.

[2] 范青刚,蔡艳宁,王丽,等.C语言函数教学方法研究[J].电脑知识与技术,2017,13(8):161-162.

[3] 边倩,王振铎.基于慕课的“C语言程序设计”课程翻转课堂教学模式的探索研究[J].微型电脑应用,2018,34(3):35-37.

[4] 边倩,焦康,王忠.“C语言程序设计”课程数组教学方法的探索[J].计算机工程与科学,2014,36(S2):101-103.

[5] 朱安平.一种C语言函数教学的设计与实践[J].计算机工程与科学,2014,36(S1):139-142.

[6] 代文征.高效冒泡排序算法设计与实现[J].软件导刊,2016,15(6):63-64.

[7] 王鉴.论翻转课堂的本质[J].高等教育研究,2016,37(8):53-59.

【通联编辑:朱宝贵】

猜你喜欢
翻转课堂函数
二次函数
二次函数
函数备考精讲
基于翻转课堂的高职英语口语教学研究
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
翻转课堂在小学数学教学中的应用