结构化程式设计 Structured programming ,编程典范,也是一种解决问题的思想和方法。
采用子程序、程式码区块 block structures、for循环以及while循环等结构,来取代传统的 goto。
结构化程式设计在1960年代开始发展,科拉多·伯姆(Corrado Böhm)及朱塞佩·贾可皮尼(Giuseppe Jacopini)于1966年5月在《Communications of the ACM》期刊发表论文,说明任何一个有goto指令的程式,可以改为完全不使用goto指令的程式,后来艾兹赫尔·戴克斯特拉在1968年也提出著名的论文《GOTO陈述有害论》(Go To Statement Considered Harmful),因此结构化程式设计开始盛行,此概念理论上可以由结构化程式理论所证明,而在实务上,当时也有像ALGOL一样,有丰富控制结构的编程语言来实现结构化程式设计。
原则归纳为32个字:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。
结构化程式理论可做为结构化编程的理论基础,结构化程式理论中提到利用顺序、选择及重复这三种组合程式的方式,可以表示所有可计算函数。
1976 年 N.Wirth 出版的名为 《Algorithms + Data Structure = Programs》的著作中,明确提出“算法”和“数据结构”是程序的两个要 素,即程序设计主要包括两方面的内容。
[底层的结构化程式设计]
// 结构化的程式是以一些简单、有层次的程式流程架构所组成,
// 可分为顺序(sequence)、选择(selection)及循环(repetition)
● 顺序结构, 是指程式正常的执行方式,执行完一个指令后,执行后面的指令。
● 选择结构, 指当程序到了一定的处理过程时, 遇到分支,无法顺序执行, 需要根据条件选择处理步骤分支
选择结构有单选择、双选择和多选则三种形式。
● 循环结构, 通常用来表示反复执行一个程序或某些操作的过程, 直到某条件为假(或为真)时才可终止循环
在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?
基本形式有两种。当型循环和直到型循环。
● 重用测试过的代码
行为特性的设计:指完整地描述问题求解的全过程,并精确地定义每个解题步骤,这一过程即是“算法设计”
结构特性的设计:指在问题求解的过程中,计算机所处理的数据、及数据之间联系的表示方法。
结构化程序设计方法SP(Structured Programming)的着眼点是“面向过程”。
结构化程序设计特点是将程序中的数据与处理数据的方法分离。
结构化程序设计方法的核心是“算法设计”, 基本思想是自顶向下和逐步细化的设计方法:
将复杂任务按功能拆分, 逐层细化到便于理解和描述的程度, 形成由若干独立模块组成的树状层次结构