第一篇:C语言程序设计调试技术分析
【摘要】C语言是一种执行能力较强的结构化语言。C语言程序凭借自身的强大功能,其中主要包括使用方便、能够快速完成目标程序的处理等,并且能够对硬件进行直接操作,因此得到广泛应用。本文将对C语言的设计调试展开研究,希望为C语言程序使用起到积极的促进作用。
【关键词】C语言程序;调试技术;探究
通过多年的C语言程序设计及编译工作实践可知,很多人对自己编写的C语言程序运行过程中出现的错误,很难及时准确的找到错误产生的原因以及采取有效方法加以解决,本文将从如下两个方面C语言程序设计调试技术进行相应分析。
1运行错误的判断与调试
通常情况下,C语言程序运行错误主要分为两种,分别是逻辑错误和程序设计错误,前者在编译过程中不报错,可以运行,但实际运行结果与事先设想的存在偏差;后者是指程序编写过程中存在问题,在编译和连接程序时没有被发现,程序编写错误通常会导致计算机突然死机、信息输出混乱等问题。下面本文将对两种常见错误的调试方法逐一阐述:
1.1程序算法设计不合理
逻辑错误中经常会遇到的一种形式是C语言程序设计的算法不合理,例如对边界条件没有明确的定义,请看下述循环:该语句是想实现count次循环,但是在该循环中,while旁边的判断条件一直为真,那么就会使整个程序陷入“死循环”,显然这是由于算法上定义错误造成的,但是编译器对这类问题的识别度不强,只有程序在运行过程中出现异常才可能被设计者发现。再举一例,三角形的面积可以根据海伦公式计算出,但是首先应对给出的三条边长进行判断,看其是否符合三角形的判定定理,即任意两边之和大于第三边,如果不满足这个条件,那么就不能构成三角形,运算结构毫无意义;而程序员在对实系数一元二次方程进行程序设计时,要将方程在实数范围内无解的情况考虑进去,即要设计复数情况的处理程序,避免运行错误的出现。若采用手算的方式可以不事先考虑这个方面,可以在问题出现后再根据实际情况制定解决方案。但是C语言程序是为计算机设计的,是希望计算机按照程序要求进行相应的计算,计算机与人脑相比不具备自行应变能力,因此,在程序设计过程中必须事先预计好可能出现的问题,在运行程序之前采取有效的措施解决,特别是受客户委托设计的程序或是作为商品出售的软件更要保证程序运行的准确性。
1.2程序输入时的打字错误
还有一种较为常见的逻辑错误是C语言程序员设计代码输入的过程中,由于程序员的马虎导致的,例如将用于判断的条件“>=”输为“>”,将用于相等的判断“==”输为用于赋值的“=”等。存在这种错误的程序代码在运行过程中报错的形式多种多样,很难将该类错误的出现与程序员输入错误联系在一起。数据输入过程中,如果输入的字符存在格式错误也会对整个程序的运行效果产生影响,特别是在需要大量的数据输入并采用人工输入时,很容易发生此类错误。根据多年C语言程序设计经验,建议当需要大量数据输入时,可以采用文件记录的方式,再借助读写文件来完事数据的输入,这样就可以通过数据文件的编辑来查找数据中是否存有错误,并且在重新计算或再次应用过程中不需要反复输入。在科学或是工程计算应用程序中该方法的适用性很高。也可以采用自行编写的、性能比较完善的数据对输入模块进行校验来取代C语言中的scanf()函数。在数据处理、事物管理等较为复杂的应用程序开发的情况下多采用这种方法,通常需要将数据输入和用户界面进行交互使用,需要设计者具有较高的编程功底。
2C语言程序设计基本调试方法
2.1标准数据校验
在程序编译、运行环境搭建完成之后,就是运行和调试,运行调试之前需要使用若干组结果已知的标准数据对程序进行检验。在此过程中,标准程序的选取将直接影响到检验结果,因此进行标准数据选择时,尽量选取那些比较简洁且具有代表性的数据,从而解决检验结果准确性分析不足的问题。此外,对整个程序具有重要作用的邻接数据也要进行检验。
2.2程序跟踪
对于结构复杂的大型程序而言,一次性通过检验的概率较低。通常情况下,程序中都会存在各种问题,一个错误也没有的程序在实际应用过程中较为少见,因此,在程序正式运行之前,要经过多次跟踪调试。程序跟踪是程序调试工作中较为常见的一种方式。程序跟踪的具体应用通常是让程序代码一句一句的执行,认真观察程序的执行过程,做好记录,进一步分析程序中可能存在的错误。举个例子,在TurboC中,经常采用的程序跟踪方法有两种:①在集成环境中分步执行,利用断点设置和变量内容等功能的变化来观察程序设计的合理性;②通过在程序中直接进行断点设置,打印重要变量来观察整个程序中是否有错误存在。
2.3边界检查
在检查数据的过程中,对边界可能存在的特殊情况要有足够的重视,例如下列循环:需要对其中的参数count的不同取值进行判断,如count等于0、负数、999及1000等情况。若程序中存在由if-else或switch构成的分支结构,也要对其进行相应的数据判断,并且检测分支中的路径。
2.4简化循环次数
在调试程序的过程中,为了缩短调试时间提升程序的运行效率,可对程序进行简化,例如减少程序中的数组模块和循环次数、屏蔽非主要部分的程序段等。但是程序的简化要注意适度原则,如果程序太过简化,程序运行的真实性就不能被充分体现出来。例如一个N元一次的方程组求解程序,将N的值设置为2的检查是不能实现检测目的的,这样的赋值无法保证在数值较大的方程组中程序运行计算的结果仍然有效。如果N的取值为6,通过运行程序能计算出正确的结果,则可以减少程序出错的概率。
3结束语
计算机技术的快速发展改变了现代人工作、生活以及学习的方式,随着计算机软件技术的不断发展,功能越发强大,很多领域都应用到了计算机软件。但是在C语言程序应用过程中,程序编写出现错误将对整个软件的运行产生极其严重的影响。因此,保证程序编写的准确性是每个程序员责无旁贷的工作。本文对C语言程序设计和调试技术所涉及的各个方面进行了分析,首先对C语言运行过程中出现的错误进行判断和具体的调试方法进行介绍,其中阐述了较为常见的两种逻辑错误,然后进一步阐述了4种C语言程序设计中应用较为广泛的调试方法,希望通过本文的研究对C语言程序设计调试水平的提升有积极的促进作用。
参考文献
[1]张秀美,赵旭霞.程序调试技术在C语言函数教学中的应用[J].教育教学论坛,2014,22(11):85~86.
[2]崔光佐,程旭,佟冬,等.面向处理器的系统级模拟、仿真及调试技术———基于软硬件协同设计的新方法[J].计算机研究与发展,2011,38(3):361~367.
[3]李从宇,王宝光.嵌入式DSP系统C语言硬件编程技术[J].测控技术,2013,26(4):68~70.
作者:王明菊 单位:辽宁建筑职业学院
第二篇:C++程序设计课例开发研究
摘要:成果导向教学现已成为欧美等国家教育改革的主流理念。在教学过程中要求学生主要具备六种核心能力:协作力、学习力、责任力、执行力、专业力、发展力,在课堂教学中要体现以学生为主、教师为辅的特点,教师应注重运用多种有效手段,提高课堂质量。这就要求在课例设计过程中以职业活动为主线,模拟真实的教学情境,按实际工作任务重新组织和设计教学内容。本文就成果导向教学模式下的C++程序设计课例开发进行探讨。
关键词:成果导向教学;运用;C++程序设计课例;开发
新学期伊始,黑龙江职业学院各专业全面铺开实施成果导向教学,在成果导向教学的整个过程中,课例的开发不仅能够满足实际的教学需求,也能够提高对学生综合职业能力的培养。
一、课程总体设计
1.课程描述C++程序设计课程旨在引领学生掌握面向对象和面向过程编程的基本思想,执行标准C++的输入输出,熟练编写规范的结构化和面向对象程序。经由C++开发环境的搭建、C++项目的创建、代码的正确编写、程序的调试,以胜任C++程序的设计和开发。2.教学目标(1)能熟练安装C++软件,搭建C++开发环境。(2)能创建标准的C++程序,灵活运用运算符进行运算并实现输入输出。(3)能运用面向过程的基本思想编写结构化程序。(4)能熟练使用函数、预处理和自定义数据类型实现模块化程序设计。(5)能熟练使用类和对象、继承与派生实现面向对象程序设计。(6)能构建项目并编译和调试C++程序。3.核心能力以培养学生的专业能力、分析问题、解决问题能力为主,其中专业技能占50%,解决问题能力占40%,此外沟通整合能力和职业素养各占5%。
二、课例开发
1.课例的选取该课例的选取依照成果导向的教学理念,高度关注和努力培育积极、自主、能动的要素,模拟企业软件开发典型工作任务而获得工作成果,以达成成果为核心。课例的选取应贴近生活,便于学生接受,具有典型性和前沿性,能够达到事倍功半的效果。课例源于企业实践,在实际工作中具有代表性、实用性。通过校企合作,课程委员会与企业专家、工程师共同研讨,根据职业岗位要求选取一个典型的教学项目,进行集成开发,形成开发成果,并作为示例,有利于培养学生编程思想以及快速掌握程序设计方法。2.教学单元设计单元设计归纳为“一、三、五”。“一”是指设计一个完整项目贯穿于单元教学的始末,有利于学生对本单元所涉及知识点的全部融合,以便于学生与企业实际用人需求的无缝对接。“三”是指“三个阶段”,是在活动历程实施中要经历的准备阶段、发展阶段和整合阶段。“五”是指“五大要素”,包括参与主体、行为目标、活动时间、活动方式、活动内容五个要素。以第二单元的“设计与实现简易计算器”为例,课例的开发选择实用性较强的计算器,如用顺序结构中输出语句进行菜单设计,用选择结构的switch语句进行分支中的加、减、乘、除等计算,如果要想运算多次,可增加do-while循环语句进行多次运算。所涉及的知识点包含有顺序结构、选择结构、循环结构,涵盖整个结构化程序设计单元。整个教学过程课例设计按照“分析、计划、决策、实施、展示、评价”等六个步骤进行设计,在实践环节采用任务驱动式教学法。将班级学生分成几个学习小组,每组选出一位技术水平较高的学生担任小组长。由组长负责整个项目各个模块的设计和开发,制订项目开发计划和分工任务。每个学生在不同阶段分别担任不同的角色,通过协作、探究共同完成系统需求分析、统功能分析和模块设计、系统流程图数据结构设计、各功能模块设计、编码、调试等工作。每个课例完成之后进行成果展示,学生和教师分别进行评价和总结,以进一步丰富和完善课例。整个过程中教师进行全程引导,根据学生表现给予一定物质奖励,以激励学生自主完成任务。3.学习评量成果导向评量过程分为自我评量、组长评量和教师评量三个方面。自我评价是小组内部学生之间根据项目的工作过程,如课堂表现、上机操作、出勤等,进行小组内部成员的互相评分;组长评量是组长根据组员在组内的表现,如团结协作、组内互助、组内分担任务的完成情况进行评量;教师评量主要根据学生回答问题、代码的编写及调试、组内的表现等情况进行评量。这就要求每一个课例都要进行详细的功能分解,界面设计、各模块的功能实现都要占一定比例,评分前设计出详细的评分标准,根据给出的评分标准确定学生最终的得分。
三、小结
成果导向教学模式下的C++程序设计课例已经应用了一学期,学生成绩显著提升,期末总体平均成绩提高了约5分。课例的应用显著提高了学生的动手能力,同时也培养了学生专业能力及发现问题、问题解决等能力。但在实践过程中也发现了一些不足,课例的开发应不断完善,以期达到更好的效果。
作者:关丽丽
第三篇:c++程序设计课堂教学研究
【摘要】本文本着“以学生为主体,以能力、素质培养为中心”的高职教育宗旨,根据作者多年的教学经验及对《c++程序设计》课程教学改革的经验,先介绍高职院校中《c++程序设计》课堂教学中存在的问题,再介绍“教、学、做一体化”教学模式,最后重点介绍如何将“教、学、做一体化”教学模式引入《c++程序设计》教学课堂,激发学生的学习积极性和主动性,取得较好的教学效果。
【关键词】教、学、做一体化;教学模式;c++程序设计;课堂教学
1前言
目前,高等职业教育的目标是培养适应生产、建设、管理、服务基层岗位生存和发展需要的德、智、体、美等方面全面发展的地方职业技术性专门人才[1],需要实践能力强,具有良好的职业素质。本文本着“以学生为主体,以能力、素质培养为中心”的高职教育宗旨,根据作者多年的教学经验及对《c++程序设计》课程教学改革的经验,先介绍高职院校中《c++程序设计》课堂教学中存在的问题,再介绍“教、学、做一体化”教学模式,最后重点介绍如何将“教、学、做一体化”教学模式引入《c++程序设计》教学课堂,激发学生的学习积极性和主动性,取得了较好的教学效果。
2传统《c++程序设计》课堂教学中存在的问题
《c++程序设计》是高职院校计算机专业的专业基础课,是一门计算机编程语言,存在着理论性、知识性强的特点,所以在课程教学中偏重理论讲授,一般安排讲一次或两次理论,然后上机实践一次,这种教学模式存在着许多问题:(1)计算机语言本身枯燥乏味,陈旧的教学方法使得课堂气氛沉闷,学生学习积极性、主动性不高。(2)计算机语言本就难以理解,教学内容过多,学生理解、消化知识困难。(3)理论、实践脱节,不利于培养学生分析问题、解决问题的能力。(4)随着学习的深入,知识越来越难,造成学生对很多理论知识无法理解与融会贯通,无从学习,感觉像听天书。久而久之,学生对学习《c++程序设计》失去兴趣,产生无力感,甚至是放弃学习,导致教学目标无法实现,教学效果甚微,所以,教学改革势在必行。
3“教、学、做一体化”教学模式
“教、学、做一体化”教学模式,在教学内容上删除陈旧内容,增加新内容[2],并对教学内容重新整合和排版,以模块形式出现;在教学方式上主要采用任务教学方式和情景教学方式,教师是主导,学生是主体,让学生参与到学习中,并成为学习的主体,“唱主角”,老师做“导演”,或者只当一个不起眼的“配角”,让每个学生都来“表演”,以激发学生的求知欲、竞争欲和表现欲,培养学生的学习与应用能力[3];在教学实践中,每次课先提出要完成的任务,以任务为主线,让学生分析完成本任务需要哪些知识点,培养学生分析问题的能力。带着对问题的求知欲望,老师再讲解这些知识点,增加了课堂教授的实际效果。然后,在学生完成任务过程中,不停地对学生进行指导,及时引到学生解决遇到的问题,培养学生解决问题的能力,实现了“做中学,学中做”的有机结合。再次,给出一个类似的任务,让学生分组完成。最后,进行总结点评,先进行学生互评,老师进行总结,给出一个成绩,记入期末考评。这样学生参与课堂教学的全过程,能够充分调动他们学习的积极性和主动性,达到预期的学生目标。
4“教、学、做一体化”引入《c++程序设计》课堂教学
《c++程序设计》不仅是一门计算机语言,同时也是一门工具,学好该语言可以解决生活中的许多实际问题,所以实践性也很强,这就为引入“教、学、做一体化”教学模式奠定了坚实的基础。我们可以分五步来完成课堂教学设计。以讲解“一维数组”为例。在书本上,本次课的知识点有:数组的概念、一维数组的定义、初始化、引用、存储,数组的应用(排序)。
4.1创设任务,导入课堂
创设任务很关键,这个任务要能全面引出本次课预讲授的知识点,且通俗易懂,便于操作。我创设的任务是:编写程序由键盘输入6个整数,按从大到小输出。要想完成这个任务,学生需要知道:(1)如何保存这6个整数;(2)如何进行排序。按照之前学过的知识,定义6个整形变量也能存储6个整数,但是没法进行整体排序,如何存储6个整数可引出数组这个概念,进而讲解数组如何定义、初始化、引用和存储。如何进行排序呢?用if语句,我们能排3个整形变量的排序,但6个就过于复杂,这时可引出“冒泡排序法”,进而讲解该排序法。
4.2引导学生分析问题,激发学习兴趣
按照第一步的分析,学生应该提出上述问题,但为了快速切入问题,老师这时可以加以引导。为了提高课堂气氛,可让各组利用抢答方式提出问题,提出问题正确或涉及相关内容,给出奖励分数,计入学生成绩。提出问题错误或偏离相关问题,不奖不罚。
4.3带领学生完成任务
这一步也可以说是演示,老师边操作边讲解,将每一个知识点都对应联系到每一步实际操作之中,并将如何联系、需要注意什么问题等讲解清楚,让学生明明白白的解惑刚才提出的问题,满足对知识的渴求和求知欲望,获得成就感,并产生跃跃欲试的感觉,为下一步奠定基础。
4.4创设一个类似任务,让各组独立完成
新创设的任务要和讲解的任务类似或稍微加深,让学生通过努力能够完成。我创设的新任务是:编写程序由键盘输入8个浮点型数,先按从小到大输出,再按从大到小输出。这个问题和刚才讲解的问题几乎类似,意在考察学生是否已理解掌握一维数组的定义和初始化,是否已理解掌握冒泡排序的原理,并加深对刚才操作的理解和熟练程度。学生在完成任务的过程中,可能还会出现这样或那样的问题,老师要游走于各组间,进行指导、引导。
4.5评比,总结
这一步是对学生学习成果的检验和肯定。学生有着强烈的荣誉感,都想着自己要比别人强,自己的成绩要高于别人,利用这种心理,对学生的任务完成情况进行评比是对学生学习成果的一种肯定。首先老师要给出一个评比标准,我给出的标准是:程序运行结果正确,结构合理,语句简介,界面良好,优;程序运行结果正确,结构合理,良;程序运行结果正确,及;程序未运行出结果,不及。然后是互评,让各组按次序进行演示,一组在演示时,其他组对该组进行评判,给出分数。最后,由老师统计、公布评比结果,计入学生成绩,并对本次课的学习和各组的表现进行总结。这五步从创设问题、分析问题、解决问题再到创设问题、解决问题,最后评比,组成一个完整的教学环节。使学生一开始就参与到课堂教学中来,然后跟着老师的“导演”进行表演,直到最后获得知识、获得成就感,在学习过程中完成任务,在完成任务过程中体验快乐学习,是一种比较理想且高效率的课堂教学模式。
5结语
本文围绕“以学生为主体,以能力、素质培养为中心”的高职教育宗旨,通过对传统《c++程序设计》课堂教学中存在的问题进行分析,对“教、学、做一体化”新兴教学模式进行分析,找到契合点,通过五步完成将“教、学、做一体化”教学模式引入《c++程序设计》课堂教学,学生全程参与课堂教学的全过程,达到在“学中做”、在“做中学”的目的,激发学生的学习积极性和主动性,学生充分获取知识,获得学习成就感,取得了较好的教学效果。
参考文献:
[1]李国栋.高等职业教育培养目标定位研究[J].江苏理工大学学报(社会科学版),2001(03).
[2]秦虹.职业教育课程改革理念与实施策略研究[J].职教论坛,2005(36):6~12.
[3]伍建桥.高职课程改革与课程模式的构建[J].中国高教研究,2006(2):57~58.
作者:郭春光 单位:河南工业和信息化职业学院
第四篇:C语言程序设计课程及计算思维能力培养
摘要为了在C语言程序设计课程培养大学生计算思维能力,本文提出采用灵活多变的教学方法培养学生抽象能力,遵循从人脑思维-计算思维-C语言程序设计的方法来完成解题,将学生计算思维的培养置身于C语言知识点培养的基础之上,以计算复杂性为切入点训练计算思维,重视时间复杂度和空间复杂度的分析。
关键词计算思维;抽象;计算复杂
性计算思维的概念自美国卡内基梅隆大学的周以真教授正式提出后,已被作为涉及计算机科学本质问题和未来走向的基础性概念,其定义是:运用计算机科学的基础概念进行求解问题、设计系统和理解人类行为的一系列思维活动。如何通过计算机课程培养大学生计算思维能力,即计算思维能力培养“落地”问题已受到国内外计算机教育界的广泛关注。C语言程序设计是计算机基础教育中的一门重要课程,在课程的教学过程中需要用到计算思维理论。计算思维的本质是抽象和自动化,C语言程序是由变量、常量、数组、语句、函数等构成,其实质是利用抽象的数据类型来解决实际问题。在程序执行过程中,按预定步骤自动执行,这体现了计算思维的自动化。因此,可以把C语言程序设计看作联结人脑思维与计算思维的纽带,通过C语言课程加强学生计算思维能力,反之,学生计算思维能力的加强又可以进一步提高学生的编程能力。在利用计算思维求解编程问题时,在于从看似纷繁复杂的问题中,能抽象、归纳出解决问题的算法,再转化为具体实现的语句。计算思维的特征包括约简、嵌入、转化、仿真、递归、并行、抽象、分解、保护、冗余、容错、纠错、系统恢复、启发式、规划、学习、调度和折衷等,这些特征如何通过C语言程序设计课程培养出来,这是本文着力探讨的内容。
1计算思维中抽象能力的培养
在C语言的教学中,学生要面对林林总总的编程问题,如何解决这些问题,就需要我们采用灵活多变的教学方法,帮助学生分析问题,抽象出问题的实质,将问题转换成计算机可计算的描述,从而培养学生的抽象能力。而抽象能力正是计算思维中最重要的一个环节,计算思维中的抽象思维能力有别于数学、物理中的抽象思维能力。数学抽象强调的是利用概念,借助言语符号进行思维,其最大特点是抛开现实事物的物理、化学和生物学等特性,仅保留其量的关系和空间的形式,而计算思维中的抽象本质上源自数学思维和工程思维,这就要求学生在编程中必须进行计算性的思考,而不能纯粹地采用数学性的思考。下面我们来看一道例题:例1:输入一个正整数,要求将这个正整数反向输出。如何通过解决实际问题来提高学生的抽象能力,这是我们在C语言教学中要考虑的问题。本文提出遵循从人脑思维计算思维C语言程序设计的方法来完成解题:第一步:人脑思维。在大脑考虑该问题时,首先要举若干实例,例如,有一个正整数123,反向输出结果应为321,或者输入另一个正整数1234,反向输出结果应为4321。第二步:计算思维。如何解决上述例题,即如何通过C语言指令由计算机完成该任务,这时就需要培养学生的抽象思维能力。输入123,输出321,可以将321看作1*1+2*10+3*100,该式中的1、2、3分别为原数中的百位数、十位数和个位数,另外,该式中的1、10、100正好构成10倍关系,而这种关系可以利用C语言中的循环语句实现。第三步:C语言程序设计。在实际编程中,可以用“%”取余,逐位取出3、2、1,并定义初始值为1的变量,利用循环语句While,每循环一次,该变量自乘10,即可完成编程。这个实例可以在C语言教学中,讲授循环语句时使用。在讲授循环语句时,最常用的例子往往是1+2+…+100,教师一般会直接给出程序,然后分析语句的执行过程,这对于学生了解循环语句的语法是有帮助的,但类似例子往往会给学生形成思维定势,会使学生误认为循环语句的作用也就是完成数字累加的功能,这样就会阻碍学生在遇到实际问题时作进一步思考,在完成例1时就不会灵活使用循环语句。所以,在C语言的教学中,应大力提倡学生抽象思维能力的培养,而不是就语法而语法,教师应秉持这样的原则,语法在编程语言中是起辅助作用的,计算思维的培养必须置身于C语言知识点培养的基础之上,而C语言知识点的培养必须置身于计算思维培养的视野之下。
2以计算复杂性为切入点训练计算思维
计算思维的主体是计算,核心是计算法则,要考虑的重点就是计算复杂性,计算复杂性所研究的资源中最常见的是时间(要通过多少步才能解决问题)和空间(在解决问题时需要多少内存)。C语言课程教学的目的是让学生掌握程序设计的技能,如何能在最少的空间下以最短的时间、使用最简洁的方法完成任务,这可以让学生以更高的视角去审视编程问题。C语言课程虽然不是算法设计课程,但在编程的同时,不可避免地要涉及算法。因此,在C语言教学中,可以计算复杂性为切入点训练学生计算思维,即在解决问题的同时,从时间和空间的角度选择最佳算法。例2:求1+2+…+n的结果。在C语言教学中,例2的编程方法大多会用到循环语句,其时间复杂度是O(n),当n为较大值时,其运算时间随n的增加而呈线性增加,为降低时间复杂度,可以利用求和公式n(n+1)/2来解决这个问题,这时,其时间复杂度降为O(1),只需要1次加法、1次乘法和1次除法完成。在实际编程中,时间复杂度和空间复杂度往往是一对矛盾体,在降低时间复杂度的同时,空间复杂度会随之增加,或者空间复杂度降低了,但时间复杂度又增加。在实际编程中,一般需要在两者之间选择折衷办法,或按实际需要,以牺牲某一复杂度为代价,以时间换空间,或以空间换时间。这一理念需要学生通过完成大量的题目才能深刻体会。例3:有以下两段C语言函数voidswap1(inta,intb){intc;c=a;a=b;b=a;}voidswap2(inta,intb){a=a+b;b=a-b;a=a-b;}在例3中,函数swap1和swap2的功能都是完成两数交换,但swap1中定义了变量c,即在内存中开辟了一个int内存空间,完成一次数值交换需要三次赋值运算,所以,swap1可被看作是以空间换时间;swap2中的数值交换方法不常见,因为这种方法不同于我们人脑的一般思维方式,它没有开辟新的内存空间,但完成一次数交换需要三次加法和三次赋值运算,时间复杂度比swap1降低,所以,swap2可被看作是以时间换空间。在传统C语言教学中,大多忽略程序时间复杂度和空间复杂度的分析,而计算复杂性是计算思维中一个不可忽视的环节,学生在学习C语言的过程中,往往会满足于编写出符合题意的程序,而止步于评价所编程序的好坏。应该说,正确分析程序的计算复杂性,对于培养学生的计算思维能力有很大的帮助,只有做到正确分析时间和空间复杂度,才能在原有的基础上作进一步修改和完善,从而达到知识的灵活运用目的,也进一步锻炼了学生的计算思维能力。
3结语
在过去C语言设计课程中,计算思维能力是依靠学生“悟”出来的,这种状态不利于培养高素养的信息化人才。本文提出以C语言教学中,倡导学生进行计算性的思考,并且运用灵活多变的教学方法,秉持语法在编程语言中是起辅助作用的原则,将计算思维的培养置身于C语言知识点培养的基础之上,并以计算复杂性为切入点培养学生计算思维。
参考文献
[1]李廉.计算思维——概念与挑战[J].中国大学教学,2012(1):7-12.
[2]魏书堤,赵辉煌,邓红卫.基于计算思维的C语言教学案例设计[J].当代教育理论与实践,2014(3):108-110.
[3]吴文虎.我怎么讲好“程序设计基础”这门课[J].中国大学教学,2011(12):10-12.
[4]杨俊生,张润.基于计算思维的“C程序设计”案例设计初探[J].工业和信息化教育,2013(6):65-69.
作者:马燕 李顺宝 徐晓钟 李鲁群 张玉萍 单位:上海师范大学信息与机电工程学院 上海师范大学数理学院
第五篇:C语言程序设计课程教学改革与实践
摘要:C语言作为高校计算机的一门公共基础课,对于培养学生的编程能力具有重要作用,本文根据高校学生现状及存在问题,结合多年教学实践,改变传统教学模式,将任务驱动、案例引入、分组协作等多种教学方法结合起来,通过激发学生学习兴趣,上机实践操作,培养学生的实际应用能力。
关键字:C语言程序设计;任务驱动;案例引入;分组协作
1引言
C语言是程序设计的一门专业基础课,在计算机专业体系中占有重要的地位,学习C语言,不仅为后续专业课奠定基础,而且重要的是通过学习培养计算思维使学生具备编程的能力。C语言由于概念多,语法繁杂,数据类型及表达式丰富多样,在使用时程序设计灵活,容易出错,特别是传统的C语言教学模式,主要侧重于语法知识和基本结构,[1]通过对语法的记忆和理解来学习编程,这种模式虽然能较好地保证知识的系统性与完整性,却忽略了对程序设计能力和思维创新能力的培养,很难吸引学生的学习兴趣,更无法使学生建立真正的编程思想,[2]以致使学生学习C语言的积极性不高,难以达到良好的教学效果。
2C语言教学现状及存在问题
2.1学生水平有差异,缺乏学习兴趣
各高校学生来源不同,总体文化基础有差异,一方面,C语言运行环境是纯英文的,因此学习C语言对英语能力要求较高,增加了学生的学习难度;另一方面,C语言数据类型及表达式丰富多样,程序设计灵活,由于学生没有建立起良好的编程思想,因此缺乏学习兴趣,感觉枯燥难学。
2.2学习目标不明确,理论与实践相脱节
C语言在很多高校中不仅是计算机专业的必修课,而且也是各类非计算机专业的公共基础课,在实际教学中,尽管C语言语法灵活,应用广泛,但学生在学习过程中由于缺乏正确的职业引导,不能很好的用所学理论去解决实际问题,无法体会学以致用的成就感,归根结底,还是理论与实际相脱节的教学模式导致学生学习目标不明确,没有充分认识到C语言的重要性和基础性,而是急于求成的去学习当下比较流行的开发语言[3],从而导致学生的学习缺乏主动性和积极性。
3教学方法的改进措施
3.1激发学生的学习兴趣,培养编程思维
由于C语言程序设计是一门实践性很强的课程,因此在课堂上首先采用案例引入的项目教学法,通过展示使用C语言解决实际问题的案例引出教学内容,这种方式可以直观的让学生体会到C语言程序设计的实用性,同时采用任务驱动法,让学生自己上机完成一些简单程序任务,激发学生的学习兴趣,提高教学效果。例如:统计分析班级学生成绩。成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示[4]。程序源代码如下:以上程序是条件运算符的基本案例,学生通过这个例子可以直观体会到简单的数学统计问题是如何通过计算机编程来实现的。
3.2通过案例归纳基本算法,提高编程能力
算法是解决问题所采取的方法和步骤,是程序设计的的根本,教师在教学过程中,始终要将分析和设计算法作为教学重点,通常我们采用案例教学法,通过对案例的分析找到解决问题的方法,即算法,最后结合具体的高级语言转换成程序代码。提供的案例应贯穿一些基本算法,比如:求素数,求累加和,求阶乘,求方程的解,冒泡排序算法,选择排序算法、递归算法等。从课程开始就要培养学生重视算法,目的是使学生建立编程思想,进而提升编程能力。例如:任意读入一个整数,输出其符号位从低位到高位上的数字。这个案例的算法核心是利用“任何正整数整除10的余数即得该数个位上的数字”的特点,用循环从低位到高位依次取出整数的每一数位上的数字。假设读入的整数为3796,存放在x中,执行x%10后得余数为6并输出;将x/10得379后赋值给x。再执行x%10后得余数为9并输出;将x/10得37后赋值给x……直到商x为0时终止。
3.3加强上机实践,采用分组教学模式
为了使学生更好的了解C语言程序设计的编程理念,课程内容的安排上应该由浅入深,同时加强上机实践操作,让学生能真正用所学知识去解决实际问题,提高了学生的动手能力。其次在学习方法上采用小组协作模式,对学生进行分组层次化管理,根据学生的基础及兴趣,合理分配成员,每组4-5人,进行分组教学,每个小组为一个整体。对于小组成员来说,小组协作模式既督促组员掌握基本知识,而且还提高了自身的团队协作能力,为以后步入社会打下基础。
4结束语
总而言之,在C语言的教学过程中,应根据学生的实际情况,采用多元教学模式将理论知识转化为具体生动的案例,来增强学生的学习兴趣和编程意识,再通过加强上机练习,提高学生的编程能力,为后续课程学习奠定基础。
参考文献
[1]胡枫.《C语言程序设计》的案例式教学的设计.青海师范大学学报.2010年第4期
[2]金妮娅.高职高专《C语言程序设计》教学探讨.科技教育.2014
[3]陈新元.探析高职C语言实验教学.信息与电脑.2014.11
[4]颜晖.C语言程序设计实验指导[M].北京:高等教育出版社,2008.
作者:戴丽萍 宋艳 张风彦 崔莹铜 单位:川职业技术学院
相关专题:融入 宁波港口经济圈 兰州大学学报医学版