首页 > 文章中心 > 程序设计风格

程序设计风格

开篇:润墨网以专业的文秘视角,为您筛选了八篇程序设计风格范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

程序设计风格范文第1篇

cpp格式这个词在中国大陆的程序员圈子中通常被读做C加加,而西方的程序员通常读做Cplusplus,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格

CPP是程序设计语言C++的另一种书写形式。

它是CPlusPlus的简称。是继C语言之后又一种计算机编程语言,C++编程语言同时支持所有的C语言语法。C++和C相似,但C是面向过程的程序设计语言,而C++是面向对象的程序设计语言,不过C++语言保持了对C语言的兼容,也就说是在C++程序可以不用修改的插入C语言代码。

cpp是用C++语言编写的源代码文件的后缀名。它对类的强大支持可以使它编写出更优质的程序。

(来源:文章屋网 )

程序设计风格范文第2篇

1  实践课程简介

本课程属于我校计算机类本科生的第一门专业基础实践课,课程内容包括C++语言程序设计的理论和实践两个部分。基础理论部分内容包括C语言程序设计的基本概念、C++面向对象程序设计、类、对象、继承、派生、多态、模板等概念。实践部分则包括C++语言程序设计的基本训练、类和模板的设计编程、几个算法的实现、简单应用等。

C++语言程序设计是计算机类本科生的一门程序设计语言基础课程,虽然现在大多数程序员使用Java语言做项目开发,但作为程序设计的入门语言,考虑到在培养程序员思维方式的转变过程中,既要兼顾理解计算机硬件和软件的结合,又要程序员从传统的数学逻辑思维方式继承并成功转型到计算机逻辑思维方式。目前也只有C或C++语言能够较好的满足这种需求。

本课程注重采用C++编程语言的最新国际标准[1],结合我们学校实验室硬件的情况,尽可能采用国际上正在流行的比较新的编程软件进行实践教学。使得课程的讲授内容始终跟踪C++程序设计语言的前沿性和先进性。积极学习和引入国内外同行的先进教学方法和教学案例。简单介绍C++语言程序设计的几个流派、现实的应用情况及未来发展趋势。

本课程强调学生在认真听课、阅读理解课本上的有关程序设计的概念、方法外,还要善于利用互联网的资源,特别是学习C++语言程序设计的几个官方网站、几个行业大牛的网站上的知识。在理解理论的基础上展开实验验证,不断的修正自己的理解偏差,使自己学到的知识不断完善,形成体系,为后续课程的学习打下一个坚实的基础。在C++语言程序设计实践教学过程中,强调合作能力的培养,团队意识的形成。自2004年以来,本课程教学效果得到学生的一致肯定,锻炼和培养了学生的实践能力,比较好的完成了本门课程的教学任务。

2  实践教学目标

本课程的实践教学目标包括:学生通过本课程的学习、实践,让学生从中学生传统的数学思维方式转变为结合计算机软硬件特点和计算机逻辑的计算机思维模式去分析问题、编写程序、实现解决问题。通过C++语言程序设计课程的实践训练,了解什么是面向对象的设计思想,养成良好的程序设计风格。利用C++语言程序设计来解决一些实际问题;学会自顶向下,逐步细化,会把复杂问题拆解为几个更为简单的问题,利用面向对象技术进行设计和编程。培养团队协作和开放意识,为计算机类专业后续课程的学习打下一个良好的基础。

3  实践教学方法、手段(举例说明采用的各种教学方法及手段的使用目的、实施过程、实施效果)

①建立以转变传统数学逻辑思维方式为结合计算机软硬件特点的计算机逻辑思维方式为主线的,分层级、渐变式的实验教学体系。首先训练学生学习计算机编程的三种基本逻辑,数组等数据的组织方式,学会排序等几个简单常用算法、解决一些简单问题。然后学习把数据和定义在数据上的操作整合在一起引入类的概念、学会类的定义、理解继承、派生、多态、学会模板的定义和使用、学习文件的使用方法。使学生养成良好的程序设计风格、形成计算机逻辑思维模式。

②采用灵活多变的教学方法,加快提高学生的编程能力。实践教学过程中,针对一些具体的例题,先解决基本问题,然后分析对于一些语句进行适当修改和加入新的语句就可以解决类似的其他问题。设计、利用一些实验数据发现所设计的程序的关键性问题,然后引导学生去解决此类问题。因为本门课程是学生接触的第一门实践性课程,教学过程中引出的问题有些是当前阶段可以解决的,一些问题还要通过后续课程的学习提高能力后才能解决,不一定马上就要把问题解决掉、重点是培养学生继续学习的兴趣。激发学生自主学习的积极性、主动性和能动性。

鼓励学生自主组建C++语言程序设计兴趣小组去找协作课题、完成课程设计作业。实验课堂上也鼓励学生多走动、多交流。建立网上资料、技术分享机制、鼓励学生分享解决问题的方法,老师根据学生的分享情况,适当增加学生的平时成绩。

③逐步建立学校和社会的协同培养模式。在教学过程中,课外时间如有可能,适当组织部分学生走出校门,利用校友资源,组织参观企业、科研院所、地方政府等单位在计算机方面的应用情况。了解社会需求、拓展视野、激发学生学习本专业的积极性。形式多样的人才培养协同创新模式。教学团队通过学院与广州易数信息科技有限公司、广东省信息安全测评中心、广州杰赛科技股份有限公司、广州腾科网络技术有限公司等企事业单位建立了长期战略合作关系。这些都为创新型人才培养打下了坚实的基础。

4  实践教学考核方法

本课程的总评价分数包括平时考勤,平时作业,中段考试、期终前上机考试、课程设计与新技术资料翻译,期末考核六部分。分别占10%、10%、15%、15%、10%、40%。其中,平时作业主要是针对课程中每章节后,为巩固所学内容所布置的习题编程实现;课程设计则主要是训练学生的协作能力和解决实际问题的分析、设计、编程能力、要求提交一份相对完整的设计文档;英文资料翻译采用自主选择网络上国外近半年来计算机类的英文资料、鼓励组团分解翻译大块文件,要求每人翻译至少2个A4版面。期末考试通过闭卷方式考核程序设计的能力,期终考试占总成绩的40%。

5  实践教材

本课程的实践教材为本课程主持人及参与人员王玉山等所编著的《C++语言程序设计实践》,该教材现在只有电子稿,还没有正式出版。

6  实践教学环境和教学资源

本课程的实践教学环境为:①学习版的微软公司的Visual Studio Visual C++的集成开发环境。②Bloodshed Dev-C++(C++开发工具)V5.11.0中文免费版。③奇趣科技开发的跨平台C++图形用户界面应用程序开发框架Qt。

教学资源:

①课程概要:课程简介、教学大纲、课程特色、教学效果。

②在线课堂:课程PPT。

③实验指导:实验指导书和实验报告。

④部分大作业选题目录。

⑤C++语言程序设计课程及研究常用、重要网址列表。

7  实践教学效果

经过多年探索和实践,教学团队在人才培养模式、教学方法、实践教学改革、试验教材编写等方面取得了一定的成绩。团队成员发表相关教改论文10余篇,获得过2010年广东省千百十校级人才项目,主持广东外语外贸大学校教学研究课题“毕业设计管理系统”,2010年度、2012年度广东外语外贸大学优秀科研业绩奖二等奖,周咏梅和林华两位老师获得过年度优秀个人。教学团队成员具有丰富的教学改革实践经验和理论基础,保证了本门实践课的教学质量。

通过大作业与新技术资料翻译,提高了学生主动学习的积极性、培养了团结协作精神。提高了解决问题的能力。组织部分学生到相关企业参观、坚定同学们学习本专业的积极性。

指导学生积极开展科研实践和申报项目,获得成绩如下:

①在王玉山老师的指导下,软件系2015级大学一年级新生林泽聪等获得了广东省团委的攀登计划项目:个人健康档案,获得资助2万元。

②在周咏梅和蒋盛益老师指导下,彭金原等同学获得广东外语外贸大学校级大学生创新创业项目:网络舆情构建关键问题研究―以微博客为分析对象(2011年校级);黄确君等获得:面向高校图书馆的推荐系统(2012年校级)。

国家级学科竞赛获奖情况:

Innc多媒体解析语言,2007年在天津举办的全国第10届挑战杯比赛3等奖,2004级软件工程专业,文羲畅。指导老师王玉山。该项目同时获得广东省2007年第九届挑战杯1等奖。

省级学科竞赛获奖情况:

①四灵象棋――基于互联网与移动设备联合开发,广东省第18届“高校杯”软件作品赛一等奖,2006级计算机专业:郭勇、刘荣科、何健,指导老师:林华、蒋盛益、吴彩虹、王玉山。

②基于Web3d的网上服装商城 , 第十七届广东省“文泰高校杯”软件设计(本科组)竞赛1等奖,  2004级软件工程专业学生,指导老师,王玉山。

泛珠三角安利杯大学生计算机作品赛:

2006级计算机专业,陈俊平,余雯. 基于C++语言程序设计的垃圾邮件识别系统, 泛珠三角大学生计算机作品赛广东赛区, 二等奖,2009。

2006级计算机专业学生,“任意达”――私人定制高校客车联盟系统,大学生计算机作品赛暨泛珠三角大学生计算机作品赛广东赛区选拔赛三等奖 , 指导教师林华。

8  实践课程特色及价值

《C++语言程序设计》作为大学计算机类1年级新生的第1门实践课程, 肩负着既要把学生从传统的数学思维方式向结合计算机软硬件特点的计算机思维方式转变,又要转变学生的应试教育模式学习方式向探索式、实证式、协同式、全球互联网求助式、开放式教育学习方式转变。还要求学会面向对象的程序设计思想方法,为后续课程的学习打下一个良好的基础。课程内容本身要求理论联系实际、在理解理论的基础上进行实践验证并不断修正、完善自己理论体系。学习本课程后,要求能够进行面向对象的类的设计,能够解决一些实际问题。本课程的特色和价值主要表现在:

①课程内容理论联系实际,所用软件实验工具、环境要符合时代需要、要采用最新的C++语言程序设计国际标准进行实验讲学,在试验中老师要善于对于同一个程序代码、进行适当变换就可以讲解、实验几个概念和方法,争取用较短的实验时间获得尽可能大的教学效果。

程序设计风格范文第3篇

关键词 大学生;计算机程序设计;方法

一、大学生计算机程序设计课程概述

计算机程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。目前,《计算机程序设计》课程是高校计算机基础教学的一门必修课,并且,一些非计算机专业的学生也安排了这一课程,其教学目的是要求学生以某种程序设计语言如JAVA、C语言、C++或汇编语言为工具,掌握编写程序的常用算法、一般方法和技巧,学生在进行该课程学习后,要具有一定的编程能力和应用开发能力,而不仅仅局限于计算机操作技巧,从而成为能够掌握计算机技术的高素质技能型人才。程序设计课程应该包括以下几部分内容: 熟练掌握阅读和分析程序设计语言的基本语法知识;数据类型和常用的数据结构;常用的基本算法;良好的程序设计风格;了解并掌握实用程序的开发与调试技术。由于程序设计涉及算法、数据结构和程序设计方法,该课程一些问题操作起来较繁琐,因此,许多学生学起来较吃力,难度较大。

二、大学生学习计算机程序设计的方法

1.重视程序设计上机操作,使理论与实践相结合

大学生学习计算机程序设计这么课程,区别于一些文科课程的学习最大差异之一在于,程序设计是一门实践性很强的课程,因此,学习过程中,大学生光靠死记硬背相关概念和步骤是远远不够的,必须要不断上机实验操作,验证和体会教材理论和方法。因此,大学生在程序设计学习过程中,必须重视程序设计上机操作,注重理论与实践相结合。

具体说来,大学生在上机操作中,要做好这几方面的工作:一是上机前,大学生要认真温习教材,了解程序设计课程的相关理论和将要上级操作的内容。计算机程序设计教材一般都有课后实践习题,学生应在课后通过实践操作进一步加深对理论知识的理解和认识,并可以在实验前书写方式编写程序,以备上机时的测试和调试。二是注重模仿学习。程序设计中会运用大量表达能力和逻辑能力强的精炼高效的编程语言,初学者往往觉得入门较难,且难学易忘。正所谓“学习最好的开始是模仿”,程序设计也是如此。这就要求在学习过程中,学生要重视模仿经典的程序设计例子,研究和欣赏别人优秀的程序代码,学习别人独特的见解与逻辑思维,才能在研究优秀代码中慢慢成长为优秀程序设计者。如“有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少?”这是程序设计中的一个经典案例,学生可先自己思考着进行编程,对照参考程序进行在理解基础上的模仿,并可根据具体情况进行创新,只有这样,才能在不断模仿中进步和超越。三是要勤学苦练。多读代码、多写代码、多练代码,是学好程序的基本方式,而毅力是程序员具备的最基本的素质,大学生只有坚持多看书、多练习,把程序设计相关结构和类型的用法掌握牢固,才会学有所成。

2.熟练掌握好算法

高效程序的设计基于良好的信息组织和优秀算法,可以说,一切程序设计的问题解决的过程都是有效数据组织的过程,是寻找、设计和实现算法的过程。因此,熟练掌握最基本、最常用的算法是大学生学习程序设计的基础。

计算机程序设计往往会涉及使用计算机解题,大学生首先要正确理解题意,接着是寻找或设计解题方法,并对解题方法的正确性进行论证。按照正确的解题方法,可以设计正确的算法,即,规定每一个解题步骤中要求计算机执行的处理,以及各个解题步骤的执行次序。有了正确的解题算法,可以使用合适的程序设计语言,将算法表达成计算机程序,计算机将能按照设计好的程序,高速、自动地进行计算,帮助我们获得问题的解。因此,程序设计语言中的一些基本算法(如求累加和、求连乘积、穷举法、递推法、求最大值和最小值、 数的排序、数的检索以及字符串的匹配等),大学生在程序设计学习中,对这些基本算法应做到胸有成竹,并不断融会贯通、举一反三,才能使自己更好地掌握程序设计、提高学习效率。

3.交流合作学习

古人云“三人行, 必有我师”,计算机程序设计的学习最忌闭门造车。因此,大学生要多多与别人交流心得,从合作入手学习程序设计,才能在交流竞争中不断构建新的计算机能力。

许多大学生在程序设计学习中,凡是遇到问题都会自己想办法查资料,对于积累经验和提高能力大有脾益,但知识的海洋是无限宽广的,特别是对于程序设计这一门较复杂的课程,更需要学习者与老师和同学相互切磋学习,加深体会和经验,在在合作的学习氛围中,强者会更强,弱者也会变强。例如,有的大学生自行组织小组参加校内校外的程序设计大赛,以大赛为平台,以小组合作的方式组成参赛队,通过比赛,大学生不仅在短时间内迅速提升专业技能及运用计算机技术解决实际问题的综合能力,而且提高了创新思维和合作精神,并且刺激引发了社会交往意识,学会了与人沟通,为走向社会打下了较为坚实的基础,可见交流合作学习的方式不失学习计算机程序设计的有效途径。

三、结语

综上所述,程序设计学习作为计算机学习的核心和灵魂,它的学习对于计算机能力的提高尤其重要。结合计算机程序设计课程内容,大学生可从重视程序设计上机操作使理论与实践相结合、熟练掌握好算法以及交流合作的方式更好学习程序设计,才能成为适应社会信息化的快速发展的计算机人才。

程序设计风格范文第4篇

1.在《C程序设计》与《数据结构》教学中对课程整合概念的理解

理论上,课程整合是指对课程设置、各课程教育教学目标、教学设计、评价等诸要素作系统的考察与操作。在实际教学中,课程整合是指考虑到各门相互分裂的课程之间的有机联系,将这些课程综合化。

在传统的教学模式中,《C程序设计》是先行课程,《数据结构》是后续课程,它们都是学习操作系统、数据库原理和应用、面向对象程序设计等课程的基础。《C语言程序设计》是学生最先接触的结构化程序设计语言,其教学目的主要是使学生了解结构化程序设计的算法和思路,掌握程序设计和调试的基本技巧,培养良好的软件设计基础。《数据结构》主要是研究非数值应用问题中数据之间的逻辑关系和对数据的操作,同时还研究如何将具有逻辑关系的数据按一定的存储方式存放在计算机内。其教学目的主要是使学生掌握数据的逻辑结构、存储结构及其相应的算法,培养学生解决实际问题的能力,即能够把现实世界中的客观问题,变换为在计算机内的表示形式,学会组织数据、选择算法、养成良好的程序设计风格。

