答案是D,程序的易读性,原因如下:
结构化程序设计思想是最早由EWDijikstra在1965年提出的,结构化程序设计思想确实使程序执行效率提高,程序的出错率和维护费用大大减少结构程序设计就是一种进行程序设计的原则和方法。
按照这种原则和方法可设计出结构清晰、容易理解、容易修改、容易验证的程序结构化程序设计的目标在于使程序具有一个合理结构,以保证和验证程序的正确性,从而开发出正确、合理的程序。
“面向结构”的程序设计方法即结构化程序设计方法, 是“面向过程”方法的改进, 结构上将软件系统划分为若干功能模块, 各模块按要求单独编程, 再由各模块连接, 组合构成相应的软件系统。 该方法强调程序的结构性, 所以容易做到易读, 易懂;该方法思路清晰, 做法规范, 深受设计者青睐。
扩展资料:
结构化程序设计的存在问题
1软件的重用性差
重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质,软件重用性是软件工程追求的目标之一,如果软件的重用性较差那么软件的造价就相对高。
2软件的可维护性差
软件工程强调软件的可维护性,强调文档资料的重要性。规定最终的软件产品应该由完整、一致的配置成分组成,在软件开发过程中始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。
实践证明用传统方法开发出来的软件维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3开发出的软件不能真正满足用户需要
结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
参考资料来源:百度百科-结构化程序设计
结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。其概念最早由EWDijikstra在1965年提出的。是软件发展的一个重要的里程碑,它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造 。
详细描述处理过程常用三种工具:图形、表格和语言。
图形:程序流程图、N-S图、PAD图
表格:判定表
语言:过程设计语言(PDL)
结构化程序设计的概念是尼克劳斯�6�1沃思Niklaus Wirth在60年代末提出的,其实质是控制编程中的复杂性。结构化程序设计曾被称为软件发展中的第三个里程碑。该方法的要点是:
(1) 没有GOTO语句;//在有资料里面说可以用,但要谨慎严格控制GOTO语句,仅在下列情形才可使用:
·用一个非结构化的程序设计语言去实现一个结构化的构造。
·在某种可以改善而不是损害程序可读性的情况下。
(2) 一个入口,一个出口;
(3) 自顶向下、逐步求精的分解;
(4) 主程序员组。
其中(1)、(2)是解决程序结构规范化问题;(3)是解决将大划小,将难化简的求解方法问题;(4)是解决软件开发的人员组织结构问题。 所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并指导开发维护软件。
对象是由数据和容许的 *** 作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。
面向对象的程序设计(OOP)并不是刚刚提出来的,主要是由于C++和Java这类语言的传播,OOP最近才显得越来越重要了。为什么面向对象的设计如此流行呢?从理论上讲,用面向对象的语言可以处理任何其他计算机语言所能完成的事情。然而当建立基于智能体的模型时,OOP对于开始的程序员和后来的程序读者都表现出了很大的优势。
面向对象的程序设计特点
1编程模型
所有计算机均由两种元素组成:代码和数据精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕"谁正在受影响"而编写的
第一种编程方式叫做"面向过程的模型",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码如 C 等过程化语言
第二种编程方式叫做"面向对象的模型",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处
2抽象
面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性
管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块例如,一个计算机系统是一个独立的对象而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱动器,DVD-ROM,软盘,音响等,这些子系统每个又由专门的部件组成关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性
面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应
/ (我的理解)
计算机是一个实体,我要输入字符,显示器显示出来,那么
计算机(对象)输入(键盘属性)显示(显示方法)
使用分层来引用, *** 作而不用管计算机内部如何处理
只要有计算机对象,它就能响应我的 *** 作,而我敲键盘,
计算机对象就把这个消息传给屏幕,屏幕显示
/
计算机对象包含了它所有的属性,以及 *** 作,这就是面向对象程序设计的三大原则之一:封装
3封装
封装是一种把代码和代码所 *** 作的数据捆绑在一起,使这两者不受外界干扰和误用的机制封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问对包装器内部代码与数据的访问通过一个明确定义的接口来控制封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用
在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码)一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的所以对象也叫做类的实例
在定义一个类时,需要指定构成该类的代码与数据特别是,类所定义的对象叫做成员变量或实例变量 *** 作数据的代码叫做成员方法方法定义怎样使用成员变量,这意味着类的行为和接口要由 *** 作实例数据的方法来定义
由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西私有的方法数据只能通过该类的成员代码来访问这就可以确保不会发生不希望的事情
4继承
继承是指一个对象从另一个对象中获得属性的过程是面向对象程序设计的三大原则之二,它支持按层次分类的概念例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种如果不使用层次的概念,每个对象需要明确定义各自的全部特征通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的 各个属性,然后从父类中继承它的通用属性因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例一个深度继承的子类将继承它在类层次中的每个祖先的所有属性
继承与封装可以互相作用如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念新的子类继承其所有祖先的所有属性子类和系统中的其他代码不会产生无法预料的交互作用
5多态
多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用"一个接口,多个方法"来描述可以通过方法的参数和类型引用
6封装,继承,多态的组合使用
在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序经过仔细设计的类层次结构是重用代码的基础封装能让程序员不必修改公有接口的代码即可实现程序的移植多态能使程序员开发出简洁,易懂,易修改的代码例如:汽车
从继承的角度看,驾驶员都依靠继承性来驾驶不同类型(子类)的汽车,无论这辆车是轿车还是卡车,是奔驰牌还是菲亚特牌,驾驶员都能找到方向盘,手刹,换档器经过一段时间驾驶后,都能知道手动档与自动档之间的差别,因为他们实际上都知道这两者的共同超类:传动装置
从封装的角度看,驾驶员总是看到封装好的特性刹车隐藏了许多复杂性,其外观如此简单,用脚就能 *** 作它发动机,手刹,轮胎大小的实现对与刹车类的定义没有影响
从多态的角度看,刹车系统有正锁反锁之分,驾驶员只用脚踩刹车停车,同样的接口可以用来控制若干种不同的实现(正锁或反锁)
这样各个独立的构件才被转换为汽车这个对象的同样,通过使用面向对象的设计原则,程序员可以把一个复杂程序的各个构件组合在一起,形成一个一致,健壮,可维护的程序
面向过程的结构化程序设计语言有C、C++;
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。
“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。
面向对象的程序设计(Object-Oriented Programming,简记为OOP)
比如以公共汽车而言。
“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。
可能不是很准确但是简单的理解,面向对象程序设计就是把几乎所有的东西都抽象成类和对象,你的程序实现都是对对象进行处理。
如,面向对象中,你定义一个类--人,
class person
{
方法1;
方法2;
}; 你只要定义人的一个对象调用人的方法,就知道了人的全部信息和功能
person zhangsan;
zhangsan方法1;
zhangsan方法2;
而面向过程时你必须一步一步的来,定义一个人,你必须从姓名、身高一步一步来。
程序设计主要方法有面向结构的方法和面向对象的方法。
结构化程序设计
随着计算机的价格不断下降,硬件环境不断改善,运行速度不断提升。程序越写越大,功能越来越强,讲究技巧的程序设计方法已经不能适应需求了。记得是哪本书上讲过,一个软件的开发成本是由:程序设计 30% 和程序维护 70% 构成。这是书上给出的一个理论值,但实际上,从我十几年的工作经验中,我得到的体会是:程序设计占 10%,而维护要占 90%。也许我说的还是太保守了,维护的成本还应该再提高。下面这个程序,提供了两种设计方案,大家看看哪个更好一些那?
题目:对一个数组中的100个元素,从小到大排序并显示输出。(BASIC)
方法1:冒泡法排序,同时输出。
FOR I=1 TO 100
FOR J=I+1 TO 100
IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
NEXT J
A[I]
NEXT I
方法2:冒泡法排序,然后再输出。
FOR I=1 TO 100
FOR J=I+1 TO 100
IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
NEXT
NEXT
FOR I=1 TO 100
A[I]
NEXT
显然,“方法1”比“方法2”的效率要高,运行的更快。但是,从现在的程序设计角度来看,“方法2”更高级。原因很简单:(1)功能模块分割清晰——易读;(2)也是最重要的——易维护。程序在设计阶段的时候,就要考虑以后的维护问题。比如现在是实现了在屏幕上的输出,也许将来某一天,你要修改程序,输出到打印机上、输出到绘图仪上;也许将来某一天,你学习了一个新的高级的排序方法,由“冒泡法”改进为“快速排序”、“堆排序”。那么在“方法2”的基础上进行修改,是不是就更简单了,更容易了?!这种把功能模块分离的程序设计方法,就叫“结构化程序设计”。
面向对象的程序设计
随着程序的设计的复杂性增加,结构化程序设计方法又不够用了。不够用的根本原因是“代码重用”的时候不方便。面向对象的方法诞生了,它通过继承来实现比较完善的代码重用功能。很多学生在应聘工作,面试的时候,常被问及一个问题“你来谈谈什么是面向对象的程序设计”,学生无言,回来问我,这个问题应该怎么回答。我告诉他,你只要说一句话就够了“面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。”后来再有学生遇到了这个问题,只简单的一句对答,对方就对这个学生就刮目相看了(学生后来自豪地告诉我的)。为什么那?因为只有经过彻底的体会和实践才能提炼出这个精华。
面向对象的设计方法和思想,其实早在70年代初就已经被提出来了。其目的就是:强制程序必须通过函数的方式来 *** 纵数据。这样实现了数据的封装,就避免了以前设计方法中的,任何代码都可以随便 *** 作数据而因起的BUG,而查找修改这个BUG是非常困难的。那么你可以说,即使我不使用面向对象,当我想访问某个数据的时候,我就通过调用函数访问不就可以了吗?是的,的确可以,但并不是强制的。人都有惰性,当我想对 i 加1的时候,干吗非要调用函数呀?算了,直接i++多省事呀。呵呵,正式由于这个懒惰,当程序出BUG的时候,可就不好捉啦。而面向对象是强制性的,从编译阶段就解决了你懒惰的问题。
巧合的是,面向对象的思想,其实和我们的日常生活中处理问题是吻合的。举例来说,我打算丢掉一个茶杯,怎么扔那?太简单了,拿起茶杯,走到垃圾桶,扔!注意分析这个过程,我们是先选一个“对象”------茶杯,然后向这个对象施加一个动作——扔。每个对象所能施加在它上面的动作是有一定限制的:茶杯,可以被扔,可以被砸,可以用来喝水,可以敲它发出声音;一张纸,可以被写字,可以撕,可以烧。也就是说,一旦确定了一个对象,则方法也就跟着确定了。我们的日常生活就是如此。但是,大家回想一下我们程序设计和对计算机的 *** 作,却不是这样的。拿DOS的 *** 作来说,我要删除一个文件,方法是在DOS提示符下:c:> del 文件名<回车>。注意看这个过程,动作在前(del),对象在后(文件名),和面向对象的方法正好顺序相反。那么只是一个顺序的问题,会带来什么影响那?呵呵,大家一定看到过这个现象:File not found “啊~~~,我错了,我错了,文件名敲错了一个字母”,于是重新输入:c:> del 文件名2<回车>。不幸又发生了,计算机报告:File read only 哈哈,痛苦吧:)。所以DOS的 *** 作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。objfun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。
同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头方法有(函数):能跑、能闻、汪汪叫如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。
以上就是关于结构化程序设计主要强调的是全部的内容,包括:结构化程序设计主要强调的是、结构化程序设计和面向对象程序设计的主要特征各是什么、面向过程的结构化程序设计语言有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)