Exploring the Necessity of 'if' Statements in Computation

  • Thread starter DarkFalz
  • Start date
  • Tags
    Computation
In summary: If you are going to use enumerated values, why not just use a list? The point is that DECISIONS have to be made in programming and if statements are an extremely simple, and easy to understand, way to do that.If you get rid of them, you have to replace them with something that is likely to take as much computational time and without necessarily being as easy to understand when debugging.
  • #1
DarkFalz
71
0
This question occurred to me some time ago when I was thinking about whether or not `if` statements are fundamental in computation.
Consider a program that manages a single bank account (for the sake of simplicity). The bank account could be defined as something like
Account
{
int balance; // current amount of Money

boolean withdraw(int n)
{
if (balance >= n)
{
balance = balance -n;
return true;
}
else
return false;
}

void deposit(int n)
{
amount = amount + n;
}
}
Since the program has no way to known in which state it currently is unless it performs validations using `if` statements, as in the withdraw operation, `if` statements are unavoidable.
However, over the course of time, the program will pass through a finite set of states that can be known beforehand. In this particular case, a state is defined solely by the value of the `balance` variable, hence we would have states: `{balance = 0 , balance = 1, balance = 2...}`.
If we assign each state a number, say state {0,1,2,...} with a 1-1 correspondence to the above set of states, and assign to each operation a number identifier as well (say `deposit = 0 and withdraw = 1`), we could model the program as an explicit transition between states and therefore remove every `if` statement from the code.
Consider that `state = 0` is the state where `balance = 0` and we want to perform a deposit of 50 dollars, if we coded every single possible execution of the deposit function, we could just define the deposit function as
void deposit (int n)
{
deposit[state][n]; // index deposit instance for state = 0, amount = n;
}
`deposit[][]` would be a matrix of pointers for a set of functions that represent each possible execution of deposit, like
deposit[0][0] -> balance = balance + 0; state = 0;
deposit[0][1] -> balance = balance + 1; state = 1;
...
In the case of withdrawal, it would be like:
boolean withdraw (int n)
{
// index withdraw instance for the current state and amount=n
return withdraw[state][n];
}
`withdraw[][]` would be a matrix of pointers for a set of functions that represent each possible execution of withdraw, like:
deposit[0][100] -> return false; state = state;
...
deposit[200][100] -> balance = balance - 100; state = 100; return true;
In this situation, the program that manages the single bank account can be written without using a single `if` statement!
As a consequence however, we have to use A LOT more memory, which may make the solution unreasonable. Also one may put the question of how did we fill the `deposit[][]` and `withdraw[][]` matrices? By hand? It somehow implies that a previous computation that used `if`s as necessary to determine and possible states and transitions.
All in all, are `if`s fundamental or does my example prove that they aren't? If they are, can you provide me an example where this does not work? If they are not, why don't we use solutions like these more often?
Is there some law of computation which states that `if` statements are unavoidable?
 
Technology news on Phys.org
  • #2
A look at Turing machines may help you.
http://en.wikipedia.org/wiki/Turing_machine

It's basically the most simple computer possible that is still able to run any arbitrary algorithm. And it works only by explicit state transitions.
 
  • #3
An "if" statement is just making a comparison.
You have seen the truth tables of boolean logic for AND, NAND, OR,.. gates.
The truth table, and the corresponding logic gates, are just basic "if" statements.
For an AND gate, when both inputs are "1", the output will be a "1". All other times the output will be a "0.
That is the same as IF A=1 an B=1 THEN C=1 ELSE C=0

In your program without the if statements, say for example in the deposit routine , the program still has to determine which and only which deposit[][] to execute. Does it?
 
  • #4
256bits said:
An "if" statement is just making a comparison.
The if statement makes a comparison, and then chooses one of two options based on that comparison.
 
  • #5
The point is that DECISIONS have to be made in programming and if statements are an extremely simple, and easy to understand, way to do that. If you get rid of them, you have to replace them with something that is likely to take as much computational time and without necessarily being as easy to understand when debugging.
 
  • #6
You would find that restricting all decisions to be done using array pointers with state indices to be impractical in many cases. I personally would prefer a statement like "if( x < y){" to "execute_procedure[183]->" as you describe it. Enumerated values might help, but what is the point?
 

Related to Exploring the Necessity of 'if' Statements in Computation

1. What is an "if" statement in computation?

An "if" statement is a conditional statement used in programming languages to execute certain actions based on a given condition. It allows the program to make decisions and perform different tasks depending on whether a specific condition is true or false.

2. Why are "if" statements necessary in computation?

"If" statements are necessary in computation because they allow for more complex and dynamic programs. They enable the program to respond and adapt to different scenarios and inputs, making it more versatile and useful.

3. Can you give an example of an "if" statement in a programming language?

Sure, here's an example of an "if" statement in Python:

if x > 10:

    print("x is greater than 10")

This statement will only be executed if the value of x is greater than 10.

4. What happens if the condition in an "if" statement is not met?

If the condition in an "if" statement is not met, the program will move on to the next line of code without executing the statements within the "if" block. However, if there is an "else" statement after the "if" statement, the code within the "else" block will be executed instead.

5. Are there any alternatives to using "if" statements in computation?

Yes, there are alternatives to using "if" statements in computation, such as the "switch" statement in languages like Java and C++. However, "if" statements are still widely used and considered a fundamental concept in programming, and they offer more flexibility compared to other conditional statements.

Similar threads

  • Programming and Computer Science
Replies
1
Views
1K
  • Programming and Computer Science
Replies
11
Views
820
  • Programming and Computer Science
Replies
1
Views
774
  • Programming and Computer Science
Replies
11
Views
2K
  • Programming and Computer Science
Replies
2
Views
796
  • Engineering and Comp Sci Homework Help
Replies
9
Views
1K
  • Programming and Computer Science
Replies
1
Views
1K
  • Programming and Computer Science
Replies
23
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
4
Views
1K
Replies
9
Views
1K
Back
Top