前言:中文期刊网精心挑选了结构化程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
结构化程序设计范文1
关键词:实例拓展;结构化;程序设计教学;教学应用
中图分类号:TP311.1
在计算机专业的教学中,程序设计是一门最基础,也是最重要的课程之一,是培养学生计算编程能力的主要课程[1]。但是又因为这门课程涉及到很多理论性极强的内容和大量的编码知识,不容易被学生理解,所以是计算机专业教学的重点和难点。在过去传统的教学方式之下,老师只是按照大纲的顺序来讲解相关的知识点,即使举例也只是引用一些比较典型的例题,例题和例题之间缺乏联系,使得学生只能进行生硬的记忆法来掌握程序设计各种语句,不能真正理解这些编程方法,达不到自主编程的教学目的,收效甚微。为了改变这一现状,让学生能够真正理解程序结构之间的关系,能够灵活运用各种编程方法进行自主编程,在教学的过程中怎样选择具合适的实例已经成为提高教学效果的关键。我校推行的实例拓展教学法很好地解决了这一难题,在我校大力推行之后,受到广大师生的好评,结构化程序设计的教学效果明显。
1 实例拓展法概述
实例拓展教学法属于教学方式创新的表现形式之一。在这种教学方法中,实例就是整个教学的中心,所有的教学活动都可以通过实例来完成,这也是这种教学方法最典型的特征[2]。运用实例拓展法进行教学,学王可以充分利用各种学习资源,通过自主探索或者相互合作的方式来完成实例任务,同时又会催生出一种新的实例。这种重在学生实践活动的教学方式就被称之为拓展实例法。这种教学方法有助于培养学生的自主学习能力,提高他们独立分析问题和解决问题的能力。在计算机结构化程序设计这种实践性较强的课程教学中,尤其适合使用这种方法。
2 实例拓展法在结构化程序设计教学中的实际应用
在计算机程序设计中,VB语言是一门重要的课程,所以我们就以这门课程为例,对实例拓展教学方法在课堂上的具体应用进行具体。为了便于学生理解和练习,我们将实例分成了两种,一种在老师进行课堂理论教学时应用,另一种则在上机实践活动中应用,下面我们对实例的应用进行出详细介绍。
老师在进行教学设计时,如何安排实例是教学活动的核心所在。在对教学实例进行安排时,老师一定要结合中专学生的年龄特点、心理发展水平和实际生活的需要等因素。同时,实例的拓展应该遵循教育学的客观规律,从易到难,由浅入深,便于学生进行理解[3]。另外,实例的难度应该适中,既不能让他们一看就明白,也不能让他们冥思苦想而不得,要让大部分学生通过自己的思考能够完成,而且要将相关的知识点囊括其中,这样才能充分实例拓展的作用。
在VB结构化程序设计的教学中,课堂内容可以被大致分成顺序结构、选择结构、循环结构、数组应用和过程设计等五个部分[4]。老师在进行教学的过程中一定要全面掌握这些内容之间的内在关系。在本文中,我们将省略比较复杂的程序代码,对这5部分内容运用到的实例进行简单分析。
在进行顺序结构这一内容的教学时,我们可以以计算圆的面积为例,在输入圆的半径之后就可以计算出来。这一实例可以作为入门介绍,理解起来并不困难。在这个实例中,融入了程序的三大基本组成部分,即数据输入、处理和输出,在讲解实例的过程中,就能让学生掌握这一知识点。
在结构程序的教学中,可以在对上述实例进行拓展,提出问题:“假设圆的半径的小于0时该怎们办?”让学生进行思考,然后提出程序设计中的基本语句――选择结构的if语句。为了让学生理解if语句的语法,老师可以让学生在键盘上随意输入三个数字,求解最大值和最小值,在这个过程中介绍if语句的两种格式,即单行格式和多行格式。到这里,我们就在前两个实例的基础上衍生出了新的实例。在了解if语句的格式之后,老师还可以对实例进行进一步拓展,让学生求解分段函数,明确if语句和Select Case这两种多支结构的语句格式。
在循环结构的教学中,我们可以引入一个新的实例来介绍循环结构For Next语句,例如在窗体上显示出1、3、5、7、9这五个奇数。然后让学生对求解上述数字之和,对上述实例进行拓展。进一步掌握For Next语句。在求和的基础上,再一次对实例进行拓展,让学生在100以内,求出1+3+5+7+……的最大奇数值,在讲解实例的过程中引入循环结构中一种重要的语句形式――Do Loop语句。
在讲解数组应用这一内容时,可以在任意输入3个数字求解最大值和最小值这一实例的基础上加以拓展,让学生思考怎样求出任意10个数字的最大值和最小值,通过这个实例引入数组概念和静态数组的使用方法。在这一实例的基础上还能进一步拓展,求出任意数字的最大值和最小,引入动态数组的概念的和具体的使用方法。
在进行过程设计这一内容的教学时,依然在任意求解3个数字的最大值和最小值这一实例的基础上加以拓展,将它们分成两个函数,在讲解的过程中让学生掌握过程的概念以及Function过程的建立和使用方法。在此基础上,对实例进一步拓展,将3个数字的最大值和最小值看成两个Sub过程,让学生通过老师对实例的讲解掌握Sub过程的建立和使用方法[5],并与Function过程进行对比。
以上的实例主要是在引入相关概念和讲解程序基本原理时使用的,需要在多个课时中讲解。根据所讲内容的课时安排,可适当补充其他实例,更加详细地讲解相关知识,也可以补充一些比较有趣实用的综合例子,如制作计算器、打印九九乘法表等,进一步开阔学生的眼界。
经过多年的教学实践,笔者发现在运用实力拓展法之后,学生对程序设计的学习兴趣大增,不管是课堂表现还是作业完成情况都有了明显改善,考试成绩也得到了大幅度提升。通过这种教学方法,学生能够从中学到自己需要的知识,并真正将其转化为实际应用,设计出实用的小软件来,对于他们将来学习其他知识和提高计算机操作水平都有很大的促进作用。
3 结束语
综上所述,在结构化程序设计的教学中,实力拓展法对于提高教学效果,培养学生的计算机运用能力具有非常重要的作用。但是在具体的教学过程中还要从学生的实际情况出发,进行灵活地调整,才能真正激发出学生的兴趣,充分发挥实例拓展法的作用。
参考文献:
[1]武相军,白晨希.实例拓展法在结构化程序设计教学中的应用[J].计算机教育,2013(17):47-49.
[2]傅篱.计算机结构化程序设计教学探索与实践[J].计算机教育,2009(12):78-80.
[3]孙英,徐顺琼,李兴美.C语言中循环结构程序课的教学设计与探讨[J].计算机教育,2009(07):186-187.
[4]周显春.合作探究式教学法在结构化程序设计教学中的运用[J].学习月刊,2010(30):91-92.
结构化程序设计范文2
摘要:本文结合学生的学习心理和认知规律,分析了C语言教学问题的主客观原因,提出了“先过程,后对象”的教学理念,从教材建设、教学内容安排上阐述了教学内容的具体组织实施过程,从教学思路、教学观念、教学手段几方面探讨了教学方法的改革。
关键词:C语言;教学方案;教学组织;教学改革
中图分类号:G642
文献标识码:B
C语言程序设计是一门难学、难懂、难以应用的课程,对学生越来越缺乏吸引力。传统的C语言教材大都存在着内容陈旧、缺乏现代编程思想、过于偏重语法、难度高等缺点,难以提起学习兴趣,学生有畏难情绪。
传统的教学观念,强调先打好基础,然后再进行实践、学习技能。教学实践证明,基础和技能的教学可以同步进行,甚至先教技能再教理论,在不断实践中掌握技能,在技能学习中提高基础理论。这样更适合学生的成长。
为此,我们以社会对学生编程和软件开发能力的需求为依据,参照人才培养模式和专业课程体系改革,对C语言课程教学进行了探索实践。
1 教学方法的改革
在C语言程序设计教学中,我们不再局限于单纯介绍C语言基本语法,而是本着面向未来的精神,把C语言作为一种实践工具,以程序设计方法为主线,以语法和结构为核心,以能力培养和提高学习兴趣为目标,注重理论与实践的结合、先进性与基础性的统一,变应试为应用。
1.1先过程、后对象的教学方法
考虑到绝大部分学生今后不会去搞程序开发,所以思维能力的培养是首要的。从这一角度来说,先过程、后对象的方法更符合学生的认知规律。而过程化的程序设计方法和解决问题的思路更切合学生已有的认知结构,甚至可以说就是我们日常分析问题、解决问题思路和步骤的一种计算机的代码化,更易于被学生接受。
1.2采用一体化教学方法,以程序案例为主教学,通过案例讲解语法要点和难点
“案例驱动”教学法应用在C语言程序设计教学中,就是讲解语法时不停留在理论讨论上,不是教会这一语法现象是什么,而是通过实例教会学生某一语法现象如何应用。比如,算术运算符中的求余运算和整除运算是比较有特色和应用较多的运算,在讲解这两个运算符的时候,就不能只停留在写两个表达式让学生计算出结果来,而应该结合实例让学生知道这样的语法特色用在什么地方,怎么用。如通过求1到5的倒数和这样一个小例子使学生认识整除运算的特点及在今后级数求和运算中如何避免可能引起的误差;通过一个求两位整数的逆序数的小程序,学生就会明白整除运算和求余运算可以用来将一个整数的各个位数分解出来,待后续循环结构介绍完毕时,又可将问题扩展到求任意位数整数的逆序数;当介绍到函数的概念时,又可将问题引申到回文数的判别,这样将一个对学生来说很难的算法问题分散到各个部分来处理,不仅降低了算法讲解的难度,也使学生能真切地体会到学习语法知识的必要性。
教学始终贯穿一个核心实例 ―― 学生成绩管理系统的开发。选择这样一个系统的原因是学生比较熟悉有关成绩的业务和功能,同时开发学生成绩管理系统将涉及到 C 语言程序设计课程的全部知识点。
1.3教学模式特色
集课堂、实验、网络教学于一体,教、学、研有机结合、相互促进,形成了“课内教学+课外俱乐部”、“常规教学+实验教学+网络教学”、“开放实验室+自编教材+教学网站+教辅系统”、“课上现场编程互动+课后作业练习+课下实验练兵+机上考试实战+课外创新实践提高”的立体化教学模式。
2 教学的组织实施
C语言课程的教学目标突出培养学生的编程能力,为实现这一目标,在教学内容上抛弃了过多的语法细节和非通用的或实际用途很少的语言特性,注意强调基础性、实用性、先进性和系统性,兼顾教学和自学两方面的适用性。精简过程化部分的内容、降低其难度、衔接面向对象的方法是关键。主要特点如下:
(1) 以结构化程序设计为重点,面向对象的概念和编程思想为扩展,MFC编程基础为补充,体现了先进性和系统性的统一。
(2) 淡化语法,对语法难点通过实例具体而分散地介绍,舍弃不实用和过于复杂的内容,如位运算、共用体、多继承等概念,体现了基础性和实用性的统一。
(3) 在内容上降低难度,淡化了过于繁杂的指针概念,简化了字符串的处理方法,体现了基础性和先进性的统一。
(4) 将面向对象的一些概念有机地渗透到过程化的内容中,如引用、函数重载、默认参数,这样避免了在面向对象部分集中介绍过多的概念而使学生产生畏难心理。
(5) 强调算法的分析训练,有利于在学时紧张的情况下学生通过自学提高分析问题、解决问题的能力。
3 教学内容安排
结构化的程序设计是本课程教学的基础和重点。结构化程序设计强调按照一定的结构形式来设计和编写程序,不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性,这正是程序设计课程的主要教学目的所在。面向对象的程序设计也是以结构化为基础,这充分表明了结构化程序设计的基础地位。这部分内容在讲解上强调算法分析、淡化语法细节,语法内容是程序实现的手段和工具,而不是学习程序设计的目标。
通过类和对象的介绍使学生了解面向对象方法的实质是强制通过函数来对数据进行操作,从而保证数据操作的安全性,这就是数据隐藏和封装的思想;通过介绍派生类的继承关系,使学生深刻认识面向对象方法对代码重用的支持;而介绍多态性的关键在于让学生了解基于虚函数的多态性的实质是允许将派生类的对象当作基类的对象使用,因而不必为每一个派生类编写功能调用,从而实现接口的复用。这部分内容强调从实用出发,着重介绍基本的、主要的概念。而对从纯理论研究着眼的一些概念,如继承关系中的私有继承以及多继承中的诸多概念等,对于初学者来说过于复杂,要么不做展开讨论,要么就干脆舍弃。
从结构化程序设计到面向对象的方法过渡时,要解决学生思维方式的转换和衔接的问题。由于思维惯性,学生会将面向对象方法和结构化方法的比较贯穿于所设计的程序中。授课时要从学生的认识规律出发,不必急于空泛地强调面向对象方法的好处,要让学生清楚面向对象的程序设计和结构化程序设计一样,只是一种程序设计方法,它是为解决程序复杂性而产生的。就解决简单问题而言,并非一定要采取面向对象的方法,也并非面向对象方法一定比结构化方法更好。结构化程序设计是从一个个具体的局部入手,描述问题的解决过程;而面向对象的方法是从全局的角度抽象出问题所涉及对象的整体框架,再来描述各层次、各部分的内在联系。方法虽然因着眼点不同而不同,但面向对象的方法仍然是以结构化程序设计方法作为其代码基础的。这样学生既了解了它们之间的区别,又认识到了其间的联系。
4 考核体系
课程考核评价方面,建立了全新的考核评价体系,注重过程考核、编程实践能力考核,改革后的课程评价考核体系主要体现了考核形式多样化、考核标准合理化以及考核试卷个性化三大特征。
5 实验教学
C 语言特别适合编写系统软件,执行速度快,代码质量高,在进行系统控制、调节、测量、硬件驱动等方面具有独特优势,这些优势必须要通过实训室中软硬件结合的程序设计方可体现。按照“少而精”的原则,压缩并精选实验项目与内容,提高教学效率,从而使实验教学与理论教学的结合更加紧密。
开放实验室,让学生可自主选择实验时间、自主选择实验内容,为学生提供勇于探索、敢于创新的外部环境。
建设了与课程相配套的具有我院特色的实验环节: 课程设计、项目分析设计、科研开发等。考试方式:上机实验和考试结合,增加机试,借助编程题自动评分系统考核学生实际编程能力;开发编程题自动评分系统,向无纸考试过渡;开发题库系统,为机考提供支持;开发在线教学网站,拓展教学空间。
课内实验教学兼趣味性和实用性于一体,课余通过指导学生参加科技创新活动、各种程序设计大赛、学生俱乐部的各类小型软件开发项目,达到巩固知识、锻炼能力、提高素质的目的。
6 结束语
通过几年来的实践,我们加强教学的内容选取、组织形式、实例贯穿、上机实践、课时安排、教学环境与利用、教学评价与考核等多个环节的改革,取得了相当不错的教学效果。
参考文献:
[1] 龚沛曾等. 案例教学法在"Visual Basic程序设计"课程中的应用[J]. 计算机教育,2004,(5): 62-63.
[2] (美)HM.DeitelP.J.Deitel著.C++编程金典第三版[M].北京:清华大学出版社,2005.
[3] 张春兴.教育心理学[M].杭州; 浙江教育出版社,2006.
[4] 龚沛曾,杨志强主编.C/C++程序设计教程[M].北京:高等教育出版社,2004.
[5] 刘鹏,安玉洁. 微格教学的多元化架构[J]. 电化教育研究,2007,(9).
结构化程序设计范文3
[关键词]软件开发;面向对象方法;结构化方法
中图分类号:tp311.52 文献标识码:a 文章编号:1009-914x(2013)07-0065-01
一、软件系统的开发过程
软件可划分为智能软件、系统软件和应用软件三个领域。由于不同的软件采用的开发知识不同,从而构成各自相应的方法。尽管,智能软件和应用软件分属不同的领域,但智能软件和应用软件都是计算机软件。建造软件系统的解决方案由三个关键的相互关联的基本要素组成:1.软件工程过程(sep)。2.软件工程过程支持环境(sepse,如开发工具和建模语言等)。3.培训、指导和咨询服务。
二、当前主流的软件开发方法
(一)结构化方法
1.结构化程序设计方法
20世纪60年代,围绕是否应取消goto语句,人们展开了一场激烈的争论。最终人们认识到,软件开发中的问题的解决不仅仅是简单的取消goto语句,而是应该改变传统软件开发思维观念,在此基础上创建新的程序设计方法。
围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须考虑到程序的可维护性,重视程序的可读性、清晰性和可理解性,而不能随心所欲地去过分追求程序编写技巧。
由于使用三种基本程序结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以逐渐成为主流的程序结构标准。按照这样的新思维观念,形成了一个新的程序设计方法—结构化程序设计方法,结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。
2.结构化分析方法和结构化设计方法
结构化程序设计方法的巨大成功推动了结构化分析方法和结构化设计方法的发展。结构化分析方法根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模块,从而完成需求分析工作。
结构化设计方法使用模块化和自顶向下逐步细化技术,将数据流图等结构化分析的结果转化为软件系统总体结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构化软件开发有效地遏制了软件危机的蔓延,直到现在仍在发挥作用。结构化方法简单实用,技术成熟,应用广泛,但难以承担大规模的项目或特别复杂的项目,难以解决软件重用(复用)问题,难于适应需求变化,且软件维护依然比较复杂。
(二)面向对象方法
面向对象软件开发方法包括面向对象分析方法(object-orientedanalysis,简称ooa)、面向对象设计方法(object-orienteddesign,简称ood)和面向对象程序设计(object-orientedpro-gramming,简称oop),其核心是面向对象程序设计方法。
一般认为软件由程序和文档组成,而程序又由数据结构和算法组成,在传统的程序设计方法中,数据(数据结构)和施加在数据上的操作(算法)被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合,然而客观世界的实体既有静态的属性(即数据),又有动态的行为(即对数据的操作),因此这两方面内容密切相关,由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,增加了软件开发的难度。
相反,面向对象方法有下列要点:客观世界是由各种对象(object)组成的,复杂对象可以由简单对象组成。有共同属性和方法的一组对象抽象为一个类(class)。一个类(子类)可以继承另外一个类(父类)的方法和属性,这一特性称为继承。对象之间通过传递消息进行通信。
以上特点可以归结为如下的公式:object-ori-ented=object+classification
+inheritance+commu-nicationwithmessages。在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解。这一思维观念创新使得问题空间与解空间的结构基本一致,有利于软件复用,也与人们通常认识世界的思维方式相符,
更利于加强代码的易懂性。
在面向对象程序设计方法基础上,许多面向对象分析和设计(ooa/ood)方法被提出,比较著名的如wirfs-brock方法、booch方法、coad/yourdon方法、对象建模技术omt(objectmodelingtechnique)、面向对象软件工程oose(object-orientedsoftwareengineering)等。这些面向对象分析和设计方法各有各的特点,为了吸收它们各自的优点,形成统一的面向对象分析和设计方法,booch、jacobson和rambaugh三人合作,于20世纪90年代后期提出了统一建模语言uml(unifiedmodelinglanguage)。在uml基础上形成的面向对象软件开发方法开始得到广泛的应用,成为20世纪90年代直到目前占主导地位的软件开发方法,面向对象程序设计方法这一思维观念创新可以被称为程序设计方法的第二次飞跃。
然而,在面向对象方法中,软件开发阶段的划分是比较模糊的,通常要在分析、设计与实现等阶段间进行多次迭代。
(三)形式化方法
随着科技的发展,计算机软件越来越多地被用来执行那些可能会导致严重后果甚至危及生命的任务,例如宇宙飞船发射、铁路安全监控和核反应堆监控等任务,这些系统的软件复杂性远远超过一般软件,如何在软件复杂性增加的情况下仍能确保软件执行结果安全可靠至关重要,达到这一目标的一种途径就是使用形式化方法。
软件工程中的形式化方法就是依靠数学模型和计算来描述和验证一个目标软件系统的行为和特性,包括需求规格、设计和实现等,形式化方法最根本的特征就是建立在严格的数学基础上,如果一个方法有良好的数学基础(这个基础提供一系列精确定义的概念,如:一致性和完整性,以及定义规范的实现和正确性),那么它就是形式化的,典型的以形式化规约语言给出。
形式化方法能很好地解决在软件开发中经常出现的二义性问题,因为形式化方法主要是符号系统,这种符号系统具有一定的数学性质。
形式化方法也有其缺点,首先是规范所使用的数学工具与模型并不能保证规范的绝对正确和安全性;其次是对于任何一种数学规范,在其基本的数学意义下,针对不同的工程背景,并不是只有一种解释。当然,这些不是二义性问题,而是不同领域对规范的解释和相容性问题。
三、结论
计算机和网络技术的发展及其在企业中的应用,产生许多新的生产模式。这些新的模式对产品进行生命周期的设计和管理提出了进一步的要求。结构化方法和面向对象方法是现今主要的软件开发过程方法。结构化方法贯彻自顶向下逐步细化的“功能分解”思想,其基于功能分解的特点,使之不足明显。面向对象方法则是从问题域中客观存在的事物出发来构造系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位,面向对象方法和结构化方法的相比有了更大的进步。
参考文献
结构化程序设计范文4
关键词:C语言教学结构化程序设计编程
成人院校的学生多为在职职工,进修性质的学习,使得学生的学习时间相对较少,学习兴趣也不甚浓厚,对于与工作相关的专业课程,还能够投入时间、精力去学习,而与工作关联较少的基础课程,则往往成为被忽略的对象。C语言作为哈尔滨航空职工大学的专业基础课,在专科和本科都开设了此门课程。
回顾十三年的C语言教学历程,学生从全日制的大专,到函授本科生,教法也从传统的板书,到多媒体教学,从先理论后实践,到理论实践相结合,授课方式不断调整、变化,但对于成人教育的学生来说,收效甚微。于是换位思考,在提高自身教学、教法的基础上,从学生的视角来看,如何能提高对C语言课程的兴趣,怎样才能够增强对C程序的理解,学完C程序后能够收获什么?然后针对这些问题展开教学,取得不错的效果。现就本人在教学过程中总结出的C语言教学存在的问题及教学方式探索共同予以分享、交流。
一、成人院校中C语言教学存在的问题
(一)语言类课程,让人望而生畏。
语言类课程,无论是对于计算机专业还是其他专业的学生,给人的感觉都是抽象、不好描述,毫无规律可循的,再加上用英文编写程序,很容易让人先入为主,敬而远之。既有抵触情绪在先,又有学习困难在后,学生往往缺乏学习兴趣,望而却步或知难而退。
(二)学生基础薄弱,学时短。
作为附属于哈飞公司的成人教育院校,学生多是企业在职职工,人员类型除了技校、职高就是一些职业院校的学生,学习基础薄弱,学习兴趣不足,而且作为在职职工,工学矛盾也较为突出,利用业余时间进行的学习,一是无法保证出勤率,影响听课效果。二是学习时间短,课堂容量大,灌输式的教学,加之学生没有消化的时间,基本上是这次课教师讲明白、学生听明白,下次上课只有老师一个人明白的状态。
(三)学习没有目标,缺乏动力。
作为企业职工再进修,没有找工作的压力,学生没有的学习目标,不知道学习这些课程对自身有什么用处,缺乏动力的学习,就使得学生在学习的课程一旦遇到困难,或者缺次勤,落点课,就知难而退,越不会越不学,越不学越不会,进入恶性循环的怪圈。
C语言的教学过程,学生往往是刚开始时劲头十足,你来我往,课堂互动较多,但当知识累积的越来越多时,学生没有时间、精力去消化、吸收,一旦需要将知识综合运用时(自己编程时),就会遇到瓶颈,在缺乏学习动力的前提下,大多数学生都会选择放弃,小部分学习的学生也是一知半解,似懂非懂,这时课堂互动就会消失,也就意味着后面的课程基本上就白讲了。
结合多年来讲授不同层次、不同专业C语言课程积累的经验,经过对C语言教学教法的不断探索、尝试后,本人对C语言的教学进行了教改尝试,经过实践教学,效果良好。
二、C语言教学改革探索
(一)设定目标,增强学习动力。
成人院校与高校不同,学生的学习目的也不同。在进行C语言教学时,为提起学生的学习兴趣,加强学生的学习动力,我首先根据学生的实际工作情况为学生设立学习目标。
1、职业生涯规划,助力计算机考试
作为企业的一员,在职业生涯发展过程中,除需要相应的技术专业要求,计算机也往往作为考核的一部分。简单的C程序作为计算机考试的一部分,会读程序,分析程序,进行简单的C程序设计,可以为学生的计算机考试锦上添花。
2、学习结构化程序设计语言,为数控加工打基础
作为航空工业,数控加工在公司中占有较为重要的一席之地,我为学习C语言的学生设立的第二个目标是,通过学习C语言,掌握“结构化的程序设计方法”,为数控加工的编程打下基础,从而调动学生学习的积极性。
(二)精简课程,宁缺毋滥。
在为学生设立学习目标后,针对大多数学生的基础,对所教授课程进行删减,不求大而全,只求短而精,让学生在能够接受的范围内,做到C语言入门级,实现课前设计的学习目标。如果有特殊需要的学生,在上机训练的间隙,可以进行单独交流。比如,C语言的课程,理论加上机训练36学时,学生讲到数组时,就已经摸不着头脑。本着学即能用的原则,将课程减到结构化程序设计,让学生能够熟练使用三种结构化的程序设计语句。
(三)通过程序教学,细化、深化知识点。
鉴于成人院校学生的特殊性及对语言的认知程度,也通过几年的教学摸索,发现灌输式的理论教学已很难被学生所接受,课堂效果与知识综合运用的效果不甚理想。
通过挑选几个简单的不同类型的程序,进行对比讲解,找出其中的共同点,让学生了解程序的构成,并将程序的构成模块化,规律化。学生编程时采用“填空式”进行。比如,在学习C语言初期,摒弃掉枯燥的理论讲解,通过直接对比“输出一行信息”和“计算两个整数的和”两个程序,让学生知道程序的基本构成,必须包括的部分(告诉学生这些都是固定的,编程时加上即可):主函数的形式main( ){ },主函数中必须有语句,且语句必须以;结束,在“输出一行信息”中的语句是由输出函数(printf函数)构成,函数之所以可以变成语句,就是因为;的存在,输出函数的标准格式是什么样,这样逐层剥茧,由外而内,由粗至细,一点点讲解,渐进式的添加到程序中。当学生对程序逐渐熟悉之后,在反其道行之,通过程序,逐步细化、深化需要掌握的理论知识。
在整个授课过程中,始终保持以程序案例为主线,通过程序来逐步加入新的知识点。同时让学生上机调试程序,通过调试过程中的错误提示来加深对知识点的理解和运用。解决程序错误的过程就是知识点重复学习、加深印象的一个过程,有助于学生牢记知识点。
(四)锻炼学生读程序、分析程序的能力。
在C语言学习的过程中,我不急于要求学生编写程序。而是通过编写不同类型的小程序让学生来读,分析程序运行后的结果,再通过上机调试,跟踪程序运行的方式,找出程序分析过程中出现错误的地方。比如:以Turbo C为例,在进行到结构化程序设计部分时,学生对于结构化程序设计理解不够。在上机运行过程中,通过让学生使用F7来进行选择结构的单步跟踪,有循环结构的时候使用F8进入循环内部跟踪,并通过使用变量跟踪的功能,来分析每发生一次循环变量的变化。通过这种分步跟踪程序步骤的方式,使学生能够清晰地跟踪到程序的具体执行过程,有助于学生对程序的理解和分析。
(五)结合教学,将课堂搬到多媒体机房。
为了能更好地贯彻理论实践相结合的教学方法,将课堂搬到多媒体机房进行的教学方式是最好的,在多媒体课件演示、白板板书和实际上机训练三方面的交互配合下,学生学习的知识能够及时得到验证,发现的问题能够及时得到解决,从而使学生对C程序的理解和认知程度有了较大的提高,大大地延长了学生保持学习热情的时间。为学习目标的实现奠定基础。
结构化程序设计范文5
关键词:C语言;编译器;教学问题;教学改革
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2015)06-0143-02
On the Teaching of C Language
WANG Xiao-li, HUANG Yan
(Henan Information Engineering College, Zhengzhou 450000, China)
Abstract:C Language is a good structured programming language. At present, it is an important basic and practical course on computer, information management and so on.But now as for the teaching process, the different operating results caused by the diversification of operating environment makes the students very confused. Therefore, we should emphasize the results of the calculation process in classroom teaching and practice. Thus, this paper will analyse from different operating results plus decrement problems.
Key words:C Language; compiler; teaching problem; reform in education
当前,电子信息化的时代,计算机的应用技术飞速发展,程序设计技术也从结构化程序设计技术不断地向面向对象程序设计技术过渡,虽然,对于规模较大的应用程序,总体框架是由面向对象程序设计而搭建,但在局部实现过程还有许多仍需采用结构化程序设计技术。C语言是高级语言中的低级语言,也是一种很好的结构化程序设计语言,因此,在全国各高校《C语言程序设计》依然占据这重要的地位,也是计算机、信息管理相关专业必修的一门基础课程。但其丰富的功能、多样化的运行环境,给初学者带来了很多困惑。本文就C语言教学过程中具体遇到的问题进行分析。
1 C语言的优势与特点
C语言是目前使用最广泛的一种计算机高级程序设计语言,具有数据类型丰富,概念简洁,通用性好,表达能力强等特点,而且用法灵活,可读性好,有利于读者培养其良好的编程习惯,是一种既适合系统程序设计,又适合应用程序设计。因此,赢得了广大编程人员的喜爱,得以广泛应用。由此,也成为高校中计算机及相关专业的必修课。
每一种事物得以存在和发展,都有其自身不可忽略的特点,语言也不例外,当然,C语言的发展也有着不同于甚至优于其他语言的特点。具体特征包括:
1) C语言是一种结构化语言
结构化语言就是将自然语言加上程序设计语言的控制结构就成了结构化语言,它显著特点就是代码和数据的分隔化,换言之,程序各部分除必要信息交流外彼此互不影响。
2) 简洁、紧凑、灵活
C语言一共有43个关键字,包括通用关键字32个,扩充关键字11个;9种控制语句。程序书写形式自由,主要用小写字母表示。
运算符丰富。C的运算符包含的范围很广泛,共有34种运算符。C把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。
3) 语法限制不严格
C语言语法限制不太严格,程序设计自由度比较大,例如对数组边界不作检查,整型、字符型数据可以通用等等,这些都需要由程序编写者自行确保程序的正确性。
4) 运算符丰富
C语言共有44种运算符。C语言中把括号、赋值、强制类型转换等等都作为了运算符处理,即可以实现其他高级语言中难以实现的运算。此外,C语言数据结构也非常丰富,基本涵盖了各种数据类型。主要包括基本类型(字符型、整型、实型、枚举型)、空类型(void)、构造类型(数组、结构体、共用体)和指针类型等。从而可以实现各类复杂的数据结构(如链表、树、栈等)的运算。
5) 功能强大
C语言有着丰富的库函数,强大的图形功能及其预处理能力,与其他语言容易接口,可直接对硬件进行操作。比如PASCAL语言、汇编语言、数据库语言等。而且,C语言还可以直接调用DOS命令。由此,当前工业计算机控制系统开发过程中,C语言成为了越来越多编程人员编写控制软件的首选。
由此,有人把C语言称为“高级语言中的低级语言” ,也有人称它为“中级语言”。它具有很多只有像汇编语言才具备的功能,比如直接访问物理地址等。但它又具有高级语言的编写容易,较高的可读性特点,这就使程序员不仅减轻负担,而且效率提高,同时,C语言编写的程序具有更好的可移植性。
2 C语言教学问题
目前,结合C语言的特点,C语言的教学方法也越来越多样化,而随着教学改革,在教学过程中采用的编译运行环境也多样化,方便C程序的实现的同时也给教学过程带来了相应的问题。
在某些运行问题中不同的运行环境造成的结果是截然不同的。目前常用的C语言的编译运行环境包括Turbo C、Visual C++、Vs2008、Win-TC、C-free等,在教学过程中,运用比较多的就是Turbo C、Visual C++、C-free。但是就在这些编译运行环境讲解时问题也应然而生,尤其在自加自减运算过程中,所得结果是截然不同的,主要原因是自加自减自身运算规律和编译过程中运算顺序不同而造成,例如,现有程序:
#include
main( )
{
int i=5,j=4,p,q;
p=(i++)+(i++)+(i++); /*后置形式。*/
q=(--j)+ (--j)+(--j); /*前置形式。*/
printf(“i=%d,p=%d\n”,i,p); /*输出i,p运行结果*/
printf(“j=%d,q=%d\n”,j,q); /*输出j,q运行结果*/
}
针对于编译器Turbo C而言,运行结果:
i=8,p=15
j=1,q=3
针对于VC++6.0而言,运行结果:
i=8,p=15
j=1,q=5
分析在此程序中对于Turbo C和VC++6.0两种编译器运行结果,可以看出,对于后置“先用后变”的规律是指在下一条语句执行前统一改变,而不是刚用完就变,相当于p=i+i+i;i=i+1, i=i+1, i=i+1; 对于前置“先变后用”的规律,执行结果就会与所用编译器有关,针对C语言自身的编译器Turbo C而言,先进行三次自减运算后再取j的值相加,相当于j=j-1, j=j-1, j=j-1;q=j+j+j;针对目前各类考试而使用的VC++6.0环境分析,先进行两次自减运算,取其相加后,再进行第三次自减,取其相加得q值,等价于j=j-1, j=j-1;q=j+j; j=j-1;q=q+j;由此,学生第一时间看到课本的结果和上机实践运行的结果就有了出入,造成了学生的困惑。此时,就应该在上课时具体分析后再让学生进行上机实践。
在实践过程中要强调的是让学生有目的地摒弃课本上已经过时的知识点,而找到目前正在盛用的知识。因此,在教学中不论是解决自加自减问题,还是空间分配问题,运行结果与编译器有关的,我们都应该强调的是目前各类考试和实际操作所涉及的VC++6.0的运行规律及结果,而非课本中给出的Turbo C运行的规律和结果。
3 C语言教学改革
针对于C语言教学过程中出现的编译器的差异而造成了结果不同,我们在教学过程中就不可以单一的针对课本讲解,需要结合目前实际应用着手,因此,团队合作项目驱动式实践教学有效地改善了教学问题。
德国教育学家第斯多惠曾说:“教学的艺术不在于传授本领,而在于激励、呼唤。”团队合作项目驱动式实践教学主要是以现实问题为出发点,结合教学内容和进度选择合适的项目,以教师为引导,由团队合作完成具体任务。由此,学生可以从简单的小程序的编写开始了解程序基本语法和结构,并且以团队合作形式可以互补每个学生的特点和知识点,逐渐加深知识点并达到灵活运用语言编程解决一定难度的实际问题。从而改变以教材实例为主体,减少学生死记课本知识,不会灵活应用的现象,而且激发了学生的思维和合作。并且还可以摒弃C语言讲解过程中出现大量不同编译器出现不同结果的情况出现。更实际地让学生学以致用,利用目前最为超前的编译器实现程序的运行。而非纯理论的研究程序的运行过程。
在教学过程中,团队合作项目驱动式实践任务过程中,以一个实际问题为出发,由易向难过渡,贯穿整个C语言的基本知识点,从而可以使学生连贯性地掌握每一个知识点,并且团队合作过程中每完成一个阶段每个人都会体验其中成功的喜悦,可以直接提升学生的学习兴趣,并且以实践弥补课本中古老的问题。从而全面地培养学生自主学习构建知识的能力,充分地体现了应用型教学“以能力为本位”的价值取向。
4 结论
教学改革的研究和实践永远是一项值得关注并且持续探索的过程,改善传统教育中过分重视灌输课本知识的现象是刻不容缓的,着重于学生素质能力和实践能力的培养是目前教学的重中之重的任务,所以需要快速减少对于C语言这类课程出现的课本与实践结论冲突的问题。因此,为了迎合目前国家的发展,满足国家人才的需要,教师在教学中就应该及时改变不完善的传统教学模式,不断进行自我学习、自我探索,及时调整符合所带课程的教学方案,逐渐提高学生分析问题、解决问题、驾驭知识的能力,培养国家真正需要的科技人才,在实践中摒弃已经过时的知识,更新现有的知识体系。
参考文献:
[1] 王窕珊.C语言编程教学方法探讨[J].计算机光盘软件与应用, 2011(9).
[2] 曹莎莎. C语言教学研究与思考[J]. Value Engineering, 2012,31(1).
[3] 邓维斌,周玉敏.提高C语言实验教学效果的探索[J].实验室研究与探索,2006,25(3).
[4] 张学林,陈齐超,段珊,胡波.项目教学法在“C语言课程设计”中的研究与应用[J].实验技术与管理,2011,28(2).
[5] 夏欢庆.C语言在计算机中的应用[J].电脑知识与技术, 2011,7(23).
结构化程序设计范文6
【关键词】 面向过程 面向对象 开发方法 区别
在软件开发过程中,有两个非常成熟、经典的开发方法:面向过程方法和面向对象方法。本文就个人认识对这两种方法的区别和联系做出简要阐述。
一、面向过程程序设计
面向过程程序设计基于结构化程序设计思想,强调程序结构规范为顺序、选择和循环三种基本结构,利用这三种结构的组合、嵌套,可以实现任何复杂的程序设计。遵循结构化程序设计思想设计的程序具有结构简单、规范、易理解、易维护等特点,这给程序的设计和维护带来了质的飞跃。
面向过程的程序设计方法,以算法为核心,把数据和处理过程作为相互独立的部分,数据代表问题域中的实体,而程序代码则用于处理这些数据。把数据和代码作为分离的实体,采用计算机的观点处理问题。计算机处理问题是分步进行的,要想让计算机实现某种功能,必须告诉计算机详细的解题步骤,即向计算机详细描述求解算法。所以,面向过程程序设计就是按照计算机的要求,围绕算法进行程序设计。
面向过程的程序设计方法,实质上是自顶向下的功能分解法,通过逐步求精的设计过程把程序分解成单一处理功能的模块,进而通过参数传递调用相应模块以实现程序的功能。系统功能的实现最终落实在相应的功能模块上,此功能模块可以理解为函数、过程、子程序、宏等。
以下通过C语言程序案例表述面向过程程序设计。
案例:
主功能模块main(),通过调用子功能模块swap(),实现两个整型变量值的交换。
编码实现:
#include “stdio.h”
int swap(int *p,int *q)
{int t; t=*p;*p=*q;*q=t;}
void main()
{int x,y;
scanf(“%d%d”,&x,&y);
printf(“交换前x=%d,y=%d\n",x,y);
swap(&x,&y);
printf(“交换后x=%d,y=%d\n",x,y);
}
二、面向对象程序设计
面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。
面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。
在面向对象的程序设计中,对象是组成程序的基本模块。
以下通过C++语言程序案例表述面向对象程序设计。
案例:
主功能模块main(),通过调用swap类的对象change,实现两个整型变量值的交换。
编码实现:
#include “iostream.h”
class swap
{private:
int t;
public:
void exchange(int &x,int &y){t=x;x=y; y=t;}
};
void main()
{int m,n;
cin>>m>>n;
swap change;
cout
change.exchange(m,n);
cout
}
三、总结
面向对象的程序设计方法和面相过程的程序设计方法有着本质的区别。面向对象程序设计使用现实世界的概念抽象地思考问题,进而自然地解决问题,强调对现实世界的模拟而不强调算法,鼓励项目组人员在软件开发的过程中用应用领域的概念去思考,用对象的分解取代面向过程方法学中的功能分解,不再强调计算机解决问题的观点,而是重视现实世界的模型创建。
参 考 文 献