C语言程序设计教学分析与探索论文

时间:2019-05-15 10:45:09下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计教学分析与探索论文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计教学分析与探索论文》。

第一篇:C语言程序设计教学分析与探索论文

[摘要]C语言是高校计算机类专业开设的一门非常重要的专业课程,学校往往在教学上投入很多,却收效甚微。学生普遍反映难学、难懂,理论与实践脱节,所以很难培养出满足社会需求的计算机专业人才。本文从学校教学和学生学习两个方面出发,分析C语言教学过程中现存的问题,通过多年的教学经验,对教学方式和方法进行总结,试图探索出一种符合现代人才培养需求的教学模式。

[关键词]C语言 程序设计 实践教学

一、前言

上个世纪70年代以来,C语言在以其目标代码质量高,使用灵活,数据类型丰富,可移植性好等特点而得到广泛的普及和迅速发展,成为一种在系统软件开发、科学计算、自动控制等各个领域广泛应用的程序设计语言。在众多高级程序设计语言竞显风流的当今社会,C语言以其强大的功能仍在高级程序设计领域占据着重要的地位。

C语言作为计算机类专业的一门专业课,是学生学习程序设计的开端,学生分析问题、解决问题的能力和程序设计过程理念的形成都与C语言有着密切的联系。C语言有着其它高级程序设计语言不可比拟的优点,同时也有其较难学习的一面。由于现行教学过程中存在着一些弊端和学生自身因素的原因,所以在学习中普遍反映“难学”、“不懂“,这也是学生普遍遇到的问题。

二、现行教学和学习中存在的问题

1.现行教学中理论课与实践课完全分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,在广度上对知识没有拓展和延伸,必定会影响对知识深度的剖析,也会造成学生理解的困难。而实践课程通常被放到了次要的地位,很多时候是在走形式:一方面,学生对知识一知半解、往往用上网来对付实践课;另一方面,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。

2.学生对计算机基础的学习不深入,严重影响了C语言的学习。因为C语言程序设计课程的延续性和拓展性非常的强,包含了算法、数据结构、计算机基础等相关专业课程和基础课程的课程的知识。在C语言教学中涉及到进制转换、取值范围和顺序存储等基础知识时,发现很多学生还没掌握这些基础知识,甚至根本不理解。在这样薄弱的基础上,C语言教学很难顺利进行。

3.学生在学习中处于被动的接受知识的地位,没有机会主动参与到学习中来,导致学习兴趣不浓、学习停留在表面、对知识学的一知半解。由于接受的多是课本知识,所以动手能力差、应用能力差,导致不能把自己所学的知识应用到实践中去。这样培养出来的学生不能满足社会的需要,也没有达到教学的目的。

三、探索新的教学方法

在多年的教学过程中,尝试多种教学方式,不断总结教学经验,探索新的教学方法。

1.上好第一堂课,引起学生的学习兴趣。第一堂课是最基础的理论知识课,如介绍C语言的发展、特点、优点等内容,往往不被教师所重视,认为应该把精力放到程序设计部分。其实恰恰相反,上好第一堂课至关重要,它关系着学生是否会对学习产生兴趣,渴望进行后继内容的学习问题,所以绝对不能照本喧科。而对C语言的发展追本溯源,将C语言领域的开发投入、研发过程、遇到的问题进行详细的分析,对C语言在现实中的应用以及C++、VC++进行介绍,往往能够引起学生学习C语言程序设计的兴趣、推动后续知识的学习。

2.详细讲解基础知识,深度剖析与后继课程相关的内容,激发学生学习动力。C语言程序设计教学中涉及的数据类型、取值范围、运算符、优先级、表达式等内容虽是基础知识,但对学生来说却是迈入程序设计大门的第一步。没有坚实的基础知识,便无从谈及程序设计,所以对基础知识的讲解一定要详细。比如遇到整型数据的取值范围问题时,可以适当拓展一些原码和反码的知识,让学生知其然,更知其所以然;链表知识是C语言的难点,这部分内容和数据结构联系密切,所以要深度剖析,尤其是对带表头结点的单、双链表更要讲解的清晰、透彻,为数据结构、JAVA语言等后继课程打下坚实基础。这样继往开来,不仅可以巩固以前的计算机基础知识,更能激发学生的学习动力。3.重点分析程序设计过程,培养学生良好的编程习惯,逐步提高学生编程能力。很多学生认为,进行程序设计就是用计算机语言编写源代码,这其实是学习程序设计的一个误区,编写源代码仅仅是完成了程序的编码,而程序设计从问题分析就开始了,它包括分析问题、选择算法、绘制流程图、编写源代码、调试并测试程序,直到取得正确结果这样一个完整的过程。其中绘制流程图能使程序员在编程时思路清晰,减少编程错误。利用流程图来分析、查找、解决程序设计中的问题能够一目了然。例如:下面这一简单的while循环结构,用流程图便可以轻易发现错误所在。图1是错误代码的流程图,它使程序陷入了死循环,图2是正确的流程图。所以绘制正确的流程图,是减少代码错误的有效手段。

