home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / m / mod2tutr.zip / INTRO.TXT < prev    next >
Text File  |  1989-01-18  |  12KB  |  293 lines

  1.  
  2.                                                   Introduction
  3.  
  4.                                              INTRO TO MODULA-2
  5.  
  6.  
  7.  
  8. MODULA-2 IS A COMPLETE LANGUAGE
  9. ______________________________________________________________
  10.  
  11. Welcome to the programming language Modula-2, a very complete,
  12. high level language with many advanced features.  Modula-2 was
  13. designed by Niklaus Wirth, the designer of Pascal.  Based on
  14. experience with Pascal, Modula-2 was designed to make up for
  15. many of the deficiencies noted by programmers worldwide, and
  16. the changes make it a very powerful language with few
  17. limitations.  In spite of its power, Modula-2 retains the
  18. simplicity of Pascal and can be used for small applications
  19. as easily as Pascal could be used.
  20.  
  21.  
  22.  
  23. MODULA-2 TUTORIAL - PART I
  24. ______________________________________________________________
  25.  
  26. Even though there are many similarities between the two
  27. languages, the differences are significant.  This tutorial was
  28. written considering both the similarities and the differences
  29. between the languages.  The first part of this tutorial is
  30. composed of those features that are common to Pascal and
  31. Modula-2 and are also of a fundamental nature.  You will need
  32. to study all of Part I in order to write meaningful Modula-2
  33. programs.  If you are already a fairly experienced Pascal
  34. programmer, you will absorb this material very rapidly.  Be
  35. sure to go through it all at least once, because there are
  36. many small differences between the languages that you must
  37. consider.
  38.  
  39.  
  40.  
  41. MODULA-2 TUTORIAL - PART II
  42. ______________________________________________________________
  43.  
  44. The topics taught in Part II of this tutorial are those
  45. advanced features that are also available in Pascal.
  46. Pointers, dynamic allocation, records, and linked lists are
  47. studied here along with other topics.  These are very powerful
  48. tools that can be used to great advantage, but are quite often
  49. overlooked by many Pascal programmers that I have talked to.
  50. These are the tools that give Pascal and Modula-2 an advantage
  51. in flexibility over such languages as BASIC and FORTRAN.  They
  52. do require a bit of deep concentration to fully understand,
  53. but you will be greatly rewarded if you take the time to
  54. understand and use them.
  55.  
  56.  
  57.  
  58.                                                            I-1
  59.  
  60.                                       Introduction to Modula-2
  61.  
  62. MODULA-2 TUTORIAL - PART III
  63. ______________________________________________________________
  64.  
  65. Part III of this tutorial covers those aspects of Modula-2
  66. that are not included in Pascal in any way.  Some of the
  67. topics are, independent compilation, the entire topic of
  68. modules, and concurrent processing.  These are advanced topics
  69. and some of these topics may be the reasons that you selected
  70. Modula-2 as a programming language.  The material covered in
  71. Part I in conjunction with that covered in Part III can lead
  72. to some very powerful programming techniques.
  73.  
  74. To efficiently use this tutorial, you must carefully study all
  75. of the material in Part I, then you can do a lot of jumping
  76. around in Parts II and III and still cover the material in a
  77. meaningful manner.  You may also choose to only study some
  78. chapters of the last two parts in order to learn the needed
  79. material for the programming problem at hand.  It must be
  80. emphasized that it is important that you cover the material
  81. in Part I very carefully, and in order, since so much depends
  82. on what was taught before.  When your study reaches the last
  83. two parts, comments at the beginning of each chapter will tell
  84. you which previous chapters must be understood in order to
  85. effectively use the material in the new chapter.
  86.  
  87.  
  88. FOR THE BEGINNING PROGRAMMER
  89. ______________________________________________________________
  90.  
  91. If you are a novice to computer programming, this course is
  92. for you because it is assumed that you know little or nothing
  93. about programming.  Many sections, especially in the early
  94. chapters, will cover very basic topics for your benefit.  Your
  95. biggest problem will be in setting up your compiler for use.
  96. This can be a very difficult task because Modula-2 is a
  97. complex language, and compiler writers must allow considerable
  98. flexibility in the use of the compiler.
  99.  
  100. There are, at this time, a very limited number of Modula-2
  101. compilers available, but it would not be possible to include
  102. notes on every compiler about how to install it for your
  103. computer.  In addition, all compilers do not implement all
  104. functions defined in Niklaus Wirth's definition of the
  105. language.  You may have a problem getting your compiler
  106. installed and running on your computer.  The best help you
  107. can find is an experienced person in your company to help you
  108. get your compiler running properly on your computer.
  109.  
  110. Modula-2, as defined by Niklaus Wirth, contains no provisions
  111. for input or output because they are so hardware dependent.
  112. It is up to each compiler writer to provide you with
  113. supplemental procedures for handling I/O (input/output) and
  114. a few other machine dependent features.  Niklaus Wirth did
  115. recommend a library of I/O routines that should be available
  116.  
  117.                                                            I-2
  118.  
  119.                                       Introduction to Modula-2
  120.  
  121. and most compilers contain at least those facilities, and
  122. usually provide many more.
  123.  
  124.  
  125. SIMPLE EXAMPLES WILL BE USED
  126. ______________________________________________________________
  127.  
  128. All of the example programs are purposely kept simple and
  129. small to illustrate the point intended.  It is of little value
  130. to you to present you with a large complex program to
  131. illustrate what can be illustrated in a small program better.
  132. In addition, every program is complete, and can be compiled
  133. and run.  Program fragments frequently pose as many questions
  134. as they answer.
  135.  
  136. The result of execution is given in comments at the end of
  137. each example program.  The result is given for one compiler,
  138. but in nearly every case, the answer should be the same no
  139. matter what compiler is used.  A few of the programs may
  140. output slightly different data because of different defaults.
  141. For example, there is no standard number of digits which will
  142. be output following a decimal point for a floating point
  143. number.  The result of execution is given for your benefit so
  144. that you do not have to compile and run every program in those
  145. parts of the tutorial that you can breeze through quickly due
  146. to prior programming experience in a similar language.
  147.  
  148. Because it would be a disservice to you to teach you a lot of
  149. simple techniques and never show you how they go together in
  150. a significant program, chapters 9 and 16 contain several
  151. larger example programs, all of which are complete programs.
  152. A relatively small amount of description is given about these
  153. programs because you will have already covered the details and
  154. should only need a quick overview of how to put the various
  155. constructs together.  You will find some of these programs
  156. useful and you will have the ability to modify and enhance
  157. them for your use since you have the source code available on
  158. the distribution disk.
  159.  
  160.  
  161. SOME VARIABLE NAMES SEEM SILLY, WHY IS THAT?
  162. ______________________________________________________________
  163.  
  164. I have seen example programs with the same name everywhere,
  165. and had a hard time deciding what names were required and what
  166. could be changed to something more meaningful.  For example
  167. a SORT program is in a file named SORT, the program name is
  168. SORT, the input data file is named SORT, and variables were
  169. named SORT1, SORT2, etc.  This was no help to myself, a novice
  170. sorter, and would be no help to you.  For that reason, the
  171. first program in chapter 2 is in a file named PUPPYDOG.MOD and
  172. the module name is PuppyDog.  It should be obvious to even the
  173. newest programmer that the name of a module can be nearly
  174. anything if it is allowed to be PuppyDog.  You will learn
  175.  
  176.                                                            I-3
  177.  
  178.                                       Introduction to Modula-2
  179.  
  180. later that well selected names can be a great aid in
  181. understanding a program.  This will be evident in some of the
  182. early programs when variable names are chosen to indicate what
  183. type of variable they are.
  184.  
  185. Some compilers require that the module name be the same as the
  186. file name, and all require them to agree when you get to
  187. global modules because of the way type checking is
  188. accomplished.  It would be best for you to get into the habit
  189. of naming them both the same now.  For that reason, all of the
  190. example programs use the same name for the file name and for
  191. the module name.  Your compiler may allow you to use different
  192. names.  It will be left up to you to study your manual and see
  193. what the requirements are for your particular compiler.
  194.  
  195.  
  196.  
  197. WHAT IS A COMPILER?
  198. ______________________________________________________________
  199.  
  200. There are two primary methods used in running any computer
  201. program that is written in a readable form of English.  The
  202. first method is through use of an interpreter.  An interpreter
  203. is a program that looks at each line of the english program,
  204. decides what the english on that line means, and does what it
  205. says to do.  If one of the lines is executed repeatedly, it
  206. must be scanned and analyzed each time, greatly slowing down
  207. the solution of the problem at hand.
  208.  
  209. A compiler, on the other hand, is a program that looks at each
  210. statement one time and converts it into a code that the
  211. computer understands directly.  When the compiled program is
  212. actually run, the computer does not have to figure out what
  213. each statement means, it is already in a form the computer can
  214. run directly, which results in a much faster execution of the
  215. program.  Due to the nature of Modula-2, there will be few,
  216. if any, interpreters for Modula-2.
  217.  
  218.  
  219.  
  220. WHAT ABOUT THE PROGRAMMING EXERCISES?
  221. ______________________________________________________________
  222.  
  223. The programming exercises at the end of each chapter are a
  224. very important part of the tutorial.  If you do them, you will
  225. embed the principles taught in each chapter more firmly in
  226. your mind than if you ignore them.  If you choose to ignore
  227. them, you will be somewhat adept at reading Modula-2 programs
  228. but very ineffectual at writing them.  By doing the exercises,
  229. you will also gain considerable experience in using your
  230. editor and compiler.
  231.  
  232.  
  233.  
  234.                                                            I-4
  235.  
  236.                                       Introduction to Modula-2
  237.  
  238. THE ANSWERS DIRECTORY
  239. ______________________________________________________________
  240.  
  241. The ANSWERS directory on the distribution disk contains an
  242. answer to each of the programming exercises suggested at the
  243. end of each chapter.  Note carefully that the given answer is
  244. only one possible solution to the problem and your answer
  245. could differ markedly and still be a correct answer.  The
  246. filename for each answer is given in the form of CHnnEm.MOD,
  247. where nn refers to the chapter number and m refers to the
  248. exercise number for that chapter.  If multiple answers are
  249. requested, they will be named with an additional a, or b
  250. following the primary name.  Thus the filename CH04E3A.MOD
  251. contains the answer to the first part of programming exercise
  252. 3 in chapter 4.
  253.  
  254. It will be assumed that you know how to use your compiler and
  255. that you have some kind of an editor for use with the example
  256. files.  With the above in mind, you are now ready to begin
  257. your tour of Modula-2.  A sample program is included in this
  258. chapter for you to try with your compiler.  It is left as an
  259. exercise for you to compile and run FIRSTEX.MOD.  When you can
  260. successfully compile and run this program, you are ready to
  261. begin the tutorial on Modula-2 programming.  At this point,
  262. don't worry about what the statements mean in FIRSTEX.MOD, you
  263. will have a complete understanding of this program by the time
  264. you complete chapter 4 of this tutorial.
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.                                                            I-5
  292.  
  293.