《数据结构》课程中分析数据之间的逻辑关系和确定数据在计算机内的存储结构是所有程序设计过程中必须完成的两大任务,且《数据结构》中算法描述的语言又多采用C语言,两门课程之间存在着紧密而内在联系,为两门课程的整合提供了可能性。

2.《C程序设计》与《数据结构》的教学现状

在传统的教学模式中,《C程序设计》是先行课程,《数据结构》是后续课程,将两门课程分开来教学,人为地割断了它们之间的内在联系,导致学生在学习《C程序设计》时,仅局限于C语言的语法层面上,不能把C语言的程序设计思路和语法知识具体运用到数据结构的算法中去,使理论知识与实践运用脱钩。而在学习《数据结构》时,由于教师的更换和教材的多样化,任课教师又不得不花掉一、两周的时间来复习C语言的相关知识,造成了课时的浪费和学生反感。在具体运用时,又出现学生能理解数据结构中的算法和读懂算法,却不能运用C语言去实现算法等程序设计能力较差的现象。笔者长期从事这两门课程的教学工作,一直在探索如何提高这两门课程的教学效果,培养学生运用C语言这个工具去解决实际问题的能力。

3.《C程序设计》与《数据结构》课程整合的思路

在高职院校计算机应用专业的课程体系中,实现《C程序设计》和《数据结构》这两门课程的整合,要结合职业教育培养实用型人才的目标,根据后续专业课程的需要来确定。《C程序设计》和《数据结构》课程整合化的思路以C语言为工具,以实践为中心,重视基础知识,注重能力培养,对两门课程教学内容和教学模式进行优化和整合。

在实施过程中,将这两门课程整合为一门课程,课程名称为《C程序设计与数据结构》,在一个学期内完成授课内容。坚持理论联系实践的教学模式,突出实践教学的重要性,去掉繁琐的理论推导,重新设计教学、实训大纲,处理教材,合理分配学时。在具体教学中,以C语言为主线,将数据结构的内容溶入到C语言的教学中,对数据结构的内容以“适度够用”为原则,适当地进行删减,以满足高职教育培养应用型人才的教学需要。

4.《C程序设计》与《数据结构》课程整合的具体实施

(1)整合后理论课教学的内容和学时分配

整合后周学时为6节,总学时为102节(按17个教学周计),其中理论课时为68节,上机实践课时为34节。

(2)课程整合后的实践教学设计

在实践教学中,要进一步巩固对理论知识的理解,提高学生灵活运用数据结构和算法的能力,使学生在编程、上机操作、程序调试与正确性验证等基本技能方面得到训练和提高。实验可分两部分,一是验证性实验,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是运用性实验,组织学生以小组为单位设计一些实用程序,要求学生从实际出发,在具体、真实的环境中分析研究数据对象的特性,构造合理的数据结构以及相应的算法。

(3)课程整合后的考试要求

整合后的课程培养目标是提高学生的计算机应用能力,计算机应用能力包括了三个层次:操作使用能力、应用开发能力和创新能力。因此整合后的课程考核,应采取理论基础闭卷和上机操作开卷相结合的方式进行,综合评价应从以下三个方面来着手。

①笔试。笔试主要是考察学生对理论知识的系统性的理解,可由客观题型(如选择、填空题等)和主观题型组成,客观题型要立足于基础知识,小而全,避免死记硬背。主观题型要灵活多样,如问题解决分析、程序编写等。占整个评价的30%。

②上机实践。上机实践贯穿于整个教学当中,所以要注重过程考核,结合实训计划,在各单元模块结束时,进行随堂考核,并认真检查和记录学生考核情况,作为期末上机实践成绩的一部分。实行各单元过关,有了各单元模块的考核,到期末上机操作综合考核时就不成问题了。通过对上机操作实践的评价,可以考察学生应用计算机解决实际问题的能力。占整个评价的40%。

③学生的平时表现。学生的平时表现是指是否认真上课、听课,上机练习的任务是否独立完成,上机设计的任务是否有创意,作业是否按时上交等等,这些资料的积累,有利于对学生学习情况的全面认识。学生在整个授课过程中的表现,占整个评价的30%。

在课程整合中,合理的考核方案能促进学生知识的积累,避免学生考前突击和死记硬背现象,使学生真正学到知识。

程序设计风格范文第5篇

中图分类号:G642

摘要:针对当前计算机程序设计课程建设面,临的两方面挑战,提出由4个等级组成的逐层递进的程序设计能力模型,构建覆盖不同能力等级的课程体系,进行一系列以提高程序设计能力为目标的教学方法改革,包括基于能力的分级教学、能力测评和考核、程序设计能力训练和提升方法、课堂授课方式的改变等,从而实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变。

关键词:计算机程序设计;程序设计能力模型;教学方法改革

0 引言

随着计算机的不断普及其在各个专业领域日益广泛和深入的应用,计算机软件作为信息系统的一种重要载体正越来越多地用于解决各专业领域的相关问题,如电子技术、材料科学与工程、物理学、化学、系统工程、机械工程等。程序设计是构造计算机软件的一项重要活动和技术形态,其核心是利用程序设计技术并借助特定程序设计语言(如Java、C++等),将专业领域问题或者应用问题抽象为计算机软件的形式,从而实现基于计算的问题求解。由于以计算机软件为核心的计算技术在许多专业领域正发挥着越来越重要的作用,扮演着极为重要的角色,因此计算机程序设计受到越来越多专业的关注和重视,被视为一种重要的基本技能,诸多大学将计算机程序设计课程列为公共基础课程。

1 计算机程序设计课程建设面临的挑战

传统上,计算机程序设计的课程教学侧重知识的传授,主要为学生讲授程序设计的基本概念和思想,介绍特定的程序设计范例(如结构化程序设计、面向对象程序设计)以及相应的程序设计语言(如C、C++等);教学对象以计算机专业的学生为主。随着越来越多专业的学生选修计算机程序设计课程,课程教学更加关注借助程序设计技术对专业领域问题进行分析和抽象。当前计算机程序设计课程建设面临着以下两方面的挑战。

1)如何实现从侧重知识传授到突出能力培养的转变。

各个专业方向关注的是如何借助程序设计技术构建相应的计算机软件,从而解决专业领域的问题。在计算机程序设计课程教学过程中,有关程序设计基本概念、思想和语言的讲授是实现这一目标的基础,如何利用这些知识抽象并求解专业和应用领域中的问题,才是该课程教学的关键;因此计算机程序设计课程的教学需要将关注点从侧重知识传授转变到突出程序设计能力培养,即要培养学生使用计算技术解决专业问题的能力。

2)如何满足不同专业对程序设计能力的不同需求。

尽管计算机程序设计的基本概念、思想和语言独立于具体的专业领域,也与特定的问题无关,但是各个专业方向所关心的程序设计问题是不一样的。例如,数学专业关心的是如何将数学模型转换为计算模型;电子技术专业关心的是如何开发计算机软件,以实现底层电子硬件与高层信息系统之间的交互等。程序设计能力表现为多种形式,包括针对给定问题抽象出相应程序的能力,基于有限的计算资源(如存储和运算资源)提高程序有效性和高效性的能力,提高程序的质量以使程序易于维护、扩展和重用的能力等。有些能力是需要具备的基本能力,有些能力则要求更高。

针对上述问题,我们依托计算机程序设计课程建设,围绕能力模型、课程体系、教学方法3个方面,开展以突出程序设计能力培养为目标的教学改革与实践,强化能力训练和测评,提高计算机程序设计课程教学水平和人才培养质量。

2 程序设计能力模型

为了突出和强化计算机程序设计能力的培养,指导开展以能力为导向的课程教学改革,首先必须回答何为计算机程序设计能力?它表现为哪些方面?不同能力表现形式之间存在什么样的关系?能力的训练和提升应遵循什么样的规律?如何表示不同专业领域对计算机程序设计能力的不同需求?为此,我们提出图1所示的计算机程序设计能力模型。

