结构化设计方法及编程语言有何特点?它们有哪几种基本控制结构?

我永远的真爱2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
beaubelle 共回答了18个问题 | 采纳率100%
结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的.转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能.如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错.尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的.为此提出了程序的三种基本结构.
在讨论算法时我们列举了程序的顺序、选择和循环三种控制流程,这就是结构化程序设计方法强调使用的三种基本结构.算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构.1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成.所以,这三种结构就被称为程序设计的三种基本结构.也是结构化程序设计必须采用的结构.
1. 顺序结构
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如图1-6所示.图中的s1和s2表示两个处理步骤,这些处理步骤可以是一个非转移操作或多个非转移操作序列,甚至可以是空操作,也可以是三种基本结构中的任一结构.整个顺序结构只有一个入口点a和一个出口点b.这种结构的特点是:程序从入口点a开始,按顺序执行所有操作,直到出口点b处,所以称为顺序结构.上一节图1-2表示的就是一个顺序结构的流程图.事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的.例如,在图1-3、图1-4和图1-5所表示的流程图中,其总体结构流程都是自上而下顺序执行的.


2.选择结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行.选择结构有单选择、双选择和多选择三种形式.
双选择是典型的选择结构形式,其流程如图1-8所示,图中的s1和s2与顺序结构中的说明相同.由图中可见,在结构的入口点a处是一个判断框,表示程序流程出现了两个可供选择的分支,如果条件满足执行s1处理,否则执行s2处理.值得注意的是,在这两个分支中只能选择一条且必须选择一条执行,但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点b处.前面的图1-3中就采用了双选择结构流程图.
当s1和s2中的任意一个处理为空时,说明结构中只有一个可供选择的分支,如果条件满足执行s1处理,否则顺序向下到流程出口b处.也就是说,当条件不满足时,什么也没执行,所以称为单选择结构,如图1-7所示.

多选择结构是指程序流程中遇到如图1-9所示的s1、s2、……、sn等多个分支,程序执行方向将根据条件确定.如果满足条件1则执行s1处理,如果满足条件n则执行Sn处理,总之要根据判断条件选择多个分支的其中之一执行.不论选择了哪一条分支,最后流程要到达同一个出口处.如果所有分支的条件都不满足,则直接到达出口.有些程序语言不支持多选择结构,但所有的结构化程序设计语言都是支持的,C语言是面向过程的结构化程序设计语言,它可以非常简便的实现这一功能.本书在第五章将详细介绍各种形式的选择结构应用问题.
3.循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环.在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环,其流程如图1-10所示.图中虚线框内的操作称为循环体,是指从循环入口点a到循环出口点b之间的处理步骤,这就是需要循环执行的部分.而什么情况下执行循环则要根据条件判断.

当型结构:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处.因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环.其流程如图1-10(a)所示.
直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断.因为是"直到条件为真时为止",所以称为直到型循环.其流程如图1-10(b)所示.本章图1-5用迭代法求和的流程图就是一个典型的直到型循环结构.
同样,循环型结构也只有一个入口点a和一个出口点b,循环终止是指流程执行到了循环的出口点.图中所表示的S处理可以是一个或多个操作,也可以是一个完整的结构或一个过程.

整个虚线框中是一个循环结构.
通过三种基本控制结构可以看到,结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环.在程序的静态形式与动态执行流程之间具有良好的对应关系.
1.3.2 N-S流程图
N-S流程图是结构化程序设计方法中用于表示算法的图形工具之一.对于结构化程序设计来说,传统流程图已很难完全适应了.因为传统流程图出现得较早,它更多地反映了机器指令系统设计和传统程序设计方法的需要,难以保证程序的结构良好.另外,结构化程序设计的一些基本结构在传统流程图中没有相应的表达符号.例如,在传统流程图中,循环结构仍采用判断结构符号来表示,这样不易区分到底是哪种结构.特别是传统流程图由于转向的问题而无法保证自顶而下的程序设计方法,使模块之间的调用关系难以表达.为此,两位美国学者Nassi和Shneiderman于1973年就提出了一种新的流程图形式,这就是N-S流程图,它是以两位创作者姓名的首字母取名,也称为Nassi Shneiderman图.


