What should the level-two program look like?
- The level-two program needs documentation for the main program, for the
functions called by the main program (they are called level-two
functions), and for the functions called by the level-two functions
(they are called level-three functions.)
- The documentation for every function must tell what the function will
do when it is completed. (Normally you don't write documentation to
tell what a stub function does.)
- In the level-two program you need to finish the code for the main
function and all the level-two functions.
- In the level-two program you need to have stubs for all the level-three
functions.
- If you follow my suggested design the main program will have some
declarations of variables, perhaps some function prototypes, perhaps an
initial call to askPermission, and a loop containing calls to getParams,
getImage, doTileJob, and askPermission.
- In your level-two program you can probably put versions of askPermission,
and getParams that don't make calls to any level-three functions (except
'built-in' functions that you don't need to write).
- Depending on how you want to design the program, you may want getImage to
call a level-three function that you write. On the other hand you may
not want to do that.
- I think doTileJob really has to call a level-three function to do most of
the work. I think doTileJob is bound to be too long and 'busy' if you
try to write it without a lot of reliance on a level-three function.
- getImage and doTileJob are both functions that could be written with the
basic structure of a for-loop.
- Basically, getImage can:
- open the file
- get the height and width of the image,
- then perform a loop: "For each row index i from 0 to
heightOfFileImage-1 move to the beginning of the next line of
the image file and copy the characters on that line into row i
of the buffer array," and then
- close the file
The function that copies the next line of the file into the buffer
can be a stub in your level-two program. You can put off figuring
out how to do that part of the problem until you start work on the
level three program.
- The basic structure of doTileJob could be "For each row index i from
0 to numberOfRowsInTheTiling, make a row of
numberOfColumnsInTheTiling 'tiles' across the standard input (you
have to do it by copying characters out of the buffer array). The
function that makes the row of tiles can be a stub in your level-two
program. You can put off figuring out how to do that part of the
problem until you start work on the level three program.