home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / PASTUT34 / STRUCT.TXT < prev    next >
Text File  |  1993-06-12  |  7KB  |  178 lines

  1.                  The Structure of Turbo Pascal Programs.
  2.                  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3.  
  4.   Turbo Pascal programs have an ordered structure, starting with the program
  5.   name, followed by a declaration part and then by the statement part.  The
  6.   declaration part includes any procedures and functions, which must usually
  7.   be declared before they are called.  The complete structure of a program is
  8.   illustrated below and is available as STRUCT.PAS and as the executable
  9.   file STRUCT.EXE.  Inspection of the other example programs of this  
  10.   tutorial will demonstrate actual applications.
  11.  
  12.   For clarity, all reserved words are shown in capitals in the full structure
  13.   layout below, although this is not so in many of the other programs:
  14.  
  15.   PROGRAM DataCreation;              { Choose any suitable name. }
  16.  
  17.   {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
  18.   { Appropriate comment and explanation, contained within braces. }
  19.   { At any point in the program comments can be inserted to help  }
  20.   { the user understand the program, provided they are in braces. }
  21.   {_______________________________________________________________}
  22.  
  23.   USES Crt;                  { A list of all units employed by the        }
  24.                              { program, in this case just the Crt unit.   }
  25.  
  26.   LABEL Continue, Finish;    { Only used occasionally, as GOTO statements }
  27.                              { are not needed in a structured language.   }
  28.                              { Not used in this demonstration program.    }
  29.  
  30.   CONST                                             { Global constants.   }
  31.      Max = 10;                                      { A numeric constant. }
  32.      Str = 'Press any key to continue: ';           { A string constant.  }
  33.  
  34.   TYPE                                              { Global types.       }
  35.      LinePointer   = ^LineOfNumbers;                { A pointer type, not }
  36.                                                     { used in this program}
  37.      LineOfNumbers = String[79];               { A string of fixed length.}
  38.  
  39.   VAR                                              { Global variables.    }
  40.      Line : LineOfNumbers;                         { Specific instances of}
  41.      Ptr  : Array[1..Max] of LinePointer;          { user-defined types,  }
  42.                                                    { but Ptr not actually }
  43.                                                    { used in this program.}
  44.      j    : Integer;                               { Instance of Integer  }
  45.                                                    { type.                }
  46.  
  47.   PROCEDURE CreateData;                        { Choose a meaningful name. }
  48.  
  49.        { Local Labels, Constants and Types may be declared here. }
  50.  
  51.   VAR                                     { Local variables, as necessary. }
  52.      i  : Integer;                        { Used as counter in a FOR loop. }
  53.      n  : Array[0..79] of char;           { An array of 80 character types.}
  54.  
  55.   BEGIN
  56.      Line := '';                          { Initialize Line to be empty.   }
  57.      FOR i := 0 TO 79 DO                  { A FOR loop repeated 80 times.  }
  58.         BEGIN
  59.            n[i] := Chr(Random(9) + 48);   { Use of Chr & Random functions, }
  60.                                           { to generate ASCII characters   }
  61.                                           { from 48 (=0) to 57 (=9).       }
  62.            Line := Line + n[i];           { Add all the characters to form }
  63.                                           { line of 80 characters.         }
  64.         END;
  65.   END;
  66.  
  67.   FUNCTION ReturnZero : Integer;        { A trivial example of a function.} 
  68.   BEGIN 
  69.      ReturnZero := 0; 
  70.   END; 
  71.  
  72.  
  73.   { Main part of program. } 
  74.  
  75.   BEGIN 
  76.      ClrScr;              { Procedure from Crt unit to clear the screen.  } 
  77.      FOR j := 0 TO Max DO   
  78.        BEGIN 
  79.          CreateData;                   { Call to procedure declared above.} 
  80.          Writeln(Line);                { Call to system procedure Writeln.} 
  81.        END;
  82.     Writeln; 
  83.     Writeln('Function return value = ',ReturnZero); 
  84.     Writeln; 
  85.     Write(Str);               { Call to procedure Write for constant Str  } 
  86.     REPEAT UNTIL KeyPressed;  { Function KeyPressed returns True if a key } 
  87.                               { has been pressed, ensuring that nothing   } 
  88.                               { happens until a key is pressed.           } 
  89.   END. 
  90.                                                                            
  91.  
  92.  The above program is functional, but does contain a few redundant
  93.  declarations and statements for illustrative purposes only.  Most of
  94.  program has been extracted from a larger program, in which for example the
  95.  pointer type and variable are used.  
  96.  
  97.  
  98.  In the above example, some relevant structures have been used.  The syntax
  99.  for all the common structures used in Turbo Pascal are now listed: 
  100.  
  101.  
  102.  FOR i := 1 TO n DO 
  103.    BEGIN                      { If there is only one statement following } 
  104.      statement 1;             { DO then the reserved words BEGIN and END } 
  105.      statement 2;             { need not be used.                        }  
  106.      ... 
  107.      statement r; 
  108.    END; 
  109.  
  110.  
  111.  WHILE i < n DO               { The WHILE loop has the condition checked } 
  112.    BEGIN                      { before the statements are executed and   }  
  113.      statement 1;             { may result in no action at all.          }  
  114.      ...
  115.      statement s;
  116.    END;
  117.  
  118.  
  119.  x := 1; 
  120.  y := 2; 
  121.  REPEAT                       { The REPEAT UNTIL loop has the condition  } 
  122.    GoTOXY(x,y);               { checked after execution of the statements}  
  123.    Write(x);                  { which must be executed at least once.    } 
  124.    inc(x);                    { In this case the word REPEAT obviates the} 
  125.  UNTIL x > 8;                 { need for BEGIN, and UNTIL replaces END.  } 
  126.  
  127.  
  128.  PROCEDURE YourChoiceOfName;  { Choose any appropriate name. No spaces   } 
  129.                               { are allowed, but underscores can be used. }
  130.                               { Any parameters are passed within         } 
  131.                               { parentheses. See notes on Procedures.    }  
  132.  
  133.  BEGIN 
  134.    statement 1; 
  135.    statement 2; 
  136.    ... 
  137.    statement t; 
  138.  END; 
  139.  
  140.  
  141.  FUNCTION AnotherName : Return type;   { Choose a suitable name and after } 
  142.                                        { a colon indicate the return type } 
  143.  BEGIN 
  144.     statement 1; 
  145.     ... 
  146.     statement m; 
  147.     AnotherName := some value or expression;    { of the correct type.    } 
  148.  END; 
  149.  
  150.  
  151.  WITH Something DO                      { Something is an instance of a   }
  152.                                         { RECORD or an OBJECT type.       }
  153.  BEGIN
  154.     statement 1;
  155.     ...
  156.     statement n;
  157.  END;
  158.  
  159.  
  160.  CASE AVariable OF            { AVariable is any appropriate variable.}  
  161.  
  162.    1: BEGIN 
  163.         statement 1; 
  164.         ... 
  165.         statement j; 
  166.       END; 
  167.    2: BEGIN 
  168.         statement k; 
  169.         ... 
  170.         statement v; 
  171.       END;
  172.  END;
  173.  
  174.  
  175.  STRUCT.TXT
  176.  15.1.93
  177.  
  178.