Main(0

{int i,sum;

i=sum=0;

While(i<=100)

Sum+=i;

i++;

Printf(“1+2+3+…+100=%d’,sum);

}

在C语言程序设计教学过程中,即使对简单的程序设计的讲解也严格的按照程序设计的过程一步步的进行分析和引导,培养学生良好的编程习惯。

4.通过实践教学,让学生亲自体会程序设计全过程,巩固所学知识。学生通常在C语言的学习上投入了很多的精力与时间,但却离实际要求相差很远。因为缺乏了实践经验和能力,不能满足社会的需求,这也是计算机类学生的通病。为此,在教学中一定要注重理论与实践相结合。案例实验可以说是学习C程序设计最有效的方法之一,在教学过程中我们故意将赋值符号“=”和等号“= =”互换、漏写分号“;”和大括号“{}“,设置一些待解决的错误,引导学生在编程和调试过程中逐一解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。

5.多种教学手段相结合,提高教学效果。理论教学与实践教学相结合,适当减少理论课、增加实践课,将理论教学融入实践教学中来,逐渐模糊两者之间的界限;传统教学与丰富多彩的多媒体教学相结合、教师讲解与学生课堂讨论相结合,以便调动学习的主动性和积极性。

6.注重对知识的归纳和总结,让学生温故而知新。在教学过程中,按章节、按阶段对相关重点知识进行归纳总结,让学生把模块化的知识连接起来,系统、全面的掌握所学内容。

四、结束语

目前C语言程序设计教学中仍然有很多需要改进的地方,如何提高实践教学质量,使理论与实践相结合,仍需要在教学过程中不断的探索和改革。

参考文献:

[1]杨路明等.C/C++程序设计教程.长沙:湖南科学技术出版社,2003.

[2]谭浩强.C语言程序设计教程.北京:高等教育出版社,1997.

[3]王士元.C高级实用程序设计.北京:清华大学出版社,1996.

[4]徐孝凯.数据结构实用教程(C/C++描述).北京:清华大学出版社,1999.

第二篇:C语言程序设计教学探究论文

[摘要]文章主要针对高职高专院校中《C语言程序设计》教学中出现的听得懂、编不出的现象,分析问题存在的原因,从教学的课程目标定位、教学内容和方法改革方面进行了探讨,提出只有教师的教学内容和教学方法进行合理的组合,提高学生的学习兴趣才能达到良好的教学效果。

[关键词]教学方法 案例教学 教学效果

《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的课程,在整个课程体系中占有重要地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生直接的影响。针对学生学习语言类课程的一般思维规律和思维模式,笔者结合多年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言教学有所帮助。

一、教学中存在的问题

《C语言程序设计》是一个逻辑性很强的课程。学生在毕业设计时会面临具体的设计要求的问题,它与任何一本教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的教材中,绝大多数结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试普遍采用单选、判断及简答等方式测试学生对于教材内容的掌握程度。从实际效果分析,实际上是测试学生对各章节中的基本概念记忆程度而不是理解程度。另一方面是在考试压力下,特别是目前的应试考试方式中,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有整体设计的概念。通过对各类考试结果的分析,可以注意到一个现象,在考试中涉及的综合编程部分,学生的得分率很低。为了确保学生的课程通过率,在考试时尽可能将综合测试部分的比例压低或提供学生统一复习提纲,这样做的结果就是学生在学习时一切围绕任课老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。

二、提高程序设计课程教学效果的途径

1.明确课程目标

通过学习,学生应能正确理解语言的基本概念、语法、语义并得到充分的程序设计训练。C语言课程一般是为应用性教学而设置的,因此,强调实践性是计算机语言课程教学中特别要注意的问题。对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。过分强调该语言的系统性和完整性可能会转移学生对课程重点的注意力。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中查阅有关书籍。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

2.进行教学改革

(1)教学内容改革

程序设计课程具有很强的实践性,要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计模块化课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生培养学生实践能力方面的要求。适当增加实训教学内容,以强化学生的实际开发和应用能力,实现“零距离就业”。

(2)改变教学思想

①由整体到具体,培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,应该先介绍一个较完整的程序例子,该例子包含了该语言中的主要语句,目的是使学生先对程序有个初步的印象,再简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。

②一题多解,注重算法是程序设计的灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。

(3)教学方法改革

①案例分析教学。通过案例分析,重点讲解程序设计的思想和方法,辅以语言知识的介绍,将课程内容分为若干个主题,以程序设计做为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成。

②基于问题的教学。提出问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。

③“项目驱动”教学。在理论教学中采用“项目驱动”教学法,整个课程教学围绕一个“工程项目”进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C 的知识点都溶化到一个个实训项目的程序编写中。在课程初期,主要是进行单项的编程练习,重在掌握C 语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时,开始实训项目的编程实践,逐步组建“教师管理系统”,并且添加文本菜单,整合扩展记录添加、排序、查询、统计和记录浏览等内容形成课程设计。

(4)课程考核方式改革

①平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%。

②期末前,给学生留一个综合实训题考核学生综合解决问题的能力,要求同学们在一周内完成,占据期末总成绩30%。

③期末进行理论考试,占期末总成绩的40%。

3.展示学生作品,激发学生的学习欲望

计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的劳动成果,及时肯定学生的成绩,这样会有利于激发学生们的学习热情,保持浓厚的学习兴趣,对学生的后续学习将产生强大的动力和自信心,也可以对每次任务的完成情况进行积分制度,算入期末成绩中,以激发学生们的兴趣。

4.自始至终培养学生的自学能力

学生学习软件的最终目的是编写满足需求的程序,所以我们在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,初始阶段往往会遇到因为学生自学能力差而带来的困难,所以在学生完成任务时,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题,通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。

参考文献:

[1]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息,2008(1).[2]于丽杰,王育平,董楠萍等.面向对像程序设计综合实践课程教学模式的探索[J].高教论坛,2007.01.

第三篇:论文—地理教学语言幽默探索

地理教学语言幽默探索

现代教学追求的目标是让学生“会学”和“乐学”,课堂教学讲究理趣和情趣,因而教学语言幽默在课堂教学中显得尤为重要。地理学科内容广泛,自然人文兼备,贴近生产生活实际,语言幽默在地理教学中大有用武之地。

一、把握地理教学语言幽默的本质特征

幽默是思想、才学和灵感的结晶,是哲理和情趣的统一。教学幽默具有幽默的一般特点——机智性和趣味性,又具有其特殊的规定性,即在教学中的教育性。教学幽默具有极强的情绪感染力,能有效地活跃课堂气氛,使学生保持浓厚的学习兴趣,趣味性是教学幽默的显性特征;同时教学幽默蕴涵着深刻的思想或哲理,具有巨大的教育功能,教育性是其本质特征。

怎样做到趣味性与教育性的和谐统一呢?首先,教学幽默要契合教学目的和内容。教学幽默的目的是为了使学生在轻松愉快的课堂气氛中获取知识、增长才智。如果置教学目的和内容于不顾,东拉西扯,为幽默而幽默,那就会既浪费了宝贵的课堂教学时间,又给学生以油滑之感。其次,教学幽默应符合学生实际。教学幽默与一般的幽默艺术不同,它的场所是课堂,对象是学生。教学幽默的深浅度应与学生对幽默的理解力和接受水平相一致。如高中学生与初中学生的思维能力就存在差异,初中生的抽象思维主要靠感性经验的直接支持,而高中生的抽象思维已逐步进入理论型,辨证思维发展迅速,能够理解深层次的语言内涵,因而幽默运用的层次应有所不同。如果不考虑学生生活阅历、文化知识的背景差距,不考虑如何引起师生双方的心灵沟通,学生就无法领略幽默所散发出来的妙趣,幽默的审美价值也将荡然无存。第二,教学幽默应把握分寸。如果一堂课幽默不断、笑声不绝,会冲淡教学内容;如果教学幽默为逗乐而幽默甚至低级趣味,就失去了幽默应具有的审美价值和教育价值。如一位老师看到有同学在打瞌睡,便当众奚落:“你们知道猪的爱好是什么吗?”这种讽刺挖苦式的幽默虽然逗乐了大家,却伤害了该同学的自尊心,这种幽默不可取。此外,教学幽默需要以良好的课堂氛围作烘托,以融洽的师生情感为前提。离开合适的气氛和情调,教学幽默是难以奏效的。一个沉闷单调的课堂会让教师的一缕幽默蒸发消散,而一个愉快欢乐的课堂,幽默会将课堂气氛推向高潮。

二、探究地理教学幽默语言的形成规律

一般的教学语言符合语言形式逻辑的基本规律,文字的形式和内容的联系是规范的,词语之间的搭配是常规的,因而与语言幽默无缘。但是如果突破语言、文字、词汇、语法和形式逻辑的一般规律,变格运用语言材料并与学生的特殊心理活动过程有机结合,语言的幽默氛围自然就产生了。下面偶举几例加以说明:

1.借用语音相近的字词,构成特别的语义,从而产生幽默效果。如:我国居世界首位的矿产钨、锑、稀土、锌、钛、钒,可记为“吾弟吸毒心太烦”。

2.改变语流暗示的语义方向,使学生的心理期望突然落空,也会产生幽默效果。如:讲完地震预报这一内容时,笔者这样补充:“日本地震学者花了三 十多年时间,耗资7亿美元研究地震预报,最后得出结论——”学生满怀希望地期待地震预报的新成果,结果却大大出乎意料——“在现有的科学水平下准确预报地震是不可能的。”这样表述不仅产生了很强的幽默效果,而且也侧面说明了地震预报的艰难。

3.违拗语言规律和社会习惯,使原先凝结的一种规范认识和目前话语事实发生矛盾冲突,便会产生幽默效果。如:用变形的谚语来形容黄河地上河 ——水往高处流,人往低处走;故意误用成语——“大气层厚度2000—3000千米,地球直径12740千米。学了这个知识点,我们就知道„天高地厚‟了。”

4.巧用比喻、拟人、借代、双关、反语等修辞手法,常会创造出幽默意境。如:讲恒星运动时,笔者这样讲述:“最早发现恒星运动的是我国唐代天文学家僧一行,这个和尚除了念经外,还有一项„业余爱好‟,那就是观察天象……其实恒星运动的速度很快,牛郎26km/s,织女 14km/s,牛郎跑得快,大概是 因为男性的缘故吧。1200年后明目皓齿的织女将靠近北极成为北极星,牛郎织女分道扬镳。也许有些同学会感到惋惜,其实他们并不般配,织女是一颗耀眼的明星,亮度是牛郎的六倍,体重是牛朗的三倍!”这段话把现代用语“业余爱好”借用到古人身上,新颖别致;把织女描绘成“明目皓齿”,比喻为耀眼的明显,形象科学;而“牛郎跑得快,体重小”是拟人手法的巧妙运用

再如,讲富士山这一活火山时把富士山近期有喷发迹象说成“富士山近期很想喷发”,“很想”一词用在此处令人忍俊不禁,妙趣横生。

教学幽默不仅可以用在讲授教学内容时,也可以用在组织教学时。如在学生上课迟到、讲话、打瞌睡时,教学幽默可以助教师一臂之力。一位老师在讲到美国城市时,看到一位同学在打瞌睡便目视着该同学风趣地说:有一位同学已梦到华盛顿了,请他谈一下具体感受。全班哗然。这样在轻松友善的气氛中,教育了学生也调整了课堂秩序。

三、提升地理教学幽默语言的艺术品位

幽默是自信的表现,是智慧的闪光。一个人的幽默能力有先天遗传的因子,更是后天培养的结果。地理教师要加强自身的文化修养,努力提升教学幽默艺术的品位。

1.努力培养自信、乐观的性格。乐观开朗的性格是创造教学幽默的基础。教师自信乐观,热情奔放的精神面貌会激起学生的亲切感和温暖感,让教师的教学与学生的思维实现同步共振,营造出良好的课堂氛围。

2.不断积累幽默材料。格言、警句、谚语、急智之言、风趣的小故事等常常是教学幽默运用的材料,平时生活和教学中要留心搜集,不断积累。如谚语是人们对自然环境长期观察的智慧结晶,具有一定的哲理,地理教学中偶尔用上几句既饶有风趣又含意深刻:食物链——黄鼠狼给鸡拜年;伏季体渔——三天打鱼,两天晒网;胡杨树——生而不死一千年,死而不倒一干年,倒而不朽一千年。只要平时注意积累,多年之后自然妙语连珠、幽默成河了。

3.挖掘教材内容中的幽默因素,构思创造幽默。地理教学内容直接的幽默素材不是很多,但只要深 入挖掘,在备课时认真构思,就会发掘出不少幽默的 “金矿”。如台风——台风是台湾来的风吗;承压水排泄区——不要一听到排泄就有臭的感觉,其实这 种排泄物(泉水)有时味道好极了。这些教学语言不仅有幽默感,而且能使学生更好地理解教学内容。

4.提高教学机智和创新意识。教学幽默的迅变性要求教师具备敏锐的教学机智,只有机智的教学才能不断创造教学幽默。如笔者在讲洋流成因时,一位学生把风海流说成了“风流”,教师便机智地说:“请同学们注意,风海流并不„风流‟!”又如一位老师错把答案“A”说成了 “B”时,急中生智:‟„正确答案是B……,那是不可能 的”。幽默需要创造,只有不断创造,幽默才能成为源头活水汩汩不断。

第四篇:浅谈《C语言程序设计》教学与实践

浅谈《C语言程序设计》教学与实践

为了有效改善当前C语言程序设计教学方法的诸多问题,本文提出了一种互动式和启发式教学方法,从实际出发,制定出切实可行的教学案例。通过测试结果表明,本文提出的方法在实际的教学实践中取得了良好的效果。

随着现代信息技术的发展,计算科学与信息科学相结合更加紧密,计算机编程能力已经成为非计算机专业学生的一门重要的必修课[1]。目前,许多高校都开设了《C语言程序设计》课程。由于C语言的功能强大和应用广泛,已经成为许多高校课程首选的编程语言。与其它语言相比,C语言涉及的概念更加复杂、规则更多,如果按照传统的教学方法,对于非计算机专业大多数学生来说,在规定的课堂教学时间内,较难掌握C语言的程序设计思想和方法。因此,传统的教学方法需要改革与实践。

目前,C语言教学存在的问题较多,本文归纳如下(1)计算机基础存在很大差异。目前,我国非常重视信息和计算机科学的普及教育,大多数高级中学都开设信息技术等课程,在进入高校前,大多数学生就已经掌握了一些计算机相关的基础知识。由于不列入高考范围,不同地区存在很大差异,尤其是经济欠发达地区的学生在计算机知识的掌握方面存在很大的差异;(2)教学案例。C语言涉及许多知识点,现有教材大多数都通过例子讲解每个知识点,通过例子可使学生更好的理解知识点,但问题在于往往不同知识点对应的例子不同,导致学生误认为知识点之间是孤立的,使学生无法将不同的知识点综合起来,学到最后,大多数学生会出现无法将各个知识点串联起来。因此,在教学过程中,选择合适的案例来贯通多个知识点是非常重要的;(3)学生的积极性没有得到充分调动,创新意识没有得到体现。在C语言教学中,大多数的学生都是被动的学习,被动的接受教师课堂授课。这种教学方法,不但不能真正反映教与学的相互性,也不能调动学生学习C语言的积极性,更不能提倡和培养学生的创新精神。

为了解决上述问题,本文提出了一种互动式和启发式教学方法,从实际出发,制定出切实可行的教学方法和教学案例,以程序设计的思想和方法为主线,充分调动学生学习的积极性和持续性。通过测试结果表明,本文提出的方法在实际的教学实践中取得了良好的效果。教学案例

刚开始对于学生要求不能过高,初学时,只要求看懂程序,编写简单的程序就可以了,然后逐步深入,通过长期的学习和积累就能熟练掌握C语言。对于学时有限或者基础较差的学生来说,有些较为难懂的内容可以通过选学或自学,把精力放在最基本、最常用的内容上,学好基本功。因此,案例的选择至关重要。对于案例的选择不但要有代表性,而且要有趣味性,不仅与教学内容和目的密切相关,也要能激发学生学习能动性,让学生掌握每个知识点。如果学生养成了正确的学习方式,掌握程序设计的思想和方法,便于以后学习其它编程语言,其基本规律和方法都是一样的。在传统的教学过程中,教师的思维与学生思维存在较大差异,导致学生被动的学习教师的理念,很容易将理论与实践脱离。相反,案例教学更注重激发学生学习的积极性,能够举一反三,掌握规律,引导学生解决实际问题的能力[4]。对于抽象的概念,往往使学生失去进一步学习的欲望,然而教学案例所引入的知识点,通过教师与学生之间的相互作用,共同分析和研究问题,使教师能够充分调动学生的积极性和兴趣,不会出现学生被动的学习情况。

通过这种方式,学生很容易接受各章知识点,对知识点的理解又进一步加深。学习程序设计,只要掌握程序设计的思路和方法,就能学活用活,举一反三。另外,在考虑教学案例时,我们应该根据学生的实际情况来选择案例,案例的选择不能太易,也不能太复杂,需考虑学生的接受和理解能力。因此,教学案例可提高学生的主动性、培养学生分析和解决实际问题。互动式教学方式

传统的教学方式,往往都是以教师为中心,学生是被动的接受知识,而现代教学方式偏向于主张学生参与到教学过程中[5]。教学本身具有两面“教”与“学”,两者紧密相连,教师教的过程也能总结出如何教好学生的方法。因此,教师的教学与学生的学密不可分。然而,旧的教学观念总是强调教师的教学,以为教的越多,学生学的越多,往往会忽视学生实际掌握知识的情况,甚至没弄清楚学生是如何学习的。因此,学生一直以来都处于被动状态。实际上,“教”只是外部因素,“学”才是内部因素。教师的“教”是创造学生“学”的条件,学习过程就是一种认知的过程,学生“学”的动力取决于“教”。

在C语言教学过程中,教师通过互动式教学法帮助学生回顾知识,采用回答问题方式引入新的知识,然后讨论和演示验证指导学生解决问题,最后,通过新的启发式问题引导学生进一步思考。最好这些问题从学生的背景知识中考虑,能启发学生,让学生从不同方面思考和解决问题。

编程思想和方法

如今的信息技术发展迅速,计算机编程语言层出不穷,对于学生,掌握一门编程语言至关重要,在教学48课时和实验16课时,共64课时内,很难精通一门编程语言。因此,编程语言教学应该集中在使学生掌握编程思想和方法,培养他们的逻辑思考能力。只有采取这种方式,学生今后就能以同样方式迅速的掌握其他编程语言。计算机编程语言的教学是语言学习的基础和关键环节,程序设计的关键是如何找到问题和解决问题,俗称算法。算法是程序设计的灵魂,是计算机进行操作的步骤。语法是编程的基础和程序设计的工具,培养学生编程能力,我们应该集中在算法设计和分析上。算法分析可以帮助学生开放思想,开拓新思路,归纳逻辑规律。在传统教学中,教师只要求学生看懂程序,当他们单独编写程序时,往往不知道从哪里开始[4]。

C语言程序设计课程教学要求学生掌握基本语法、申明、控制结构、基本思想和自上而下的结构化程序设计。同时,也要培养学生使用C语言解决实际问题。在讲完C语言基本知识教学时,例如数据类型和变量声明,我们可以使用三种基本结构程序设计、函数、数组和文件作为主线进行教学,这样学生就可以掌握编程的基本技能。即使不同的编程语言实现代码不同,但它们的思想和方法非常类似。当我们在C语言教学时,我们应该淡化语法教学,为了培养学生解决问题的能力应把教学的重点放在算法上。语法规则不是通过孤立的学习而是在学习编程的过程中学到的。随着编程难度的逐步提高,算法和语法的学习同步趋于深入。学生在富有创意、引人入胜的编程中,学会了算法,掌握了语法,把枯燥无味的语法规则变成生动活泼的编程应用。

结束语

通过采用本文提出的互动式和启发式教学方法考察类型题包括选择题(占总成绩的20%,涵盖整个教学大纲,下同)、填空题(10%)、编程填空题(30%)和编程题(40%)。学生最后的成绩信息表见表1。

综上所述,教学与改革不仅能够激发学生学习的动力,且能培养学生分析问题和解决问题的能力。随着信息技术的不断发展,我们应该不断的完善我们的教学模式。

第五篇:c语言程序设计论文

C语言程序设计论文

摘要

该程序编译的是通讯录,可以实现一般主要功能有:有建立通讯录的个人信息功能,如记录该人姓名信息,地址信息,出生日期信息,所在城市信息,以及其城市的邮编信息等,删除个人信息,通讯录个人的信息列表,个人的信息查询,个人的信息保存,以及个人的信息提取的功能,最后可以直接退出通讯录。

当然实行不同的功能需要定义不同的功能函数,在记录个人信息定义不同的结构体,每一个成员的信息可以是一个基本类型或者是一个够造类型,对结构体变量的应用,其中包括赋值,输入,输出,运算等方式来实现结构变量的成员。

当然也可以执行该程序应用了函数的调用,自定义函数以及文件的存储与调用等。个人的信息保存在这个问题上,这信息可以动态的分配到内存空间,每一次分配一块空间用来存放一个人的个人信息的数据,定义两个域,一个是数据域,用来存放各种实际的数据,如个人姓名信息,个人地址信息,出生日期等等数据。在编辑程序,用到了基本的循环、选择、排序的算法,使用数组或数组元素的指针和指针变量,对结构体及其元素用指针或指针变量来指向。并且使用多种预处理功能,如宏定义、文件包含、条件编译等。来进行程序的修改、阅读、移植和调试,也有利于实现模块化程序设计。程序员在程序中用预处理命令来调用这些功能。

通讯录的个人信息数据的编辑、存储、列表、删除、查询、提取等实行运用,在程序中存储二百人的个人信息空间,日期不能超过两个字符。在运行后,程序自动给出提示选择,给出你所需要执行的功能,在选择后会给出相应的显示和下一步的提示,在编辑个人信息时必须有姓名,否者会返回上一选择菜单,有部分信息可以不填。在编辑完后,就可以实行其他功能,将给出其他选择,如将个人信息删除、将个人信息列表、保存个人信息、提取个人信息等等的功能。最后在执行完后就可直接根据提示选择退出。就实现了整个通讯录的流程。

关键词:通讯录、列表、函数、编译

C语言程序设计论文

目录

 题目内容及其功能..........................2  算法原理..................................2  算法流程图................................8  源程序...................................14  运用结果及分析...........................20  设计心得.................................22  参考文献.................................23

C语言程序设计论文

题目内容及其功能

该通讯录主要功能有:有建立通讯录的个人信息,如姓名,地址,出生日期,城市,邮编等。也可以执行删除个人信息,通讯录信息列表,信息查询,信息保存,以及信息提取的功能,最后可以退出通讯录。该程序应用了函数的调用,自定义函数以及文件的存储与调用等,使用数组或数组元素的指针和指针变量,对结构体及其元素用指针或指针变量来指向。

算法原理

(1)通过选择来实现程序的功能: int main(void){ start=last=NULL;for(;;){

switch(menu_select())

{

case 1:enter();

break;

case 2:mldelete(&start,&last);

break;

case 3:list();

break;

case 4:search();

break;

case 5:save();

break;

case 6:load();

break;

case 7:exit(0);

} 输出运行结果并且给出选择: int menu_select(void){ char s[80];int c;printf(“******tongxunlu*******n”);printf(“*1.Enter a name

*n”);printf(“*2.delete a name

*n”);printf(“*3.list the file

*n”);printf(“*4.search

*n”);

printf(“*5.save the file

*n”);printf(“*6.load the file

*n”);printf(“*7.Quit

*n”);

C语言程序设计论文

printf(“**********************n”);do {

printf(“nplease enter your choice:”);

gets(s);

c=atoi(s);}while(c<0||c>7);return c;}

(2)输入个人信息:名字,地址,日期,邮政编码 void enter(void){ struct address *info;for(;;){

info=(struct address *)malloc(sizeof(struct address));

if(!info)

{

printf(“nout of memory”);

return;

}

inputs(“please enter name:”,info->name,30);

if(!info->name[0])break;/*stop entering*/

inputs(“please enter street:”,info->street,40);

inputs(“please enter city:”,info->city,20);

inputs(“please enter state:”,info->state,3);

inputs(“please enter zip:”,info->zip,10);

dls_store(info,&start,&last);}/*entry loop*/ } 如果超过给定内存,将给出提示,输入太长: void inputs(char *prompt,char *s,int count){ char p[225];do {

printf(prompt);

fgets(p,254,stdin);

if(strlen(p)>count)

printf(“nToo Longn”);} while(strlen(p)>count);p[strlen(p)-1]=0;/* remove newline character */ strcpy(s,p);}(3)制作列表,对输入的个人信息进行存储与排列 void dls_store(C语言程序设计论文

struct address *i,/*new element*/ struct address **start,/*first element in list*/ struct address **last/*last element in list*/){ struct address *old,*p;if(*last==NULL){/*first element in list*/

i->next=NULL;

i->prior=NULL;

*last=i;

*start=i;

return;} p=*start;/*start at top of list*/ old=NULL;while(p){

if(strcmp(p->name,i->name)<0){

old=p;

p=p->next;

}

else{

if(p->prior)

{

p->prior->next=i;

i->next=p;

i->prior=p->prior;

p->prior=i;

return;

}

i->next=p;/*new first element*/

i->prior=NULL;

p->prior=i;

*start=i;

return;

} } old->next=i;/*put on end*/ i->next=NULL;i->prior=old;*last=i;}(4)将通讯录中的信息,先进行查找,然后删除个人信息 void mldelete(struct address **start,struct address **last)

C语言程序设计论文

{ struct address *info;char s[80];

inputs(“Enter name:”,s,30);info=find(s);if(info){

if(*start==info){

*start=info->next;

if(*start)(*start)->prior=NULL;

else *last=NULL;

}

else{

info->prior->next=info->next;

if(info!=*last)

info->next->prior=info->prior;

else

*last=info->prior;

}

free(info);/*return memory to system*/ } }(5)从其内存中查找某个名字,并进行输出,如果没有就输出没有发现名字 struct address *find(char *name){ struct address *info;info=start;while(info){

if(!strcmp(name,info->name))return info;

info = info->next;/* get next address */ } printf(“Name not found.n”);return NULL;/*not found*/ }(6)将通讯录中所有个人信息分别列出 void list(void){ struct address *info;info=start;while(info){

display(info);

info = info->next;/* get next address */

C语言程序设计论文

} printf(“nn”);}(7)分别输出个人信息

void display(struct address *info){ printf(“%sn”,info->name);printf(“%sn”,info->street);printf(“%sn”,info->city);printf(“%sn”,info->state);printf(“%sn”,info->zip);printf(“nn”);}(8)根据其个人信息的存储地址来查找个人名字信息 void search(void){ char name[40];struct address *info;printf(“Enter name to find:”);gets(name);info = find(name);if(!info)

printf(“Not Foundn”);else display(info);}(9)保存输入的个人信息 void save(void){ struct address *info;FILE *fp;fp = fopen(“mlist”,“wb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} printf(“nSaving Filen”);info = start;while(info){

fwrite(info,sizeof(struct address),1,fp);

info = info->next;/* get next address */ } fclose(fp);

C语言程序设计论文

}(10)查找并提取已输入的个人信息 void load(){ struct address *info;FILE *fp;fp=fopen(“mlist”,“rb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} 释放内存空间:

while(start){

info=start->next;

free(info);

start=info;fclose(fp);}

C语言程序设计论文

算法流程图

图1-1制作列表流程图

C语言程序设计论文

图1-2删除个人信息流程图

C语言程序设计论文

图1-3个人信息-名字的查找流程图

C语言程序设计论文

图1-4查找到个人信息流程图

C语言程序设计论文

图1-5保存个人信息流程图

C语言程序设计论文

图1-6提取下载个人信息流程图

C语言程序设计论文

源程序

#include“stdio.h” #include“stdlib.h” #include“string.h” struct address{ char name[30];char street[40];char city[20];char state[3];char zip[11];struct address *next;struct address *prior;};struct address *start;struct address *last;struct address *find(char *);

void enter(void),search(void),save(void);void load(void),list(void);void mldelete(struct address **,struct address **);void dls_store(struct address *i,struct address **start,struct address **last);void inputs(char *,char*,int),display(struct address *);int menu_select(void);

int main(void){ start=last=NULL;for(;;){

switch(menu_select())

{

case 1:enter();

break;

case 2:mldelete(&start,&last);

break;

case 3:list();

break;

case 4:search();

break;

case 5:save();

break;

case 6:load();

break;

C语言程序设计论文

case 7:exit(0);

} }return 0;}

int menu_select(void){ char s[80];int c;printf(“******tongxunlu*******n”);printf(“*1.Enter a name

*n”);printf(“*2.delete a name

*n”);printf(“*3.list the file

*n”);printf(“*4.search

*n”);

printf(“*5.save the file

*n”);printf(“*6.load the file

*n”);printf(“*7.Quit

*n”);

printf(“**********************n”);do {

printf(“nplease enter your choice:”);

gets(s);

c=atoi(s);}while(c<0||c>7);return c;}

/*Enter names and address.*/ void enter(void){ struct address *info;for(;;){

info=(struct address *)malloc(sizeof(struct address));

if(!info)

{

printf(“nout of memory”);

return;

}

inputs(“please enter name:”,info->name,30);

if(!info->name[0])break;/*stop entering*/

inputs(“please enter street:”,info->street,40);

inputs(“please enter city:”,info->city,20);

inputs(“please enter state:”,info->state,3);

inputs(“please enter zip:”,info->zip,10);

dls_store(info,&start,&last);

C语言程序设计论文

}/*entry loop*/ } /*******************************************/ void inputs(char *prompt,char *s,int count){ char p[225];do {

printf(prompt);

fgets(p,254,stdin);

if(strlen(p)>count)

printf(“nToo Longn”);} while(strlen(p)>count);p[strlen(p)-1]=0;/* remove newline character */ strcpy(s,p);} /*Create a doubly linked list in sorted order */ void dls_store(struct address *i,/*new element*/ struct address **start,/*first element in list*/ struct address **last/*last element in list*/){ struct address *old,*p;if(*last==NULL){/*first element in list*/

i->next=NULL;

i->prior=NULL;

*last=i;

*start=i;

return;} p=*start;/*start at top of list*/ old=NULL;while(p){

if(strcmp(p->name,i->name)<0){

old=p;

p=p->next;

}

else{

if(p->prior)

{

p->prior->next=i;

i->next=p;

i->prior=p->prior;

C语言程序设计论文

p->prior=i;

return;

}

i->next=p;/*new first element*/

i->prior=NULL;

p->prior=i;

*start=i;

return;

} } old->next=i;/*put on end*/ i->next=NULL;i->prior=old;*last=i;} /*Remove an element from the list*/ void mldelete(struct address **start,struct address **last){ struct address *info;char s[80];

inputs(“Enter name:”,s,30);info=find(s);if(info){

if(*start==info){

*start=info->next;

if(*start)(*start)->prior=NULL;

else *last=NULL;

}

else{

info->prior->next=info->next;

if(info!=*last)

info->next->prior=info->prior;

else

*last=info->prior;

}

free(info);/*return memory to system*/ } }

/*Find an address.*/

struct address *find(char *name){

C语言程序设计论文

struct address *info;info=start;while(info){

if(!strcmp(name,info->name))return info;

info = info->next;/* get next address */ } printf(“Name not found.n”);return NULL;/*not found*/ } /* Display the entire list */ void list(void){ struct address *info;info=start;while(info){

display(info);

info = info->next;/* get next address */ } printf(“nn”);} /* this function actually prints the fields in each address.*/ void display(struct address *info){ printf(“%sn”,info->name);printf(“%sn”,info->street);printf(“%sn”,info->city);printf(“%sn”,info->state);printf(“%sn”,info->zip);printf(“nn”);} /* Look for a name in the list */ void search(void){ char name[40];struct address *info;printf(“Enter name to find:”);gets(name);info = find(name);if(!info)

printf(“Not Foundn”);else display(info);}

C语言程序设计论文

/* Save the file to disk */ void save(void){ struct address *info;FILE *fp;fp = fopen(“mlist”,“wb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} printf(“nSaving Filen”);info = start;while(info){

fwrite(info,sizeof(struct address),1,fp);

info = info->next;/* get next address */ } fclose(fp);} /*

Load the address file.*/ void load(){ struct address *info;FILE *fp;fp=fopen(“mlist”,“rb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} /* free any previously allocated memory */ while(start){

info=start->next;

free(info);

start=info;} /*

reset top and bottom pointers

*/ start=last=NULL;printf(“nLoading Filen”);while(!feof(fp)){

info=(struct address *)malloc(sizeof(struct address));

C语言程序设计论文

} if(!info){

printf(“Out of Memory”);

return;} if(1!=fread(info,sizeof(struct address),1,fp))break;dls_store(info,&start,&last);}

fclose(fp);运用结果及分析

图1-1 运行结果并且给出选择

图1-2输入个人信息

C语言程序设计论文

图1-3删除个人信息

1-4列出个人信息

C语言程序设计论文 1-5查找个人信息

图1-6保存个人信息

C语言程序设计论文

设计心得

通过进行C语言程序设计,我更加懂得C语言设计不仅仅需要逻辑思维地紧密,更加需要细心,通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。读了那么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!

刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我很高兴,完成了这个程序。

虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。

做完这个课程设计,我的自信一下子提高了,我也会写程序了;尽管对于有些人这种程序会很简单,可对我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!

程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。

一个多礼拜的挣扎,绞尽脑汁终于带着麻木的手指和大脑脱出那堆“泥潭”。现在的心情是如鱼得水,干涩的眼睛前方是万里晴空。终于,所有的努力即将化成了一个个铅字,打印机“滋滋”的声音仿佛已经宛如天籁般悦耳地在耳畔响起。此时此刻,真想把一切抛上天空。高呼:“出来了!我的成果即将出来了!”,心里也在默默的感慨着:“有志者,事竟成,破釜沉舟,百二秦关终归楚。苦心人,天不负,卧薪尝胆,三千越甲可吞吴。”

当然这次程序设计也让我看到了自己基础的薄弱。古人有诗云:“路漫漫其修远兮,吾将上下而求索”。从今天起我将不断继续求索,学习之路也好,人生之路也罢。

总之我受益匪浅。

C语言程序设计论文

参考文献

《C程序设计》„„谭浩强 著„„清华大学出版社„2005.7 《C语言程序设计》„„(美)郝伯特.希尔特 著 „„电子工业出版社

下载C语言程序设计教学分析与探索论文word格式文档
下载C语言程序设计教学分析与探索论文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言程序设计教学安排

    C语言程序设计教学安排 本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C语言的基本内容及程序设计的基本方法与编程技巧,了解进行科学计算的......

    C语言程序设计教学的实践与心得

    《C语言程序设计》教学的实践与心得 【摘 要】 在21世纪的大环境下,各种实践性学科都将面临着强大的冲击,而作为计算机软件开发等的入门语言,更显得尤为关注。强调实验的重要性,......

    C语言程序设计

    1. Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。 Input 无 Output 请输出: Hello Da_min, He......

    C 语言程序设计

    《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业......

    C语言程序设计教学研究论文[共5篇]

    1以问题为导向的《C语言程序设计》的教学设计(一《)C语言程序设计》的教学目标社会对于人才的需要,并不是要求他们只要学会理论知识就可以,各个单位对人才的要求更看重于他们的......

    C语言与程序设计实验报告六

    《C语言及程序设计》实验报告 实验六 选择、循环结构程序设计 实验目的: 进一步对选择结构和循环结构进行程序设计。 实验内容: 1、打印输出如下图所示的图形: ABBBCCCCC DDDDD......

    《语言程序设计》学习总结与心得

    《汇编语言程序设计》学习总结与心得 其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这......

    C语言程序设计课程教学设计

    C语言程序设计课程教学设计 苏小红 一 课程内容体系 : 基本描述 课程名称: C 语言程序设计 英文译名 : C PROGRAMMING LANGUAGES 总 学 时: 50 ; 讲课学时: 30 ; 实验学时 : 0......