結構化程式理論

起源及变体

一般认为此理论最早是在1966年科拉多·伯姆及朱塞佩·贾可皮尼（Giuseppe Jacopini）的论文中提出。大卫·哈雷尔在1980年曾提到这篇论文广受认可，尤其在结构化程序理论的支持者中。哈雷尔也提到“由于其论文比较技术的风格，因此较常被引用，较少人真正详读过内容。”，在看了1980年以前的大量论文后，哈雷尔认为结构化程序理论被错误诠释为一个结果较简单的大众定理（folk theorem），而此结果可以追溯到冯·诺依曼及斯蒂芬·科尔·克莱尼现代计算理论的论文。
哈雷尔也提到较通用的“结构化程序理论”名称是在1970年代初由哈伦·米尔斯提出。

单一while循环的大众定理版本

此版本的定理将原来定理中的程控流程改为一个while循环，模拟在原来非结构化的程序中，程序计数器走过所有可能标记（流程图方块）的情形。哈雷尔将此版大众定理的源头追溯到两篇论文，一篇是1946年描述冯·诺伊曼结构，用单一while循环说明程序计数器的运作原理，哈雷尔也注意到大众定理中用到的单一循环基本上可以提供冯·诺伊曼式电脑运行流程的操作语义。。另一篇更早期的论文则是斯蒂芬·科尔·克莱尼1936年的正规形式定理（Kleene's T predicate）论文。
高德纳批评这种转换后的结果类似以下的伪代码，重点是在此转换中完全破坏了原程序的结构。Bruce Ian Mills也有类似的看法：“块状结构的精神是其风格，不是使用的语言。利用模拟冯·诺伊曼结构的方式，可以将任何一个面条式代码转换为块状结构的语言，但它面条式代码的本质没有改变。”
p := 1;while p > 0 do begin
  if p = 1 then begin
    進行流程圖的步驟1;
    p := 流程圖的步驟1之後的步驟編號（若沒有後續步驟，數值為0）;
  end;
  if p = 2 then begin
    進行流程圖的步驟2;
    p := 流程圖的步驟2之後的步驟編號（若沒有後續步驟，數值為0）;
  end;
  ...
  if p = n then begin
    進行流程圖的步驟n;
    p := 流程圖的步驟n之後的步驟編號（若沒有後續步驟，數值為0）;
  end;end.