前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇c程序设计语言范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词: 《C程序设计语言》 误区 感悟
《C程序设计语言》课程是电子信息工程专业开设的第一门程序设计类课程。该课程在本专业的课程体系中处于承上启下的地位,对于学习后续高级编程语言具有很好的导引作用。笔者经过一个学期的系统学习后感觉受益匪浅,不仅学到了基础的编程语言知识,更重要是的掌握了逻辑性较强的编程思想。为了让更多学生很好地学习这门课程,笔者借此文总结出《C程序设计语言》课程学习时常见的误区,并给出解决上述误区的方法和途径,供广大同仁借鉴。
一、学习《C程序设计语言》课程时常见的误区
1.只注重写程序,而忽视读程序。
很多学生在刚学习这门课程时就希望自己能够独立编写出一些程序,但实际情况大相径庭,此时挫败感油然而生,甚至一些学生因为这种挫败感产生对这门课程的厌学情绪。其实就笔者的学习经历而言认为刚开始学习时,不要急于自己编程,因为此时你还没掌握好基础知识,不可能独立完成程序的编写,认真研读别人的优秀程序才是学习该课程入门最快,也是最好的方法,在读别人程序的过程中慢慢领悟别人的编程方法和思想。
2.没能将理论学习和上机实践进行有效衔接。
《C程序设计语言》课程的教学分为理论讲授和上机实践两个环节,因为学校主客观原因的限制二者之间存在一定的时间间隔,但二者在内容上又是相互连贯的。时间上的不连贯和内容上的连贯性会使得一些学习不主动的学生不能将理论课上老师所讲的知识和技能在上机实践中得到有效的验证和消化。因此,一些学生在上机实验时面对老师布置的作业会觉得无从下手,学习兴趣就会大大降低。而C课程的知识是承前启后的,前一部分知识没有掌握好,后面章节内容的学习也会大受影响,这样就进入了一个恶性循环。最大的问题是这部分学生不仅自身学不好内容,而且会影响其他学生,这样班级的整体学习效果就会大打折扣。
3.缺乏一定的逻辑思维能力。
很多学生错误地认为C程序设计语言就是变量、控制结构、函数、过程、数组的简单结合,认为只要掌握这些就可以编写出良好的程序了。其实不然,真正优良的程序是需要靠自己的逻辑思维对变量、控制结构、函数、过程、数组这些要素进行创造性的整合。所以C程序设计语言是一门锻炼学生逻辑思维能力的课程。当你具有抽象逻辑思维能力和弄清楚了变量、控制结构、函数、过程、数组相关知识后,编写C程序就是易事。
二、走出上述误区的方法
1.端正学习态度,充分认识到本门课程的重要性,并保持良好的学习心态和学习习惯。
《C程序设计语言》是很多高校学生接触的第一门编程语言,该课程对于培养学生较强的逻辑思维能力具有非常重要的导引作用,而逻辑思维对于处于信息社会的大学生而言是必不可少的,但是逻辑思维能力的培养又不是一朝一夕的,需要持之以恒地努力。对于学生而言,只有从内心认识到这一点才可以使自身在遇到学习困难时迎难而上。对于一些偏文专业的学生而言,在学习初期肯定会觉得一些概念晦涩难懂,与自己的思维方式存在差异,此时千万不能有畏难情绪,一定要相信自己,在自身努力、同学帮助和教师引导的三方努力下共同渡过难关,而自身的认真努力是首要的。课前一定要认真预习,对自己通过预习不能理解和解决的知识点和概念进行标记,上课时当老师讲授到这部分内容时要认真听讲,如果通过教师的讲解依然不能理解,千万不能就此搁置,一定要及时向老师和同学请教。C程序设计的入门学习并不难,却是一个十分重要的过程,因为程序设计思想就是在这时形成的,良好的程序设计习惯也在这个阶段养成的。
2.学习时要注重理解一些重要的概念,勤于动手编写程序,并借鉴别人编写的好程序。
C程序设计课程就其本质而言并不是很复杂,其核心无非就是变量、函数、过程、数组、控制结构(顺序结构、选择结构、循环结构)、文件和数据库等概念和相关操作。但这些概念虽然一些同学在数学课程中听说过,感觉似曾相识,但此概念非彼概念,二者还是有所不同,要真正理解这些概念就必须多动手、多思考。程序设计是高强度的脑力劳动,不是听会的,也不是看会的,而是练会的。因此在学习过程中要勤于自己独立编写一些小程序,在编写过程中肯定会犯一些错误,在错误的解决过程中可以提升自己的编程能力,在能力提升的同时增强自身对该课程的学习兴趣。对于初学者而言,一方面要自己独立编程,但由于自身编程知识储备不充分,也要借鉴别人优秀的解题思路与方法,探究别人的思维过程,增强自己的思维能力,然后结合自身实际尝试实现或者说模仿着实现。
3.在学习过程中要避免孤军奋战、单打独斗,注重团队协作和互助。
笔者所在学校C程序设计课程的教学遵循先理论讲授后上机实验的步骤。一个教学班的学生人数在30至40人,实验课和理论课都只有一个教师。理论课和实验课之间的时间差会使一部分基础较薄弱的学生在实验课上会碰到各式各样的问题,而基础较好的学生在实验课上会很自如地完成老师布置的实验任务,因为只有一个老师进行辅导,如果那些基础不是很好的学生在学习过程中遇到问题后请教老师,老师此时可能正在辅导另外一个学生,在这种情况下就可以选择向身边基础较好的同学请教,这样既可节省时间又可加深同学之间的交流协作。经过半个学习基础知识的学习,老师会布置一些综合编程题让学生融会贯通并有效应用以前所学知识,笔者认为此时同学之间可以以团队形式进行答题,这样可以达到取长补短的效果。
参考文献:
[1]马丽洁.高职计算机和软件专业语言类课程改革探析――以C程序设计语言为例[J].电子商务,2015(07).
C++语言是在C语言基础上发展而来的一门面向对象的高级语言。教无定法,教学有法。对于计算机专业大学生的C++程序设计语言教学方法,必须结合当前大学生基础和实际情况,进行教学方法改革和教学模式创新,提高教学质量和效果,使得计算机专业大学生不但能够掌握面向对象的理论知识,而且具有一定的可视化编程与调试能力,实现理论与实践相结合,达到工程应用型的实用人才水平。如何在有限的学时内使得大学生能够找到科学的创新学习方法[4],尽快掌握C++语言基本理论和具备编程能力,是每位任课教师都需要面临的难题。
二、教学模式创新
为了培养面向工程应用的C++程序设计人才,在知识、能力、应用、创新等各方面全面培养大学生,本文提出“双主互动为纲、两个创新、两个学习、两个支持、四个课堂”的教学模式,使得学生能够达到掌握理论知识和具备编程能力的工程应用水平。教学模式创新的基本框架如图1所示。
本课题组的教学模式采用双主互动教学为纲,即基于师生互动的教师主导学习和学生自主学习。两个创新是指对教学内容和教学方法分别进行创新。教学内容创新是指教师对教学内容进行梳理分解,突出重点,并及时将新内容、新科研成果、新概念、新技术等内容补充进来,改善课程知识结构,以适应社会对计算机编程人才的需求。教学方法创新是指采用互动式、全方位的教学方法,进行理论与实践相结合、教学与科研相结合、课内与课外相结合。两个学习是指将学生分成多个小组进行讨论学习、对C++的开发环境进行学习,使得学生面向学以致用的培养环境。两个支持是指教师要采用各种手段和方法对学生的学习进行指导支持,包括面授支持、电话支持、e-mail和QQ等网络支持。四个课堂是指理论教学课堂、上机实践课堂、课程设计课堂和其它课余时间的课堂。
三、采用自然语言启发式教学方法,提高学生理解能力
C++语言是一门计算机程序设计语言。C++语言教材从前到后系统性特别强,前后章节之间环环相扣,联系紧密。由于面向对象的很多新的概念比较抽象,如果教师在教学中仅仅把教材上的语法知识照本宣科地讲给学生听,会导致下面大部分学生听不懂,学生会很容易感到枯燥乏味和厌倦疲劳,从而产生排斥和厌学情绪。这种抵抗情绪一旦从开始就产生,则将影响后续整个学期的教学效果。由于从头到尾都听不懂,老师在课堂上提出的问题学生也无法进行互动,这种灌输式的教学方法效果非常差。而教师要根据课堂实际情况,采用互动式教学方法,培养学生的主动学习能力,才能得到良好的教学效果。
1.第一次课程教学中,明确C++语言课程的重要性
目前C++语言是大多数电子、信息、计算机相关专业的非常重要的程序设计课程,也是这些大学生后续专业课学习、毕业设计、以后上研究生或参加工作进行计算机软件和IT开发的主要编程语言,广泛应用于软件设计和开发中。要让大学生有危机意识,在大学生就业如此严峻的情况下,学好C++语言,能够提高大学生以后在就业竞争中的筹码。
2.讲课过程中,对C++语言中的很多概念,结合自然语言进行讲解
C++语言作为一门计算机语言,它和人类的自然语言相比,既有区别,又有联系。在讲解一些关键概念时,采用一些浅显的自然语言的例子,提高学生的理解能力。本文作者在讲述一些关键概念时,将这些概念和自然语言结合进行循序渐进启发式讲解,激发学生的学习兴趣,起到了非常好的效果。下面举几个例子。
(1)引用是C++语言中第一个新的概念。引用类似于自然语言中的别名或者绰号,是正名的别名,没有正名就没有别名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是别名。正名和别名属于一个变量,共用同一片内存空间。引用主要用作函数的参数传递,形实结合后不会产生临时的变量,节省了内存空间
(2)类和对象是C++语言区别于C语言中普通数据类型和变量的概念。类是具有相同属性和行为的一组对象的集合,它为属于这个类的所有对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类和对象的关系就像模具和铸件的关系一样,类就相当于模具,对象就相当于铸件。一个模具可以生产出成千上万个铸件。
(3)友元是C++语言中另一个新的概念。在数据共享与保护中,友元类似于自然语言中的朋友,但是友元和自然语言中的朋友既有联系又有区别。人类的朋友关系通常是双向的、可以传递的,但是C++中的友元关系是单向的、不能传递的。
3.引导学生合理安排课程的学习时间,培养学生的学习兴趣
教师可以把学生分成若干个小组并布置一些编程作业,培养他们的团队协作意识,并共享小组编程成果,使得他们对自己编制的程序能够运行和产生正确的结果具有自豪感,提高学生的学习兴趣。由每一个小组各自给全班同学讲授和演示自己的算法、编程思路、运行结果,既能够锻炼学生的编程与演讲能力,又能够在课堂中产生良好的互动。
4.讲课过程中尽量做到幽默风趣,灵活运用教学手段
教师在上课时,要做到风趣幽默、声音洪亮、带人真诚、平易近人、知识渊博、通俗易懂,才能产生良好的教学效果。教师要灵活运用多种教学手段,尽量采用多媒体教学,在PPT幻灯片中多做一些动画效果,或者以Flas演示程序的动态运行过程。教师在C++语言教学过程中要根据课堂中学生的反应,随机应变,结合我国传统文化与最新国内外时事,让学生潜移默化地学习一些难以理解的语法,则能达到事半功倍的效果。
四、对一些难以区分的概念采用表格形式进行对比和总结
C++语言是在C语言基础上发展起来的面向对象的高级语言,全面兼容C,但是又增加了很多新的较为复杂的语法知识点。对于一些学生难以理解和掌握的语法知识点,如果教师不帮助学生及时进行总结和举一反三,按照大学生初学的水平很难真正达到掌握和编程应用的水平。因此,教师可以在讲完某些知识点后采用表格的形式进行对比和总结。例如,C++中引用和指针的区别总结表,普通指针、指向常量的指针和常指针三种指针所指向的内容和指针本身能否改变对比总结表,对基类中具有不同访问属性的成员经过不同方式继承后在派生类中的访问权限的比较和总结表,运算符重载时重载为类的成员函数和友元函数、前置、后置自增、自减运算符参数个数总结表。
五、熟悉Visual C++编程环境,具备图形界面编程能力
目前,Visual C++ 6.0是比较经典的开发环境。即使掌握了C++基础知识,仍然难以高效掌握使用Visual C++的编译器。为了培养实用型软件开发人才,教师还应该进行Visual C++编译器的入门教学,培养学生掌握如下知识:
1.能够使用Visual C++开发环境进行界面设计;
2.能够创建简单的基于MFC的应用程序;
3.能够使用类、函数和消息映射机制;
4.能够利用开发环境有效创建对话框、按钮和菜单等资源。
当然,对于Visual C++的学习,一本好的教材也至关重要,现在的书店和图书馆各种Visual C++的学习教材五花八门,不泛互相抄袭、错误百出、误人子弟的教材。如何从这些书籍的海洋中找到合适的入门教材,对于作为初学者的大学生来说有点难为他们。本文作者也买过不少Visual C++学习的书籍,其中不少书就没有任何学习价值,既浪费钱,又浪费时间。作为教师,有责任和义务为学生挑选一本优秀的、很容易入门的教材。本文作者和周围很多从事Visual C++语言开发的朋友们都认为Jon Bates主编的《实用Visual C++ 6.0教程》是一本非常不错的教材。本人在每个学期给学生教学时,都会将这本教材的电子版发给同学们,而且从他们的反馈来说,效果确实不错。
六、理论与实践相结合,提高程序编程与调试能力
理论必须与实践相结合,才能得到验证,否则只是纸上谈兵。作为一门计算机语言,C++程序设计的实践性操作特点决定了上机实践是课程学习中的重要环节。授之以鱼,不如授之以渔。帮助学生编程序或调试程序,不如教会学生编程序或调试程序。因此,在教学中,教师可以从如下几个方面进行考虑:
1.上课时教师提前给同学们将上机编译器环境、各种单步调试、断点调试的方法传授给学生,并布置好上机操作的题目,这样学生在上机前就会有充分的准备,做到有的放矢。
2.针对性地给学生布置一些具有趣味性的程序设计题目,让学生通过查资料、上网和请教老师等多种方式编程调试,培养学生解决问题的能力,让学生感到有成就感,提高学生的学习兴趣。
3.对学生的上机存在的问题进行总结,对于一些普遍存在的问题要在课堂上统一进行讲解。并且也要对对自己的教学方法和教学模式进行实时总结和改进,形成闭环。
按照本文作者研究的教学方法,经过一个学期的理论教学与上机实践学习,在学期期末考试前的一个月对2010级计算机科学与技术专业1班全班52个学生划分为13个小组布置了课程设计项目。每4人一个小组,由每个小组自己推选出1个组长、1个副组长和组员。组长负责课程设计项目的总体实施和分工,副组长协助,组员配合。课程设计的考核是每个小组交一份打印课程设计报告,包括项目题目、小组成员、程序设计结构、流程图、源程序、实验运行结果。每个小组推举一名学生在讲台上进行10分钟的PPT演讲,老师和学生进行5分钟左右的提问。考核成绩是由老师根据课程设计报告、演讲PPT内容、回答问题效果等项目进行打分。经过一个学期的C++理论学习和一个月的课程设计,全部小组都按时递交了课程设计报告和进行了汇报演讲,其中不少学生讲的非常精彩,这对于他们也是一种不可多得的实战锻炼。学生普遍反映通过理论与实践结合的学习开阔了视野,提高了工程应用能力,培养了团队协作能力,增强了学习信心,达到了前所未有的良好效果。
七、结论
本文作者根据多年来的教学体会,提出将满堂灌式的教学方法转变为以学生为主体、以活跃式课堂为形式、以课程实际相结合的多模式创新教学方法,真正实现教师为主导、学生为主体的互动式高效教学创新模式。
参考文献:
[1]郑莉. C++语言程序设计[M].北京:清华大学出版社,2010.
[2]钱能. C++程序设计教程[M].北京:清华大学出版社,2009.
[3]谭浩强. C++面向对象程序设计[M].北京:清华大学出版社,2006.
[4]王卫军.教师信息化教学能力发展策略研究述[J].电化教育研究,2012, 229(5):103-109.
[关键词]C语言程序设计 探究教学 实施目标
中图分类号:TP312.1-4 文献标识码:A 文章编号:1009-914X(2014)17-0126-01
一、 C语言程序设计探究教学实施的目标:情感目标、能力目标和认知目标
1、体验C语言程序设计的编程思想,激发和保持对C语言程序设计课程的求知欲,形成积极主动地学习和参与C语言程序设计课程探究活动的态度。
2、能辩证地认识C语言程序设计对社会发展、科技进步和日常生活学习的影响。
3、获得亲自参与研究探索的积极体验、培养严谨的科学态度。
4、能从日常生活、学习中发现或归纳可以利用C语言程序设计解决的问题,通过问题分析确定程序功能。
5、能根据任务的要求,确定所需信息的类型和来源,并鉴别信息的真实性、准确性和相关性。
6、掌握计算机程序的基本概念,理解并掌握C语言程序设计语言的基本知识,包括语句、数据类型、变量、常量、表达式、函数等,熟悉语言的语法规则,熟悉计算机程序执行的基本过程。
7、了解C语言程序设计语言,掌握编写程序、编译程序、连接程序以及程序开发环境等基本知识,掌握调试、运行程序的基本方法与技巧。
二、C语言程序设计探究教学实施的条件
1、掌握一定的计算机操作基础
C语言程序设计课程由于其学科自身的特点,需要在计算机上调试程序,所以要求学生具有一定的计算机操作知识,如:开关机、键盘和鼠标的使用、文件的建立与查找、常用软件的使用等。
2、良好的C语言程序设计认知结构
认知结构就是学生头脑里的知识结构,是学习者观念的全部内容和组织。奥苏伯尔的认知结构理论是针对新学习内容的影响(即迁移)提出的,良好的认知结构有利于知识的提取和正向迁移。C语言程序设计探究教学强调在已有知识经验上的主动建构,面对新的问题和任务,需要学生及时从头脑中提取信息,建立新旧知识间的联系,在已有C语言程序设计知识的基础上思考解决新问题的办法,并试图将新知识纳入自己的认知结构中。
3、良好的探究环境
良好的探究环境是学生顺利进行探究的保证,至少包含两方面的内容:(1)要有充足的探究时间和灵活的探究条件。探究时间应该根据学习任务进行合理安排,应该考虑到学生假设错误时所耽误的时间以及讨论交流所需要的时间。探究教学中可能需要查阅大量的资料,教师还应该准备书籍、网络等辅助资源。(2)学生在探究学习的时候不能有太多压力,不同的学生由于其自身的因素不可能以相同的速度学习,所以教师在进行评价的时候也应该因人而异,应该为每个学生提供充分的思考机会和时间,让每个学生都能以自己的进度进行探索,并在此过程中感受到乐趣。
三、C语言程序设计探究教学情境的创设
心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提高活动的质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在于引出教学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C语言程序设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境不平衡,引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活动和将来的活动联系在心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提高活动的质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在于引出教学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C语言程序设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境不平衡,引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活动和将来的活动联系在一体。探究教学情境的创设应做到:(1)创设的情境是为C语言程序设计教学服务的,要以C语言程序设计探究教学目标为依据。(2)探究情境要接近学生的真实生活经验,能够吸引学生的注意力,激发他们的认知冲突和求知欲。(3)学生在情境中能够感觉到问题的存在,自然地将新旧知识联系起来。(4)情境中必须包含学生未知的新内容,而且是能够通过探究掌握的。
四、C语言程序设计课程中的探究形式
C语言程序设计课程中开展探究教学主要有4种形式:探究性提问、探究性讨论、探究性演示和探究性实验。这4种形式是相辅相承的,而不是孤立存在的,在C语言程序设计探究教学中,需要用到多种形式来构成一个完整的探究教学过程。C语言程序设计探究教学通常都是由探究性提问开始,然后进行探究性讨论、探究性演示或探究性实验;也可能从探究性演示或探究性实验开始,在演示或实验的过程中发现问题,再进行探究性讨论。在实际教学过程中,要根据学习内容和课堂情况灵活地选用这些形式。
五、C语言程序设计探究教学评价
教学评价指依据一定的标准,通过各种策略和相关资料的收集,对教学活动及其效果进行客观衡量和科学判定的系统过程。C语言程序设计探究教学评价是对C语言程序设计探究教学过程及其影响的测量、分析和评定,评价中我们更关注学生学习和成长的过程,寻找适合学生发展的学习方式,满足学生知识和能力发展的需要。评价对探究教学的积极作用是很明显的,但是如果评价指标制定不合理,或者评价方法的选用、评价结果的表述不当,不仅不能达到预期效果,还会对学生的C语言程序设计学习产生消极影响。
参考文献
[1] 《基础教育课程改革纲要(试行)》教育部文件,教基[2001]17号.
[2] 保罗 朗格朗.终身教育引论瞰[M].北京:中国对外翻译出版公司,1985,p15~31.
[3] 联合国教科文组织.学会生存――教育世界的今天和明天[M].上海:上海译文出.
版社,1979,p2.
[4] 张大均。教育心理学[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉乐.探究教学论[M].重庆:西南师范大学出版社,200l.
关键词:C语言;程序设计;教学改革;能力培养;计算机辅助评测
中图分类号:G642 文献标识码:B
1背景
随着计算机技术的迅速发展和日益普及,越来越多的高校毕业生涌入计算机技术及应用产业,特别是软件产业。这些人中不仅有计算机专业的毕业生,也有些非计算机专业的毕业生。在与这些非计算机专业学生的竞争中,计算机专业的学生并未表现出明显的专业优势。造成这一现象的一个重要原因就是,计算机专业学生所掌握的基础专业知识和能力,缺乏专业性的深度和广度,计算机专业学生所学的一些专业课程和专业基础课程没有为学生提供足够的专业知识和训练。课程改革前的C语言课程就是这样一门在专业性方面有待加强的专业基础课程。
程序设计是计算机专业学生的基础课程,程序设计能力是计算机专业人员的重要专业基础能力,C语言是目前计算机专业工作者的第一语言。随着计算机技术和知识的普及,越来越多的非计算机专业学生也在这一层次和深度上掌握了C语言知识和运用能力。与此同时,计算机专业在C语言的教学方面依然采用原来的教学内容和教学方法,在程序设计知识的深度和广度以及C语言的运用方面没有大的进展,导致计算机专业学生与非计算机专业学生之间在这方面的专业能力差距逐渐缩小甚至消失。计算机专业学生所完成的程序在程序结构、程序的可靠性、可维护性、可扩展性、程序的时空效率、以及程序的风格和可读性等方面与非计算机专业学生的程序差别不大。
造成上述这种情况的原因,从教学方面看主要有三点:一是目前“C语言程序设计”课程的教学内容偏窄偏浅;二是教学方法不适当;三是实验考核手段落后。从学生学习的角度看,也存在对学习内容和方法不适应的问题。大多数的学生从小学到中学,已经适应了记概念、背知识点、应付书面考试的学习模式,对于灵活运用所学知识去分析解决问题,缺乏必要的训练。当程序设计教学仍然是以程序设计语言为主、以概念为主、以书面教学为主时,就更会强化学生原有的思维模式和学习方法,把这门课程当成以概念和知识点学习为主的理论型课程,忽视了对实际能力的培养。
2指导思想
C语言课程是培养学生专业能力的重要课程,其教学效果对学生今后其他专业课程的学习以及毕业后的专业工作前景都有重要的影响。为解决C语言课程在程序设计能力培养方面的不足,需要根据当前学生的特点,在课程教学目标、课程指导思想、课程内容设置和组织、练习和考试的方法及重点等方面进行调整和改革,使学生在掌握运用C语言进行程序设计的同时,在分析问题和解决问题的能力上有显著的进步,在程序设计的各个环节养成良好的习惯,为后续的专业课程学习提供必要的程序设计知识和能力,为今后深入掌握专业化的程序设计能力打下良好的基础。
对于计算机专业的学生来说,C语言课程的教学目标不仅仅是使学生了解和掌握C语言本身,而且应该使学生深入掌握程序设计的思路和方法。C语言课程应该是学习使用C语言进行程序设计的课程,而不是仅仅学习C语言本身的课程。程序设计语言与程序设计是互为表里的。程序设计的作用是表达程序设计者的思想,是按照计算机所能理解和执行的方式描述需要让计算机完成的工作,而程序设计语言则是表达这种思想的工具。在程序设计工作中,首先需要明确的是所要表达的思想到底是什么,也就是到底需要计算机按照什么样的步骤来执行计算过程,产生什么样的计算结果。至于采用什么样的语言,以及这种语言的细节,则是第二位的。因此,对于没有程序设计经验的学生的教学,必须把程序设计的思想和方法放在中心的位置,而把程序设计语言作为讲述程序设计思想和方法的工具。
3课程的内容和安排
为使学生通过C语言的学习掌握程序设计的能力,养成良好的程序设计习惯,并在分析问题和解决问题的能力上得到培养和锻炼,需要在课程的教学内容和侧重点上进行必要的调整,在教学方法上进行必要的改进,在实验和考核的手段上进行必要的革新,在教学过程的组织和安排上与其他相关课程更好地协调。
首先,需要把教学的重点从C语言本身转移到程序设计的思路和方法、以及运用C语言进行程序设计上来,把讲授语言的概念转变为讲授语言运用,把对概念的讲授由抽象的分析和讲解转变为通过实例和经验对概念的学习。教学内容应当围绕程序设计的思想和方法进行组织,把C语言作为讲解程序设计的工具,在讲解程序设计的思想、方法和步骤的过程中,根据程序描述的需要,本着由简到繁,由浅入深的原则,逐步讲解C语言中的知识点,特别是C语言要素在程序设计中的运用。
其次,“C语言程序设计”课程是一门实践性和应用性很强的课程,因此这门课程在教学方法上必然要不同于其他各种理论性课程。它不是以概念的学习为中心,而是以概念运用能力的培养为中心。对于概念和基本知识的掌握,更多地不是通过理论分析,而是通过对实例的分析和在实践中的运用。对练习题的分析、讲解、讨论以及在练习现场的答疑都是教学中的要点。对一些复杂概念的引入和探讨只有在学生具有了相当的实践经验时进行,才能使学生真正地接受。
第三,在教学安排方面要充分考虑C语言的基础性、应用性、专业性的特点,以及该课程与其他课程的关联和配合。复杂的程序设计知识需要有“数据结构”等先修课程作为基础,同时,基本的C语言知识和程序阅读和理解能力,也是其他一些专业课程,包括“数据结构”等课程在内的基础。为了适应学生知识水平和学习能力的现状,并考虑与其他课程的衔接和协调,我们把“C语言程序设计”课程的内容分为两个部分,分两个阶段讲授。第一个阶段主要针对没有程序设计经验的初学者讲授程序设计的基本方法和C语言的入门知识,第二阶段主要是在第一阶段的基础上进一步提高学生的程序设计能力,培养学生专业化程序设计能力的基础,以及对C语言的深入理解和把握。
第一阶段课程教学的重点内容是程序设计的基本思路、步骤和方法,以及简单的程序设计技术和C语言的运用,目的是培养学生程序设计的基本能力和初步培养学生良好的程序设计习惯,使他们知道如何着手分析一个问题,如何把解决问题的过程分解成一个个紧密衔接的步骤,如何用C语言准确地描述这些步骤,以及当程序出现错误时如何迅速准确地发现问题的原因,找到解决的方法。在这一阶段的教学中,在讲授方法上应以例题分析和讨论为主,避免从概念到概念的论述,特别注意避免过于深奥的概念的引入和讨论,以免学生在未掌握程序设计基本方法和思考习惯的情况下把注意力不适当地投入对概念理解的过分追求。对于概念和理论,应该只对必要的内容做适当的介绍,更多地把学生的注意力引入到对这些概念的运用中。应该更多地讲授使用C语言进行程序设计的实例,通过实例讲授分析问题的方法以及程序设计的基本思路、过程和步骤。对于C语言本身,主要应介绍各种基本语言要素和使用方法,介绍简单程序的编写、调试和运行过程和操作步骤,讲授一些基本的算法、数据结构的C语言实现方法和特点。对于C语言的语法和语义,应尽量通过例题的示范进行概括性的介绍。对于其中的细节,则应留给学生通过上机实习,自己逐步深入了解和掌握。这一阶段的教学目标是使学生能阅读和理解一些较为复杂的程序,并能在较短的时间内独立完成具有初等难度、长度约几十行的程序的设计、实现和调试。
第二阶段的教学主要集中在对程序设计能力、特别是专业程序设计能力基础的培养上。在学生学习了“数据结构”及其他相关的课程之后,可以进一步引入专业化的程序设计思想,介绍专业化的程序设计应当考虑的一些问题,对比不同的解题思路实现的难易程度,对比不同的算法和实现方法在时空效率方面的优劣,对比不同的程序设计风格对程序的可读性、可维护性、可扩展性、可移植性等方面的影响,讲授程序质量的判断标准等。在这一阶段也可以引导学生进一步深入理解C语言中的一些重要概念和C语言的特点,使学生在C语言运用的技巧方面得到锻炼,在程序设计的水平方面得到提高。这一阶段的教学内容包括对C语言属性、特点和重要概念的深入讲解、对C语言中难点的深入分析,对程序设计思路、过程和步骤的进一步系统化,以及信息领域常用算法的实现,程序和软硬件系统的关系,程序的调试和测试,程序的时空效率和优化,程序设计的风格,中型程序的结构和组织等。在掌握了这部分内容之后,学生应该能够独立完成较为复杂的,长度在百行以上的程序的设计、实现和调试,知道如何充分测试一个程序,以保证其运行的可靠,知道如何正确地组织一个较大的程序,以保证其可维护性和可扩展性,知道如何优化一个程序,以满足对时空效率的要求。在这一阶段的教学过程中,在教学方法上可以更多地采用启发式的方法,可以拿出一定的时间展开课堂讨论和习题分析,引导学生主动地学习。同时,在练习题方面也可以适当提供一些难题,以便为学有余力的学生提供更大的学习空间。
4练习和考试
程序设计课程是一门实践性很强的专业技术课程。只有加强实践环节,让学生在失败的和成功的实践中通过自己的经验积累才能切实掌握实际知识的运用能力。在课程教学的过程中不仅要重视理论教学,重视教学内容的设置,也要重视实践环节的设置,重视为学生提供具有及时监控和反馈环节的实践环境。在课程的考核环节,应该以检验学生的实际程序设计能力为主,关键概念为辅。对于语言的语法细节和使用方式,则不应单独作为考核的题目,而应该与对程序设计能力的考核有机地融和在一起,以改变学生读书、背概念、应付考试的学习模式。
程序设计题目和源程序答案具有高度的灵活性和差异性,难以进行常规的标准化评测。受评测方式的制约,传统程序设计语言的练习及考试一般以标准化的笔试题为主,偏重于考察程序设计语言的基本概念和语法细节,而程序设计题目所占比重较小。这种练习及考试方式易于导致学生忽视编程实践能力和理论联系实际能力的培养。为此,需要在练习和考试中改变传统的方法,要求学生以实际程序设计为主进行练习,通过实际程序设计对学生的学习效果进行考核。这种练习和考试的方式改变了练习的目的,使练习由过去简单地复习课堂的讲授内容改变为由学生通过实践环节进行自学。这样,课堂讲授就可以集中对关键内容上,而不必在语言本身的细节上花费过多的时间。
5技术支持手段
为采用“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式,需要为学生在编程实践中提供具有及时监控和反馈功能的实践环境,并在课程作业方面增加程序设计题目的比例。这样,不但可以提高练习和考试的强度,使得习题更加接近实际程序设计的要求,而且也更能检验教学效果和学生的实际程序设计能力。学生的答题工作全部在计算机上进行,提交的答案必须是不存在任何语法和逻辑错误、能解决一个完整问题的源程序。学生在学习阶段必须重视实际编程能力,提高对代码质量和编程风格的要求,养成良好的编程习惯。同时,这也可以改变以往基于经验和直观感觉的人工阅卷方式,提高阅卷的效率,减轻教师的阅卷负担,保证成绩评定的准确和公正。而且,在C语言这样一门具有很强实践性的信息技术专业基础课程的实践环节采用基于信息技术的自动化支持手段,其本身也是对学生的一种示范和启发。
在自动化的评测系统中,最重要的问题是对程序设计题目的评测方式和标准。对程序的评价既有内在属性的指标,如功能、性能、正确性、可靠性等,也有外在属性的指标,如程序的结构、可读性、风格等。根据本课程的教学要求,程序评测系统主要采用内在属性指标,学生所完成的程序必须通过编译,产生可执行代码文件,在计算机上运行,根据题目的要求读入输入数据,进行正确的运算,产生正确的输出数据,才能得分。这种方式可以检查学生程序语法和基本功能的正确性。对程序的功能完整性和性能的评测通过设计具有不同难度的输入数据来完成。这样,就可以对学生的程序在问题分析、数据结构和算法的选择、实现的正确性和效率等多个方面产生适当的区分度。同时,为了全面提高学生专业化程序设计的能力,也可适当引入一些外在属性的指标以及相应的评测手段,以检验学生程序在程序的结构、可读性、风格等方面的水平。
根据这些原则,我们设计和实现了一个基于Web的程序设计语言练习及考试评测系统,并开通了C语言课程教学网站。该练习及考试评测系统由配置工具、命题及题库管理工具、Web应用服务器、程序题评测服务器、考试控制工具、成绩统计工具等组成,具有很强的可配置性和可扩展性,能够适应不同的练习和考试要求。为防范考试中可能的作弊行为,系统提供了实时网络监测工具和程序源文件及可执行码的功能;在一场考试中可以使用具有相同难度的多份试卷,以避免相邻座位学生之间的交流和抄袭。练习及考试评测系统既支持程序设计类型的试题,又支持单选、多选、填空等标准化试题。为适应练习和考试的不同要求,对所提交的答案可以分别设置为立即评测和定时评测。这样,在练习过程中学生就可以及时得知自己的答案是否正确,并及时改正错误。练习及考试评测系统可以自动完成对学生成绩的评测和统计,并根据需要生成成绩表。这样,不仅可以使教师及时准确地掌握学生的成绩,发现存在的问题,而且可以大大减轻教师的工作负担。
关键词:教学质量;教学手段;方法创新
C语言是目前最常用的程序设计语言之一,其功能强大、可移植性好,是大学计算机专业的基础课程,是很多重点课程如数据结构、面向对象程序设计、单片机等课程的先行课程和基础。但是,C语言也具有语法知识丰富,数据类型较多,结构层次复杂等特点,对于初学者,特别是刚接触计算机的新生来说,难度可想而知。在实际教学中,学生普遍反映C语言难学,听不懂老师讲什么,只会依葫芦画瓢,自己编程却一点思路都没有,甚至对C语言的学习产生一种畏惧心理。我们知道学好这门课不仅要求学生有敏捷的逻辑思维能力,而更重要的是教师采用何种教学方法,来激发学生的思维,切实提高学生的编程能力。传统的教学方式往往过分强调语言的语法教学,这样会导致学生学到最后,不知道自己能用这个干什么,这样的结果是与我们教学的目的一一能够解决实际问题相违背的。因此,如何迅速提高他们的计算机操作能力,培养他们对程序设计的兴趣,是一个大的挑战。本文根据学生的普遍问题、结合自身C语言教学经验和学习经历,谈一点自己看法。
一、实际教学中存在的问题
(一)传统的板书教学,缺乏可以辅助学习的有效途径。学生对于利用板书讲解编程的教学方式有厌倦心理,同时课后师生见面次数较少,缺乏面对面交流,这间接的影响学生学习的积极性。倘若将集视频、动画于一体的电子学案放到网络上,给学生创造良好方便的学习环境,将会对学生学习C语言起到积极的促进作用。
(二)教材过于注重对语句语法的深入剖析,缺乏以算法为核心的编程题的教学内容。大多数C语言教材中通常先给出一般的语法格式,然后逐步讲解语法要点,再举例说明。很多教师往往举一反三地对使用语句、语法进行深入的教学,而对算法教学却偏少、不重视。这导致学生在学习上也有了误区,有好些同学花大量精力做诸如等级考试的选择题、填空题,带给学生们更多的是关于语言语法的熟悉和了解,但对真正的目的一编程却没有什么帮助。这种方法实不可取,应大量练习编程题,而专门针对编程题的书却很少,这也导致了学生上机写程序时有种无从下手的感觉。
二、教学方法与手段
C语言课程是实践性极强的一门课程,根据C语言课程的特点,可以组合多种教学方法和手段,灵活使用,以培养学生的分析问题和解决问题的能力,提高学生的程序水平。
(一)项目教学法
项目教学法尤其适合该门课程的教学。教师在授课时可以通过项目分析,重点讲解程序设计的思路和方法,辅以语言知识的介绍,将课程内容分为若干项目,以程序设计为主线,贯穿各个项目。而每个项目的教学过程可由“要点分析”、“练习/3a机实践”、“疑难解答”三个阶段组成。这种教学模式能做到最大化得调动学生们的积极性和主动性,激发学生们的创新性的潜能,在学生们在掌握了C语言各个语法同时,也掌握了程序设计的整体思路,不至于让学生陷入一种“只见树木、不见森林”的状态。在选择项目的时候,可以考虑一些趣味性较强的或与学生密切相关的项目,以激发学生的学习兴趣。
(二)问题教学法
教师先提出问题,以学生独立完成为主,教师提供必要的辅导。这种方法不再沿用老师讲、学生被动听的模式,对学生自学能力要求较高,能给学生施加一定的压力,可以培养学生探索问题和解决问题的能力,也有利于学生们的创新能力培养。同时,在学生自身经过主动思考后,老师再对题目进行讲解,学生听课兴趣会更高,对于他们在实践中遇到的问题也会格外关注,理解更深刻。
(三)类比教学法
C语言编程是面向过程的思维方式,与我们实际生活中的思维方式不同,同时有很多内容太过抽象,因此学生往往难以接受。所谓的类比教学法,是指在教学过程中,将学生陌生的问题与我们生活中熟悉的东西进行比较,帮助他们理解和认识问题的本质,将抽象的问题具体化,使学生更好、更快地接受新知识。
三、激发学习兴趣
在课堂上尽可能采用一些趣味性强的程序作为例子、作业或实验题,以培养学生学习的兴趣。例如,我们在讲循环结构时,我们会提到公元前五世纪,我国古代数学家张丘键在《算经》一书中提出了“百鸡百钱”问题,该问题要用两个方程解出三个未知数,一般的方法解答该问题有些费时间,但是如果用编程的方法解决,可能几分钟就能把这几组答案全部列出。这个例子使学生明白数学知识与计算机之间是紧密关联的,也让他们明白程序设计是用来更快更好地解决数学问题。此外,我们将学生作业和考试中经常容易出错的问题拿出来,让学生们在课堂上进行找错,并进行适当地讲评,在活跃课堂气氛、提高学生主动性的同时,及时解决学生学习中存在的各种问题,达到巩固知识的目的。这样,学生在课堂上不断处于紧张和轻松的交替状态,使课堂气氛动静相宜,有利于学生对知识的探索。
四、培养自主学习能力