Please follow the notations described in section 2.5: for each
function please write a contract, a purpose, examples, and tests with
expected values.
You should have at least 3 tests for each program.
Exercise 3.3.2, 3.3.3 p. 28.
Exercise 3.3.5 p. 28.
Exercise 4.2.1 parts 2, 3, 5 p. 33.