N-S图的基本单元是矩形框,它只有一个入口和一个出口.长方形框内用不同形状的线来分割,可表示顺序结构、选择结构和循环结构.在N-S流程图中,完全去掉了带有方向的流程线,程序的三种基本结构分别用三种矩形框表示,将这种矩形框进行组装就可表示全部算法.这种流程图从表达形式上就排除了随意使用控制转移对程序流程的影响,限制了不良程序结构的产生.
与顺序、选择和循环这三种基本结构相对应的N-S流程图的基本符号如图1-11所示.图1-11(a)和图1-11(b)分别是顺序结构和选择结构的N-S图表示,图1-11(c)和图1-11(d)是循环结构的N-S图表示.由图可见,在N-S图中,流程总是从矩形框的上面开始,一直执行到矩形框的下面,这就是流程的入口和出口,这样的形式是不可能出现无条件的转移情况.下面用N-S流程图表示前面例1-2中求函数值m的算法,其流程如图1-12所示.

值得注意的是,N-S流程图是适合结构化程序设计方法的图形工具,对于非结构化的程序,用N-S流程图是无法表示的.
例如在例1-3中,求任意两个正整数的最大公约数,其算法是非常经典的,图1-5中用传统流程图表示了该算法,但是这个算法却无法直接用N-S流程图表示.因为该算法的关键是执行一个循环结构,但图1-5表示的循环结构既不是当型循环,也不是直到型循环,这样,用N-S流程图就无法表示.如果将例1-3中的算法稍作调整,使流程图采用单选择结构形式,其中的条件改为r≠0,这样就可以用直到型循环的N-S流程图表示这个算法.图1-13是表示例1-3的N-S流程图.

N-S流程图是描述算法的重要图形工具之一,在结构化程序设计中得到了广泛应用.在此仅作简单介绍,旨在抛砖引玉.在实际软件开发中,有兴趣的读者可参阅有关软件工程或软件开发技术等方面的著作.
1.3.3 结构化程序设计方法
结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则.结构化程序设计方法主要包括:①只采用三种基本的程序控制结构来编制程序,从而使程序具有良好的结构;②程序设计自顶而下;③用结构化程序设计流程图表示算法.
有关结构化程序设计及方法有一整套不断发展和完善的理论和技术,对于初学者来说,完全掌握是比较困难的.但在学习的起步阶段就了解结构化程序设计的方法,学习好的程序设计思想,对今后的实际编程是很有帮助的.
1.结构化程序设计特征
结构化程序设计的特征主要有以下几点:
(1) 以三种基本结构的组合来描述程序;
(2) 整个程序采用模块化结构;
(3) 有限制地使用转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个结构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能;
(4) 以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰;
(5) 采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读;
(6) 注意程序设计风格.

2. 自顶而下的设计方法
结构化程序设计的总体思想是采用模块化结构,自上而下,逐步求精.即首先把一个复杂的大问题分解为若干相对独立的小问题.如果小问题仍较复杂,则可以把这些小问题又继续分解成若干子问题,这样不断地分解,使得小问题或子问题简单到能够直接用程序的三种基本结构表达为止.然后,对应每一个小问题或子问题编写出一个功能上相对独立的程序块来,这种象积木一样的程序块被称为模块.每个模块各个击破,最后再统一组装,这样,对一个复杂问题的解决就变成了对若干个简单问题的求解.这就是自上而下,逐步求精的程序设计方法.

