Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Algebra of conditionals
Index -> General Programming
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
wtd




PostPosted: Fri Dec 10, 2021 7:31 pm   Post subject: Algebra of conditionals

Let's examine the algebra of conditionals. We'll use Python syntax with symbols because it's pretty. We'll also assume for now that we don't have any statements outside nested conditionals.

A sample nested conditional.

Python:
if A:
    if B:
        if C:
            X
    elif D:
        Y
    else:
        Z
else:
    W


How can we flatten this?

We know we have to "and" the previous level with any nested conditions.

So, as a first step:

Python:
if A:
    if B and C:
        X
    elif D:
        Y
    else:
        Z
else:
    W


But we can go right down to a single level with ease:

Python:
if A and B and C:
    X
elif A and D:
    Y
elif A:
    Z
else:
    W


Let's look at another example:

Python:
if A:
    X
elif B:
    Y
elif C:
    Y
elif D:
    Z
else:
    Z


When two consecutive branches of a conditional yield the same result, we can "or" them together. If one of the consecutive conditions that leads to the same result is "else", we can just use "else".

Python:
if A:
    X
elif B or C:
    Y
else:
    Z


But what happens if they're not consecutive. What if other branches lie in between?

Python:
if A:
    X
elif not B:
    Y
elif C:
    X
else:
    Z


We can still "or" those together, but we have to "and" the negation of each intermediate condition.

Python:
if A or C and not (not B):
    X
elif not B:
    Y
else:
    Z


Or just:

Python:
if A or C and B:
    X
elif not B:
    Y
else:
    Z
Sponsor
Sponsor
Sponsor
sponsor
Display posts from previous:   
   Index -> General Programming
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 1 Posts ]
Jump to:   


Style:  
Search: