前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的语言教学方法主题范文,仅供参考,欢迎阅读并收藏。
中图分类号:G642 文献标识码:B
文章编号:1672-5913(2007)18-0012-02
1引言
“C语言程序设计”是高等院校计算机及其应用专业学生的一门必修课,也是其它一些非计算机专业学生的一门重要基础课。C语言功能强大,表达能力强,但其丰富的功能所带来的繁多的数据类型和复杂的语法结构,给初学者产生了不少困难。在教学过程中,它不但要求教师具有良好的教学水平和教学方法,也要求学生具有良好的逻辑设计能力,因此,教师在教学过程中必须找到适合学生学习特点的教学方法,使学生在短暂的课堂学习时间内,学到尽可能多的C语言概念和C语言编程技巧。笔者从事C语言的教学工作,在教学中发现一些问题,也总结了一些经验。现就C语言课的教学方法,谈谈个人看法。
2循序渐进,由简到难
在C语言教学过程中,应该要遵循由易到难,循序渐进的原则。学习C语言的学生,一般都没有计算机语言的基础,对计算机语言的认识非常有限,很多基本概念都不知道,因此,在教学过程中,应该从简单的开始,循序渐进,慢慢培养学生的兴趣。例如在学习C语言时,关键是要熟练掌握并灵活运用好32个关键字。我们可以根据内容的先后顺序和功能给这些关键字分类,比如说,short、long和signed用于说明整型数据,float和double用于说明实型数据,而由if和else可构成选择结构的控制语句,在循环结构控制语句中可用for、while和do关键字。在上每节课之前,我们可以先板书写出已学习过的关键字和本节课要学习的新的关键字,对于新的关键字,写出其全名并注上对应的汉语意思来,以加深对关键字的理解,通过例题和练习来掌握此关键字的用法,久而久之,单调的关键字就变得容易接受并能熟练掌握了。
3多举例子,理论与实践并重
为培养学生的学习兴趣,教师在教学过程中,不能一味地按书本去讲,而要多举些实际的例子,多与日常的应用相结合,用C语言解决实际问题,使学生明白C语言的用处及其强大的功能。例如,在讲授for循环时,可以计算当前班级的所有学生的平均成绩,计算总分时,用for循环计算,最后把总分除以班级人数即可得到班级学生的平均分,这样就可以节省很多工作量,而且保证结果的正确性。
C语言还是一门实践性相当强的课程。学好C语言,要理论与实践并重。学习中存在的疑点或难点,学生可通过上机调试得到明确解答,同时也加深对学习内容的理解。教师在上课时,给学生举的例子要当场演示,在多媒体教学电脑上编译运行程序,得出正确的结果,加深学生的印象。对学生而言,在每一次的上机前应做好充分准备,编写好上机内容。对上机中出现的问题应能调试分析,编写实验报告,分析程序结果。学生只有反复上机操作,才能对C语言有更深、更全面的认识和理解,逐步提高实际操作和学习的能力。
4强调细节,避免出现不必要的错误
C语言规则繁多,且使用灵活,很容易出错。如果不小心,一些经验丰富的C语言程序员都会犯一些小毛病,但这又并不是语法上的错误,而是出现了逻辑错误,这样使得调试过程变得更难。因此,教师在C语言的教学过程中,一定要强调细节问题,把一些经常会犯的错误总结出来,如果程序运行结果不正确,就要去检查是否犯了其中的某个错误。例如在C语言里,赋值运算符是“=”,而“==”是关系运算符的相等,但是很多学生在编程时经常会误把“=”当成“==”,这样在判断语句中,例如if (a = 1),括号中的条件则会永远为真,程序在编译时不会提示有错,可以编译通过,但这明显不是所要的结果,程序最后运行的结果当然就会不正确。
5传授编程技巧,强调编程规范
C语言程序设计包含的内容广泛,每节课的教学容量大,如果泛泛地讲,既抓不住重点,又起不到好的教学效果。教学中,教师应该传授学生一些编程技巧,例如一些算法的运用等,让学生学会如何熟练应用C语言行动编程。在专科类院校,对该课程的学习,应能掌握一般C程序的编写和上机调试运行,并能解决一定的实际问题。因此,应引导学生多读程序,多编程序,多上机调试程序。除此之外,很重要的一点,就是要让学生养成良好的编程习惯,有良好的编程规范和编程风格。
6教会学生如何高效地调试程序
教师教会学生如何编写程序是主要任务,但这还远远不够,教会学生如何高效地调试程序也是很重要的一面。对于初学者来说,编写一个程序,无论大小,最初不可能一点错误都没有,如果是语法上的错误还好解决,编译器会报错。如果出现了上面所提到的逻辑错误,则编译器就不会报错了,可以编译通过,但是结果是不正确的,因此就要去找到出错的地方。教师在教学过程中,应该把一些调试的方法总结出来,教给学生,让他们自己去学习如何找错纠错,最后把程序调试成功。
7结论
C语言是一门非常优秀的程序设计语言,由于本身概念比较复杂,使用又灵活,要很好掌握它有一定难度。但在教学中,学生对C语言还是有极大兴趣的。只要教师对C语言有较深的理解,有比较丰富的实践经验,并在教学中采取相应的措施与教学手段,一定能取得理想的教学效果。
参考文献
[1] 刘霞. C语言教学改革探索与实践[J]. 吉林省经济管理干部学院学报,2003,(10).
[2] 谭浩强. C语言程序设计 (第三版) [M]. 北京:清华大学出版社,2006.
[3] 梁力. 程序设计基础与C语言[M]. 西安电子科技大学出版社,2001.
关键词:C语言;教学方法;编程
中图分类号:G424 文献标识码:A文章编号:1009-3044(2008)35-2383-01
An Analysis of the Engineering students' C Language Programming
LI Chun-ling
(Department of Computer Science and Technology,Shanxi University of Technology,Hanzhong 723000,China)
Abstract: Because C language has the merits that other programming language can not compare with,it becomes one of the most widely used and the most influential programming language in the world today.So in colleges of engineering,C language has become the important basic course in the teaching program.This paper analyses the functions and characteristics of C language and proposes adopting appropriate teaching methods in many ways to help students solve difficult problems in programming.
Key words: C language;teaching methods;programming
对于高等学校各工科专业的学生来说,由于C语言概念简洁,数据类型和运算符丰富,表达能力强,用法灵活,程序结构性和可读性好,易于体现结构化程序设计思想,同时它既具有高级语言程序设计的特点,又具有汇编语言的功能;既能有效的进行算法描述,又能对硬件直接进行操作;既适合编写应用程序,又适合开发系统软件。因此,C语言作为程序设计的入门语言课,被广泛的应用于教学中。但也正是由于这些特点,增加了初学者掌握C语言的难度,使这门课程显得太抽象,难以把握。如何使C语言教学能够取得良好的教学效果,为工科专业的学生在后续课程的学习中打下良好的基础,是高校计算机课程教学中一个突出问题。本文从C语言的特点出发,对工科专业C语言的教学方法进行探析。
1 培养学生良好的编程风格
所谓编程风格是指编程者在程序设计过程中通常共同遵守的一些约定规则。有的人编写的程序代码让人一看就很舒服,而有的则让人一看就头疼,这主要是由编程风格造成的,高质量的程序离不开流畅、清晰的编程风格。因此,培养学生良好的编程风格是C语言教学中非常重要的任务。
编程风格没有十分明确的规则可以遵循,但是绝大多数软件公司和众多的优秀程序员们还是总结了一些比较好的编程规则。在这里给出几点建议:
1) 缩进格式。缩进的大小是为了清楚的定义一个块的开始和结束。首先这比起代码一律左对齐而言,更容易看清程序的逻辑结构。其次,就是它能在你将程序变得嵌套层数太多的时候给你警告,适当的对程序进行修改。
2) 标识符的命名。通常符号常量采用大写字母表示,而变量则采用小写字母表示。
3) 注释。好的程序应该含有恰当的注释,方便别人用最短的时间读懂自己所写的代码,这对团队合作开发也是很有帮助的,同时也为今后对代码的修改提供方便。
编程风格还包括空格、空行、出错信息的处理、goto语句的使用等,在此就不逐一说明。总之,良好的编程风格需要逐渐养成,所以除课堂教学时要灌输编程风格的思想外,还要将其融入实践环节,让学生切实感受良好编程风格的重要性。
2 从多方面加强对学生编程能力的培养
C语言程序设计教学的目的是培养学生的程序设计能力,因此,在教学的过程中,应该注重学生的算法实现和程序设计能力的培养,而不应该只局限于C语言程序设计基础知识的讲授中。为了在讲授知识的同时,最大化的提升学生的编程能力,可以利用以下方法实现:
1) 要加强学生阅读程序能力的培养。让学生阅读典型例题的经典程序,通过“读”程序,使学生更好的理解C语言的程序设计方法,并掌握常见的编程方法和技巧。
2) 在阅读程序的基础上,对一些经典算法要加以总结和归纳。例如累加问题,累乘问题,排序问题等。在学生充分理解和掌握的基础上来动手模仿编写功能类似的程序,通过模仿逐步培养能力。
3) 在教学过程中,要做到层层铺垫,循序渐进。例如对于求解最大数这一问题,如果求解是两个数中的最大数,三个数中的最大数,四个数或是更多数中的最大数,这一问题的算法在连续的几个章节中都会逐步的给出答案,通过这样循序渐进的讲授,调动起学生的学习兴趣,从而逐步提高学生解决问题的能力。
4) 建立合理的编程顺序。通过学习我们知道,对于一个函数体而言,通常包含四个部分:变量类型的说明,提供数据部分,运算部分以及输出部分。在编写程序时,一般也都是按照这样的顺序进行实现的。在这介绍一种更方便的编程顺序。第一步,找出解决问题的关键步骤,先实现运算部分的语句编写。第二步,观察运算语句中所涉及到的变量,对需要提供数据的变量进行赋值。第三步,根据变量的使用情况进行合理的类型说明。最后,完成结果的输出。
3 加强上机实践提高编程能力
在上机实践的过程中,既要有基本的较为简单的验证性题目,又要包含具有一定难度的设计性题目,由易到难,从而调动起学生的学习兴趣。最后当学生具有一定的自主编程能力之后,可以通过一个综合性的设计实验,将其所学的知识相互关联起来,当然可以采用多人协作的方式,将复杂问题分模块逐一实现,这样还能有效的提高学生的协作能力。最后将各个模块连接起来,通过上机测试,从而达到提高学生编程能力的目的。
4 结束语
C语言是高校工科专业的一门基础课程,我们通过对教学方法和教学模式的不断探索,激发起学生的学习兴趣,使学生不但能够熟练掌握程序设计中的基本知识,编程技术和常用算法,更重要的是要培养学生利用C语言解决实际问题的的能力。
参考文献:
[1] 谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999.
关键词 小学语文;教学心得;快乐氛围
语文作为一门基础性的学科,在学生的学习和生活中起到不可估量的重要作用。它是学生开阔视野,认识世界的第一把钥匙。在教学活动中我深刻的认识到学生良好的学习习惯和积极活跃的教学氛围是多么重要。
一、充分的备课是关键
备课是所有教学活动开展的前提,是每一堂精彩的课堂教学的重要环节之一。首先教师在备课之前必须了解教学大纲的具体内容,知道通过学习文章应该达到怎样的教学目的。其次,教师必须能够独立的理解和参透所要教授的文章,通过充分、细致的研读抓住文章的重点和词句,以及难点,并且清楚的分出作者所要表达的主旨大意和思想感情。同时在备课之余教师应该了解到学生的现有学习水平,全面的考虑以怎样的方式和方法教授课文,学生才能够更加容易的理解和学习。教师应该站在学生的角度看问题,用学生的思维方式和价值观去理解学生的心里,理解他们所面对的问题和他们的情感、心理。设计适合的教学方式使得学生更好的理解文章,学习到更多有用的文化知识。在教师本身应该拥有广博的学识,及时准确的了解到语文教学发展的新动向,对教材作出不断地更新和修改,这样才能不断地提高教学效率。
二、鼓励学生养成预习的良好习惯,提高学习效率
学生在课堂学习之前对于文章的预习在整个课堂教学活动中起到不可或缺的重要作用。预习是指对所要学习的文章的深入学习和了解,通过预习,学生必须养成独立思考和解决问题的能力,提高他们的自学能力。在以前的教学活动中,只有一小部分学生能够独立自主的完成对课文的预习工作,而其他的学生对课文没有自己的理解,对后期教学工作造成了负面影响。不知道就不能积极的参与到教学中去,因此教学效果也就相对的不好。因此教师必须鼓励学生养成良好的预习习惯,针对不同的学生提出不同的预习方案,提高学生的预习效率。通过对课文有效的预习学习到课文的内容,提出自己独立的问题和见解改变只在课堂上听的现象,提高学生的积极主动型,使得学生能够积极参与到课堂讨论的活动中去。
良好的学习习惯对学生在日常学习中起到了至关重要的作用,随着时代的变化,独生子女越来越多,家庭的期许也越来越重,孩子的压力也就越来越大。家长们都希望孩子能够有出息,所以很多孩子天天深夜还在学习,但这种效率低下的学习方式并没有提高学生的学习成绩,相反还会影响孩子的身体健康。所以培养学生良好的学习习惯,提高学习效率至关重要。
一位著名教育学家曾经说过,学习是一门伟大的艺术,只有有效的学习方法才能提高学习效率。作为教师在课堂教学活动中应该积极主动的激起学生对于学习的兴趣和好感,教育学生有效率的学习。只有学生的学习效率提高了,教师的教学质量才能不断提高。
三、巧妙运用激励性语言
在日常教学活动中语言的重要性不言而喻。对小学生而言,他们渴望进步、成功、表扬,所以教师要善于运用多样性的语言对学生进行鼓励。如果学生在课堂上回答问题表现的不错,我就会用如下一些语言给与他适当的鼓励:“回答的非常好!”“回答的非常准确!”“回答的漂亮极了!”“这位同学真聪明!”“多么精彩的回答呀!”“回答的非常精彩!”如果有的学生的回答超出我的预料之外的话,我会用非常惊讶的口吻给与鼓励:“真意外,你会回答的这么棒!”“你的回答,比老师所想到的还要全面,真不简单!”有时我会把发散性思维的问题放到课堂上让学生们进行谈论,当有学生的回答不完全准确时我也不会给与即时的补充,而是让其他同学就他对的方面进行赞扬,这样他就会意识到自己错误的方面。要是有学生读书声音不是很清晰的话我会说:“读的真准确,要是声音响亮一点的话就更加完美了!”对于回答错误的学生我也会给与积极的鼓励:“敢于发表自己的意见非常好,但是考虑问题的方向错了哦!要加油,老师相信你是最棒的!”在这个过程中我更看中的是学生这种积极学习的态度,而不是发言的质量。因此,在教学活动中巧妙的运用激励性语言会提高学生的学习积极性和学习的效率,从而提高教学质量。
四、营造良好的教学氛围
课堂需要欢笑、课堂需要和谐、课堂需要轻松。只有在欢乐、和谐、轻松的课堂里学生才能够自由的翱翔在知识的海洋中,茁壮成长。作为课堂教学活动中的领导者,教师必须具备强大的精神力量,以自己的情感和人格魅力营造和谐、民主、轻松的课堂氛围。只有在这样的环境下师生的思想互动才能够有效的进行。在这个过程中教师不应该过于严格,因为这样有可能无形中会给学生带来压力,无法达到轻松的状态。其次,教师在课堂上应该是充满激情的,只有积极的、满腔热情的去激励和感化学生,才能使得学生的积极性提高,这样学生的潜能就能得到开发,课堂效率便得以提高。从而实现学生在潜移默化的状态下受到中国五千年历史文化积淀的熏陶和感染,达到教学目标。
五、总结
总之,我认为小学语文教学工作是任重而道远的。时代在变、信息在变,我们教学的方法也在不断地探索和改变,只有不断地吸收新的方式方法,在寓教于乐的基础上不断地实践,不断地探索,把自己展现给学生才能给学生带来欢乐,带来知识,才能完全的实现教育的目标。
参考文献:
[1]刘艳梅.浅析语文课堂教学中的审美教育[J].科教文汇,2010,(2).
关键词:指针;变量;数组
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)18-4434-02
C语言程序设计这门课程是理工科学生都要必修的一门课程,在讲授这门课程的时候,指针对学生来说是最难理解的一个部分。如何能让学生更好地掌握和接受指针的概念,是C语言教学中的一个特色。该文阐述了通过事先引入指针概念,并引用图示的方法,讲解了让学生循序渐进地掌握指针的讲法。图1
变量定义就是开辟一个指定类型长度的内存空间,并为该空间定义一个对应的名字,如图1所示。一个变量名对应内存单元中的一块内存空间,而这块空间是有地址的,对变量内容的读和写都是通过这个地址来实现的,地址我们也称为指针。在这里我们第一次提出指针的概念。
2)讲解一维数组时,引入指针的概念。
定义一个一维数组就是开辟n个指定类型长度的内存空间,每个内存空间也都和变量一样有对应的名字,就是数组元素的名字。
例如:
int a[5];
定义一个一维数组,包括5个元素,其实是在内存中开辟5个整型类型长度的内存空间,如图2所示。图2
a数组中的5个元素在内存中是连续存放的,如果第一个元素a的地址是2000,则a[1]的地址是2004(假设一个整型占4个字节),a[2]的地址是2008,依此类推,a[4]的地址是2016。也就是说每一个元素都有存放该元素值的空间,这个空间我们用地址来查找,这里提到的地址也就是指针。在这里第二次提出指针的概念,并强调每个变量或一维数组元素都有其对应的内存空间。
3)讲解二维数组时,引入指针的概念。
例如:
int a[3][4];
定义一个3行4列的一个二维数组,其实也是在内存中开辟12个整型类型长度的内存空间,如图3所示。
可以定义一个普通类型的指针变量,用来指向整型变量或整型数组元素,我们也可以定义一个指针变量指向一个一维数组。int (*p)[4];
该语句定义的是一个指针变量,而这个指针变量是指向一个包括四个元素的数组的,此数组的每个元素类型是整型。
如果有:
int a[4];
那么我们用语句p=&a;可以让p指向a数组了,因为a就是一个包括四个元素的整型数组。
再例如:
int a[3][4];
摘要:本文介绍了笔者根据自己多年来的教学经验,在C语言程序设计教学中应用探究式教学方法的一些经验。
关键词:探究式;C语言;教学方法
中图分类号:G642
文献标识码:B
“成功的教学依赖于一种和谐安全的气氛。”(罗杰斯)“心理安全”和“心理自由”是两个最重要的条件,教师要充分尊重学生,尊重他们的兴趣爱好、思维方式、思想感情,要真正“蹲”下来,倾听学生的心声,做学生的朋友,构建亲、助、乐的人际环境,呵护学生们的好奇心。有了这种平等、宽松、无责怪的氛围,学生才敢提出问题、思考问题、探究问题,进而找到解决问题的方法。在课堂上我鼓励学生随时提出问题,对敢于提出问题的学生大加赞赏,并允许“插嘴”,因为“插嘴”中往往蕴涵着创造思维的火花,还允许学生大声发笑、实话实说,因为这是情感的真实流露,更允许学生之间有争论,因为争论说明学生在思考、有创见。课堂上敢于提问的学生越来越多,即使有的问题幼稚可笑,我也倍加珍视,向他竖起大拇指。
实例一:在介绍了数组的知识和指针的概念后,开始学习指针的加减法运算。我首先举了一个形象的例子。有一排房子共有20个房间,规定四个家庭每家各占有连续的5个房间,即第一个家庭占有1到5号房间,第二个家庭占有6到10号房间,以此类推。此时,指针的加减运算,就如同计算每个家庭的房间号一样,第二个家庭从6号房间开始,那么第三个家庭就是第二个家庭上加1,此时1的单位是一个家庭,而一个家庭占有5个房间,则第三个家庭开始的房间号就应该是6+1*5=11,而不是6+1=7。
实例二:在学习指针的加减法运算时,我把学生安排在每人一机的计算机教室,提供一组指针运算的练习题,请学生编程、调试、运行、分析结果、得出结论。本次课的前提是学生已学习了数组的知识和指针的概念。
上课前,我发给学生需要在课堂上填写的实验报告。然后,在与计算机相连的屏幕上给出了一个问题:
设int a=3;
则a-1=,a+2=
提问:哪个同学可以告诉我这两个表达式的值是什么?学生们不由得轻声笑了出来:“太简单了”。当学生说出分别是4和5之后,在屏幕上给出第二个问题:
设int *pa,a[30];
pa=&a[1];
若a[1]的地址为3000,则pa-1= ,pa+2=
提问:这两个表达式的值是什么呢?学生们有的立即回答:“2999和3002呗”。有的学生在迟疑:“不对吧”。看到学生的反应后,我指出:“这就是本次上机实践研究的问题――指针的加减法运算”。
在交代了实验报告的填写方法之后,课堂的大部分时间由学生在计算机上动手实践。与传统课堂不同,所有的学生都全神贯注地进行编程、调试、运行、讨论运行结果,填写实践报告。
在学生对运行结果感到困惑时,我会提示:如果pa不是整型指针,a不是整型数组;而是字符型、长整型、单精度类型、双精度类型呢?
所有的学生再一次投入到实践中。经过几次类似问题的解决以及相互的交流,学生们开始运用归纳法对问题的结果进行分析――这正是我所期待的!
在实验的结论一栏,学生们写着:指针加1,不是指针内容加1,而是加上1个它所指那个类型的长度;加2就是加2个那个类型的长度。
教师们对这节课的收获很满意,正准备总结,有一名学生举手:“老师,指针要是指向数组,一旦加1,就把整个数组跳过去了”。“没错!”我知道该进行表扬了。这对下一次的学习是个很好的铺垫。
这节课的突出特点是:学生的学习方式变了,他们通过自己的活动探索获得知识,而不是通过听讲获取“现成”的知识。“问题情境―编程实践―课堂交流―课堂操作与联系”代替了过去的“听讲―笔记―练习”,充分调动了学生学习的积极性,使学生处于学习的主体地位,让学生主动探索、观察,得出结论,取得了较好的教学效果。
实例三:在对for语句的深入学习时,我们把学生安排在每人一机的计算机教室,提供一组简单的for程序段,请学生编程、调试、运行、分析结果、得出结论。本次课的前提是学生已学习了for与while的对应关系和break、continue在循环语句中的功能。
我们给出了一个for程序段:
for (k=1;k
{
scanf (“d”, &d );
printf (“%d”, d );
}
提出要求:编程并调试运行,观察这个程序段的结果。然后将它转换成while语句,观察结果。交待完要求后,指出:本次课的教学目的是探索for与while的对应关系。学生们认真进行了修改,而且很快编写出了不同方式 的while程序段:
Ak=1; Bk=1;
while ( k
{ scanf ( “%d\n”,&d ) ; { scanf ( “%d\n”,&d ) ;
k++; printf ( “d\n”,d ) ;
printf ( “d\n”,d ) ; k++;
} } while ( k
经过对比,结论很快出来了:三个程序段的功能都是将键入的10个整数打印出来。这时,我们给出了第二个程序段:
for ( k= 1 ; k
{ scanf (“%d”, &d );
if (d
printf (“%d\n”, d );
}
提出了同样的要求。学生们读完后知道,此for程序段的功能是将键入的10 个整数中的非负整数打印出来。于是又开始对此程序段进行修改,而且很快编写出了不同方式的while程序段:
Ak=1; Bk=1;
while ( k
{ k++; { scanf ( “%d”,&d);
scanf ( “%d”,&d ); if ( d
if ( d
printf ( “%d\n”,d ); printf ( “%d\n”,d);
} }
可这两个程序段的功能却不相同,A段程序的功能与给出的程序功能相同,B段程序却是一共打印出了10个非负整数。
学生们展开了激烈的讨论,经过长时间的讨论、实验,得出结论:有continue的for语句转换成while语句时对应关系要调整,循环变量的位置一定要正确。
最后,我们给出了第三个程序段:
for ( k=1;k
{
scanf (“%d”, &d );
if (d
printf (“%d”, d );
k++;
}
关键词:教学法;直接法;听说法
中图分类号:G642 文献标识码:A 文章编号:1002-7661(2013)09-007-01
为了使我们的教师能自觉主动地驾驭各种教学法,提高教学质量,本文旨在介绍一下教学法产生的理论基础,基本原则及其评价,目的在于提高对教学法理论的的认识和加强对教学实践的指导。
一、直接法
《韦氏英语大辞典》对直接法有过一段解释:“直接法是教授外语,首先是现代外语的一种方法,它通过外语本身进行的会话、交谈和阅读来教外语,而不用学生的母语,不用翻译,也不用形式语法。”
直接法的基本原理是“幼儿学语”论。从语言文字产生和发展的历史来看,人类是先有口语而后有文字的。文字符号只是在语言(口头语言)产生很久以后才产生的。口头语言是第一性的,根本的,而书面文字则是第二性的、派生的。直接法便是仿照幼儿学习母语的自然的基本过程和方法,来设计外语教学过程和基本教学方法。
使用直接法进行教学的过程应体现如下几项基本原则。1、直接联系原则。每教一个新词语,应把该词语所代表的事物、意义及客观表象直接联系起来。2、模仿为主原则。不是先学习语言规则,而先听周围的人说话,模仿着说。以模仿多练为主,语言理论为辅。3、归纳途径教语法规则原则。让学生先实际掌握语言材料,再从他们积累的感性语言材料中总结出语法规则,用以指导以后的学习。4、以口语为基础原则。先口头实际掌握语言,然后再学习文字符号的识记和书写。
直接法的优点是:1、采用各种直观教具,广泛运用接近实际生活的教学方式,激发学生的学习兴趣,积极参与课堂教学活动。2、有利于培养学生的语音语调,特别是在培养学生的活动能力方面效果明显。3、强调直接学习和应用外语,促进学生使用所学的语言在课内外广泛开展交际。4、注重实践练习,培养语言习惯。5、为外语学习提供了一种生动活泼的学习方法。
直接法比较适合于以纯实用为目的的外语训练班。外语专业的打基础阶段,特别是入门阶段也比较有效。直接法在外语教学法史上起了积极的促进作用,它对于语法翻译法是教学史上的一大进步,并成为以后教学法现代改革派的发端。
二、听说法
听说法是以结构主义语言学研究外语教学问题的。听说法把听说放在首位,主张先用耳听,后用口说,经过反复口头操练,最终能自动化地运用所学语言材料,即把听到的外语能用口头表达出来。
美国普林斯顿大学教授莫尔登把听说法理论基础概括为下列五点:1、语言是说的话,而不是写出来的文字。2、语言是一套习惯。3、教语言,而不是教有关语言的知识。4、语言是本族人所说的话,而不是某个人认为他们应该如何说的话。5、语言是不同的。
听说法的理论基础是美国结构主义语言学和行为主义心理学。语言学家通过调查研究发现,一种语言人的口头讲的话与该种语言的传统语法有些地方是不一致的。在他们看来口语是活的语言,学习语言主要是学习口语。心理学家根据观察、分析动物和人的心理结果,认为人和动物的行为有一个共同的因素:刺激和反应。在进步的研究基础上,得出语言教学是教师对学生进行声音刺激和学生对声音刺激进行反应过程的理论。
关键词:C语言 教学改革 教学方法
中图分类号:G642.0 文献标识码:C DOI:10.3969/j.issn.1672-8181.2013.17.119
1 C语言教学中存在的问题
C语言程序设计作为普通高等院校理工科各专业的一门程序设计入门课程,有着其特殊、重要的地位。对于绝大多数同学来说,学习C语言是他们第一次接触计算机语言。作为一种计算机语言,C语言对于初学者来说比较抽象,很多知识点在教学中很难让学生理解透彻。在我们实际的教学实践中发现,学生们普遍认为这门课难度大、不易学,即使同学们学了但不会灵活使用的现象也十分严重。与此同时,任课教师们也认为该门课程教学课时少,教学效果不理想。那么,在C语言教学过程中主要存在什么问题呢?究其原因主要有以下几点。
第一,学生的学习目的不明确。很多学生认为学习C语言没有用,跟本专业结合不紧密,学习缺乏积极性跟主动性。还有很多同学认为学习C语言就是为了通过全国计算机二级考试,通过了计算机二级考试,毕业后就有了求职的敲门砖。面对这种形势,教师们为了提高学生的考试通过率,往往在讲课时过分注意语句和语法细节,与程序设计的实际要求偏离甚远。因此,同学们学到的只是枯燥语法跟一些无用的解题方法,却没有真正学会程序设计的基本思想和方法,也就更不可能真正学会用C语言这门工具来解决实际问题。
第二,教师的教学方法过于传统陈旧。在我们目前的教学环节中,绝大多数教师还是以讲授为主,这种传统的填鸭式教学,让学生感觉学习枯燥乏味,不能充分发挥学生的学习主动性,学生没有学习的兴趣,久而久之导致学生不爱学也学不好。因此,改变传统的教学方式迫在眉睫。
第三,教学实践环节重视不够。程序设计是一门实践性很强的课程,课堂上的理论学习对于学生学习C语言远远不够,课后大量的上机实践是非常必要的。但是在我们日常教学中,同学们在机房上机练习时,由于教师人手、精力不够,导致学生们往往在遇到大量语法错误或逻辑错误时对调试丧失信心,失去学习动力,更有部分同学把宝贵的上机时间用于娱乐游戏,最后的结果就是,课程上完了,很多同学却连基本的操作也不会。
第四,考核方式落后。我们现在许多学校的考核方式十分单一,往往都是教师出卷子,学生用笔作答。这种考试方式,往往造成学生只要背几道例题就可以考试得高分,没有真正考核学生的实际的编程能力。因此,期末考试的方式改革也势在必行。
2 解决方案的探讨
分析以上原因,我们发现要解决C语言教学中的种种问题,首先要从培养学生的学习兴趣入手。只有学生对对所学的课程产生浓厚的兴趣,才可能去积极主动地学习。同时要积极改变教师教学过程中一些传统陈旧的做法,使用一些新颖的考核办法来提高学生的学习主动性。为此我们提出以下几点改革措施:
第一,让学生明确学习目的,培养学生对C语言学习的学习兴趣。学生一开始学习可能不一定对此门课程感兴趣,我们可以着重给学生讲授C语言的发展历史,C语言在计算机语言中的重要地位,C语言在生产实践中的具体实例。最重要的是拿一些C语言程序设计的小实例,通过这些实例所表现出的动画、界面来让学生对课程产生浓厚的兴趣,让学生认识到,C语言程序设计不仅仅是枯燥乏味的语法和代码。
第二,教学时采用那些能够培养和吸引学生的学习兴趣,能够启发学生编程思维的教学方式,比如在课堂上可以适当减少老师讲授的时间,老师只讲授基本的概念、语法和一些解决问题的基本思路,主要发挥学生的主观能动性,由过去的以老师为主,填鸭式的教学方式,变为讨论式、对话式和辩论式等以学生为中心的教学方式。让学生从问题入手,主动去寻找解决问题的方法,老师只在一旁进行必要的点拨,让学习过程变得有趣,让知识变得有吸引力,让学习由“要我学”变成“我要学”,让学生在学习过程中得到极大的满足感,从而提高教学效果。
第三,加强实践教学环节的教学。首先,老师在上机实验时多选择一些趣味性强的题目,激发学生去主动学习。可以先通过一个或几个实例,从问题的提出、分析到方案的具体设计,让学生了解解决问题的全过程,来指导学生在遇到问题时该如何解决。然后提出一些与演示问题相似的案例,让学生利用自己所学到的知识去解决问题。在学生自己上机实验时,可以充分利用计算机网络,使老师与学生之间以及学生与学生之间形成良好的互动,提高学生的自学能力和团队协作能力。
第四,充分利用网络教学。比如我校就设计开发了“C语言程序设计”课程网络教学平台,模块包括教学大纲、实验大纲、电子教案、精选习题、教学录像、网上答疑、在线编程及BBS等。学生可利用这些网络资源进行自主学习、互相交流,提高学习效率。C语言程序设计网络教学平台内容丰富、特色鲜明,满足现代教育技术中的交互性、协作性、个性化、及时反馈等原则,能有效激发学生的学习兴趣,符合网络教学先进性、科学性、多样性的基本要求,为广大师生创建了一种全新的教学环境,使学生的学习突破传统的时空限制,变得轻松、灵活。
第五,改革传统的考核方式。传统的考核方式形式单一,不能够真正衡量学生的实际编程能力。C语言程序设计课程的教学目的,就是培养学生熟练运用计算机语言编制和调试程序,解决实际问题的能力。只有通过上机考核才能真正考查衡量学生的实际上机编制和调试程序的能力,督促学生在平时的学习中就时刻注重调试程序。为此我们将考试分解开来,期末考核方式以机考成绩为主,在这种考核形式的促进下,学生程序编写及程序调试能力将会有普遍、较大提高,不局限于以往的死记硬背课本,有效地提高了学生的学习兴趣及程序设计能力。
3 结束语
总之,在C语言程序设计的进教学过程中,我们要根据实际情况,把多种教学方法结合起来,因材施教,着重发挥学生的主体作用,培养学生自主分析问题、解决问题的能力,才能让教师教得好,学生学得好,为学生后续课程的学习打下一个良好的基础。
参考文献:
[1]皮连生.学与教的心理学[M].上海:华东师范大学出版社,2001.
[2]牛熠.C语言教学中学生兴趣的培养[J].广东:东莞理工学院学报,2006.
关键词:教学质量;教学手段;方法创新
C语言是目前最常用的程序设计语言之一,其功能强大、可移植性好,是大学计算机专业的基础课程,是很多重点课程如数据结构、面向对象程序设计、单片机等课程的先行课程和基础。但是,C语言也具有语法知识丰富,数据类型较多,结构层次复杂等特点,对于初学者,特别是刚接触计算机的新生来说,难度可想而知。在实际教学中,学生普遍反映C语言难学,听不懂老师讲什么,只会依葫芦画瓢,自己编程却一点思路都没有,甚至对C语言的学习产生一种畏惧心理。我们知道学好这门课不仅要求学生有敏捷的逻辑思维能力,而更重要的是教师采用何种教学方法,来激发学生的思维,切实提高学生的编程能力。传统的教学方式往往过分强调语言的语法教学,这样会导致学生学到最后,不知道自己能用这个干什么,这样的结果是与我们教学的目的一一能够解决实际问题相违背的。因此,如何迅速提高他们的计算机操作能力,培养他们对程序设计的兴趣,是一个大的挑战。本文根据学生的普遍问题、结合自身C语言教学经验和学习经历,谈一点自己看法。
一、实际教学中存在的问题
(一)传统的板书教学,缺乏可以辅助学习的有效途径。学生对于利用板书讲解编程的教学方式有厌倦心理,同时课后师生见面次数较少,缺乏面对面交流,这间接的影响学生学习的积极性。倘若将集视频、动画于一体的电子学案放到网络上,给学生创造良好方便的学习环境,将会对学生学习C语言起到积极的促进作用。
(二)教材过于注重对语句语法的深入剖析,缺乏以算法为核心的编程题的教学内容。大多数C语言教材中通常先给出一般的语法格式,然后逐步讲解语法要点,再举例说明。很多教师往往举一反三地对使用语句、语法进行深入的教学,而对算法教学却偏少、不重视。这导致学生在学习上也有了误区,有好些同学花大量精力做诸如等级考试的选择题、填空题,带给学生们更多的是关于语言语法的熟悉和了解,但对真正的目的一编程却没有什么帮助。这种方法实不可取,应大量练习编程题,而专门针对编程题的书却很少,这也导致了学生上机写程序时有种无从下手的感觉。
二、教学方法与手段
C语言课程是实践性极强的一门课程,根据C语言课程的特点,可以组合多种教学方法和手段,灵活使用,以培养学生的分析问题和解决问题的能力,提高学生的程序水平。
(一)项目教学法
项目教学法尤其适合该门课程的教学。教师在授课时可以通过项目分析,重点讲解程序设计的思路和方法,辅以语言知识的介绍,将课程内容分为若干项目,以程序设计为主线,贯穿各个项目。而每个项目的教学过程可由“要点分析”、“练习/3a机实践”、“疑难解答”三个阶段组成。这种教学模式能做到最大化得调动学生们的积极性和主动性,激发学生们的创新性的潜能,在学生们在掌握了C语言各个语法同时,也掌握了程序设计的整体思路,不至于让学生陷入一种“只见树木、不见森林”的状态。在选择项目的时候,可以考虑一些趣味性较强的或与学生密切相关的项目,以激发学生的学习兴趣。
(二)问题教学法
教师先提出问题,以学生独立完成为主,教师提供必要的辅导。这种方法不再沿用老师讲、学生被动听的模式,对学生自学能力要求较高,能给学生施加一定的压力,可以培养学生探索问题和解决问题的能力,也有利于学生们的创新能力培养。同时,在学生自身经过主动思考后,老师再对题目进行讲解,学生听课兴趣会更高,对于他们在实践中遇到的问题也会格外关注,理解更深刻。
(三)类比教学法
C语言编程是面向过程的思维方式,与我们实际生活中的思维方式不同,同时有很多内容太过抽象,因此学生往往难以接受。所谓的类比教学法,是指在教学过程中,将学生陌生的问题与我们生活中熟悉的东西进行比较,帮助他们理解和认识问题的本质,将抽象的问题具体化,使学生更好、更快地接受新知识。
三、激发学习兴趣
在课堂上尽可能采用一些趣味性强的程序作为例子、作业或实验题,以培养学生学习的兴趣。例如,我们在讲循环结构时,我们会提到公元前五世纪,我国古代数学家张丘键在《算经》一书中提出了“百鸡百钱”问题,该问题要用两个方程解出三个未知数,一般的方法解答该问题有些费时间,但是如果用编程的方法解决,可能几分钟就能把这几组答案全部列出。这个例子使学生明白数学知识与计算机之间是紧密关联的,也让他们明白程序设计是用来更快更好地解决数学问题。此外,我们将学生作业和考试中经常容易出错的问题拿出来,让学生们在课堂上进行找错,并进行适当地讲评,在活跃课堂气氛、提高学生主动性的同时,及时解决学生学习中存在的各种问题,达到巩固知识的目的。这样,学生在课堂上不断处于紧张和轻松的交替状态,使课堂气氛动静相宜,有利于学生对知识的探索。
四、培养自主学习能力
关键词:课件;数据结构;教学法
中图分类号:G424 文献标识码:A
文章编号:1005-913X(2013)01-0114-02
一、前言
目前,高校计算机专业教学计划中程序设计语言类课程普遍开设三到四门甚至更多。一般为C语言、C++、JAVA、C#等。开课时间从入学到毕业不间断。这几门课程在教学内容和教学方法等诸多方面存在着很大的相似性和相关性,因此应该作为一个联系紧密的整体设计课程的教学目标。然而,目前教学中普遍存在着每门课程各自为政的问题,较少从总体上考量系列课程的教学目的和教学重点以及教学方法等等的差异性。毫无疑问,这会影响程序设计能力的培养。如果能更多地从总体上对系列教学目标进行规划,对教学内容的取舍进行统筹安排,对课程之间衔接和配合进行合理设计,就能充分有效地利用有限的教学学时,取得更好的教学效果,使学生形成较强的程序设计能力。所谓层次化方法正是基于以上的考虑而提出的。
层次化方法概要地可以划分为两种层次:把这几门课程作为一个完整教学体系,提出这个教学体系的层次化,主要解决各个课程的目标定位和课程之间的内容衔接与配合;另外,具体到每门课程自身的内容、能力培养和考核标准的层次化细节。
二、课程体系的层次化
计算机专业课程教学以及社会人才需求对程序设计语言教学的要求本身就是层次化的。例如《数据结构》课程要求学生对语言语法和算法设计有较好的掌握。而软件企业则希望学生具有较强的开发能力。这些决定了在不同阶段开出的程序设计语言课程的教学目标教学内容和培养能力要求不同,是不同层次的要求。不同的要求,可以划分为三个层次:面向初学者的基础层次;面向其他课程或课程设计环节的应用层次;面向毕业设计的开发层次。在不同的阶段分别用不同的课程作为载体去实施或者虽使用同一种语言但教学内容和目标不同。国外有的大学的课程设置中有Windows程序设计I,Windows程序设计II,Windows程序设计III这样的安排,国内更多的是在不同学期开出不同的课程如C语言、C++、JAVA、C#。对多门课程如果不做系统的规划和设置,课程不建立联系与配合关系,结果可能类似于下面的情形:每个课程是一块砖,多块砖平铺下去,可能只有长度和宽度,却没有高度,不能成为建筑物。只有使课程之间相互衔接相互配合,各司其职形成层次分明的整体,才能达到既有理论教学又有能力培养的目的。
可见,要体现课程体系的层次化,关键要解决好下面几个问题:明确不同的课程的定位,突出不同课程的教学重点,确定不同课程的教学内容取舍,研究不同课程适用的教学方法。要系统地分析需求,要有整体观,要与相关课程关联考虑,这可以说是“有所为有所不为”,也可以说是“有可为有不可为”。例如对于基础层次的程序语言课,以讲授语法知识为主要教学重点,要有充分的教学学时来突出这个重点,有充分的练习来加强学生语法知识的掌握,当然还要辅之以其他一些环节。对应用层次课程教学则应引入大量的案例,引导学生围绕案例进行自主的知识扩充,而对开发层次课程教学,则要抛弃课程知识框架束缚,转而以项目为先导按软件工程规范,进行类似实战的演练教学,在教学期间,学生分组讨论,研究设计方案,进行任务分配,完成编码调试,一切要尽可能地仿真。那种不分层次,笼而统之进行案例教学的现象是应该避免的。
三、教学内容的层次化
就教学内容而言,程序程序语言课程也呈现出层次化的特点。从课程名称顾名思义,至少可以划分为语言知识教学和程序设计能力培养这样两个层次。关于程序设计能力培养的内容在后面详细讨论。就语言知识而言,我们又可以划分为三个层次:基本语法知识、语义理解和语用。虽然每门课程各有其特点,但是,这三个层次却是共有的。总体而言:语法知识包括该语言的字符集、常量变量命名方式、数据类型、运算符和表达式、保留字、程序结构等内容;语义理解包括语言中的语句格式和执行逻辑;而语用则是关于各种语言资源的内容和应用方法,例如标准函数库、类库等,现代程序设计和软件开发有越来越多的可复用软件资源,因此了解这些资源并且很好地使用这些资源越来越多地成为学习语言的重点。例如在.NET Framework的公用类库(FCL)中就有3540个类,分布在123个命名空间(name space)中。而Java(1.4版)共有2757个类,分布在135个包(package)中。
按不同目标和定位,不同的语言的教学对以上的三个层次的处理有不同的侧重点,相应地有不同的考核方式。例如处于基础层次的语言,以语法语义知识的教学作为重点,其考核方法当然是通过大量选择、填空、完型类题目看识记性的知识点的掌握情况。但是若是处于应用和开发层次的语言,其教学则应以语言资源的应用即语用为重点。考核当然应能检查学生的逻辑思维能力和解决问题能力。
四、培养能力的层次化
程序设计语言课程教学的任务和目标是语言知识教学和程序设计能力培养两个层次。如果说语言知识教学是程序设计能力形成的前提和基础,那么,程序设计能力培养则是学习语言知识的最终目的。学习语言是为了正确有效地使用语言表达思想解决实际问题。正如我们学习语文从识字,扩充词汇开始,然后学习语法知识,最后学习表达学习欣赏作品学习写文章。由于我们的目的是为了用语言进行交流表达思想,因此在口头讲话和书面的写文章过程中按照正确的语法使用语言成为语言学习的重点内容。没有语言知识这个基础,不可能很好地表达思想;反过来说即使有了基础,也并不意味着自然就会表达了,这里需要大量的训练。学生作文能力不是一蹴而就的,程序设计能力培养也需要一个过程,而且可能是一个复杂的长期的过程。在这个过程中,教与学的两个主体的角色随着教学过程的进行不断发生变化,绝不应该是一成不变的“填鸭式”,也不应该是放任的“赶羊式” 。首先,教师要准备好从知识的传授者到训练指导者以至项目组织者这个角色变化所需要的内容。同时学生也需要有从学习知识到提高技能的心理和意识。
培养能力的过程是一个渐进的过程。这个过程至少有以下三个阶段(或者叫层次):分析程序模仿阶段、分析问题写程序阶段、综合应用开发阶段。在不同阶段应该采用不同的教学方法。例如分析模仿是很有必要的,在这个层次,教师应该指导学生分析程序的基本结构特点,重要的代码段,对其中重要的知识点加以讲解,然后挖空部分程序段,让学生尝试完型填充。在此基础上,提出程序功能的扩展要求,指导学生完成一个新的程序。经过大量的分析模仿之后,可以上一个层次,即分析问题写程序。在这个层次,比较合适的方式是课程设计。但是需要解决两个问题:一个是题目的规模和复杂性控制,一个学生不能独立完成。
五、考核方法的层次化
在程序设计课程的完整教学体系中,不同的课程目标定位不同、教学内容不同、教学方法不同,这就决定了它们的考核方法也不同。按照层次化方法研究,须对不同课程的考核方式方法做精心的设计。使之能够与具体课程的情况相匹配。例如对以语言基础知识为主要教学目标的课程,其考核方法应该把那些识记性的内容作为重点,题目覆盖知识点要全面,体现随机性,考察学生知识掌握的全面性和深度。而对以培养软件开发能力为目标的课程,则须以综合性的问题分析设计为主要内容进行考核。总之,不同课程的考核方式方法,要体现差别化,体现层次化。
六、结束语
传统教学方法研究有关于由浅入深循序渐进的论述,建构主义教育理论主张采用自上而下任务分级的教学方法研究,在CDIO工程教育模式的12条准则中,很好地体现了层次化理念,例如一体化课程设置、设计制作经验、集成化教学过程、主动学习、CDIO项目评价等。可以认为,层次化方法研究既适用于以传授理论知识为主的大学课堂教学,也适用于以工程能力为主的公司培训中。程序设计课程教学的特殊性在于其内容的多样性、知识的复杂性、能力要求的迫切性,因此,对其教学计划和实施的全过程进行良好设计显得尤为重要。层次化方法研究和方法使我们可以充分利用资源,使广大学生进行良好的程序设计知识和能力建构,成为满足企业需求的人才。
参考文献:
[1] 张剑平.现代教育技术-理论与应用[M].北京:高等教育出版社,2003.