在概念结构设计中,先定义全局概念
结构化程序概念首先从往编程过程无限制地使用转移语句而提出转移语句使程序控制流程强制性转向程序任处传统流程图用上节我们提"随意"流程线来描述种转移功能程序多处出现种转移情况会导致程序流程无序寻程序结构杂乱无章样程序令人难理解和接受并且容易出错尤其实际软件产品开发更多追求软件读性和修改性象种结构和风格程序允许出现此提出了程序三种基本结构讨论算法时我们列举了程序顺序、选择和循环三种控制流程结构化程序设计方法强调使用三种基本结构算法实现过程由系列操作组成些操作之间执行次序程序控制结构1996年计算机科学家Bohm和Jacopini证明了样事实:任何简单或复杂算法都由顺序结构、选...全部
结构化程序概念首先从往编程过程无限制地使用转移语句而提出转移语句使程序控制流程强制性转向程序任处传统流程图用上节我们提"随意"流程线来描述种转移功能程序多处出现种转移情况会导致程序流程无序寻程序结构杂乱无章样程序令人难理解和接受并且容易出错尤其实际软件产品开发更多追求软件读性和修改性象种结构和风格程序允许出现此提出了程序三种基本结构讨论算法时我们列举了程序顺序、选择和循环三种控制流程结构化程序设计方法强调使用三种基本结构算法实现过程由系列操作组成些操作之间执行次序程序控制结构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-3N-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等无直观意义变量名。
收起