地方高校C语言教学中的问题探讨及解决方法

2017-12-15 23:30葛耿育
电脑知识与技术 2017年32期
关键词:C语言编程课程

葛耿育

摘要:C语言作为计算机类专业的基础编程课程,在后续的高级语言、数据结构以及算法的学习中起到了重要的铺垫作用。然而,在实际的教学过程中,作者以及其他同课程的教师在教学中发现了一系列的难题。该文针对地方高校C语言教学中存在的问题,根据学生的课程反馈信息和教师的课堂教学中所发现的现象加以分析,并提出一些卓有成效的解决方法,使得学生能够较为轻松的学习C语言,并且能够促进对计算机工作原理的深层次理解。

关键词:C语言;计算机;教学

中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2017)32-0171-02

C Language Teaching Problems and Solutions in Local Colleges

GE Geng-yu

(School of Information Engineering,Zunyi Normal College, Zunyi 563006,China)

Abstract:As the basic course of computer science specialty, C language is so important to the subsequent courses like high-level programming language, data structure and algorithm. But, a series of problems are found by author and teaching team in the actual teaching process.According to the feedback of students at class and phenomenon found by teachers, some effective solutions are put forward to make students learn C language more easily and promote the deep understanding of the principle of computer science.

Key words: C language; computer; teaching

1 概述

C語言程序设计基础(以下简称C语言)是高校理工科尤其是计算机类专业教学的入门课,对后续的很多专业核心课程起到了重要的铺垫作用。C语言作为既接近高级语言又贴近底层硬件的编程语言,有其独特的优势,如C语言可以用来开发操作系统(Linux的大部分代码用的就是C语言)、多数外围设备接口的硬件驱动程序、数据库、应用软件(office等)、嵌入式系统、工业机器人等[1],最主要的是C语言可以为学习其他计算机语言奠定坚实的基础。因此,在教学中如何让学生学好C语言课程对于后续的课程意义重大。

C语言课程的参考书有成千上百本,但是基本上都是集中讲解以下核心内容:C语言的基本框架案例、数据类型、变量和常量、运算符、表达式、语句、顺序结构、选择结构或分支结构、循环结构、转向语句、函数、预处理、数组、地址、指针、动态内存(存储)分配、结构体、共用体、文件等内容[2-4]。

2 C语言教学中存在的问题及解决方法

2.1 生源问题分析

中西部的地方院校高考生源大部分来自于各个乡镇或县城中学,大部分学生在大学入学前没有过多地接触过计算机深层次的知识和操作,加上很多师范类的院校存在女生较多,被调剂的比重较大,因此学生入学后难以对专业课程和方向感兴趣,因而缺乏学习的动力和热情。

针对以上问题,该课程教学团队考虑从吸引学生的兴趣入手,在课堂中给学生们演示四轴飞行器、人形机器人、轮式和履带式机器人等基于嵌入式控制的智能作品,告诉学生这些基于STM32系列单片机的智能体都是用C语言开发的程序,因此学好C语言后大家也可以做出此类的作品,对以后的学科竞赛,创新创业起到很好的铺垫作用。目前国家很重视创新创业教育,未来的主流技术包括物联网、大数据、机器人等,C语言是其中最基础的课程之一。经过一番教育之后,学生的学习热情明显高涨,学习兴趣浓厚。

2.2 先导课程问题

全国很多院校也都将C语言程序设计基础课程放在大一学年上学期开设,这其中存在着一些问题,如操作系统、计算机组成原理等计算机核心课程还没有学习,因此学生并不能理解内存以及存储器存储变量或者数据的概念,因此难以理解变量、数组连续存储单元、地址和指针内容的本质。

针对以上问题,课程组讨论的结果是在课程的最初几节课中给学生做一些计算机软硬件基本组成部分和工作原理的知识铺垫,并且拆卸了一些老旧主机上的CPU芯片、内存条、硬盘和主板给学生演示,让学生知道很多主板上的设备都有配套的接口芯片,内存也是一种芯片,内部存储的是高低电平,这种物理电路特征可以抽象成二进制数据的0和1。

