1. Discuss a remote-control device as an interface for the user who wants to watch TV Is the interface adequate if the user wants to connect the appliance to other devices (e.g., a stereo system, VCR, or video camera) through its input and output channels? 2. Consider changing the interface of the module of Example 4.1 to have a separate call for asking whether a variable exists (and thus can be read or written safely). Discuss this change in terms of the quality of the modular structure, the efficiency of the system, etc. Example 4.1 • Suppose we are designing an interpreter for a very simple programming language, MINI, operating on integers and integer arrays We provide a symbol-table module that is used to store information about the variables of a program. The symbol table exports a procedure GET that accepts as input the symbolic name of a variable and, possibly, the value of an index (in the case of an array) and returns. the value of the variable. Similarly, a procedure PUT makes it possible to store a new value for a given • variable. When a new variable declaration is encountered, a new entry” is created in the symbol table by calling a procedure CREATE, passing it the name of the variable and its size (the number of integer entries it represents). The purpose of the interface we are designing is to hide the physical structure of the table from the clients of the symbol-table module. To warn clients when they either try to read or write the value of a variable that does not exist or try to access an array with an invalid index value, the procedures GET and PUT return an additional parameter, POS. The value returned for Pos is a pointer to the variable stored in the table if such variable exists, or it is the null pointer if the variable does not exist. This design can be criticized because of the in the interface. If our pur-pose is just to provide operations to store and retrieve data (and signal the case where access to the data is incorrect), then we are providing additional information (i.e., the position in the table where the data are stored). Such redundancy has negative side effects on the ease of changing the design, as we shall show shortly. It also provides a loophole into information hiding.