CMPT 212                      Assignment 4
Spring 1998                   ------------


Due date:  3:30pm, Monday, April 6, 1998
           in the assignment drop-off boxes.
	   LATE ASSIGNMENTS WILL NOT BE ACCEPTED.


1. Goal

   - To become familiar with writing Microsoft Windows programs.

2. Overview

   - This program extends Assignment 3 by adding a Windows interface.

3. Description

   - A sample program is available in the Assignment Lab.
           N:\CMPT\212\D1\Asgn4\sample.exe
   - Your program should be like the sample program as much as 
        possible.
   - The title on the main window of your program must have your
        name on it somewhere.  A suggested title is this:
           "CMPT 212 Assignment 4 (Your Name)"
   - I have created an icon and put it in the file
           N:\CMPT\212\D1\Asgn4\Asgn4.ico
        You may use it if you want to, or you may create your own icon.

4. Design of the Program

   4.1 Modules
      - The program will consist of three modules: a "Parse" module,
          a "Expression" module, and "Main" module.

   4.2 The Parse Module
      - Same as Assignment 3.

   4.2 The Expression Module
      - Same as Assignment 3, except that I have removed "const" from
	   the two expression pointers in the second "composite"
	   constructor:
	         composite(const operation, expr *, expr *) 
           I made this change so that you can assignment directly from
	   the parameters to the "op1" and "op2" members of a "composite".
	   Previously, this could not be done, since you could not 
	   assign from a const to a non-const without casting.  Note 
	   that if you are making a clone of the parameters, then this
	   change will not affect your code.

   4.4 The Main Module
      - This module contains the main function of the program.

5. Design Features

   5.1 Error Checking
      - Very little error checking needs to be done.
      - The program does not have to check for out-of-memory errors
          or input errors.

   5.2 Given Code
      - The following files are given to you.  You must use them.
          You must not change them.
               parse.h
               expr.h
      - You must implement all of the functions defined in "parse.h"
          and "expr.h".
      - These files will be available on the class web page and also
          in the Assignment Lab on the N: drive.

   5.3 Bool Type
      - If you are using a compiler which does not support the "bool"
          type, you must define the "bool" type yourself in a header
          file called "bool.h".  Your program must be able to compile
          without errors under the Borland C++ in the Assignment Lab.

   5.4 Miscellaneous
      - Use "const" wherever possible.
      - Use the smallest scope and lifetime for every variable,
          constant, and function.

6. Source Code Comments
   - Your source code must be fully commented.
   - See the Sample Assignment on the web page for an example of
       the expected commenting style.
         http://www.cs.sfu.ca/CC/212/simpson/98-1/assignments/sample.html

7. Test Runs
   - Do "print screens" of these windows:
        a. the main window with Expression 1 equal to "1+2" and
	      Expression 2 equal to "4/(10-3)"
	b. the "Enter Expression" dialog box.
        c. the "Clear Expression" dialog box.
	d. the "Join Expression" dialog box.
	e. the "Quit" dialog box.

8. What to Hand In
   - Title page containing:
        a. Course number
        b. Assignment number
        c. Student name
        d. Student number
        e. Student email address
   - Listing of the source code in this order:
        a. asgn4.cpp
        b. parse.h
        c. parse.cpp
        d. expr.h
        e. expr.cpp
        f. bool.h  (if written -- see Section 5.3 above)
   - Scripts of the test runs (see Section 7 above).

(end of assignment)