Lecture 18 - Exercises

18A - Variables are References

For each of today’s exercises, give the answer to the exercise and draw the memory diagram at the end of the program. Some building blocks will be provided in the Google Slides to help get you started with making memory drawings on the slides.

  1. What does the following program print?

  2. What is the output of each print call in the following program?

  3. Consider the following program:

    1. How many distinct list objects are created in the course of executing the program above? Be sure to include any lists that are created but not pointed at by any variable.
    2. At the end of the program, how many other variables (not counting a itself) point to the same list as a?

Problems

  1. Implement the following function. Notice that this function returns a new list and leaves in_list unmodified.

  2. Implement the following function. Notice that this function does not return a new list, but modifies the given list in place. Because the list object being modified is the same one as the caller passed in, we do not need to return another reference to the same object.

    …which brings up an important question: if the world’s population at the time of the snap was odd, did Thanos round up or down?