计算机程序设计能力模型由4个等级组成,即初始级、技能级、工程级和创新级。每个等级反映程序设计能力的某种表现形式,因而有其特定的关注点。例如,初始级需具备程序设计语言的基本运用能力;技能级需具备对问题进行数据和算法抽象的能力,使得所开发的程序具有良好的时效性和高效性。不同程序设计能力等级之间存在依赖关系,形成一种逐层递进的能力进阶方式。例如,技能级建立在初始级基础之上,工程级需要以技能级为基础。将程序设计能力从一个等级(如初始级)提升到另一个等级(如技能级),需要针对目标等级的特定关注点,循序渐进地进行能力提升。

1)初始级。

初始级的程序设计能力具体表现为:掌握计算机程序设计的基本概念和知识;掌握一门或多门计算机程序设计语言;具备程序设计语言的基本运用能力;具有编写百行规模程序的能力;能熟练使用工具或环境对所编写的程序进行调试和分析。

该等级反映了计算机程序设计能力的最基本水平,也是计算机程序设计课程教学需要达到的基本目标。这一等级通常面向非信息类专业的学生,他们应通过计算机程序设计课程的学习,具备初始级的程序设计能力。

2)技能级。

技能级的程序设计能力具体表现为:了解计算资源(包括存储和运算)的有限性;掌握常用的算法和数据结构;具有运用程序设计技术对待解决问题进行分析、设计和计算求解的能力;能够针对有效的计算资源,从时间和空间2个维度,对给定问题在计算空间中进行数据和算法抽象的能力;具有编写千行规模程序的能力。

该等级体现了程序设计的较高水平,计算机程序设计竞赛非常关注这一等级的程序设计水平。这一等级通常面向信息类专业的学生,他们应通过计算机程序设计课程的学习,具备技能级的程序设计能力。

3)工程级。

工程级的程序设计能力具体表现为:掌握大规模程序的复杂性特点、程序质量的要素与内涵;掌握程序设计方法和知识,能够运用抽象、模块化、信息隐藏、软件重用等思想设计和实现大规模、高质量的程序;能够编写出具有良好的可读性、可靠性、可维护性、可重用性、可扩展性等属性的程序代码,使得该程序代码具有良好设计风格;具有编写数千行规模程序的能力。

该等级体现了程序设计的工程化水平,可以为大规模软件的工程化开发奠定基础。这一等级通常面向计算机专业(如软件工程、计算机科学与技术)的学生,他们应通过计算机程序设计课,程的学习,具备工程级的程序设计能力。

4)创新级。

创新级的程序设计能力具体表现为:能够灵活运用所掌握的计算机程序设计技术并与其他专业领域的技术相结合,开展创新实践,解决特定领域和专业的问题。这一等级着重关注程序设计技术的综合运用和创新性解决问题的能力,通常面向各个专业的创新实践。

计算机程序设计模型明确了每个等级的关注点、能力指标及培养目标,指明不同等级间提高程序设计能力的方法和手段;支持逐层递进的程序设计能力培养,加强针对程序设计能力的训练,改进测评和考核方式,为推动能力为导向的计算机程序设计课程教学改革奠定基础,为国家信息化建设需要的多专业、多层次人才的程序设计能力培养提供新模式。

3 计算机程序设计课程体系

为了解决不同专业对程序设计能力的不同需求问题,开展不同等级计算机程序设计能力的培养和训练,指导各个专业方向的学生有针对性地选择所需的计算机程序设计课程,我们以计算机程序设计能力模型为基础,构建覆盖不同能力等级、逐层递进的计算机程序设计课程体系。支持程序设计能力模型的课程体系如图2所示。

1)初始级课程。

根据初始级程序设计能力的要求,我们在该等级开设计算机程序设计和面向对象程序设计课程,培养学生获取程序设计基础知识和运用程序语言的基本能力。

2)技能级课程。

根据技能级程序设计能力的要求,我们在该等级开设数据结构和算法设计与分析课程,培养学生如何针对特定问题,在计算资源有限的情况下,从时空有效性的角度开展数据和算法设计的能力。

3)工程级课程。

根据工程级程序设计能力的要求,我们在该等级开设程序设计课程设计(即程序设计综合实践)、程序设计方法学和并行程序设计课程,着重培养学生编写大规模、高质量程序的能力。

4)创新级课程。

根据创新级程序设计能力的要求,我们在该等级开设Android程序设计、面向机器人程序设计、无人系统程序设计等课程,关注多种技术的融合运用,着重培养学生综合运用程序设计技术和专业领域技术,创新性地解决专业领域问题的能力。该专业领域涉及机电一体化、电子工程、自动控制、航空航天等。

4 深化以能力为导向的教学方法改革

为了加强计算机程序设计能力的培养,推动程序设计能力的训练和测评,我们改革和实践一系列行之有效的教学方法,实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变。

1)开展基于能力的分级教学。

我们根据不同专业的需求选择人才培养的能力等级及其所需的课程,根据学生的不同基础和能力实施分级教学。该方法为有针对性地对不同专业、不同基础的学生进行计算机程序设计能力培养提供了参考和准绳。目前,分级教学设A、B、C三级,分级标准参考如下。(1)A级:具有较好的程序设计思维和潜力,具有一定的程序设计基础知识和能力。A级班比例为25%-35%,每班50~60人。(2)B级:预计通过正常授课和实验,能够完成大纲学习要求。B级班按大纲实施教学。(3)C级:通过正常授课和实验,完成大纲学习要求存在一定困难。C级班增加10个授课或实验学时,规定学生在课程结束后达到大纲要求。C级班要求教师进行更加细致的讲解,学生进行更多的基础训练。

2)实施面向程序设计能力的培养模式。

我们必须通过多种手段在实践中培养和提升学生的程序设计能力,为此总结出“读、改、写、用”相结合的能力训练方法,即通过读程序代码,改已有程序代码,编写程序代码,重用已有的设计模式、系统或应用程序接口、外设、第三方程序模块等,综合培养学生的程序设计能力。我们尤其强化学生对高质量开源软件的阅读能力,从中学习、领会和掌握设计精巧、具有良好可读性、可维护性、可扩展性的程序,鼓励学生通过对已有程序进行扩展和改进,继承和掌握遗留软件中具有的良好“品质”。

3)改革程序设计课程的授课方式。

程序设计是一门实践性很强的课程,针对这一特点,我们采用学中练、练中学的方式,将课堂搬到实验室,通过“讲授+练习+讲评+训练”的实验室授课方式,淡化知识传授,加强问题引导并对实践体会加以总结,精心设计针对特定知识点的单元练习和串联所有知识点的渐增式项目,变讲授为研讨,变学习为体会,变任务为兴趣。实验室授课弱化教师的讲授,强化学生的主动学习,将间接经验传授转换为直接经验体会,这也更加符合程序设计的学习规律,极大地提高了学生的实践训练强度。

4)提出程序设计能力的测评方法。

我们开展面向能力的测评与考核,针对不同等级测评,采用人工与自动相结合、定量与定性相结合、自评与互评相结合的方式,借助实践教学平台,建立基于功能、性能和质量等多维属性的程序设计能力测评与考核系统。初始级依托考试系统,采用测试用例集测评学生对具体问题的程序实现能力;技能级采用大数据集的方法对实现的数据结构和算法效率进行测评;工程级采用人工和商用工具测评程序的风格、体系结构和质量;创新级采用过程跟踪和专家评分的方法评判创新能力。

5 结语

如何针对不同专业对程序设计能力的不同需求提高学生的程序设计水平,是计算机程序设计课程建设面临的一项重要挑战。我们以构建计算机程序设计能力模型为核心,以建立覆盖各个能力等级的计算机程序设计课程体系为突破口,以改革面向能力培养和训练的课程教学方法为手段,开展以能力为导向的计算机程序设计课程教学改革与实践。实践结果表明:课程教学的改革思路越清晰、目标越明确,所培养学生的独立编程能力越能够得到大幅度提升,程序设计的调试和测试从原先几乎被忽视变成了学生的自觉行为,诸多学生养成了良好的程序设计习惯,为参加各种计算机程序设计竞赛和开发大规模软件奠定了扎实基础。

参考文献:

[1]陈莲君,朱晴婷.培养能力为主线的C语言程序设计教学研究[J].计算机教育,201 1(14):102-105.

程序设计风格范文第6篇

