Skip to main content

Functions

Function: A reusable block of code that performs a specific task.

#include <iostream>

// Function declaration
int add(int a, int b);
void greet(std::string name);
double calculateAverage(int scores[], int size);

int main() {
// Call functions
int sum = add(5, 3);
std::cout << "Sum: " << sum << std::endl;

greet("Alice");

int testScores[] = {85, 90, 78, 92, 88};
double average = calculateAverage(testScores, 5);
std::cout << "Average score: " << average << std::endl;

return 0;
}

// Function definition
int add(int a, int b) {
return a + b;
}

void greet(std::string name) {
std::cout << "Hello, " << name << "!" << std::endl;
}

double calculateAverage(int scores[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += scores[i];
}
return static_cast<double>(sum) / size;
}

Function Diagram:

┌───────────────────────────────────────────────────────────┐
│ Function Structure │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Function Declaration │ │
│ │ │ │
│ │ return_type function_name(parameter_list); │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Function Definition │ │
│ │ │ │
│ │ return_type function_name(parameter_list) { │ │
│ │ // function body │ │
│ │ return value; // for non-void functions │ │
│ │ } │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Function Call │ │
│ │ │ │
│ │ result = function_name(arguments); │ │
│ └─────────────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────┘

Function Call Flow:

┌───────────┐        ┌───────────┐       ┌───────────┐
│ │ │ │ │ │
main() │──────▶│ add(5,3) │──────▶│ return 8
│ │ │ │ │ │
└───────────┘ └───────────┘ └───────────┘

Output:

Sum: 8
Hello, Alice!
Average score: 86.6