Bird
Raised Fist0
C++programming~10 mins

Procedural vs OOP approach in C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a function that adds two integers.

C++
int add(int a, int b) {
    return a [1] b;
}
Drag options to blanks, or click blank then click option'
A-
B/
C*
D+
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using subtraction or multiplication instead of addition.
2fill in blank
medium

Complete the code to define a struct named Point with two integer members x and y.

C++
struct [1] {
    int x;
    int y;
};
Drag options to blanks, or click blank then click option'
APoint
BCircle
CRectangle
DShape
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using unrelated names like Circle or Rectangle.
3fill in blank
hard

Fix the error in the class method declaration to make it a constructor.

C++
class Rectangle {
public:
    int width, height;
    [1](int w, int h) {
        width = w;
        height = h;
    }
};
Drag options to blanks, or click blank then click option'
Avoid Rectangle
BRectangle
Cinit
DsetSize
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Adding a return type like void to the constructor.
4fill in blank
hard

Fill both blanks to complete the procedural function that calculates area and the OOP method that returns area.

C++
int calculateArea(int [1], int [2]) {
    return [1] * [2];
}

class Rectangle {
public:
    int width, height;
    int area() {
        return width * height;
    }
};
Drag options to blanks, or click blank then click option'
Awidth
Bheight
Clength
Dsize
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using different or inconsistent parameter names.
5fill in blank
hard

Fill all three blanks to complete the OOP class with constructor and method to calculate area.

C++
class Circle {
public:
    double [1];
    Circle(double [2]) {
        [1] = [2];
    }
    double area() {
        return 3.14159 * [1] * [1];
    }
};
Drag options to blanks, or click blank then click option'
Aradius
Br
CradiusValue
Ddiameter
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using the same name for parameter and member without this->, causing confusion.

Practice

(1/5)
1.

Which of the following best describes procedural programming?

Procedural programming:

easy
A. Uses functions and step-by-step instructions to solve problems.
B. Groups data and functions inside classes called objects.
C. Focuses on creating reusable components with inheritance.
D. Uses event-driven programming with callbacks.

Solution

  1. Step 1: Understand procedural programming basics

    Procedural programming organizes code as a sequence of instructions and functions.
  2. Step 2: Compare with other programming styles

    OOP groups data and functions in classes, which is different from procedural style.
  3. Final Answer:

    Uses functions and step-by-step instructions to solve problems. -> Option A
  4. Quick Check:

    Procedural = step-by-step functions [OK]
Hint: Procedural = functions + steps, OOP = classes + objects [OK]
Common Mistakes:
  • Confusing OOP with procedural programming
  • Thinking procedural uses classes
  • Mixing event-driven with procedural
2.

Which of the following is the correct way to define a class in C++?

?
easy
A. function MyClass() { }
B. class MyClass { public: void display(); };
C. def MyClass(): pass
D. struct MyClass() { void display(); };

Solution

  1. Step 1: Recall C++ class syntax

    In C++, classes are defined using the keyword class followed by the class name and braces.
  2. Step 2: Check each option

    class MyClass { public: void display(); }; uses correct C++ syntax. function MyClass() { } is JavaScript style. def MyClass(): pass is Python. struct MyClass() { void display(); }; has incorrect struct syntax.
  3. Final Answer:

    class MyClass { public: void display(); }; -> Option B
  4. Quick Check:

    C++ classes start with 'class' keyword [OK]
Hint: C++ classes start with 'class' keyword, not function or def [OK]
Common Mistakes:
  • Using function or def keywords instead of class
  • Confusing struct syntax with class
  • Missing semicolon after class definition
3.

What will be the output of the following C++ code?

#include <iostream>
class Counter {
public:
    int count = 0;
    void increment() { count++; }
};

int main() {
    Counter c;
    c.increment();
    c.increment();
    std::cout << c.count << std::endl;
    return 0;
}
medium
A. 0
B. 1
C. 2
D. Compilation error

Solution

  1. Step 1: Understand the class and method

    The class Counter has a member variable count initialized to 0 and a method increment() that adds 1 to count.
  2. Step 2: Trace the main function calls

    In main, an object c is created. increment() is called twice, so count becomes 2. Then count is printed.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Two increments increase count to 2 [OK]
Hint: Each increment adds 1, called twice means count = 2 [OK]
Common Mistakes:
  • Forgetting to initialize count to 0
  • Assuming increment returns a value
  • Confusing count with method call
4.

Identify the error in this procedural-style C++ code and fix it:

int total = 0;
void add(int value) {
    total += value;
}

int main() {
    add(5);
    add(10);
    std::cout << total << std::endl;
    return 0;
}
medium
A. Missing #include <iostream> for std::cout.
B. Function add should return int.
C. No error, code works fine.
D. Variable total should be inside main.

Solution

  1. Step 1: Check for missing includes

    The code uses std::cout but does not include <iostream>, which is required for output.
  2. Step 2: Verify other parts

    Function add correctly modifies global total. Returning int is not required. total can be global for procedural style.
  3. Final Answer:

    Missing #include <iostream> for std::cout. -> Option A
  4. Quick Check:

    Always include <iostream> for std::cout [OK]
Hint: Missing #include <iostream> causes std::cout errors [OK]
Common Mistakes:
  • Thinking add must return a value
  • Moving total inside main breaks add function
  • Ignoring missing include errors
5.

You want to model a simple bank account in C++. Which approach is better and why?

Options:

  • Procedural: Use global variables for balance and functions to deposit/withdraw.
  • OOP: Create a BankAccount class with balance as private and methods for deposit/withdraw.
hard
A. Procedural is better because it is simpler and uses fewer lines of code.
B. OOP is worse because it cannot handle simple tasks like bank accounts.
C. Procedural is better because classes are slow and complex.
D. OOP is better because it groups data and functions, protecting balance and making code reusable.

Solution

  1. Step 1: Understand the problem domain

    A bank account needs to protect its balance and provide controlled access to deposit and withdraw money.
  2. Step 2: Compare procedural and OOP approaches

    Procedural uses global variables which can be changed anywhere, risking errors. OOP encapsulates balance inside a class, controlling access and improving code reuse.
  3. Final Answer:

    OOP is better because it groups data and functions, protecting balance and making code reusable. -> Option D
  4. Quick Check:

    OOP encapsulates data and behavior safely [OK]
Hint: Use OOP to protect data and group related functions [OK]
Common Mistakes:
  • Assuming procedural is always simpler
  • Thinking classes slow down simple programs
  • Ignoring data protection benefits of OOP
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard