home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Chapter 16
- 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 tiny programs 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.PAS - 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.PAS - 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.PAS - 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.PAS - 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
-
- Page 16-1
-
- Chapter 16 - Complete Sample Programs
-
- adding to the flexibility. After the 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.PAS - 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. If you are using TURBO
- Pascal version 3.0, you will need to either comment out
- line 3 or remove it altogether.
-
-
-
- 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.PAS 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. You could also include the day of the month when
- the payment is due.
-
- Page 16-2
-
- Chapter 16 - 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.PAS, to list your Pascal programs
- _________________________________________________________________
-
- LIST.PAS 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 a TURBO extension, the string type variable.
-
- The method used in the Initialize procedure to read the command
- line parameter should be no problem for you to understand at this
- point. To use this program to print out the last program, for
- example, 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 Disk file, and you must quit TURBO Pascal in order to run it
- from the DOS command level.
-
- The parameter read from the command line, 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 for your version of TURBO Pascal.
-
- If you are not using a TURBO Pascal compiler, but you are using
- MS-DOS or PC-DOS, you can still use this program because it is
- provided on your disk already compiled as LIST.EXE, and can be run
- like any other .COM or .EXE program.
-
-
-
- TIMEDATE.PAS, to get today's time and date
- _________________________________________________________________
-
- This is a very useful program as an example of using some of the
- extensions of 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 TURBO Pascal 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. It turns out to be an almost trivial
- program but is still a good illustration of how to use some of the
- newer Borland extensions to Pascal. The observant student will
- notice that the time and date procedures have already been added
- to LIST.PAS.
-
-
- Page 16-3
-
- Chapter 16 - Complete Sample Programs
-
-
- SETTIME.PAS, a useful utility program
- _________________________________________________________________
-
- This program is very interesting in that it changes the date and
- time stamp on any file in the current directory. It is the program
- used to set the time and date on all of the files on the
- distribution disk included with this tutorial. It sets the time
- to 12:00:00 and the date to Feb 4, 1991 but you can use it to set
- any desired time.
-
-
-
- OT.PAS, 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 the file named OT.DOC. It uses many of
- the TURBO Pascal extensions and will probably not compile with any
- other Pascal compiler without extensive modifications.
-
- This is a very useful program, so you should spend the time
- necessary to both understand it and modify it for your own needs.
-
- You will find this 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 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. There are many books
- available devoted entirely to TURBO Pascal and you would do well
- to visit your local bookstore and review a few of them.
-
-
-
- Page 16-4
-
- Chapter 16 - Complete Sample Programs
-
- You already own one of the best books available for reference if
- you are using TURBO Pascal. Although the TURBO Pascal reference
- manual is worth very little as a learning tool, it is excellent as
- a language reference manual. Now that you have completed all 16
- chapters of this tutorial, you have a good grasp of the terminology
- of Pascal and should have little trouble reading and understanding
- your reference manual. Your only limitation at this point is your
- own perseverance and imagination.
-
- Whatever your programming level or needs may be, Pascal can fulfill
- them and do so in a very elegant way,
-
- Happy Programming.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 16-5