Functions name reusable work and return values to the caller.

function call A function call runs the named function and can use the returned value in another expression.

Functions

side
functions.cpp
Replay: real traced execution (multi-file project)
#include <iostream>

int square(int value) {
    return value * value;
}

int main() {
    int side = 5;
    int area = square(side);

    std::cout << "side=" << side << std::endl;
    std::cout << "area=" << area << std::endl;
    return 0;
}
#include <iostream>

int square(int value) {
    return value * value;
}

int main() {
    int side = 3;
    int area = square(side);

    std::cout << "side=" << side << std::endl;
    std::cout << "area=" << area << std::endl;
    return 0;
}
#include <iostream>

int square(int value) {
    return value * value;
}

int main() {
    int side = 8;
    int area = square(side);

    std::cout << "side=" << side << std::endl;
    std::cout << "area=" << area << std::endl;
    return 0;
}
  1. side ← 5

    7int main() {8    int side→ 5 = 5; //@side=3, 89    int area = square(side5);
  2. int square(int value)

    3int square(int value5) {4    return value5 * value;5}
  3. area ← 25

    8    int side = 5; //@side=3, 89    int area→ 25 = square(side5);1011    std::cout << "side=" << side5 << std::endl;12    std::cout << "area=" << area25 << std::endl;13    return 0;14}
    outputside=5
    area=25
  1. side ← 3

    7int main() {8    int side→ 3 = 3;9    int area = square(side3);
  2. int square(int value)

    3int square(int value3) {4    return value3 * value;5}
  3. area ← 9

    8    int side = 3;9    int area→ 9 = square(side3);1011    std::cout << "side=" << side3 << std::endl;12    std::cout << "area=" << area9 << std::endl;13    return 0;14}
    outputside=3
    area=9
  1. side ← 8

    7int main() {8    int side→ 8 = 8;9    int area = square(side8);
  2. int square(int value)

    3int square(int value8) {4    return value8 * value;5}
  3. area ← 64

    8    int side = 8;9    int area→ 64 = square(side8);1011    std::cout << "side=" << side8 << std::endl;12    std::cout << "area=" << area64 << std::endl;13    return 0;14}
    outputside=8
    area=64

Follow the Function Call

  1. side starts at 5.
  2. square(side) sends 5 into the function.
  3. The function returns 5 * 5.
  4. area becomes 25.
  5. The program prints side=5 and area=25. | side | square result | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |

Exercise: functions.cpp

Reproduce area=25 for side 5, then try side 3 and 8 and predict each area before running it.