关于机器语言是0和1的组合问题,作者觉得有些争议,容易让学生误解。高级语言往底层的一级为汇编语言,相当于英文单词的缩记符,再往底层的一级为0和1的组合语言。很多教科书将0和1作为机器语言来定义和阐述,如果这里面存在一个共识,即0和1是相对于硬件抽象出来的语言,则是正确的,但是机器硬件根本识别不了0和1,只能识别出高低电平。因此,作者认为,底层的机器语言应该是高低电平或者电路的通和断,0和1是抽象出来的机器语言。

2.3 微机操作问题

很多学生刚入学的时候没有笔记本或者台式机电脑,根据课堂调查,新生入学后购买笔记本的人数不足10%。加上现在智能手机的普及,学生练习打字都是在屏幕较小的手机触屏上用单个手指敲字,因此使用实验室的标准键盘后打字速度很慢,对键盘的各个按键分布不熟悉。平时练习C语言程序的时候缺乏创造性,大部分同学都是根据书上的例程来,先是看着书上代码的几个字符,然后看着键盘上的相应按键敲击,再看着显示屏上的字符有没有敲错,整个过程耽误课堂时间,效率低下,甚至很多学生不知道如何切换中英文输入法,字母大小写等。endprint

针对以上问题,作者对学生讲解标准键盘的大概按键分布,然后联合教学团队其他教师向院系申请每周固定时间开放计算机实验机房,在电脑上安装金山打字等软件,让学生利用课余时间熟悉键盘分布和提高打字速度。经过几周的实践,学生的打字速度和准确率明显得到了提升,在正常实验课堂教学中节约了时间。

2.4 编程软件问题

目前国内主流的操作系统依然是微软的Windows系列,新生刚从电脑城买的电脑大多数预装的都是Windows 10,并且不知道如何重装操作系统,因此需要考虑到很多编程软件的兼容性问题。主流的C语言IDE开发环境有Microsoft Visual C++6.0、Turbo C、VS studio、C-Free、Dev C++等。由于全国计算机等级考试二级C语言机试环境用的就是Microsoft Visual C++6.0软件,因此学校机房云平台上预装的就是该软件,在Windows 7操作系统使用很少会出问题,但是Win7 64位、Win8 和Win10上会出现很多兼容性的问题。

针对这些问题,建议学生在不熟悉重装操作系统的步骤前,先下载其他的C语言编程环境安装使用。VS studio虽然功能强大,但是安装包太大,因此不建议学生使用;Turbo C小巧方便,但是鼠标在里面难以使用,初学者使用不方便,耽误时间,建议熟悉其中的环境和熟练使用键盘后再使用;C-Free软件是国内自主开发的一个中文版IDE,学生使用起来特别是英语功底太差的同学也能很容易看懂菜单和工具栏上的功能按钮,在win10上兼容性较好,并且C-Free 4.0版是功能比较齐全的免费版,很适合初学者;Dev C++是NOI(全国青少年信息学奥林匹克竞赛)和NOIP(全国青少年信息学奥林匹克联赛)等比赛的指定工具,使用起来快捷方便,是一款自由软件,遵守GPL许可协议分发源代码。除此之外,如果学生时间充裕,可以尝试使用CodeBlocks、Codelite等,扩展一下视野,总结多种IDE的共同点,促进更好的学习。

2.5 初学者常犯的错误

由于学生刚从高中的应试教育转向大学的开放、自由、创新和应用型本科教育转变,很多惯性思维和学习方法还未转变,并且C语言教学中很注重实验和实践操作,因此很多学生在初步学习经常会犯一些基本错误。经典的错误类型和排错方法有:新建工程时位置(存储路径)不更改,默认路径在C盘的某个目录下,这样后面修改或者调用该工程文件时就很难找到,因此需要更改工程存储位置在自己新建的某个文件夹下;新建工程时只需要工程名,扩展名系统自动生成,工程名中不能包含特殊字符如“.”,否则文件类型就变了;编译代码后,发现错误不知道从何下手,应根据debug框的提示信息排错;函数名后面不加(),scanf内部取变量值忘加&等符號[5,6];C语言的关键词写错等错误类型。