摘 要:本文分析了计算机程序设计在通识教育与计算机基础教育中的差异,说明了在通识教育中开设程序设计基础课程的重要性,讨论了该课程在通识教育中的特点与定位,说明了我们在该课程中采用的教学策略和手段、并给出了教学效果,最后提出了今后要继续研究的有关教学问题。

关键词:通识教育;程序设计;教学研究

中图分类号:G642 文献标识码:B

1 为什么在通识教育中设置程序设计课程?

通识教育的倡导者认为,大学教育不能局限于专业知识与技能的传授,还应注重“全人”的培养,即对学生素养、品格、价值观的培养,希望个人潜力得到最大限度的发挥,而不局限于个人选择的专业。计算机技术的飞速发展带来了信息技术的革命,使社会发展步入了信息时代,在大学的通识教育中增加有关计算机技术基础知识与能力的课程,有助于非计算机专业大学生,特别是其中文科学生,综合素质的提高。

计算机程序设计的思维方式具有鲜明的独特性:系统论、抽象性和自动化。软件专家温伯格认为,这种思维先于专门的学科知识的存在而存在――有时绕过专门的学科知识,有时又把专门的学科知识综合起来;把这种思维和教育方法称为一般系统论的方法。其次,程序设计的最终结果是让计算机按照程序执行,去解决一类问题,而不是某个具体问题,这与数学的抽象性类似。这种思维是让机器自动地完成任务,却又允许人进行干预,即所谓的人机交互式的问题解决模式。而且,不同的计算机语言会影响人们的思维模式,但是,基于程序设计的思维原理是普遍的。系统化的思维与计算机编程思维与之有着深刻的内在联系。

像其他大学一样,我校已经开设了计算机基础教育,也包含了Visual FoxPro的程序设计课程。在通识教育中开设计算机程序设计课程与计算机基础知识的教育没有冲突,而是一种补充。根据教育部高教司的建议和要求,目前国内大学的计算机基础教学分成三个层次:计算机文化基础、计算机技术基础和计算机应用基础,在第二层次中包含计算机程序语言进行编程建模。因此,我们在全校的通识教育中开设了“Java程序设计基础”的课程。此课程属于选修课,在教学内容、形式、手段、考核等方面与必修课不同,同时给了学生更多的选学余地。事实上,自从我们在全校开设这门通识教育课程三年以来,每学期限制的120个名额远远不够!

2 课程的特点与定位

作为通识教育,“Java程序设计基础”具有如下特点:课程面向全校学生,面大、量广、专业种类繁多、对计算机的兴趣、知识和技能的需求各异,基础知识参次不齐,而且是低年纪的学生,缺乏必要的自学能力;学时有限,比教育部非计算机专业计算机课程教学指导分委员会提出的最低学时还少3个学时。

学生的期望不同,大致包括:

学习计算机编程:了解程序设计是什么。

学习一种程序语言:Java程序设计语言是什么。

学习新的编程技术:面向对象的程序设计是什么:

学习更多的计算机语言:Java语言与C、C++或者Visual Basic的区别。

当然,也包括通过该课挣得学分。

作为通识教育课,“Java程序设计基础”课程的目的不是或者不仅仅是培养计算机程序设计员,该课程的定位是计算机科学与技术的一门普及课、入门课,希望通过学习计算机的核心知识与技术,

让学生理解计算机软件,进而深入地了解计算机系统的工作原理和方式;

学习程序设计的思维方式,全面培养学生的综合素质;

提高对计算机科学与技术的兴趣,促进更多的学生在未来的学习和工作中应用计算机来解决实际问题。

因此,着力培养学生对计算机及其编程的兴趣和理解,成了“Java程序设计基础”的根本目标。

计算机已经成为现代社会的一个基础知识和工具,85%以上非计算机专业的学生未来在从政、经商、在某个专业领域(如电力、汽车、物流、军工、艺术)从事技术或服务工作,都可能使用计算机系统,也许会有人因为工作需要而自己动手修改或创造新的计算机软件工具或系统。这在计算机的发展史中比比皆是。例如,统计软件包SPSS最初是由斯坦福大学的政治学研究生Norman Nie开发的,国内广泛使用的财务软件用友是由在财务领域工作的王文京领导研制的,数学软件Mathematica是由数学家领导研制开发的,雅虎搜索引擎最初出现是杨致远与费洛为了把在网络上寻找的资料类别整理好而编制成的软件。最初这些简单的应用软件经过发展、进而形成了新的商机和技术,同时也极大地推动了计算科学与技术的发展。

3 教学的策略与手段

3.1 教学策略

教什么、如何教就成为通识教育的关键问题。针对该课程以及学生的特点,我们经过实践、总结了本课程教学的策略:了解概念,理解思想,“不拘小节”,“不求甚解”。

“理解概念”是任何学科的基础,每门课程都有自己独特的概念。我们在讲述Java程序设计的概念时,重点在突出差异、采用比较的方式讲授。如把数学中的实数与计算机中的浮点类型数进行比较,并分别从计算机存储与安全检查两个方面简述为什么要区分出单精度浮点和双精度浮点类型的实数。

写出好的计算机程序,除了要掌握程序设计语言本身以外,还要求理解计算机的基本组成、运用数据结构、算法设计以及软件工程的基本知识和技术,最主要是要掌握程序设计的过程,让学生理解程序设计的思维模式和工作过程。这些知识都属于计算机专业的核心课程,不可能在通识教育的程序课程中充分展开,我们只需讲解与程序设计相关的要点。

例如,变量名在数学与计算机中都表示未定的值,但是在计算机中还表示值在内部存储地址的抽象,这样就顺便补充了计算机组成的核心――存储。在软件工程方面,需要学生掌握的的基本思想是:程序是机器执行的,但更多的时候是让人阅读的!因此,写出符合规范的、让人容易看懂的程序更重要。这就要求在教学中培养学生良好的程序设计风格和习惯,如规范的变量名、必要的代码注释、清晰的程序结构等。

经典程序设计的思想是“算法+数据结构”。算法设计是编程的核心,程序是用计算机语言实现的设计思想,数据结构与算法设计环环相扣,是不可分离的程序的两个方面。变量类型、数据结构和控制结构是冯诺伊曼式计算机系统的基本模式和组成。封装、抽象、复用发展成现代向对象程序设计的核心。在讲授这些抽象思想和原理时,我们尽量采用理论结合实际、案例引导、直观教学。

我们把程序的阅读与执行结合起来,让学生直观地学习静态的程序如何动态地执行、产生结果。由于一开始就阅读实际的程序,有很多知识可能还没有学到、甚至在课程中就不出现,使得学生“一知半解”,不能完全理解,对有些问题或知识可以“不拘小节”、“不求甚解”,这样有助于在短时间内让学生了解程序设计过程和程序结构,掌握编程的基本要领。这种方式类似于在外语学习中所采用的猜测法:在阅读中出现的生词不要急于查字典,可以通过上下文来猜测,通过大量的阅读来培养语感、文化直接用外语的思维模式。程序语言类似于外语,编程者需要逐步培养用程序化的思维方式、常用的表达模式和惯用语,而不必计较一些不懂的函数、表达、语句、或者类,特别是不要在编程工具可以解决的以及需要经验积累的细微末节上花费宝贵的时间。

3.2 教学手段

在教学的内容和形式方面,我们重点采取了下面的手段。

1) 基础知识不求全。因为,在一个学期的课程中不可能让学生把一门程序设计语言掌握到实用的程度。与其泛泛的介绍Java标准版的所有内容,还不如通过Java语言深入理解程序设计的精髓。因而,我们选择与语言无关的、所有编程的基础知识,如变量、表达式、逻辑运算、控制语句、类与对象以及GUI。知识的取舍取决于学生未来可能的应用。例如有关数的运算,我们只讲十进制的数,不讲各种数进制之间的转换,不讲二进制及其运算(尽管这是计算机的基础),也不讲位运算;对面向对象部分,不讲内部类和匿名类,等等。

2) 潜移默化思维模式。培养学生程序化、系统化的思维模式,让学生抽象的、类问题的解决模式(而不是个体问题)。通过实践使学生掌握程序设计的过程,包括如何分析问题、如何用计算机语言描述问题的解决过程――即编程,如何分析并解决程序中出现的错误(调试程序),如何在不同的环境下运行程序。

