C语言程序设计课程实践教学探讨
2018-11-09李桃迎陈燕蒋凡
李桃迎 陈燕 蒋凡
摘 要 C语言程序设计课程不仅是计算机相关专业本科生的必修课程,也是其他非计算机类本科专业的基础课程,由于该课程具有内容多、任务重、实践能力强的难点,本文结合该课程的授课经验,分析了教学中出现的问题,并设计了C语言程序设计课程的实践教学内容,以期对C语言程序设计课程的讲授和学习起到指导与帮助作用。
关键词 C语言 程序设计 面向过程的编程
中图分类号:G424 文献标识码:A DOI:10.16400/j.cnki.kjdkz.2018.09.048
Abstract The C language programming course is not only a compulsory course for undergraduates majoring in computer science, but also a basic course for other non-computer undergraduate majors. Because of its difficulties in content, heavy tasks, and strong practical ability, this course combines the teaching experience of this course. It analyzes the problems in the teaching and designs the practical teaching content of the C language programming course, in order to guide and help the teaching and learning of the C language programming course.
Keywords C language; programming design; process-oriented programming
C语言程序设计课程是一门通用计算机编程语言,同时也是国际上广泛流行的计算机高级语言。对于程序而言,必须包括数据结构——在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,算法——要求计算机进行操作的步骤,是程序的灵魂。
C语言作为计算机程序语言之一,同时具有高级语言的和汇编语言的特点。C语言可以被用作系统设计语言,编写工作系统应用设计,同时也可以被用作应用程序语言,编写不依赖计算机硬件的应用程序。因为C语言的可用范围和途径广泛,所以C语言的应用范围广泛。鉴于此,很多的高校院校都把C语言课程作为基础课程,它是学习其他高级语言的基础,也是嵌入式开发应用最广泛的语言。因此,在高校的教学工作中,更好的教授与学习C语言是值得重视的问题。
1 C语言的主要特点
(1)具有高级语言的特点。C语言是高级语言的基本结构和语句与低级语言的应用实例的结合。C语言可以像汇编语言一样,可以操作计算机最基本的工作单元,如:位、字节和地址。
(2)是结构式语言。结构化方式是将代码与数据进行分割,程序的各个部分除了必要的信息交流外彼此独立,这样的方式就可以使得程序层次清晰,同时也便于使用、维护以及调试。用户得到的是以函数形式获得的C语言,这样的函数可以方便调用,并以其多重循环,条件语句控制程序流向的特点,使程序完全结构化。
(3)功能齐全。C语言可以操作各种类型的数据如:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,并引入指针的概念,使得程序具有更高的效率。相比于其他的计算机程序语言,C语言的计算功能、逻辑判断功能也是比较强大的。
(4)适用范围大。C语言可以应用于DOS、Windows、LINUX、UNIX等多种操作系统;也对多种机型适用。C语言允许直接访问物理地址,可以对硬件进行直接的操作。这些都使得C语言明显优于其他高级语言,有一些大型应用软件也是C语言编写的。
2 C语言程序设计课程的教学重点
2.1 C语言数据的表现形式及其运算
C语言的数据类型(见图1)是C语言的基础,C语言主要是安排了数据的存储单元的长度(占多少字节)和数据的存储形式。C语言对不同类型数据分配不同的存储长度以及存储形式。
2.2 C语言的运算符和表达式
C语言的运算符也有很多的形式,包括:1)基本运算符,也是最常见的运算符,包含单目运算符(正、负)和双目运算符(加减乘除和取余);2)自增运算符(++、--);3)对表达式进行计算时需要同时考虑运算符的优先级以及不同类型数据的混合运算;4)强制类型转换运算符;5)C语言独有的运算符,包含算术、关系、逻辑、位运、赋值、条件、逗号、指针、求字节数、成员、下标等运算符。
2.3 C语言程序的结构设计
C语言的三种基本结构(见图2)是C语言的结构设计基础。除了图2中最简单的三种结构外,比较常见的是混合结构,即存在三种结构的两重或多重嵌套,以此满足程序的复杂逻辑结构和逻辑判断。
2.4 数组与函数
数组是各数据的排列有一定规律的一组有序数据的集合,数组的下标代表数据在数组中的序号。数组中的每一个元素都可以用数组名和下标唯一确定。数组允许有一维、二维和多维,并且同一个数组中的元素是相同的数据类型。数组必须声明且参与运算前必须进行赋值或初始化操作。
函数就是一系列C语句的集合,为了完成某个会重复使用的特定功能,其基本思想是用模块化程序进行程序设计。函数的命名通常反映了函数的功能,并且方便维护。C程序可由一个主函数和若干個其他函数构成,主函数可以调用其他的函数,其他的函数之间可以相互调用,并且一个函数可以被一个或多个函数多次调用。
2.5 指针与自定义类型
内存区的每一个字节有一个编号,这就是“地址”,在地址所标识的内存单元中存放数据,通过地址能找到所需的变量单元——地址指向该变量单元,将地址形象化地称为“指针”。
用户根据需要,可以自己建立由不同类型数据组成的组合型的数据结构,如结构体、共用体。结构体类型的数据的使用,应该在程序中定义结构体、共同体类型变量,并在变量中存放具体的数据。可以通过指针获得数组、结构体、共用体变量的地址或值。
3 C语言程序设计课程内容存在的问题
(1)将教学的重点放在理论教学上,忽视了实践教学。这样会使得学生对C语言程序设计产生枯燥无味的感觉,并且容易使学生因为缺少实践环节而无法充分理解理论知识。更严重的将导致学生学习的兴趣下降。在传统的教学中,往往是教师传授理论知识为主,忽视了实践环节,致使理论与实际脱节。同时也容易让学生形成只懂理论不懂实践的坏习惯,容易让学生忽视真理形成的过程。期待从事C语言程序设计课程教学的同仁和专家们,针对C语言程序设计课程的教学工作,共同研究探讨,资源共享,使得C语言程序设计课程教学在高校应用型人才培养中发挥更大的作用。
(2)將教学的重点放在实践教学上,对理论知识的讲解较少,这样使得学生的动手能力加强,对所学知识理解掌握充分,但由于课程的课时局限,教授的内容较少,导致一些教学上的理论知识点没有充足的时间去讲解,在实践教学上需要花费更多的时间去理解这些理论知识点,浪费了原本巩固学到的知识的时间。若不结合学科特点而盲目强调实践教学,就等同于一般的上机环节,这样的教学既不现实也不科学。
4 C语言程序设计实践教学方法探讨
针对C语言程序设计教学中出现的问题与难点,探讨多种方法。
(1)结合专业特色,设计C语言程序设计实践教学的经典题库。由于C语言程序设计课程的教材都差不多,变化较小,所以建议授课时从多年积累的教学中总结、归纳的经典题型和题库作为实践教学上机的作业,便于学生更好地理解所学知识并对所学知识深刻记忆。
(2)在理论教学的基础上,考虑课程约束,制定实践教学课时,以实践的方式辅助学生对C语言程序设计课程加以理解。由于专业不同,所以C语言程序设计课程的课时安排有时也存在差异,如64学时、48学时和32学时,有的计算机相关专业为了让学生更深入掌握C语言程序设计,课时增加到112学时,分2个学期完成。
(3)实践教学与理论教学相辅相成,从而引导学生对实践教学产生兴趣。在实践教学中选定实践教学题库,每次课程结束时,提出下节课将要学习讨论的主要内容,学生可利用课余时间分析讨论、解决问题。每次课程开始时对上一课程的问题进行纠正讲解。通过这样的方式提高学生的学习积极性和实践能力。
5 C语言程序设计实践教学的发展趋势
现在对C语言程序设计课程的教授,大多数还是在课堂教授理论知识,在机房锻炼学生的实践能力。在未来的教学中可以让学生参与教师的科研项目,在实践中学习巩固学到的C语言程序设计课程的理论知识,提高实践动手能力,同时也能够了解当前的业务需求与发展趋势。
参考文献
[1] 谭浩强.C语言程序设计(第4版)[M].北京:清华大学出版社,2011.
[2] 谭浩强.C语言程序设计(第4版)学习辅导[M].北京:清华大学出版社,2011.
[3] 谭浩强.C++程序设计(第3版)[M].北京:清华大学出版社,2016.
[4] 张长海,等.C程序设计[M].北京:高等教育出版社,2004.