home *** CD-ROM | disk | FTP | other *** search
- CHAPTER 13 - Complete sample programs
-
-
- Prior to this point, this tutorial has given you many
-
- example programs illustrating a point of some kind, but
-
- these have all been "nonsense" programs as far as being
-
- useful. It would be a disservice to you to simply quit with
-
- only program fragments to study so the following programs
-
- are offered to you as examples of good Pascal programming
-
- practice. They are useful programs, but they are still
-
- short enough to easily grasp their meaning. We will discuss
-
- them one at a time.
-
- AMORTIZATION TABLE GENERATOR
-
- This is not one program, but five. Each one is an
-
- improvement on the previous one, and the series is intended
-
- to give you an idea of program development.
-
- AMORT1 - This is the bare outline of the amortization
-
- program. Although it is an operating program, it
-
- doesn't do very much. After some thought and
-
- planning, the main program was written to allow for
-
- an initialization, then an annual repeating loop.
-
- The annual loop would require a header, a monthly
-
- calculation, and an annual balance. Finally, a
-
- procedure was outlined for each of these functions
-
- with a minimum of calculations in each procedure.
-
- This program can be compiled and run to see that it
-
- does do something for each month and for each year.
-
- It has a major problem because it does not stop when
-
- the loan is payed off but keeps going to the end of
-
- that year. The primary structure is complete.
-
- AMORT2 - This is an improvement over AMORT1. The monthly
-
- calculations are correct but the final payment is
-
- still incorrectly done. Notice that for ease of
-
- testing, the loan variables are simply defined as
-
- constants in the initialize procedure. To make the
-
- procedures easier to find, comments with asterisks
-
- were added. This program is nearly usable. Compile
-
- and run it.
-
- AMORT3 - Now we calculate the final payment correctly and we
-
- have a correct annual header with column headings.
-
- We have introduced a new variable to be used for an
-
- annual interest accumulation. This is neat to have
-
- at income tax time. This program can also be
-
- compiled and run.
-
- AMORT4 - This program does nearly everything we would like
-
- it to do. All of the information needed to build the
-
- table for any loan is now read in from the keyboard,
-
- greatly adding to the flexibility. After the
-
-
-
- Page 68
-
-
-
-
-
-
-
-
-
- CHAPTER 13 - Complete sample programs
-
-
- information is available, the monthly payment is
-
- calculated in the newly added procedure
-
- "calculate_payment". The annual header has a new
-
- line added to include the original loan amount and
-
- the interest rate in the information. Compile and
-
- run this program to see its operation.
-
- AMORT5 - The only additional feature in this program is the
-
- addition of a printout of the results. Examining the
-
- program, you will notice that many of the output
-
- statements are duplicated with the "lst" included
-
- for the device selection. Compile and run this
-
- program, but be sure to turn your printer on to get
-
- a printout of the amortization table you ask for.
-
- TOP DOWN PROGRAMMING
-
- The preceding example is an example of a top-down
-
- approach to programming. This is where the overall task is
-
- outlined, and the details are added in whatever fashion
-
- makes sense to the designer. The opposite is a bottom-up
-
- programming effort, in which the heart of the problem is
-
- defined and the rest of the program is built up around it.
-
- In this case, the monthly payment schedule would probably be
-
- a starting point and the remainder of the program slowly
-
- built up around it. Use whichever method works best for
-
- you.
-
- The final program AMORT5 is by no means a program which
-
- can never be improved upon. Many improvements can be
-
- thought of. These will be exercises for you if you so
-
- desire.
-
- 1. In the data input section, ask if a printout is desired,
-
- and only print if it was requested. This would involve
-
- defining a new variable and IF statements controlling
-
- all write statements with "lst" as a device selector.
-
- 2. Format the printout with a formfeed every three years to
-
- cause a neater printout. The program presently prints
-
- data right across the paper folds with no regard to the
-
- top of page.
-
- 3. Modify the program to include semimonthly payments.
-
- Payments twice a month are becoming popular, but this
-
- program cannot handle them.
-
- 4. Instead of listing the months as numbers, put in a CASE
-
- statement to cause the months to be printed out as three
-
- letter names. Or include the day of the month when the
-
- payment is due also.
-
-
-
- Page 69
-
-
-
-
-
-
-
-
-
- CHAPTER 13 - Complete sample programs
-
-
-
- 5. Any other modification you can think up. The more you
-
- modify this and other programs, the more experience and
-
- confidence you will gain.
-
- LIST, to list your Pascal programs
-
- LIST is a very useful program that you can use to list
-
- your Pascal programs on the printer. It can only be
-
- compiled with TURBO Pascal because it uses TURBO extensions.
-
- The two extensions it uses are the STRING type variable and
-
- the ABSOLUTE type variable. The ABSOLUTE variable in line
-
- 13 and the coding in the "initialize" procedure is an
-
- example of how you can read in the parameters given on the
-
- command line. For example, to use this program to print out
-
- the last program, you would enter the following at the DOS
-
- prompt LIST AMORT5.PAS. This program reads in the
-
- AMORT5.PAS from the command line and uses it to define the
-
- input file. It should be pointed out that this program
-
- cannot be run from a "compiled in memory" compilation with
-
- the TURBO Pascal compiler. It must be compiled to a COM
-
- file, and you must quit TURBO Pascal in order to run it from
-
- the DOS command level.
-
- The parameter, AMORT5.PAS, is stored at computer memory
-
- location 80(hexadecimal) referred to the present code
-
- segment. If you didn't understand that, don't worry, you
-
- can still find the input parameter in any program using the
-
- method given in the initialize procedure.
-
- If you do not have TURBO Pascal, but you are using MS-
-
- DOS or PC-DOS, you can still use this program because it is
-
- on your disk already compiled as LIST.COM, and can be run
-
- like any other .COM or .EXE program.
-
- LIST2, another listing program
-
- LIST2 is the same as LIST, except that it does not parse
-
- the command line for the filename. Instead, it requests the
-
- desired filename to output, and you input it as user data
-
- after the program begins executing. It is written in
-
- "generic" Pascal and should execute and run with any Pascal
-
- compiler.
-
- TIMEDATE, to get today's time and date
-
- This is a very useful program for those of you using
-
- TURBO Pascal. It interrogates the inner workings of DOS and
-
- gets the present time and date for you, provided you entered
-
- them correctly when you turned your computer on. The
-
- procedure "time_and_date" can be included in any Pascal
-
-
-
- Page 70
-
-
-
-
-
-
-
-
-
- CHAPTER 13 - Complete sample programs
-
-
- program you write to give you the time and date for your
-
- listings. As an exercise in programming, add the time and
-
- date to the program LIST to improve on its usefulness.
-
- AREAS, an example of menus
-
- This program is not very useful, but it illustrates one
-
- way to handle menus in a Pascal program. You can study the
-
- structure and imagine many ways a menu can be used to
-
- improve the usefulness of your own programs.
-
- OT, The OAKTREE directory program
-
- This program should be very useful to you, especially
-
- if you have a hard disk. It will list the entire contents
-
- of your hard disk (or floppy) in a very easy to read and
-
- easy to use form. The program is documented in OT.DOC, and
-
- is precompiled for you in OT.COM in case you are not using
-
- TURBO Pascal. It uses many of the TURBO Pascal extensions
-
- and will probably not compile with any other Pascal compiler
-
- without extensive modifications.
-
- You will find the program to be a good example of
-
- linked lists because it includes a sort routine using a
-
- dynamically allocated B-TREE and another sorting routine
-
- that uses a dynamically allocated linked list with a
-
- "bubble_sort". These methods are completely defined in
-
- Niklaus Wirth's book, "Algorithms + Data Structures =
-
- Programs", a highly recommended book if you are interested
-
- in advanced programming techniques.
-
- It might also be pointed out that OT.PAS also makes use
-
- of recursive methods for both sorting and handling
-
- subdirectories. It is definitely an example of advanced
-
- programming methods, and it would be a good vehicle for your
-
- personal study.
-
- Most Important - Your own programs
-
- Having completed this tutorial on Pascal, you are well
-
- on your way to becoming a proficient Pascal programmer. The
-
- best way you can improve your skills now is to actually
-
- write Pascal programs. Another way to aid in your building
-
- of skill and confidence is to study other Pascal programs.
-
- Many programming examples can be found in computing
-
- magazines and books. One of the best books available is
-
- "Programming in Pascal" by Peter Grogono, and another is
-
- "Oh! Pascal!" by Doug Cooper and Michael Clancy.
-
- Happy programming.
-
-
-
- Page 71
-