3) 培养自学能力。计算机技术、尤其是软件技术的发展日新月异,没有一本语言的教材能够与语言同步。现在的计算机发展为深入学习编程语言及其技术提供了广泛的手段,学生应该掌握自学能力。我们通过演示,让学生自己动手编程、分析代码、得到结果;直接上网查找资料,使得学生自己可以查找包括wiki、Blog、用户组、厂家在内的资料,了解语言的发展,更新知识,同时培养独立研究的能力。

4) 使用工具、动态学习。计算机是实践的技术、应用的技术,唯有动手才能掌握技术和技能;很多细节不需要花费时间(也没有时间),要充分利用工具来解决非核心的问题。例如括号不配对、变量未赋值就使用,程序美化排版,甚至需要引入的类库等;将有限的时间集中到概念的解释和计算机工具的使用,例如通过例子解释为什么变量使用前要先赋值,面向对象的属性有缺省值,然后如何利用编译器来发现变量未赋值引用的错误。

针对学生的不同基础和需求,我们还采取了如下的措施:对不同的学生采取灵活的教学方式,允许部分学生以难度较大的练习代替少量的缺席;针对学生课后时间有限以及编程是动手实践的活动,我们的课堂教学采用了理论+上机实践,课时分配位1:1,其中实践的内容包括学生自己阅读程序加上动手编写程序。理论上我们分配的课堂与课后的学时位2:1,实际上有一半以上的学生课后花费不足一个小时就能完成作业,没有花更多的时间去深入学习课程内容。考核以课堂练习和课后作业为主,考核也遵循“不拘小节”的策略,主要考查学生对程序的结构、语句的选择等设计思想的掌握,而忽略语言的细节,如变量名是否正确。

4 实践与挑战

在我们已经连续开设5个学期的通识教育课程“Java程序设计基础”中,教学策略和手段经过不断改进,逐步得到了学生的认可。表1列出了最近3个学期该课程的部分统计数字。每期的120个名额都报满,参加学习的学生分布全校理、工、文、艺、管、医的各个学部。学生的合格率也在逐年提高;其中音乐、艺术和服装设计专业的学生不合格的比例较高。选该课的一年级的学生几乎都在80%,而在第二学期的比第一学期的学生要多。

下面是一些需要我们继续研究、并通过实践来检验解决方案是否可行的典型问题和挑战,也希望与同行共同探讨:

教学程度。通识教育中计算机程序设计的教学内容到什么程度合适?是否要再开设一个提高班,以满足部分学生对计算机技术的更高追求?

分班教学。理工科学生在计算机的基础和理解力方面明显比其他专业的学生要强,是否有必要进行分班教学、因材施教?如何平衡学校、学院、学生以及教师的各种关系?

教材问题。难有教材满足我们的教学思想和内容,我们给学生只列举了主要参考书和网址。这种西方通行的教学方式在我校实施起来有难处:学生不愿花钱买参考书、图书馆没有足够的教材、大一学生的自学能力尚需培养。没有教材如何使得学生学好一门课?

语言与编程:程序语言是算法设计的体现,不同的语言适合不同的编程风格与应用领域。是选择流行的、应用广的编程语言还是选择体现计算机思想、适合教学的编程语言?

共性问题。如何处理通识教育与计算机基础教育中程序设计技术的关系(如学分可否互换)?是否应该对通识教育课的设定课程通过率(四分之一的不及格率是否过高)?

参考文献

程序设计风格范文第7篇

关键词:结构化程序设计 数据结构 算法 设计技巧

近年来,计算机程序设计技术已从结构化程序设计技术逐步向对象程序设计技术过渡,特别是当设计一个较大规模的应用程序时,面向对象设计思路成为首选。纵观计算机软件技术的发展,在局部功能的实现上及功能模块的设计上,结构化程序设计仍然有其不可替代的独特魅力。在结构化程序设计中(以C语言为例),巧妙地运用一些设计技巧,对增强程序的稳定性和可靠性,简化程序操作步聚,提高程序的运行效率十分有效。

结构化程序设计的概念最初是由荷兰学者E・W・DUKSTRA等人在20世纪60年代提出的,它的基本思路是:以模块化设计为中心,将原来较为复杂的问题简化为一系列简单模块的设计,也就是将一个大的计算任务划分为若干个较小的任务,这些小任务均由函数来完成。函数既可以是C语言定义的标准库函数,也可以是自定义函数。在实际应用程序中,一个具备一定规模的C语言程序往往由多个函数组成,其中必有一个命名为main的主函数,由main来调用其他函数。必要时,其他函数还可以调用另外的函数,同一函数可以被一个或多个函数调用一次或多次。

结构化程序设计把程序归结为用顺序结构、选择结构和循环结构等三种基本结构来描述的逻辑问题。顺序结构的程序流程是按语句的书写顺序依次执行;在C语言中,有4种语句是顺序执行的:即空语句、表达式语句、函数调用语句及复合语句;选择结构是对给定条件进行判断,根据判断结果决定执行两分支中的一个分支或多分支中的一个分支,选择语句有if语句和switch语句;循环结构是在给定条件成立的情况下,反复执行某个程序段,循环语句有for,while和do-while语句以及一些辅助流程转向语句如continue,break,go to等等。以上三种结构通过流程控制语句来实现。流程控制语句在程序设计中起着十分重要的作用,通过三种基本控制结构的合理调配使结构化程序具有唯一的入口和出口,不会出现死循环,而且程序的静态形式与动态执行形式之间具有良好的对应关系。

从以上结构化程序的基本特点分析,结构化程序设计主要强调的是程序。程序=算法+数据结构+程序设计方法+语言工具和环境,其中算法是灵魂,是解决“做什么”和“怎么做”的问题;数据结构是加工对象;语言是工具;编程需要采用合适的方法。具体解决主要问题包含以下几个步骤:

分析问题,找出解决问题的模型根据模型设计出适合计算机特点的处理方法即算法进行编程程序,以实现算法上机编辑(.c)、编译(.obj)、连接(.exe)、运行所编制的程序,直到得出正确结果对结果进行分析,整理出文字材料。

程序设计的任务不只是编写出一个能得到正确结果的程序,还应考虑程序的质量,否则编写的程序就会出现质量低下、可靠性差、开发周期长、维护费用高等不良后果,即所谓的的“软件危机”,它会严重阻碍计算机应用的发展。由于大多高级语言都支持结构化程序设计方法,其语法上都含有表示三种基本结构的语句,所以用结构化程序设计方法设计的模块从结构到程序的实现是直接转换的,只需用相应的语句结构代替标准的控制结构即可。笔者在实际应用中,总结出以下几点实用技巧。

一、通过引申法廓清思路,选准目标

“引申法”就是通过对某一结论的合理引申,结合已经解决的问题,因势利导,在此基础上解决相关联的其他问题。“引申法”可以培养人们在程序设计方面的发散思维,提高程序设计的应变能力。问题是活的,但程序是有章可循的;语法是有限的,可解决的问题是无限的。程序设计相当一部分工作是分析问题,找到解决问题的方法,再以相应的语言写出代码。要熟练掌握一些简单的算法,根据不同的问题,再灵活应用。如用100元钱买100只鸡,公鸡、母鸡、小鸡分别是5元、3元、1元一只。在数学上解三元一次方程,三个未知数,两个方程好像解不出来。通过“穷举法”,我们要费好大一番工夫才能算出结果,但是通过计算机“引申”编程运算却不用一秒钟即可解决问题。只有在分析实际向题的基础上,以清晰的思路去设计算法,才能举一反三,以不变应万变。通过“引申”法,我们可使初学者对函数设计的关键问题有清晰的认识,利于从统筹全局的角度去考虑问题,体现了程序设计逐步求精的思路。

二、利用框架法培养全局思维和算法的整体设计能力

其具体体现在两方面。一是在有了一点编程基础后要利用伪代码或流程图,从算法设计的角度讲解编程思路,而不应拘泥于语法细节,不分主次、逐条语句地讲解代码。这样可以层次分明,突出算法设计的关键,利于培养编程思路。二是在学习重点章节函数时,由于新的算法已很少,主要是学习用函数调用的方法来重新编制以前所熟悉的程序,我们可以把着眼点放在函数的设计框架上,体现参数设计、返回值设计等关键问题,而无需细讲函数体的实现细节。结构化构造减小了程序的复杂性,提高了可靠性、可测试性和可维护性,使用少数的基本结构,就可使程序逻辑结构清晰,易读易懂,并且容易验证程序的正确性。

