非结构化程序设计是历史上最早的能够创造图灵完备算法的程序设计模式。在它之后,历史上又出现了结构化(过程化)程序设计、面向对象程序设计

非结构化程序设计被批评最严重的方面就是会产生很难读懂的代码(戏称面条式代码),在创建大型工程方面有时会被认为是很差的,不过,因为赋予程序设计者很大的自由,被人称赞为如同莫扎特在谱曲。[1].

非结构化程序设计语言既有高阶语言,也有低阶语言。一些语言通常被印证为非结构化语言,包括JOSSFOCALTELCOMP汇编语言MS-DOS批处理和早期版本的BASICFortranCOBOLMUMPS

特点和典型概念

基本概念

一个使用非结构化语言的程序经常包含按顺序排列的命令或声明,通常每个都占用一行。每一行都有编号或者标签,这样程序中的任意行都可以被执行。

非结构化程序设计引入了基本控制流的概念,比如循环、分支和跳转。尽管在非结构化模式中不存在过程,不过子程序还是可以使用的。和过程不同,子程序可能有多个入口和出口。子程序中是允许直接跳转入或跳转出的。这种灵活性可以实现协同程序,而这在过程化程序设计中是相当困难以至于不可能的。

非结构化程序设计中是没有本地变量的概念的,不过标签和变量可以在有限的区域中起作用,比如,线组。这意味着在调用子程序时不需要上下文刷新,而所有的变量保持它们之前被调用后的值。这样,实现递归就很困难了。而嵌套的深度被限制在1或2级。

数据类型

非结构化语言只允许基本的数据类型,比如数字、字符串和数组(编号的同类型的变量集合)。尽管非结构化数据类型是被允许使用的,但是在将流数据处理前要注意先对数组定义进行声明。

参考

其他来源

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.