编程概念:面向过程编程
外观
普通程序一行一行地执行,直到到达结尾。这很容易阅读,但随着程序变长,阅读难度增加,维护难度增加,错误的可能性也增加。
面向过程编程是一种为程序强加结构的方法——具体而言:添加过程——以便于操作。
几乎所有程序在一定程度上都使用过程。例如,我们需要过程来在屏幕上显示输出,或从用户那里读取输入。但在面向过程编程中,我们也尽可能地创建新的、定制的过程,以简化程序本身。
这里有一个不是面向过程的程序。它使用了“input”过程,但重复了几乎相同的代码行三遍
i1 = input( "First number" )
i2 = input( "Second number" )
result1 = i1 + i2
i3 = input( "First number" )
i4 = input( "Second number" )
result2 = i3 + i4
i5 = input( "First number" )
i6 = input( "Second number" )
result3 = i5 + i6
以下是使用面向过程编程的相同示例
result1 = sum()
result2 = sum()
result3 = sum()
def sum():
i1 = input( "First number" )
i2 = input( "Second number" )
return i1 + i2;
当一个面向过程的程序遇到第 1 行的 sum()
这样的过程名称时,程序就会跳出,执行与 sum()
对应的代码,然后返回执行第 2 行。
在程序中添加过程有几个优点
- 允许我们重复使用代码而不必重新输入(减少编写时间)
- 允许我们重复使用有效的代码(每次重写代码时,都有可能无意中添加错误)
- 使程序的功能和方式更清晰(每个过程都需要一个名称;名称解释了这些代码行是做什么的)
- 减少程序的长度(使阅读和调试更容易、更快)
- 允许编译器进行更多优化(编译器检测到重复使用的代码并利用它来走捷径)
在上面的示例中,新的过程 sum
询问用户输入两个数字,计算总和,然后返回它。过程的名称使我们能够阅读代码并做出明智的猜测,即使不阅读 sum
过程的内容也是如此。
如果一个程序只需要几行源代码就可以写下来,那么使用这种技术几乎没有优势。
特别是,如果您的代码没有重复,并且没有相互关联的代码部分(例如,上面用于对两个数字求和的三行代码),那么添加过程可能会使程序更长、更难操作。不必要的过程通常不会改善程序。
面向过程编程和面向对象编程的出现是因为程序越来越长,越来越难操作。程序员需要更多结构来简化编程过程。
中等大小和复杂程度的程序可以使用过程来简化。