Lesson 4: Control Structures – Making Decisions (And Telling Your Program What to Do!)


Lesson 4

Lesson 4: Control Structures – Making Decisions (And Telling Your Program What to Do!)


Welcome back, coding adventurer! 🗺️

So far, you’ve stored numbers, crunched some math, and made your variables feel important. But now it’s time to take it up a notch and control the flow of your program. Because let’s be honest, if your code can’t make decisions or repeat tasks, it’s like a GPS that doesn’t know how to reroute — totally lost!

Get ready to explore the mysterious world of control structures. From if statements to loops, you’re about to take the wheel and decide exactly what your program should do and when. So buckle up, grab your cup of coffee (make it a double today), and let’s dive in!


If Statements – Teaching Your Code to Think

Let’s start with the basics: the if statement. Think of it as the bouncer at a nightclub — it only lets the right conditions through.

The syntax is simple:

if (condition) {
    // code to execute if condition is true
}

Imagine you have a simple program that checks whether you have enough coffee in your cup:

#include <stdio.h>

int main() {
    int coffee = 3;

    if (coffee > 0) {
        printf("Keep coding, you have coffee!\n");
    }

    return 0;
}

Explanation: If the value of coffee is greater than 0, the program will print “Keep coding, you have coffee!”. Otherwise, it will stay silent — like a good barista that won’t bother you when you’re out of caffeine.

The else Statement – Handling the “Nope” Scenarios

But what if you run out of coffee? You don’t want your program to just sit there, staring blankly. Enter the else statement:

if (coffee > 0) {
    printf("Keep coding, you have coffee!\n");
} else {
    printf("Out of coffee! Time for a refill.\n");
}

With the else statement, your program now knows how to handle both situations. It’s like having a backup plan — because no one wants to code without caffeine!


The else if Statement – Adding More Conditions

What if you have too much coffee? (Yes, it’s possible!) Let’s add another condition with else if:

if (coffee > 5) {
    printf("Whoa, easy on the coffee! Time to slow down.\n");
} else if (coffee > 0) {
    printf("Keep coding, you have coffee!\n");
} else {
    printf("Out of coffee! Time for a refill.\n");
}

Now your program handles three scenarios:

  1. If you have more than 5 cups, it tells you to chill.
  2. If you have some coffee left, it cheers you on.
  3. If you have no coffee, it sends you to the kitchen.

The switch Statement – When You Have Multiple Options

If if, else, and else if are like road signs, switch is more like a traffic light — multiple paths, one condition. Use switch when you have a single value and multiple outcomes.

Imagine you want to check the current day of the week:

#include <stdio.h>

int main() {
    int day = 4; // Assume 4 is Thursday

    switch (day) {
        case 1:
            printf("Monday blues...\n");
            break;
        case 2:
            printf("Tuesday grind!\n");
            break;
        case 3:
            printf("Wednesday halfway there!\n");
            break;
        case 4:
            printf("Thursday, almost there!\n");
            break;
        case 5:
            printf("Friday, party time!\n");
            break;
        case 6:
        case 7:
            printf("Weekend! Time to relax.\n");
            break;
        default:
            printf("Invalid day...\n");
    }

    return 0;
}

Explanation: Depending on the value of day, the program prints a different message. switch is neat when you have lots of options and don’t want to clutter your code with a bunch of if statements.


Loops – Making Your Code Work Overtime

Now that we’ve covered decisions, let’s talk about making your program do things over and over again. That’s where loops come in. Loops are like the treadmill of programming — they keep going until you tell them to stop.

  1. for Loop – Best for when you know exactly how many times you want to repeat something.
for (int i = 0; i < 5; i++) {
    printf("Iteration %d\n", i);
}

Explanation: This loop prints “Iteration 0” to “Iteration 4”. Perfect for counting, cycling through arrays, or just annoying your friends with repeated messages.

  1. while Loop – Great when you don’t know how many times you need to repeat.
int coffee = 3;
while (coffee > 0) {
    printf("You have %d cups of coffee left.\n", coffee);
    coffee--; // Drink one cup
}

Explanation: As long as there’s coffee, the loop continues. Each time, coffee-- reduces the number by 1 until you run out.

  1. do-while Loop – Like while, but it always runs at least once.
int coffee = 0;
do {
    printf("Let’s get more coffee!\n");
} while (coffee > 0);

Explanation: Even though coffee is zero, the program still tells you to get more coffee once. Perfect for scenarios where you want to execute code before checking the condition.


Common Loop Pitfalls

  1. Infinite Loops: Forgetting to update your loop variable can trap your program forever. Make sure you include a way out!

  2. Off-By-One Errors: for (int i = 0; i <= 5; i++) will run 6 times, not 5. Check those conditions carefully!

  3. Break and Continue: Use break to exit a loop early, and continue to skip to the next iteration.


Homework Challenge: Build a Guessing Game!

Put your new skills to the test by creating a guessing game. Here’s what it should do:

  1. Choose a random number between 1 and 10.
  2. Ask the user to guess the number.
  3. Use if and while to give hints and keep asking until they get it right.

Bonus Points: Add a counter to track how many guesses it took. See if you can beat your own score!


Final Thoughts

Today, you’ve mastered control structures — the true foundation of every complex program. But don’t pack up your coding backpack yet! Join me in Lesson 5, where we’ll dive into functions. Get ready to organize your code, avoid redundancy, and become a true function wizard! 🧙‍♂️✨


See also