Comparison of Conditional Statements

Let's look at the execution flow of different conditional statements using the debugger.

In this lesson, we’ll look at the execution flow of different conditional statements (if, if-else, and switch) by executing the code line-by-line using the debugger.

We’ll use the same program example for all conditional statements. This might appear repetitive, but the goal is to understand how each conditional statement executes and to bring more clarity on how it’s different from the others.

Instruction: Run and execute the codes step-by-step for all conditional statements (if, if-else, and switch).

Without removing the default breakpoint, click the restart button ( ), and then to execute the code line-by-line, click the next button ( ) to go to the next line.

Execution using the if statement

Even when the if condition is true, all the remaining if conditions are still checked. Run the code below and see how it works.

#include<iostream>
using namespace std;

int main()
{
    int marks;
    cout << "The marks: ";
    cin >> marks;

    if(marks>=0 && marks<=100)
    {
        int G = marks/10;
    
        if(G==10 || G==9)
            cout << "A+" << endl;
        if(G==8)  
            cout << "A" << endl;
        if(G==7)  
            cout << "B+" << endl;
        if(G==6)  
            cout << "B" << endl;
        if(G==5)  
            cout << "C" << endl;
        if(G==4)  
            cout << "D" << endl;
        if(G<4)
            cout << "F" << endl;
    }
    else
        cout << "Invalid Input."<<endl;

  return 0;
}



Execution using the if-else statement

When an if condition is true, the remaining else statements that follow that specific if condition are no longer checked. Run the code below and see how it works.

#include<iostream>
using namespace std;

int main()
{
  int marks;
  cout << "The marks: ";
  cin >> marks;
  
  if(marks>=0 && marks<=100)
  {
    int G = marks/10;

    if(G==10 || G==9)
        cout << "A+" << endl;
    else if(G==8)  
        cout << "A" << endl;
    else if(G==7)  
        cout << "B+" << endl;
    else if(G==6)  
        cout << "B" << endl;
    else if(G==5)  
        cout << "C" << endl;
    else if(G==4)  
        cout << "D" << endl;
    else 
        cout << "F" << endl;
  }
  else
      cout << "Invalid Input."<<endl;

  return 0;
}


Execution using the switch statement

The control goes directly to the case that matches with the expression, and the statements are executed until a break statement is found. When found, the break statment returns the control to the statement right after the switch statement ends.

Run the code below and see how it works.

#include<iostream>
using namespace std;

int main()
{
  int marks;
  cout << "The marks: ";
  cin >> marks;

  if(marks>=0 && marks<=100)
  {
    switch(marks / 10)
    {
      case 10:
      case 9:
      {
        cout << "A+" << endl;
        break;
      } 

      case 8:
      {
        cout << "A" << endl;
        break;
      } 
      
      case 7:
      {
        cout << "B+" << endl;
        break;
      }   

      case 6:
      {
        cout << "B" << endl;
        break;
      } 

      case 5:
      {
        cout << "C" << endl;
        break;
      }
      
      case 4:
      {
        cout << "D" << endl;
        break;
      } 

      case 3:
      case 2:
      case 1:
      case 0:
      {
        cout << "F" << endl;
        break;
      }
    }
  }  
  else
    cout << "Invalid Input."<<endl;
    
  return 0;
}