论文部分内容阅读
摘 要:“程序设计”课程是数学专业重要的必修课,针对“程序设计”课程内容的特点,采用混合式的教学方法,根据课程具体的内容特点以及数学专业学生的学习情况,采用不同的教学方法进行教学,把枯燥的程序设计语言的语法、规则等内容变的易于学生理解和接受,对提高学生学习效率有较好的效果。
关键词:混合式教学法;程序设计课程;数学专业
中图分类号:TP311.1-4 文献标识码:A 文章编号:2096-4706(2019)08-0101-03
Abstract:“C Language Programming” courses is an important required course,mathematics according to the characteristics of the “C Language Programming” course content,teaching method,adopt the hybrid according to the content and features of the courses and mathematics majors,adopt different teaching methods in teaching,it is easy for students to understand and accept the grammar and rules of dull programming language,which has a good effect on improving students’learning efficiency.
Keywords:hybrid teaching method;programming course;mathematics major
0 引 言
隨着信息社会的发展与变化,数学专业的“C语言程序设计”课程(以下简称:“程序设计”课程)也面临巨大的挑战,为适应教学改革的发展,“程序设计”课程的教学模式、教学内容需要不断地更新。“程序设计”课程是计算机专业课程体系的核心课程,也是诸多非计算机专业的理工科专业课程体系的基础课程。“程序设计课程”对数学专业学生知识结构的构建是很重要的,对培养学生分析问题、构建解决问题方案的能力有着不可替代的作用。通过“程序设计”课程的学习,挖掘学生对数学专业的学习兴趣,调动学生的专业课学习热情,把相对乏味的数学融入到程序设计过程中,提高学生对新知识和新技术的敏感性,培养学生的专业探索精神,使学生能够更好地适应社会的发展。
1 程序设计课程教学存在的问题
首先,“程序设计”课程是数学专业开设的第一门涉及程序设计的课程,对多数学生而言,编程是全新的概念,“程序设计”课程包含理论教学与实践教学两部分内容,理论教学包括编程思想、编程原理教学等,实践教学包括在编程环境下,编写源程序、编译程序教学等。面对新的知识,在课程的理论与实践环节,学生都会感觉到压力与困难。
其次,一方面,由于课时有限,而“程序设计”课程各章节之间的内容相对独立,如基本内容部分主要是程序设计的规范,包括变量名命名规则、语句的书写规则以及保留字等,内容的知识点之间没有很强的关联,也就是说,课程内容之间的关联与衔接不是很明显;另一方面,在应用或实例部分,程序设计则体现了对知识的综合运用的课程形态。课程内容存在的这些问题,增加了学生理解与掌握知识的难度。
2 混合式教学方法的运用和与实施
所谓混合式教学方法,是对教学环节中不同的内容、知识点采用不同的教学方法进行教学,使教学内容让学生更易于接受的方法。
2.1 虚拟现实辅助教学法
传统的“程序设计”课程教学,大多采用从“概念到实验”的简单的教学模式,极易造成原理与实践相脱节的现象,为了完成教学内容,大多数老师只能采用“大容量、快节奏”的教学方式,造成了教学容量大,而出现了部分学生对这样节奏快、容量大的课不适应的现象,教学步入“负担重、效率低”怪圈,导致课堂教学效果很不理想。虚拟现实技术恰好弥补了传统教学方法的不足,因为虚拟现实技术可以模拟实验过程中每个过程的结果,让学生及时了解程序设计基本算法实现的来龙去脉、前因后果,更好地理解算法中涉及的数学思想与数学模型,并充分利用虚拟现实的仿真技术模拟实验环境,通过网络的先进技术,打破传统的教学模式与方法。一方面,它可以给“程序设计”课程教学提供更丰富的实验过程、细节和实验结果,帮助学生加深对程序运行流程及算法的理解;另一方面,它可以打破传统教学各环节的时空限制,在实现教学信息的高度有秩序、大容量共享的同时,提供给学生一个模拟的实践环境,从而全方位的通过实现人与计算机、人与人的交流来提高“程序设计”课程教学的效率,从而达到提高教学效率的目的。
“程序设计”课程中每一条语法,都有其实际的意义以及具体的操作,在编程、解决实际问题中发挥着作用。在程序设计语法的教学过程中,通过虚拟现实的方法,将程序运行过程形象地表现出来,将程序运行“透明化”,有助于加深对相关知识点的理解,如变量声明、变量初始化、变量的类型等,这些术语看似抽象不好理解,其实描述的都是数据对内存的读与写的一系列操作,但这些操作的过程是看不见摸不着的,对初学者来说,是一个较难掌握的难点。变量声明是分配内存的基本操作,规定内存的类型是更高效地管理内存,变量初始化是写内存操作等,由于内存的运行是看不见的,因此,教学过程配合带有交互式的虚拟现实课件,将内存运行过程形象表现出来,将抽象的过程形象化。
2.2 类比教学法
“程序设计”课程内容中的常量、变量和函数是程序设计语言中的基本内容之一,而常量、变量和函数的概念来源于数学,但与数学中的概念又不完全相同。 数学中函数的概念,从初一的一次函数开始到高三的二次曲面都与函数概念密不可分,也就是说,函数的概念贯穿于整个中学数学的内容之中,学生对函数的概念并不陌生,因此,程序设计语言中常量、变量和函数的教学内容,可采用类比教学方法。例如:以两个函数概念的异同为切入点,围绕比较两者之间的关系、性质与功能展开讨论,通过比较的方式,把程序设计语言中函数的概念讲透。数学中的函数是一个没有被赋予任何实际意义的抽象概念,自变量与因变量相互依存,缺一不可,强调自变量与因变量的映射关系,定义域和值域并存。当函数关系可以用一个解析式表示时,函数关系往往表现为一个计算公式。
(1)两个不同函数定义的比较。程序设计语言的函数来源于数学,它关于函数的定义(以下简称:函数定义1)的格式如下:
类型名 函数名(类型名1 参数名1,类型名2 参数名2,…)={函数体}
数学中关于(多元)函数的定义(以下简称:函数定义2)为:
设D为一个非空的n元有序数组的集合,f为某一确定的对应规则。若对于每一个有序数组(X1,X2,…,Xn)∈D,通过对应规则f,都有唯一确定的实数y与之对应,则称对应规则f为定义在D上的n元函数。
函数定义1中的参数相当于函数定义2中的自变量,给定自变量(参数)的值,通过关系,都有函数值与之对应,但是,定义1的函数值有确定的数据类型,定义2的函数值没有具体的类型。在教学过程中通过这样的比较,可以让学生更好地理解程序设计语言中函数的内涵。
(2)有参函数与无参函数的比较。在程序设计语言关于函数的定义1中,参数相当于自变量,返回值相当于因变量(函数),一个参数相当于一元函数,两个参数就相当于二元函数,等等,返回值只能有一个。参数的个数可以取0,没有参数,称为无参函数,无参数函数的函数名后面的括号里是空的,没有参数列表。无参函数也可以有返回值,也可以是某个操作功能等,这是与数学上函数定义不同的,在函数定义2中,自变量的个数至少是一个,数学中关于函数的定义必须有自变量。
(3)有返回值与无返回值的比较。程序设计语言中带参数的函数功能更加强大,也更加灵活。与此相反,有的函数有参数但是没有返回值。一般情况下,程序设计语言中的无返回值函数,函数名需用void保留字修饰,无参数而有返回值的函数一定要声明其返回值的类型。
(4)结构体与二维表格的比较。在程序设计语言中,结构体是一种自定义数据类型,也是C++中类的原型,结构体与类的区别在于前者不带函数,结构体在程序设计语言教学内容中是非常重要的。结构体是对二维表格结构的描述,用结构体声明的变量,其真正的目的就是分配内存的复合单元,用于存放二维表格某一行的數据。因此,在教学过程中,可将结构体的内容与二维表格的结构进行比较,让学生真正理解结构体的定义、声明变量的目的,进而加深理解结构体数据类型以及结构体变量的内涵,更好地掌握对结构体变量的读写操作。
(5)嵌套调用与复合函数的比较。复合函数通俗地说就是函数套函数,是把几个简单的函数复合为一个较为复杂的函数。复合函数中不一定只含有两个函数,有时可能有两个以上函数,如y=f(u),u=φ(v),v=ψ(x),则函数y=f{φ[ψ(x)]}是x的复合函数,u、v都是中间变量。
而在程序设计语言中,函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。
在程序设计语言中,函数的调用是一级调用一级,可以嵌套,甚至可以自己调用自己(递归),所有定义的函数都是用来被调用的,所以都是被调函数。但是,某些函数又调用了其他函数,所以,就是相对的主调函数了。主调用和被调,就类似于父与子,子与孙,……,是相对的。main()主函数是程序的入口点。
总之,将旧知识与新知识进行比较,利用旧知识理解、掌握新知识,是提高学习效率和构建知识结构的有效方法。在实际的课堂教学过程中,教师需要在备课时,找到新知识与旧知识相似的内容,有机融入教学过程中。所以,利用旧知识理解新知识更多是一种学习框架和指导理念。同时又需要学习者对旧知识拥有全栈的知识结构和系统化的知识树,这两者的建立又依赖于“利用旧知识理解新知识”。通过分析、类比、对比,将掌握的旧知识,提炼及找出其规律,平移到新的知识上来,实现更好地理解和掌握新知识。
2.3 任务驱动教学法
任务驱动教学法根据教学要求设计出具有实际意义的、符合学生认知水平的任务,把教学内容隐含在任务中,当学生能在教师的指导下或学生自己能独立地完成任务时。学生也就建构了本节课所学的新知识体系。
“程序设计语言”是一门工具性的课程,教学的最终目的是让学生能够运用程序设计去解决实际问题,教学内容中的实例具有目标具体,内容实用的特点,教学目标清楚明确,在教学过程中,教师根据教学内容设计教学任务,教学过程以解决任务为中心,以完成任务为目标,不求理论的系统性,只求内容的实用性,以此为目标展开教学,培养学生发现问题、解决问题的综合应用能力,提高学生对学习的主动参与意识,激发学生的学习兴趣。
3 结 论
“程序设计”课程的教学目的是培养学生的编程思想与方法,使学生深刻理解编程原理与程序运行机制,在解决实际问题中灵活运用,因此,在教学过程中,对教学内容进行细分,根据不同的、具体的教学内容,运用不同的教学方法,制定不同的教学方案,针对不同的教学内容,从教学方法、实践教学和评价体系等角度提出针对性的教学改革方案并组织教学,对提高C语言教学效果,让学生更好地理解掌握编程思想与程序运行机制,对培养学生运用计算机编程方法去解决实际问题有积极的意义。
参考文献:
[1] 宛西原,汪霞.非计算机本科专业计算机程序设计课程的改革思考 [J].计算机工程与科学,2014,36(S1):56-59.
[2] 张云峰,高春颖,刘俊,等.《程序设计基础》实验教学模式改革研究 [J].计算机工程与科学,2016,38(S1):265-268.
[3] 秦新强,赵凤群,赵康,等.大学数学实践教学改革的探索 [J].中国大学教学,2012(11):16-17.
[4] 陈晓龙,彭志平.计算机科学与技术特色专业建设研究与实践 [J].计算机教育,2013(6):61-63+67.
[5] 丁海燕.计算机程序设计课程中计算思维的培养 [J].实验技术与管理,2015,32(12):16-18+21.
作者简介:赵智(1962.10-),男,壮族,广西龙州人,副教授,毕业于广西师范大学数学系,本科,主要研究方向:虚拟现实技术、智能计算。
关键词:混合式教学法;程序设计课程;数学专业
中图分类号:TP311.1-4 文献标识码:A 文章编号:2096-4706(2019)08-0101-03
Abstract:“C Language Programming” courses is an important required course,mathematics according to the characteristics of the “C Language Programming” course content,teaching method,adopt the hybrid according to the content and features of the courses and mathematics majors,adopt different teaching methods in teaching,it is easy for students to understand and accept the grammar and rules of dull programming language,which has a good effect on improving students’learning efficiency.
Keywords:hybrid teaching method;programming course;mathematics major
0 引 言
隨着信息社会的发展与变化,数学专业的“C语言程序设计”课程(以下简称:“程序设计”课程)也面临巨大的挑战,为适应教学改革的发展,“程序设计”课程的教学模式、教学内容需要不断地更新。“程序设计”课程是计算机专业课程体系的核心课程,也是诸多非计算机专业的理工科专业课程体系的基础课程。“程序设计课程”对数学专业学生知识结构的构建是很重要的,对培养学生分析问题、构建解决问题方案的能力有着不可替代的作用。通过“程序设计”课程的学习,挖掘学生对数学专业的学习兴趣,调动学生的专业课学习热情,把相对乏味的数学融入到程序设计过程中,提高学生对新知识和新技术的敏感性,培养学生的专业探索精神,使学生能够更好地适应社会的发展。
1 程序设计课程教学存在的问题
首先,“程序设计”课程是数学专业开设的第一门涉及程序设计的课程,对多数学生而言,编程是全新的概念,“程序设计”课程包含理论教学与实践教学两部分内容,理论教学包括编程思想、编程原理教学等,实践教学包括在编程环境下,编写源程序、编译程序教学等。面对新的知识,在课程的理论与实践环节,学生都会感觉到压力与困难。
其次,一方面,由于课时有限,而“程序设计”课程各章节之间的内容相对独立,如基本内容部分主要是程序设计的规范,包括变量名命名规则、语句的书写规则以及保留字等,内容的知识点之间没有很强的关联,也就是说,课程内容之间的关联与衔接不是很明显;另一方面,在应用或实例部分,程序设计则体现了对知识的综合运用的课程形态。课程内容存在的这些问题,增加了学生理解与掌握知识的难度。
2 混合式教学方法的运用和与实施
所谓混合式教学方法,是对教学环节中不同的内容、知识点采用不同的教学方法进行教学,使教学内容让学生更易于接受的方法。
2.1 虚拟现实辅助教学法
传统的“程序设计”课程教学,大多采用从“概念到实验”的简单的教学模式,极易造成原理与实践相脱节的现象,为了完成教学内容,大多数老师只能采用“大容量、快节奏”的教学方式,造成了教学容量大,而出现了部分学生对这样节奏快、容量大的课不适应的现象,教学步入“负担重、效率低”怪圈,导致课堂教学效果很不理想。虚拟现实技术恰好弥补了传统教学方法的不足,因为虚拟现实技术可以模拟实验过程中每个过程的结果,让学生及时了解程序设计基本算法实现的来龙去脉、前因后果,更好地理解算法中涉及的数学思想与数学模型,并充分利用虚拟现实的仿真技术模拟实验环境,通过网络的先进技术,打破传统的教学模式与方法。一方面,它可以给“程序设计”课程教学提供更丰富的实验过程、细节和实验结果,帮助学生加深对程序运行流程及算法的理解;另一方面,它可以打破传统教学各环节的时空限制,在实现教学信息的高度有秩序、大容量共享的同时,提供给学生一个模拟的实践环境,从而全方位的通过实现人与计算机、人与人的交流来提高“程序设计”课程教学的效率,从而达到提高教学效率的目的。
“程序设计”课程中每一条语法,都有其实际的意义以及具体的操作,在编程、解决实际问题中发挥着作用。在程序设计语法的教学过程中,通过虚拟现实的方法,将程序运行过程形象地表现出来,将程序运行“透明化”,有助于加深对相关知识点的理解,如变量声明、变量初始化、变量的类型等,这些术语看似抽象不好理解,其实描述的都是数据对内存的读与写的一系列操作,但这些操作的过程是看不见摸不着的,对初学者来说,是一个较难掌握的难点。变量声明是分配内存的基本操作,规定内存的类型是更高效地管理内存,变量初始化是写内存操作等,由于内存的运行是看不见的,因此,教学过程配合带有交互式的虚拟现实课件,将内存运行过程形象表现出来,将抽象的过程形象化。
2.2 类比教学法
“程序设计”课程内容中的常量、变量和函数是程序设计语言中的基本内容之一,而常量、变量和函数的概念来源于数学,但与数学中的概念又不完全相同。 数学中函数的概念,从初一的一次函数开始到高三的二次曲面都与函数概念密不可分,也就是说,函数的概念贯穿于整个中学数学的内容之中,学生对函数的概念并不陌生,因此,程序设计语言中常量、变量和函数的教学内容,可采用类比教学方法。例如:以两个函数概念的异同为切入点,围绕比较两者之间的关系、性质与功能展开讨论,通过比较的方式,把程序设计语言中函数的概念讲透。数学中的函数是一个没有被赋予任何实际意义的抽象概念,自变量与因变量相互依存,缺一不可,强调自变量与因变量的映射关系,定义域和值域并存。当函数关系可以用一个解析式表示时,函数关系往往表现为一个计算公式。
(1)两个不同函数定义的比较。程序设计语言的函数来源于数学,它关于函数的定义(以下简称:函数定义1)的格式如下:
类型名 函数名(类型名1 参数名1,类型名2 参数名2,…)={函数体}
数学中关于(多元)函数的定义(以下简称:函数定义2)为:
设D为一个非空的n元有序数组的集合,f为某一确定的对应规则。若对于每一个有序数组(X1,X2,…,Xn)∈D,通过对应规则f,都有唯一确定的实数y与之对应,则称对应规则f为定义在D上的n元函数。
函数定义1中的参数相当于函数定义2中的自变量,给定自变量(参数)的值,通过关系,都有函数值与之对应,但是,定义1的函数值有确定的数据类型,定义2的函数值没有具体的类型。在教学过程中通过这样的比较,可以让学生更好地理解程序设计语言中函数的内涵。
(2)有参函数与无参函数的比较。在程序设计语言关于函数的定义1中,参数相当于自变量,返回值相当于因变量(函数),一个参数相当于一元函数,两个参数就相当于二元函数,等等,返回值只能有一个。参数的个数可以取0,没有参数,称为无参函数,无参数函数的函数名后面的括号里是空的,没有参数列表。无参函数也可以有返回值,也可以是某个操作功能等,这是与数学上函数定义不同的,在函数定义2中,自变量的个数至少是一个,数学中关于函数的定义必须有自变量。
(3)有返回值与无返回值的比较。程序设计语言中带参数的函数功能更加强大,也更加灵活。与此相反,有的函数有参数但是没有返回值。一般情况下,程序设计语言中的无返回值函数,函数名需用void保留字修饰,无参数而有返回值的函数一定要声明其返回值的类型。
(4)结构体与二维表格的比较。在程序设计语言中,结构体是一种自定义数据类型,也是C++中类的原型,结构体与类的区别在于前者不带函数,结构体在程序设计语言教学内容中是非常重要的。结构体是对二维表格结构的描述,用结构体声明的变量,其真正的目的就是分配内存的复合单元,用于存放二维表格某一行的數据。因此,在教学过程中,可将结构体的内容与二维表格的结构进行比较,让学生真正理解结构体的定义、声明变量的目的,进而加深理解结构体数据类型以及结构体变量的内涵,更好地掌握对结构体变量的读写操作。
(5)嵌套调用与复合函数的比较。复合函数通俗地说就是函数套函数,是把几个简单的函数复合为一个较为复杂的函数。复合函数中不一定只含有两个函数,有时可能有两个以上函数,如y=f(u),u=φ(v),v=ψ(x),则函数y=f{φ[ψ(x)]}是x的复合函数,u、v都是中间变量。
而在程序设计语言中,函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。
在程序设计语言中,函数的调用是一级调用一级,可以嵌套,甚至可以自己调用自己(递归),所有定义的函数都是用来被调用的,所以都是被调函数。但是,某些函数又调用了其他函数,所以,就是相对的主调函数了。主调用和被调,就类似于父与子,子与孙,……,是相对的。main()主函数是程序的入口点。
总之,将旧知识与新知识进行比较,利用旧知识理解、掌握新知识,是提高学习效率和构建知识结构的有效方法。在实际的课堂教学过程中,教师需要在备课时,找到新知识与旧知识相似的内容,有机融入教学过程中。所以,利用旧知识理解新知识更多是一种学习框架和指导理念。同时又需要学习者对旧知识拥有全栈的知识结构和系统化的知识树,这两者的建立又依赖于“利用旧知识理解新知识”。通过分析、类比、对比,将掌握的旧知识,提炼及找出其规律,平移到新的知识上来,实现更好地理解和掌握新知识。
2.3 任务驱动教学法
任务驱动教学法根据教学要求设计出具有实际意义的、符合学生认知水平的任务,把教学内容隐含在任务中,当学生能在教师的指导下或学生自己能独立地完成任务时。学生也就建构了本节课所学的新知识体系。
“程序设计语言”是一门工具性的课程,教学的最终目的是让学生能够运用程序设计去解决实际问题,教学内容中的实例具有目标具体,内容实用的特点,教学目标清楚明确,在教学过程中,教师根据教学内容设计教学任务,教学过程以解决任务为中心,以完成任务为目标,不求理论的系统性,只求内容的实用性,以此为目标展开教学,培养学生发现问题、解决问题的综合应用能力,提高学生对学习的主动参与意识,激发学生的学习兴趣。
3 结 论
“程序设计”课程的教学目的是培养学生的编程思想与方法,使学生深刻理解编程原理与程序运行机制,在解决实际问题中灵活运用,因此,在教学过程中,对教学内容进行细分,根据不同的、具体的教学内容,运用不同的教学方法,制定不同的教学方案,针对不同的教学内容,从教学方法、实践教学和评价体系等角度提出针对性的教学改革方案并组织教学,对提高C语言教学效果,让学生更好地理解掌握编程思想与程序运行机制,对培养学生运用计算机编程方法去解决实际问题有积极的意义。
参考文献:
[1] 宛西原,汪霞.非计算机本科专业计算机程序设计课程的改革思考 [J].计算机工程与科学,2014,36(S1):56-59.
[2] 张云峰,高春颖,刘俊,等.《程序设计基础》实验教学模式改革研究 [J].计算机工程与科学,2016,38(S1):265-268.
[3] 秦新强,赵凤群,赵康,等.大学数学实践教学改革的探索 [J].中国大学教学,2012(11):16-17.
[4] 陈晓龙,彭志平.计算机科学与技术特色专业建设研究与实践 [J].计算机教育,2013(6):61-63+67.
[5] 丁海燕.计算机程序设计课程中计算思维的培养 [J].实验技术与管理,2015,32(12):16-18+21.
作者简介:赵智(1962.10-),男,壮族,广西龙州人,副教授,毕业于广西师范大学数学系,本科,主要研究方向:虚拟现实技术、智能计算。