三、借助求异法引导新思路,启迪新思维

结构化程序设计方法的基本思路是:把一个复杂的问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。一个固定的问题,解决的方法可能不唯一,如果能启发人们多角度、多侧面去寻求解决问题的办法,则可激发思考的积极性,提高其学习兴致。对一个初学计算机语言的人来说,最重要的就是要有正确的程序流程概念,不仅要懂得,而且要灵活应用。由此可见,用结构化方法设计的结构是清晰的,有利于编写出结构良好的程序。在C语言中一题多解的情况有很多,有意识地引导新思路,鼓励新方法,以培养人们在编程中的求异思维,而不是死记硬背,墨守成规。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。

四、选准切入口,合理划分功能模块“分而治之”

结构化程序设计的关键在于功能模块的选定和划分。模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务的划分以相对简单为前提。划分子模块时我们应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。具体应用时从问题本身入手,自顶向下,逐步细化,精益求精,将解决问题的步骤分解为由基本程序结构模块组成的通过程序流程图、N-S图、PAD图表格等表示的结构化程序框图。在实践应用中往往会出现以下几个问题:一是用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。二是用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。三是系统的开发周期较长。

为解决这些问题,我们要求模块的设计要简洁明了,语句的选用要直观,不要拖泥带水。下面是一段小程序,从中可以看出一些语句选用的技巧。

某淘宝商城为鼓励更多网友光临本店,对新老网友给出如下优惠:凡是购买10件以上者,打9折;20件以上者,8.5折优惠;30件以上者,8折优惠,40件以上者,7.5折优惠。如用习惯上的if嵌套语句编写程序如下:

Main()

