更新时间:2022-08-25 13:46
非结构化语言是高级语言发展的第一阶段,编程风格比较随意,只要符合语法规则即可。而且也没有严格的规范要求,程序中的流程可以随意跳转。此外,很多开发人员为了追求程序执行的效率而采用了很多“小技巧”,使程序变得难以阅读和维护。早期的BASIC、COBOL、FORTRAN等都是非结构化语言。
早期产生的语言,比如BASIC、COBOL、FORTRAN等,因为它们产生的年代比较早,语言在很多方面不能反映结构程序设计的思想,所以也称它们为非结构化语言。
早期用这些语言编写的程序结构性差,程序的逻辑就比较复杂,对这些语言进行结构程序设计的主要过程如下:
用BASIC语言描述如下结构:
(1)顺序结构。顺序结构是一条解一条地执行的一组语句序列,语句的书写顺序就是它的执行顺序。
(2)选择结构。程序中具有两个分支的结构称为选择结构,这种两分支的结构,一般也称为IF-THEN-ELSE结构。这种结构的伪代码形式如下:
如果选择结构中不需要ELSE分支,即IF结构只有THEN分支。另外,在选择结构中还可嵌入IF语句,但是为了提高程序的可读性,一般程序中IF语句的嵌套不要超过三重。
(3)重复结构。重复结构又称为循环结构,通常有WHIL和UNTIL两种。用BASIC的IF语句和GOTO语句实现WHILE结构的一般形式如下:
注:这里(条件的否定)是指采用了算法中的条件的否定形式。
在UNTIL结构中,对循环控制条件的测试是在循环体执行之后进行的,因此这种结构的循环体至少要被执行一次。UNTIL结构用BASIC的IF语句和GOTO语句表示的一般形式如下:
注:这里(条件的否定)是指采用了重复结构算法中条件的否定形式,使程序正文接近于伪代码形式。
(4)多路选择结构。程序中具有多个分支的结构称为多路选择(CASE)结构。CASE结构用标准BASIC语句的编码如下:
COBOL是面对过程的事务数据处理通用程序设计语言,COBOL程序的编写接近于英语,直观性强,具有结构模块化和自我说明的特点,便于学习和理解,也便于程序交流。
由顶向下程序开发过程中产生了程序的模块化结构图,每一个模块可编写成一个COBOL程序,这些COBOL程序可以独立编译,主模块通过CALL语句实现对低层模块的控制,模块之间数据传递通过USING进行。一般一个模块用COBOL语言编写时,可执行语句应限制在规定的一页纸以内。如果模块较大,可以把模块分割成若干个部分(称为“片”),每片的代码不要超过60行。在实际编码时,往往由于每片的功能较少,因此一般每片的代码在30行左右。
用COBOL语言描述如下结构:
(1)顺序结构。顺序结构是指按排列次序执行的一组语句序列,其中的语句可以是PERFORM语句或者CALL语句。但要求执行时能把控制返回到调用语句的后继语句,这样才能保持顺序结构的要求。
(2)选择结构。选择结构一般用IF语句实现,IF语句的句法如下:
(3)重复结构。重复结构有WHILE和UNTIL两种类型,它实现重复结构是很方便的。WHILE结构是一种基本的循环结构,这种结构是先测试条件,然后才执行循环体。如果最初测试条件为假时,就绝不会去执行循环体。当测试条件为真时,才去执行这个循环体。UNTIL结构是至少执行一次循环体的循环结构,在COBOL语言中的“PREFORM...UNTIL...”句型中,条件的测试是在循环体的执行之前,这和WHILE结构相同。
计算机语言的发展过程可以分为:机器语言、汇编语言、高级语言。
非结构化语言是高级语言发展的第一阶段,编程风格比较随意,只要符合语法规则即可,而且也没有严格的规范要求,程序中的流程可以随意跳转。此外,很多开发人员为了追求程序执行的效率而采用了很多“小技巧”,使程序变得难以阅读和维护。早期的BASIC、COBOL、FORTRAN等都是非结构化语言。
为了解决非结构化语言带来的问题,提出了结构化程序设计的方法,它规定程序必须由具有良好特性的基本结构(顺序、分支和循环)构成,且程序中的流程不允许随意跳转,总是由上而下顺序执行各个基本结构。这个阶段编写的程序结构清晰,易于阅读和维护,C属于结构化语言。
使用结构化语言进行程序设计时,主要有以下优点:
(1)自顶向下逐步求解的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和出产率。
(2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰地层次结构,因此容易阅读和理解。
(3)不使用GOTO语句仅是使用单入口、单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致。因此程序容易阅读额理解,开发时也比较容易保证程序的正确性,即使出现错误也比较容易诊断和修正。
(4)控制结构有确定的逻辑结构,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。
(5)程序清晰和模块化使得修改和重新设计一个软件时可重用的代码量最大。
(6)程序的逻辑结构清晰,有利于程序正确性验证。
使用结构化语言进行程序设计时,主要有以下缺点:
(1)需要的存储容量和运行时间都有一些增加,估计增加10%~20%。
(2)现有的许多程序设计语言是非结构化语言,并不提供上述的单入口、单出口的基本控制结构。
以SQL语言为例:
(1)SQL是一个非过程化的语言,一次处理一个记录,为数据提供自动导航。
(2)SQL允许用户在高层的数据结构上工作,可操作记录集合而不对单个记录进行操作。
(3)所有的SQL语句接收集合作为输入,返回集合作为输出。
(4)SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
(5)SQL不要求用户指定数据的存放方法,这种特性使得用户更易集中精力于要得到的结果。
(6)所有SQL语句使用查询优化器,它是关系型数据管理系统的一部分,由它决定对指定数据存取的最快速度的手段。
(1)没有严格的规范要求,程序中的流程可以随意跳转。
(2)很多开发人员为了追求程序执行的效率而采用了很多“小技巧”,使程序变得难以阅读和维护