控制流程
维基百科,自由的 encyclopedia
控制流程(也称为流程控制)是电脑运算领域的用语,意指在程序执行时,个别的指令(或是陈述、子程序)执行(英语:Execution (computing))或求值的顺序。不论是在宣告式编程语言或是函数编程语言中,都有类似的概念。
在宣告式的编程语言中,流程控制指令是指会改变程序执行顺序的指令,可能是执行不同位置的指令,或是在二段(或多段)程序中选择一个执行。
不同的编程语言所提供的流程控制指令也会随之不同,但一般可以分为以下四种:
- 继续执行位在不同位置的一段指令(无条件分支指令)。
- 若特定条件成立时,执行一段指令,例如C语言的switch指令,是一种有条件分支指令。
- 执行一段指令若干次,直到特定条件成立为止,例如C语言的for指令,仍然可视为一种有条件分支指令。
- 执行位在不同位置的一段指令,但完成后会继续执行原来要执行的指令,包括子程序、协程(coroutine)及续体(continuation)。
- 停止程序,不执行任何指令(无条件的终止)。
中断以及Unix系统中的信号等较低端的机制也可以造成类似子程序的效果,不过通常这类机制会用来回应外部的事件或是输入。程序自修改因为其对代码的影响,也会影响控制流程,但多半不会有明显的流程控制指令。
在机器语言或汇编语言中,流程控制是借由修改程序计数器数值来达到。一些中央处理器只支持条件分支(branch)或是无条件分支(有时会称为jump)。