时间:2023-03-08 14:53:06
序论:好文章的创作是一个不断探索和完善的过程,我们为您推荐十篇计算机程序设计语言范例,希望它们能助您一臂之力,提升您的阅读品质,带来更深刻的阅读感受。
中图分类号:G642
文献标识码:A
1“计算机程序设计语言”教学现状
“计算机程序设计语言”是普通高校计算机教育的基本专业课程,在计算机领域的各个专业的课程体系中都处于核心的地位。这门课程不仅可使学生获得基本的程序设计能力及锻炼学生的逻辑思维能力,它还极大地影响着学生对计算机领域的兴趣和理解,对引导和培养学生在计算机工程及理论方面的研究兴趣起着先导性和基础性的作用。因此,“计算机程序设计语言”的教学质量成为影响大学本科计算机教学质量和效果的一个关键的因素。
影响课程教学质量的主要三个因素为教学内容、教学方法和实验设计。当前,大部分教师受传统教学模式的影响,教学的重点都放在程序语言的基本语法的讲授,课堂所设计的程序实例大部分围绕语法规则的演示和说明,这种模式同样也影响到实验环节的设计。这种就事论事,形而上学的教学模式具有许多明显的弊端,主要体现在以下几方面:
(1) 不利于培养学生的学习兴趣
许多从事程序设计语言教学的教师(包括笔者)都有这样的感受:每讲授一门新的程序设计语言课,初期学生都抱着积极,对获取知识的极大热情投入课程的学习,但随着教学过程的深入,这种热情往往不能持久。导致这种局面的原因固然有教师本身的教学方法和教学手段的缺陷,但根本原因还是教学内容的设置不科学。在单纯以讲授语法规则这种教学模式下,学生难以保持长久的学习兴趣和动力。
(2) 不利于学生建立综合化,系统化的知识体系
程序设计语言是表达设计者思想和计算机计算逻辑的符号系统,具有多层面、多视角的内涵。要把学生培养为具有高素质的程序设计人员,仅仅熟悉没有精神的符号及符号规则远远不够,这需要学生具备设计高质量程序的综合化的知识体系,而当前的程序设计语言的教学现状并不能满足这种需求。
(3) 不利于培养学生解决实际问题的综合能力及创新意识和思想
当前,素质教育成为各级教育系统,包括高等院校所关注的热点,知识高等院校所关注的“素质”内涵不同。笔者认为高校大学毕业生应具备的素质包括:综合化、系统化的专业知识体系;应有已有的知识体系解决实际问题的能力;具有创新的意识和思想。总体而言,大部分教师对程序设计语言课程所采取的教学不利于这种素质的培养。
针对这种现状,结合我国高等教育发展的现状,本文提出程序设计语言的层次化教学目标的思想,并以面向对象程序语言为例,论述在层次化教学目标驱动下的课程设计。
2层次化的教学目标
各项教学活动有效展开的基本条件是合理的教学目标的确定,但单一的教学目标并不能适用当前中国复杂的高等教育现状。社会经济的快速发展产生了明显的多类型、层次化的人才需求,这种趋势在各类软件公司里表现得尤其明显。为了适用这种人才需求的转变,高等教育领域在这些年相应地发生了巨大的变化,各种类型、各种不同层次的教育机构大量出现,改变了过去高等教育机构单纯负责培养具有从事复杂脑力劳动的高级专业人才的状况。这些变化最终体现为教师的工作,体现为教师针对不同的教学对象所制定的教学目标体系。
当前,由于社会信息化的发展,各类计算机类课程已经渗透到各个学科,例如笔者所在的苏州大学,几乎所有的院系都设置了信息技术类的有关课程,大约超过一半的院系设置了“计算机程序设计语言”的课程,因此“计算机语言设计课程”的教学质量是总体教学质量评估的重要组成部分。笔者多年来一直在苏州大学承担程序设计语言的课程,包括一类本科计算机专业基础课程、二类本科专业基础课和公共基础课程。大量的教学实践表明单一的教学目标不能适用多样化的教学对象、多样化的人才需求和程序设计语言知识逻辑在广度和深度方面所具有的层次化的特点。下面将论述程序设计语言课程的层次化的教学目标体系及各层的具体内涵。
2.1低级目标
该目标要求掌握标准化的程序语言语法体系,以学生掌握基本的标准语法体系为基本要求,并能初步应用语言开发较小型的简单应用程序,具备初步的程序设计能力。低级目标要使得学生对所学知识“知其然”,课程教学内容主要围绕标准的语法规则,课堂和实验环节所选定的程序实例大多围绕着验证和演示语法规则及语法规则之间的联系进行设计。在以低级目标驱动的教学中,因为重在基本知识的传授,因此核心教学内容的选择是第一位的要素。当然每门程序设计语言课程都有其固有的核心内容,例如,在C++语言中,核心的教学内容为:面向对象的概念、继承、多态、模板及异常等,即使如此,还需要根据教学对象,对教学内容和授课方式进行选择和取舍。总的原则是围绕重点概念和知识采取“精讲多练”和“突出重点”的方式进行教学。
2.2中级目标
中级目标则要要求学生围绕目标程序设计语言,具备系统化的程序设计方法和技巧,逐渐使学生“知其所以然”。该层目标不仅要让学生掌握“语法”,还要让学生掌握“语义”;不仅让学生掌握语言本身,还要让学生扩展思维,了解、理解更多的外延的知识;不仅要让学生掌握基本的程序设计方法,要让学生初步掌握系统化的程序设计方法和建立起程序质量的观点。程序设计语言的外延知识涉及计算机专业许多重要的核心课程,包括编译原理、算法分析与设计、计算机组成与结构、离散数学、数据结构和软件工程等。当然,不可能指望通过一门课程的学习,使学生有效地、完整地掌握所有这些知识,只能使与实现中级目标有紧密联系的知识能渗入到重点的知识讲授和实验的安排中。
2.3高级目标
不管是初级目标的“知其然”,还是中级目标的“知其所以然”,都是知识学习,而高级目标阶段的重点是运用知识,体验知识,要求学生具备利用目标程序设计语言解决一定复杂度和规模的实际问题的能力,建立抽象的程序设计思想、方法和质量的观点。高级目标的教学内容的重点在如何在所讲授的语言框架里解决一定规模的应用问题,并从具体的实现里提炼出抽象的设计思想,分析实现的质量,总结好的实现方法和设计思想。
确立了教学目标,下一步的焦点为围绕实现具体的教学目标,制定各教学环节的具体的教学内容和教学手段,主要包括课堂教学环节和上机实践环节。结合笔者的教学实践,下一节将围绕这方面的内容展开论述。
3层次化的目标引导的课程设计
C++语言因其强大的功能及广泛的实用性而日益成为当前高校理工类专业程序设计的主流教学语言,因此本节将以C++为例,讨论层次化教学目标思想如何在教学实践中得到贯彻。C++程序设计语言的教学涉及课堂教学和实践教学两个环节,下面将就这两方面展开论述。
3.1课堂教学
确定目标课程的教学内容是开展有效的课堂教学,取得既定的教学目标的前提和基本要求。针对本文所提出的层次化的教学目标体系的基本内涵,C++程序语言的课堂教学内容在深度和广度上也应该展现出层次化,递进性的特点。
在低级目标中,掌握本程序语言的基本语法体系是最重要的目标,在教学内容的设计上,应确定语言的最核心最重要的语法现象。过程化程序设计向对象化程序设计是C++语言的最重要的特征,因此“对象”和“类”,以及由此产生的“继承”,“封装”,“多态”和“异常” 成为最核心的教学内容。在教学时应集中注意力于这些类对象的关键个性技术,围绕关键技术“精讲多练”,使学生深刻理解面向对象C++的这些关键技术;要有重点,不能面面俱到,有所失,才能有所得。
低级目标是为了使学生掌握知识,使其“知其然”,那么中级目标则要逐渐使受教育者“知其所以然”,教学的重点从对语法的训练转向对语义的理解,包括静态结构语义和程序执行语义。在C++的教学中,以C++对象模型作为教学内容的重点,通过从静态的程序代码结构和运行的程序状态两方面展开课堂教学,这样在知识语言的“所以然”的基础上,学生不仅知道什么是“多态”,并且知识“多态”是怎么实现的;什么是运行时类型检查(RTTI),运行时类型检查能提供什么程序设计策略等;许多的外延知识能沿课堂展开,例如编译原理、算法分析与设计等。由Stanley B. Lippman所著的《Inside The C++ Object Model》为我们设计课程材料提供了方向性的指导。
低级目标和中级目标都是针对知识的学习,而高级目标则针对知识运用,提高运用知识进行设计的能力。此层次涉及知识的学习、理解和综合运用,要在有限的时间内,实现教学目标,在课程教学内容的选取和设计及课时的安排上,具有一定的难度,对教者和学者都具有一定的挑战性。“设计模式”可以成为本层次的基本或延展性的教学内容。设计模式虽然不与具体的设计语言有着必然的、密切的联系,但事实上各种技术性、或纯教学性的书籍中,都把面向对象语言作为实现各种设计思想的不二选择。通过设计模式内容的讲授,可以使得学生对面向对象的基础知识有更深刻的理解,同时增强灵活运用所学知识的能力,体验面向对象程序设计方法学所带来的设计上的“美”,激发学生的创造力。
当然,上面针对课堂教学内容的论述仅仅进行了基本的界定和论述,需要通过下面几方面来贯彻实施,以达到各个层次的教学目标:
(1) 通过教者的努力,设计出丰富的、具体的课程素材;
(2) 针对不同的教学内容,设计多样化的教学手段和方法;
(3) 针对不同的教学内容布置合理的作业和考核方法。
3.2实践教学
在程序设计语言的教学中,课堂教学和上机实践教学是并重的环节,不可偏废,一起决定着教学的质量和教学目标的取得。如何设计安排上机环节通过大量的教学实践,已经总结出了大量的行之有效的方法。下文就实验内容及实验的组织形式进行一些必要的、有益的讨论。
结合课堂内容,以往的实践环节主要由学生编制一些小的程序,进行语法现象的演示及验证。但笔者通过大量的教学实践发现:这种普遍采用的,且行之有效的方法,对于学生巩固知识,提高调试程序的能力和技巧具有显著的效果。但随着教学的深入,这种方法也显示出种种的弊端,例如:学生专著于知识点,必然缺乏对知识的整体把握;学生容不易形成良好的编程习惯等。针对这种情况,笔者在实践的环节中,增加“读程序”的分量。教师提供一些高质量的程序范例让学生进行阅读、理解,并对范例的程序风格和设计方法进行总结比较,以提高学者的综合能力,尤其是到了后期,所提供的范例更具有综合性、全面性和示范性,能极大地提高学生掌握知识的深度和广度,激发他们的学习热情。
在实践人员的组织形式上,一般在程序设计语言的教学中,都是学生独立进行的。在教学实践中,也可引进一些软件开发中的方法,比如采用小组制的形式,根据实践内容的不同,小组或大或小。即使是在低层目标为导向的教学中,也可采用小组的方法进行实践环节的教学,不过此时小组人数不宜过多,最佳数目为二人。采用这样的方法,有以下的益处:
(1) 便于学生进行交流,以达到取长补短的目的;
(2) 提高教学效率,以较少教学活动取得同样甚至更好的效果;
(3) 培养团队合作精神等。
在以中级和高级目标为导向的教学中,实践环节应从语法演示和验证为重点转变为以知识的理解和知识的运用为重点,因此除了结合教学内容设计相应的实践内容外,最显著的特点是增加综合性的项目开发环节,以达到知识的综合掌握和运用。
当前以语法的演示和验证目的实践环节的设计具有大量的教学实践可资借鉴和学习,但针对更高两层教学目标的实践环节则缺乏有效的素材和经验可以利用,需要通过进一步的教学实践活动加以积累和总结。当前的一些做法是借用开发一个具有一定规模的项目来弥补纯语法的演示和验证实践方法的不足。
4结论
本文针对当前在程序设计语言的教学中存在的问题,提出了多层次教学目标的观念,并介绍了各层次目标的具体内容和以此目标为导向的主要的教学环节的设计。各个层次的教学内容和教学方法手段并不是彼此割裂的,如何针对各种不同的教学对象进行合理的课程设计,以提高教学质量有待于进一步的大量的教学实践活动。下一步最主要的工作总结探索各种教学资源以及相应的考核方法,尤其是用于中级目标和高级目标为导向的教学活动。
参考文献:
[1] 吴乃陵. 面向对象C++程序设计教学改革[J]. 电气电子教学学报,2003,25(2):9-11.
[2] 徐宏,聂影,黄征华,等. 计算机程序设计语言的教学探索[J]. 教学研究,2004(2):89-93.
[3] 沈军. 程序设计语言类课程的教学思路研究[J]. 高等工程教育研究,2001(1):80-82.
[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.
[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.
Research on Teaching of Programming Language
CHEN Dong-huo,YAO Wang-shu
Teaching Main Point Analysis of Computer Programming Language Courses
Li Yongliang
(Shandong Transport Vocational College,Weifang261206,China)
Abstract:In computer science and computer non-computer major teaching,almost all schools set up high-level language programming course.Programming language teaching although it is difficult,but very meaningful,it is beneficial to develop creative thinking,help students develop problem-solving through computer awareness and ways.
Keywords:Programming language;Programming skills;Analysis
main points
在教学中与一些应用软件或工具软件相比,编程课程的教学具有较大的灵活性。很多学生的学习能力较差,课后不肯花时间,久而久之,导致听不懂,给计算机编程语言课的教学带来一定的难度。采用何种教学模式进行教学就成为编程
语言教学的一个关键。
一、引言
根据以往的教学经验和通过与学生、同事之间的交流,得知部分学生反映上课时都能听懂讲解,可在涉及到具体的编程及上机操作时,往往会出现没有思路、无从下手或错误百出,不会调试程序等各种情况,究其原因,在教学方面可能存在以下2个问题。
(一)过于注重对语句语法的讲解,缺乏以算法为核心的编程题教学。教师钟情于举一反三地对使用语句、语法的深入教学,而不是有机地结合算法思想进行教学,贴近生活并引起学生兴趣的编程题讲得很少。由于教学不是站在如何应用计算机工具编程解决实际问题或实际项目的角度,就没有把逻辑与编程解题思路放在主体地位,也就没有很好讲解如何分析问题和解决问题。结果导致学生程序设计能力、上机解题能力训练不够,更谈不上引导学生进行课题研究和科研探索。
(二)学生厌倦传统的课堂教学,缺乏师生之间的沟通交流学生对于先讲后编、先听后编这一传统的课堂教学方式有厌倦心理。课堂成了教师的“一言堂”,教与学不能衔接起来。有时教师为了赶进度,讲授法成了唯一的教学方法,师生之间缺乏足够的交流和沟通,学生没有有效、实用的学习辅助途径,也间接影响着学生的学习兴趣和学习效果。
二、程序设计能力认识
程序是软件的本体,程序设计(Programming)是指设计、编制、调试程序的方法和过程。它应排除软件开发中的工程与管理因素,主要指软件开发过程中的技术因素,尤其是计算机技术因素。
根据调查分析,合格程序员必须具有:1.扎实的专业基础知识;2.很强的综合分析和解决问题的能力;3.熟练的编程调试能力;4.创新能力;5.团队合作能力;6.持续的自学能力;7.强烈的好奇心;8.较高的英语水平和软件工程的实践能力等。
应看到,程序设计能力,并非完全等价于程序员所应具备的专业素质,它还包括其他一些内容,如:1.理解问题,根据已知条件,找出求解该问题的数学方法或建立相应的数学模型;2.归纳程序的基本功能;3.设计数据结构和算法;4.用程序设计语言实现算法描述;5.编译与调试;6.测试程序,保证程序正常运行。
综上所述,可以将程序设计能力定义为:依据程序设计思想与观念,应用程序设计语言,采用相应程序开发技术和环境,进行程序设计并达到预计结果的程度。
三、要点分析
基于对程序设计教学思想、程序设计能力的认识,为使学生充分掌握程序设计的思想和方法,有效实现程序设计课程教学目标,我认为程序设计教学还应注意并强调以下几个基本的教学任务和要求。
(一)应着重培养学生的结构化程序设计的基本观念。结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构,它是程序设计的基本原理之一。贯彻课程始终、通过具体实例潜移默化地培养这一思想,比在软件工程中空洞的说教,更容易被学生理解和接收。
(二)为了使初学者能尽快地掌握计算机知识,进入计算机的应用领域,在课程讲授过程中,要特别注意培养学生的学习兴趣。学习兴趣就是学生在心理上对学习活动产生爱好、追求和向往的倾向,是推动学生积极主动学习的直接动力。学习兴趣直接关系到教学效果的好坏。为提高学生的学习兴趣,笔者归纳出6个办法:1.通过演示程序突出程序语言的实用性;2.通过简单的编程练习突出语言的易学性;3.运用恰当的类比使复杂问题形象化、简单化;4.做到一题多解;5.要善于举一反三;6.通过解决实际问题使学生乐学。
中图分类号:TP311.138-4 文献标识码:A文章编号:1007-9599(2012)05-0000-02
在我国,高职教育是高等教育中的重要组成部分,占据着相当大的比例,在高职院校的计算机专业课程中,程序设计语言教学是最为重要的教学内容之一,程序设计语言的掌握情况直接关系着计算机相关内容的后续学习情况,对学生毕业后从事计算机行业也是很重要的。
一、计算机程序设计概述
计算机程序设计是指运用某种计算机的语言,对某一特定功能程序进行编制完成的过程,它涉及到开发、描述以及有效实现求解的相关活动,是运用计算机来实现自动化的很重要手段,计算机这门学科主要是研究信息描述及变换算法的过程,包括计算机的理论、设计、分析、效率、实现及应用,可以说与算法相关的基本问题都可以围绕着什么可以被自动化,怎么自动化,而这个实现自动化的过程即是计算机的程序设计过程。程序设计语言是人类进行计算机的最基本工具,更是学习计算机基础应用知识最基本的课程,通过计算机程序设计语言的学习,学生能够掌握与之相关的基本概念、方法和基本知识,从而形成良好的程序设计风格,得到基本的程序设计练习,能够编写简单的程序解决实际的问题,在计算机程序设计语言教学中,需要学生具有阅读判断、抽象表达、工具利用、分析思考及综合创造等技能,是抽象、理论、设计及应用等综合能力的培养过程,因此,作为专门输送高技能的高等职业院校来说,程序设计语言教学是计算机教学的重要内容,对培养计算机专业人才是非常重要的。
二、高职计算机程序设计语言教学现状
在高职计算机教学中,我们经常可以看到这样的情况,很多学生在进行计算机操作的课程时,他们的接受能力是很强的,但是在进行程序设计语言教学时,很多学生就产生了胆怯的心理,不能像学习其他学科一样,进行充分地学习了,直到离开学校时,在这门课程上都还留有遗憾的,对于高职院校的计算机学生来说,他们具有一定的计算机理论基础,又有较强的计算机实际操作能力,基本上是一毕业就能够找到相应的工作,具有着明显的竞争优势,但这需要高职学生既要有硬件技术,又具有程序设计语言能力,这也是计算机专业学习者所必须要有的技术素质,硬件技术是计算机掌握的基础,而程序设计语言的掌握能够对硬件进行充分的利用,它们之间是相互关联,不可缺少的,哪一方面的缺失都会造成计算机学科学习的不完善,在高职学生学习计算机程序设计语言时,已经学习了多年的英语,以及高等数学和计算机基础知识的学习,他们已经具备了学习计算机程序设计语言的基本条件,要想让高职学生克服心理问题,发挥自身的优势,有效地掌握这门计算机程序设计语言课程,对于这门课程教师来说,是一个最为关键的问题,需要教师结合高职学生及这门课程的特点进行不断地探索与思考。
三、对高职计算机程序设计语言教学方法的探索与思考
(一)任务驱动教学法
任务驱动教学是探究教学模式中的一种教学方法,要是通过学生的角度来看,它也是一种学习方法,这种教学方法又可称为单刀直入法,其特征是:在教学中,教师的教和学生的学都在围绕着一个共同的目标,是根据几项任务来完成的,这种教学方法能够培养学生的独立分析问题的能力、自学的能力及解决问题的能力,是非常适合计算机程序设计语言教学的。像教师在讲授VB语言中的简单计算器的教学时,教师就可以单刀直入地给学生布置任务了,设计一个和WindowsXP附件中一样的简单计算器,可以围绕着这个简单的计算器再给学生进行分配任务,如计算器的界面都包括哪些控件,每个控件的功能,学生通过仔细的分析,很快就可以设计出相关的界面,并且知道每个控件的功能,之后教师还可以提出新的任务,带小数点数据的输入形式,又是怎么进行控制的,学生经过思考之后,可以知道通过布尔型小数点的设置标志flag对数据输入的小数点进行保证,这样通过几次任务的布置,学生就能够设计出符合相关要求的计算器了。这种方法减少高职学生的自卑心理和为难害怕的情绪,因为教师通过任务教学法,可以将计算机程序设计语言中的复杂任务分解为简单子任务,可以让学生完成每个简单子任务,再组合为一个整体,从而让学生克服自卑的心理,产生一种成就感。需要注意的问题是,首先要明确计算机程序设计语言教学中,每个阶段的任务,对每个问题要精心的设计并创造相应的情景,爱因斯坦就曾说过,提出问题要比解决问题重要得多了。教师要明确地向学生提出这个课程,这个阶段,单元及这个课时的基本学习任务,要让学生带着任务去学习和思考,在上机实践前,教师要让学生自己去查阅资料及研究,并在上机的过程中及时地给予帮助与指导,这样才能起到事半功倍的效果。其次是要进行多种教学方法的教学,驱动任务教学法并不是指仅能运用这种教学方法,而是根据这种教学方法的优点,结合启发式、双向式、多媒体等形式进行教学,不要死板的固定于一种教学方法上,然后是在教学过程中要注意学生自学能力的培养。
(二)案例教学法
案例教学最早是被应用在医学、法律及工商管理的教学领域中,是实践教学的重要教学方法,这种教学法在我国教育领域应用的要稍晚些,但现在这种教学方法已被广泛的应用到教学中,对于计算机程序设计语言教学是很实用的一种教学方法,在教学中,教师可以通过小型应用程序的描述,引导学生对这个程序进行讨论,并在这个讨论中掌握计算机程序设计的语法知识、编程思想及编程技巧的教学方法,这种教学方法可以使教师和学生拥有更多的交流空间,充分地体现教学中的要踢人为本的教学。像在教Java程序设计语言教学中的GUI的程序设计时,由于Java前期的学习中是不带界面的基本语言知识的学习,在进行GUI教学时,选择带有界面的应用程序是很重要的,选择适当的案例进行教学,可以让学生在应用程序中,既可以了解到基本控件和高级控件的编程、循环及分支等,还实现排序算法,这样既学习了GUI编程又重新复习了Java的语法知识,从而起到了良好的教学效果。这种教学方法的优点是通过案例对计算机程序进行描述,在这中间会遇到一个或多个的问题,而同时它又包含了基本的解决方法,能够有效的培养学生的实际解决问题的能力和创造的能力,不仅可以习得固定的原理、基本语法知识,还能掌握获得知识的方法,实际上这是种做中学的教学方法。这种教学方法中所要注意的是,在进行案例教学时,要考虑案例的现实性、高职学生的自身特点以及他们已掌握知识的情况等,还要注意案例的熟悉度、理解及掌握程度,同时还要考虑到案例所展现的未来性,这对于高职计算机学生的今后学习具有很大的指导意义。
总结:
在高职计算机程序设计语言教学中,教师要结合学生的实际情况,运用多种教学方法进行教学,没有必要固定在一种教学方法上,并不是说某种教学方法有很多优点,就仅用一种教学方法进行教学,这是不可取的,而且无论运用哪种教学都要发挥学生的主体性,激发学生学习计算机程序设计语言的兴趣为主。
参考文献:
所谓适当的“任务”,是建立在对学生的了解之上的,让学生通过适当的努力能较好地完成,在完成任务的过程中,学会学习。在职业中学教学中,程序语言设计相对较难,对学生的思维训练也是多方面的,相对于其他学科也有其独特之处。如果采用传统的教学方法,简单地按照从易到难,从简单到复杂的顺序循序渐进地进行教学,学生处在被动的学习状态中,容易感到厌倦。采用任务驱动教学法,有利于培养学生自主学习、合作精神和探究能力,有利于培养学生的信息素养和综合素质。
根据学生的现状,本人把任务设计成几个有一定联系的几个任务。按进度分别提出:请你给学生编写一个加法练习程序;请你给学生编写一个加法练习程序,正确的显示“OK”,错误的显示“wrong”;请你给学生编写一个加法练习程序,每套10道题,每题正确的加10分,错误的不给分,并计算总分等。
当第一个任务提出时,学生都觉得很简单,但无从下手。本人围绕这个问题先开辟“有意义接受学习空间”,进行必要的教学,学生的学习也显得特别认真。
二、运用任务驱动教学法于程序设计语言教学,在形式上是:提出任务师生共同分析完成任务的方法和步骤适当讲解或自学或协作学习完成任务实践交流或归纳。
在程序设计语言教学中,传统的教学形式是:语句格式功能介绍举例解释巩固型独立练习小结评讲上机练习。在这个过程中,学生的学习基本上是被动的。采用任务驱动教学法,在课堂教学中,首先提出一个需要完成的具体任务,与学生共同分析解决该问题所需的知识,方法和步骤,有时先开辟有意义接受学习空间,围绕具体任务进行适量的概念教学和举例讲解,或开辟自主学习空间以及协作学习空间,学生来完成任务,可以独立完成,也可以合作完成。目的是的通过完成任务,掌握学习内容,学会学习,培养综合能力。在这个过程中,教师参与探索和指导,引导学生掌握教学内容,适时在班级交流,发现新思路,推广新思路,鼓励创新。教师进行比较、评讲、归纳,或由计算机执行,学生从中得出结论,引导交流,共同进步。如:在读语句和写语句教学时,在教学前先提出一个任务,即:“请你给学生编写一个加法练习程序”。围绕这个任务,讨论分析需要解决的问题,程序需要提供的功能,需要通过那些途径来实现:出题显示要用一个写语句;出题要一个随机函数;回答问题要用一个读语句;答案显示也要一个写语句。
然后介绍读语句和写语句的格式及其功能、介绍随机函数。学生独立阅读课本上的例题;学生独立或合作完成任务。教师或查看学生在电脑上的执行情况,或参与一些学生的讨论或探讨,发现问题,个别问题的个别回答,带有普遍性问题的在全班回答或讲解。
就在完成本任务的过程中,有的同学提出了正误判断问题,一次练习做多个题目等问题。由学生导引出了后续问题。
采用任务驱动教学法进行教学,教师的教和学生的学都是围绕如何完成一个具体的任务进行的。教师教学思路清晰,学生学习目的明确,学习变成了学生的主动行为,在用的需求下学,学以致用,更容易掌握学习内容。比如在前面提到的条件语句的教学,按任务驱动教学法,不是孤立地介绍有关概念,而是将同学们所关心的正误判别问题加以解决。这样教学,提高学生的主动参与意识。
三、运用任务驱动教学法于程序设计语言教学,在教学内涵上是符合探究式教学模式的。
从学习者的角度说,任务驱动教学法是一种学习方法,适用于学习技能型知识,尤其适用于学习信息技术应用方面的知识和技能,也能适合程序设计语言的学习。
任务驱动教学法使学习目标十分明确。在某个学习阶段,紧紧围绕这一既定的目标,学习和运用相关的知识和方法。一个“任务”完成了,一个目标达到了,会产生新的任务,新的目标。例如,在上述第一个任务进行时,就有学生提出了新的问题。随着一个个任务的完成,初学者将逐步消除对编程的畏惧,还不断地体会到成功的喜悦。任务驱动教学法,符合计算机系统的层次性和实用性,提供了由表及里、逐层深入、逐步求精的学习途径,便于学生由浅入深、循序渐进地学好有关的知识和技能;提供了三个学习空间,也鼓励了学生的学习主动性。而且,采用这种方法,伴随着学生的是一个跟着一个的成就感。
从教师的角度说,任务驱动教学法是一种建立在建构主义教学理论基础上的教学方法,符合既发挥教师的主导作用,又体现学生的认知主体作用,有利于培养学生的自学能力和相对独立地分析问题、解决问题的能力,以及探究精神、合作精神和团队精神。在程序设计语言教学中可以采用这种教学模式。
《c语言程序设计》是计算机相关专业及其他理工科专业的基础课,它是一门实践性很强的计算机基础课程。教学目标是通过课程的学习,学生不仅要掌握C语言程序设计的语言知识、编程技术和基本算法,更重要的是在实践中逐步掌握程序设计的思想和方法,培养学生问题求解和程序语言的应用能力,为后续专业课程的学习打好基础。
由上述的教学目标我们知道C语言程序设计这门课程中教师不仅讲授C语言语法知识,还要帮助学生掌握程序设计的能力。但目前c语言程序设计课程教学中只注重知识讲解,而忽略了程序设计思维的培养,导致学生只会看不会写。鉴于此,本文提出基于“计算思维”培养程序设计能力的教学方法,并将其运用于《c语言程序设计》课程教学实践。
1C语言教学存在的问题
对于程序设计的初学者,编写程序包含至少两个方面的要素:1)程序设计语言的语法知识;2)计算思维,即算法,也就是用计算机的思维把客观世界的问题分解成计算机所能处理的步骤,并描述出来。
目前大学《c语言程序设计》教学普遍存在的关键问题是:重语法,轻算法,注重传授知识,忽略程序设计思维培养。大多数教师强调C语言语法知识的讲授,造成学生死记硬背C语言的语法知识,却不会运用,导致理论与实践相分离,使学生误以为C语言是枯燥的理论课程,从而产生厌烦情绪,失去C语言课程学习的兴趣和动力;部分教师并没有在课堂上带领学生一起完成程序从无到有的编写过程,学生不能形成程序设计思维,导致学生产生这样的疑问:“程序为什么要这样写?”,大部分学生处于“看得懂别人写的程序,但自己不会写程序”的状态。
著名国内计算机教育专家谭浩强教授指出算法是程序的灵魂,在他所编写的《c程序设计》一书中,“算法”这一章里用了几种方法阐述如何描述算法,这其实包含了把客观世界中问题的解决方法转换成为用计算机思维解决问题这一重要思想!笔者与同行交流讨论时发现,竟然有部分老师跳过“算法”这一章节,这是典型的重语法,轻算法,只注重传授知识,而忽略程序设计思维培养。
2以计算思维培养程序设计能力教学法的运用
据笔者多年从事计算机程序设计语言教学工作经验及教学过程中所做的调查了解到这样一种情况:许多学生面对某个编程题,不知道如何下手,并非学生不会用所学的数理化知识解决该问题,只是不知道如何用计算机编程来解决问题。这种情况的根本原因就是学生不知道如何把解决该问题的方法转换成计算机思维表示出来。进一步说就是没有形成计算思维。
计算思维的含义是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。其本质内容体现了抽象、约简、规划、关注点分离、递归、优化、分解等思维特征-引。显然如果学生不明白计算思维,不理解计算机是如何解决问题的,那么他一定不会编写程序。因此想要培养学生程序设计能力那么必须使学生养成计算思维,使用计算思维去把客观问题的解决方法转换成计算机所能处理的步骤(即算法)描述出来,最后再将算法转换成程序语言代码,即编写出程序。
2.1通过案例驱动逐步建立计算思维
对于程序设计初学者,在开始时先通过案例让学生逐步了解计算思维,让学生知道计算机是怎样来解决问题的,更具体的来说是让学生知道计算机是通过什么样基本步骤的组合或者重复来解决问题的,从而学生知道要让计算机来解决问题,就要把问题分解成计算机所能处理的基本步骤,计算机通过重复执行这些基本步骤即可解决问题。通过反复的练习与加强让学生逐步建立计算思维,掌握分析问题和用计算机的思维方式来解决问题的能力。
下面通过案例w现计算思维。
高校的C族语言教学总是按照先学C语言,再学C++的顺序进行,这种学习顺序随着C++标准的不断升级改革后变得越来越不适用。早期的C++属于多面性语言,即可以像C一样进行模块化的面向过程的编程设计,也可以像Java一样进行抽象的面向对象程序设计。那时的教学者考虑的是学生应当从较为便于理解的面向过程的编程思路入门学习C语言编程,然后在熟练了面向过程的编程方式后再从C语言延伸到C++,转而学习面向对象的程序设计。可是随着面向对象的程序设计在应用市场上占领了绝对的主导地位后,再让学生从面向过程着手就等于是浪费学习时间。加上C++和C两门语言的初级语法思想是完全一致的,开设两门课程浪费了学时,也耽误后续更重要的核心课程的学习。
1程序设计语言C与C++的比较
1.1C与C++的共性。一般简要的介绍是把C++当作C的加强版,这种认知当然是错误的,C++语言的设计者在设计之初为了保障自家语言会受到开发者的关注,所以兼容了的C的语法,这就自然使得C++可以使用C的编程方式进行程序设计,所以也导致了很多人对这两种语言的关系产生了错误的认知。同时由于C语言本身设定上的优越性,所以C++在进行自我定义的时候也沿用了C语言很多优良的性质。基础数据结构一致,C与C++的基础数据类型都是以变量和常量作为基本属性划分,类型上有字符型、整型、长整型、单精度浮点型和双精度浮点型,不过C++额外增设了布尔型。复合型数据结构上也都同时具有数组、多维数组、结构体、枚举类型和共同体,但是C++增设了字符串类型以替代C语言中的字符数组,功能上更加强大,也更加便捷。在语法方面,声明、赋值、循环、选择的结构和实现都是一致的,并且C++虽然提倡使用类和对象的概念去设计程序结构,可也同样支持函数体结构的程序设计结构。并且C语言中函数的赋值都是间接调用,在使用C语言函数时总是会在指针上出现各种纰漏,但是C++的函数体可以使用引用参数,这就使得C++的函数体比之C的更加好用。总的说来就是,C++标准下用户可以完全使用C语法进行编程而不会出现任何BUG,同时C++自身的优越设定和标准使得其设计能力比C要强大数倍,是目前市场上大型程序开发的首选语言。
1.2C与C++的不同。上一节介绍了C++和C的基础语法上的区别,这些区别都是C++的作者在C的基础之上修订而来的结果,是为了让C++标准下得面向过程的程序设计比之单纯的C更加便捷方便。但是C++的诞生伊始,就是一门向上使用面对对象的程序设计思想的高级编程语言。它的封装性、继承性、多态性和对象唯一性才是C++成为强大高级语言的重要原因,这些特性都是C语言不可能拥有的。所以C能够实现的程序,C++能够实现并且实现的更为方便,C不能实现的程序,C++同样可以实现。
1.3C++的特色。承接上一节,C++和C之间最大的不同,也是C++自身最值得夸耀的特性,就是面向对象程序设计思想。这种思想使得C++语言设计出来的程序,变成了类和对象的有机结合,这种结合的代码比之面向过程的函数体架构的代码更加易读,共同开发起来容易上手,后续的维护者也不用费更多的脑筋去理解前人的代码含义。而类和对象的设计思路,使得开发者合作时相互之间的工作变的更为独立,双方之间只需要知道对方所写的类实现的功能和包含的数据就行。这种特性我们称之为良好的封装性,开发者之间不需要去知道对方的代码是如何实现,甚至在此之上还可以保证良好的代码健壮性。因为类的引入,更先进的作用域机制也被引入进来,类的书写者往往会将自己类中的数据进行严格的作用域限定,防止其他合作者擅自去修改和使用自己类中的数据。合作者想要知道类中的数据或者使用类中的数据,只能通过类的书写者定义的带有检查机制的方法才行。这样会使得很多人合作开发的大型项目的稳定性和安全性比之用C语言开发时再上一个台阶。同时类的概念中还有一个先进的设定就是继承性,并且由这个继承性还延伸出了接口的概念。有了可以继承的接口和类,那么开发者在对程序进行迭代的瀑布开发流程时,就可以很好的使用自己曾经开发的源代码,或者借用其他项目的源代码,因为只要学会科学的使用继承机制,就不仅仅是节约程序员的代码时间,也减少了程序员在回顾曾经代码时发生的错误和歧义。而与继承机制配合使用的是多态性,曾经C语言中定义的函数,其灵活度非常差,特定的函数只能满足特定程序定义的需求,想要重用曾经的源代码是几乎不可能的事情。我们刚才提到的继承机制使得C++开发者复用源代码成为了一种习惯,但是复用时不可避免的修改问题又摆到了台面上,多态机制顺应而生了。多态机制使得类不仅可以继承其他类,将父类的数据和方法都在本类体中自如的使用,同时还可以用本类中新的定义和代码去覆盖父类中的数据定义和方法。这就让程序员变的更加自由,想用父类的数据和方法时就去继承,但是不想全部使用时就加上多态机制去覆盖。这样代码之间的重复利用率变得十分客观,节约了大量的开发时间和开发成本。
2程序设计语言C与C++开设建议
C++课程的内容应当如下安排:第一部分,教授C++的基础语法,让学生可以编写出在DOS命令行下输入输出的程序,了解编程的基本概念和思想。并且这时应当同时进行C和C++的双向语法教学,为日后学生进入高年级后的方向选择打下基础。此部分使用半个学期最为适宜,并且此时并不灌输学生何为面向对象何为面向过程,而主在让学生使用基础语法进行最基本的编程探索。第二部分,在学生有了基础编程知识后,将数据结构的内容放入课程中去,用半学期的时间教授学生用C++实现的各类常见数据结构。并且结合实际开发项目中的代码作为阅读补充,让学生明白数据结构的知识对程序开发的意义,然后将简化后的小项目作为课堂的主要内容,用实际的代码让学生去理解那些枯燥的数学定理和概念。而且在实现数据结构的过程中,必然会面对一些更为高级的C++语法和概念。总的来说,用大一上的一个学期让学生对于基础编程有了良好的认知和深入,是十分值得和有效的。第三部分,在学生有了数据结构的基础和C++的基本语法掌握后,应当面对一些实际的开发项目和问题。当然实际的问题还是需要老师进行简化,其主要目的是让学生掌握C++的高级特性和实际软件开发的过程与思路,并且想学生传授基础的算法。这一部分较为困难,应当使用一个学期让学生慢慢的掌握和熟悉。第四部分,在学生算是对C++语言和数据结构与算法都有了基础的入门后,再进行课堂教学意义就不大了,应当再大二上学期开设一门课程设计实验课,让学生完成几个难度从小到大的项目,循序渐进的掌握基本的实际开发技巧和思维。
参考文献
[1]罗莉.计算机程序设计的多应用型开发与实现[J].产业与科技论坛,2015(14):54-55.
二、教学模式创新
为了培养面向工程应用的C++程序设计人才,在知识、能力、应用、创新等各方面全面培养大学生,本文提出“双主互动为纲、两个创新、两个学习、两个支持、四个课堂”的教学模式,使得学生能够达到掌握理论知识和具备编程能力的工程应用水平。教学模式创新的基本框架如图1所示。
本课题组的教学模式采用双主互动教学为纲,即基于师生互动的教师主导学习和学生自主学习。两个创新是指对教学内容和教学方法分别进行创新。教学内容创新是指教师对教学内容进行梳理分解,突出重点,并及时将新内容、新科研成果、新概念、新技术等内容补充进来,改善课程知识结构,以适应社会对计算机编程人才的需求。教学方法创新是指采用互动式、全方位的教学方法,进行理论与实践相结合、教学与科研相结合、课内与课外相结合。两个学习是指将学生分成多个小组进行讨论学习、对C++的开发环境进行学习,使得学生面向学以致用的培养环境。两个支持是指教师要采用各种手段和方法对学生的学习进行指导支持,包括面授支持、电话支持、e-mail和QQ等网络支持。四个课堂是指理论教学课堂、上机实践课堂、课程设计课堂和其它课余时间的课堂。
三、采用自然语言启发式教学方法,提高学生理解能力
C++语言是一门计算机程序设计语言。C++语言教材从前到后系统性特别强,前后章节之间环环相扣,联系紧密。由于面向对象的很多新的概念比较抽象,如果教师在教学中仅仅把教材上的语法知识照本宣科地讲给学生听,会导致下面大部分学生听不懂,学生会很容易感到枯燥乏味和厌倦疲劳,从而产生排斥和厌学情绪。这种抵抗情绪一旦从开始就产生,则将影响后续整个学期的教学效果。由于从头到尾都听不懂,老师在课堂上提出的问题学生也无法进行互动,这种灌输式的教学方法效果非常差。而教师要根据课堂实际情况,采用互动式教学方法,培养学生的主动学习能力,才能得到良好的教学效果。
1.第一次课程教学中,明确C++语言课程的重要性
目前C++语言是大多数电子、信息、计算机相关专业的非常重要的程序设计课程,也是这些大学生后续专业课学习、毕业设计、以后上研究生或参加工作进行计算机软件和IT开发的主要编程语言,广泛应用于软件设计和开发中。要让大学生有危机意识,在大学生就业如此严峻的情况下,学好C++语言,能够提高大学生以后在就业竞争中的筹码。
2.讲课过程中,对C++语言中的很多概念,结合自然语言进行讲解
C++语言作为一门计算机语言,它和人类的自然语言相比,既有区别,又有联系。在讲解一些关键概念时,采用一些浅显的自然语言的例子,提高学生的理解能力。本文作者在讲述一些关键概念时,将这些概念和自然语言结合进行循序渐进启发式讲解,激发学生的学习兴趣,起到了非常好的效果。下面举几个例子。
(1)引用是C++语言中第一个新的概念。引用类似于自然语言中的别名或者绰号,是正名的别名,没有正名就没有别名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是别名。正名和别名属于一个变量,共用同一片内存空间。引用主要用作函数的参数传递,形实结合后不会产生临时的变量,节省了内存空间
(2)类和对象是C++语言区别于C语言中普通数据类型和变量的概念。类是具有相同属性和行为的一组对象的集合,它为属于这个类的所有对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类和对象的关系就像模具和铸件的关系一样,类就相当于模具,对象就相当于铸件。一个模具可以生产出成千上万个铸件。
(3)友元是C++语言中另一个新的概念。在数据共享与保护中,友元类似于自然语言中的朋友,但是友元和自然语言中的朋友既有联系又有区别。人类的朋友关系通常是双向的、可以传递的,但是C++中的友元关系是单向的、不能传递的。
3.引导学生合理安排课程的学习时间,培养学生的学习兴趣
教师可以把学生分成若干个小组并布置一些编程作业,培养他们的团队协作意识,并共享小组编程成果,使得他们对自己编制的程序能够运行和产生正确的结果具有自豪感,提高学生的学习兴趣。由每一个小组各自给全班同学讲授和演示自己的算法、编程思路、运行结果,既能够锻炼学生的编程与演讲能力,又能够在课堂中产生良好的互动。
4.讲课过程中尽量做到幽默风趣,灵活运用教学手段
教师在上课时,要做到风趣幽默、声音洪亮、带人真诚、平易近人、知识渊博、通俗易懂,才能产生良好的教学效果。教师要灵活运用多种教学手段,尽量采用多媒体教学,在PPT幻灯片中多做一些动画效果,或者以Flas演示程序的动态运行过程。教师在C++语言教学过程中要根据课堂中学生的反应,随机应变,结合我国传统文化与最新国内外时事,让学生潜移默化地学习一些难以理解的语法,则能达到事半功倍的效果。
四、对一些难以区分的概念采用表格形式进行对比和总结
C++语言是在C语言基础上发展起来的面向对象的高级语言,全面兼容C,但是又增加了很多新的较为复杂的语法知识点。对于一些学生难以理解和掌握的语法知识点,如果教师不帮助学生及时进行总结和举一反三,按照大学生初学的水平很难真正达到掌握和编程应用的水平。因此,教师可以在讲完某些知识点后采用表格的形式进行对比和总结。例如,C++中引用和指针的区别总结表,普通指针、指向常量的指针和常指针三种指针所指向的内容和指针本身能否改变对比总结表,对基类中具有不同访问属性的成员经过不同方式继承后在派生类中的访问权限的比较和总结表,运算符重载时重载为类的成员函数和友元函数、前置、后置自增、自减运算符参数个数总结表。
五、熟悉Visual C++编程环境,具备图形界面编程能力
目前,Visual C++ 6.0是比较经典的开发环境。即使掌握了C++基础知识,仍然难以高效掌握使用Visual C++的编译器。为了培养实用型软件开发人才,教师还应该进行Visual C++编译器的入门教学,培养学生掌握如下知识:
1.能够使用Visual C++开发环境进行界面设计;
2.能够创建简单的基于MFC的应用程序;
3.能够使用类、函数和消息映射机制;
4.能够利用开发环境有效创建对话框、按钮和菜单等资源。
当然,对于Visual C++的学习,一本好的教材也至关重要,现在的书店和图书馆各种Visual C++的学习教材五花八门,不泛互相抄袭、错误百出、误人子弟的教材。如何从这些书籍的海洋中找到合适的入门教材,对于作为初学者的大学生来说有点难为他们。本文作者也买过不少Visual C++学习的书籍,其中不少书就没有任何学习价值,既浪费钱,又浪费时间。作为教师,有责任和义务为学生挑选一本优秀的、很容易入门的教材。本文作者和周围很多从事Visual C++语言开发的朋友们都认为Jon Bates主编的《实用Visual C++ 6.0教程》是一本非常不错的教材。本人在每个学期给学生教学时,都会将这本教材的电子版发给同学们,而且从他们的反馈来说,效果确实不错。
六、理论与实践相结合,提高程序编程与调试能力
理论必须与实践相结合,才能得到验证,否则只是纸上谈兵。作为一门计算机语言,C++程序设计的实践性操作特点决定了上机实践是课程学习中的重要环节。授之以鱼,不如授之以渔。帮助学生编程序或调试程序,不如教会学生编程序或调试程序。因此,在教学中,教师可以从如下几个方面进行考虑:
1.上课时教师提前给同学们将上机编译器环境、各种单步调试、断点调试的方法传授给学生,并布置好上机操作的题目,这样学生在上机前就会有充分的准备,做到有的放矢。
2.针对性地给学生布置一些具有趣味性的程序设计题目,让学生通过查资料、上网和请教老师等多种方式编程调试,培养学生解决问题的能力,让学生感到有成就感,提高学生的学习兴趣。
3.对学生的上机存在的问题进行总结,对于一些普遍存在的问题要在课堂上统一进行讲解。并且也要对对自己的教学方法和教学模式进行实时总结和改进,形成闭环。
按照本文作者研究的教学方法,经过一个学期的理论教学与上机实践学习,在学期期末考试前的一个月对2010级计算机科学与技术专业1班全班52个学生划分为13个小组布置了课程设计项目。每4人一个小组,由每个小组自己推选出1个组长、1个副组长和组员。组长负责课程设计项目的总体实施和分工,副组长协助,组员配合。课程设计的考核是每个小组交一份打印课程设计报告,包括项目题目、小组成员、程序设计结构、流程图、源程序、实验运行结果。每个小组推举一名学生在讲台上进行10分钟的PPT演讲,老师和学生进行5分钟左右的提问。考核成绩是由老师根据课程设计报告、演讲PPT内容、回答问题效果等项目进行打分。经过一个学期的C++理论学习和一个月的课程设计,全部小组都按时递交了课程设计报告和进行了汇报演讲,其中不少学生讲的非常精彩,这对于他们也是一种不可多得的实战锻炼。学生普遍反映通过理论与实践结合的学习开阔了视野,提高了工程应用能力,培养了团队协作能力,增强了学习信心,达到了前所未有的良好效果。
七、结论
本文作者根据多年来的教学体会,提出将满堂灌式的教学方法转变为以学生为主体、以活跃式课堂为形式、以课程实际相结合的多模式创新教学方法,真正实现教师为主导、学生为主体的互动式高效教学创新模式。
参考文献:
[1]郑莉. C++语言程序设计[M].北京:清华大学出版社,2010.
[2]钱能. C++程序设计教程[M].北京:清华大学出版社,2009.
[3]谭浩强. C++面向对象程序设计[M].北京:清华大学出版社,2006.
0引言
说起我国非计算机专业编程语言教学的走向,就不得不提到我国高等学校计算机基础教育发展的历史。我国的计算机基础教育始于20世纪80年代初期,从80年代初以来,高校的计算机基础教育大致上经历了三个发展阶段:80年代是起步阶段,90年代是规范阶段,进入21世纪,开始了第三阶段,即深化提高阶段。
计算机基础教育是指面向大学中非计算机专业学生的计算机教育,这部分学生约占全体大学生的95%以上。非计算机专业中进行计算机教育的目的是培养大批能使用计算机的人才,而不同于计算机专业的培养计划,可以说他们是计算机应用人才,学习计算机的目的完全为了应用,计算机只是作为一种现代工具来掌握,而不能当做纯理论的课程来学习。明确了这个培养目标,那就可以有的放矢。
目前各高校非计算机专业编程语言教学的现状是:学时是有限的,学习内容是繁杂的,由此对学生产生的学习压力不仅苦不堪言,而现实更是多数非计算机专业的学生在毕业后,对于大学期间学习的编程语言大部分是忘记,若想拾起来重新使用,也不是一件易事。如何解决非计算机专业编程语言教学和实际使用二者之间存在的矛盾这个问题,是我们每个从事高等计算机基础教育的老师不得不思考的问题。
1非计算机专业编程语言教学的现状
对于现存的高等院校非计算机专业编程语言教学的弊端,我们做以下几点分析说明:
(1) 非计算机专业编程语言教学培养目标定位有误
对于非计算机专业学生进行的编程语言教学,应与计算机专业的学生有所不同。计算机专业培养的是计算机专门人才,将来从事信息技术理论研究、科研教学、系统开发等专业性的工作,而在非计算机专业中进行编程语言教学的目的是培养大批能使用计算机的新型人才,他们需要达到的程度仅仅是使用计算机这个工具。作为高等院校非计算机专业编程语言教学计划的制定者,对于专业和非专业要达到的目标一定要明确,否则有可能南辕北辙。
(2) 非计算机专业的编程语言教学设置好大喜功
经过作者在国内各大高校做的调查,几乎各大高校对于非计算机专业编程语言教学一般从大学一年级就开始,陆续开有VB、C、FoxPro、SQL、C++、PB、Delphi、Java等,有的院校在高年级非计算机专业还开有计算机编程语言课程,美名其曰:多学点东西,增加就业砝码。
诚然多学点东西是不会有什么害处,但是不知道说这个话的人有没有想过:对于非计算机专业的学生来说,能有多少比例的学生在真正学这些开设的计算机编程语言课程,更多的恐怕是在各种考试之间疲于应付。当大家手捧毕业证书的时候,手拿四年所修的学分成绩单的时候,当大家面试应聘的时候,留在大家脑海中的计算机编程语言可能屈指可数,可以炫耀的可能仅仅是修过的计算机课程的数量。
作为从事高等教育的老师,我们不能为了这些表面的假象自欺欺人。如何在有限的学时内进行优化选择,使学生学到最需要的知识。当然不仅是指当前最需要,而且也包括今后踏上工作岗位,对于需要用到的计算机编程语言知识的时候也可以信手拈来,不用再重新学过。因此,对于非计算机专业的学生,我们应该敢于摒弃学习那些当前为了考试,今后根本用不多,仅仅是为了增加学分的计算机编程课程。
(3) 系统本身庞大,掌握的知识有限,学不能使其精
对于现存的计算机程序设计的任何一门语言,如VB、Visual Fox、SQL等,系统都是很庞大的。以一个简单的例子,VB为例来说明,VB采用的事件驱动的编程机制,提供了动态数据交换(DDE)和对象链接与嵌入(OLE)等技术。在数据库方面,VB具有很强的数据库管理功能,不仅可以管理MS Access格式的数据库,还能访问其他外部数据库,如FoxPro、Paradox等格式的数据库。另外,VB还提供了开放式数据连接(ODBC)功能。
对于VB强大功能,我相信学过VB的用户,都是普遍承认的,这个不需要多说,但是对于这么大的一个系统,如何能通过简简单单的几个学时就能够完全掌握呢?即使说你上课的时候多么专心地听讲,多么用功地做笔记,都是无济于事的,非要通过系统地做上几个项目才能掌握一二,更不要说是对于仅仅是通过教材上的几个简单例子学习的学生了,这几乎是不太可能的事情。那么有没有学习起来比较容易上手的工具了,答案是肯定的。
(4) 快速记忆,快速忘记
在高等院校里不排除有些用功的学生,学习每门功课都是用功之极,当然也不排除用功是为了在考试中拿个高分,争取奖学金的可能性存在。一个学期,说的更多一点一年对一门语言的学习,在短时间之内掌握某一项技能之后,一旦长时间不使用,肯定会生疏,这是人类不能抗拒的生理现象。而且目前高校里的学生学习的现状是:平时基本不看,考前拼命熬夜苦读,这种短时间内强迫大脑记忆的东西,肯定是经不起时间的考验的,尤其是在一个人不愿意学习这门功课的时候,这是自然规律。
假设你当时学会了VB,而且在大学毕业参加工作的时候也没有忘记,是不是说你就能很好地做自己的事情了呢?答案也是否定的,因为你掌握的是VB,而在工作单位的PC机上或许并没有安装VB的运行环境,这样是不是就为你的使用又出了一道难题。
有没有一劳永逸的工具,只需要简单的学习,而且不论在安装或者未安装VB运行环境的PC机上都能很好的完成自己想做的工作。通过作者亲身实践,本文中提倡的这个方法就可以达到这样的功效。
(5) 支持知识产权保护
如何做才能既使用正版,又不卷入知识产权的纠纷中呢,这里我们提倡在高校中推广,使用VBScript脚本语言在记事本环境下编程,在IE浏览器中运行,就可以达到这样双重效果。
(6) 程序交流困难
一个用户编写的程序如果仅仅是自己使用,这个时候程序的使用有一定的局限性,如果能够拿出去跟别的用户交流,就具有了更大的价值。假设有两个用户A和B,A在VB环境下编写了一段程序,在自己的机器上可以正常运行,当A把这段程序拷贝到B的机器上和B交流的时候,B机器上恰好没有安装VB环境,此时对于二者的交流可能存在障碍。
针对上述,我国高校计算机基础教育体制中存在的诸多问题,作者提出了一种新的思路。
对于一台安装了操作系统(Windows XP、Windows 2000 Professional、Windows ME、Win 98等)的PC机来说,拥有IE浏览器和记事本是再简单不过的事情,作者推荐给大家的就是使用VBScript语言来完成自己想要做的工作。下面我们通过例子来做进一步的说明,以此来演示如何更好的结合二者,使之发挥作用。
在数学或工程应用中,常常存在着大量的数值计算和数值分析问题,如:复合梯形公式、复合Simpson公式、Romberg求积公式等。通过编写简单的程序,就可以让计算机代替人类来做一些复杂的计算任务,在这里以数值计算中一个常见的问题来说明一下如何使用提倡的方法完成计算任务,这里以复合Simpson公式的计算为例。程序是通过输入给定的三个初始值:a、b和n,如图1所示。
图1 数据输入界面
计算设计大致上分为三个步骤:
(1) 在记事本中编写程序代码如下示:
图2 程序源代码
从上述源代码中可以看出:第一,VBScript使用的仅仅是VB中简单的程序设计思想的三种结构:顺序、选择和循环,不涉及复杂的结构,对于非计算机专业的用户来说是非常容易的事情。第二,在程序开始写了一个自定义的函数,在后面对该函数进行了调用,可以达到程序复用的作用。
(2) 将该文件保存为一个html格式的文件,如:a.html。
(3) 运行该程序只需要双击该文件图标就可以在IE浏览器环境下运行,在指定的文本框中输入符合计算要求的数据点击确定就可以得到计算的结果,如图3和图4所示。
图3 程序初始界面
图4 运行结果
3小结
通过上述例子我们可以得出以下结论:
(1) 在记事本环境下,仅仅使用了一些简单的VBScript脚本语句就可以完成复杂的数值计算任务。VBScript是介于HTML语言和Visual Basic、Java等高级语言之间的一种脚本语言,它接近于高级语言的大部分功能,但却比高级语言简单易学。
(2) 在运行该程序时,不像其他的程序设计语言需要经过编译或解释等步骤,以此来生成目标文件、连接文件以及可执行文件等,使用VBScript在记事本中编写的程序需要做的工作仅仅是双击该文件名,而不会生成其他的中间文件,这样就大大节省了系统的存储空间。
(3) 在运行该程序时,对运行环境没有提出特别的要求,仅仅是需要一个IE浏览器。这对于拥有一台PC机的用户是轻而易举的事情。
(4) 当你还在费尽心思考虑程序的在多台机器之间传递的时候,使用在此提倡的方法无需有这方面的顾虑。对于在任何一台PC机上编写的 .html文件,你可以轻松在多台机器上拷贝和运行,而无需进行额外的路径配置等工作。
当然,我们提倡的这种方法并不是十全十美,如:对于需要大量使用界面图形来处理的问题,或者需要使用数据库的问题,该方法就有所欠缺,但是该方法对于仅仅是为了自己方便,进行一些数据处理来说,是再合适不过的了。
全社会的计算机普及,为大学的非计算机编程教育创造了良好的氛围和外部环境,使广大非专业人员学习和使用计算机编程语言变得更加容易,如何使学有所用,使高等教育成为社会发展的推动力量,是高校非计算机专业编程教学面临的严重的挑战,这也是本文的初衷。
参考文献
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2013)17-4064-03
C语言是一种通用的计算机程序设计语言,对于计算机专业的学生来说,它是最重要的一门基础课程。学习C语言之后,可以为后面继续学习其他的高级程序设计语言打下坚实的基础。通过对C语言的学习,可以培养学生的提出问题、分析问题、解决问题的能力。在计算机专业的课程设计中,C语言程序设计是数据结构、操作系统、面向对象程序设计等多门课程的先修课程,对这些课程的教学有着直接的影响[2]。
学习C语言不止对计算机专业的学生来说重要,对非计算机专业的学生也是相当的重要。随着社会的发展,科技的进步,用人单位对员工的要求等的越来越高,加上应届毕业生的求职门槛越来越高,很多非计算机专业的学生也纷纷学习C语言,因为它不仅可以证明其具有一定的计算机操作的能力,如果拿到国家计算机等级考试C语言二级证书的话,还能在求职过程中,占据相当大的优势,赢得面试官的亲睐。所以大量的非计算机专业的学生学习C语言,而因为其计算机基础很弱,甚至有的为零,那么怎样才能让其将C语言学会,学好,并能灵活运用呢?这就是本文的探讨所在。
目前,在各大高校的非计算机专业都会设置相应的C语言程序设计课程,不仅如此,还有大量的培训机构招收非计算机专业的学生进行培训,以达到获得国家C语言二级证书,或使其具备一定的编程能力以备求职所用,可见C语言的重要性。
1 存在的问题
1.1 学生的问题
在近几年的教学实践中,发现学生普遍认为这门课难度很大,不容易学,而且即使懂了理论也不会做题或编写程序。究其原因,主要有:
1)很多学生的学习目的是不明确的[3]。经过相应的调查,发现在高等院校中,很多学生只是顺从学校或学院的安排,盲目地去上课,根本就不清楚自己为什么要学习C语言,所以一旦遇到困难,就会觉得难学,甚至会觉得学了也没用,导致学习兴趣以及热情的下降,这样就会缺乏学习的积极性和主动性。
2)学生的实践动手能力不高。C语言是一门逻辑性和操作性都很强的计算机语言,而很多学生都不明确上机实验的目的,甚至有的学生连实验的内容都不清楚,到了机房就是一盘散沙,不知道要做什么,导致动手能力不高。当然在上机的过程中,也难免会出现某些学生玩游戏等这样的情况,所以这也是实践课程中管理的疏忽。
3)对于高等院校的非计算机专业的学生来说,他们对学校安排的计算机课程的重视度不高。认为本门课程不是主课,仅仅是为应付考试而去学习,所以学习积极性不高,有时可能会发生上课不听讲,下课不看书的现象[4]。
4)教学过程中,发现在学生中存在一种普遍现象,即程序设计能力和调试能力都比较弱。究其原因,主要是因为其对于算法不够熟练,灵活运用知识的能力比较弱,编程的时候程序结构不清晰,标点符号等语法错误较多,不够细心。
1.2 教师的问题
教学的过程是教与学的过程,是教师的教与学生的学相结合的。国内著名的教育技术专家何克抗教授提出来“主导-主体”教学理论[5],他认为教学活动应该以教师为主导以学生为主体,突出教师在教学活动中主导者地位的同时,要注重对学生创新思维和创新能力的培养,避免学生被动学习。
1)在课堂教学过程中,太重理论的讲解,而忽视了对学生实践操作的引导。这就要求教师在备课过程中,必须清楚整个教学大纲的内容,做到有的放矢,理论讲解的同时,注重对锻炼学生动手能力的实践做相应的指导。
2)在上机实践时,容易放心让学生自己练习,导致学生动手能力未能得到确切的提高。这样就可能会导致很多学生在实验课上玩耍而不做任何实验。所以这就要求老师事前必须得做好实验课内容的设计,并严格要求学生达到什么样的效果,让学生自己动手操作,以达到锻炼提高的目的。
2 解决方案
基于上述问题的存在,并结合近几年的教学经验,该文提出一些改进的教学方法,以达到提高非计算机专业的学生学习C语言的学习效果。做到尽量让学生感觉学习C语言很轻松,很有趣,且能将其学会并灵活应用。
2.1首因效应
作为一名教师,应该很清楚第一堂课是非常重要的。首先应该与学生互动,相互了解,建立良好的师生关系,拉近彼此间的距离,如果一个老师的气场足够吸引学生的话,后面的教学过程中的任何问题都能很好地解决,缺课现象也会少之又少。其次要消除学生对于C语言程序设计课程的陌生感和神秘感,使其明白C语言对于我们而言,其实并不陌生,它存在于我们的日常生活中。举例如计算器、手机等电子产品、各种游戏软件、操作系统、智能电器等的功能都可以由C语言程序设计实现。最后充分调动学生学习的兴趣,使其明白学习C语言并没有想象中的那么难。
在第一堂课时,可以少讲课程内容,必须得让学生明白其学习目的,可以通过现场调查法了解学生的想法,并引导其明白学习本课程的目标。这样能使学生具有更大的学习动力。充分调动学生的积极性,激发其兴趣,这有利于日后的教学工作的进行,以及改变学生学习的氛围。
2.2 教学方法
要想提高学生的学习效果,就必须得注重教学方法的使用。只有方法对,使用得当,才会达到事半功倍的效果。针对非计算机专业的学生来说,该文总结出下面几种方法。
2.2.1 示例教学法
项目教学法在文献[6]中阐述得很清楚,它是通过实施一个完整的项目而进行的教学活动,使学生通过对所选项目的完成来完成对C语言的学习。这样的方法有一定的效果,但是在实施方面的难度比较大,比如所选项目的难易如何把握,时间如何分配(尤其是在高等院校的日常教学中),达到的效果如何衡量等。这些都很难有一个标尺来衡量。有两种效果,一是对C语言掌握得非常的好,应用能力很强;二是对C语言一头雾水,云里雾里,不知所云。所以对此本文提出一种结合项目教学法的优势与高等院校特点于一体的示例教学方法。此方法是在传统教学方法的基础上,对于课堂的设计有所改变。传统教学注重理论的讲解,而此方法是在简要讲解理论的基础上,针对某些重点知识的运用,例举一些具体的有趣且贴近生活的实例,做出相应的讲解后,加以演示,让学生对此程序的运行结果等有一个直观的感受;而且在演示的过程中,还可以教学生相应的一些调试程序找错的方法,这样学生自己上机练习的时候,调试能力会大大的增强。通过示例教学法,可以使学生对知识点的掌握以及运用能力得到很大的提高。
2.2.2 诱导法
传统教学模式是针对什么内容就很直白的讲解相应的内容,这样会使学生觉得枯燥乏味,久而久之会产生相应的厌学情绪,导致学习效率低下,学习效果低。该文针对此现象提出相应的改进方法,即诱导学习法。在课堂上,学生是主体,教师应该设计好所讲授内容的先后连接顺序,做到连贯有序。比如引入一个新的知识点之前,先提出问题,引导学生思考相应的解决方法,或让学生相互讨论,最终引出知识点进行讲解。这样更能提高学生课堂上学习的积极性。比如在学习数组之前,先提出问题,如果用一般的变量存放学生的年龄,需要存放几万学生的年龄,则需要几万个的变量,这样的编程量是非常大的,引导学生思考解决方法,并引出数组的概念和作用,这样学生比较容易接受,而且也不会觉得很突然或陌生,更能轻易得接受并学习。
2.2.3 对比法
根据人类认识事物的规律,在课堂上采取对比教学法会得到的非常好的效果。从常理出发,人们习惯性地会对比身边的事物,从而认识相应的事物。所以在课堂上讲解知识点的时候,恰到好处地运用好此方法的话,教学效果是非常好的。比如在学习数组的时候,当学习完一维数组之后,学维数组的时候,就可以以类比的方法来介绍二维数组,学生会很快学会并吸收二维数组的内容。这样的效果是非常显著的。
2.2.4 抽象具体化
C语言中,有很多抽象的专业性描述的概念理论,而对这些理论的讲解是比较难的。对于学生而言,这些内容在头脑里是很抽象难以理解的。所以这时就需要教师在讲解内容时,少用专业术语进行解释。比如讲解C语言充有且只能有一个main函数,且程序从main函数开始到main函数结束时,很多学生不是很理解,教师就可以举例说一个学校只有一个大门,学生要想进入学校逛耍就只能通过大门走进,而逛耍完后想要走出学校时,也只能通过大门才能出去。学校的大门就类似于main函数,要想进入学校只能从大门进或出,而C语言程序的开始结束也只能从main函数开始或结束。这样的话,学生比较能接受并理解此知识点,而且会觉得有趣。
2.2.5 组队上机法
此方法主要是针对上机实验课。传统的实验课是学生进入机房之后,个人练习,各练各的,学生之间缺少交流沟通。对此,该文提出的组队上机法可以有效地改善此现象,并得到相应的效果的提高。事先将学生进行分组,然后对每个小组分配任务,并提出要求及实验结果,还可以制定一些相应的奖惩制度,当然奖惩制度得切实可行。上机实践时,小组成员之间相互探讨问题,互动地学习,这样可以激发学生的求知欲,也能锻炼学生的团队协作能力。相互之间有竞争,就可以刺激学生的学习欲望。
2.3 课后沟通
因为高校的老师和学生之间见面的机会最多的就是上课时间,而学生有问题又不可能在课堂上问。针对这种现象,如果老师能和学生打成一片,加入学生的QQ学习群里,课后有任何的问题,大家都可以通过互联网在QQ群里讨论,老师也可解答问题。这样的学习效率是很高的,学生觉得老师负责,他的学习激情会更大,潜能也会被激发。
3 总结
教学实践证明,针对目前非计算机专业的学生学习C语言的现状,该文所提出的解决方案教学方法是切实可行的,且教学效果得到了确切的提高。利用这些方法,不仅可以激发学生的学习兴趣,更能增强学生分析处理问题的能力。学生在一种快乐融洽的氛围中学习,学习效率是非常高的。
参考文献:
[1] 谢竞博.C语言程序设计教学中的问题及改革建议[J].重庆邮电大学学报:社会科学报,2008(2).
[2] 王继东,赵瑞斌,陈桂林.计算机专业C语言程序设计课程教学改革探索[J].计算机时代,2012(2).
[3] 牛熠,董阿妮,吴燕玲.C语言教学中学生兴趣的培养[J].东莞理工学院学报,2006(1).
Abstract: Most of the current real estate sector in the real estate information management and housing area calculation also failed to realize automation, the informatization, standardization, did not give full play to the function of powerful computer. Based on the analysis of real data, the housing area calculation models are summarized, analysis, summary, ideas to solve the problems is proposed and completed the design of housing area calculation system.
Key words: common construction area; assessment area apportion coefficient; functional area
中图分类号:F293.3文献标识码:A 文章编号:2095-2104(2013)
引言
随着城市规划法和房地产管理法的颁布实施以及市场经济的飞速发展、住房的商品化和货币化进程的迅猛推进,对各地房地产产权产籍的管理工作提出了更高和更复杂的要求。房产面积计算准确与否,不仅关系到房产开发商的经济利益,还直接影响到千家万户的利益。房产面积计算系统正是应此呼声而产生,它可使房产部门从繁锁的面积计算中解脱,可大幅度提高工作效率,减少面积计算工作中不必要的错误。
本文根据作者多年经验及相关房产资料,对房产面积计算模型进行了归纳、分析、总结,提出了解决问题的设想并完成了房产面积计算系统程序的设计。
一、系统平台和标准
AutoCAD 2000是当今主流的CAD应用平台,其强大的图形编辑功能与图形处理功能深受用户欢迎。房产面积计算系统内嵌于该平台,利用目前流行的开发语言 VBA与LISP 进行程序开发,使用了面向对象的设计思想,采用了先进的内嵌式SQL语言,通过对数据库的操作,实现图形与属性数据完美的结合。房产面积计算系统的面积分摊计算是根据最新的国家房产测量规范(GB/T 17986.1—2000)设计而成的,适用于各地房产部门的房产面积计算。
二、程序设计思想
1.为了管理上的方便,系统按丘进行图形及属性管理。系统在每建立一个丘时,会自动以“丘名”建立一个文件夹,并在此文件夹目录下自动建立两个文件,一个是存放丘信息的属性数据库,其命名格式为“丘名.mdb”;另一个是存放本丘各幢楼平面图的文件夹,其命名格式为“丘名+Dwg”。经分析可知,每新建一个丘时都要创建两个相同的文件,因此系统设计了一个模板数据库,每建立一个丘时只要把模板数据库进行拷贝即可。当进行图形操作时,每幢楼会自动建立一个 Dwg 文件,其命名规则是“幢号.Dwg”,此 Dwg 文件存入选定的丘文件夹中。每幢楼的各楼层在 Auto CAD 2000 中建立一个对应的图层。系统实现面积、尺寸自动标注,并把各标注放在单一的图层,用户可方便地进行面积、尺寸标注图层的开关。在 CAD 中主要用层来实现各幢楼图形的管理。
2.在CAD中用户以中轴线绘出各幢各层各户平面图, 在图形上用系统规定的代号标出各功能区。程序根据标出的各功能代号自动搜索其围成闭合区域的面积并进行分摊计算,这是本系统提出的新思想。用户只要按系统规定作图、标功能代号,程序可快速、准确的进行面积分摊计算。
如图所示:
(图 1)
图上Q、A、YA、H、YH即为系统规定的代号,系统会根据代号及各户号进行面积搜索并进行分摊计算。其中Q代表全楼共用建筑面积(暂不包括外墙体一半的建筑面积),YA代表计算阳台全部的建筑面积,YH代表计算阳台一半的建筑面积。各功能区代号有:Z代表住宅,ZD代表住宅独用;B代表商业,BD代表商业独用等。
系统根据这一思想进行面积计算,程序相当复杂,但对于用户来说,操作方法简单,只需要点几下菜单即可完成各项复杂的计算,很适合基层用户操作。
三、数据库设计
因为每个丘要建立一个数据库,因此设计了一个模板数据库,在每建立一个丘时系统自动对模板数据库进行复制。数据库中的各表通过幢号、层号进行图形与属性数据关联。用户输入的所有数据与程序自动计算完毕的数据全部存入数据库,最后可供用户查询、打印输出。
数据库中主要有功能区表、幢属性表、楼层表、户表、分摊系统表等多个关联表。功能区表主要是用来存放各功能区代号及其属性的;幢属性表记录每幢房屋的基本信息,如:坐落、图幅号、丘号、幢号、产权单位等信息。户表记录各户的基本信息,如:户号、户主、户产权面积、分摊面积等。
四、系统模块介绍
房产面积计算系统分为五大功能模块来实现:
此模块主要用来实现各幢各层基本属性数据的录入。
2.面积计算模块
此模块程序根据标出的各功能代号自动提取面积进行分摊计算并入库。
3.数据管理及资料查询模块
此模块主要用来实现图形与属性数据的双向查询。本模块使用了功能强大的 SQL (结构化查询语言)进行各种数据查询,用户可以按任意条件进行单项、多项组合查询。可从属性调图,也可从图读属性。
4.图形处理工具模块
此模块主要有常用绘图工具,可使用户加快作图效率。
5.报表输入模块
实现各种报表打印,如幢基本属性表、功能区建筑面积汇总表、分户明细表及各户示意图。
五、程序计算流程
房产面积计算按其类型分为多层住宅楼、商住两用楼、多功能综合楼三种类型。每一幢楼只有一个全楼共用建筑面积分摊系数;每一功能区有一个功能区分摊系数;某一局部分摊又有一个独立的分摊系数。在一幢楼中,有可能只有一个功能区,有可能有多个功能区;局部可进行多次分摊。因此,程序计算之前,必须准确划分各功能区,确定各功能区独自共用的建筑面积,准确标注各功能部位。只有这样,系统才会根据代号计算出准确的面积。
在进行程序设计时,考虑到用户是在CAD中用中轴线绘图的,因此在计算各层建筑面积、共用建筑面积时应注意加上各层外墙一半的建筑面积;注意一些实体的计算,分清是计算其全部面积还是计算其一半的建筑面积(如阳台)。具体是怎样进行计算,用户只要标注好功能代号,程序能自动识别并计算。
根据分析结果,可以总结出共用建筑面积分摊计算流程为:先整体分摊计算,后局部分摊计算。即先进行“整幢楼分摊”计算,然后进行“各功能区分摊”计算,下一步到“楼层间分摊”计算,再进行各“局部分摊”计算,最后“分摊到各户”。在此值得注意的是,上一层次分摊计算的结果作为下一层次分摊的共用建筑面积的一部分,如分摊到某“功能区”的全楼共用建筑面积在进行本功能区分摊计算时就与“本功能区”类型的共用建筑面积一起参与分摊计算,最后分摊到每套(户)。
分摊计算可用图(1)表示:
(图 2)
从图2 就可看出,共用建筑面积分摊的顺序即为先整体,后局部。先分摊全楼共用建筑面积到各功能区,如在功能区内没有各楼层分摊,则按(A)直接分摊到各户;如果在功能区内要进行各楼层分摊,则按(B)进行各层分摊计算,再分摊到各户。在进行以上各项分摊完毕后,如还有特殊要求要进行局部分摊的,则要根据需要进行局部分摊计算。
六、房产面积计算系统实现的关键技术
1.面积自动搜索
程序根据标出的各功能代号自动搜索其围成闭合区域的面积,这是程序要实现的关键,也是程序开发时遇到的技术难点。在程序中能不能实现这一步是关系到整个程序成败的关键。因为整个程序所有的面积数据都是根据各标识提出来的。我们在程序中通过属性设置,边界搜索来实现这一功能。
2.局部面积分摊计算
当要进行局部分摊时,用户可指定分摊对象与被分摊对象进行分摊计算。在CAD平面图中,用户只要选择分摊对象,再选择被分摊对象,程序可把被分摊对象按面积比例自动分到分摊对象中。如图所示:
图(3)
当走廊要分摊给01、02、03三户时,只要选择分摊对象(走廊),再点击01、02、03,程序即可自动把走廊部分按面积比例分摊到各户,数据此时会根据分摊的面积自动进行更新。
3.在报表打印时,要打印各套(户)平面图这也是一个技术难点。
在打印各户平面图时,怎样根据各户号把图廓加上,怎样进行图廓自动切割。
以上三个关键技术通过VBA与LISP两者相结合,再通过一定的算法,在程序中得到了很好的解决。
七、结束语
房产面积计算系统内嵌于Auto CAD 2000平台,该系统充分运用了计算机的优势及Auto CAD 2000强大的图形编辑功能与图形处理功能。用户可很方便的进行图形、属性数据的双向查询。房产面积计算系统的建立,减轻了房产部门繁琐的计算过程,提高了工作效率。
参 考 文 献