# Lesson 6: Simple if structure

[spoiler title=”Lesson Video”]
Direct Download of Video (For mobile / offline viewing)(right click > save target as)

[/spoiler]

[spoiler title=”Lesson Source Code”]

```
#include <iostream>
#include <cmath>
using namespace std;

int main(){

//   ==  Double equals sign  -- boolean comparison operator
// boolean = type of variable that can only hold true or false
// || or, && and, > Gt, <lt , >=, < =, ! not, !=,
// bool -- Type

//bool isTaken = false;
//char c = ' ';

//if ( isTaken ){
//  cout << "This seat is already purchased" << endl;
//}
//else{
//  cout << "This seat costs \$12 would you like to purchase this seat? Y/N" << endl;
//  cin >> c;
//  if (c == 'Y'){
//    isTaken = true;
//    cout < < "Thank you for your purchase";
//  }
//  else{
//    cout << "Thanks for your interest";
//  }

//}

int i = 0;
if ( 1 < 7 || 9 < 6  ){
cout << "Is True" << endl;
i += 9;
}
else{
cout << "Is false" << endl;
}

cout << i;

system("PAUSE");
return 0;
}

```

[/spoiler]

Homework: http://beginnerscpp.com/forums/index.php/topic,60.0.html

If Statements
If statements are used to determine the course that our program will run in, based off whether a condition evaluates to being true, or false. The statement of if has 2 parts. if and the condition that it’s checking (which can have many parts). A simple if statement might look something like this:

```if (myNumber == 2){
myNumber +=5;
}
```

or they can be much more complex, like this

```int multiplier=3, manaCost=17, healthCost=14, intellect=27, playerCurrentHealth=5, playerCurrentMana=15, damage =0;
bool isStunned=false;
if(intellect >=20 && playerCurrentMana >= manaCost && playerCurrentHealth >= healthCost && !isStunned){
damage = multiplier*intellect;
}
else if(isStunned){
cout < < "You are stunned. " << endl;
}
else{
cout << "Insufficient health and / or mana to cast." << endl;
}
```

In the first example we are simply checking if a number is equal to the number 2. Once we determine that is true, we add 5 to the number. The second example is something you might see in a game development scenario. A user is goes to cast a spell, there needs to be checks made against current values, and those are passed over to our if statements. We need for ALL of those conditions to be true for the spell to be cast (the user needs enough intellect to understand the spell, they need both mana and health, and they cannot be stunned) if any of those are not true, it will be passed to the else if (and then evaluated for truth there) then passed to else if that is not true either.

Classically if statements were represented (in flowcharting) as diamond layed on its side, with lines coming from the edges diagonally to illustrate that there were two paths that can be taken from an if statement (symbolizing an if and an else). While this is technically correct, it does lead to some questions among beginners for instance the following is VALID code

```if(myNumber ==5){
myNumber +=2;
}

cout < < "The value of myNumber is: " << myNumber;
```

In the example above you will notice that there is no “else” attached to this if. So the earlier example showing two distinct “branches” might not always be clearly represented in code. A way that I’ve seen some beginners cope with this confusion is by putting in Null else statements (else statements that are just placeholders) and I am against this for 2 reasons:

1. It adds length to your code
2. It adds no functionality to your code

Here’s an example of something a student sent me that was along those lines.

```...

if( startingCash >= 5000 ){
interestRate=5;
}
else{
//placeholder
}
...
```

As you can see there is no functionality gained from this type of code.

Scope
Scope is essentially the “lifespan” of a variable. When a variable is declared within a specific scope it “dies” (is destroyed) with that scope. This is useful and dangerous at the same time. Scopes will become more important when we get into loops. Below is a short example showing a variable declared in a scope and being unavailable outside of the scope:

```if ( true ){
int myNumber = 1;    //Declared in scope
}     //Gets destroyed here
cout < < myNumber;     //This command will fail since myNumber was destroyed at the end of the scope established by the if statement
```

Boolean Comparison Operators

• == (Equal to)
• != (Not Equal To)
• ! (Not (typically used with bool variables))
• > (Greater Than)
• < (Less than)
• >= (Greater than / Equal to)
• <= (Less Than / Equal to)
• || (Or)
• && (And)

Please note, the listing above is not a complete list of operators, but it will encompass the scope of what we will be learning in this course. There are other operators called “Bitwise operators” that you can read about if you choose, though you will likely not need to use them for quite some time.