home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / tp6progg.doc / pg08 < prev    next >
Encoding:
Text File  |  1991-02-01  |  32.5 KB  |  824 lines

  1.                              âïÇéÇ 8.
  2.  
  3.                        ÅÉÄûàäôÉ¢ ê öôìèûêê.
  4.  
  5.      Åα«µÑñπαδ ¿ Σπ¡¬µ¿¿ »«ºó«½∩εΓ ó¬½ετáΓ∞ ó  «ß¡«ó¡«⌐ »α«úαá¼¼¡δ⌐
  6. í½«¬ ñ«»«½¡¿Γѽ∞¡δÑ í½«¬¿.  èáªñ«Ñ «íΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿
  7. ß«ñÑαª¿Γ   ºáú«½«ó«¬,   ºá   ¬«Γ«αδ¼   ß½ÑñπÑΓ   í½«¬.    Åα«µÑñπαá
  8. á¬Γ¿ó¿º¿απÑΓß∩    ß    »«¼«Θ∞ε    «»ÑαáΓ«αá    »α«µÑñπαδ.   öπ¡¬µ¿∩
  9. á¬Γ¿ó¿º¿απÑΓß∩ »α¿ óδτ¿ß½Ñ¡¿¿ óδαáªÑ¡¿∩,  ß«ñÑαªáΘÑú« ó맮ó Σπ¡¬µ¿¿
  10. ¿ ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐ º¡áτÑ¡¿Ñ »«ñßΓáó½∩ÑΓß∩ ó φΓ« óδαáªÑ¡¿Ñ.
  11.      é ñá¡¡«⌐  ú½áóÑ  «íßπªñáεΓß∩  αẽ¿τ¡δÑ   ß»«ß«íδ   «íΩ∩ó½Ñ¡¿⌐
  12. »α«µÑñπα ¿½¿ Σπ¡¬µ¿⌐ ¿ ¿σ »áαá¼ÑΓαδ.
  13.  
  14.  
  15.                        ÄíΩ∩ó½Ñ¡¿Ñ »α«µÑñπα.
  16.  
  17.      ÄíΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ »«ºó«½∩ÑΓ ßó∩ºáΓ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α  ß í½«¬«¼
  18. »α«µÑñπαδ.  Åα«µÑñπαπ  ¼«ª¡«  á¬Γ¿ó¿º¿α«óáΓ∞  ß  »«¼«Θ∞ε  «»ÑαáΓ«αá
  19. »α«µÑñπαδ
  20.  
  21.  
  22.               ┌─────────┐   ┌───┐   ┌─────────┐   ┌───┐
  23. «íΩ∩ó½Ñ¡¿Ñ ──÷│ºáú«½«ó«¬├──÷│ ; ├──÷│  Γѽ«   ├──÷│ ; ├──÷
  24. »α«µÑñπαδ     │»α«µÑñπαδ│   └───┘   │»α«µÑñπαδ│   └───┘
  25.               └─────────┘           └─────────┘
  26.  
  27.              ┌─────────┐   ┌─────────────┐
  28. ºáú«½«ó«¬ ──÷│procedure├──÷│¿ñÑ¡Γ¿Σ¿¬áΓ«α├─┬──────────────────÷
  29. »α«µÑñπαδ    └─────────┘   └─────────────┘ │  ┌──────────┐ °
  30.                                            │  │ß»¿ß«¬    │ │
  31.                                            └─÷│Σ«α¼á½∞¡δσ├─┘
  32.                                               │»áαá¼ÑΓα«ó│
  33.                                               └──────────┘
  34.  
  35.                                                ┌──────┐
  36. Γѽ«     ───┬──────────────────────────────┬──÷│¼«ñπ½∞├────────÷
  37. »α«µÑñπαδ   │   ┌─────────┐      ┌─┐   °   │   └──────┘    °
  38.             ├──÷│ near    ├─────÷│;├───┘   │   ┌───────┐   │
  39.             │   └─────────┘  °   └─┘       │──÷│forward├───┤
  40.             │   ┌─────────┐  │             │   └───────┘   │
  41.             ├──÷│ far     ├──┤             │   ┌────────┐  │
  42.             │   └─────────┘  │             │──÷│external├──┤
  43.             │   ┌─────────┐  │             │   └────────┘  │
  44.             ├──÷│interrupt├──┘             │   ┌────────┐  │
  45.             │   └─────────┘                └──÷│í½«¬ asm├──┤
  46.             │                                  └────────┘  │
  47.             │                                  ┌─────────┐ │
  48.             └─────────────────────────────────÷│ñ¿αÑ¬Γ¿óá├─┘
  49.                                                │ inline  │
  50.                                                └─────────┘
  51.  
  52.  
  53.      é ºáú«½«ó¬Ñ  »α«µÑñπαδ π¬áºδóáÑΓß∩ ¿¼∩ »α«µÑñπαδ ¿ «»¿ßδóáÑΓß∩
  54. ß»¿ß«¬ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó (Ñß½¿ «¡ »α¿ßπΓßΓóπÑΓ).  æ¿¡Γá¬ß¿ß ñ½∩
  55. ß»¿ß¬á Σ«α¼á½∞¡δσ   »áαá¼ÑΓα«ó »«¬áºá¡ ñá½ÑÑ ó φΓ«⌐ ú½áóÑ ó αáºñѽÑ
  56. "Åáαá¼ÑΓαδ".
  57.      çá»π߬ »α«µÑñπαδ «ßπΘÑßΓó½∩ÑΓß∩ ß »«¼«Θ∞ε «»ÑαáΓ«αá »α«µÑñπαδ,
  58. ó  ¬«Γ«α«¼  ß«ñÑαªáΓß∩  ¿¼∩  »α«µÑñπαδ  ¿  Σá¬Γ¿τÑ߬¿Ñ   »áαá¼ÑΓαδ.
  59. Ä»ÑαáΓ«αδ,   ¬«Γ«αδÑ  ñ«½ª¡δ  óδ»«½¡∩Γ∞ß∩  »α¿  ºá»π߬Ѡ »α«µÑñπαδ,
  60. ¿ß»«½∞ºπεΓß∩ ó  «»ÑαáΓ«α¡«⌐   τáßΓ¿   í½«¬á   »α«µÑñπαδ.   àß½¿   ó
  61. ß«ñÑαªáΘѼß∩ ó   »α«µÑñπαÑ   «»ÑαáΓ«αÑ   ó¡πΓα¿   í½«¬á   »α«µÑñπαδ
  62. ¿ß»«½∞ºπÑΓß∩   ¿ñÑ¡Γ¿Σ¿¬áΓ«α   »α«µÑñπαδ,   Γ«   »α«µÑñπαá    íπñÑΓ
  63. óδ»«½¡∩Γ∞ß∩  αѬπα߿󡫠 (íπñÑΓ  »α¿  óδ»«½¡Ñ¡¿¿  «íαáΘáΓ∞ß∩ ßá¼á ¬
  64. ßÑíÑ).
  65.      Åα¿óÑñѼ »α¿¼Ñα «íΩ∩ó½Ñ¡¿∩ »α«µÑñπαδ:
  66.  
  67.      procedure NumString (N: Integer; var S: string);
  68.      var
  69.        V: Integer;
  70.      begin
  71.        V := Abs(N);
  72.        S := '';
  73.        repeat
  74.          S := Chr(N mod 10 + ord(`0')) + S;
  75.          N := N div 10;
  76.        until N = 0;
  77.        if N < 0 then
  78.          S := `-' + S;
  79.      end;
  80.  
  81.  
  82.                       near ¿ far «íΩ∩ó½Ñ¡¿∩.
  83.  
  84.      Turbo Pascal  »«ññÑনóáÑΓ  2  ¼«ñѽ¿  ó맮óá  »α«µÑñπα:  near
  85. (í½¿ª¡∩∩) ¿  far  (ñá½∞¡∩∩).  é  ΓÑନ¡áσ  αẼÑαá  ¬«ñá ¿ ß¬«α«ßΓ¿
  86. óδ»«½¡Ñ¡¿∩ ¼«ñѽ∞  ó맮óá  near  í«½ÑÑ  φΣΣÑ¬Γ¿ó¡á,  ¡«  ßπΘÑßΓóπÑΓ
  87. «úαá¡¿τÑ¡¿Ñ -  í½¿ª¡∩∩  »α«µÑñπαá  ¼«ªÑΓ  óδºδóáΓ∞ß∩  Γ«½∞¬« ó¡πΓα¿
  88. ¼«ñπ½∩, ó  ¬«Γ«α«¼  «¡á  «íΩ∩ó½Ñ¡á.  æ  ñαπú«⌐   ßΓ«α«¡δ,   ñá½∞¡¿Ñ
  89. »α«µÑñπαδ ¼«úπΓ óδºδóáΓ∞ß∩ ¿º ½εí«ú« ¼«ñπ½∩, ¡« ¬«ñ ñá½∞¡¿σ ó맮ó«ó
  90. ¡Ñ߬«½∞¬« ¼Ñ¡ÑÑ φΣΣÑ¬Γ¿óÑ¡.
  91.  
  92.      Turbo Pascal áóΓ«¼áΓ¿τÑ߬¿ óδí¿αáÑΓ ¬«ααÑ¬Γ¡πε  ¼«ñѽ∞  ó맮óá
  93. ¡á «ß¡«óá¡¿¿ «íΩ∩ó½Ñ¡¿∩ »α«µÑñπαδ: »α«µÑñπαδ, «íΩ∩ó½Ñ¡¡δÑ ó αáºñѽÑ
  94. interface ¼«ñπ½∩, ¿ß»«½∞ºπεΓ ñá½∞¡εε ¼«ñѽ∞ ó맮óá - «¡¿ ¼«úπΓ íδΓ∞
  95. óδºóá¡δ ¿º ñαπú¿σ ¼«ñπ½Ñ⌐. Åα«µÑñπαδ, «íΩ∩ó½Ñ¡¡δÑ ó »α«úαἼѠ¿½¿ ó
  96. αáºñѽѠimplementation ¼«ñπ½∩,  ¿ß»«½∞ºπεΓ í½¿ª¡εε ¼«ñѽ∞ ó맮óá  -
  97. «¡¿ ¼«úπΓ óδºδóáΓ∞ß∩ Γ«½∞¬« ó¡πΓα¿ φΓ«⌐ »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩.
  98.  
  99.      é ¡Ñ¬«Γ«αδσ  ß½πτá∩σ  ¼«ªÑΓ  »«ΓαÑí«óáΓ∞ß∩  ¿ß»«½∞º«óá¡¿Ñ  ñ½∩
  100. »α«µÑñπαδ ñá½∞¡Ñ⌐ ¼«ñѽ¿ ó맮óá.  ìá»α¿¼Ñα, ó «óÑα½Ñ⌐¡δσ »α«úαá¼¼áσ
  101. óßÑ »α«µÑñπαδ  ¿  Σπ¡¬µ¿¿  ñ«½ª¡δ íδΓ∞ ñá½∞¡¿¼¿;  á¡á½«ú¿τ¡«,  Ñß½¿
  102. »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩  »α¿ßóá¿óáÑΓß∩  »α«µÑñπα¡«⌐  »ÑαѼѡ¡«⌐,  «¡á
  103. ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ ñá½∞¡εε ¼«ñѽ∞ ó맮óá. ä¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá $F
  104. ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ »ÑαѬαδΓ¿∩ áóΓ«¼áΓ¿τÑ߬«ú«  óδí«αá  ¼«ñѽ¿
  105. ó맮óá ¬«¼»¿½∩Γ«α«¼.   Åα«µÑñπαδ  ¿  Σπ¡¬µ¿¿,  «Γ¬«¼»¿½¿α«óá¡¡δÑ  ó
  106. ß«ßΓ«∩¡¿¿ {$F+}  óßÑúñá  ¿ß»«½∞ºπεΓ  ñá½∞¡εε   ¼«ñѽ∞   ó맮óá;   ó
  107. ß«ßΓ«∩¡¿¿ {$F-}   ¬«¼»¿½∩Γ«α   áóΓ«¼áΓ¿τÑ߬¿   óδí¿αáÑΓ  ¬«ααÑ¬Γ¡πε
  108. ¼«ñѽ∞. æ«ßΓ«∩¡¿Ñ »« π¼«½τá¡¿ε - {$F-}.
  109.  
  110.      ä½∩ ºáñá¡¿∩ ΓαÑíπѼ«⌐ ¼«ñѽ¿ ó맮óá «íΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ ¼«ªÑΓ
  111. ß«ñÑαªáΓ∞ ñ¿αÑ¬Γ¿óπ  near  ¿½¿  far ñ« í½«¬á - Ñß½¿ Γá¬á∩ ñ¿αÑ¬Γ¿óá
  112. π¬áºá¡á, «¡á »ÑαѬαδóáÑΓ πßΓá¡«ó¬π ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá $F,  á Γá¬
  113. ªÑ áóΓ«¼áΓ¿τÑ߬¿⌐ óδí«α ¼«ñѽ¿ ó맮óá ¬«¼»¿½∩Γ«αá.
  114.  
  115.  
  116.                        interrupt «íΩ∩ó½Ñ¡¿Ñ.
  117.  
  118.      ÄíΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ ¼«ªÑΓ ß«ñÑαªáΓ∞ ñ¿αÑ¬Γ¿óπ interrupt »ÑαÑñ
  119. í½«¬«¼, ¿ Γ«úñá »α«µÑñπαá αáßß¼áΓα¿óáÑΓß∩ ¬á¬ »α«µÑñπαá »αÑαδóá¡¿∩.
  120. Åα«µÑñπαδ »αÑαδóá¡¿∩  »«½¡«ßΓ∞ε  «»¿ßá¡δ  ó   ú½áóÑ   18   "é«»α«ßδ
  121. ¬«¡Γα«½∩". æÑ⌐τáß ºá¼ÑΓ¿¼, τΓ« »α«µÑñπαδ »αÑαδóá¡¿∩ ¡Ñ½∞º∩ óδºδóáΓ∞
  122. ß »«¼«Θ∞ε «»ÑαáΓ«α«ó »α«µÑñπα ¿  τΓ«  ¬áªñá∩  »α«µÑñπαá  »αÑαδóá¡¿∩
  123. ñ«½ª¡á ºáñáóáΓ∞ ß»¿ß«¬ »áαá¼ÑΓα«ó Γ«τ¡« Γá¬, ¬á¬ φΓ« »«¬áºá¡« ¡¿ªÑ:
  124.  
  125.      procedure MyInt (Flags, CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP
  126.                                                      : Word);
  127.  
  128.      interrupt;
  129.  
  130.      é¼ÑßΓ« í½«¬á ó «íΩ∩ó½Ñ¡¿¿ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ¼«ª¡« ¡á»¿ßáΓ∞
  131. forward («»ÑαѪáεΘá∩),  external (ó¡ÑΦ¡∩∩) ¿½¿ inline  (óßΓα«Ñ¡¡á∩)
  132. «íΩ∩ó½Ñ¡¿Ñ.
  133.  
  134.  
  135.                   Ä»ÑαѪáεΘ¿Ñ «íΩ∩ó½Ñ¡¿∩ (forward).
  136.  
  137.      Ä»ÑαѪáεΘ¿¼ (forward)    «íΩ∩ó½Ñ¡¿Ñ¼   ¡áºδóáÑΓß∩   «íΩ∩ó½Ñ¡¿Ñ
  138. »α«µÑñπαδ, ºáñáεΘÑÑ  ñ¿αÑ¬Γ¿óπ  forward  ó¼ÑßΓ«  í½«¬á.  âñÑ-¡¿íπñ∞
  139. »«ß½Ñ  φΓ«ú«  «íΩ∩ó½Ñ¡¿∩ »α«µÑñπαá ñ«½ª¡á íδΓ∞ «»αÑñѽѡá ß »«¼«Θ∞ε
  140. «»αÑñѽ∩εΘÑú« «íΩ∩ó½Ñ¡¿∩ - «íΩ∩ó½Ñ¡¿∩ »α«µÑñπαδ, ¬«Γ«α«Ñ ¿ß»«½∞ºπÑΓ
  141. Γᬫ⌐  ªÑ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α  »α«µÑñπαδ,  ¡« «»π߬áÑΓ ß»¿ß«¬ Σ«α¼á½∞¡δσ
  142. »áαá¼ÑΓα«ó ¿ ß«ñÑαª¿Γ í½«¬.  Ä»ÑαѪáεΘÑÑ «íΩ∩ó½Ñ¡¿Ñ ¿  «»αÑñѽ∩εΘÑÑ
  143. «íΩ∩ó½Ñ¡¿Ñ  ñ«½ª¡δ  ¡áσ«ñ¿Γ∞ß∩  ó  «ñ¡«⌐  ¿ Γ«⌐ ªÑ τáßΓ¿ «íΩ∩ó½Ñ¡¿∩
  144. »α«µÑñπα  ¿  Σπ¡¬µ¿⌐.  îѪñπ  ¡¿¼¿  ¼«úπΓ  íδΓ∞  «íΩ∩ó½Ñ¡δ   ñαπú¿Ñ
  145. »α«µÑñπαδ  ¿ Σπ¡¬µ¿¿,  ¿ «¡¿ ¼«úπΓ óδºδóáΓ∞ »α«µÑñπαπ ß «»ÑαѪáεΘ¿¼
  146. «íΩ∩ó½Ñ¡¿Ñ¼. Æá¬¿¼ «íαẫ¼, ó«º¼«ª¡á óºá¿¼¡á∩ αѬπαß¿∩.
  147.      Ä»ÑαѪáεΘÑÑ «íΩ∩ó½Ñ¡¿Ñ  ¿  «»αÑñѽ∩εΘÑÑ  «íΩ∩ó½Ñ¡¿Ñ ß«ßΓáó½∩εΓ
  148. »«½¡«Ñ «íΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ.  æτ¿ΓáÑΓß∩,  τΓ« »α«µÑñπαá «íΩ∩ó½Ñ¡á ó
  149. «»ÑαѪáεΘѼ «íΩ∩ó½Ñ¡¿¿.
  150.      Åα¿óÑñѼ »α¿¼Ñα «»ÑαѪáεΘÑú« «íΩ∩ó½Ñ¡¿∩:
  151.  
  152.      procedure Walter(M, N: Integer): forward;
  153.      procedure Clara(X, Y: Real);
  154.      begin
  155.        ...
  156.        Walter(4, 5);
  157.        ...
  158.      end;
  159.  
  160.      procedure Walter;
  161.      begin
  162.        ...
  163.        Clara(8.3, 2.4);
  164.        ...
  165.      end;
  166.  
  167.      Ä»αÑñѽ∩εΘÑÑ «íΩ∩ó½Ñ¡¿Ñ  »α«µÑñπαδ  ¼«ªÑΓ  íδΓ∞  external  ¿½¿
  168. assembler. Äñ¡á¬«,  «¡« ¡Ñ ¼«ªÑΓ íδΓ∞ near,  far, inline ¿½¿ ñαπú¿¼
  169. forward «íΩ∩ó½Ñ¡¿Ñ¼.   Ä»αÑñѽ∩εΘÑÑ   «íΩ∩ó½Ñ¡¿Ñ   ΓᬪѠ ¡Ñ  ¼«ªÑΓ
  170. ß«ñÑαªáΓ∞ ñ¿αÑ¬Γ¿óπ interrupt, near ¿½¿ far. Ä»ÑαѪáεΘ¿Ñ «íΩ∩ó½Ñ¡¿∩
  171. ¡Ñ ñ«»π߬áεΓß∩ ó ¿¡ΓÑαΣÑ⌐ß¡«⌐ τáßΓ¿ ¼«ñπ½∩.
  172.  
  173.  
  174.                   é¡ÑΦ¡¿Ñ «íΩ∩ó½Ñ¡¿∩ (external).
  175.  
  176.      é¡ÑΦ¡¿Ñ «íΩ∩ó½Ñ¡¿∩      »«ºó«½∩εΓ      ßó∩ºδóáΓ∞      «Γñѽ∞¡«
  177. ߬«¼»¿½¿α«óá¡¡δÑ   »α«µÑñπαδ   ¿   Σπ¡¬µ¿¿,   ¡á»¿ßá¡¡δÑ  ¡á  ∩ºδ¬Ñ
  178. áßßѼí½Ñαá.  æ »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ {$L ¿¼∩ Σá⌐½á}  ó¡ÑΦ¡εε  »α«úαá¼¼π
  179. ¼«ª¡«  ßó∩ºáΓ∞  ß  »α«úαá¼¼«⌐  ¿½¿ ¼«ñπ½Ñ¼,  ¡á»¿ßá¡¡δ¼ ¡á Åá߬á½Ñ.
  180. ü«½ÑÑ ñÑΓá½∞¡δÑ «íΩ∩ó½Ñ¡¿∩ αÑñá¬Γ¿α«óá¡¿∩ ßó∩ºÑ⌐  ß  »α«úαá¼¼«⌐  ¡á
  181. ∩ºδ¬Ñ áßßѼí½Ñαá ß«ñÑαªáΓß∩ ó ú½áóÑ 23.
  182.      Åα¿óÑñѼ ß½ÑñπεΘ¿Ñ »α¿¼Ñαδ «íΩ∩ó½Ñ¡¿⌐ ó¡ÑΦ¡¿σ »α«µÑñπα:
  183.  
  184.       procedure MoveWord(var Source, Dest; Count: Word);
  185.                                                  external;
  186.       procedure MoveLong(var Source, Dest; Count: Word);
  187.                                                  external;
  188.       procedure FillWord(var Dest; Data: Integer;
  189.                          Count: Word); external;
  190.       procedure FillLong(var Dest; Data: Longint;
  191.                          Count: Word); external;
  192.  
  193.       {$L BLOCK.OBJ}
  194.  
  195.  
  196.                        assembler «íΩ∩ó½Ñ¡¿Ñ.
  197.  
  198.      assembler «íΩ∩ó½Ñ¡¿Ñ  »«ºó«½∩ÑΓ  éá¼  ¡á»¿ßáΓ∞  »α«µÑñπαπ  ¿½¿
  199. Σπ¡¬µ¿ε ¡á   óßΓα«Ñ¡¡«¼   ÇßßѼí½ÑαÑ.   ü«½ÑÑ   ñÑΓá½∞¡«Ñ  «»¿ßá¡¿Ñ
  200. ÇßßѼí½Ñα¡δσ »α«µÑñπα ¿ Σπ¡¬µ¿⌐ »α¿óÑñÑ¡« ó  ú½áóÑ  22  "éßΓα«Ñ¡¡δ⌐
  201. ÇßßѼí½Ñα".
  202.  
  203.  
  204.              ┌─────────┐   ┌─┐   ┌──────────┐   ┌────────────┐
  205. í½«¬ asm ───÷│assembler├──÷│;├──÷│  αáºñѽ  ├──÷│asm «»ÑαáΓ«α├──÷
  206.              └─────────┘   └─┘   │«íΩ∩ó½Ñ¡¿∩│   └────────────┘
  207.                                  └──────────┘
  208.  
  209.  
  210.                         inline «íΩ∩ó½Ñ¡¿Ñ.
  211.  
  212.      ä¿αÑ¬Γ¿óá inline  »«ºó«½∩ÑΓ  ºá»¿ßδóáΓ∞  ¿¡ßΓαπ¬µ¿¿ ó ¼áΦ¿¡¡«¼
  213. ¬«ñÑ,  ¡Ñ ¿ß»«½∞ºπ∩ í½«¬ «»ÑαáΓ«α«ó.  Åα¿ ó맮óÑ «íδτ¡«⌐  »α«µÑñπαδ
  214. ¬«¼»¿½∩Γ«α ß«ºñáÑΓ ¬«ñ,  ó ¬«Γ«α«¼ »áαá¼ÑΓαδ »α«µÑñπαδ »«¼ÑΘáεΓß∩ ó
  215. ßΓѬ,  á ºáΓѼ ñ½∩ ó맮óá »α«µÑñπαδ úÑ¡Ñα¿απÑΓß∩  ¿¡ßΓαπ¬µ¿∩  call.
  216. è«úñá óδ óδºδóáÑΓÑ ó¡πΓαÑ¡¡εε »α«µÑñπαπ,  ¬«¼»¿½∩Γ«α úÑ¡Ñα¿απÑΓ ¬«ñ
  217. ¿º ñ¿αÑ¬Γ¿óδ inline ó¼ÑßΓ« call.  Æá¬¿¼ «íαẫ¼,  inline  »α«µÑñπαá
  218. "αáßΦ¿α∩ÑΓß∩"    »α¿    ¬áªñ«¼    «íαáΘÑ¡¿¿   ¬   ¡Ñ⌐,   á¡á½«ú¿τ¡«
  219. ¼á¬α« ¡á  ∩ºδ¬Ñ  áßßѼí½Ñαá.   Åα¿óÑñѼ   ñóá   ¡Ñí«½∞Φ¿σ   »α¿¼Ñαá
  220. ó¡πΓαÑ¡¡¿σ »α«µÑñπα:
  221.  
  222.      procedure DisableInterrupts; inline ($FA); {CLI}
  223.      procedure EnableInterrupts; inline ($FB); {STI}
  224.  
  225.  
  226.                          ÄíΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿⌐.
  227.  
  228.      ÄíΩ∩ó½Ñ¡¿Ñ Σπ¡¬µ¿¿   «»αÑñѽ∩ÑΓ  τáßΓ∞  »α«úαá¼¼δ,  ó  ¬«Γ«α«⌐
  229. óδτ¿ß½∩ÑΓß∩ ¿ ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ.
  230.  
  231.  
  232.                ┌─────────┐   ┌─┐   ┌───────┐   ┌─┐
  233. «íΩ∩ó½Ñ¡¿Ñ ───÷│ºáú«½«ó«¬├──÷│;├──÷│ Γѽ«  ├──÷│;├──÷
  234. Σπ¡¬µ¿¿        │ Σπ¡¬µ¿¿ │   └─┘   │Σπ¡¬µ¿¿│   └─┘
  235.                └─────────┘         └───────┘
  236.  
  237.                ┌────────┐  ┌─────────────┐
  238. ºáú«½«ó«¬  ───÷│function├─÷│¿ñÑ¡Γ¿Σ¿¬áΓ«α├──┬───────────────────┐
  239. Σπ¡¬µ¿¿        └────────┘  └─────────────┘  │  ┌──────────┐  °  │
  240.                                             │  │ß»¿ß«¬    │  │  │
  241.                                             └─÷│Σ«α¼á½∞¡δσ├──┘  │
  242.                                                │»áαá¼ÑΓα«ó│     │
  243.                                                └──────────┘     │
  244.                                           ┌─────────────────────┘
  245.                                           │  ┌─┐   ┌────────┐
  246.                                           └─÷│:├──÷│Γ¿» αÑ- ├────÷
  247.                                              └─┘   │ºπ½∞ΓáΓá│
  248.                                                    └────────┘
  249.  
  250.                      ┌─────────────┐
  251. Γ¿» αѺπ½∞ΓáΓá ─────÷│¿ñÑ¡Γ¿Σ¿¬áΓ«α├─────────÷
  252.                  │   │    Γ¿»á     │     °
  253.                  │   └─────────────┘     │
  254.                  │      ┌──────┐         │
  255.                  └─────÷│string├─────────┘
  256.                         └──────┘
  257.  
  258.                                           ┌──────┐
  259. Γѽ«     ───┬─────────────────────────┬──÷│¼«ñπ½∞├────────÷
  260. Σπ¡¬µ¿¿     │   ┌──────┐     ┌─┐  °   │   └──────┘    °
  261.             ├──÷│ near ├────÷│;├──┘   │   ┌───────┐   │
  262.             │   └──────┘  °  └─┘      ├──÷│forward├───┤
  263.             │   ┌──────┐  │           │   └───────┘   │
  264.             ├──÷│ far  ├──┘           │   ┌────────┐  │
  265.             │   └──────┘              ├──÷│external├──┤
  266.             │                         │   └────────┘  │
  267.             │                         │   ┌────────┐  │
  268.             │                         └──÷│í½«¬ asm├──┤
  269.             │                             └────────┘  │
  270.             │                             ┌─────────┐ │
  271.             └────────────────────────────÷│ñ¿αÑ¬Γ¿óá├─┘
  272.                                           │ inline  │
  273.                                           └─────────┘
  274.  
  275.      çáú«½«ó«¬ Σπ¡¬µ¿¿   ß«ñÑαª¿Γ   ¿ñÑ¡Γ¿Σ¿¬áΓ«α   ñ½∩    Σπ¡¬µ¿¿,
  276. Σ«α¼á½∞¡δÑ  »áαá¼ÑΓαδ  (Ñß½¿  «¡¿  »α¿ßπΓßΓóπεΓ)  ¿  Γ¿» αѺπ½∞ΓáΓá
  277. Σπ¡¬µ¿¿.
  278.      öπ¡¬µ¿∩ á¬Γ¿ó¿º¿απÑΓß∩    ß   »«¼«Θ∞ε   ó맮óá   Σπ¡¬µ¿¿   ¿½¿
  279. óδτ¿ß½Ñ¡¿∩.  é맮ó  Σπ¡¬µ¿¿  ß«ñÑαª¿Γ   ¿ñÑ¡Γ¿Σ¿¬áΓ«α   Σπ¡¬µ¿¿   ¿
  280. ¡Ñ«íσ«ñ¿¼δÑ   Σá¬Γ¿τÑ߬¿Ñ   »áαá¼ÑΓαδ.   öπ¡¬µ¿∩   óδ»«½¡∩ÑΓß∩  »α¿
  281. óδτ¿ß½Ñ¡¿¿ óδαáªÑ¡¿∩,  á º¡áτÑ¡¿Ñ  «»Ñαá¡ñá  ßΓá¡«ó¿Γß∩  º¡áτÑ¡¿Ñ¼,
  282. ó«ºóαáΘáÑ¼δ¼ Σπ¡¬µ¿Ñ⌐.
  283.      Ä»ÑαáΓ«α¡á∩ τáßΓ∞ í½«¬á Σπ¡¬µ¿¿  ß«ñÑαª¿Γ  «»ÑαáΓ«αδ,  ¬«Γ«αδÑ
  284. óδ»«½¡∩εΓß∩ »α¿  á¬Γ¿ó¿ºáµ¿¿  Σπ¡¬µ¿¿.  ü½«¬  ñ«½ªÑ¡  ß«ñÑαªáΓ∞  »«
  285. ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩,  ó  ¬«Γ«α«¼  »α¿ßóá¿óáÑΓß∩
  286. º¡áτÑ¡¿Ñ  ¿ñÑ¡Γ¿Σ¿¬áΓ«απ  Σπ¡¬µ¿¿.  ÉѺπ½∞ΓáΓ«¼  óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿
  287. íπñÑΓ  »«ß½Ññ¡ÑÑ  »α¿ßóá¿óáѼ«Ñ  º¡áτÑ¡¿Ñ.  àß½¿  Γᬫú«  «»ÑαáΓ«αá
  288. »α¿ßóá¿óá¡¿∩  ¡ÑΓ  ¿½¿ «¡ ¡Ñ óδ»«½¡∩ÑΓß∩,  Γ« ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐
  289. º¡áτÑ¡¿Ñ íπñÑΓ ¡Ñ«»αÑñѽѡ¡δ¼.
  290.      àß½¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α  Σπ¡¬µ¿¿  ¿ß»«½∞ºπÑΓß∩  ñ½∩  ó맮óá Σπ¡¬µ¿¿
  291. ó¡πΓα¿ í½«¬á Σπ¡¬µ¿¿,  Γ« Σπ¡¬µ¿∩ óδ»«½¡∩ÑΓß∩ αѬπαß¿ó¡«.  Åα¿óÑñѼ
  292. »α¿¼Ñα «íΩ∩ó½Ñ¡¿⌐ Σπ¡¬µ¿⌐:
  293.  
  294.      function Max(A: Vector; N: Integer): Extended;
  295.      var
  296.        X: Extended;
  297.        I: Integer;
  298.      begin
  299.         X := A[1];
  300.         for I := 2 to N do
  301.            if X < A[I] then X := A[I];
  302.         Max := X;
  303.       end;
  304.  
  305.       function Power(X: Extended; Y: Integer): Extended;
  306.       var
  307.         Z: Extended;
  308.         I: Integer;
  309.       begin
  310.          Z := 1.0;
  311.          I := Y;
  312.          while I > 0 do
  313.          begin
  314.             if Odd(I) then Z := Z * X;
  315.             I := I div 2;
  316.             X := Sqr(X);
  317.          end;
  318.          Power := Z;
  319.       end;
  320.  
  321.      èᬠ¿ »α«µÑñπαδ,  Σπ¡¬µ¿¿ ¼«úπΓ íδΓ∞  «íΩ∩ó½Ñ¡δ  ¬á¬  forward,
  322. external, inline,  near,  far  ¿  assembler;  «ñ¡á¬«  ¡Ñ  ñ«»πßΓ¿¼δ
  323. interrupt Σπ¡¬µ¿¿.
  324.  
  325.  
  326.                         ÄíΩ∩ó½Ñ¡¿Ñ ¼ÑΓ«ñ«ó.
  327.  
  328.      ÄíΩ∩ó½Ñ¡¿Ñ ¼ÑΓ«ñá   ó¡πΓα¿   «íΩÑ¬Γ¡«ú«   Γ¿»á   ß««ΓóÑΓßΓóπÑΓ
  329. «íΩ∩ó½Ñ¡¿ε forward  ñ½∩  φΓ«ú«  ¼ÑΓ«ñá.   Æá¬¿¼   «íαẫ¼,    »«ß½Ñ
  330. «íΩ∩ó½Ñ¡¿∩ «íΩÑ¬Γ¡«ú« Γ¿»á ¿ ó¡πΓα¿ ßΣÑαδ ñÑ⌐ßΓó¿∩ «íΩ∩ó½Ñ¡¿∩ φΓ«ú«
  331. «íΩÑ¬Γ¡«ú« Γ¿»á ñ«½ª¡á íδΓ∞ αÑ὿ºáµ¿∩ φΓ«ú« ¼ÑΓ«ñá.
  332.      ä½∩ ¼ÑΓ«ñ«ó  Γ¿»á  »α«µÑñπα  ¿  Σπ¡¬µ¿⌐ αÑ὿ºáµ¿∩ ¿¼ÑÑΓ Σ«α¼π
  333. «íΩ∩ó½Ñ¡¿∩ «íδτ¡«⌐ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ß «ñ¡¿¼ ¿ß¬½ετÑ¡¿Ñ¼,   τΓ«
  334. ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿  ó  φΓ«¼  ß½πτáÑ  ñ«½ªÑ¡ íδΓ∞
  335. πΓ«τ¡Ñ¡¡δ¼ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼ ¼ÑΓ«ñá.
  336.      îÑΓ«ñδ ¬«¡ßΓαá¬Γ«α   ¿   ñÑßΓαá¬Γ«α   ¿¼ÑεΓ   Γá¬πε  ªÑ  Σ«α¼π
  337. «íΩ∩ó½Ñ¡¿∩ ¼ÑΓ«ñá-»α«µÑñπαδ,  ºá ¿ß¬½ετÑ¡¿Ñ¼  Γ«ú«,   τΓ«  ¬½ετÑó«Ñ
  338. ß½«ó« procedure   ºá¼Ñ¡∩ÑΓß∩   ¬½ετÑóδ¼   ß½«ó«¼   constructor  ¿½¿
  339. destructor.
  340.      Åα¿ αÑ὿ºáµ¿¿  ¼ÑΓ«ñá,   ó  ºáú«½«ó¬Ñ  ¼ÑΓ«ñá ¼«ª¡« π¬áºδóáΓ∞
  341. ß»¿ß«¬ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó,  π¬áºá¡¡δσ »α¿ «íΩ∩ó½Ñ¡¿¿  «íΩÑ¬Γ¡«ú«
  342. Γ¿»á. é  φΓ«¼  ß½πτáÑ  «»αÑñѽѡ¿Ñ  ºáú«½«ó¬á  ¼ÑΓ«ñá  ñ«½ª¡« Γ«τ¡«
  343. ß««ΓóÑΓßΓó«óáΓ∞ »«  »«α∩ñ¬π  Γ¿»á¼  ¿  ¿¼Ñ¡á¼  »áαá¼ÑΓα«ó  ¿   Γ¿»π
  344. αѺπ½∞ΓáΓá Σπ¡¬µ¿¿.
  345.      é «»αÑñѽ∩εΘѼ «íΩ∩ó½Ñ¡¿¿ ¼ÑΓ«ñá óßÑúñá  »α¿ßπΓßΓóπÑΓ  ¡Ñ∩ó¡δ⌐
  346. »áαá¼ÑΓα   ß   ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼  Self,  ß««ΓóÑΓßΓóπεΘ¿⌐  Σ«α¼á½∞¡«¼π
  347. »áαá¼ÑΓαπ ß φΓ¿¼  «íΩÑ¬Γ¡δ¼  Γ¿»«¼.  é¡πΓα¿  ¼ÑΓ«ñá  Self  ß«ñÑনΓ
  348. φ¬ºÑ¼»½∩α,  τ∞∩  ¬«¼»«¡Ñ¡Γá  íδ½á  ¡áº¡áτѡᠠ»α¿ á¬Γ¿ó¿ºáµ¿¿ φΓ«ú«
  349. ¼ÑΓ«ñá. Æá¬¿¼  «íαẫ¼,  ½εíδÑ  ¿º¼Ñ¡Ñ¡¿∩   º¡áτÑ¡¿⌐   »«½Ñ⌐   Self
  350. «ΓαáªáεΓß∩ ó φ¬ºÑ¼»½∩αÑ.
  351.      æΣÑαá ñÑ⌐ßΓó¿∩     ¿ñÑ¡Γ¿Σ¿¬áΓ«αá     ó     «íΩÑ¬Γ¡«¼     Γ¿»Ñ
  352. αáß»α«ßΓαá¡∩ÑΓß∩ ¡á  ½εíπε  »α«µÑñπαπ,   Σπ¡¬µ¿ε,   ¬«¡ßΓαá¬Γ«α ¿½¿
  353. ñÑßΓαá¬Γ«α, ¬«Γ«αδÑ αÑ὿ºπεΓ ¼ÑΓ«ñ φΓ«ú« «íΩÑ¬Γ¡«ú« Γ¿»á.   ¥ΣΣѬΓ
  354. φΓ«ú« Γ«Γ  ªÑ  ßá¼δ⌐,  ¬á¬  Ñß½¿ íδ óÑß∞ í½«¬ ¼ÑΓ«ñá íδ½ ºá¬½ετÑ¡ ó
  355. «»ÑαáΓ«α with ó Σ«α¼Ñ:
  356.  
  357.      with Self do begin ... end;
  358.  
  359.      Å« φΓ«⌐   »α¿τ¿¡Ñ   ¡á»¿ßá¡¿Ñ    ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó    Σ«α¼á½∞¡δσ
  360. »áαá¼ÑΓα«ó ¼ÑΓ«ñá, Self ¿ ½εíδσ ñαπú¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, óóÑñÑ¡¡δσ ó
  361. ¼ÑΓ«ñÑ, ñ«½ª¡« íδΓ∞ π¡¿¬á½∞¡δ¼.
  362.      ìÑ߬«½∞¬« »α¿¼Ñα«ó αÑ὿ºáµ¿¿ ¼ÑΓ«ñ«ó:
  363.  
  364.      procedure Rect.Intersect(var R: Rect);
  365.      begin
  366.         if A.X < R.A.X then A.X := R.A.X;
  367.         if A.Y < R.A.Y then A.Y := R.A.Y;
  368.         if B.X > R.B.X then B.X := R.B.X;
  369.         if B.Y > R.B.Y then B.Y := R.B.Y;
  370.         if (A.X >= B.X) or (A.Y >= B.Y) then Init(0, 0, 0, 0);
  371.      end;
  372.  
  373.      procedure Field.Display;
  374.      begin
  375.         GotoXY (X, Y);
  376.         Write(Name^, ' ', GetStr);
  377.      end;
  378.  
  379.      function NumField.PutStr(S: String): Boolean;
  380.      var
  381.         E: Integer;
  382.      begin
  383.         Val(S, Value, E);
  384.         PutStr := (E = 0) and (Value >= Min) and (Value <= Max);
  385.      end;
  386.  
  387.  
  388.                     è«¡ßΓαá¬Γ«αδ ¿ ñÑßΓαá¬Γ«αδ.
  389.  
  390.      è«¡ßΓαá¬Γ«αδ ¿  ñÑßΓαá¬Γ«αδ  -  φΓ«  ß»Ñµ¿á½¿º¿α«óá¡¡δÑ  Σ«α¼δ
  391. ¼ÑΓ«ñ«ó.  êß»«½∞ºπѼδÑ ó ß«τÑΓá¡¿¿ ß αáßΦ¿αÑ¡¡δ¼ ß¿¡Γá¬ß¿ß«¼ New  ¿
  392. Dispose,  ¬«¡ßΓαá¬Γ«αδ ¿ ñÑßΓαá¬Γ«αδ ¿¼ÑεΓ ó«º¼«ª¡«ßΓ∞ αáß»αÑñѽ∩Γ∞
  393. ¿ «ßó«í«ªñáΓ∞  ñ¿¡á¼¿τÑ߬¿Ñ  «íΩѬΓδ.  ä«»«½¡¿Γѽ∞¡«,  ¬«¡ßΓαá¬Γ«αδ
  394. ¿¡¿µ¿á½¿º¿απεΓ «íΩѬΓδ, ß«ñÑαªáΘ¿Ñ ó¿αΓπá½∞¡δÑ ¼ÑΓ«ñδ. èᬠ¿ ñαπú¿Ñ
  395. ¼ÑΓ«ñδ,  ¬«¡ßΓαáΓ«αδ ¿ ñÑßΓαá¬Γ«αδ ¼«úπΓ  ¡áß½Ññ«óáΓ∞ß∩,  ¿  «íΩѬΓ
  396. ¼«ªÑΓ ¿¼ÑΓ∞ ½εí«Ñ τ¿ß½« ¬«¡ßΓαá¬Γ«α«ó ¿ ñÑßΓαá¬Γ«α«ó.
  397.      è«¡ßΓαá¬Γ«αδ ¿ß»«½∞ºπεΓß∩ ñ½∩ ¿¡¿µ¿á½¿ºáµ¿¿ ó¡«ó∞ «íαẫóá¡¡δσ
  398. «íΩÑ¬Γ«ó. Äíδτ¡« ¿¡¿µ¿á½¿ºáµ¿∩  «ß¡«óá¡á  ¡á  »ÑαÑñáτÑ  º¡áτÑ¡¿⌐  ó
  399. »áαá¼ÑΓαδ ¬«¡ßΓαá¬Γ«αá.   è«¡ßΓαá¬Γ«αδ  ¡Ñ ¼«úπΓ íδΓ∞ ó¿αΓπá½∞¡δ¼¿,
  400. »«Γ«¼π τΓ«  ¼Ñσá¡¿º¼  ó¿αΓπá½∞¡δσ  ¼ÑΓ«ñ«ó  «ß¡«óá¡  ¡á  Γ«¼,   τΓ«
  401. ¬«¡ßΓαá¬Γ«α πªÑ ¿¡¿µ¿á½¿º¿α«óá½ «íΩѬΓ.
  402.      Åα¿¼Ñαδ ¬«¡ßΓαá¬Γ«α«ó:
  403.  
  404.      constructor Field.Copy(var F: Field);
  405.      begin
  406.         Self := F;
  407.      end;
  408.  
  409.      constructor Field.Init(FX, FY, FLen: Integer; FName: String);
  410.      begin
  411.         X := FX;
  412.         Y := FY;
  413.         Len := FLen;
  414.         GetMem(Name, Length(FName) + 1);
  415.         Name^ := FName;
  416.      end;
  417.  
  418.      constructor StrField.Init(FX, FY, FLen: Integer; Fname :
  419.                                String);
  420.      begin
  421.         Field.Init(FX, FY, FLen, FName);
  422.         GetMem(Value, Len);
  423.         Value^ := ' ';
  424.      end;
  425.  
  426.      ÅÑαó«Ñ ñÑ⌐ßΓó¿Ñ  ¬«¡ßΓαá¬Γ«αá  »«α«ªñÑ¡¡«ú«  Γ¿»á Γᬫú«,  ¬á¬
  427. StrField.Init ó »α¿¼ÑαÑ - »«τΓ¿ óßÑúñá  óδº«ó  ¬«¡ßΓαá¬Γ«αá  »αÑñ¬á
  428. ñ½∩   ¿¡¿µ¿á½¿ºáµ¿¿   π¡áß½Ññ«óá¡¡δσ  »«½Ñ⌐  «íΩѬΓá.  Å«ß½Ñ  φΓ«ú«
  429. ¬«¡ßΓαá¬Γ«α ¿¡¿µ¿á½¿º¿απÑΓ »«½∩ «íΩѬΓá,  ¬«Γ«αδÑ  í뫨  óóÑñÑ¡δ  ó
  430. »«α«ªñÑ¡¡«¼ Γ¿»Ñ.
  431.  
  432.      Åα¿¼Ñτá¡¿Ñ: äÑßΓαá¬Γ«αδ  ¼«úπΓ íδΓ∞ ó¿αΓπá½∞¡δ¼¿.  äÑßΓαá¬Γ«αδ
  433. αÑñ¬« ¿¼ÑεΓ »áαá¼ÑΓαδ.
  434.  
  435.      äÑßΓαá¬Γ«αδ óδ»«½¡∩εΓ ñÑ⌐ßΓó¿Ñ,  »α«Γ¿ó«»«½«ª¡«Ñ ¬«¡ßΓαá¬Γ«αá¼
  436. ¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ «τ¿ßΓ¬¿ «íΩÑ¬Γ«ó »«ß½Ñ ¿σ ¿ß»«½∞º«óá¡¿∩. Äτ¿ßΓ¬á
  437. «íδτ¡« ß«ßΓ«¿Γ ó «ßó«í«ªñÑ¡¿¿ óßÑσ »«½Ñ⌐ - π¬áºáΓѽÑ⌐ «íΩѬΓá.
  438.      Åα¿¼Ñαδ ñÑßΓαá¬Γ«α«ó:
  439.  
  440.      destructor Field.Done;
  441.      begin
  442.         FreeMem(Name, Length(Name^) + 1);
  443.      end;
  444.  
  445.      destructor StrField.Done;
  446.      begin
  447.         FreeMem(Value, Len);
  448.         Field.Done;
  449.      end;
  450.  
  451.      äÑßΓαá¬Γ«α »«α«ªñÑ¡¡«ú«  Γ¿»á  Γᬫ⌐   ¬á¬   StrField.Done   ó
  452. »α¿¼ÑαÑ,  «íδτ¡«  ó ¡áτá½Ñ π¡¿τΓ«ªáεΓ »«½∩ π¬áºáΓѽÑ⌐,  óóÑñÑ¡¡δÑ ó
  453. ¡Ñ¼,  ¿   ºáΓѼ,   ó   ¬áτÑßΓóÑ   »«ß½Ññ¡Ñú«   ñÑ⌐ßΓó¿∩,   óδºδóáεΓ
  454. ß««ΓóÑΓßΓóπεΘ¿⌐  ñÑßΓαá¬Γ«α  ßó«Ñú«  ¡Ñ»«ßαÑñßΓóÑ¡¡«ú«  »αÑñ¬á  ñ½∩
  455. «ßó«í«ªñÑ¡¿∩ óßÑσ π¡áß½Ññ«óá¡¡δσ »«½Ñ⌐ π¬áºáΓѽÑ⌐ «íΩѬΓá.
  456.  
  457.  
  458.                             Åáαá¼ÑΓαδ.
  459.  
  460.      ÄíΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿  ß«ñÑαª¿Γ ß»¿ß«¬ Σ«α¼á½∞¡δσ
  461. »áαá¼ÑΓα«ó.  èáªñδ⌐  »áαá¼ÑΓα,  «íΩ∩ó½Ñ¡¡δ⌐  ó  ß»¿ß¬Ñ   Σ«α¼á½∞¡δσ
  462. »áαá¼ÑΓα«ó, ∩ó½∩ÑΓß∩ ½«¬á½∞¡δ¼ »« «Γ¡«ΦÑ¡¿ε ¬ «íΩ∩ó½Ñ¡¡«⌐ »α«µÑñπαÑ
  463. ¿½¿ Σπ¡¬µ¿¿,  ¡á ¡Ñú« ¼«ª¡« ßñѽáΓ∞ ßß佬π ß »«¼«Θ∞ε ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
  464. ó í½«¬Ñ, ßó∩ºá¡¡«¼ ß »α«µÑñπα«⌐ ¿½¿ Σπ¡¬µ¿Ñ⌐.
  465.  
  466.  
  467.                        ┌─┐      ┌──────────┐      ┌─┐
  468. ß»¿ß«¬ Σ«α¼á½∞¡δσ  ───÷│(├─────÷│«íΩ∩ó½Ñ¡¿Ñ├──┬──÷│)├──÷
  469. »áαá¼ÑΓα«ó             └─┘  °   │»áαá¼ÑΓαá │  │   └─┘
  470.                             │   └──────────┘  │
  471.                             │      ┌─┐        │
  472.                             └──────┤;│≈───────┘
  473.                                    └─┘
  474.  
  475.                          ┌─────────────┐
  476. «íΩ∩ó½Ñ¡¿Ñ ──┬──────────÷│ß»¿ß«¬ ¿ñÑ¡- ├──┬──────────────────────÷
  477. »áαá¼ÑΓαá    │        °  │Γ¿Σ¿¬áΓ«α«ó  │  │                  °
  478.              │        │  └─────────────┘  │                  │
  479.              │  ┌───┐ │                   │                  │
  480.              └─÷│var├─┘                   │  ┌─┐   ┌───────┐ │
  481.                 └───┘                     └─÷│:├──÷│Γ¿» »á-├─┘
  482.                                              └─┘   │αá¼ÑΓαá│
  483.                                                    └───────┘
  484.  
  485.                       ┌──────────┐
  486. Γ¿» »áαá¼ÑΓαá  ───┬──÷│ ¿ñÑ¡Γ¿Σ¿-├───────÷
  487.                   │   │¬áΓ«α Γ¿»á│   °
  488.                   │   └──────────┘   │
  489.                   │   ┌────────┐     │
  490.                   ├──÷│ string ├─────┤
  491.                   │   └────────┘     │
  492.                   │   ┌──────┐       │
  493.                   └──÷│ file ├───────┘
  494.                       └──────┘
  495.  
  496.  
  497.      æπΘÑßΓóπÑΓ Γα¿  ó¿ñá  »áαá¼ÑΓα«ó:   º¡áτÑ¡¿Ñ,   »ÑαѼѡ¡á∩   ¿
  498. ¡ÑΓ¿»¿α«óá¡¡á∩ »ÑαѼѡ¡á∩. Ä¡¿ σáαá¬ΓÑਧπεΓß∩ ß½ÑñπεΘ¿¼:
  499.  
  500.      - úαπ»»á  »áαá¼ÑΓα«ó íѺ »αÑñΦÑßΓóπεΘÑú« ¬½ετÑó«ú« ß½«óá var ¿
  501.        ß« ß½ÑñπεΘ¿¼ ºá ¡Ñ⌐  Γ¿»«¼  ∩ó½∩ÑΓß∩  ß»¿ß¬«¼  »áαá¼ÑΓα«ó  -
  502.        º¡áτÑ¡¿⌐.
  503.  
  504.      - úαπ»»á  »áαá¼ÑΓα«ó  ß  »αÑñΦÑßΓóπεΘ¿¼  ¬½ετÑóδ¼ ß½«ó«¼ var ¿
  505.        ß½ÑñπεΘ¿¼  ºá  ¡Ñ⌐  Γ¿»«¼  ∩ó½∩ÑΓß∩  ß»¿ß¬«¼  »áαá¼ÑΓα«ó   -
  506.        »ÑαѼѡ¡δσ.
  507.  
  508.      - úαπ»»á  »áαá¼ÑΓα«ó ß »αÑñΦÑßΓóπεΘ¿¼ Ñ⌐ ¬½ετÑóδ¼ ß½«ó«¼ var ¿
  509.        íѺ ß½ÑñπεΘÑú« ºá ¡Ñ⌐ Γ¿»á ∩ó½∩ÑΓß∩  ß»¿ß¬«¼  ¡ÑΓ¿»¿α«óá¡¡δσ
  510.        »áαá¼ÑΓα«ó »ÑαѼѡ¡δσ.
  511.  
  512.  
  513.                        Åáαá¼ÑΓαδ - º¡áτÑ¡¿∩.
  514.  
  515.      ö«α¼á½∞¡δ⌐ »áαá¼ÑΓα-º¡áτÑ¡¿Ñ   ñÑ⌐ßΓóπÑΓ    ¬á¬    »ÑαѼѡ¡á∩,
  516. ½«¬á½∞¡á∩ »« «Γ¡«ΦÑ¡¿ε ¬ »α«µÑñπαÑ ¿½¿ Σπ¡¬µ¿¿ ºá ¿ß¬½ετÑ¡¿Ñ¼ Γ«ú«,
  517. τΓ«  «¡á  »«½πτáÑΓ  ßó«Ñ  ¿ßσ«ñ¡«Ñ  º¡áτÑ¡¿Ñ  ¿º   ß««ΓóÑΓßΓóπεΘÑú«
  518. Σá¬Γ¿τÑ߬«ú«  »áαá¼ÑΓαá  »α¿  á¬Γ¿ó¿ºáµ¿¿  »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿.
  519. 꺼ѡѡ¿∩ Σ«α¼á½∞¡«ú«  »áαá¼ÑΓαá-º¡áτÑ¡¿∩  ¡Ñ  ó½¿∩εΓ  ¡á  º¡áτÑ¡¿Ñ
  520. Σá¬Γ¿τÑ߬«ú« »áαá¼ÑΓαá.
  521.      öá¬Γ¿τÑ߬¿⌐ »áαá¼ÑΓα,  ß««ΓóÑΓßΓóπεΘ¿⌐  »áαá¼ÑΓαπ-º¡áτÑ¡¿ε   ó
  522. «»ÑαáΓ«αÑ  »α«µÑñπαδ  ¿½¿ ó맮óÑ Σπ¡¬µ¿¿ ñ«½ªÑ¡ íδΓ∞ óδαáªÑ¡¿Ñ¼,  á
  523. Ñú«  º¡áτÑ¡¿Ñ  ¡Ñ  ¼«ªÑΓ  íδΓ∞  Σá⌐½«ó«ú«  Γ¿»á  ¿½¿  ¬á¬«ú«-¡¿íπñ∞
  524. ßΓαπ¬Γπα¡«ú«  Γ¿»á.  öá¬Γ¿τÑ߬¿⌐  »áαá¼ÑΓα ñ«½ªÑ¡ íδΓ∞ ß«ó¼ÑßΓ¿¼ »«
  525. »α¿ßóá¿óá¡¿ε ß Γ¿»«¼  Σ«α¼á½∞¡«ú«  »áαá¼ÑΓαá-º¡áτÑ¡¿∩.  àß½¿  Γ¿»«¼
  526. »áαá¼ÑΓαá  ∩ó½∩ÑΓß∩  String,  Γ«  Σ«α¼á½∞¡δ⌐  »áαá¼ÑΓα  íπñÑΓ ¿¼ÑΓ∞
  527. áΓα¿íπΓ αẼÑαá, αáó¡δ⌐ 255.
  528.  
  529.  
  530.                       Åáαá¼ÑΓα - »ÑαѼѡ¡á∩.
  531.  
  532.      àß½¿ º¡áτÑ¡¿Ñ  ¡πª¡«  »ÑαÑñáΓ∞  ¿º  »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿  ó
  533. óδºδóáεΘπε   »α«úαá¼¼π,   Γ«   ¿ß»«½∞ºπÑΓß∩    »áαá¼ÑΓα-»ÑαѼѡ¡á∩.
  534. æ««ΓóÑΓßΓóπεΘ¿⌐  Σá¬Γ¿τÑ߬¿⌐  »áαá¼ÑΓα ó «»ÑαáΓ«αÑ ó맮óá »α«µÑñπαδ
  535. ¿½¿  Σπ¡¬µ¿¿  ñ«½ªÑ¡  íδΓ∞  ßß佬«⌐   ¡á   »ÑαѼѡ¡πε.   ö«α¼á½∞¡δ⌐
  536. »áαá¼ÑΓα-»ÑαѼѡ¡á∩ »αÑñßΓáó½∩ÑΓ  Σá¬Γ¿τÑ߬πε  »ÑαѼѡ¡πε  ó« óαѼ∩
  537. á¬Γ¿ó¿ºáµ¿¿ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿,  »«φΓ«¼π óßÑ ¿º¼Ñ¡Ñ¡¿∩  º¡áτÑ¡¿∩
  538. Σ«α¼á½∞¡«ú« »áαá¼ÑΓαá «ΓαáªáεΓß∩ ¡á Σá¬Γ¿τÑ߬«¼ »áαá¼ÑΓαÑ.
  539.      é¡πΓα¿ »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿  ½εíá∩  ßßδ½¬á  ¡á   Σ«α¼á½∞¡δ⌐
  540. »áαá¼ÑΓα-»ÑαѼѡ¡πε  ñáÑΓ  ñ«ßΓπ»  ¬ ßἫ¼π Σá¬Γ¿τÑ߬«¼π »áαá¼ÑΓαπ.
  541. Æ¿»  Σá¬Γ¿τÑ߬«ú«   »áαá¼ÑΓαá   ñ«½ªÑ¡   íδΓ∞   Γ«ªñÑßΓóѡѡ   Γ¿»π
  542. Σ«α¼á½∞¡«ú«  »áαá¼ÑΓαá-»ÑαѼѡ¡«⌐  (¼«ª¡«  «í«⌐Γ¿  φΓ«  «úαá¡¿τÑ¡¿Ñ
  543. τÑαѺ ¡ÑΓ¿»¿α«óá¡¡δÑ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ).  àß½¿ Γ¿»«¼ Σ«α¼á½∞¡«ú«
  544. »áαá¼ÑΓαá ∩ó½∩ÑΓß∩ String, Γ« ºáñáÑΓß∩ áΓα¿íπΓ ñ½¿¡δ, αáó¡δ⌐ 255, ¿
  545. Σá¬Γ¿τÑ߬¿⌐  »áαá¼ÑΓα-»ÑαѼѡ¡á∩  ñ«½ªÑ¡  ¿¼ÑΓ∞  ßΓ᫬«óδ⌐  Γ¿»   ß
  546. áΓα¿íπΓ«¼ ñ½¿¡δ, αáó¡δ¼ 255.
  547.      öá⌐½«óδÑ Γ¿»δ     ¼«úπΓ      »ÑαÑñáóáΓ∞ß∩      Γ«½∞¬«      ¬á¬
  548. »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ.
  549.      àß½¿ ßßδ½¬á  ¡á  Σá¬Γ¿τÑ߬¿⌐  »áαá¼ÑΓα-»ÑαѼѡ¡πε  ßó∩ºá¡á   ß
  550. ¿¡ñѬ߿α«ó᡿Ѽ  ¼áßß¿óá  ¿½¿ ¡áσ«ªñÑ¡¿Ñ¼ «íΩѬΓá »« Ñú« π¬áºáΓѽε,
  551. Γ« φΓ¿ ñÑ⌐ßΓó¿∩ óδ»«½¡∩εΓß∩ ñ« á¬Γ¿ó¿ºáµ¿¿ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿.
  552.  
  553.  
  554.                              ÄíΩѬΓδ.
  555.  
  556.      Åαá󿽫 ß«ó¼ÑßΓ¿¼«ßΓ¿  »«  »α¿ßóá¿óá¡¿ε «íΩÑ¬Γ¡δσ Γ¿»«ó ΓᬠªÑ
  557. »α¿¼Ñ¡¿¼« ¬ »áαá¼ÑΓαá¼-»ÑαѼѡ¡δ¼ «íΩÑ¬Γ¡δσ Γ¿»«ó:  ñ½∩ Σ«α¼á½∞¡«ú«
  558. »áαá¼ÑΓαá Γ¿»á Æ1 ñÑ⌐ßΓó¿Γѽ∞¡δ⌐ »áαá¼ÑΓα ¼«ªÑΓ íδΓ∞ Γ¿»á Æ2,  Ñß½¿
  559. Æ2 ½Ñª¿Γ ó «í½áßΓ¿ «»αÑñѽѡ¿∩ Æ1. ìá»α¿¼Ñα: ¼ÑΓ«ñπ FieldCopy ¼«ªÑΓ
  560. íδΓ∞ »ÑαÑñá¡ φ¬ºÑ¼»½∩α «Γ Field,  StrField,  NumField, ZipField ¿½¿
  561. ½εí«⌐ ñαπú«⌐ φ¬ºÑ¼»½∩α, »«α«ªñÑ¡¡δ⌐ «Γ Field.
  562.  
  563.  
  564.                ìÑΓ¿»¿α«óá¡¡δÑ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ.
  565.  
  566.      è«úñá Σ«α¼á½∞¡δ⌐      »áαá¼ÑΓα     ∩ó½∩ÑΓß∩     ¡ÑΓ¿»¿α«óá¡¡δ¼
  567. »áαá¼ÑΓα«¼-»ÑαѼѡ¡«⌐,  ß««ΓóÑΓßΓóπεΘ¿⌐ Σá¬Γ¿τÑ߬¿⌐ »áαá¼ÑΓα  ¼«ªÑΓ
  568. íδΓ∞ ½εí«⌐ ßß佬«⌐ ¡á »ÑαѼѡ¡πε ¡Ñºáó¿ß¿¼« «Γ ÑÑ Γ¿»á.
  569.      é¡πΓα¿ »α«µÑñπαδ       ¿½¿       Σπ¡¬µ¿¿        ¡ÑΓ¿»¿α«óá¡¡δ⌐
  570. »áαá¼ÑΓα-»ÑαѼѡ¡á∩  ¡Ñ  ¿¼ÑÑΓ  Γ¿»á,  Γ«  ÑßΓ∞  «¡  ¡Ñ ß«ó¼ÑßΓ¿¼ ß
  571. »ÑαѼѡ¡δ¼¿ óßÑσ ñαπú¿σ Γ¿»«ó,  Ñß½¿ Ñ¼π ¡Ñ  »α¿ßó«Ñ¡  «»αÑñѽѡ¡δ⌐
  572. Γ¿» ß »«¼«Θ∞ε »α¿óÑñÑ¡¿∩ Γ¿»á »ÑαѼѡ¡«⌐.
  573.      Åα¿óÑñѼ »α¿¼Ñα ¡ÑΓ¿»¿α«óá¡¡δσ »áαá¼ÑΓα«ó-»ÑαѼѡ¡δσ:
  574.  
  575.      function Equal (var Source, Dest; Size: Word): Boolean;
  576.      type
  577.         Bytes = array [0 .. MaxInt] of Byte;
  578.      var
  579.         N: Integer;
  580.      begin
  581.         N := 0;
  582.         while (N < Size) and (Bytes(Dest)[N] <>
  583.            Bytes(Source)[N]) do Inc(N);
  584.         Equal := N * Size;
  585.      end;
  586.  
  587.      ¥Γπ Σπ¡¬µ¿ε  ¼«ª¡«  ¿ß»«½∞º«óáΓ∞  ñ½∩  ßαáó¡Ñ¡¿∩  ½εíδσ   ñóπσ
  588. »ÑαѼѡ¡δσ ½εí«ú« αẼÑαá. ìá»α¿¼Ñα, ñá¡« «íΩ∩ó½Ñ¡¿Ñ:
  589.  
  590.      type
  591.         Vector = array[1 .. 10] of Integer;
  592.         Point = record
  593.            X, Y: Integer;
  594.         end;
  595.      var
  596.         Vec1, Vec2: Vector;
  597.         N: Integer;
  598.         P: Point;
  599.  
  600.      ºáΓѼ ó맮óδ Σπ¡¬µ¿¿:
  601.  
  602.      Equal(Vec1, Vec2, SizeOf(Vector))
  603.      Equal(Vec1, Vec2, SizeOf(Integer) * N)
  604.      Equal(Vec[1], Vec1[6], SizeOf(integer) * 5)
  605.      Equal(Vec1[1], P, Y)
  606.  
  607.      æαáó¡¿óáÑΓß∩ Vec1 c Vec2, ßαáó¡¿óáεΓß∩ »ÑαóδÑ N ¬«¼»«¡Ñ¡Γ Vec1
  608. ß  »Ñαó묨 N ¬«¼»«¡Ñ¡ΓἿ Vec2,  ßαáó¡¿óáεΓß∩ »ÑαóδÑ »∩Γ∞ ¬«¼»«¡Ñ¡Γ
  609. Vec1 ß »«ß½Ññ¡¿¼¿ »∩Γ∞ε ¬«¼»«¡Ñ¡ΓἿ Vec1,  ßαáó¡¿óáεΓß∩ Vec1[1]  ß
  610. P.X ¿ Vec1[2] ß P.Y.
  611.  
  612.  
  613.                          Åα«µÑñπα¡δÑ Γ¿»δ.
  614.  
  615.      é ¬áτÑßΓóÑ  αáßΦ¿αÑ¡¿∩  ßΓá¡ñáαΓ¡«ú«  Åá߬á½∩,  Turbo   Pascal
  616. »«ºó«½∩ÑΓ  αáßß¼áΓα¿óáΓ∞  »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ ¬á¬ «íΩѬΓδ,  ¬«Γ«αδÑ
  617. ¼«ª¡« »α¿ßó«¿Γ∞ »ÑαѼѡ¡δ¼ ¿ ¬«Γ«αδÑ  ¼«úπΓ  óδßΓπ»áΓ∞  ó  ¬áτÑßΓóÑ
  618. »áαá¼ÑΓα«ó; »α«µÑñπα¡δÑ Γ¿»δ ñѽáεΓ φΓ« ó«º¼«ª¡δ¼ (»α«µÑñπα¡δÑ Γ¿»δ
  619. «»αÑñѽѡδ ó ú½áóÑ 3 "Æ¿»δ").
  620.  
  621.  
  622.                       Åα«µÑñπα¡δÑ »ÑαѼѡ¡δÑ.
  623.  
  624.      èá¬ Γ«½∞¬«   »α«µÑñπα¡δ⌐   Γ¿»   «»αÑñѽѡ,   ¼«ª¡«  «íΩ∩ó½∩Γ∞
  625. »ÑαѼѡ¡δÑ    φΓ«ú«    Γ¿»á.    Æá¬¿Ñ     »ÑαѼѡ¡δÑ     ¡áºδóáεΓß∩
  626. »α«µÑñπα¡δ¼¿ »ÑαѼѡ¡δ¼¿.    ìá»α¿¼Ñα,    ¿ß»«½∞ºπ∩   ñá¡¡«Ñ   óδΦÑ
  627. «íΩ∩ó½Ñ¡¿Ñ Γ¿»á, ¼«ª¡« «»¿ßáΓ∞ ß½ÑñπεΘ¿Ñ »ÑαѼѡ¡δÑ:
  628.  
  629.      var
  630.         P: SwapProc;
  631.         F: MathFunc;
  632.  
  633.      Å«ñ«í¡« Γ«¼π,  ¬á¬ µÑ½«τ¿ß½Ñ¡¡«⌐  »ÑαѼѡ¡«⌐  ¼«ª¡«  »α¿ßó«¿Γ∞
  634. µÑ½«τ¿ß½Ñ¡¡«Ñ  º¡áτÑ¡¿Ñ,  »α«µÑñπα¡«⌐  »ÑαѼѡ¡«⌐  ¼«ª¡«  »α¿ßó«¿Γ∞
  635. »α«µÑñπα¡«Ñ º¡áτÑ¡¿Ñ.
  636.      Æá¬«Ñ º¡áτÑ¡¿Ñ     ¼«ªÑΓ,     ¬«¡Ñτ¡«,     íδΓ∞    ¿    ñαπú«⌐
  637. »α«µÑñπα¡«⌐ »ÑαѼѡ¡«⌐,  ¡«  ¼«ªÑΓ  ΓᬪѠ ¿  íδΓ∞  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼
  638. »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿.  é  φΓ«⌐ ß¿Γπᵿ¿ «íΩ∩ó½Ñ¡¿Ñ »α«µÑñπαδ ¿½¿
  639. Σπ¡¬µ¿¿ ¼«ª¡« αáßß¼áΓα¿óáΓ∞ ¬á¬ «ß«íδ⌐  ó¿ñ  «íΩ∩ó½Ñ¡¿∩  ¬«¡ßΓá¡Γδ,
  640. º¡áτÑ¡¿Ñ¼  ¬«Γ«α«⌐ ∩ó½∩ÑΓß∩ »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩.  ìá»α¿¼Ñα,  ñá¡δ
  641. ß½ÑñπεΘ¿Ñ «íΩ∩ó½Ñ¡¿∩ »α«µÑñπα ¿ Σπ¡¬µ¿⌐:
  642.  
  643.      {$F+}
  644.      procedure Swap(var A, B: Integer);
  645.      var
  646.         Temp: Integer;
  647.      begin
  648.         Temp := A;
  649.         A := B;
  650.         B := Temp;
  651.      end;
  652.  
  653.      function Tan(Angle: Real): Real;
  654.      begin
  655.         Tan := sin(Angle)/cos(Angle);
  656.      end.
  657.      {$F-}
  658.  
  659.      ÅÑαѼѡ¡δ¼ P   ¿   F,   «íΩ∩ó½Ñ¡¡δ¼  »αѪñÑ,  ¼«ª¡«  »α¿ßó«¿Γ∞
  660. º¡áτÑ¡¿∩:
  661.  
  662.      P := Swap;  T := Tan;
  663.  
  664.      æ«ú½áß¡« φΓ¿¼ »α¿ßóá¿óá¡¿∩¼, ó맮ó P(I, J) φ¬ó¿óá½Ñ¡ΓÑ¡ ó맮óπ
  665. Swap(I, J), á ó맮ó F(X) φ¬ó¿óá½Ñ¡ΓÑ¡ ó맮óπ Tan(X).
  666.      èᬠ¿  ó«  óßÑσ  ñαπú¿σ  «»Ñαᵿ∩σ »α¿ßóá¿óá¡¿∩,  »ÑαѼѡ¡á∩ ó
  667. ½Ñó«⌐ τáßΓ¿ ¿ »ÑαѼѡ¡á∩  ó  »αáó«⌐  τáßΓ¿  «»ÑαáΓ«αá  »α¿ßóá¿óá¡¿∩
  668. ñ«½ª¡δ íδΓ∞ ß«ó¼ÑßΓ¿¼δ¼¿ »« »α¿ßóá¿óá¡¿ε.  ä½∩ Γ«ú« τΓ«íδ ßτ¿ΓáΓ∞ß∩
  669. ß«ó¼ÑßΓ¿¼δ¼¿ »«   »α¿ßóá¿óá¡¿ε,   »α«µÑñπα¡δÑ   Γ¿»δ  ñ«½ª¡δ  ¿¼ÑΓ∞
  670. «ñ¿¡á¬«ó«Ñ τ¿ß½« »áαá¼ÑΓα«ó,  »áαá¼ÑΓαδ ó ß««ΓóÑΓßΓóπεΘ¿σ  »«º¿µ¿∩σ
  671. ñ«½ª¡δ íδΓ∞ Γ«ªñÑßΓóÑ¡¡δσ Γ¿»«ó;  ¡á¬«¡Ñµ, Γ¿»δ αѺπ½∞ΓáΓ«ó Σπ¡¬µ¿⌐
  672. ñ«½ª¡δ íδΓ∞ ¿ñÑ¡Γ¿τ¡δ.
  673.      èᬠ«Γ¼ÑτÑ¡« óδΦÑ,  ¡áºóá¡¿∩  »áαá¼ÑΓα«ó  ¡Ñ  ¿¼ÑεΓ  º¡áτÑ¡¿∩,
  674. ¬«úñá »α«óÑα∩ÑΓß∩ ß«ó¼ÑßΓ¿¼«ßΓ∞ Γ¿»á »α«µÑñπαδ.
  675.      ä«»«½¡¿Γѽ∞¡« ¬ ß«ó¼ÑßΓ¿¼«ßΓ¿ Γ¿»«ó,   »α«µÑñπαá  ¿½¿  Σπ¡¬µ¿∩
  676. ñ«½ª¡δ πñ«ó½ÑΓó«α∩Γ∞ ß½ÑñπεΘ¿¼ ΓαÑí«óá¡¿∩¼,  Ñß½¿ «¡¿ »α¿ßóá¿óáεΓß∩
  677. »α«µÑñπα¡«⌐ »ÑαѼѡ¡«⌐.
  678.  
  679.      - Ä¡á ñ«½ª¡á íδΓ∞ «íΩ∩ó½Ñ¡á ß ñ¿αÑ¬Γ¿ó«⌐ far ¿ «Γ¬«¼»¿½¿α«óá¡á
  680.        ó ß«ßΓ«∩¡¿¿ {$F+}
  681.      - Ä¡á ¡Ñ ñ«½ª¡á íδΓ∞
  682.          - ßΓá¡ñáαΓ¡«⌐ »α«µÑñπα«⌐ ¿½¿ Σπ¬µ¿Ñ⌐
  683.          - ó½«ªÑ¡¡«⌐ »α«µÑñπα«⌐ ¿½¿ Σπ¡¬µ¿Ñ⌐
  684.          - inline  »α«µÑñπα«⌐  ¿½¿ Σπ¡¬µ¿Ñ⌐
  685.          - interrupt »α«µÑñπα«⌐  ¿½¿  Σπ¡¬µ¿Ñ⌐
  686.  
  687.      æΓá¡ñáαΓ¡δÑ »α«µÑñπαδ  ¿ Σπ¡¬µ¿¿,  ΓᬿѠ¬á¬ WriteLn,  ReadLn,
  688. Chr,  ¿ Ord, «íΩ∩ó½Ñ¡δ ó ¼«ñπ½Ñ System. ä½∩ Γ«ú« τΓ«íδ ¿ß»«½∞º«óáΓ∞
  689. ßΓá¡ñáαΓ¡πε »α«µÑñπαπ  ¿½¿  Σπ¡¬µ¿ε  ß  »α«µÑñπα¡«⌐ »ÑαѼѡ¡«⌐,  éδ
  690. ñ«½ª¡δ «¬απª¿Γ∞ ÑÑ "«í«½«τ¬«⌐". ìá»α¿¼Ñα, ºáñá¡ Γ¿» »α«µÑñπαδ
  691.  
  692.      type
  693.         IntProc = procedure(N: Integer);
  694.  
  695.      ñá½ÑÑ »α¿óÑñѡᠠ߫ó¼ÑßΓ¿¼á∩  »«  »α¿ßóá¿óá¡¿ε  »α«µÑñπαá  ñ½∩
  696. óδó«ñᠵѽ«ú« τ¿ß½á:
  697.  
  698.      procedure WriteInt(Number: Integer); far;
  699.      begin
  700.         write(Number);
  701.      end;
  702.  
  703.      é½«ªÑ¡¡δÑ »α«µÑñπαδ   ¿½¿   Σπ¡¬µ¿¿   ¡Ñ½∞º∩   ¿ß»«½∞º«óáΓ∞  ß
  704. »α«µÑñπα¡δ¼¿ »ÑαѼѡ¡δ¼¿.   Åα«µÑñπαá   ¿½¿   Σπ¡¬µ¿∩    ¡áºδóáÑΓß∩
  705. 󽫪ѡ¡«⌐,  Ñß½¿ «¡á «íΩ∩ó½Ñ¡á ó¡πΓα¿ ñαπú«⌐ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿.
  706. é ß½ÑñπεΘѼ »α¿¼ÑαÑ Inner  ó½«ªÑ¡á  ó  Outer,  ß½Ññ«óáΓѽ∞¡«  Inner
  707. ¡Ñ½∞º∩ »α¿ßó«¿Γ∞ »α«µÑñπα¡«⌐ »ÑαѼѡ¡«⌐.
  708.  
  709.      program Nested;
  710.      procedure Outer;
  711.      procedure Inner;
  712.      begin
  713.         WriteLn('Inner is nested');
  714.      end;
  715.      begin
  716.         Inner;
  717.      end;
  718.      begin
  719.         Outer;
  720.      end.
  721.  
  722.      êß»«½∞º«óá¡¿Ñ »α«µÑñπα¡«ú«  Γ¿»á  ¡Ñ  «úαá¡¿τ¿óáÑΓß∩  »α«ßΓ묨
  723. »α«µÑñπα¡δ¼¿   »ÑαѼѡ¡δ¼¿.   Æá¬   ªÑ  ¬á¬  ¿  ½εí«⌐  ñαπú«⌐  Γ¿»,
  724. »α«µÑñπα¡δ⌐ Γ¿»  ¼«ªÑΓ  »α¿ßπΓßΓó«óáΓ∞  ó  «íΩ∩ó½Ñ¡¿¿  ßΓαπ¬Γπα¡«ú«
  725. Γ¿»á; »α¿¼Ñα«¼ ñ½∩ φΓ«ú« ¼«ªÑΓ ß½πª¿Γ∞ ß½ÑñπεΘÑÑ «íΩ∩ó½Ñ¡¿Ñ :
  726.  
  727.      type
  728.         GoToProc = procedure(X, Y: Integer);
  729.         ProcList = array[1..10] of GoToProc;
  730.         WindowPtr = ^WindowRec;
  731.         Window = record
  732.            Next: WindowPtr;
  733.            Header: String[31];
  734.            Top, Left, Bottom, Right: integer;
  735.            SetCursor: GoToProc;
  736.         end;
  737.      var
  738.         P : ProcList;
  739.         W : windowPtr;
  740.  
  741.      æ«ú½áß¡« φΓ«¼π   «íΩ∩ó½Ñ¡¿ε,   ß½ÑñπεΘ¿Ñ   «»ÑαáΓ«αδ  ∩ó½∩εΓß∩
  742. ñÑ⌐ßΓó¿Γѽ∞¡δ¼¿ ó맮óἿ »α«µÑñπαδ:
  743.  
  744.      P[3] (1,1);
  745.      W^.SetCursor(10,10);
  746.  
  747.      è«úñá »α«µÑñπα¡«Ñ     º¡áτÑ¡¿Ñ    »α¿ßóá¿óáÑΓß∩    »α«µÑñπα¡«⌐
  748. »ÑαѼѡ¡«⌐, ¬«Γ«αá∩   Σ¿º¿τÑ߬¿   »αÑñßΓáó½∩ÑΓ   áñαÑß   »α«µÑñπαδ,
  749. Γ« «¡« ß«σαá¡∩ÑΓß∩ ó »ÑαѼѡ¡«⌐. öá¬Γ¿τÑ߬¿, »α«µÑñπα¡á∩ »ÑαѼѡ¡á∩
  750. ñÑ⌐ßΓóπÑΓ ¬á¬ »ÑαѼѡ¡á∩-π¬áºáΓѽ∞, ºá ¿ß¬½ετÑ¡¿Ñ¼ Γ«ú«, τΓ« ó¼ÑßΓ«
  751. π¬áºá¡¿∩ ¡á ñá¡¡δÑ,  «¡á π¬áºδóáÑΓ ¡á »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε.  èᬠ¿
  752. π¬áºáΓѽ∞,  »α«µÑñπα¡á∩  »ÑαѼѡ¡á∩  ºá¡¿¼áÑΓ  4 íá⌐Γá (ñóá ß½«óá),
  753. ß«ñÑαªáΘ¿Ñ áñαÑß ó »á¼∩Γ¿.  ÅÑαó«Ñ ß½«ó«  σαá¡¿Γ  ß¼ÑΘÑ¡¿Ñ  áñαÑßá,
  754. óΓ«α«Ñ ßÑú¼Ñ¡Γ¡πε τáßΓ∞.
  755.  
  756.  
  757.                    Åáαá¼ÑΓαδ »α«µÑñπα¡«ú« Γ¿»á.
  758.  
  759.      Æá¬ ¬á¬ »α«µÑñπα¡δÑ Γ¿»δ ñ«»πßΓ¿¼δ ó ½εí«¼ ¬«¡ΓѬßΓÑ, Γ« ¼«ª¡«
  760. «íΩ∩ó¿Γ∞ »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿,  »áαá¼ÑΓαἿ   ¬«Γ«αδσ   ∩ó½∩εΓß∩
  761. »α«µÑñπαδ ½¿ Σπ¡¬µ¿¿.
  762.      æ½ÑñπεΘá∩ »α«úαἼᠠñѼ«¡ßΓα¿απÑΓ   ¿ß»«½∞º«óá¡¿Ñ   »áαá¼ÑΓαá
  763. »α«µÑñπα¡«ú«  Γ¿»á  ñ½∩ óδó«ñá ΓαÑσ Γáí½¿µ αẽ¿τ¡δσ áα¿Σ¼ÑΓ¿τÑ߬¿σ
  764. Σπ¡¬µ¿⌐:
  765.  
  766.      program Tables;
  767.      type
  768.         Func = function(X, Y: Integer): Integer;
  769.      {$F+}
  770.      function Add(X, Y: Integer): Integer;
  771.      begin
  772.         Add := X + Y;
  773.      end;
  774.      Function Multiply(X, Y: Integer): Integer;
  775.      begin
  776.         Multiply := X * Y;
  777.      end;
  778.      function Funny(X, Y: Integer): Integer;
  779.      begin
  780.         Funny := (X + Y) * (X - Y);
  781.      end;
  782.      {$F-}
  783.      procedure PrintTable(W, H: Integer; Operation: Func);
  784.      var
  785.         X, Y: Integer;
  786.      begin
  787.         for Y := 1 to H do
  788.         begin
  789.            for X := 1 to H do Write(Operation(X,Y ) : 5);
  790.            Writeln;
  791.         end;
  792.         Writeln;
  793.      end;
  794.      begin
  795.         PrintTable(10, 10, Add);
  796.         PrintTable(10, 10, Multiply);
  797.         PrintTable(10, 10, Funny);
  798.      end.
  799.  
  800.      Åα¿ óδ»«½¡Ñ¡¿¿¿ »α«úαá¼¼á Tables óδó«ñ¿Γ Γα¿  Γáí½¿µδ.  éΓ«αá∩
  801. Γáí½¿µá íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼ :
  802.  
  803.      1   2   3   4   5   6   7   8   9  10
  804.      2   4   6   8  10  12  14  16  18  20
  805.      3   6   9  12  15  18  21  24  27  30
  806.      4   8  12  16  20  24  28  32  36  40
  807.      5  10  15  20  25  30  35  40  45  50
  808.      6  12  18  24  30  36  42  48  54  60
  809.      7  14  21  28  35  42  49  56  63  70
  810.      8  16  24  32  40  48  56  64  72  80
  811.      9  18  27  36  45  54  63  72  81  90
  812.     10  20  30  40  50  60  70  80  90 100
  813.  
  814.      Åáαá¼ÑΓαδ »α«µÑñπα¡«ú«  Γ¿»á  «ß«íÑ¡¡«  »«½Ñº¡δ  ó  ß¿Γπᵿ∩σ,
  815. ¬«úñá   ¡áñ  ¼¡«ªÑßΓó«¼  »α«µÑñπα  ¿½¿  Σπ¡¬µ¿⌐  óδ»«½¡∩εΓß∩  «íΘ¿Ñ
  816. ñÑ⌐ßΓó¿∩. é ¡áΦѼ ß½πτáÑ »α«µÑñπαá  PrintTable  »αÑñßΓáó½∩ÑΓ  «íΘÑÑ
  817. ñÑ⌐ßΓó¿Ñ, óδ»«½¡∩Ѽ«Ñ ¡áñ Σπ¡¬µ¿∩¼¿ Add, Multiply ¿ Funny.
  818.      àß½¿ »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩ »ÑαÑñáÑΓß∩ ¬á¬ »áαá¼ÑΓα, «¡á ñ«½ª¡á
  819. »«ñτ¿¡∩Γ∞ß∩   ΓѼ   ªÑ   »αáó¿½á¼  ß«ó¼ÑßΓ¿¼«ßΓ¿  Γ¿»«ó,  τΓ«  ¿  ó
  820. »α¿ßóá¿óá¡¿¿.  æ½Ññ«óáΓѽ∞¡«,  ΓᬿѠ»α«µÑñπαδ ¿½¿  Σπ¡¬µ¿¿  ñ«½ª¡δ
  821. íδΓ∞ «íΩ∩ó½Ñ¡δ   ß   ñ¿αÑ¬Γ¿ó«⌐  far,  ¡Ñ  ¼«úπΓ  íδΓ∞  óßΓα«Ñ¡¡δ¼¿
  822. »α«úαἼἿ, ¡Ñ ¼«úπΓ íδΓ∞ ó½«ªÑ¡¡δ¼¿,  «¡¿ ¡Ñ ¼«úπΓ íδΓ∞ «íΩ∩ó½Ñ¡δ
  823. ß inline ¿½¿ interrupt áΓα¿íπΓἿ.
  824.