确切地说,模块是程序对象的集合,模块化就是把程序划分成若干个模块,每个模块完成一个确定的子功能,把这些模块集中起来组成一个整体,就可以完成对问题的求解.这种用模块组装起来的程序被称为模块化结构程序.在模块化结构程序设计中,采用自上而下,逐步求精的设计方法便于对问题的分解和模块的划分,所以,它是结构化程序设计的基本原则.
例1-9: 求一元二次方程:
ax2+bx+c=0
的根.
分析:先从最上层考虑,求解问题的算法可以分成三个小问题,即:输入问题、求根问题和输出问题.这三个小问题就是求一元二次方程根的三个功能模块:输入模块M1、计算处理模块M2和输出模块M3.其中M1模块完成输入必要的原始数据,M2模块根据求根算法求解,M3模块完成所得结果的显示或打印.这样的划分,使求一元二次方程根的问题变成了三个相对独立的子问题,其模块结构如图1-14所示.
分解出来的三个模块从总体上是顺序结构.其中M1和 M3模块是完成简单的输入和输出,可以直接设计出程序流程,不需要再分解.而M2模块是完成求根计算,求根则需要首先判断二次项系数a是否为0.当a=0时,方程蜕化成一次方程,求根方法就不同于二次方程.如果a≠0,则要根据b2-4ac的情况求二次方程的根.可见M2模块比较复杂,可以将其再细化成M21和M22两个子模块,分别对应一次方程和二次方程的求根,其模块结构如图1-15所示.
此次分解后,M21子模块的功能是求一次方程的根,其算法简单,可以直接表示.M22是求二次方程的根,用流程图表示算法如图1-16所示,它由简单的顺序结构和一个选择结构组成,这就是M22模块最细的流程表示.然后,按照细化M22模块的方法,分别将M1、M21和M3的算法用流程图表示出来,再分别按图1-15和图1-14的模块结构组装,最终将得到细化后完整的流程图.
可见,编制程序与建大楼一样,首先要考虑大楼的整体结构而忽略一些细节问题,待把整体框架搭起来后,再逐步解决每个房间的细节问题.在程序设计中就是首先考虑问题的顶层设计,然后再逐步细化,完成底层设计.使用自顶向下、逐步细化的设计方法符合人们解决复杂问题的一般规律,是人们习惯接受的方法,可以显著地提高程序设计的效率.在这种自顶而下、分而治之的方法的指导下,实现了先全局后局部,先整体后细节,先抽象后具体的逐步细化过程.这样编写的程序具有结构清晰的特点,提高程序的可读性和可维护性.
3. 程序设计的风格
程序设计风格从一定意义上讲就是一种个人编写程序时的习惯.而风格问题不象方法问题那样涉及一套比较完善的理论和规则,程序设计风格是一种编写程序的经验和教训的提炼,不同程度和不同应用角度的程序设计人员对此问题也各有所见.正因为如此,程序设计风格很容易被人们忽视,尤其是初学者.结构化程序设计强调对程序设计风格的要求.因为,程序设计风格主要影响程序的可读性.一个具有良好风格的程序应当注意以下几点:
(1) 语句形式化.程序语言是形式化语言,需要准确,无二义性.所以,形式呆板、内容活泼是软件行业的风范;
(2) 程序一致性.保持程序中的各部分风格一致,文档格式一致;
(3) 结构规范化.程序结构、数据结构、甚至软件的体系结构要符合结构化程序设计原则;
(4) 适当使用注释.注释是帮助程序员理解程序,提高程序可读性的重要手段,对某段程序或某行程序可适当加上注释;
(5) 标识符贴近实际.程序中数据、变量和函数等的命名原则是:选择有实际意义标识符,以易于识别和理解.要避免使用意义不明确的缩写和标识符.例如:表示电压和电流的变量名尽量使用v和i,而不要用a和b.要避免使用类似aa、bb等无直观意义的变量名.
1年前

相关推荐

