时间:2023-06-01 09:46:01
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇c程序设计,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:实验教学; 教学方法; 程序设计
1 引言
C程序设计是计算机专业学习中的一门非常重要的基础课程, 是学生学习C++、VC、数据结构、操作系统等专业课的先导课程。C 程序设计主要培养学生正确的算法设计以及编程能力,培养学生结合所学知识解决实际问题的能力和正确的编程思维方式。因此, 提高C 程序设计的教学质量对计算机专业学生的学习至关重要。本文提出以下几个建议, 以供大家参考与探讨。
2 加强实验教学, 激发学生学习的兴趣
兴趣是激发学生主动学习C 语言的关键, 而加强实验教学是激发学生学习的兴趣一种重要方式。计算机专业是一个实践性非常强的专业, 上机实验是学好C 语言程序设计的一条捷径。在实验教学中, 通过上机运行具体的实例程序,学生便会立刻感觉到C 语言的神奇, 有了好奇心, 学生才能使领略C语言的魅力,从而激发了学生的学习兴趣。如果再结合一些趣味性的实例,让学生从中体会到编程的快乐, 从而达到学生主动学习的目的。
3 先整体后局部的教学模式
C 语言程序设计的初学者在学习的过程中, 经常会因为学习繁多的知识要点而陷入一种误区“钻牛角尖”。C 语言本身具有非常灵活、知识点非常繁多的特点, 一开始很多学生什么都看、都学, 什么都研究的过细, 这导致这些学生不知道学的什么, 不知道如何阅读程序和组织程序, 学生很难抓住C 语言程序设计学习的重点和构建程序设计的思想。为了减少学生的误区, 本人在教学中, 先给学生搭建整体的程序结构与程序思想, 然后在学生领会程序的设计思想后再局部细化每一个知识点, 使学生逐步积累,在应用去理解和体会。这样会避免学生因C 语言灵活性大, 难度大, 难理解, 难记忆的特点, 而失去学习C 程序设计的信心和兴趣。在教学过程中, 把细节的、难于记忆的、枯燥的知识融入到日常的学习中, 避免学生出现死记硬背的现象, 使学生学会“学习”和查阅资料, 使学生明白学习知识要活学活用, 从而培养学生的学习能力。
4 培养学生正确的思维方式
C 语言是一门计算机语言。因此, 它有语言的特点, 如C语言有其自身的词汇( 标识符、关键字、运算符、分隔符、常量、注释符等) 、语法规则、语句等。计算机语言又不同于人的自然语言,它有比自然语言更严格的要求, 否则计算机无法编译、识别、执行。针对其特点, 我认为可将C 程序设计的知识点分为记忆型和灵活应用型两类: 记忆型的如关键字、运算符、优先级等; 灵活应用型的如数学模型、数据结构、算法、程序设计方法等。这里关键注意两点, 一点是以算法的表达形式描述出解决问题的方法、步骤; 另一点是使学生明确计算机如何执行一个C 程序。这需要培养学生正确的编程思想和思维方式, 以“计算机意识”去思考问题。首先将你要用自然语言描述的解决问题的方法步骤( 即算法) 转换成算法表形式( 如N- S 流程图) , 然后再将其转换成C 程序, 这种转换的思想、规则十分重要, 使学生逐渐缩小这种自然语言与计算机语言的鸿沟。
算法设计是程序设计课程的教学重点, 而将实际问题抽象为数学模型是解决问题的重点, 解决了这两方面的问题就达到了培养和提高学生分析和解决问题的能力的目标, 但对于C 语言的初学者来说, 如求一元二次方程的解, 排序、查找等典型算法, 汉诺塔、百钱百鸡、链表等典型问题, 这些算法对于计算机专业的学生来说,其分析与设计的过程基本能够理解。如果将这些算法编写为程序似乎更难一些, 抽象一些, 甚至感觉无从下手。这就是自然语言与计算机语言之间的鸿沟。如何才能将实际问题的解决办法转换为计算机能够识别、运行的程序呢? 因此, 本人在教学中, 采用对算法精讲多练, 采用流程图等形式, 使学生逐步加深对算法与程序之间的抽象转换的理解, 从而培养学生正确的编程思维模式, 达到了良好的效果。
5 采用多媒体教学和传统教学相结合的启发式教学
教师应当转变教学理念, 改变填鸭式的课堂教学方式。应该采取启发式、互动式的教学方法来活跃课堂气氛, 以引导学生积极思考, 主动学习。启发式教学是在教师全面掌握讲授内容的前提下,在讲解新的讲授内容前,通过对以前学习的相关内容的复习,引出新的讲授内容。例如在讲解分支程序设计章节时,应首先启发学生使回忆一下顺序结构的执行过程,进而引出分支结构在C 程序设计中的实现原理和编程思路。而互动式教学是教师驾驭讲台能力的具体体现。一个教师站在讲台上, 要不断地扫视学生,观察学生的表情,了解学生的接受程度,并能及时地调整教学的进度和步骤,允许学生在不懂的时候随时提问,真正实现课堂上的互动, 构造自然、和谐、欢快的课堂气氛, 使学生主动思考, 自然接受, 其教学的效果必然会显著地提高。对于难度大、有显著的特点的教学内容, 可采用对比的教学方法, 以加深学生的理解。
6 结束语
通过这样教学方式, 本人在实践教学中取得了良好的教学果。C 程序设计的学习对学生后续专业课程的学习非常重要, 因此C 程序设计的教学至关重要。只要我们不断加强理论与实践的探索, 在实际的教学过程中根据不同对象摸索适应不同群体的教学方法, 就能不断提高教序质量, 为学生的专业学习夯实基础。
参考文献:
[1]谭浩强.C 程序设计(第3 版)[M].北京: 清华大学出版社,2003.
钟 实
(江西科技学院)
[摘 要]C语言程序设计课程是计算机专业教育的重要组成部分。将探究教学引入C语言程序设计教学中,不仅可以提高学生学习的兴趣,调动教师教学的
热情,也丰富了探究教学的理论与实践。具体分析并探讨了C语言程序设计探究教学的实施目标、实施条件、教学情境的创设、探究形式、教学评价等问题。
[关键词]C语言程序设计 探究教学 实施目标
一、 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.
作者简介
钟实(1986-02)男、民族(汉),籍贯(江西省南昌市),2010毕业于浙江大学
[关键词]C语言程序设计 改革 实践
引言
C语言程序设计课程足以C语言为平台,使学生全面了解程序设计的总体思路、程序没计的基本算法、C语言的语法规则以及使用C语言进行构化程序没计的方法,并具有一定的程序设计和程序调试的能力,为今后使用C语言解决实际问题打下良好的基础 由于C语言涉及的概念比较复杂,规则繁多,使用灵活,容易出错,同时该课程又是学生首先接触的第一门程序没计课程,所以很多学生学习起来都感到困难和吃力.并不同程度产生畏惧心理。
在C语言程序设计的教学工作中,我们发现,学生的学习热情不高,更谈不上综合应用能力的培养与提高。我们C语言课程教学组通过对我校C语言程序设计课程教学现状的调查分析,总结出了教学效果较差的主要原因,并从教材内容、教学方法、教学手段和、上机实践和考核评价体系五个方面进行了大胆的改革与实践,并取得了较好的教学效果。
一、C语言程序设计课程教学现状分析
为了实时掌握学生的真实学习情况,任课教师对学生进行了问卷调查。根据问卷结果及各位教师的教学经验,总结出我校C语言程序设计课程教学效果较差的主要原因有以下几点。
(1)内容抽象、枯燥,学生学习兴趣度低。相比第一学期已经或多或少有所接触并有一定基础的大学计算机课程而言,第二学期开设的程序设计课程是一种截然不同的全新的课程,出现了大量的新概念、新名词和新方法。上机时好不容易敲上了一个程序,一运行就会出现一堆错误。62.4%的学生看不懂错误提示,84.76%的同学不会使用单步跟踪、Watch窗口等基本调试工具,22.3%的同学竟然根本不知道这些调试工具。于是学生对该课程的学习举步维艰,学习的热情急速降温。
(2)实用性不强。近80%的同学认为C语言的语法知识学了一大堆,但不知道学这些语法有什么用,和自己的专业知识有什么联系。因此,多年积累下来,对C语言程序设计课程的普遍看法是:这是一门无用的公共课,混混过去就算了。于是,很多同学上课不听讲、下课不预习、不复习,周而复始,形成恶性循环。
(3)进度过于缓慢。C语言程序设计每周4学时,其中,2学时多媒体教室的课堂教学,2学时计算中心机房的上机实践。计算中心机房为多个班级公用,且无屏幕转播设施,因此教师的教学仅限于2学时的课堂教学。课时太少,加上学生兴趣度低,往往一学期下来指针刚讲了基本概念就结束了。有些为参加全国计算机等级二级c语言考试而努力学习的同学也因为指针内容学习太少而难以过关。
针对上述C语言程序设计教学效果差的原因,我中心C语言课程组的各位教师认真研读了“研究式学习”、“CDIO教学模式”、“计算思维”等理论及各种教学方法和实践方式,借鉴了哈工大全国精品课程“C语言程序设计”课程的先进教学经验,并结合各位教师多年的教学经验,制定了C语言程序设汁课程教学体系的改革方案。该教学体系改革方案从教材内容、教学方法、教学手段、上机实践和考核评价体系五个方面展开。
二、编写优质配套教材,实施教材改革
我们按照研究性学习的内涵编写了《研究式学习——C语言程序设计》教材,目前正在进行面向“计算思维”的新版教材的编写。该系列教材具备以下特点:
(1) 编写理念科学性强
整套教材的编写以“研究式学习”理念为指导,研究性学习是一种建构性的、追求协商的、尊重个性的、以人为本的“体验式学习”。在2006年的《国家精品课程评估指标》中新增了一条指标:“重视研究性学习、探究性学习、协作学习等现代教育理念在教学中的应用;能够根据课程内容和学生特征,对教学方法和教学评价进行设计。”所以研究性学习是以人为本的高等教育价值观的体现,是社会变革和教育发展的要求,也是精品课程的要求。研究性学习的关键是要在学习的各个阶段提出适当的研究问题,以便在学习过程中为学生创造能亲临体验地进行研究学习的平台,问题的提出贯穿在课堂教学、实验教学、课后作业、综合性作业以及评价的整个教学过程中。我们自2004年开始就致力于打造C语言程序设计精品课程,所有的教学和改革都围绕该指导思想进行。2007年以C语言程序设计为主体的“程序设计与计算机语言”被评为省级精品课程,2010年由教材主编主持申报到了省级质量工程教改项目“Inquiry Learning体系在程序设计课程中的运用”研究。这一系列的改革和研究都是以学生为主体,以培养和提高学生的计算机素养为最终目的而制定的。在教学过程中我们经常与学生座谈和交流,了解学生的需求,完善我们的教学,使我们的教材和教学模式能与时俱进,保持很好的前瞻性和科学性。
(2) 内容组织创新性强
本教材用“提出问题—分析问题—给出相关知识—举一反三”的研究式学习方式来组织“C语言程序设计”这门课程,在注重语言知识培养的同时,更注重逻辑思维能力、程序设计能力及创新能力的培养。内容组织方式新颖,符合认识规律,富有启发性,便于学习,有利于激发学生学习兴趣及各种能力的培养。本教材每章都通过4个步骤来完成学习:
第1步,通过提出问题、分析问题来激发学生的兴趣,引起学生的思考。
第2步,通过问题的解决、相关知识点的跟进,使学生能逐步提升程序设计的能力,掌握C语言的知识,引导学生深入思考。
第3步,用一定数量的编程实例使学生深入理解和掌握所学知识,用具有趣味性的综合应用编程实例培养学生的逻辑思维能力和编程能力,挖掘学生的创新能力。
第4步,对每部分的知识进行小结,以便学生进一步巩固应掌握的知识。
每章后面都有“综合应用”部分,让学生对所学知识的具体运用有明确的认识,并能在此基础上进一步巩固和提升。
三、采取多样性方法,实施教学方法的改革
(1)任务驱动教学方法
大多数学生反映C语言概念众多,许多知识点抽象且难以理解,学生不能将理论和实际应用结合起米, 任务驱动教学法是一种建立在建构主义学习理论基础上的教学法,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维巨动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。在c语言程宁没计课中.体现“任务驱动”就是让学生在一个个典型的程序“任务”驱动下,教师引导帮助学生完成一系列程序“任务”,把知识的学习和知识的应用有机地融合在一起,让学生达到融会贯通、一点带面的效果。例如,在讲授C语言循环语句的教学时,按任务驱动教学模式不是孤立地介绍格式、作用和使用方法,而是将这一知识点设计为“计算1+2+3+……+1 00=?”这一具体的任务。首先,教师通过提出“任务”让学生把握教学内容,同学们会想象怎么完成这个任务,头脑里对前而的所学内容进行回顾,但前面学过的知识没法完成这种任务。接下来教师再讲解如何使用循环语句等具体操作方法,这样教学,学生学得快、学得牢。通过实践发现“任务驱动”法有利于激发学生的学习兴趣,培养学生的分析问题、解决问题的能力,提高学生自主学习及与他人协作的能力,缩短了学习周期。
(2) 项目教学法
很多学生在学完C语言程序没汁课程后,其结果是听得懂、却编不出程序来。针对这一情况,我们在教学过程中采用项目教学法。项目教学法是通过实施一个完整的项目而进行的教学活动,其目的是在课堂教学中把理论与实践有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。在课程初期.主要是进行单项的编程练习,重在掌握C语言的基本数据类型、语句与程序结构等。在进入函数、数组、指针、结构体和文件内容教学时,开始综合实训项日的编程设计,每一个实训项日都呵以用前一个实训项目为基础。通过一个项目的层层递进,引入课程内容,使得学生的学习循序渐进,螺旋式地上升,效果很好,开阔学生的思维,使得学生在课堂上真正地成为“主体”,教师则扮演“主导”角色。该教学方法使学生积极参与到教学过程中,变被动为主动,有效地调动了学生学习的积极性,深受学生好评。
(3)比较教学法
C语言中的概念比较复杂,规则繁多.而且内容前后联系紧密,教学过程中教师通过对比的方式对相关的概念或类似的程序代码进行比较,进而明确差异,然后进行归纳总结,方便学生理解,将会收到事半功倍的效果 例如,C语言中的指针是教学中的一个难点.这一部分涉及的概念较多,如指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针等。这些概念很容易混淆,但是将这些概念对比起来讲解,学生就很容易理解了。这些概念的共性都是指针,那么它们不同的地方在哪呢?关键在于指针变量的指向不同,指针所指向变量的数据类型决定了指针变量的用法。通过这样的讲解,概念的定义就很容易理解,概念的用法也就可以统一了。再如,数据的排序问题有多种算法,典型的有冒泡排序、选择排序、插入排序等,求解方程的根的算法也有多种,有迭代法、牛顿迭代法、二分法和弦截法等。这些算法之间既有联系又有区别,讲清楚了算法的联系和区别,也就解决了整个问题。
(4)启发式教学法
启发式教学法就是通过教师的启发教学充分调动学生的积极性、主动性和创造性,引导学生主动学习。例如,在学习printf()和scanf()函数时,通过比较式启发方法讲解两函数的功能、格式、使用特性等方面的异同,通过比较使学生更好地把握两函数的特征。在学习选择排序算法时,使用模拟式启发方法,让l0个学生随机坐在相邻的l0个位子上,然后现场模拟排序过程;在学习数据交换算法时,使用比喻式和问题式启发方法,将两个变量比喻成两个瓶子,将里面存放的数据比喻成醋和酱油,然后提问:如果将两个瓶子中的醋和酱油交换一下,应如何操作。
(5)“鱼渔兼授式”教学方法。C语言只是一种表述工具,如果只有扎实的语法知识,没有程序设计思想,根本就不可能写出程序;而如果有程序设计思想,但语法知识不扎实,势必在程序的编写、运行过程中遇到一系列的问题,从而影响学生的学习热情。而“鱼渔兼授式”教学方法可以在基础语法知识和程序设计方法之问找到一个平衡点,使之相辅相成。例如,在讲解数据类型时着重讲解为什么数据要分不同的数据类型,需要从哪几个角度学习不同数据类型的特性;讲解具体算法时着重讲解遇到类似问题时应从哪些角度分析问题,用什么方法进行程序设计从而解决问题;在课前精心设计一些错误,尤其是逻辑错误,然后讲解遇到错误可以采用什么手段去剖析、定位错误。
四、建立立体化教学体系,实施教学手段的改革
我们从2006年就开始了立体化教学体系的建设,我们建立了精品课程网站,实现了“在线教育”,现在我们课程的课件、课堂教学录像、软件、二级等考及相关阅读等教学资源都放在了网络上,作业也通过网络来实现布置、提交和批阅。师生之间可以通过教学邮箱和课程论坛进行交流,任课教师可以自己定制调查问卷,随时了解学生的动态和需求,还可以随时进行在线测试,课程考试已经完全实现了网络无纸化模式。学生可根据自身的情况进行课后自主学习、自测学习、互相学习或下载资料、上交作业,有助于学生的个性化发展和创新能力的培养。设计出包含验证型、引导型、扩充型和设计型等多种类型的实验,在实践中充分体现学生的自主性,有目的、分层次地培养学生的实践能力,使学生学会从实验过程中获取知识,积累经验。通过综合设计,为学生自己构建、发展并完善自己的知识体系创造机会,使学生具备获取知识和应用知识的能力,激发学生的创新精神,培养学生的团队精神和协作能力,全面提高学生的实践能力。
教学实践证明:学生在课程网站上作业及报告的提交率达到98%以上,问卷调查的访问量达到了85%以上,优秀设计作业的访问率达到90%以上,其他资料的访问率也高于60%。由此可见,立体化教学体系很好的实现了不受时间、地点限制的开放式教学。
五、上机环节的改革与实践
上机环节是教学活动的重要环节,是对学生进行基本技能训练、增强学生实践能力的关键环节,是培养学生创新精神的重要手段。本科实践教学的目的是优化学生的素质结构、能力结构和知识结构,让其具备获取知识、应用知识的能力和创新能力。对于《程序设计与计算机语言》课程,以往的实践教学内容和题目以验证型和设计型为主。验证型的题目只要求学生按照书本上的指示,输入程序,填写结果即可,学生处于被动接受的地位,学生觉得无趣,毫无创意;设计型的题目对于非计算机专业学生来说,难度太大,学生无从下手。为了全面提高学生的实践能力和应用能力,使实践教学能满足不同层次学生自主学习的需求,我们制定并实施了以下改革措施:
(1)改革上机实践的教学模式:将以理论教学为主的教学模式改为由理论教学和实践教学相互联系、相互交叉、彼此渗透、有机结合、同步发展的教学模式,确立了实践教学在《程序设计基础》课程中的重要地位。
(2)设计多种类型的实验题目:针对学生存在基础不同、接受能力不同、个性有差异等问题,设计出包含验证型、引导型、扩充型和设计型共四种类型的实验,题目尽可能做到覆盖知识点,切合实际、生动有趣。通过完成不同类型的实验,有目的、分层次地培养学生的实践能力,使学生学会从实验过程中获取知识,积累经验。
(3)在实践中充分体现学生的自主性:实验课的实验任务由规定实验内容和自主实验内容两部分组成。学生在完成规定的实验任务后,可根据自己的兴趣和爱好,自主设计一些实验任务,在教师的指导和帮助下加以完成和实现。通过自主学习和自主设计,能有效地培养学生应用知识的能力和探索精神,极大地激发学生的学习主动性。
(4) 启发引导学生的创造性,培养学生的团队协作精神:本课程要求学生以小组(3~5人)为单位进行综合性程序设计,设计题目主要由学生自己按综合设计要求来确定,每个小组推选出一名小组长,负责协调程序的开发、与教师和组员的联系、提交总的设计报告和完整的源程序等工作。在综合设计过程中,学生处于主导地位,是核心。学习小组的组建,综合设计题目的选择或确定,各组员任务的分配与协调,任务完成后的总结与成绩的自评等,主要是按学生的意愿来进行。教师只负责宏观指导和一些条件支持。当学生的选题不符合要求或系统功能设计不合理时,教师会立即指出,并帮助他们修改和完善;当学生调不通程序或程序中有错误时,教师会向他们介绍调试方法和查错方法,教会他们调试程序。对学习好、能力强的优秀学生,教师会注重开扩他们的思路,启发他们的思维,引导他们去获取新知识、去探索新问题,激发他们的创新欲望,使他们能完成高水平的综合设计。通过综合设计,可充分体现以学生为中心的教学方法,为学生自己构建、发展并完善自己的知识体系创造机会,使学生具备获取知识和应用知识的能力,激发学生的创新精神,培养学生的团队精神和协作能力,全面提高学生的实践能力,从而有效地提高《程序设计与计算机语言》课程的教学质量。
六、考核评价体系的改革
我校C语言程序设计课程的成绩分为理论和实践两个分数,各2个学分,两项成绩都合格即可获得该课程的4个学分。其中:
理论课综合成绩(百分制)=平时(百分制)*(50%)+末考(百分制)*50%;
上机实践综合成绩(百分制)=平时(百分制)*(60%)+综合设计(百分制)*40%;
理论成绩由平时成绩和末考成绩组成。其中:平时成绩由上课考勤、作业提交、阶段性实验报告组成,占总成绩的50%;末考指的是期末闭卷无纸化考试,末考侧重于基础知识测试,考核学生对基本概念的掌握。题型包括:判断题、选择题、填空题和编程题,判断题题型重点考察学生对基本知识点的掌握程度,选择题和填空题重点考察学生对程序的阅读、理解和分析能力,编程题则重点考察学生编写程序的能力。
无纸化考试采用的是我们中心自己研发的考试系统,但该系统存在一点缺陷,就是编程题需要人工阅卷。因此,我们于2012年开设了一个试点班,本着提高学生编程能力的目的出发,从平时的教学和最后的考试都试用了哈工大研发的《C语言编程题自动评分系统》。该系统允许学生借助于 C编译系统调试程序,学生将自己编写并调试过的程序由客户端提交给服务器端后,服务器端立即根据学生程序的结构和语义进行评分,并将评分返回给客户端,使学生在提交程序之后立即看到自己的分数。
上机实践成绩则由平时成绩和综合设计成绩构成。其中:平时成绩由上机考勤、在线单元测试组成,占总成绩的60%;课程最后提交的综合设计则占到了40%。
该考核评价体系涉及到教学实施过程中的每一个环节,有利于对学生进行科学、客观的评价,从而避免了一张考卷定乾坤带来的弊病。
该体系在实施过程中显现出了其科学性,但是目前存在的问题就是教师的负担太重。一个学生一学期一般要提交12份报告,每位教师一般带两个班,每个班约88位同学,这样每位教师一个学期只报告一项就要批阅约2000份,工作量太大。现在正在努力寻求更加合理的解决方法。
七、结束语
教学实践证明,以上改革措施能够有效解决我校C语言程序设计教学过程中存在的问题。此教学模式下,教学内容符合学生专业特点,能够满足理工科专业学生对计算机技术的需求;教学方法行之有效,教学效果有明显提高;教学实践方法与措施切实可行,能够有效促进学生分析问题解决问题能力、实践能力及团队合作能力等能力的培养与提高。当然,该模式仍然存在一些不尽如人意的地方,这就需要我们坚持不懈,继续努力去改进和完善。
项目来源:云南省高校质量工程教改项目“Inquiry learning体系在程序设计中的运用”(云教高[2010]96号)。
[参考文献]
[1]王刚.CDIO工程教育模式的解读与思考[J].中国高教研究,2009(5).
[2]谢延红.C语言程序设计公共课教学模式改革与实践[J].计算机时代,2010(12).
[3]马新.《C语言程序设计》课程教学方法与手段的改革与实践[J].科技信息,2010(33).
【关键词】课程设计;C#程序
一、课程性质和任务
《C#程序设计》是计算机软件技术专业(.net开发方向)一门专业技能课 ,是C# winForm 应用程序和 Web应用程序设计的前导课程,是.net开发方向的核心基础课程。通过本课程的学习,学生应掌握 C# 语言的基本语法,程序设计的基本思想、基本概念和基本方法,进一步熟悉面向过程程序设计,掌握面向对象程序设计的思想,能对一般问题进行分析和面向对象抽象,根据UML图编写面向对象的C# 程序。
二、课程教学目标
知识教学目标:
掌握C#语言的基本语法、语句;掌握C#中的数据类型、运算符和表达式;熟练掌握顺序、分支和循环三种基本的程序控制结构;掌握结构、枚举的定义,并灵活使用;熟练掌握数组的定义、初始化和数组的基本操作;熟练掌握函数的定义和调用;掌握面向对象相关概念:类、对象、类的封装、继承、多态等特性和使用;掌握接口和抽象类的定义,并灵活使用;掌握集合、多态状态下的类型和值的比较、类型的转换、泛型;掌握事件与委托的概念与使用。
能力培养目标:
掌握结构化程序设计的基本思想和方法;掌握面向对象程序设计的基本思想和方法。能够对客观世界进行抽象,并编写出面向对象程序;熟练运用C#语言的编辑调试环境,能编写常用的C#应用程序。
思想教育目标:
培养学生吃苦耐劳与敬业精神、团队精神;培养学生具有实事求是的学风和严谨的工作态度;
培养学生分析问题和解决问题的能力。
三、教学内容和要求
(一)理论教学模块
第一章 C# 简介
1.教学要求
了解什么是.NET Framework,什么是C#,理解.NET Framework的运作流程,了解C#的主要特性,以及C#的现代编程语言特性。
2.教学内容
C#和.NET Framework的含义,.NET Framework的工作原理和特别之处,C# 的功能。
第二章 编写C#程序
1.教学要求
掌握使用Visual Studio 2005创建C#程序的方法,掌握使用Visual Studio 2005创建基本控制台界面的C#程序的方法,掌握C#程序的基本结构,熟悉控制台输入、输出方法,了解C#基本语句、注释等要求,理解命名空间。
2.教学内容
Visual Studio 2005的基础知识,编写简单的控制台应用程序,编写Windows Form应用程序。
第三章 变量和表达式
1.教学要求
掌握C#的基本语法,理解C#程序的基本结构,掌握简单数据类型的定义和使用,包括整型、浮点型、小数型、布尔型,掌握变量的定义,熟悉camelCase和PascalCase变量命名法,了解数据类型转换,掌握常量,熟悉表达式及运算符实现数据的计算。
2.教学内容
C#的基本语法,简单数据类型,变量及其用法,表达式及其用法。
第四章 流程控制
1.教学要求
了解C#中的布尔类型的定义与使用方法,理解位运算,掌握分支语句,包括if和switch,掌握循环语句(包括for、while、do while),学会分析问题,并使用分支和循环解决。
2.教学内容
布尔逻辑的含义及其用法,位运算的含义及其用法,分支语句,循环语句。
第五章 复杂的变量类型处理
1.教学要求
掌握枚举类型的定义和使用,掌握结构类型的定义和使用,掌握一维、二维数组的使用,理解隐式和显式类型转换,掌握.NET对字符串的处理常见功能,包括字符串的查找、替换、格式化、调整等。
2.教学内容
枚举的定义与使用,结构体的定义与使用,数组的定义与使用,类型转换,字符串处理。
第六章 函数
1.教学要求
掌握函数的定义和使用,理解可变参数函数,函数的参数,包括值参数、引用参数和输出参数,理解变量作用域概念,变量在不需要它们的代码块中可以隐藏起来,掌握结构化程序设计的方法和步骤。
2.教学内容
定义和使用简单函数,通过参数在函数之间传送数据,变量的作用域,结构化程序设计。
第七章 程序调试和异常处理
1.教学要求
掌握VS2008中程序调试方法,包括中断模式和非中断模式,使用try...catch... finally处理程序异常。
2.教学内容
VS中的调试方法,程序异常处理语句。
第八章 面向对象程序设计入门
1.教学要求
掌握类的定义,包括类成员的访问级别、函数定义及重载,掌握对象的使用,理解面向对象的基本思想,特别是封装性。
2.教学内容
什么是面向对象编程,类的定义,对象的使用,面向对象的基本思想。
第九章 类的定义和使用
1.教学要求
掌握构造函数的定义和使用,理解面向对象的继承性,掌握类中虚成员的定义和重写,理解类型的上传,了解类的层次结构和基类object,掌握类中属性的定义和使用,并理解其实现的封装性好处,了解静态类和类的静态成员,掌握运算符的重载。
2.教学内容
构造函数,面向对象的继承性,类的其他成员,包括属性、静态成员、运算符的重载等。
第十章 类的高级使用
1.教学要求
掌握抽象类和接口,理解两者的区别和适用情况,理解面向对象的多态性及其原理,掌握面向接口的编程。
2.教学内容
抽象类和接口的使用,创建类库,理解面向对象的多态性,使用面向接口的编程。
第十一章 集合、比较和转换及泛型
1.教学要求
掌握ArrayList集合,掌握自定义集合的方法,掌握多态状态下类型和值的比较及类型的转换,
掌握泛型的使用。
2.教学内容
ArrayList的使用,自定义集合,比较和转换,泛型。
第十二章 事件的定义和使用
1.教学要求
掌握委托及事件的定义和使用,理解事件和委托的区别,了解线程的使用。
[关键词]C程序语言 分层教学 任务驱动
[中图分类号] G423.07 [文献标识码] A [文章编号] 2095-3437(2013)22-0081-02
一、课程教学现状分析
C语言程序设计是高校计算机专业的核心基础课程,很多学校都开了C语言公选课,将其作为学生学习程序设计的一个入门。学习C语言需要掌握的抽象概念和语法规则较多,同时又需要通过实践培养编程实用技巧。由于计算机专业必修课程(例如C++,数据结构等)都需要具备一定的C语言基础,所以对C语言的掌握程度直接影响着后续课程的教学效果。[1,2]长期以来C语言程序设计课程的教学改革一直都在许多高校中探索和实践,提出了项目教学法、[3]案例教学法、[4]自主学习模式[5]的教学理念。但在实际的C语言课程教学中,诸多因素导致教学效果不理想,具体有以下几方面:
首先,学生程序设计基础参差不齐。一部分学生以前没有接触过程序,有些学生对学习程序不感兴趣,有些学生沿用看书加背诵学习方法,他们感到枯燥厌烦,跟不上教学进度;还有一部分学生上课时积极主动,对编程产生较大兴趣,不但能够完全掌握老师讲的课程内容,而且能够积极查阅课外程序资料,教师讲授的课堂内容不能够满足这部分学生。传统的教学方式造成教师在教学无法兼顾这两类学生。学期结束后,第一类学生普遍感到程序设计课程晦涩难懂,不会应用,无从下手,因此失去了学习热情。
其次,传统教学模式影响教学效果。在传统的教学中,教师往往以课程的理论知识点为主线组织教学,依照从讲解概念起,接着讲解语法语句,最后举例加以细化。部分教师缺乏对该门课程的整体性把握,在教学上过多注重语法结构的知识,没有把学生放在主体的位置上,师生间的互动很少。甚至有些教材内容的结构安排缺乏合理性,语法部分编写过于繁琐,学生接受的是枯燥无味的理论规则,导致学习没有积极性,难以调动学生学习的主动性。教学观念、教学手段和方法以及考核形式等都比较陈旧,不能适应新形势下的教学需求,学生学习效率非常低,无法将所学知识运用到实际中。
最后,实践环节薄弱。上机实践是学习编程语言的重要组成部分。实际授课中,重视课堂教学而轻视上机实践,理论课上既要讲基本的语法知识又要讲编程方法,占用了过多的课堂时间。实验课上进行基本的验证性实验,学生机械式的运行程序,无法真正学会如何编写和调试程序,使得理论教学和实践教学脱节。通常情况下,C语言程序设计目前的考核方式主要以笔试为主,主要考查语法和基本的逻辑推导能力,无法进行学生动手实践能力的考查,从而造成了大部分学生即使理论知识掌握较好,却不会上机编程。
二、C课程教学方法改革探索
(一)采用分层教学模式
首先,对象分层。新生入学后,系部首先通过问卷的形式对新生的计算机基础技能、学习计算机的兴趣以及课内外学习方式等情况进行了调查,并进行了计算机水平摸底测试。根据学生的实际测试水平,打破以班为集体的传统教学模式,将他们分为不同的层次分别授课。将程序设计兴趣较强、数学逻辑基础较好、有一定编程基础并且测试成绩较好的学生编入A层;将测试成绩较差并且没有编程基础的学生编入C层;其余多数学生编入B层。教师依据各层学生进行因材施教,即针对学习者不同的学习能力、态度等个体差异施行不同的教学模式,实际上是使三层学生各有侧重、共同提高的一种教学方法。
其次,教学分层。分层授课是分层教学成功实施的关键,学生是教学活动中学习的主体,教师需要对所教层次学生的编程水平有准确的认识,才能真正激发其学习激情,培养其学习能力,促进课堂教学质量的提高。A层学生一般理解力较强,学习具有主动性,教师可以引导他们除了掌握教材知识点外,推荐课外参考书,尽快参与软件开发项目或兴趣小组。B层的学生通常情况下能够掌握基本的语法规则及编程方法,但是对编程缺乏总体思路,就需要教师及时将学生学过的知识加以复结,在掌握教学大纲要求的知识点外可通过综合实训练习进行编程水平提升。对C层就要通过精心设计教学内容、耐心的作业辅导、适时的课后交流激发他们的学习兴趣和信心。分层教学从各层学生的实际出发,“因人制宜”,关注各层次学生在学习方法上的差异,给予学生不同级别的指导,刺激学生向高层次目标努力,从而大面积地提高教学质量。此外,在实施过程中也要注意保护学生的自尊心,以淡化各层间的人为界线,避免分层带来的负效应。
最后,分层评价。分层评价是针对各类学生的学习水平,建立一套完善科学的评价体系激发学生学习兴趣、优化学习方法、树立学生的自信心,促使各成其才。对A、B、C 三层的学生不同的目标要求体现在评价体系中。对平时成绩的考核对应不同层次,A层同学分组考核,分工协作完成预设项目,根据小组中的表现进行组员互评和老师评价相结合的方式。B层和C层的同学则通过上机实操进行编程水平的测试。期终试卷可在同一份试卷上进行分层,分别对应于不同层次。试卷分成基础和提高两部分。基础部分主要考核学生是否达到基本教学大纲要求,这部分是三个层次学生共同的必答卷,对于三个层次的学生同分但不同值,成绩作为课程的考核分。例如编程题标注10分,则如果A层学生做对考核分加10,B层和C层学生做对加15。第二部分为提高卷,也是A层学生的必答卷,B、C层学生的选答卷,成绩作为课程的考核分。分层考核的目的是使各层次的学生经过努力都能获得较高的分数,获得成功的体验,激发学生的求知欲。
(二)基于实践导向的任务驱动教学
以实践为导向在教学活动中要求,以专业能力要求为依据,将“教、学、练”一体化的教学模式融入教学课程设计中。根据行业需要的知识、技能确定课程内容的选取与安排,课程设计是采用真实项目贯穿教学全程,项目按照内容分成若干模块,实现将化整为零进行学习。
任务驱动下分组学习讨论是一种非常有效的方式。让学生发挥主动性自由分组,依据编程能力水平给每组指派一名组长,上课时以组为单位,分析、讨论项目任务,具体包括需要收集资料、项目进度以及具体的工作任务。小组长主要负责小组内任务分配、协调组内成员等工作,老师轮流在每个小组旁听学生的讨论并接受学生的咨询。
教师所指定的任务主要包括两类内容:一类是课本课后习题,并对完成任务所必需的知识点进行必要的说明;另一类是具有实用性的项目任务实例,让学生更直观地理解所学知识应该如何与实践相联系。第二类任务需要教师进行设计,尽可能具有综合性、可分割性,适合小组讨论解决及协作完成。
制定合理的考核标准来综合衡量学生的学习状况是激发学生进行协作学习的动力。当学生完成任务后,先在小组成员之间进行任务完成情况评论。最后由老师对每组学生的任务完成情况进行总结讲评,对其中的不足进行点评,对比较好的做法给予鼓励,并据此对每个学生计算平时成绩,将小组整体得分与组内个人得分进行综合。课程采用综合测试考评方式,突破单一的闭卷考试方式,将平时作业、课堂讨论成绩、与期末考试相结合。
三、结束语
C语言是一门实践性很强、热门的高级编程语言。根据目前的教学现状,分析和总结教与学的不足,通过分层模式教学改革和以实践为导向的任务驱动教学探索,不断地提高课程的教学效率,使课程更具科学性,把学生的主动性充分地调动起来,让学生在学习中尝到乐趣。
[ 参 考 文 献 ]
[1] 杨理云.“C 语言程序设计”教学方法探索[J].中国成人教育,2007,(5).
[2] 丁群,文明瑶.项目教学法在C语言教学中的应用[J].电脑知识与技术: 学术交流,2012,8(3).
[3] 陈洪超.项目教学法在“C语言程序设计”课程中的应用[J].重庆电力高等专科学校学报,2012,17(3).
《C语言程序设计》是计算机相关专业的一门基础课程,是培养学生计算思维能力、程序设计与实现能力的入门课程,同时也是《数据结构与算法分析》等课程的先导课程;C语言也是IT企业中常用的编程语言。因此,该课程的教学对学生后续课程的学习和今后的工作都会产生重要的影响。对于初学者而言,因为逻辑思维能力较弱,所以在学习过程中积极性不高,学习效率低下,难以提高其编程语言解决实际问题的能力。经过多年的授课,笔者对《C语言程序设计》的课程教学进行了一些探讨和实践
二、教学中存在的问题
1.教学主体以教师为主
在传统的教学中,教学主体往往以教师为主,高等院校对教师的考核注重“科研”,因此很多教师容易忽视“教学”的重要性。在《C语言程序设计》的教学中教师方面的问题主要包括:①课程的知识点较多,存在教学内容与教学时数之间的矛盾;②教师的教学方法、方式陈旧,难以激发学生主动学习的兴趣;③教师在教学中大多重课堂教学,轻实验教学;④任课教师往往没有工程实践经历,其综合业务水平有待提高。
2.教学中没有充分调动学生学习的积极性
《C语言程序设计》的课程学习是在新生入学的第一学期,这对课程的教学也带来一定的消极影响,主要体现在:①学生学习目的不明,动力不足,很多学生以为进入了大学主要是锻炼社会交往能力;②学生的逻辑思维能力较弱,想象空间较窄,遇到挫折容易产生厌学情绪;③由于受传统应试教育的影响,学生大多重教轻学,重理论轻实践,考试能力强,编程能力弱,不能用计算思维解决实际问题。
三、教学改进的举措
针对上述问题,笔者摒弃以单向性知识传授为主的教学模式,主张讲课教师应以课程的内容和学生的知识积累为基础,积极引导学生创造性地运用知识和能力,自主地发现、分析和解决问题,学生在研讨中学习知识、培养能力和提高素质。具体的教学实施方案包括:
1.编制详细的教学设计方案
为帮助学生提高自主学习和创新的能力,需要制定详细的教学设计方案,该方案是课程教学具体实施的主线,它相当于一场晚会的节目演出单,讲课教师是导演和主持人,而学生是主角和演员。教学设计方案主要包括:教学日期和时数、教学内容和主题、实验内容、教学方法、教学手段和作业安排等。
2.优化教学内容
该课程存在教学内容较多而教学时数受限,全面而细致的讲解所有的内容已不合时宜。教学内容的优化应满足教学目标的要求,满足学生的学习需要,激发学生的学习兴趣[1]。因此,我们按照“少而精、宽而新,突出核心的知识点”的原则优化教学内容,体现教学内容的先进性、实用性。按照学习进度,给学生安排相应阶段的学习任务,有些内容要求学生自主完成。
3.改变传统的教学方式
传统的“填鸭式”教学方式效果并不好[2],因此,我们在教学引入并主要采用了“讨论式”教学,以充分调动学生学习的积极性,具体的做法包括:①每次授课结束前,布置预习思考题,要求学生在课下充分预习,课上围绕思考题展开讨论,每次课分组讨论1-3次,每次2-5分钟;学生课堂讨论、发言或回答问题的时间约占总学时的20%;②随机抽查回答问题与各组指派同学回答问题相结合,回答问题不以正确性为唯一依据,也注重表达过程的清晰度和逻辑性,尤其鼓励问题回答者阐述自己的观点或提出问题。统计表明,学生回答问题次数平均水平有6-8次;③将学生在课堂教学过程中的表现按评分标准将其分值记入到平时成绩档案中。
4.加强教学方法的改革
在教学中应以学生为中心,引导学生走向知识,通过合理施压,注重师生的互动交流,培养学生善于总结、发现问题和主动学习的能力[3-4]。在《C语言程序设计》的课程教学中,我们对教学方法做了如下改革:①“案例教学法”贯穿教学全过程,“学生信息管理系统”贯穿了该课程的全部章节,是学生在学习过程中的“长期任务”;②“任务驱动法”引导学生学习,“长期任务”可以分解为多个对应于知识点的“短期任务”,有助于学生逐步提高编程能力;③用“负反馈教学法”解决学生学习中问题,有效的提高学生的学习效率;④弱化语法,以“算法为先”实现实际问题的求解;⑤并用“多媒体”教案扩大课堂信息量,精心制作与教材配套的CAI课件和习题。
5.建立新型的实验教学模式
为了激发学生学习的积极性,我们通过建立新型的实验教学模式[5],包括:①为增强学生学习的体验感,减少了基础验证型实验比例,增加综合型实验和设计性实验的比例;②建立以小组为单位的实验完成机制,培养学生的团队合作能力;③加强实验报告的规范,增强学生的职业岗位意识;④建立定期的课外讨论机制,教师定期讨论主题,学生以小组为单位进行准备,然后通过专题讨论和点评,并将学生的表现记入平时成绩档案;⑤鼓励实验动手能力的较强的同学自己设计实验项目,并依据结果给予其一定的平时成绩奖励。
6.健全严格的学生考核机制
传统的考核以笔试为主,学生为了应对考试采取死记硬背的方式,为此我们建立严格全面的考核机制,包括:①建立学生学习小组,分组原则是小组内部异质化,小组之间同质化;②建立每个学生平时学习成绩档案,学生的平时表现与分值相对应;③制定公平合理的成绩评定方案:学期总评成绩=平时成绩×60%+期末考试成绩×40%,平时成绩=小组成绩*小组人数*组员在项目组的贡献百分比(组员的贡献百分比是在教师给出小组成绩之前,经过该小组的全体成员一致同意后提交给任课教师),这种考核方式可以促进学生的团队协作精神和竞争意识;而期末考试侧重于通过编程以解决实际问题,从而促使学生平时多思考、多上机实践,有助于提高他们的逻辑思维和编程能力。
7.积极开展第二课堂教学
积极引导学生参加课外实践活动,主要采取了如下措施:①开设了网络教学平台资源,为学生提供大量的经典实例程序、教学课件和习题,并通过电子邮箱、QQ群和微信群等手段,随时为学生答疑,了解学生的学习状况以调整教学内容和手段;②鼓励学生自主创立或参加各种创新社团和讲座,目前,本学院已成立“海盗社”等实践社团,面向全校学生举办多种创新活动,2014年共组织了11场关于程序设计相关的讲座和活动;③将各类程序设计竞赛和实践教学相结合,鼓励学生参加各类程序设计大赛,为此学院提供了稳定的经费和场地支持,并依据参赛结果给学生一定的表彰和物质奖励;④在大一第二学期末段,组织学生到印孚瑟斯技术中国有限公司等IT企业实地参观学习,了解这些企业的文化、发展和对职业岗位能力的需求,进一步让学生明确个人今后的发展目标和计划,激发其学习热情和自身的发展潜能[6]。
四、结束语
关键词:C语言程序;调试技术;探究与分析
近些年来,笔者在研究C语言程序设计过程中,发现许多人对于自身编辑的C语言程序运行中出现的错误的处理方法存在许多问题,无法有效判断程序错误的原因以及其对应的调试方法,文章主要从两方面分析C语言程序设计调试技术。
一、运行错误的判断与调试
一般情况下,C语言程序运行错误被分为两种:逻辑错误与程序设计错误,前者是指编译时没有错误提示,可以运行,但实际的运行结果与程序预期结果之间有偏差;后者是指程序设计中存在的问题,在编译与连接程序时也没有被发现,程序设计错误的主要表现为:计算机突然死机、自行热启动或输出信息混乱等[1]。
文章主要介绍两种常见的运行错误调试方法:
①程序算法设计不合理
有一种逻辑错误主要是由于C语言程序设计时的算法不合理而引起的,例如对边界及特殊情况未作预先处理,例如下述循环:
While(count)
x
…
count=count-1;
y
该循环的设计构思是进行count次循环,但是在该循环中,while旁边的判断条件恒为真,程序就会进入“死循环”,这显然是由于算法设计错误而导致的,但是编译器对于该类错误的敏感度较低,只有程序运行出现异常的时候才可能被发现[3]。再举一个例子:根据海伦公式计算三角面积的时候,首先需要对给出的三条边长是否符合“三角形任何两边的和大于第三边”的定理,若不符合这一定理则运算结果毫无意义;而程序员在设计一般实系数一元二次方程的程序时,必须设定处理复数情况的程序,避免出现运行错误[4]。若采用手算的方法是不需要先考虑到这方面,可以在出现问题后再根据实际情况提出解决措施。但是C语言程序是为计算机设计的,计算机不具备人脑自行应变的能力,因此,在程序设计的过程中必须事先将可能发生的一切问题都考虑到,特别是客户委托程序员设计的或是作为商品出售的软件更要注意这一问题。
②程序输入时的打字错误
还有一种常见的逻辑错误是在C语言程序输入过程中,由于程序员不小心打错字导致的,例如将判断条件中的“>=”输为“>”,将相等判断“==”输为“=”等。存在此类错误的程序在运行过程中出现的错误表现具有多样化,且很难将该错误出现的原因与打字错误联系起来[5]。
数据输入中存在的字符错误或字符的格式错误等都会影响程序的运行结果,尤其是在数据量大,且数据输入采用人工输入的工作中,极其容易发生这种错误。笔者以多年工作经验建议当数据输入量较大时,采用文件记录的方式,再通过读写文件来进行数据输入,这样就能够通过编辑数据文件来检测数据中存在的错误,并且在重新计算或调试过程中就不需要反复输入[6]。这种方法非常适用于科学或工程计算应用程序中的数据计算。
还有一种方式就是采用自行编写的、比较完善的数据校验输入模块来取代C语言中的scanf()函数来输入数据。这种方法多用于数据处理、事务管理等复杂的应用程序开发,常常需要将数据输入与用户界面等模块相结合,对编程技能有较高的要求。
二、C语言程序设计基本调试方法
文章主要针对C语言程序设计基本调试方法的四种方法进行介绍。
1.标准数据校验
在程序编译、连接完毕之后,下一阶段就是运行调试。运行调试阶段首先需要使用若干组已知结果的标准数据对程序进行检验。在此过程中标准数据的选取对检验结果具有重要影响,因此,标准数据的选择需要选取具有代表性且比较简洁的数据,主要是为了简化对检验结果正确性分析的不足[7]。此外,对重要的临界数据也需要进行检验。
2.程序跟踪
对于复杂的大型程序而言,上述检验一次性通过是不可能完成的。一般情况下,程序存在各种各样的问题(程序存在问题是一个普遍现象,一个错误也没有的程序在实际中较少),因此,需要对程序进行严谨的跟踪调试。
程序跟踪是调试工作中的一种方法。程序跟踪的方法是通过让程序一句一句的执行,通过观察程序执行过程中的数据以及程序的流程变化来分析其中存在的错误。例如在Turbo C中,可以采用两种程序跟踪的方法,一种是通过利用集成环境中分步执行、断点设置以及变量内容显示等功能观察程序的合理性;还有一种方法是传统方法,其主要通过在程序中直接设置断点、打印重要变量来观察程序有无错误存在。
3.边界检查
在数据检查过程中,要重视边界可能存在的特殊情况,例如以下循环:
While(count
x
…
y
需要检查设计数据count等于0、负数、999及1000等情况。若程序中存在if-else或switch等语言组成的分支时,也需要设计相应的判断数据,且对分支中的路径进行检测。
4.简化循环次数
在调试程序的过程中,可以通过简化程序来实现提升调试速度的目的,例如减少循环次数、减小数组规模、屏蔽部分次要程序段等方法。但是在简化程序的过程中,要注意不能太过简化,否则无法代表程序真实的运行状况。举个例子来说,对于一个求解N元一次方程组的程序来说,仅通过将N设置为2的检测是远远不够的,不能确定该程序是否在数值较大的方程组中也能得出正确的数据。若在N=5或6的情况下程序计算正确,则可以确保程序出错的可能性较小。
结束语
计算机技术的不断发展促使现代人们工作、学习以及生活方式发生巨大改变,且随着计算机软件功能的不断强大,使得计算机软件广泛应用于各个领域中。但是在C语言程序应用过程中,程序错误的出现威胁着程序软件的正常运行。因此,提高程序安全性成为程序员有待解决的问题。文章主要针对C语言程序设计调试技术展开分析,首先介绍了C语言运行错误的判断与调试,分析了2种常见逻辑错误判断与调试方法,然后针对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.
[4]姚放吾,金鑫.基于Monitor的C语言源代码调试器的设计与实现[J].计算机技术与发展,2014,21(6):55-58.
[5]吴兴华.基于C语言软件开发的效率、移植及调试[J].数字技术与应用,2013,14(12):172-172.
[论文摘要]C程序设计语言作为大、中专学生入学后的首门计算机语言课程,也是重要的程序设计课程。对于学生来说,程序设计的思维方式和概念都是全新的,学生接受起来很困难,通过对C程序设计语言教学方法探讨,能收到较好的教学效果。
一、引言
《C程序设计语言》是计算机及相关专业中一门重要的计算机基础课程,由于其在当今系统软件和部分应用软件的开发中具有实用性强的特点,又与硬件和程序设计环境底层的联系紧密,是当今计算机软硬件工程师应该掌握的一种基本的、比较实用的程序设计语言。它作为学生入学后第一次系统地学习与高级程序设计语言和程序设计有关的内容的一门新课程,本身就比较难;再加上其内容的庞杂、语言描述的灵活,更让学生感觉难上加难。因此对于担任该课程的老师来说,如何教好这门课程,培养学生运用C程序设计语言分析问题、解决问题的能力,是这一门课程的目的和宗旨。
二、采用案例教学,培养学生的兴趣和积极性
C程序设计是应用性很强的一门课程它既有理论又有实践,既讲方法又讲动手能力。一般来说,教材中前几章都是先介绍C程序设计语言的一些概念和基础知识,然后才介绍程序的建立和运行。这些概念和基础知识,既枯燥又比较抽象难懂。在教学中,我们打破课本原有的顺序组织课堂教学的方式的逻辑结构体系,改用从案例入手,通过给学生演示、让学生模仿,在实际应用中去探究和领悟这些概念,并适时地加以归纳总结和概念的延伸,让学生在轻松愉快的气氛中学习新知识。
案例教学法打破了以教材为中心的传统教学模式,不按教材的顺序授课,而是以精选出的程序设计的案例为中心,把学习的重点放在具体案例的讲述上,把要学习的语法和概念融入到具体案例中来讲解。整个教学过程中强调在应用中学习,从而避免了枯燥的理论说教,不仅能增进学生的学习兴趣,而且对提高学生综合分析和解决实际问题的能力也大有帮助。那么该如何培养学生对C语言课程的兴趣呢?案例教学法是培养学生学习兴趣的有效途径一。
三、运用多媒体CAI课件教学,提供交互式学习环境
C语言的内容比较繁杂,我们把概念、定义等一些知识性的东西用幻灯的形式投影出来就会使课堂内容更加丰富,提高学生的注意力,节省老师板书的时间,让整堂课的效果改观。但是课堂上课件的演示也要适当,避免喧宾夺主,使学生更多地关注了形式的变化,而忽略了内容本身。相应的,课件在其他内容的处理上就要慎重了。比如算法、程序的设计,我们不是只注重给学生一个结果、一个程序,而更应该展示给学生的是一个过程,一个思想,也就是怎么样去解决这个问题。我们的重点在于教会学生掌握方法,即帮助学生学会自己解决问题,而不是帮助学生解决问题。即授人以渔,而非授人以鱼。因此在讲解这些内容的时候就不能是一张幻灯一个算法、一个程序,而应该重点介绍方法、思想,根据题目求解的过程,一步一步把结果“ 写” 出来。
多媒体CAI课件主要包括课程内容、算法演示、在线测试、在线讨论以及资源中心五部分功能。多媒体CAI课件可以提供交互式环境供学生学习,并自动根据操作过程进行实时评价。将多媒体CAI课件和教师课堂讲授有机地结合起来,能形成最佳教学任务的综合性手段与教学方案。
四、把握课堂教学方法,提高课堂教学质量
(一)注意“互动式教学”,切记不要“自演自说”。互动式教学就是要改变老师是课堂上唯一主体形式的状况,让学生也作为主体形式参与到课堂上来。互动式教学既可以提高学生的参与积极性,还可以避免学生上课疲劳,产生注意力不集中的现象。互动式教学在形式上有老师提问,让学生上黑板演算、上教师机操作,让学生讨论等,让学生进行正误判析,解决普遍性问题,或者请有独特思路的同学演示自己的方法或程序,对比各种方法的优缺点,鼓励大家再提出新方法。实践证明,这种教学方法效果显著,课堂活跃,学生的参与程度很高。但是我们在进行师生互动方面也要注意把握一个度的概念,让课堂既要有互动的活跃氛围,也要有好的课堂秩序,使得课堂互动有序有效进行。
(二)培养学生读程序的能力。程序是C语言的本质,读程序是学习C语言入门最快,也是最好的方法。要培养学生独立编程的能力,首先应该培养学生读程序的能力。学生读的程序越多,见识的编程的思想、方法、技巧也就越多,就能更加扩展自己的编程思路,还能在某些时候把别人的东西拿来归为己用。
在培养学生读程序方面要注意循序渐进,先给学生读一些简单的、只有几行的程序,然后逐渐增大程序的复杂度。
(三)采用问题驱动法。在C程序设计语言课程中,有一些概念之间的差别和程序的设计步骤如果只通过教师讲述,学生在字面上可以接受,但在理解深度上往往难以达到令人满意的效果,如果能设计出一系列问题,让学生在实践和解决问题的过程中自己去探究和体验,情况将完全是另一个样子。另外,采用一些有趣的问题来引入对某些语句结构的学习同样有相同的作用。
采用问题驱动法,一切都要求学生自己动手动脑设计,他们在操作过程中探究和解决问题的积极性和主动性得到
了调动,从而达到了我们的教学目标。
五、加强实验环节的教学设计,辅助理论教学
C程序设计语言是实践性很强的一门课,培养学生的实践能力是教学的首要目的。因此,在授课的同时,如何引导学生利用上机实验来加强实践也是教学中的一个重要环节。C程序设计语言实验教学的目的应是:1. 紧密配合理论教学,通过相关实验,帮助和加深对语句功能的理解;2. 通过实验可以将各门课程学到的知识融会贯通,思考利用C程序设计语言解决实际应用问题的有效方法,从而使学生分析和解决问题的能力得到锻炼和提高。依据实验教学的目的,考虑学生的个体差异,将实验设置成不同的类型:必做和选做实验:这两类实验都是结合相关课程的教学需要由授课教师设计的;前者目的在于帮助学生掌握基础知识和实验研究方法,后者则在于培养和鼓励学生的学习兴趣、扩大知识面以及培养学生的应用能力和创新意识。从而大大激发了学生的学习热情,为其今后的学习和工作打下良好的基础。
六、结束语
要教学好C 程序设计语言,关键在于教师要有效地组织教学,才能激发学生的学习兴趣,让学生主动、愉快地学习,满足他们的求知欲,这样才能取得良好的教学效果。
参考文献
摘 要: 教师要提高《C语言程序设计》教学质量,必须依据教学目标,对教学内容进行重新组织梳理;用案例教学、项目驱动教学等手段丰富教学方法;构建多元考核评价体系。从而在实践中取得良好效果。
关键词: 教学改革 《C语言程序设计》 组织结构 教学方法
1.引言
《C语言程序设计》是高校计算机专业的重要基础课程,在计算机专业的课程体系中占有极其重要的地位。一方面C语言是学生接触的第一门专业类课程,是培养学生专业兴趣的起点。另一方面,C语言是其他很多核心专业课的先修课程,如数据结构、计算机图形学等。所以C语言的掌握水平在很大程度上决定了学生专业基础知识的掌握,直接影响后续课程的学习效果和专业素质的培养。所以如何提升教学质量,让学生确确实实地学好这门课程,是教学改革的目的和指导方向。
2.改革教学内容组织结构
《C语言程序设计》的主要内容包括语法基础、控制结构、数据类型、数组、函数、指针、结构体与共用体、文件等。近年来因为学校培养方案的改革,很多专业课程课时都被压缩。C语言现有学时满足不了把所有知识点都教授给学生的教学要求。改革内容组织结构就很有必要,首先要明确课程教学目标。《C语言程序设计》的课程教学目标要求学生掌握C语言的基本概念、语法和程序设计的常用方法;领会结构化、模块化程序设计的基本思想;通过编程训练,熟练使用编程工具编写和调试程序;在课程学习的过程中,形成良好的编程风格和程序设计思维方式,提高分析问题及通过设计程序解决实际问题的能力,为专业课程体系中后续课程的学习打下基础。依据教学目标,把教学内容分为三个层次。
3.改革教学方法
3.1教学手段的改革
C语言的课堂内容多是抽象的理论,对大多数学生来说枯燥无味。首先,教师可以通过研讨和网络资源,向优秀教师学习,不断提高自身能力。其次,整合资源制作优秀的教学课件,既要体现新的教学方法,又要现实教学内容的层次性。再次,充分利用现代教育技术,把教学资源放在网络上,供学生自行调用,也可在网上给学生答疑。最后,以案例教学、分组讨论等方式丰富课堂教学方法,不单纯依赖多媒体教学。
3.2实验教学的改革
在实验教学中,可采用“项目驱动,分层教学”的方法。
项目驱动教学是整个实验教学围绕一个工程项目进行,逐步拓展实训项目和设计,将每一个阶段的学习作为项目的一部分完成,最后课程结束时,完成一个小型系统程序的建立。
通过实验能够实时了解学生的内容掌握及编程能力。在教学过程中,由于个体差异的存在,学生在内容掌握和编程应用方面会有较大差异。针对这种现状,就需要应用“分层教学”。对基础好的学生,可以多给一些深入的实验题目,而对基础不好的学生,就要帮助其弄懂、掌握学习内容。
3.3多元的考核评价体系
课程考核评价分为两部分:过程考核和期终考核。过程考核就是平时成绩,依据学生的出勤、日常表现、课后作业、实验报告、测验和项目完成情况和完成质量对学生进行考核,占总成绩的60%,期终考核是以卷面考试方式检测学生对于所有知识点的综合掌握情况,占总成绩的40%。
4.结语
通过本学期的教学实践,课堂教学和实验教学效果都得到很好的改善,调动学生的学习积极性。学生的编程能力和课程内容掌握水平都有明显提高,取得长足发展。
参考文献:
[1]何克抗,郑永柏,谢幼如.教学系统设计[M].北京师范大学出版社,2002.
[2]戴大蒙.“程序设计类”课程层次型教学模式的研究与实践[J].中国成人教育,2010.9.
[3]张秋生.C语言程序设计课程教学改革与实践[J].软件导刊,2012.11.
[4]何钦铭,颜晖,苏小红等.“程序设计基础”课程教学实施方案[J].中国大学教育,2010.5.
1.1理论教学
对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容。作为教材讲解C语言程序设计的知识点结构。知识点之间的关联可以层层细化,教师首先从宏观上给学生介绍C语言程序的整体组成结构。教师对涉及的知识点进行归类,共包含预处理命令、数据类型、运算符、语句和函数等5部分,从宏观上梳理C语言与程序设计课程的知识点是非常必要和重要的,这样可以避免学生“只见树木,不见森林”,最后只学到一堆零散的知识点,只有从宏观上把握各个知识点在知识体系中的位置和作用,才能学得深、记得牢。对于程序语言课程,如果仅仅介绍语法的运用,学生往往对知识点理解不深刻。我们在教学实践中的体会是:在讲解C语言语法的基础上,适当地剖析编程语言在计算机中的运行机制,会让学生的理解更加透彻。因此,我们的课堂教学方法分为如下两部分。
1)课件讲解。课件讲解包括两部分,即知识点要点总结和知识点运行机制剖析。知识点要点总结就是告诉学生该知识点如何使用;而知识点运行机制剖析则告诉学生该程序在计算机内存中的执行过程。由于绝大部分高校在开设C语言程序设计之前都会开设计算机文化基础等课程,因此学生有足够的计算机基础知识来理解C语言程序的运行机制。
2)实例演示。作为一门编程语言,C语言需要在实践中理解和掌握,因此,课堂教学中,在具体的编程环境(如VC++6.0)下演示十分必要。通过在具体的软件环境下编程,告诉学生应该做什么和不应该做什么,并总结该知识点的注意事项。相比传统的脱离编程环境,只在PPT或黑板上进行板书的教学模式,该方法的教学效果要好得多。在课堂教学中,具体的教学步骤如下:①使用PPT或者板书列出该知识点的注意要点;②在编程环境(如VC++6.0)下演示该知识点的用法,给出正确的和错误的使用方法,并进行对比;③通过幻灯片动画或Flas等形式演示程序在计算机内存中的执行过程,让学生更加深刻地理解程序的运行机制。
3)教学难点与重点——“复合知识点”。从C语言的教学内容来讲,数组、函数和指针是教学的重点章节,这些章节之间相互关联的部分又是重点中的难点,如数组和函数结合,数组名做函数参数,数组和指针结合,指向数组的指针变量,函数和指针结合,指向函数的指针变量等。在教学过程中要反复强调各个知识点的注意事项,如果基本知识点能够理解透彻,上述难点内容也就迎刃而解了。
1.2上机实践教学
在实践教学中,教师可以通过实际教学案例循序渐进地强化学生对C语言知识点的理解。上机实践的教学内容通常分为两部分:基本知识点练习和综合训练。首先通过基本知识点的练习,让学生掌握该知识点的使用,即巩固课堂所学内容;然后通过一个综合性的大作业,训练学生综合应用C语言知识点的能力,例如,通过编写“学生课程成绩统计系统”考查学生对数组、结构体、指针、函数、文件等知识的综合掌握情况。对于初学编程语言的学生,往往没有养成良好的编程习惯,出错的可能性较大,而出错之后进行调试又将耗费较长的时间,这势必对学生的学习热情产生负面影响。因此,一开始就给学生制定科学的编程步骤和规范,使学生养成良好的编程习惯,将大大减少程序出错的可能。下面是按照上述五步编写的一个完整的C语言程序,用来比较两个整数的大小。按照上述五步进行编程,经过一段时间的训练之后,学生出现语法错误的可能性大大降低,此时学生更多的精力将集中在程序算法的设计和实现上。
1.3考试形式
对于C语言程序设计的考核方式,我们采用知识点考核和编程实践相结合的方式。知识点考核偏重于C语言基本语法,用于检验学生对知识点的掌握是否全面,此项考核约占总成绩的40%;编程实践考核用于检验学生的实际动手能力,学生将在规定的时间内根据题目在机器上编程,此项考核约占总成绩的60%。为了实现知识点的考核,我们将考试与计算机二级C语言上机考试紧密结合,采用题库平台进行上机考试,学生直接在机器上答题并提交,知识点考核多采取客观题,如填空题、程序修改题以及读程序题等,编程题在实战编程中考核。C语言程序设计课程的重要特点就是实践性强,学习该课程的目的就是为了编写程序。因此从考试的角度讲,进行编程实践是最合适的方式,通过上机编程来考核学生的学习情况也是最公正和客观的方式。
2C语言程序设计教学实践结果分析
中国矿业大学(北京)每年都有40多个班级同时开设C语言程序设计课程,因此该课程教学质量的高低将直接影响全校理工科学生对C语言的理解和掌握。中国矿业大学(北京)C语言程序设计教学团队经过长期的探索总结出一套行之有效的C语言教学方法,我们将上述方法在学校越崎实验班中进行了试点。如图2所示,采用上述教学法的越崎实验班的C语言程序设计课程考试成绩要明显好于其他班级,其中90分以上的学生占10.7%,80分以上的学生占总人数的53.6%。另外,学生的学习积极性比采用上述方法前得到明显提高,很多学生都对计算机编程产生了浓厚兴趣,实践证明我们提出的上述方法是行之有效的。
3结语
关键词:教学方法;教学模式;思维训练;自学能力
中图分类号:G642文献标识码:A文章编号:1009-3044(2008)21-30486-03
The Research of Teaching Methods in "C Programming Language"
LIU Jian-you
(Zhaoqing Science and Technology Polytechnic,Zhaoqing 526020,China)
Abstract: C is a typical structural programming language, many colleges and universities use it as basic programming language. Students often complain about C language difficult to learn, to use, to build the application software, lack of programming and debugging capabilities. How to better carry out the C language courses teaching?Author on the problems that exist in teaching, with his personal experience in teaching and experience, talk about their own views, to promote the C language teaching.
Key words: teaching methods; teaching mode; thinking training; self-learning ability
1 引言
程序设计语言的种类多得难以计算,为什么要以C语言作为编程入门语言呢?还有人说为什么一定要学习C语言,干嘛不直接从C++学起?而且学C++不一定要有C语言基础,有了反而会有些内容混淆。还有人说C语言都已经过时了,怎么还要浪费时间去学?C语言在教学过程中,抱怨C语言难学,难懂,难用,在解决实际问题编制应用软件时往往无以下手,缺乏编程和调试的能力。。久而久之,学生对学习此门课程就会产生厌倦的心理,不但影响本课程的学习,还会影响以后相关课程的学习。本文针对以上问题,指出了如下措施:
2 学习《C语言程序设计》的意义
我认为在学习C语言之前有必要弄清学习的意义所在,这样才能让学生对其产生兴趣。兴趣是人类最好的老师,只有对其产生了兴趣,我们才能学好这门语言。
将C语言作为入门语言具有重要的意义。C语言是一门典型的结构化程序设计语言,它具有语言简洁、严谨,用途广泛等特点,能够体现结构化程序设计的优良控制结构,非常适合初学者。通过这门课程的学习,能够使学生掌握一门结构化程序设计语言,更为最重要的是能让学生树立用程序解决现实问题的思路和方法。为今后的学习打良好的基础。再学其他程序设计语言,就能够在短时间内迅速的掌握。
3 改革课程教学内容,重视算法的编程思想,培养创造性思维
精选课程内容是一项非常重要的工作,它是教学内容的核心部分,《C语言程序设计》的核心内容包括C语言基本语法、程序设计思想和程序调试方法。语法是任何一门语言的基础,同时,各种程序设计语言在基本知识点上是相同的,学生对基础知识的正确理解和准确运用,其意义是深远的。
C语言程序是由函数组成的,无论问题多么复杂,我们都可以将其看成是一个大任务,这个大任务又可化分成若干个小任务,将这些小任务解决了,那么大任务也就完成了。也就是说其任务只有一个,就是编写函数(一个main()主函数和其他函数)。执行程序时,从mian()的第一个“{”,开始直到最后一个“}”结束,其他函数只有在执行的过程中被调用才执行。
学习C语言程序设计不仅是为了掌握一种开发工具,更重要的是用计算机解决问题。而算法是解题的方法和步骤,算法就是对操作的具体描述,是计算机的解题过程。编制程序,就是根据算法,用具体的语言依据某种规则编写计算机执行的命令序列。因此学习语言的重点是锻炼分析、分解,最终归纳整理出算法的能力。在教学过程中,学生能否理解算法,并掌握算法,成为教学的关键。
在C语言的教学过程中,改革传统的语法学习内容,将算法教学融入到语言教学中。由于C语言语法的逻辑性较强、结构性要求较高,初学者刚接触的时候容易考虑不全。因此算法教学可以通过实例进行, 从最简单的例子入手,使学生在解决具体问题的过程中学习C语言的基本逻辑结构和语句。生活中到处都存在着算法。而对于同一个问题可以有不同的解题方法和步骤,可以让学生根据同一个问题提出不同的算法,并比较这些算法之间的优劣,并让学生根据分析对算法进行优化。通过对算法的优化练习,可以在无形中提高学生写算法的水平。
4 改革课堂教学模式,培养学生自学能力
在教学中可以使用下面的一些方法,提高教学效果,培养学生的逻辑思维能力和动手能力。
4.1 改变传统的教学方式
虽然这个话题是老生常谈了,但是现在部分老师还没有认识到这个问题的重要性,仍然是“教师单向灌输”的教学模式。教师首先要在教学过程中树立以学生为主体,老师为主导的教学思想,正确处理传授知识与培养能力、提高素质之间的关系;其次改变教学模式,偿试采用以下教学方式。
4.1.1 任务驱动教学方式
在教学过程中避免照本宣科、枯燥乏味,“任务驱动”是建构主义理论中的一种教学模式,是将所要学习的新知识隐含在一个或几个任务之中,学生通过对所提的任务进行分析、讨论,明确它大体涉及哪些知识,在老师的指导、帮助下找出解决问题的方法,最后通过任务的完成对学生知识的传授。事实上它并不是简单的给出任务就了事,重要的是要让学生学会学习,使他们学会从多方位、多层次、多角度去考虑问题。使学生认识到学有所用、学以致用,自然地产生学习的愿望和动力。
可以先给出一个比较典型的C语言编写的例子。给学生具体的演示,通过这个效果激发学生的积极性。要求学生在期末的时候编写出相应的程序。有了这个任务,在讲课的时候逐步的告诉学生每一章可以具体的实现例子的那个部分,让学生逐步的去实现相应的功能。他们实现了相应的效果,就会极大地增强学习的兴趣和热情。这样可以让学生在愉悦的过程中学好这门课程。
4.1.2 启发式教学
为培养学生逻辑思维和创新能力,在教学过程中,教师遵循启发式教学原则,通过各种教学方式和手段激发学生的学习欲望,积极投入到学习活动中,积极思维,发现问题,提出问题,并逐步解决问题。例如,在讲解程序设计举例时,不是简单地给出程序清单,而是从分析问题入手,继而找出解决问题的方法,再给出算法,最后编写出完整的程序,而在这一全过程,最关键的是每一步都采用与学生一起探讨的方式,让学生在启发下思考,在思考中解决问题,从而掌握独立分析问题、解决问题的方法。
4.1.3 互动式教学
互动式教学是教师驾驭讲台能力的具体体现。一个教师站在讲台上,要不断地扫视下面的学生,观察学生的表情,了解学生的接受程度,并能及时地调整教学的进度和步骤,必要时到达到学生与教师在课堂上互相之间的交流。允许学生在不明白的时候随时提出问题,教师根据实际情况决定是当场解答,还是课后解答。真正实现课堂上的互动,其教学的效果就会显著地提高。教师在教学过程中,还应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。
4.1.4 项目分析式教学
为培养学生综合应用知识的能力,通过对完整的项目的系统分析,培养学生良好的编程习惯,善于获取他人经验的能力以及掌握综合运用所学知识的能力,从而真正提高编程水平。
4.2 激励个性化学习
在微观课堂上采用项目递进驱动教学法,改变满堂灌的做法,将学生的眼手脑全部调动起来。精心设计实例,给学生一个比较实际的切入点,通过老师的演示使学生感觉能够入手,然后再通过将此实例不断修改、扩充,引导学生参与到程序的编制过程中,在这个过程中,再将学生所作的程序展示,让学生来评判优劣,吸收优点,修改错误,引导学生进行优化。在这样的实例教学中,因为有提出问题、解决问题、扩展问题、再解决问题、对解决问题的方法评价、优化设计等几个环节,实际上是一个螺旋式滚动向前的过程,在这个螺旋式不断向前的过程中,能够非常自然地调动学生的参与,而且通过问题的不断扩展,通过一个问题的多种解决方法,有效开阔学生的思维,使得学生在课堂上真正地成为 “ 主体 ” ,教师扮演 “ 主导 ” 角色。 这种通过一个程序的层层推进,引入课程内容,使得学生的每一步学习都有基础,是循序渐进,螺旋式上升的过程,使学生的学习是在“走台阶”,而不是“三级跳”,效果很好。
4.3 加强对学生程序设计思维训练
《C语言程序设计》课程不仅仅是一般意义上的知识传授,要让学生掌握程序设计的基本方法,对学生进行逻辑思维能力的培养。在实际的教学过程中,我们发现有些学生平时学得很认真,对语法、语句等细节也很熟悉,但碰到稍微复杂一点的编程则无从下手,教师在教学过程中要树立正确的教学思想,即注重算法设计,加强学生的程序设计思维训练,帮助学生顺利地实现思维方式的转变,而不能只单纯地讲授语言的语法、语义、语用,应该将复杂枯燥的语法知识分解到一个个生动实用的程序实例中,也就是在教学过程中以程序设计为主线,有意识淡化计算机语言本身语句的介绍,而重点介绍程序设计,在分析程序和程序设计中熟悉语法、应用语句,掌握程序设计和解决问题的思路(算法),并把软件工程学的思想贯穿于算法分析和程序设计的过程中。一定要避免陷入这样的误区:教师一味地给学生讲解语句的功能和语法规则,使学生陷入冗繁的语法规则之中,形成以语言为中心的思维模式。这样教出来的学生语法背得滚瓜烂熟,只会生搬硬套,缺乏实际编程能力,所以教师应注重培养学生形成以算法为中心的思维模式。对于从未受过算法设计训练的初学者来说,可能会感到无从下手,对此,教师应该有意识地加强这种思维方式的训练,通过讲授一些常用算法、典型算法,如记数、累加、连乘、两数交换、求最大(小)值、迭代、排序、分类等为以后编写程序、软件设计奠定基础,同时典型算法熟练的掌握,也可增加学生学习的信心并提高学习的兴趣,同时培养学生的思维能力。
5 强化实践教学,培养学生动手能力
实行实践教学形式多样化,上机操作,老师通常让照着书本的例子进行验证,这样无法增加学生的成就感,使学生觉得很无聊,在《C语言程序设计》上机实验教学中,除传统的课堂实验外,还开展课程设计、典型程序分析与设计等实践环节,还可以教师组织C程序设计兴趣小组,组织C程序设计大赛,组织学生参与科研开发等,将每一阶段的学习进行小结性的贯穿与能力提高。将 C 的知识点都溶化到一个个实训项目的程序编写中。整个过程以学生独立完成为主,教师只提供必要的辅导。经过实践训练,尤其经过综合训练中模拟实际软件开发的演练,使学生得到了锻炼,进一步激发了学习兴趣,培养了问题求解和编程能力,还有利于培养探索和创新能力。
6 改革考核方式,全面实行考教分离
C语言课程所有考试均实行考教分离,这不仅促进了任课教师对教学的精益求精,而且也给了教师充分发挥、施展个人教学才能的空间。在考核方法上,考虑到高职院校是培养应用性的实用人才的这一特点,该课程除采用传统的笔试外,大胆采用更能反映学生知识应用能力的上机考试,这一考试形式非常受学生的欢迎。可以采用多种形式考核学生,重点考核学生的实践动手能力。
7 结束语
以上是作者近几年关于C语言教学经验的总结,在实际的教学过程中取得了良好的教学效果。笔者认为在教学过程中除了要使学生掌握C语言程序设计这门语言外,最重要的是要让学生树立用程序解决现实问题的思路和方法(算法)。学生能否理解算法,并掌握算法,成为教学的关键,这是也学习C语言程序设计的重中之重。
参考文献:
[1] 谭浩强.C程序设计[M].2版.北京:清华出版社,2001.
(一《)C语言程序设计》的教学目标
社会对于人才的需要,并不是要求他们只要学会理论知识就可以,各个单位对人才的要求更看重于他们的实践能力,要求他们能够把所学习过的知识转化为动手能力与实际解决问题的能力。因此,对于学生的《C语言程序设计》课程的教学只是进行理论知识的教育是远远不够的,还有提升学生的综合能力。学生要达到的认知类目标包括:掌握C语言程序设计课程相关的基本概念;理解解决问题的基本技巧;理解标记控制循环与计数控制循环;把握程序性的知识,并学会如何应用。学生要达到的能力类的目标包括:掌握C语言程序设计的基本技能,进行程序计算;熟练运用与、或、否命题,以此来解决实际中的程序问题;熟练运用一些基本的逻辑运算符;能够使用break和continue程序控制语句;学会编写基本字符模式下的简单程序;另外还有培养学生动手实践能力和与他人合作的能力。除此之外,还有培养学生学习C语言程序设计的兴趣,养成学习工作中严谨、务真求实的良好态度,培养解决程序问题的开放性思维。
(二《)C语言程序设计》教学策略设计
对学生进行C语言程序设计的教育,其最终目的就是要让学生掌握这门课程,并且运用到实际工作中,而教学策略的设计,就是为了在最短的时间内,让学生掌握更多的知识,并且将其转化为自身的实践能力。(1《)C语言程序设计》的教学方法教学方法多种多样,其中讲授法、谈话法、演示法、实践法等最为常见。教师在选择教学方法的时候,要充分考虑教学大纲的要求和教材中的内容,还要考虑学生的学习情况与学习能力,以及现有的教学条件,从而选择最适合教学工作的一种方法。同样的教学方法,对于某一个班级的学生合适,对于另外一个班级也许就不适用,因为每个班的学习氛围不同,同理,对于某一位学生教学方法很恰当,而对另外一个学生来说,可能就是阻碍学习的因素。因此,教师在教学过程中要对各个方面影响教学效果的因素进行充分的考虑。对学生的教学工作,可以采取分组教学的形式,这种方法不但可以让教师能够更大程度上关注到每一位学生的学习情况,还能够通过小组间学生相互帮助,分享交流学习经验,从而获得更多提高成绩的机会。另外,学生之间的交流要比学生与教师之间的交流更为顺利,学生之间相互学习更容易发现自身的优势与不足之处,从而把自己的学习经验分享给其他人,同时向其他同学学习自己没有掌握的知识。小组教学还能够增强学生的交流能力,加强学生之间的人际关系,培养学生的团队合作能力,从而提升学生的综合素质。(2《)C语言程序设计》的学习组织形式学习组织能力是指学生在学习的过程中,师生的共同活动在程序、人员、时空关系上的组合形式。运用适合学生的学习组织形式,有助于学生提高C语言程序设计学习的效率,同时,还可以将一些高效率的学习方法、学习敬仰在学习组织形式中进行运用,由于《C语言程序设计》教学分为基础知识与课程设计两种基本形式,我们把以问题为导向的《C语言程序设计》教学模式下的学习组织形式也分为两种类型。一种是课堂小组合作学习。在《C语言程序设计》所有课时中,基础知识的课程占据了绝大多数,教学地点可以选为网络机房,以问题为导向的《C语言程序设计》有利于学生培养团队合作精神,提高彼此之间的交流能力,鼓励学生在学习的过程中勇敢地提出问题回答问题,为学生营造一种良好的学习氛围。教师充分发挥自身的引导与辅助的作用,帮助学生发现问题,解决问题。另一种类型是课程设计探究学习。课程设计的时间一般比较短,在此期间,教师要通过合理的课程设计来为学生创造一个和谐的学习氛围,师生之间、学生之间进行交流,分享学习经验与解决问题的方法,一方面可以增加学生彼此学习的机会,另一方面也可以监督学生完成自己的学习任务。(3)网络环境下的问题导向教学模式网络环境下的以问题为导向的《C语言程序设计》课程教学模式,则是利用网络科技来辅助教师的教学活动,在这个教学过程中,教师是教学活动中的引导者与辅助者,而学生才是学习的主体。教师为学生设计好学习任务,明确每一位学生所要解决的问题,再对学生进行合理的分组,让学生充分利用网络资源,收集对自己有利的信息,并且对信息进行有效的筛选与整合。学生在寻求解决问题的过程中,能够充分利用网络环境的优势,推动以问题为导向的教学模式的实施,实现学生的自主学习、互动合作、自觉约束自己的学习活动。这样,学生在整个学习过程中,不仅解决了教师提出的问题,还掌握了搜集、处理信息的能力,收获成功之后的成就感,增强与他人之间的交流,提高自身的创造能力,真正做到增强自身的综合素质。
2以问题为导向的《C语言程序设计》的实践
在《C语言程序设计》课程教学过程中,教师的教学工作与学生的学习活动总是会暴露一些问题,如教师讲解不到位,学生不能理解理论知识,教师讲课难以吸引学生的学习兴趣,学生学习效率低下等问题。而以问题为导向的《C语言程序设计》教学模式,要如何进行具体的实施,才能够帮助学生掌握解决问题的技巧,加深对理论知识的理解呢?
(一)以问题为导向的教学模式中的课程设计
在《C语言程序设计》教学过程中,使用以问题为导向的教学模式,要明确本次课程的教学目标是什么,所有的课程设计的大方向要以教学目标为准则,教学中要以人为本,以学生为中心,站在学生的立场上,充分考虑到学生的接受知识的能力与完成任务的可能性。另外还有考虑哪些教学设备可以供学生使用,做到最大程度利用现有的资源,帮助学生掌握更多的知识。同时,对于学生的要求要合理,要求过高,学生难以完成目标,将会打击学生的参与教学的积极性与信心,要求过低,将会浪费时间,学生的实际能力达不到质的飞跃。因此,课程的设计要实事求是,一切从实际出发。
(二)以问题为导向的教学模式实施的原则
1.遵循现代社会教育事业的发展规律,尊重学生的认知规律,鼓励学生运用自己的优势进行创新性的学习。2.坚持以学生为主体、以学生为中心的原则,让学生出于教学中的主体地位。营造轻松的学习氛围,让每一位学生都积极大胆地参与到其中,敢于提出自己的疑问,敢于回答教师与其他学生提出的问题,积极参与具有挑战性的任务。3.教师发挥自身的引导与辅助的作用,引导学生进行有利于提高自身能力的学习活动,帮助学生解决难度较大的问题,并且监督学生对问题作出总结,从完成任务的过程中学到更多的知识。
(三)以问题为导向的教学模式应当注意的问题