这些初学者常犯的错误经过一段时间的学习和实践后都能得到纠正,但是一个比较严重的问题是学生认为只要代码编译没有错就应该得到自己所预料的执行结果。实际操作中任课教师布置的作业任务,学生很多在语句框架和语法上没有错,但是在逻辑结构上存在着错误,因此这类问题需要长时间的跟学生解释和案例演示。

2.6 控制台程序枯燥问题

经过几周的理论和实验课程学习后,学生逐渐发现VC++6.0软件开发出来的win32控制台程序只能在编程环境下执行程序,认为C语言只能干这些事情很枯燥。

针对这个问题,作者分析了IDE环境的特征,VC++6.0软件提供的“!”执行程序按钮,执行完程序后控制台程序保持暂停直到根据press any key to continue...提示输入任意按键后才结束,这个是因为IDE提供的功能。但是当生成.exe格式可执行文件后,双击运行会看到控制台程序一闪就消失了。分析原因知道,程序运行速度太快(参考CPU的主频),所以让学生在代码中加入预处理语句#include,在main()函数结尾处加上语句system("pause");,这样程序在执行完之后会停在一个等待用户终止的状态。

此外,教师团队从网上搜索了一些基于Windows.h的简单窗口程序,如定时开关机软件、简易计算器、俄罗斯方块和贪吃蛇游戏等的源代码和可执行文件,并展示Linux操作系统的源代码,让学生知道C语言的功能很强大,关键在于掌握编程方法,根据市场的需求开发相应的规范软件[7,8]。

3 MOOC时代C语言教学方法改革

近几年来,随着国外MOOC(大规模开放式在线课程)平台如Coursera、Edx以及OCWC等在国内的兴起,引发了一系列的网络视频课程热潮。国内的CSDN平台、51CTO、百度传课、网易云课堂、腾讯云课堂、国家精品课程网等专业在线视频学习网站均有成百上千的C语言完整课程体系视频,其中网易云课堂中有浙江大学翁恺教授的《程序设计入门-C语言》和《C语言程序设计进阶》2套视频课程。这些MOOC平台上的大部分课程都是免费的,而且提供了很好的师生互动和讨论学习环节和模块组,部分视频是专业的IT培训机构发布的资源,具有很多的项目经验和案例教学内容。

因此,在新时期的高校教学中,作者以及教学团队需要合理利用网络资源,与学校教育形成互补,更加注重学生的实践能力培养和实验编程问题的现场及时解答。高校教育最终培养的是一个具备自主学习能力、分析问题和解决问题能力的创新创造型人才,因此教学团队引导学生利用课余时间多关注这些开放性的网络资源平台,包括视频、网站、论坛和专业技术群组等。

4 总结

地方院校的学生基础薄弱,在C语言的教学中需要根据学生的实际情况因材施教。随着互联网资源的日益完善,网络平台的多重形式教学资料可以被用来在高校中互补利用,课堂教学中更加注重课程内容的解析和知识的扩展,实验教学中主要锻炼学生C语言编程的基本语句框架和编程思维逻辑,从而为以后的专业课程中打好扎实的基础。

参考文献:

[1] 魏二有.实用C语言教程[M].北京:清华大学出版社,2015.

[2] 谭浩强.C语言程序设计教程[M].北京:清华大学出版社,2014.

[3] 杨杰,万李.C语言程序设计基础[M].长春:吉林大学出版社,2014.

[4] 明日科技.C语言从入门到精通[M]. 2版.北京:清华大学出版社,2016.

[5] Andrew Koenig.C陷阱与缺陷[M]. 北京:人民邮电出版社,2016

[6] Peter Van Der Linden. C专家编程[M]. 北京: 人民邮电出版社,2016.

[7] 康苇苇. 基于计算思维的C语言教学模式分析与案例设计[D].重庆:重庆师范大学,2015.

[8] 刘光蓉. 融入计算思维的C语言实验教学设计[J].实验室研究与探索,2015,34(10):81-83.

猜你喜欢
C语言编程课程
《无机化学》课程教学改革
编程,是一种态度
数字图像处理课程混合式教学改革与探索
编程小能手
软件设计与开发实践课程探索与实践
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
为什么要学习HAA课程?
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索