{float x,y;

printf(“请输入优惠购额款X:\n”);

scanf(“%f”,&x);

if(x

y=x;

else if(x

y=0.9*x;

else if(x

y=0.85*x;

else if(x

y=0.8*x;

else

y=0.75*x;

printf(“网友应付优惠后款额Y为:y);}

显然,这段程序冗长,一旦情况有变化,难以扩展。转换为switch语句结构后,程序就变得相对简单:

Main()

{float x,y;

Int t;

Printf(“请输入优惠购额款X:\n”);

Scanf(“%f”,&x);

If(x>=40)

t =4;

elst

t=(in)(x/10);

switch(t)

{case 0:y=x;break;

case1:y=0.9*x;break;

case2:y=0.85*x;break;

case3:y=0.8*x;break;

case4:y=0.75*x;break;}

printf(“网友应付优惠后款额Y为:y);}

两种方法可谓异曲同工,但是对于程序的调试性和可维护性却有天壤之别。在结构化程序的编程实践中,我们要查找某些错误比较困难,所以要尽可能避免出现这些问题。编程技巧需要在编制和调试结构化程序时不断总结和完善,力求找出最简便、最直观的方法。

总之,结构化程序设计方法在实际应用中有许多技巧可以合理运用,这需要我们对算法和数据结构展开深入分析,寻找最佳结合点,有的放矢,对症下药;更需要在实践中不断总结和积累。在编写过程中我们觉得有些程序没什么问题,但是一上机调试,就出现这样或那样的问题,这说明程序还不完善,还需要调整或改进。当今,高效率和快节凑的生活与工作方式对程序的设计提出了更高的要求和更苛刻的标准,我们只有不断创新设计理念和方法,才能编制出更多高质量、高性能、低故障的优质程序。

参考文献:

[1]林锐等编著.高质量程序设计指南[M].北京:电子工业出版社,2002.

程序设计风格范文第8篇

关键词:钢骨混凝土;钢管混凝土;面向对象编程;封装;继承

中图分类号:TU37;TP311.132.4文献标志码:A

SRC/CFT calculation program based on object-oriented programming

WANG Zhaobo, LUO Yongfeng

(College of Civil Eng., Tongji Univ., Shanghai 200092, China)

Abstract:Most of the current analysis software lacks of module on calculation of Steel Reinforced Concrete (SRC) and Concrete-Filled Tube (CFT) components. So an engineering calculation software based on Object-Oriented Programming (OOP) is developed considering the calculation of SRC/CFT components. The SRC/CFT component classes and special file input/output classes are constructed by inheriting basic class. The inherited relationship, encapsulating description and implementation methods are presented. The application in a high-rise SRC/CFT building proves its practical value and the advantages of OOP idea in engineering software development. It provides the valuable references to problem solving and program development in actual projects.

Key words:steel reinforced concrete; concrete-filled tube; object-oriented programming; encapsulation; inheritance

0引言

如何在程序设计中自然地表示客观世界即对象模型,一直是计算机软件开发中广受关注的难题.面向对象编程(Object-Oriented Programming,OOP)设计思想是软件开发方法的一场革命,代表全新的计算机程序设计的思维方法.该方法[1]旨在使程序设计中不同对象之间的关系更接近在自然界中的客观存在,从而也使开发者对它们的理解更接近人们认识事物的过程.这种思想带来的好处是显而易见的,它通过增加代码的可扩充性和可重用性改善并提高程序编制者的开发能力,并能控制维护软件的复杂性和软件维护的开销.

结构工程中各种实际问题的解决,离不开相应的数值分析方法,而各种数值方法的实现则紧密依赖于程序的编制.以往结构计算程序的实现多是面向过程的,各程序段对给定的算法进行描述并依次对数据进行处理,大量的各种类型的数据与其相应的处理过程混杂在一起,任何数据的添加或形式的改变都会导致一系列相关过程的变化.对于试图利用已有代码的程序编制人员,不得不重新阅读并理顺大量的代码.近年来,已有不少学者[2-7]将面向对象方法应用于结构分析程序的编制,说明面向对象的程序设计在结构计算及设计方面同样具有优势.根据工程需要,应用OOP设计中继承和重用的思想,本文在文献[8-10]程序的基础上开发钢骨混凝土(Steel Reinforced Concrete,SRC)和钢管混凝土(Concrete-Filled Tube,CFT)构件计算程序,快速有效地解决工程设计中迫切需要解决的问题.

基于OOP思想,对其在工程计算设计软件开发中的快速开发应用进行分析和探讨,并给出开发思想的具体应用和实现,满足大型结构工程的高效设计需要,为同类问题的解决和程序编制提供参考.

1程序设计思路

1.1开发背景

SRC结构和CFT结构是高层建筑中近期发展起来的具有广阔前景的新型结构,与钢筋混凝土相比的优点是由钢和混凝土形成的组合构件可整体工作、截面尺寸小、构件延性好;与钢结构相比其优点是能够节约钢材、耐火性更好、钢骨可兼做模板,施工速度高.它融合钢结构和钢筋混凝土结构的优点,承载力高、延性好、变形能力强,从而具有较强的抗风和抗震能力.但是由于结构形式较新,结构分析软件中大都缺少SRC和CFT构件的计算模块,使得结构工程师在进行此类结构设计时无程序可用,只能采取一些近似如等效化为单一材质的构件方法进行计算.

笔者所在团队承担“中国平安金融大厦结构优化设计”项目,所优化的主楼结构采用CFT柱、钢梁及钢支撑构成的中央框架――支撑内筒,以及由SRC柱和SRC梁组成的外框筒,分析软件主要采用国际通用分析设计软件ETABS.然而,ETABS虽然支持SRC/CFT构件的建模分析,但并没有实现相应的设计计算功能,这就要求在项目规定的完成时间内自行编制程序进行构件截面设计和校核.

1.2程序设计思路

经过分析,程序编制的工作量主要包括几大部分:接口ETABS软件,使用其中已形成的数据,主要包括几何信息和内力信息等;根据现行规范进行SRC/CFT构件设计计算;对同一类型的构件设计结果进行归并,以符合工程需要;进行设计信息的输出.程序的整体结构及流程管理见图1.

由于程序中需要描述节点、杆件和内力等大量的数据结构以及相关的计算方法,需要实现的代码量很大,鉴于任务有严格的时间限制,必须尽可能利用已有成果,高效快速地进行程序编制工作.

2 OOP抽象及相关实现

2.1OOP的基本概念

OOP设计方法就是运用面向对象的观点描述现实问题,然后运用计算机语言描述并处理该问题.这种描述和处理是通过类与对象实现的,类是逻辑上相关函数与数据的封装,是对现实问题的高度概括、分类和抽象.一些面向对象编程的基本概念[1]如下.

封装和数据隐藏:通过建立用户定义类型(类)支持封装性和数据隐藏.完好定义的类一旦建立,就可看成是完全封装的实体作为一个整体使用.封装的单位是对象,该对象的特性由它自己的类说明来描述.这些特性为相同类的其他对象所共享,对象的封装比一个类的封装更加具体化.

继承和重用:在扩展现有类型的基础上声明新类型,利用“继承”来支持代码重用.新子类是从现有类型派生出来的,称为派生类.派生类不仅具有基类的一切特征,而且还可以定义自己独有的特征,以实现各种各样的功能.

多态性:通过继承的方法来构造类,采用多态性为每个类指定表现行为.利用继承性和多态性的组合,可以轻易地生成一系列虽类似但独一无二的对象:由于继承性,这些对象可共享许多相似的特征;由于多态性,一个对象可以有独特的表现方式,以区别于其他对象.

面对对象设计,鼓励人们从问题最基本、简单的方面入手,用对象来考虑如何描述问题的主要方面.这正是自底向上方法的本质.但面向对象的设计也要求人们面向目标,考虑为了达到这一目标该如何建立基本对象,这也体现自顶向下的设计思想.

2.2代码的继承和新类的抽象提出

由前述的程序设计思想,程序编制者可以通过继承和重用来利用已有的类,同时只需对新类中反映特殊问题的表现行为予以描述即可.

文献[8]中的有限元程序已经由MFC类库抽象出有限元基类,包括从有限元核心概念抽象出的单元类、节点类和载荷类等,而由单元类又继承了体单元、面单元和线单元等类.同时,为了描述线单元的属性,也抽象出截面类及其子类:钢筋混凝土截面类和型钢截面类.结合本文所要解决的工程问题,对上述已有的类进行继承.由于ETABS软件本身是以有限元分析为基础的设计软件,它输出的模型几何文件中信息的描述格式可以直接利用单元类和节点类封装.在线单元的基础上加以发展,抽象出一般构件类以及SRC/CFT构件类,利用载荷类中的点载荷子类继承构件内力类.程序中SRC/CFT构件类的继承关系见图2.

由于尽可能多地利用已有的计算结果,有很多读取ETABS文件的操作,程序对特定的文件格式抽象相应的文件输入输出类.文献[9]中的设计程序,已经抽象出通用文件类、输入文件类、输出文件类、带有标志符的文件类、分段数据文件类和SATWE文件类;通过继承其中具有共性的类,生成适合于解决本工程的新类:ETABS模型文件类、内力文件类和文件类的继承关系见图3.

由于已有类封装了所要解决问题中描述共性的代码,本文新类的建立充分继承已有的类,形成基类―子类关系,基类中的特征被保留下来,在子类中只需对其特性进行代码描述.除此之外,程序中还封装了流程管理类,进行多个文件以及计算工作的管理,限于篇幅,其继承关系不作详述.

从上述类的抽象过程和继承关系可以看出,对于专业性很强的结构工程问题,其组成和性质在很多方面都有相似之处,面向对象程序设计通过层层继承的抽象,方便恰当地表示工程对象.

2.3封装与相关算法的实现

图4说明SRC构件类的封装,其数据成员中大部分均由基类继承过来,SRC构件类中需要再添加的数据成员已经很少,则程序编制的重点可以放在相关配筋算法的实现上,以减少与核心计算工作无关的内容.SRC/CFR构件的配筋计算[11],采用对构件截面进行单元划分,而后进行数值积分的方法进行.由于不同内力组合的截面中性轴位置不同,实际上求取中性轴和确定配筋量过程是一个迭代的过程,其中圆形SRC柱压弯构件的算法流程描述见图5.

3应用实例

如第1节所述,根据中国平安金融大厦结构优化设计的需要,开发计算SRC/CFT设计计算程序,并应用于该项目的设计.中国平安金融大厦位于上海浦东新区陆家嘴国际金融中心,与中银大厦和交银大厦相邻,大厦整体为欧式风格.作为商办楼的主图 4SRC构件类的成员变量和成员函数

楼共38层,结构平面为左右对称,长73.5 m,宽45.0 m;第38层处屋面高度为164 m;38层以上设有塔楼2层和球形穹顶,穹顶顶部高为210 m,穹顶结构为单层钢网壳结构.结构主体标准层见图6.

主楼结构采用框架―支撑体系.围绕中央电梯井道及共享空间设置CFT柱,在X和Y方向设竖向钢支撑,与楼层钢梁一同构成具有一定刚度的中央框支结构.配合建筑设计风格,周边设内置十字钢骨、间距3 m的圆形截面SRC柱(见图7)和内置H型钢的矩形断面SRC框架梁.除底部及避难层,外框架SRC梁隔层设置,SRC柱和SRC梁形成周边框架结构.SRC/CFT柱及SRC梁是整个结构中的主要承力构件,其分布见图8.

SRC/CFT柱及SRC梁构件数量巨大:CFT柱1 574根,SRC柱2 416根,SRC梁1 996根,对于每根构件,输出点为3个.实际考虑9种载荷工况,载荷组合(本文程序中进行组合)共107种,其中非抗震组合27种,抗震组合80种.可知SRC/CFT截面设计计算量的庞大.

在VC++ 6.0应用开发环境中,编制用于计算SRC/CFT构件的程序,运行界面见图9.

向对象开发手段,最大限度地利用已有基类,大大缩短编制时间,仅用两周即完成开发工作;同时由于抽象过程很好地封装底层数据,数据对象十分接近人们的认知,也方便了调试过程.程序设计采取合理的数据结构和算法,对此复杂高层结构中的大量SRC/CFT截面,计算1次运行时间控制在20 min之内,甚至低于ETABS对单一构件设计所需时间.

4结论

运用OOP设计思想开发大型软件具有明显的优点,其思想已被广大专业程序设计人员所接受.但非专业程序开发者采用结构化程序设计思想所开发的软件,尤其是一些专业性软件存在许多固有缺陷,很难对其进行扩展利用.

针对现有结构分析设计软件功能上的不足,采用OOP设计思想对已有代码进行继承和重用,对程序功能进行扩展,开发出SRC/CFT构件计算软件,应用对象和类的概念使得程序的建模更接近实际情况.同时将其应用于一超高层组合结构设计中,在解决实际工程计算问题的同时验证了该方法在程序设计中的优势.实践表明,与传统设计方法相比,OOP的扩展能力大为增强,程序开发和调试周期明显缩短,容易增加前后处理功能或建立与其他前后处理程序的接口.

参考文献:

[1]COHOON J P, DAVIDSON J W. C++ Program Design: an introduction to programming and object-oriented design[M]. USA:The McGraw-Hill Companies, Inc, 1997.

[2]谭也平. 工程结构电算与OOP编程[M]. 北京: 中国建材工业出版社, 1999.

[3]俞铭华, 吴剑国, 曹骥, 等.有限元法与面向对象编程[M]. 北京: 科学出版社, 2004.

[4]谭也平. 有限元前处理系统的图形集成实现[J]. 计算机辅助工程, 2000, 9 (1): 53-58.

[5]丁啸宇, 王书庆, 石洞. 面向图形对象技术在桥梁CAD系统开发中的应用[J]. 计算机辅助工程, 1999, 8 (3): 53-58.

[6]林建, 秦浦雄. 面向对象数据库原理在工程CAD中的应用[J]. 计算机辅助工程, 2001, 10 (2): 36-41.

[7]谭也平, 王书庆, 石洞, 等. 工程CAD系统中的有限元对象的实现[J]. 计算机辅助工程, 1996, 5 (3): 25-29.

[8]姜峰, 李博宁, 丁丽娜. 面向对象的钢筋混凝土有限元非线性分析程序设计[J]. 计算力学学报, 2003, 20 (5): 592-596.

[9]王朝波, 姜峰. 异形柱计算机辅助设计系统LSCCAD的研制[J]. 建筑结构, 2004 (3): 52-55.

[10]WANG Zhaobo, JIANG Feng, LUO Yongfeng, et al. Stochastic crack simulation for reinforced concrete based on the nonlinear finite element method analysis[J]. Harbin Gongye Daxue Xuebao, 2005, 37(S): 215-219.