【发布时间】:2011-07-31 03:04:44
【问题描述】:
结构化编程语言通常具有一些控制结构,例如 while、if、for、do、switch、break 和 continue,用于表示高级源代码中的结构。
但是,多年来提出的许多其他控制结构尚未进入现代编程语言。例如,在 Knuth 的论文“Structured Programming with Go To Statements”第 275 页中,他引用了一个看起来像是异常处理的精简版的控制结构:
loop until event1 or event2 or ... eventN
/* ... */
leave with event1;
/* ... */
repeat;
then event1 -> /* ... code if event1 occurred ... */
event2 -> /* ... code if event2 occurred ... */
/* ... */
eventN -> /* ... code if eventN occurred ... */
fi;
这似乎是一个有用的结构,但除了标准异常处理的特殊情况之外,我还没有看到任何语言实际实现它。
同样,Edsger Dijkstra 经常使用一种控制结构,在该结构中,许多代码片段中的一个片段根据一组可能为真的条件以非确定性方式执行。你可以在其他地方看到这个on page 10 of his paper on smoothsort。示例代码可能如下所示:
do
/* Either of these may be chosen if x == 5 */
if x <= 5 then y = 5;
if x >= 5 then y = 137;
od;
我知道在历史上 C 影响了许多现代语言,如 C++、C# 和 Java,我们今天使用的许多控制结构都是基于 C 提供的小集合。但是,as evidenced by this other SO question,我们程序员喜欢思考我们希望拥有但许多编程语言不支持的替代控制结构。
我的问题是 - 目前使用的通用语言是否支持与我上面提到的 C 风格控制结构完全不同的控制结构?这样的控制结构不一定是什么东西无法使用标准 C 结构表示 - 几乎任何东西都可以用这种方式编码 - 但理想情况下,我想要一个示例,它可以让您以与 C 模型所允许的完全不同的方式处理某些编程任务。
不,“函数式编程”并不是真正的控制结构。
【问题讨论】:
-
只是一个小注解:多年来我一直想要一个“for...else”结构,而就在几个月前我发现它可以在 Python 中实现。
-
@Radagaisus:什么是“for...else”?
-
@Mehrdad:如果循环自然终止(而不是中断),则执行 for-else 循环中的 else 块。无论迭代多少次(甚至为零),这都适用。
-
它按照 BoltClock 所说的去做。使用
var found = false编写循环时,我总是觉得过于冗长。 More info. -
@BoltClock:啊,我明白了……很奇怪,哈哈。
标签: programming-languages control-structure structured-programming