事业单位结构化面试试题以及答案
dongyou_20031年前1
彩票玩家 共回答了12个问题 | 采纳率91.7%
同学:
你好,所谓结构化面试只指由事业单位自己出题,或者是以提问的形式进行面试,所以考什么就要看你是考的什么岗位了啊?一般面试就是问你所考的岗位的相关问题.
比如;
1、你为什么来参考?
2、你考上了将怎么做?
3、你觉得做这个岗位需要什么样的职业素质?
等等.这些问题都不是确定的.
请问判定树、判定表和结构化英语的作用是什么
nva16341年前1
梦醒了无梦 共回答了26个问题 | 采纳率84.6%
Decision Tree
Decision Table
The function of structured English
信息计算题目以下说法正确的是 ( )A、多媒体是两种以上的媒体 B、电子表格中可以将数据图形化C、文本信息不能够用结构化
信息计算题目
以下说法正确的是 ( )
A、多媒体是两种以上的媒体 B、电子表格中可以将数据图形化
C、文本信息不能够用结构化表达 D、要想上网必需在计算机上安装MODEM
白月鲨1年前1
wazzxfe125 共回答了14个问题 | 采纳率78.6%
选B
A、所谓多媒体,是指能够同时采集、处理、编辑、存储和展示两个或以上不同类型信息媒体的技术,这些信息媒体包括文字、声音、图形、图像、动画和活动影像等.
C、文本信息能够用结构化表达
D、想上网的话,并不是必需要在计算机上安装MODEM ,只要在电脑上安装网卡驱动就行了,硬件一连宽带就能上网了 .
“结构化综合布线与组网”和“网络设备和企业网构建” 英语怎么说?
︶冰︹思︺1年前1
东方容容 共回答了20个问题 | 采纳率75%
"structured sythesize cotton cloth line and net of group"
"the networkequipment and net of enter prise are built
结构化程序设计的三种基本控制结构是是什么?
原田裕二1年前1
失去光圈的天使 共回答了22个问题 | 采纳率90.9%
顺序结构 分支结构 循环结构
求焦点的坐标结构化(-6.0)(6,0)并且经过点A(-5,2)的双曲线的标准方程
zxcttz1年前1
ojfxda9lv38__e_4 共回答了16个问题 | 采纳率93.8%
设双曲线为x^2/a^2-y^2/b^2=1
根据双曲线性质 可得a^2+b^2=c^2=36
带入点A得到25/a^2-4/b^2=1,因为ab不为零,所以两边同乘a^2b^2,得到25b^2-4a^2=a^2b^2
从而得到关于a^2b^2的二元一次方程组
25b^2-4a^2=a^2b^2
a^2+b^2=36
解得a^2=20或45
但如果a^2=45的话,根据方程组b^2就变负数了,不合题意,舍去
综上 a^2=20,b^2=16
所以该双曲线的标准方程为x^2/20-y^2/16=1
顺序结构、分支结构(或称选择结构)、____________是结构化程序设计的三种基本流程控制结构.
xiangcaoyuan1年前1
fangxian 共回答了17个问题 | 采纳率88.2%
是选择结构
关于结构化程序设计的基本知识结构化程序设计有三种基本结构组成,下面不属于这三种基本结构之一的是A顺序结构 B并列结构 C
关于结构化程序设计的基本知识
结构化程序设计有三种基本结构组成,下面不属于这三种基本结构之一的是
A顺序结构 B并列结构 C选择结构 D循环结构
foxdogfish1年前1
蔬菜2003 共回答了17个问题 | 采纳率94.1%
选B
三种基本结构是:顺序、选择、循环
选择结构也可以叫做分支结构
什么叫结构化的算法?为什么要提倡结构化的算法?
栗子会开花1年前1
謹逸 共回答了21个问题 | 采纳率95.2%
结构化算法是由一些基本结构顺序组成的.在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内.一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变.
跟结构化算法比较起来,非结构化算法有以下缺点.流程不受限制的随意转来转去,使流程图豪无规律.使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改.从而使算法的可靠性和可维护性难以保证.
以下不属于结构化程序设计的控制部分的是?A.顺序结构 B.GOTO结构 C.循环结构 D.分支结构
朱依猫1年前3
Google测试员383 共回答了16个问题 | 采纳率100%
B,一般写程序都不用GOTO结构的
与结构化需求分析方法相对应的是什么方法
duhuang1年前1
-1等于100 共回答了13个问题 | 采纳率92.3%
结构化设计
软件工程试题问答?1.软件生命周期2.软件危机3.结构化维护4.对象5.集成测试6.原型模型7.元数据8.完善性维护9.
软件工程试题问答?
1.软件生命周期
2.软件危机
3.结构化维护
4.对象
5.集成测试
6.原型模型
7.元数据
8.完善性维护
9.系统测试
谁能帮我解释这些名词 只要解释的能拿分就行了
dill1年前1
做勇敢的女孩 共回答了17个问题 | 采纳率82.4%
(1)软件生命周期
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期).把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理.通常,软件生存周期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同的阶段去完成.
.
(2)软件危机 software crisis
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
(3)结构化维护我也没查到
(4)
对象(object)是一件事、一个实体、一个名词,可以获得的东西,可以想象有自己的标识的任何东西.对象是类的实例化.一些对象是活的,一些对象不是.比如这辆汽车、这个人、这间房子、这张桌子、这株植物、这张支票、这件雨衣. 概括来说就是:万物皆对象
(5)集成测试
某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成.这种方法容易出现混乱.因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置.与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底
(6)原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求.同时,原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈作出快速的响应.相对瀑布模型而言,原型模型更符合人们开发软件的习惯,使目前较流行的一种实用软件生存期模型
(7)元数据被定义为:描述数据及其环境的数据.一般来说,它有两方面的用途.首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据.其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据
(8)完善性维护,在软件正常使用过程中,用户还会不断地提出新的需求,为了满足用户新的需求而增加软件功能的活动称为完善性维护.如果需求变更很大,那完善性维护将转变为软件新版本的开发
(9) 系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方.
结构化设计方法的特点?
广论_1年前1
Dr_Hannibal 共回答了20个问题 | 采纳率85%
针对一个解决问题的过程
8.结构化程序设计的3种结构是 ( ) A.顺序结构、选择结构、转移结构 B.分支结构、等价结构、循环结构
8.结构化程序设计的3种结构是 ( ) A.顺序结构、选择结构、转移结构 B.分支结构、等价结构、循环结构
8.结构化程序设计的3种结构是 ( )
A.顺序结构、选择结构、转移结构 B.分支结构、等价结构、循环结构
C.多分支结构、赋值结构、等价结构 D.顺序结构、选择结构、循环结构
绿野仙踪001年前3
月亮来坐罢 共回答了18个问题 | 采纳率94.4%
在结构化程序设计中,任何程序段的编写都基于3种结构:分支结构、循环结构和顺序结构
我想你这个题目的答案应该是D
简述结构化分析方法的实现步骤
eric120joy1年前1
xkps071_yy77d3 共回答了17个问题 | 采纳率100%
结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的DFD;
②推导出等价的逻辑模型的DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约.
结构化程序设计 和 面向对象程序设计
结构化程序设计 和 面向对象程序设计
什么是结构化?什么是面向对象
本人有严重的阅读障碍 所以请不要用书本上 百科上面的答案来糊弄我
我需要的是 通俗的 打比方的解释
我需要的是 通俗的 打比方的解释
我需要的是 通俗的 打比方的解释
1楼打的比方还是不错的 但是我还是有点不懂
能不能就同一个问题打比方
你结构化说造大楼 你面向对象也用造大楼来打比方行么
2个不同的比方 我障碍看不懂啊
小李飞超1年前1
hxsdedu 共回答了18个问题 | 采纳率83.3%
我来个你举个例子
比如和楼上一样的 盖房子
所谓结构化的盖法 就是把你要盖的房子拆成房间、大厅、厕所、厨房,然后分别交给4个人去设计,4个人设计好了,你在吧4个部分组合起来,成为你的房子
如果是面向对象的盖法,就是你一开始就把房子设计好,房子里面那里是房间、那里是厨房、那里是厕所,都想好,然后盖好之后,再进去你的房子里面,把你的房间、厨房、大厅设计并装修好
所以说结构化就是细化为几个部分,分别完成后,在进行组装
面向对像则是将整个内容分析清楚,封装成一个完整的东西后,你在进行内部细化
虽然这个比喻不是很贴切,但至少应该能让你理解起来容易一些
什么是结构化开发方法,什么是面向对象开发方法,是比较二者的区别与联系?
独行狭客1年前1
jakprab 共回答了26个问题 | 采纳率96.2%
面向对象优点:1、稳定性好; 2、可重用性好; 3、较易开发大型软件产品; 4、可维护性好.结构化方法是将系统看成是过程的集合,过程与数据实体之间
在vf6.0中结构化程序设计的三种基本逻辑结构是?
gexiadudu1年前1
jinhongxing 共回答了19个问题 | 采纳率94.7%
6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序C语言程序设计 基本要求 1.熟悉TURBO C集成环境.2.熟练掌握结构化程序
画图说明结构化程序设计中的三种逻辑结构
oufeng1年前0
共回答了个问题 | 采纳率

大家在问