Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Conditional (computer programming)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== History and development === In early programming languages, especially some dialects of [[BASIC]] in the 1980s [[home computer]]s, an <code>if–then</code> statement could only contain <code>[[GOTO]]</code> statements (equivalent to a [[Branch (computer science)|branch]] instruction). This led to a hard-to-read style of programming known as [[spaghetti programming]], with programs in this style called ''spaghetti code''. As a result, [[structured programming]], which allows (virtually) arbitrary statements to be put in statement blocks inside an <code>if</code> statement, gained in popularity, until it became the norm even in most BASIC programming circles. Such mechanisms and principles were based on the older but more advanced [[ALGOL]] family of languages, and ALGOL-like languages such as [[Pascal (programming language)|Pascal]] and [[Modula-2]] influenced modern BASIC variants for many years. While it is possible while using only <code>GOTO</code> statements in <code>if–then</code> statements to write programs that are not spaghetti code and are just as well structured and readable as programs written in a structured programming language, structured programming makes this easier and enforces it. Structured <code>if–then–else</code> statements like the example above are one of the key elements of structured programming, and they are present in most popular high-level programming languages such as [[C (programming language)|C]], [[Java (programming language)|Java]], [[JavaScript]] and [[Visual Basic]] . ==== The "dangling else" problem ==== {{Main|Dangling else}} The <code>else</code> keyword is made to target a specific <code>if–then</code> statement preceding it, but for [[Nesting (computing)|nested]] <code>if–then</code> statements, classic programming languages such as [[ALGOL 60]] struggled to define which specific statement to target. Without clear boundaries for which statement is which, an <code>else</code> keyword could target any preceding <code>if–then</code> statement in the nest, as parsed. '''if''' a '''then''' '''if''' b '''then''' s '''else''' s2 can be parsed as '''if''' a '''then''' ('''if''' b '''then''' s) '''else''' s2 or '''if''' a '''then''' ('''if''' b '''then''' s '''else''' s2) depending on whether the <code>else</code> is associated with the first <code>if</code> or second <code>if</code>. This is known as the [[dangling else]] problem, and is resolved in various ways, depending on the language (commonly via the <code>end if</code> statement or <code>{...}</code> brackets).
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)