什么是结构化程序设计?

作者&投稿:剧寒 (若有异议请与网页底部的电邮联系)
~ 程序设计主要方法有面向结构的方法和面向对象的方法。
结构化程序设计

   随着计算机的价格不断下降,硬件环境不断改善,运行速度不断提升。程序越写越大,功能越来越强,讲究技巧的程序设计方法已经不能适应需求了。记得是哪本书上讲过,一个软件的开发成本是由:程序设计 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的操作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。obj.fun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。

   同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头......方法有(函数):能跑、能闻、汪汪叫......如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小......。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。


结构化程序设计的含义
结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。结构化程序设计方法是按照模块划分原则以提高程序可读性和易维护性、可调性和可扩充性为目标的一种程序...

结构化程序设计,程序是由什么构成
算法:算法是计算机执行任务的步骤。它规定了如何处理数据以实现特定的功能,如排序、搜索、筛选等。一个好的算法应当在给定时间内有效地执行。模块化设计:模块化设计是将程序分解为更小的、可复用的部分或模块。这些模块通常具有特定的功能,并可以独立地进行测试和修改。控制结构:控制结构定义了程序中...

什么是结构化程序设计?
第一题中,一种还没有划分类别的程序,这个程序包含了一种基本结构,但是我们不知道它是否也具备实现另外两种基本结构的功能,所以不能判断他是不是结构化程序,因为结构化程序必需具有实现三种基本结构的能力。也就是说:有一个但是不一定有全部。第二题中,说明了是结构化程序设计,即这个程序已经被...

什么是结构化程序设计方法?
由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。 按照结构化程序设计的观点,任何算法功能都可以通过由程序模...

什么是结构化设计?
3、循环结构是指可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构 。可以看成是一个条件判断语句和一个向回转向语句的组合。结构化程序设计方法的主要原则 可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好...

结构化程序设计的具体概念
结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的...

结构化程序设计的工作原理是什么?
是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。中文名:结构化程序设计 外文名:structured programming 提出人:E.W.Dijikstra 时间:1965年 分享 概述 概念 其概念最早由E.W.Dijikstra在...

什么是模块化设计和结构化程序设计
逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。

结构化程序设计的基本原则是什么?
结构化程序设计是一种基于模块化和层次化的编程方法,其核心原则包括以下几点:1、单一功能原则(Single Responsibility Principle, SRP):每个模块或函数只应该负责一个单一的功能,以确保代码的清晰性和可维护性。2、开放封闭原则(Open-Closed Principle, OCP):软件实体(类、模块等)应该对扩展开放,...

结构化程序设计的概述
详细描述处理过程常用三种工具:图形、表格和语言。图形:程序流程图、N-S图、PAD图表格:判定表语言:过程设计语言(PDL)结构化程序设计曾被称为软件发展中的第三个里程碑。该方法的要点是:(1) 主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用...

米林县13432158022: 结构化程序设计 - 搜狗百科
良关川芎: 结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则.结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易.结构化程序设计的三种基本结构是:顺序结构、选择结构和循环结构.结构化程序设计曾被称为软件发展中的第三个里程碑.结构化程序设计通常使用自上往下的设计模型,开发员将整个程序结构映射到单个小部分.当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处.

米林县13432158022: 2、 什么是结构化程序设计?其基本思想是什么? -
良关川芎:[答案] 结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则.其概念最早由E.W.Dijikstra在1965年提出的.是软件发展的一个重要的里程碑,它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用...

米林县13432158022: 结构化程序设计的基本概念是什么? -
良关川芎: 结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础.由于模块相互...

米林县13432158022: 什么叫结构化的程序设计? 它的主要内容是什么? -
良关川芎: 任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构三种基本结构组成.在构造算法时,也仅以这三种结构作为基本单元,同时规定基本结构之间可以并列和互相包含,不允许交叉和从一个结构直接转到另一个结构的内部去....

米林县13432158022: 什么是结构化程序设计?它有哪几种基本程序结构?请说明理由. -
良关川芎: 结构化程序设计就是程序的设计按照一定的规范进行设计,这种程序设计方法利于程序的编写、阅读、修改和维护,减少了程序的出错的概率,提高了程序的可靠性,保证了程序的质量. 结构化程序设计方法的基本思想是:把一个复杂问题的求解过程分阶段进行.具体地说,就是“自顶向下、逐步细化”. (1)顺序结构及程序设计; (2)选择结构及程序设计; (3)循环结构及程序设计;

米林县13432158022: 什么叫结构化程序设计?
良关川芎: 程序结构是按功能划分为若干个基本模块 每一模块内部均是由顺序、选择和循环三种基本结构组成

米林县13432158022: 什么是结构化程序设计?他有哪几种基本程序结构?说明由…
良关川芎: c语言就是结构化的程序设计语言. 有三种结构,分别是: 顺序结构(一条条语句,有逻辑的顺序写下来; 循环结构(for/while/do....while 这三种循环结构; 可以嵌套循环 分支结构(switch/if/if-else/if--else if--else;可以嵌套分支. 由于模块相互独...

米林县13432158022: 什么是结构化程序设计方法以及它的优缺点? 急求 -
良关川芎: 结构化程序设计方法也称传统方法,它采用结构化技术(结构化技术分析 结构化设计 结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持机构化技术的运用 (1)优点 ①整体思路清楚,目标明确.②设计工作中阶段性非常强,有利于系统开发的总体管理和控制.③在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷.(2)缺点 ①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题.②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求.③系统的开发周期长.全部答案来至于软件工程导论的课本

米林县13432158022: 什么是结构化程序设计方法?这种方法有哪些优点和缺点 -
良关川芎: 结构化程序设计方法是按照模块划分原则以提高程序可读性和易维护性、可调性和可扩充性为目标的一种程序设计方法.结构化程序设计适用于程序规模较大的情况,对于规模较小程序也可采用非结构化程序设计方法. 优点:1、整体思路清...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网