|Control flow was a good articles nominee, but did not meet the good article criteria at the time. There are suggestions below for improving the article. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake.|
|WikiProject Computing||(Rated B-class, High-importance)|
|WikiProject Computer science||(Rated B-class, Top-importance)|
- 1 Untitled
- 2 "Constructs to be avoided"
- 3 Redirect from Elif
- 4 Control flow constructs are a special kind of statements
- 5 Lanugage examples.
- 6 Loop with test in the middle
- 7 Exceptions vs continuations
- 8 GA failed
- 9 Early exit and infinite loops
- 10 Python for-else and while-else constructs
- 11 Redirected from "then"
- 12 Merge proposal
- 13 usage of "Continuation"
- 14 Structure
- 15 C and C++ have an infinite loop
From Murray Langton:
Nobody commented on my outline for a complete rewrite, so I have done the rewrite.
"Constructs to be avoided"
Wikipedia is not prescriptive; it can at best report what others prescribe. "You should not [otherwise] [do X]" is something Wikipedia must never, ever say. "Smith and Thompson and Jones all agree you shouldn't [do X]" and "nobody [does X] anymore [because]" are fine.
The part about goto was redundant with the section on goto, so I deleted it. The historical and arcane control flow structures were not discussed, so I merged them in their appropriate sections. I'm sad to say the link to Knuth's paper was broken and I couldn't find a substitute; hope you paid those ACM subscription fees. 126.96.36.199 21:26, 14 September 2005 (UTC)
Redirect from Elif
There is a redirect from the ELIF wikipedia entry, but although this is a subclass of the IF command, there is no reference to ELIF in this article
Control flow constructs are a special kind of statements
IMHO Statements are a larger group containing control flow constructs as special case. For example: Many programming languages have assignment-, declaration-, I/O- and assert-statements which are not control flow constructs. I improved the statement article a little bit and added some links to it.
I think the modlue has to many language examples. We should realy concentrate on the actual contruct and how it works and leave programming language dependent part to pages describing that language - or even better Wikibooks.
As it is I think the page is not clear enough
I think it's biased towards procedural languages (e.g. Pascal, C), which aren't too different. We should add examples from languages with more unconventional syntaxen and semantics — Preceding unsigned comment added by 188.8.131.52 (talk) 17:44, 23 June 2012 (UTC)
Loop with test in the middle
- How does Ada cope when you want to exit from the middle of several nested loops (as per example of searching 2-D array)? Murray Langton 21:40, 23 February 2006 (UTC)
- Sorry, query about wrong control structure. Murray Langton 21:42, 23 February 2006 (UTC)
- You can name a look and then use exit Outer_Loop when Condition; --Krischik T 07:03, 24 February 2006 (UTC)
Exceptions vs continuations
In 6 Structured non-local control flow it says: "Exceptions, conditions, and continuations are three common sorts of non-local control constructs."
Are PL/1 conditions any different from exceptions? If so, the article should explain how; if not, the two sections should be combined.
- Interesting point. The difference is a bit like if then goto vs. if then else One is structured the other is not but apart from that they do the same thing. BTW: Some Basic dialects and Rexx have that contruct as well. --Krischik T 13:08, 24 February 2006 (UTC)
I don't know about PL/1, but the distinguishing feature of conditions in Common Lisp is that they can be ignored (if they are not errors) and resumed (with restarts). In other words, unlike exceptions, the stack is not always necessarily unwound. --FOo (talk) 23:44, 9 March 2008 (UTC)
For these reasons:
- Lead fails to represent the article.
- The example that follow this, In many programming languages, a label is an identifier. should state which language it is from.
- For every piece of code the language should be mentioned beside it.
- For a fuller discussion on the drawbacks of goto, see Goto., should go in the front.
- Inline external links should be placed in a footnotes or references section at the bottom of the article.
- A number of authors have pointed out that using goto is often acceptable, like whom for example or where is this piece of info from?
- Subroutines can be made much more useful by providing them with parameters and what are the disadvantages of not providing params?
- In need of wikilinks for definition of words, e. g., tree-traversals, overhead, stack ...
- The program will end execution after the third line without continuing into the function. ... why?
- The fact that such minimalism is possible does not necessarily mean that it is desirable and who said that? ref please or make it more NPOV.
- after all, computers theoretically only need one machine instruction (subtract one number from another and branch if the result is negative), but practical computers have dozens or even hundreds of machine instructions., simplistic view maybe ref this part too. Is this really necessary in an encyclopedia.
- Languages whose final keyword is of the form: end + initial keyword (with or without space in the middle) tend to be easier to learn and read. says who?
- The Choice section should demonstrate statements universally without needing the Ada language. Thus turn every code into Ada-free code or wikilink to other wikipedia articles like: If should point to Conditional statement.
- The tables should conform to the Footnotes method for the comments added to them.
- The Anecdotal evidence section needs more introduction for non-experts. Lincher 02:29, 16 June 2006 (UTC)
- (Changed User:Lincher's above list from bullets to numbered list to facilitate discussion - Dmeranda 18:17, 30 June 2006 (UTC))
- For (1), I rewrote the lead section so it should meet WP guidelines -- Dmeranda 18:22, 30 June 2006 (UTC)
Early exit and infinite loops
Deep break/early exit is simulated in C and C++ not through exceptions but via goto's and labels. Also, infinite loops which are conditionless are simulated through labels and gotos as well; this avoids a conditional check if you really want an infinite loop.
Python for-else and while-else constructs
There was some confusion over when the else-clause of a Python for or while loop is executed. A simple test case shows this
for i in : if i == 42: print 'Breaking out of for loop' break else: print 'In else clause of for loop'
when run outputs only "Breaking out of for loop". Likewise changing "i == 42" to "i == 99" and re-running only outputs "In else clause of for loop". So the else clause is executed on if the loop is not exited early by a break statement. -- Dmeranda 16:37, 19 March 2007 (UTC)
Redirected from "then"
If you type in the word: "then" it comes to this page, however this is about Control Flow. LostNecromancer 22:58, 10 April 2007 (UTC)
- The redirect is probably due to the keyword "then" as used in the "if-then" statement, which one of the most common control flow statements in many programming languages. It should probably more approriately redirect to Conditional statement though as that article is more specific than this one; and unless somebody thinks there is an even more common use of the word "then" which has an article in WP. Remember, redirects are cheap and the main problem with them is when they may point to an obscure article while a better target exists. See Wikipedia:Redirect. - Dmeranda 20:24, 11 April 2007 (UTC)
This article (Control flow) is quite long - even, I would argue, overlong - and the section called "Choice" is now long enough to be an article in its own right. However, there is already an article about conditional statements, which does not include all the material in this section. If there is to be a separate article about conditional statements, that article should be longer and more in-depth than the corresponding section on this page. Therefore, I propose merging the material in the "Choice" section into conditional statement, and leaving behind a Main Article link, possibly with a short summary (it's usual to have such a summary).
Some might argue that case statements are not conditional statements. However, they are frequently classified as such, and they meet the general definition given in the conditional statement article, so I don't think this position would be justified.—greenrd 13:33, 14 April 2007 (UTC)
- I support this merge as the section while informative is a bit redundant outside of the main artice, they should be merged and a short summary left on the control flow page with a main article link Adam McCormick 14:39, 14 April of the term, nor even any mention of anything which it is easy to connect lexically. Please correct. Donal Fellows (talk) 15:34, 29 December 2008 (UTC)
usage of "Continuation"
The "Loop system cross reference table" has a "continuation" column, but from what I can tell, it's not the normal meaning of continuation in computer science; for instance, I'm reasonably sure Java doesn't support continuations, but it's listed as having them in the column. Is "escape continuation" meant instead, or what? --Cybercobra (talk) 03:32, 18 February 2009 (UTC)