Programming and Problem-Solving

COS1511 - Introduction To Programming I · Introduction to Computers and C++ Programming

Programming and Problem-Solving

Programming is the process of designing and creating a set of instructions that a computer can follow. This process involves problem-solving skills. You must understand the problem, break it down into smaller parts, and develop a logical sequence of steps to solve it.

Understanding the Problem

The first step in programming is to understand the problem you want to solve. You need to ask yourself questions like:

  • What is the goal of the program?
  • What inputs are required?
  • What outputs are expected?

For example, if you want to create a program that calculates the area of a rectangle, you need to know:

  • The formula for the area (Area = length × width).
  • The values for length and width that the user will provide.

Breaking Down the Problem

After understanding the problem, the next step is to break it down into smaller, manageable tasks. This process is called decomposition. Each task can be solved individually.

For the rectangle area example, the tasks are:

  1. Get the length from the user.
  2. Get the width from the user.
  3. Calculate the area using the formula.
  4. Display the result to the user.

Developing a Solution

Once you have broken down the problem, you need to develop a solution. This involves writing pseudocode or flowcharts to outline the logic of your program. Pseudocode is a way to represent your program in simple, human-readable language.

Pseudocode Example

START PROGRAM
DECLARE length, width, area AS FLOAT
PRINT 'Enter the length:'
READ length
PRINT 'Enter the width:'
READ width
area = length * width
PRINT 'The area is:', area
END PROGRAM

Implementing the Solution in C++

After developing pseudocode, you can implement it using C++. Here is how you would write the rectangle area program in C++:

#include <iostream>  // Include input-output stream library
using namespace std;  // Use standard namespace
int main() {
    float length, width, area;  // Declare variables
    cout << 'Enter the length:';<< endl;  // Prompt user
    cin >> length;  // Read length
    cout << 'Enter the width:';<< endl;  // Prompt user
    cin >> width;  // Read width
    area = length * width;  // Calculate area
    cout << 'The area is: ' << area << endl;  // Display result
    return 0;  // End program
}

Testing the Program

After writing your program, you must test it to ensure it works correctly. Testing involves running the program with different inputs and checking if the outputs are as expected.

Watch out: Always test your program with edge cases. For example, what happens if the length or width is zero? Your program should handle such cases gracefully.

Debugging

If your program does not work as expected, you will need to debug it. Debugging is the process of finding and fixing errors in your program. Common errors include:

  • Syntax errors: Mistakes in the code structure.
  • Logic errors: The code runs, but the output is not what you expect.
  • Runtime errors: The program crashes while running.

Use print statements to help identify where the problem lies. For example, you can print the values of variables at different stages to see if they hold the expected values.

Using Control Structures

Control structures allow you to dictate the flow of your program. The main control structures are:

  • Sequential: Code runs in order from top to bottom.
  • Selection: Makes decisions using if statements.
  • Iteration: Repeats code using loops.

For example, if you wanted to check if the area is greater than a certain value, you could use an if statement:

if (area > 100) {
    cout << 'The area is large.' << endl;
}

Using Functions

Functions are reusable blocks of code that perform a specific task. They help to organise your program and reduce redundancy. For example, you could create a function to calculate the area:

float calculateArea(float length, float width) {
    return length * width;
}

You would then call this function in your main program:

area = calculateArea(length, width);

Remember: Functions should have a clear purpose and help to make your code more readable.

Conclusion

Programming is a systematic process that involves understanding problems, breaking them down, developing solutions, and testing those solutions. By mastering these skills, you will become a more effective programmer.

Summary

  • Understand the problem before programming.
  • Break down the problem into smaller tasks.
  • Develop a solution using pseudocode or flowcharts.
  • Implement the solution in C++.
  • Test and debug your program.
  • Use control structures and functions to organise your code.

Check your understanding

  1. What are the steps to understand a programming problem?
  2. How can you break down a complex problem into smaller tasks?
  3. What is the purpose of a function in programming?
  4. What common errors should you watch out for when testing your program?