home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / k-r.doc / c_4.doc < prev    next >
Encoding:
Text File  |  1988-11-18  |  49.7 KB  |  1,324 lines

  1.                            - 73 -
  2.      
  3.      4. öπ¡¬µ¿¿ ¿ ßΓαπ¬Γπαá »α«úαá¼¼.
  4.  
  5.      öπ¡¬µ¿¿ αáºí¿óáεΓ í«½∞Φ¿Ñ óδτ¿ß½¿Γѽ∞¡δÑ ºáñáτ¿ ¡á ¼á-
  6.  ½Ñ¡∞¬¿Ñ »«ñºáñáτ¿ ¿ »«ºó«½∩εΓ ¿ß»«½∞º«óáΓ∞ ó αáí«ΓÑ Γ«, τΓ«
  7.  πªÑ ßñѽᡫ ñαπú¿¼¿, á ¡Ñ ¡áτ¿¡áΓ∞ ¬áªñδ⌐ αẠߠ»πßΓ«ú« ¼Ñß-
  8.  Γá. æ««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿ τáßΓ« ¼«úπΓ ß¬αδóáΓ∞ ó ßÑíÑ ñÑ-
  9.  Γ὿ »α«ó«ñ¿¼δσ ó αạδσ τáßΓ∩σ »α«úαá¼¼δ «»Ñαᵿ⌐, º¡áΓ∞
  10.  ¬«Γ«αδÑ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿, »α«∩ß¡∩∩ ΓѼ ßá¼δ¼ óßε »α«úαá¼¼π,
  11.  ¬á¬ µÑ½«Ñ, ¿ «í½Ñúτá∩ ¼πτÑ¡¿∩ »α¿ ó¡ÑßÑ¡¿¿ ¿º¼Ñ¡Ñ¡¿⌐.
  12.      ƒºδ¬ "C" αáºαáíáΓδóá½ß∩ ß« ßΓαѼ½Ñ¡¿Ñ¼ ßñѽáΓ∞ Σπ¡¬µ¿¿
  13.  φΣΣÑ¬Γ¿ó¡δ¼¿ ¿ πñ«í¡δ¼¿ ñ½∩ ¿ß»«½∞º«óá¡¿∩; "C"-»α«úαá¼¼δ
  14.  «íδτ¡« ß«ßΓ«∩Γ ¿º í«½∞Φ«ú« τ¿ß½á ¼á½Ñ¡∞¬¿σ Σπ¡¬µ¿⌐, á ¡Ñ ¿º
  15.  ¡Ñ߬«½∞¬¿σ í«½∞Φ¿σ. Åα«úαἼᠼ«ªÑΓ αẼÑΘáΓ∞ß∩ ó «ñ¡«¼ ¿½¿
  16.  ¡Ñ߬«½∞¬¿σ ¿ßσ«ñ¡δσ Σá⌐½áσ ½εíδ¼ πñ«í¡δ¼ «íαẫ¼; ¿ßσ«ñ¡δÑ
  17.  Σá⌐½δ ¼«úπΓ ¬«¼»¿½¿α«óáΓ∞ß∩ «Γñѽ∞¡« ¿ ºáúαπªáΓ∞ß∩ ó¼ÑßΓÑ
  18.  ¡áα∩ñπ ß« ß¬«¼»¿½¿α«óá¡¡δ¼¿ αá¡ÑÑ Σπ¡¬µ¿∩¼¿ ¿º í¿í½¿«ΓѬ. îδ
  19.  ºñÑß∞ ¡Ñ íπñѼ óñáóáΓ∞ß∩ ó ñÑΓ὿ φΓ«ú« »α«µÑßßá, »«ß¬«½∞¬π
  20.  «¡¿ ºáó¿ß∩Γ «Γ ¿ß»«½∞ºπѼ«⌐ ß¿ßΓѼδ.
  21.      ü«½∞Φ¿¡ßΓó« »α«úαá¼¼¿ßΓ«ó σ«α«Φ« º¡á¬«¼δ ß "í¿í½¿«ΓÑτ¡δ-
  22.  ¼¿" Σπ¡¬µ¿∩¼¿ ñ½∩ óó«ñá ¿ óδó«ñá /GETCHAR , PUTCHAR/ ¿ ñ½∩
  23.  τ¿ß½Ñ¡¡δσ αáßτÑΓ«ó /SIN, COS, SQRT/. é φΓ«⌐ ú½áóÑ ¼δ ß««íΘ¿¼
  24.  í«½∞ΦÑ « ¡á»¿ßá¡¿¿ ¡«óδσ Σπ¡¬µ¿⌐.
  25.  
  26.       4.1. Äß¡«ó¡δÑ ßóÑñÑ¡¿∩.
  27.  
  28.      ä½∩ ¡áτá½á ñáóá⌐ΓÑ αáºαáí«ΓáѼ ¿ ß«ßΓáó¿¼ »α«úαá¼¼π »Ñ-
  29.  τáΓ¿ ¬áªñ«⌐ ßΓ᫬¿ óó«ñá, ¬«Γ«αá∩ ß«ñÑαª¿Γ «»αÑñѽѡ¡πε ¬«¼-
  30.  í¿¡áµ¿ε ß¿¼ó«½«ó. /¥Γ« - ß»Ñµ¿á½∞¡δ⌐ ß½πτá⌐ πΓ¿½¿Γδ GREP
  31.  ß¿ßΓѼδ "UNIX"/. ìá»α¿¼Ñα, »α¿ »«¿ß¬Ñ ¬«¼í¿¡áµ¿¿ "THE" ó ¡á-
  32.  í«αÑ ßΓ᫬
  33.                                                       
  34.      NOW IS THE TIME
  35.      FOR ALL GOOD
  36.      MEN TO COME TO THE AID
  37.      OF THEIR PARTY
  38.  ó ¬áτÑßΓóÑ óδσ«ñá »«½πτ¿¼
  39.  
  40.      NOW IS THE TIME
  41.      MEN TO COME TO THE AID
  42.      OF THEIR PARTY
  43.  
  44.  
  45.  «ß¡«ó¡á∩ ßσѼá óδ»«½¡Ñ¡¿∩ ºáñá¡¿∩ τÑΓ¬« αáºñѽ∩ÑΓß∩ ¡á Γα¿
  46.  τáßΓ¿:
  47.  
  48.     WHILE (¿¼ÑÑΓß∩ ÑΘÑ ßΓ᫬á)
  49.     IF (ßΓ᫬á ß«ñÑαª¿Γ ¡πª¡πε ¬«¼í¿¡áµ¿ε)
  50.           óδó«ñ φΓ«⌐ ßΓ᫬¿
  51.            
  52.  
  53.                            - 74 -
  54.  
  55.      è«¡Ñτ¡«, ó«º¼«ª¡« ºá»α«úαá¼¼¿α«óáΓ∞ óßÑ ñÑ⌐ßΓó¿∩ ó ó¿ñÑ
  56.  «ñ¡«⌐ «ß¡«ó¡«⌐ »α«µÑñπαδ, ¡« ½πτΦÑ ¿ß»«½∞º«óáΓ∞ ÑßΓÑßΓóÑ¡¡πε
  57.  ßΓαπ¬Γπαπ ºáñáτ¿ ¿ »αÑñßΓáó¿Γ∞ ¬áªñπε τáßΓ∞ ó ó¿ñÑ «Γñѽ∞¡«⌐
  58.  Σπ¡¬µ¿¿. æ ΓαѼ∩ ¼á½Ñ¡∞¬¿¼¿ ¬π߬Ἷ ½ÑúτÑ ¿¼ÑΓ∞ ñѽ«, τѼ ß
  59.  «ñ¡¿¼ í«½∞Φ¿¼, »«Γ«¼π τΓ« «Γñѽ∞¡δÑ ¡Ñ «Γ¡«ß∩Θ¿Ñß∩ ¬ ßπΘÑßΓ-
  60.  óπ ñѽá ñÑΓ὿ ¼«ª¡« ó¬½ετ¿Γ∞ ó Σπ¡¬µ¿¿ ¿ π¼Ñ¡∞Φ¿Γ∞ ó«º¼«ª-
  61.  ¡«ßΓ∞ ¡ÑªÑ½áΓѽ∞¡δσ óºá¿¼«ñÑ⌐ßΓó¿⌐. èα«¼Ñ Γ«ú«, φΓ¿ ¬π߬¿
  62.  ¼«úπΓ «¬áºáΓ∞ß∩ »«½Ñº¡δ¼¿ ßἿ »« ßÑíÑ.
  63.  
  64.      "Å«¬á ¿¼ÑÑΓß∩ ÑΘÑ ßΓ᫬á" - φΓ« GETLINE, Σπ¡¬µ¿∩, ¬«Γ«-
  65.  απε ¼δ ºá»α«úαá¼¼¿α«ó὿ ó ú½áóÑ 1, á "óδó«ñ φΓ«⌐ ßΓ᫬¿" -
  66.  φΓ« Σπ¡¬µ¿∩ PRINTF, ¬«Γ«απε πªÑ ¬Γ«-Γ« »«ñú«Γ«ó¿½ ñ½∩ ¡áß.
  67.  ¥Γ« º¡áτ¿Γ, τΓ« ¡á¼ «ßΓὫß∞ Γ«½∞¬« ¡á»¿ßáΓ∞ »α«µÑñπαπ ñ½∩
  68.  «»αÑñѽѡ¿∩, ß«ñÑαª¿Γ ½¿ ßΓ᫬á ñá¡¡πε ¬«¼í¿¡áµ¿ε ß¿¼ó«½«ó
  69.  ¿½¿ ¡ÑΓ. îδ ¼«ªÑ¼ αÑΦ¿Γ∞ φΓπ »α«í½Ñ¼π, »«ºá¿¼ßΓó«óáó αáºαá-
  70.  í«Γ¬π ¿º PL/1: Σπ¡¬µ¿∩ INDEX(S,Γ) ó«ºóαáΘáÑΓ »«º¿µ¿ε, ¿½¿
  71.  ¿¡ñѬß, ßΓ᫬¿ S, úñÑ ¡áτ¿¡áÑΓß∩ ßΓ᫬á T, ¿ -1, Ñß½¿ S ¡Ñ
  72.  ß«ñÑαª¿Γ Γ . é ¬áτÑßΓóÑ ¡áτá½∞¡«⌐ »«º¿µ¿¿ ¼δ ¿ß»«½∞ºπѼ 0, á
  73.  ¡Ñ 1, »«Γ«¼π τΓ« ó ∩ºδ¬Ñ "C" ¼áßß¿óδ ¡áτ¿¡áεΓß∩ ß »«º¿µ¿¿
  74.  ¡π½∞. è«úñá ¡á¼ ó ñá½∞¡Ñ⌐ΦѼ »«¡áñ«í¿Γß∩ »α«óÑα∩Γ∞ ¡á ß«ó»á-
  75.  ñÑ¡¿Ñ í«½ÑÑ ß½«ª¡δÑ ¬«¡ßΓαπ¬µ¿¿, ¡á¼ »α¿ñÑΓß∩ ºá¼Ñ¡¿Γ∞ Γ«½∞-
  76.  ¬« Σπ¡¬µ¿ε INDEX; «ßΓá½∞¡á∩ τáßΓ∞ »α«úαá¼¼δ «ßΓá¡ÑΓß∩ Γ«⌐ ªÑ
  77.  ßἫ⌐.
  78.      Å«ß½Ñ Γ«ú«, ¬á¬ ¼δ »«ΓαáΓ¿½¿ ßΓ«½∞¬« πß¿½¿⌐ ¡á αáºαáí«Γ-
  79.  ¬π, ¡á»¿ßá¡¿Ñ »α«úαá¼¼δ ó ñÑΓá½∩σ ¡Ñ »αÑñßΓáó½∩ÑΓ ºáΓαπñ¡Ñ-
  80.  ¡¿⌐. ¡¿ªÑ »α¿ó«ñ¿Γß∩ µÑ½¿¬«¼ óß∩ »α«úαá¼¼á, ΓᬠτΓ« óδ ¼«ªÑ-
  81.  ΓÑ ó¿ñÑΓ∞, ¬á¬ ß«Ññ¿¡∩εΓß∩ ó¼ÑßΓÑ «Γñѽ∞¡δÑ τáßΓ¿. è«¼í¿¡á-
  82.  µ¿∩ ß¿¼ó«½«ó, »« ¬«Γ«α«⌐ »α«¿ºó«ñ¿Γß∩ »«¿ß¬, óδßΓπ»áÑΓ »«¬á
  83.  ó ¬áτÑßΓóÑ ß¿¼ó«½∞¡«⌐ ßΓ᫬¿ ó áαúπ¼Ñ¡ΓÑ Σπ¡¬µ¿¿ INDEX, τΓ«
  84.  ¡Ñ ∩ó½∩ÑΓß∩ ßá¼δ¼ «íΘ¿¼ ¼Ñσá¡¿º¼«¼. îδ ß¬«α« óÑα¡Ñ¼ß∩ ¬ «í-
  85.  ßπªñÑ¡¿ε ó«»α«ßá «í ¿¡¿µ¿á½¿ºáµ¿¿ ß¿¼ó«½∞¡δσ ¼áßß¿ó«ó ¿ ó
  86.  ú½áóÑ 5 »«¬áªÑ¼, ¬á¬ ßñѽáΓ∞ ¬«¼í¿¡áµ¿ε ß¿¼ó«½«ó »áαá¼ÑΓα«¼,
  87.  ¬«Γ«α«¼π »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ ó σ«ñÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ.
  88.  Åα«úαá¼¼á ΓᬪѠ߫ñÑαª¿Γ ¡«óδ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ GETLINE; óá¼
  89.  ¼«ªÑΓ «¬áºáΓ∞ß∩ »«½Ñº¡δ¼ ßαáó¡¿Γ∞ Ñú« ß óáα¿á¡Γ«¼ ¿º ú½áóδ
  90.  1.
  91.  
  92.  #DEFINE  MAXLINE  1000
  93.  MAIN()  /* FIND ALL LINES MATCHING A PATTERN */
  94.  {
  95.       CHAR LINE[MAXLINE];
  96.  
  97.       WHILE (GETLINE(LINE, MAXLINE) > 0)
  98.     IF (INDEX(LINE, "THE") >= 0)
  99.        PRINTF("%S", LINE);
  100.   }
  101.       
  102.                            - 75 -
  103.      
  104.      
  105.  GETLINE(S, LIM) /* GET LINE INTO S, RETURN LENGTH *
  106.   CHAR S[];
  107.   INT LIM;
  108.   {
  109.   INT C, I;
  110.  
  111.   I = 0;
  112.  WHILE(--LIM>0 && (C=GETCHAR()) != EOF && C != '\N')
  113.   S[I++] = C;
  114.   IF (C == '\N')
  115.   S[I++] = C;
  116.   S[I] = '\0';
  117.   RETURN(I);
  118.   }
  119.  
  120.   INDEX(S,T) /* RETURN INDEX OF T IN S,-1 IF NONE */
  121.   CHAR S[], T[];
  122.   {
  123.       INT I, J, K;
  124.  
  125.     FOR (I = 0; S[I] != '\0'; I++) {
  126.       FOR(J=I, K=0; T[K] !='\0' && S[J] == T[K]; J++; K++)
  127.      ;
  128.      IF (T[K] == '\0')
  129.        RETURN(I);
  130.       }
  131.       RETURN(-1);
  132.   }
  133.      
  134.  èáªñá∩ Σπ¡¬µ¿∩ ¿¼ÑÑΓ ó¿ñ ¿¼∩ (ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó, Ñß½¿ «¡¿
  135.  ¿¼ÑεΓß∩) «»¿ßá¡¿∩ áαúπ¼Ñ¡Γ«ó, Ñß½¿ «¡¿ ¿¼ÑεΓß∩
  136.  
  137.   {
  138.       «»¿ßá¡¿∩ ¿ «»ÑαáΓ«αδ , Ñß½¿ «¡¿ ¿¼ÑεΓß∩
  139.   }
  140.  
  141.  
  142.        èᬠ¿ π¬áºδóáÑΓß∩, ¡Ñ¬«Γ«αδÑ τáßΓ¿ ¼«úπΓ «ΓßπΓßΓó«-
  143.  óáΓ∞; ¼¿¡¿¼á½∞¡«⌐ Σπ¡¬µ¿Ñ⌐ ∩ó½∩ÑΓß∩
  144.  
  145.  
  146.      DUMMY ()  { }
  147.  
  148.  ¬«Γ«αá∩ ¡Ñ ß«óÑαΦáÑΓ ¡¿¬á¬¿σ ñÑ⌐ßΓó¿⌐.
  149.  
  150.        /Æá¬á∩ ¡¿τÑú« ¡Ñ ñѽáεΘá∩ Σπ¡¬µ¿∩ ¿¡«úñá «¬áºδóáÑΓß∩
  151.  πñ«í¡«⌐ ñ½∩ ß«σαá¡Ñ¡¿∩ ¼ÑßΓá ñ½∩ ñá½∞¡Ñ⌐ΦÑú« αáºó¿Γ¿∩ »α«ú-
  152.  αá¼¼δ/. Ñß½¿ Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ τΓ«-½¿í« «Γ½¿τ¡«Ñ «Γ µÑ½«ú«
  153.  º¡áτÑ¡¿∩, Γ« »ÑαÑñ ÑÑ ¿¼Ñ¡Ñ¼ ¼«ªÑΓ ßΓ«∩Γ∞ π¬áºáΓѽ∞ Γ¿»á;
  154.  φëàó«»α«ß «íßπªñáÑΓß∩ ó ß½ÑñπεΘѼ αáºñѽÑ.
  155.      
  156.                            - 76 -
  157.      
  158.        Åα«úαá¼¼«⌐ ∩ó½∩ÑΓß∩ »α«ßΓ« ¡áí«α «»αÑñѽѡ¿⌐ «Γñѽ∞¡δσ
  159.  Σπ¡¬µ¿⌐. æó∩º∞ ¼Ñªñπ Σπ¡¬µ¿∩¼¿ «ßπΘÑßΓó½∩ÑΓß∩ τÑαѺ áαúπ¼Ñ¡-
  160.  Γδ ¿ ó«ºóαáΘáѼδÑ Σπ¡¬µ¿∩¼¿ º¡áτÑ¡¿∩ /ó φΓ«¼ ß½πτáÑ/; ÑÑ
  161.  ¼«ª¡« ΓᬪѠ«ßπΘÑßΓó½∩Γ∞ τÑαѺ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ. öπ¡¬µ¿¿
  162.  ¼«úπΓ αáß»«½áúáΓ∞ß∩ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ó ½εí«¼ »«α∩ñ¬Ñ, á ßá¼á
  163.  ¿ßσ«ñ¡á∩ »α«úαἼᠼ«ªÑΓ αẼÑΘáΓ∞ß∩ ¡á ¡Ñ߬«½∞¬¿σ Σá⌐½áσ,
  164.  ¡« Γá¬, τΓ«íδ ¡¿ «ñ¡á Σπ¡¬µ¿∩ ¡Ñ αáßΘÑ»½∩½áß∞.
  165.        Ä»ÑαáΓ«α RETURN ß½πª¿Γ ¼Ñσá¡¿º¼«¼ ñ½∩ ó«ºóαáΘÑ¡¿∩ º¡á-
  166.  τÑ¡¿∩ ¿º óδºóá¡¡«⌐ Σπ¡¬µ¿¿ ó Σπ¡¬µ¿ε, ¬«Γ«αá∩ ¬ ¡Ñ⌐ «íαáΓ¿-
  167.  ½áß∞. çá RETURN ¼«ªÑΓ ß½Ññ«óáΓ∞ ½εí«Ñ óδαáªÑ¡¿Ñ:
  168.  
  169.     RETURN (óδαáªÑ¡¿Ñ)
  170.  
  171.        éδºδóáεΘá∩ Σπ¡¬µ¿∩ ¼«ªÑΓ ¿ú¡«α¿α«óáΓ∞ ó«ºóαáΘáѼ«Ñ
  172.  º¡áτÑ¡¿Ñ, Ñß½¿ «¡á φΓ«ú« »«ªÑ½áÑΓ. ü«½ÑÑ Γ«ú«, »«ß½Ñ RETURN
  173.  ¼«ªÑΓ ¡Ñ íδΓ∞ ó««íΘÑ ¡¿¬á¬«ú« óδαáªÑ¡¿∩; ó φΓ«¼ ß½πτáÑ ó óδ-
  174.  ºδóáεΘπε »α«úαá¼¼π ¡Ñ »ÑαÑñáÑΓß∩ ¡¿¬á¬«ú« º¡áτÑ¡¿∩. ô»αáó½Ñ-
  175.  ¡¿Ñ ΓᬪѠó«ºóαáΘÑΓß∩ ó óδºδóáεΘπε »α«úαá¼¼π íѺ »ÑαÑñáτ¿
  176.  ¬á¬«ú«-½¿í« º¡áτÑ¡¿∩ ¿ ó Γ«¼ ß½πτáÑ, ¬«úñá »α¿ óδ»«½¡Ñ¡¿¿ ¼δ
  177.  "»α«ó὿óáѼß∩" ¡á ¬«¡Ñµ Σπ¡¬µ¿¿, ñ«ßΓ¿úá∩ ºá¬αδóáεΘÑ⌐ß∩
  178.  »αáó«⌐ Σ¿úπα¡«⌐ ß¬«í¬¿. E潿 Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ¿º
  179.  «ñ¡«ú« ¼ÑßΓá ¿ ¡Ñ ó«ºóαáΘáÑΓ ¡¿¬á¬«ú« º¡áτÑ¡¿∩ ¿º ñαπú«ú«
  180.  ¼ÑßΓá, φΓ« ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñºá¬«¡¡δ¼, ¡« ¼«ªÑΓ íδΓ∞ »α¿º¡á¬«¼
  181.  ¬á¬¿σ-Γ« ¡Ñ»α¿∩Γ¡«ßΓÑ⌐. é ½εí«¼ ß½πτáÑ "º¡áτÑ¡¿Ñ¼" Σπ¡¬µ¿¿,
  182.  ¬«Γ«αá∩ ¡Ñ ó«ºóαáΘáÑΓ º¡áτÑ¡¿∩, ¡Ñß«¼¡Ñ¡¡« íπñÑΓ ¼πß«α. ÄΓ-
  183.  ½áñ«τ¡á∩ »α«úαá¼¼á LINT »α«óÑα∩ÑΓ ΓᬿѠ«Φ¿í¬¿.
  184.        îÑσá¡¿¬á ¬«¼»¿½∩µ¿¿ ¿ ºáúαπº¬¿ "C"-»α«úαá¼¼, αáß»«½«-
  185.  ªÑ¡¡δσ ó ¡Ñ߬«½∞¬¿σ ¿ßσ«ñ¡δσ Σá⌐½áσ, ¼Ñ¡∩ÑΓß∩ «Γ ß¿ßΓÑ¼δ ¬
  186.  ß¿ßΓѼÑ. é ß¿ßΓѼѠ"UNIX", ¡á»α¿¼Ñα, φΓπ αáí«Γπ óδ»«½¡∩ÑΓ
  187.  ¬«¼á¡ñá 'CC', π»«¼∩¡πΓá∩ ó ú½áóÑ 1. ÅαÑñ»«½«ª¿¼, τΓ« Γα¿
  188.  Σπ¡¬µ¿¿ ¡áσ«ñ∩Γß∩ ó ΓαÑσ αẽ¿τ¡δσ Σá⌐½áσ ß ¿¼Ñ¡á¼¿ MAIN.ß,
  189.  GETLINE.C ¿ INDEX.ß . Æ«úñá ¬«¼á¡ñá
  190.        
  191.     CC MAIN.C GETLINE.C INDEX.C
  192.  
  193.  ¬«¼»¿½¿απÑΓ φΓ¿ Γα¿ Σá⌐½á, »«¼ÑΘáÑΓ »«½πτÑ¡¡δ⌐ ¡áßΓαá¿óáѼδ⌐
  194.  «íΩÑ¬Γ¡δ⌐ ¬«ñ ó Σá⌐½δ MAIN.O, GETLINE.O ¿ INDEX.O ¿ ºáúαπªá-
  195.  ÑΓ ¿σ óßÑσ ó óδ»«½¡∩Ѽδ⌐ Σá⌐½, ¡áºδóáѼδ⌐ A.OUT .
  196.      àß½¿ ¿¼ÑÑΓß∩ ¬á¬á∩-Γ« «Φ¿í¬á, ß¬áªÑ¼ ó MAIN.C, Γ« φΓ«Γ
  197.  Σá⌐½ ¼«ª¡« »ÑαѬ«¼»¿½¿α«óáΓ∞ «Γñѽ∞¡« ¿ ºáúαπº¿Γ∞ ó¼ÑßΓÑ ß
  198.  »αÑñδñπΘ¿¼¿ «íΩÑ¬Γ¡δ¼¿ Σá⌐½á¼¿ »« ¬«¼á¡ñÑ
  199.  
  200.     CC MAIN.C GETLIN.O INDEX.O
  201.  
  202.      è«¼á¡ñá 'CC' ¿ß»«½∞ºπÑΓ ß«ú½áΦÑ¡¿Ñ « ¡á¿¼Ñ¡«óá¡¿¿ ß ".ß"
  203.  ¿ ".«" ñ½∩ Γ«ú«, τΓ«íδ «Γ½¿τ¿Γ∞ ¿ßσ«ñ¡δÑ Σá⌐½δ «Γ «íΩÑ¬Γ¡δσ.
  204.      ô»α᪡ѡ¿Ñ  4-1.
  205.      ----------------
  206.      æ«ßΓáó∞ΓÑ »α«úαá¼¼π ñ½∩ Σπ¡¬µ¿¿ RINDEX(S,T), ¬«Γ«αá∩
  207.  ó«ºóαáΘáÑΓ »«º¿µ¿ε ßἫú« »αáó«ú« óσ«ªñÑ¡¿∩ Γ ó S ¿ -1, Ñß½¿
  208.  S ¡Ñ ß«ñÑαª¿Γ T.
  209.      
  210.                            - 77 -
  211.  
  212.       4.2. öπ¡¬µ¿¿, ó«ºóαáΘáεΘ¿Ñ ¡ÑµÑ½δÑ º¡áτÑ¡¿∩.
  213.  
  214.      ä« ß¿σ »«α ¡¿ «ñ¡á ¿º ¡áΦ¿σ »α«úαá¼¼ ¡Ñ ß«ñÑαªá½á ¬á¬«-
  215.  ú«-½¿í« «»¿ßá¡¿∩ Γ¿»á Σπ¡¬µ¿¿. äѽ« ó Γ«¼, τΓ« »« π¼«½τá¡¿ε
  216.  Σπ¡¬µ¿∩ ¡Ñ∩ó¡« «»¿ßδóáÑΓß∩ ßó«¿¼ »«∩ó½Ñ¡¿Ñ¼ ó óδαáªÑ¡¿¿ ¿½¿
  217.  «»ÑαáΓ«αÑ, ¬á¬, ¡á»α¿¼Ñα, ó
  218.  
  219.   WHILE (GETLINE(LINE, MAXLINE) > 0)
  220.  
  221.      àß½¿ ¡Ñ¬«Γ«α«Ñ ¿¼∩, ¬«Γ«α«Ñ ¡Ñ í佫 «»¿ßá¡« αá¡ÑÑ, »«∩ó-
  222.  ½∩ÑΓß∩ ó óδαáªÑ¡¿¿ ¿ ºá ¡¿¼ ß½ÑñπÑΓ ½Ñóá∩ ¬απú½á∩ ß¬«í¬á, Γ«
  223.  «¡« »« ¬«¡ΓѬßΓπ ßτ¿ΓáÑΓß∩ ¿¼Ñ¡Ñ¼ ¡Ñ¬«Γ«α«⌐ Σπ¡¬µ¿¿. èα«¼Ñ
  224.  Γ«ú«, »« π¼«½τá¡¿ε »αÑñ»«½áúáÑΓß∩, τΓ« φΓá Σπ¡¬µ¿∩ ó«ºóαáΘá-
  225.  ÑΓ º¡áτÑ¡¿Ñ Γ¿»á INT. Æá¬ ¬á¬ ó óδαáªÑ¡¿∩σ CHAR »αÑ«íαáºπÑΓ-
  226.  ß∩ ó INT, Γ« ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ «»¿ßδóáΓ∞ Σπ¡¬µ¿¿, ó«ºóαáΘáε-
  227.  Θ¿Ñ CHAR. ¥Γ¿ »αÑñ»«½«ªÑ¡¿∩ »«¬αδóáεΓ í«½∞Φ¿¡ßΓó« ß½πτáÑó,
  228.  ó¬½ετá∩ óßÑ »α¿óÑñÑ¡¡δÑ ñ« ß¿σ »«α »α¿¼Ñαδ.
  229.      ì« τΓ« »α«¿ßσ«ñ¿Γ, Ñß½¿ Σπ¡¬µ¿∩ ñ«½ª¡á ó«ºóαáΓ¿Γ∞ º¡áτÑ-
  230.  ¡¿Ñ ¬á¬«ú«-Γ« ñαπú«ú« Γ¿»á ? î¡«ú¿Ñ τ¿ß½Ñ¡¡δÑ Σπ¡¬µ¿¿, ΓᬿÑ
  231.  ¬á¬ SQRT, SIN ¿ COS ó«ºóαáΘáεΓ DOUBLE; ñαπú¿Ñ ß»Ñµ¿á½∞¡δÑ
  232.  Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ ñαπú¿σ Γ¿»«ó. ùΓ«íδ »«¬áºáΓ∞,
  233.  ¬á¬ »«ßΓπ»áΓ∞ ó φΓ«¼ ß½πτáÑ, ñáóá⌐ΓÑ ¡á»¿ΦѼ ¿ ¿ß»«½∞ºπѼ
  234.  Σπ¡¬µ¿ε AT«F(S), ¬«Γ«αá∩ »αÑ«íαáºπÑΓ ßΓ᫬π S ó φ¬ó¿óá½Ñ¡Γ-
  235.  ¡«Ñ Ñ⌐ »½áóáεΘÑÑ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿. öπ¡¬µ¿∩ AT«F ∩ó½∩-
  236.  ÑΓß∩ αáßΦ¿αÑ¡¿Ñ¼ áΓ«I, óáα¿á¡Γδ ¬«Γ«α«⌐ ¼δ ¡á»¿ß὿ ó ú½áóáσ
  237.  2 ¿ 3; «¡á «íαáíáΓδóáÑΓ ¡Ñ«í∩ºáΓѽ∞¡« º¡á¬ ¿ ñÑß∩Γ¿τ¡πε Γ«τ-
  238.  ¬π, á ΓᬪѠµÑ½πε ¿ ñα«í¡πε τáßΓ∞, ¬áªñá∩ ¿º ¬«Γ«αδσ ¼«ªÑΓ
  239.  ¬á¬ »α¿ßπΓßΓó«óáΓ∞, Γᬠ¿ «ΓßπΓßΓó«óáΓ∞./φΓá »α«µÑñπαá »αÑ-
  240.  «íαẫóá¡¿∩ óó«ñá ¡Ñ «τÑ¡∞ óδß«¬«ú« ¬áτÑßΓóá; ¿¡áτÑ «¡á íδ
  241.  ºá¡∩½á í«½∞ΦÑ ¼ÑßΓá, τѼ ¡á¼ σ«Γѽ«ß∞ íδ/.
  242.      é«-»Ñαóδσ, ßá¼á AT«F ñ«½ª¡á «»¿ßδóáΓ∞ Γ¿» ó«ºóαáΘáѼ«ú«
  243.  Ñε º¡áτÑ¡¿∩, »«ß¬«½∞¬π «¡ «Γ½¿τÑ¡ «Γ INT. Æá¬ ¬á¬ ó óδαáªÑ-
  244.  ¡¿∩σ Γ¿» FLOAT »αÑ«íαáºπÑΓß∩ ó DOUBLE, Γ« ¡ÑΓ ¡¿¬á¬«ú« ß¼δß-
  245.  ½á ó Γ«¼, τΓ«íδ ATOF ó«ºóαáΘá½á FLOAT; ¼δ ¼«ªÑ¼ ß αáó¡δ¼ πß-
  246.  »Ñσ«¼ ó«ß»«½∞º«óáΓ∞ß∩ ñ«»«½¡¿Γѽ∞¡«⌐ Γ«τ¡«ßΓ∞ε, ΓᬠτΓ« ¼δ
  247.  »«½áúáѼ, τΓ« ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ Γ¿»á DOUBLE. ê¼∩ Γ¿»á
  248.  ñ«½ª¡« ßΓ«∩Γ∞ »ÑαÑñ ¿¼Ñ¡Ñ¼ Σπ¡¬µ¿¿, ¬á¬ »«¬áºδóáÑΓß∩ ¡¿ªÑ:
  249.  
  250.  DOUBLE ATOF(S) /* CONVERT STRING S TO DOUBLE */
  251.  CHAR S[];
  252.  {
  253.    DOUBLE VAL, POWER;
  254.    INT  I, SIGN;
  255.            
  256.                            - 78 -
  257.      
  258.  FOR(I=0; S[I]==' ' \!\! S[I]=='\N' \!\! S[I]=='\T'; I++)
  259.     ;       /* SKIP WHITE SPACE */
  260.    SIGN = 1;
  261.    IF (S[I] == '+' \!\! S[I] == '-')   /* SIGN */
  262.       SIGN = (S[I++] == '+') ? 1 : -1;
  263.    FOR (VAL = 0; S[I] >= '0' && S[I] <= '9'; I++)
  264.       VAL = 10 * VAL + S[I] - '0';
  265.    IF (S[I] == '.')
  266.       I++;
  267.  FOR (POWER = 1; S[I] >= '0' && S[I] <= '9'; I++) {
  268.       VAL = 10 * VAL + S[I] - '0';
  269.       POWER *= 10;
  270.     }
  271.     RETURN(SIGN * VAL / POWER);
  272.  }
  273.      
  274.      éΓ«αδ¼, ¡« ßΓ«½∞ ªÑ ó᪡δ¼, ∩ó½∩ÑΓß∩ Γ«, τΓ« óδºδóáεΘá∩
  275.  Σπ¡¬µ¿∩ ñ«½ª¡á «íΩ∩ó¿Γ∞ « Γ«¼, τΓ« ATOF ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ,
  276.  «Γ½¿τ¡«Ñ «Γ INT Γ¿»á. Æá¬«Ñ «íΩ∩ó½Ñ¡¿Ñ ñѼ«¡ßΓα¿απÑΓß∩ ¡á
  277.  »α¿¼ÑαÑ ß½ÑñπεΘÑú« »α¿¼¿Γ¿ó¡«ú« ¡áßΓ«½∞¡«ú« ¬á½∞¬π½∩Γ«αá
  278.  /Ññóá »α¿ú«ñ¡«ú« ñ½∩ »«ñóÑñÑ¡¿∩ íá½á¡ßá ó τѬ«ó«⌐ ¬¡¿ª¬Ñ/,
  279.  ¬«Γ«αδ⌐ ßτ¿ΓδóáÑΓ »« «ñ¡«¼π τ¿ß½π ¡á ßΓ᫬π, »α¿τѼ φΓ« τ¿ß-
  280.  ½« ¼«ªÑΓ ¿¼ÑΓ∞ º¡á¬, ¿ ß¬½áñδóáÑΓ óßÑ τ¿ß½á, »ÑτáΓá∩ ßπ¼¼π
  281.  »«ß½Ñ ¬áªñ«ú« óó«ñá.
  282.  
  283.  #DEFINE   MAXLINE   100
  284.  MAIN()  /* RUDIMENTARY DESK CALKULATOR */
  285.  {
  286.       DOUBLE SUM, ATOF();
  287.       CHAR LINE[MAXLINE];
  288.  
  289.       SUM = 0;
  290.       WHILE (GETLINE(LINE, MAXLINE) > 0)
  291.     PRINTF("\T%.2F\N",SUM+=ATOF(LINE));
  292.  
  293.  
  294.   Ä¿ßá¡¿Ñ
  295.  
  296.       DOUBLE  SUM, ATOF();
  297.  
  298.  
  299.  ú«ó«α¿Γ, τΓ« SUM ∩ó½∩ÑΓß∩ »ÑαѼѡ¡«⌐ Γ¿»á DOUBLE , ¿ τΓ«
  300.  ATOF ∩ó½∩ÑΓß∩ Σπ¡¬µ¿Ñ⌐, ó«ºóαáΘáεΘÑ⌐ º¡áτÑ¡¿Ñ Γ¿»á DOUBLE .
  301.  ¥Γá ¼¡Ñ¼«¡¿¬á «º¡áτáÑΓ, τΓ« º¡áτÑ¡¿∩¼¿ ¬á¬ SUM, Γᬠ¿
  302.  ATOF(...) ∩ó½∩εΓß∩ »½áóáεΘ¿Ñ τ¿ß½á ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿.
  303.      
  304.                            - 79 -
  305.      
  306.      àß½¿ Σπ¡¬µ¿∩ ATOF ¡Ñ íπñÑΓ «»¿ßá¡á ∩ó¡« ó «í«¿σ ¼ÑßΓáσ,
  307.  Γ« ó "C" »αÑñ»«½áúáÑΓß∩, τΓ« «¡á ó«ºóαáΘáÑΓ µÑ½«Ñ º¡áτÑ¡¿Ñ,
  308.  ¿ óδ »«½πτ¿ΓÑ íÑßß¼δ߽ѡ¡δ⌐ «ΓóÑΓ. àß½¿ ßá¼á ATOF ¿ «íαáΘÑ-
  309.  ¡¿Ñ ¬ ¡Ñ⌐ ó MAIN ¿¼ÑεΓ ¡Ñß«ó¼ÑßΓ¿¼δÑ Γ¿»δ ¿ ¡áσ«ñ∩Γß∩ ó «ñ-
  310.  ¡«¼ ¿ Γ«¼ ªÑ Σá⌐½Ñ, Γ« φΓ« íπñÑΓ «í¡áαπªÑ¡« ¬«¼»¿½∩Γ«α«¼. ì«
  311.  Ñß½¿ ATOF íδ½á ß¬«¼»¿½¿α«óá¡á «Γñѽ∞¡« /τΓ« í«½ÑÑ óÑα«∩Γ¡«/,
  312.  Γ« φΓ« ¡Ñß««ΓóÑΓßΓó¿Ñ ¡Ñ íπñÑΓ ºáΣ¿¬ß¿α«óá¡«, ΓᬠτΓ« ATOF
  313.  íπñÑΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩ Γ¿»á DOUBLE, ß ¬«Γ«αδ¼ MAIN íπñÑΓ
  314.  «íαáΘáΓ∞ß∩, ¬á¬ ß INT , τΓ« »α¿óÑñÑΓ ¬ íÑßß¼δ߽ѡ¡δ¼ αѺπ½∞-
  315.  ΓáΓá¼. /Åα«úαá¼¼á LINT óδ½áó½¿óáÑΓ φΓπ «Φ¿í¬π/.
  316.      ê¼Ñ∩ ATOF, ¼δ, ó »α¿¡µ¿»Ñ, ¼«ú½¿ íδ ß ÑÑ »«¼«Θ∞ε ¡á»¿-
  317.  ßáΓ∞ ATOI (»αÑ«íαẫóá¡¿Ñ ßΓ᫬¿ ó INT):
  318.  
  319.   ATOI(S)   /* CONVERT STRING S TO INTEGER */
  320.   CHAR S[];
  321.   {
  322.      DOUBLE ATOF();
  323.  
  324.      RETURN(ATOF(S));
  325.   }
  326.  
  327.  
  328.  ÄíαáΓ¿ΓѠ󡿼᡿Ѡ¡á ßΓαπ¬Γπαπ «»¿ßá¡¿⌐ ¿ «»ÑαáΓ«α RETURN.
  329.  ç¡áτÑ¡¿Ñ óδαáªÑ¡¿∩ ó
  330.  
  331.      RETURN (óδαáªÑ¡¿Ñ)
  332.  
  333.  óßÑúñá »αÑ«íαáºπÑΓß∩ ¬ Γ¿»π Σπ¡¬µ¿¿ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ßἫú«
  334.  ó«ºóαáΘÑ¡¿∩. Å«φΓ«¼π »α¿ »«∩ó½Ñ¡¿¿ ó «»ÑαáΓ«αÑ RETURN º¡áτÑ-
  335.  ¡¿Ñ Σπ¡¬µ¿¿ áΓ«F, ¿¼ÑεΘÑÑ Γ¿» DOUBLE, áóΓ«¼áΓ¿τÑ߬¿ »αÑ«íαá-
  336.  ºπÑΓß∩ ó INT, »«ß¬«½∞¬π Σπ¡¬µ¿∩ ATOI ó«ºóαáΘáÑΓ INT. (èá¬
  337.  «íßπªñὫß∞ ó ú½áóÑ 2, »αÑ«íαẫóá¡¿Ñ º¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐
  338.  Γ«τ¬«⌐ ¬ Γ¿»π INT «ßπΘÑßΓó½∩ÑΓß∩ »«ßαÑñßΓó«¼ «Γíαáßδóá¡¿∩
  339.  ñα«í¡«⌐ τáßΓ¿).
  340.      ô»α᪡ѡ¿Ñ  4-2.
  341.      ----------------
  342.      ÉáßΦ¿α∞ΓÑ ATOF Γᬿ¼ «íαẫ¼, τΓ«íδ «¡á ¼«ú½á αáí«ΓáΓ∞ ß
  343.  τ¿ß½á¼¿ ó¿ñá
  344.  
  345.      123.45Ñ-6
  346.  
  347.  úñÑ ºá τ¿ß½«¼ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ¼«ªÑΓ ß½Ññ«óáΓ∞ 'E' ¿ »«¬á-
  348.  ºáΓѽ∞ φ¬ß»«¡Ñ¡Γδ, ó«º¼«ª¡« ß« º¡á¬«¼.
  349.  
  350.      4.3. àΘÑ «í áαúπ¼Ñ¡Γáσ Σπ¡¬µ¿⌐.
  351.  
  352.      é ú½áóÑ 1 ¼δ πªÑ «íßπªñ὿ Γ«Γ Σá¬Γ , τΓ« áαúπ¼Ñ¡Γδ Σπ¡-
  353.  ¬µ¿⌐ »ÑαÑñáεΓß∩ »« º¡áτÑ¡¿ε, Γ.Ñ. óδºóá¡¡á∩ Σπ¡¬µ¿∩ »«½πτáÑΓ
  354.  ßó«ε óαѼѡ¡πε ¬«»¿ε ¬áªñ«ú« áαúπ¼Ñ¡Γá, á ¡Ñ Ñú« áñαÑß. φΓ«
  355.  «º¡áτáÑΓ, τΓ« óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¡Ñ ¼«ªÑΓ ó«ºñÑ⌐ßΓó«óáΓ∞ ¡á
  356.  ¿ßσ«ñ¡δ⌐ áαúπ¼Ñ¡Γ ó óδºδóáεΘÑ⌐ Σπ¡¬µ¿¿. é¡πΓα¿ Σπ¡¬µ¿¿ ¬áª-
  357.  ñδ⌐ áαúπ¼Ñ¡Γ »« ßπΘÑßΓóπ ∩ó½∩ÑΓß∩ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐, ¬«-
  358.  Γ«αá∩ ¿¡¿µ¿á½¿º¿απÑΓß∩ ΓѼ º¡áτÑ¡¿Ñ¼, ß ¬«Γ«αδ¼ ¬ φΓ«⌐ Σπ¡¬-
  359.  µ¿¿ «íαáΓ¿½¿ß∞.
  360.      
  361.                            - 80 -
  362.      
  363.      àß½¿ ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá Σπ¡¬µ¿¿ óδßΓπ»áÑΓ ¿¼∩ ¼áßß¿óá,
  364.  Γ« »ÑαÑñáÑΓß∩ áñαÑß ¡áτá½á φΓ«ú« ¼áßß¿óá; ßἿ φ½Ñ¼Ñ¡Γδ ¡Ñ
  365.  ¬«»¿απεΓß∩. öπ¡¬µ¿∩ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ φ½Ñ¼Ñ¡Γδ ¼áßß¿óá, ¿ß»«½∞-
  366.  ºπ∩ ¿¡ñѬßáµ¿ε ¿ áñαÑß ¡áτá½á. Æá¬¿¼ «íαẫ¼, ¼áßß¿ó »ÑαÑñá-
  367.  ÑΓß∩ »« ßß佬Ñ. é ú½áóÑ 5 ¼δ «íßπñ¿¼, ¬á¬ ¿ß»«½∞º«óá¡¿Ñ π¬á-
  368.  ºáΓѽÑ⌐ »«ºó«½∩ÑΓ Σπ¡¬µ¿∩¼ ó«ºñÑ⌐ßΓó«óáΓ∞ ¡á «Γ½¿τ¡δÑ «Γ
  369.  ¼áßß¿ó«ó »ÑαѼѡ¡δÑ ó óδºδóáεΘ¿σ Σπ¡¬µ¿∩σ.
  370.      îѪñπ »α«τ¿¼, ¡ÑßπΘÑßΓóπÑΓ »«½¡«ßΓ∞ε πñ«ó½ÑΓó«α¿Γѽ∞¡«ú«
  371.  ß»«ß«íᠡỿßá¡¿∩ »ÑαÑ¡«ß¿¼«⌐ Σπ¡¬µ¿¿ ß »ÑαѼѡ¡δ¼ τ¿ß½«¼
  372.  áαúπ¼Ñ¡Γ«ó. äѽ« ó Γ«¼, τΓ« ¡ÑΓ »ÑαÑ¡«ß¿¼«ú« ß»«ß«íá, ß »«-
  373.  ¼«Θ∞ε ¬«Γ«α«ú« óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¼«ú½á íδ «»αÑñѽ¿Γ∞, ß¬«½∞-
  374.  ¬« áαúπ¼Ñ¡Γ«ó í佫 Σá¬Γ¿τÑ߬¿ »ÑαÑñá¡« Ñ⌐ ó ñá¡¡«¼ «íαáΘÑ-
  375.  ¡¿¿. Æá¬¿¼ «íαẫ¼, óδ, ¡á»α¿¼Ñα, ¡Ñ ¼«ªÑΓÑ ¡á»¿ßáΓ∞ ñÑ⌐ßΓ-
  376.  ó¿Γѽ∞¡« »ÑαÑ¡«ß¿¼πε Σπ¡¬µ¿ε, ¬«Γ«αá∩ íπñÑΓ óδτ¿ß½∩Γ∞ ¼á¬ß¿-
  377.  ¼π¼ «Γ »α«¿ºó«½∞¡«ú« τ¿ß½á áαúπ¼Ñ¡Γ«ó, ¬á¬ ñѽáεΓ óßΓα«Ñ¡¡δÑ
  378.  Σπ¡¬µ¿¿ MAX ó Σ«αΓαá¡Ñ ¿ PL/1.
  379.      Äíδτ¡« ß« ß½πτáѼ »ÑαѼѡ¡«ú« τ¿ß½á áαúπ¼Ñ¡Γ«ó íѺ«»áß¡«
  380.  ¿¼ÑΓ∞ ñѽ«, Ñß½¿ óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¡Ñ ¿ß»«½∞ºπÑΓ áαúπ¼Ñ¡Γ«ó,
  381.  ¬«Γ«αδÑ Ñ⌐ ¡á ßἫ¼ ñѽѠ¡Ñ í뫨 »ÑαÑñá¡δ, ¿ Ñß½¿ Γ¿»δ ß«ú-
  382.  ½áßπεΓß∩. æá¼á∩ αáß»α«ßΓαá¡Ñ¡¡á∩ ó ∩ºδ¬Ñ "C" Σπ¡¬µ¿∩ ß »ÑαÑ-
  383.  ¼Ñ¡¡δ¼ τ¿ß½«¼ - PRINTF . Ä¡á »«½πτáÑΓ ¿º »Ñαó«ú« áαúπ¼Ñ¡Γá
  384.  ¿¡Σ«α¼áµ¿ε, »«ºó«½∩εΘπε «»αÑñѽ¿Γ∞ ¬«½¿τÑßΓó« «ßΓá½∞¡δσ áα-
  385.  úπ¼Ñ¡Γ«ó ¿ ¿σ Γ¿»δ. öπ¡¬µ¿∩ PRINTF αáí«ΓáÑΓ ß«óÑαΦÑ¡¡« ¡Ñ»-
  386.  αáó¿½∞¡«, Ñß½¿ óδºδóáεΘá∩ Σπ¡¬µ¿∩ »ÑαÑñáÑΓ Ñ⌐ ¡Ññ«ßΓáΓ«τ¡«Ñ
  387.  ¬«½¿τÑßΓó« áαúπ¼Ñ¡Γ«ó, ¿½¿ Ñß½¿ ¿σ Γ¿»δ ¡Ñ ß«ú½áßπεΓß∩ ß Γ¿-
  388.  »á¼¿, π¬áºá¡¡δ¼¿ ó »Ñαó«¼ áαúπ¼Ñ¡ΓÑ. ¥Γá Σπ¡¬µ¿∩ ¡Ñ ∩ó½∩ÑΓß∩
  389.  »ÑαÑ¡«ß¿¼«⌐ ¿ ñ«½ª¡á ¼«ñ¿Σ¿µ¿α«óáΓ∞ß∩ »α¿ ¿ß»«½∞º«óá¡¿¿ ó
  390.  αẽ¿τ¡δσ πß½«ó¿∩σ.
  391.      àß½¿ ªÑ Γ¿»δ áαúπ¼Ñ¡Γ«ó ¿ºóÑßΓ¡δ, Γ« ¬«¡Ñµ ß»¿ß¬á áαúπ-
  392.  ¼Ñ¡Γ«ó ¼«ª¡« «Γ¼ÑΓ¿Γ∞, ¿ß»«½∞ºπ∩ ¬á¬«Ñ-Γ« ß«ú½áΦÑ¡¿Ñ; ¡á»α¿-
  393.  ¼Ñα, ßτ¿Γá∩, τΓ« ¡Ñ¬«Γ«α«Ñ ß»Ñµ¿á½∞¡«Ñ º¡áτÑ¡¿Ñ áαúπ¼Ñ¡Γá
  394.  (τáßΓ« ¡π½∞) ∩ó½∩ÑΓß∩ »α¿º¡á¬«¼ ¬«¡µá áαúπ¼Ñ¡Γ«ó.
  395.  
  396.       4.4. é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ.
  397.  
  398.      Åα«úαἼᠡá ∩ºδ¬Ñ "C" ß«ßΓ«¿Γ ¿º ¡áí«αá ó¡ÑΦ¡¿σ «íΩѬ-
  399.  Γ«ó, ¬«Γ«αδÑ ∩ó½∩εΓß∩ ½¿í« »ÑαѼѡ¡δ¼¿, ½¿í« Σπ¡¬µ¿∩¼¿. ÆÑα-
  400.  ¼¿¡ "ó¡ÑΦ¡¿⌐" ¿ß»«½∞ºπÑΓß∩ ú½áó¡δ¼ «íαẫ¼ ó »α«Γ¿ó«»«ßΓáó-
  401.  ½Ñ¡¿Ñ ΓÑନ¡π "ó¡πΓαÑ¡¡¿⌐", ¬«Γ«αδ¼ «»¿ßδóáεΓß∩ áαúπ¼Ñ¡Γδ ¿
  402.  áóΓ«¼áΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ, «»αÑñѽѡ¡δÑ ó¡παΓ¿ Σπ¡¬µ¿⌐.
  403.  é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ «»αÑñѽѡδ ó¡Ñ ¬á¬«⌐-½¿í« Σπ¡¬µ¿¿ ¿, Γá-
  404.  ¬¿¼ «íαẫ¼, »«ΓÑ¡µ¿á½∞¡« ñ«ßΓπ»¡δ ñ½∩ ¼¡«ú¿σ Σπ¡¬µ¿⌐. æá¼¿
  405.  Σπ¡¬µ¿¿ óßÑúñá ∩ó½∩εΓß∩ ó¡ÑΦ¡¿¼¿, »«Γ«¼π τΓ« »αáó¿½á ∩ºδ¬á
  406.  "C" ¡Ñ αáºαÑΦáεΓ «»αÑñѽ∩Γ∞ «ñ¡¿ Σπ¡¬µ¿¿ ó¡πΓα¿ ñαπú¿σ. Å«
  407.  π¼«½τá¡¿ε ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ ∩ó½∩εΓß∩ ΓᬪѠ¿ "ú½«íá½∞¡δ¼¿",
  408.  ΓᬠτΓ« óßÑ ßß佬¿ ¡á Γá¬πε »ÑαѼѡ¡πε, ¿ß»«½∞ºπεΘ¿Ñ «ñ¡« ¿
  409.  Γ« ªÑ ¿¼∩ (ñáªÑ ¿º Σπ¡¬µ¿⌐, ß¬«¼»¿½¿α«óá¡¡δσ ¡Ñºáó¿ß¿¼«),
  410.  íπñπΓ ßßδ½¬á¼¿ ¡á «ñ¡« ¿ Γ« ªÑ. é φΓ«¼ ß¼δ߽Ѡó¡ÑΦ¡¿Ñ »ÑαÑ-
  411.  ¼Ñ¡¡δÑ á¡á½«ú¿τ¡δ »ÑαѼѡ¡δ¼ CO¼MON ó Σ«αΓαá¡Ñ ¿ EXTERNAL ó
  412.  PL/1. Å«ºñ¡ÑÑ ¼δ »«¬áªÑ¼, ¬á¬ «»αÑñѽ¿Γ∞ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ
  413.  ¿ Σπ¡¬µ¿¿ Γᬿ¼ «íαẫ¼, τΓ«íδ «¡¿ í뫨 ñ«ßΓπ»¡δ ¡Ñ ú½«íá½∞-
  414.  ¡«, á Γ«½∞¬« ó »αÑñѽáσ «ñ¡«ú« ¿ßσ«ñ¡«ú« Σá⌐½á.
  415.      
  416.                            - 81 -
  417.      
  418.      é ß¿½π ßó«Ñ⌐ ú½«íá½∞¡«⌐ ñ«ßΓπ»¡«ßΓ¿ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ
  419.  »αÑñ«ßΓáó½∩εΓ ñαπúπε, «Γ½¿τ¡πε «Γ áαúπ¼Ñ¡Γ«ó ¿ ó«ºóαáΘáѼδσ
  420.  º¡áτÑ¡¿⌐, ó«º¼«ª¡«ßΓ∞ ñ½∩ «í¼Ñ¡á ñá¡¡δ¼¿ ¼Ñªñπ Σπ¡¬µ¿∩¼¿.
  421.  àß½¿ ¿¼∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ ¬á¬¿¼-½¿í« «íαẫ¼ «»¿ßá¡«, Γ«
  422.  ½εíá∩ Σπ¡¬µ¿∩ ¿¼ÑÑΓ ñ«ßΓπ» ¬ φΓ«⌐ »ÑαѼѡ¡«⌐, ßßδ½á∩ß∞ ¬ ¡Ñ⌐
  423.  »« φΓ«¼π ¿¼Ñ¡¿.
  424.      é ß½πτá∩σ, ¬«úñá ßó∩º∞ ¼Ñªñπ Σπ¡¬µ¿∩¼¿ «ßπΘÑßΓó½∩ÑΓß∩ ß
  425.  »«¼«Θ∞ε í«½∞Φ«ú« τ¿ß½á »ÑαѼѡ¡δσ, ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ «¬áºδ-
  426.  óáεΓß∩ í«½ÑÑ πñ«í¡δ¼¿ ¿ φΣΣÑ¬Γ¿ó¡δ¼¿, τѼ ¿ß»«½∞º«óá¡¿Ñ
  427.  ñ½¿¡¡δσ ß»¿ß¬«ó áαúπ¼Ñ¡Γ«ó. èá¬, «ñ¡á¬«, «Γ¼ÑτὫß∞ ó ú½áóÑ
  428.  1, φΓ« ß««íαáªÑ¡¿Ñ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ß «»αÑñѽѡ¡«⌐ «ßΓ«-
  429.  α«ª¡«ßΓ∞ε, Γᬠ¬á¬ «¡« ¼«ªÑΓ »½«σ« «ΓαếΓ∞ß∩ ¡á ßΓαπ¬ΓπαÑ
  430.  »α«úαá¼¼ ¿ »α¿ó«ñ¿Γ∞ ¬ »α«úαá¼¼á¼ ß í«½∞Φ¿¼ τ¿ß½«¼ ßó∩ºÑ⌐ »«
  431.  ñá¡¡δ¼ ¼Ñªñπ Σπ¡¬µ¿∩¼¿.
  432.      éΓ«αá∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ ßó∩ºá¡á
  433.  ß ¿¡¿µ¿á½¿ºáµ¿Ñ⌐. é τáßΓ¡«ßΓ¿, ó¡ÑΦ¡¿Ñ ¼áßß¿óδ ¼«úπΓ íδΓ∞
  434.  ¿¡¿µ¿á½¿º¿α«óá¡δ á áóΓ«¼áΓ¿τÑ߬¿Ñ ¡ÑΓ. îδ αáßß¼«Γα¿¼ ó«»α«ß
  435.  «í ¿¡¿µ¿á½¿ºáµ¿¿ ó ¬«¡µÑ φΓ«⌐ ú½áóδ.
  436.      ÆαÑΓ∞∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ «íπß½«ó-
  437.  ½Ñ¡á ¿σ «í½áßΓ∞ε ñÑ⌐ßΓó¿∩ ¿ óαѼѡѼ ßπΘÑßΓó«óá¡¿∩. ÇóΓ«¼á-
  438.  Γ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ∩ó½∩εΓß∩ ó¡πΓαÑ¡¡¿¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ Σπ¡-
  439.  ¬µ¿∩¼; «¡¿ ó«º¡¿¬áεΓ »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε ¿ ¿ßτѺáεΓ »α¿ óδ-
  440.  σ«ñÑ ¿º ¡ÑÑ. é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ, ¡á»α«Γ¿ó, ßπΘÑßΓóπεΓ »«ßΓ«-
  441.  ∩¡¡«. Ä¡¿ ¡Ñ »«∩ó½∩εΓ∩ ¿ ¡Ñ ¿ßτѺáεΓ, ΓᬠτΓ« ¼«úπΓ ß«σαá-
  442.  ¡∩Γ∞ ßó«¿ º¡áτÑ¡¿∩ ó »Ñα¿«ñ «Γ «ñ¡«ú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ ñ«
  443.  ñαπú«ú«. é ß¿½π φΓ«ú«, Ñß½¿ ñóÑ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓ ¡Ñ¬«Γ«αδÑ
  444.  «íΘ¿Ñ ñá¡¡δÑ, »α¿τѼ ¡¿ «ñ¡á ¿º ¡¿σ ¡Ñ «íαáΘáÑΓß∩ ¬ ñαπú«⌐ ,
  445.  Γ« τáßΓ« ¡á¿í«½ÑÑ πñ«í¡δ¼ «¬áºδóáÑΓß∩ σαá¡¿Γ∞ φΓ¿ «íΘ¿Ñ ñá¡-
  446.  ¡δÑ ó ó¿ñÑ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ, á ¡Ñ »ÑαÑñáóáΓ∞ ¿σ ó Σπ¡¬µ¿ε
  447.  ¿ «íαáΓ¡« ß »«¼«Θ∞ε áαúπ¼Ñ¡Γ«ó.
  448.      äáóá⌐ΓÑ »α«ñ«½ª¿¼ «íßπªñÑ¡¿Ñ φΓ«ú« ó«»α«ßá ¡á í«½∞Φ«¼
  449.  »α¿¼ÑαÑ. çáñáτá íπñÑΓ ß«ßΓ«∩Γ∞ ó ¡á»¿ßá¡¿¿ ñαπú«⌐ »α«úαá¼¼δ
  450.  ñ½∩ ¬á½∞¬π½∩Γ«αá, ½πτΦÑ⌐,τѼ »αÑñδñπΘá∩. çñÑß∞ ñ«»π߬áεΓß∩
  451.  «»Ñαᵿ¿ +,-,*,/ ¿ º¡á¬ = (ñ½∩ óδñáτ¿ «ΓóÑΓá).ó¼ÑßΓ« ¿¡Σ¿¬ß-
  452.  ¡«ú« »αÑñßΓáó½Ñ¡¿∩ ¬á½∞¬π½∩Γ«α íπñÑΓ ¿ß»«½∞º«óáΓ∞ «íαáΓ¡πε
  453.  »«½∞߬πε ¡«Γᵿε,»«ß¬«½∞¬π ÑÑ ¡Ñ߬«½∞¬« ½ÑúτÑ αÑ὿º«óáΓ∞.ó
  454.  «íαáΓ¡«⌐ »«½∞߬«⌐ ¡«Γᵿ¿ º¡á¬ ß½ÑñπÑΓ ºá «»Ñαá¡ñἿ; ¿¡Σ¿¬-
  455.  ß¡«Ñ óδαáªÑ¡¿Ñ Γ¿»á
  456.  
  457.     (1-2)*(4+5)=
  458.      
  459.    ºá»¿ßδóáÑΓß∩ ó ó¿ñÑ
  460.     12-45+*=
  461.    ¬απú½δѠ߬«í¬¿ »α¿ φΓ«¼ ¡Ñ ¡πª¡δ
  462.            
  463.                            - 82 -
  464.      
  465.      ÉÑ὿ºáµ¿∩ «¬áºδóáÑΓß∩ óÑß∞¼á »α«ßΓ«⌐.¬áªñδ⌐ «»Ñαá¡ñ »«-
  466.  ¼ÑΘáÑΓß∩ ó ßΓѬ; ¬«úñá »«ßΓπ»áÑΓ º¡á¬ «»Ñαᵿ¿,¡πª¡«Ñ τ¿ß½«
  467.  «»Ñαá¡ñ«ó (ñóá ñ½∩ í¿¡áα¡δσ «»Ñαᵿ⌐) óδ¡¿¼áÑΓß∩,¬ ¡¿¼ »α¿-
  468.  ¼Ñ¡∩ÑΓß∩ «»Ñαᵿ∩ ¿ αѺπ½∞ΓáΓ ¡á»αáó½∩ÑΓß∩ «íαáΓ¡« ó
  469.  ßΓѬ.Γᬠó »α¿óÑñÑ¡¡«¼ óδΦÑ »α¿¼ÑαÑ 1 ¿ 2 »«¼ÑΘáεΓß∩ ó ßΓѬ
  470.  ¿ ºáΓѼ ºá¼Ñ¡∩εΓß∩ ¿σ αạ«ßΓ∞ε, -1.»«ß½Ñ φΓ«ú« 4 ¿ 5 óó«-
  471.  ñ∩Γß∩ ó ßΓѬ ¿ ºáΓѼ ºá¼Ñ¡∩εΓß∩ ßó«Ñ⌐ ßπ¼¼«⌐,9.ñá½ÑÑ τ¿ß½á
  472.  -1 ¿ 9 ºá¼Ñ¡∩εΓß∩ ó ßΓѬѠ¡á ¿σ »α«¿ºóÑñÑ¡¿Ñ,αáó¡«Ñ -9.«»Ñ-
  473.  αᵿ∩ = »ÑτáΓáÑΓ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá, ¡Ñ πñá½∩∩ Ñú« (Γá¬
  474.  τΓ« »α«¼ÑªπΓ«τ¡δÑ óδτ¿ß½Ñ¡¿∩ ¼«úπΓ íδΓ∞ »α«óÑαÑ¡δ).
  475.      æá¼¿ «»Ñαᵿ¿ »«¼ÑΘÑ¡¿∩ τ¿ßѽ ó ßΓѬ ¿ ¿σ ¿ºó½ÑτÑ¡¿∩
  476.  «τÑ¡∞ »α«ßΓδ,¡«, ó ßó∩º¿ ß ó¬½ετÑ¡¿Ñ¼ ó ¡áßΓ«∩Θπε »α«úαá¼¼π
  477.  «í¡áαπªÑ¡¿∩ «Φ¿í«¬ ¿ ó«ßßΓá¡«ó½Ñ¡¿∩,«¡¿ «¬áºδóáεΓß∩ ñ«ßΓá-
  478.  Γ«τ¡« ñ½¿¡¡δ¼¿. Å«φΓ«¼π ½πτΦÑ «Σ«α¼¿Γ∞ ¿σ ó ó¿ñÑ «Γñѽ∞¡δσ
  479.  Σπ¡¬µ¿⌐,τѼ »«óΓ«α∩Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ ΓѬßΓ »«óßεñπ ó »α«ú-
  480.  αá¼¼Ñ. èα«¼Ñ Γ«ú«, ¡πª¡á «Γñѽ∞¡á∩ Σπ¡¬µ¿∩ ñ½∩ óδí«α¬¿ ¿º
  481.  óó«ñá ß½ÑñπεΘÑ⌐ «»Ñαᵿ¿ ¿½¿ «»Ñαá¡ñá. Æá¬¿¼ «íαẫ¼, ßΓαπ¬-
  482.  Γπαá »α«úαá¼¼δ ¿¼ÑÑΓ ó¿ñ:
  483.  
  484.  WHILE( »«ßΓπ»áÑΓ «»Ñαᵿ∩ ¿½¿ «»Ñαá¡ñ, á ¡Ñ ¬«¡Ñµ
  485.     IF ( τ¿ß½« )
  486.          »«¼ÑßΓ¿Γ∞ Ñú« ó ßΓѬ
  487.     ÑLSE IF ( «»Ñαᵿ∩ )
  488.          óδ¡πΓ∞ «»Ñαá¡ñδ ¿º ßΓѬá
  489.          óδ»«½¡¿Γ∞ «»Ñαᵿε
  490.          »«¼ÑßΓ¿Γ∞ αѺπ½∞ΓáΓ ó ßΓѬ
  491.     ELSE
  492.          «Φ¿í¬á
  493.  
  494.      Äß¡«ó¡«⌐ ó«»α«ß, ¬«Γ«αδ⌐ ÑΘÑ ¡Ñ íδ½ «íßπªñÑ¡, ºá¬½ετáÑΓ-
  495.  ß∩ ó Γ«¼,úñÑ »«¼ÑßΓ¿Γ∞ ßΓѬ, Γ. à. èᬿѠ»α«µÑñπαδ ß¼«úπΓ
  496.  «íαáΘáΓ∞ß∩ ¬ ¡Ñ¼π ¡Ñ»«ßαÑñßΓóÑ¡¡«. Äñ¡á ¿º Γᬿσ ó«º¼«ª¡«ß-
  497.  ΓÑ⌐ ß«ßΓ«¿Γ ó »«¼ÑΘÑ¡¿¿ ßΓѬá ó MAIN ¿ »ÑαÑñáτ¿ ßἫú« ßΓѬá
  498.  ¿ ΓѬπΘÑ⌐ »«º¿µ¿¿ ó ßΓѬѠΣπ¡¬µ¿∩¼, αáí«ΓáεΘ¿¼ ß« ßΓѬ«¼. ì«
  499.  Σπ¡¬µ¿¿ MAIN ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿¼ÑΓ∞ ñѽ« ß »ÑαѼѡ¡δ¼¿, π»-
  500.  αáó½∩εΘ¿¼¿ ßΓѬ«¼; Ñ⌐ ÑßΓÑßΓóÑ¡¡« αáßßπªñáΓ∞ ó ΓÑନ¡áσ »«-
  501.  ¼ÑΘÑ¡¿∩ τ¿ßѽ ó ßΓѬ ¿ ¿ºó½ÑτÑ¡¿∩ ¿σ «ΓΓπñá. é ß¿½π φΓ«ú« ¼δ
  502.  αÑΦ¿½¿ ßñѽáΓ∞ ßΓѬ ¿ ßó∩ºá¡¡πε ß ¡¿¼ ¿¡Σ«α¼áµ¿ε ó¡ÑΦ¡¿¼¿
  503.  »ÑαѼѡ¡δ¼¿ , ñ«ßΓπ»¡δ¼¿ Σπ¡¬µ¿∩¼ PUSH (»«¼ÑΘÑ¡¿Ñ ó ßΓѬ) ¿
  504.  POP (¿ºó½ÑτÑ¡¿Ñ ¿º ßΓѬá), ¡« ¡Ñ MAIN.
  505.      ÅÑαÑó«ñ φΓ«⌐ ßσѼδ ó »α«úαá¼¼π ñ«ßΓáΓ«τ¡« »α«ßΓ. éÑñπΘá∩
  506.  »α«úαá¼¼á ∩ó½∩ÑΓß∩ »« ßπΘÑßΓóπ í«½∞Φ¿¼ »ÑαѬ½ετáΓѽѼ »« Γ¿-
  507.  »π «»Ñαᵿ¿ ¿½¿ «»Ñαá¡ñπ; φΓ«, »«-ó¿ñ¿¼«¼π, í«½ÑÑ σáαá¬ΓÑα-
  508.  ¡«Ñ »α¿¼Ñ¡Ñ¿Ñ »ÑαѬ½ετáΓѽ∩, τѼ Γ«, ¬«Γ«α«Ñ í佫 »α«ñѼ«¡ß-
  509.  Γα¿α«óá¡« ó ú½áóÑ 3.
  510.      
  511.     #DEFINE MAXOP   20  /* MAX SIZE OF OPERAND, OPERÇTOR *
  512.     #DEFINE NUMBER '0'  /* SIGNAL THAT NUMBER FOUND */
  513.     #DEFINE TOOBIG '9'  /* SIGNAL THAT STRING IS TOO BIG *
  514.            
  515.                            - 83 -
  516.      
  517.     MAIN()  /* REVERSE POLISH DESK CALCULATOR */
  518.     /(
  519.      INT TUPE;
  520.      CHAR S[MAXOP];
  521.      DOUBLE OP2,ATOF(),POP(),PUSH();
  522.  
  523.      WHILE ((TUPE=GETOP(S,MAXOP)) !=EOF);
  524.        SWITCH(TUPE) /(
  525.        CASE NUMBER:
  526.             PUSH(ATOF(S));
  527.             BREAK;
  528.        CASE '+':
  529.             PUSH(POP()+POP());
  530.             BREAK;
  531.        CASE '*':
  532.             PUSH(POP()*POP());
  533.             BREAK;
  534.        CASE '-':
  535.             OP2=POP();
  536.             PUSH(POP()-OP2);
  537.             BREAK;
  538.        CASE '/':
  539.             OP2=POP();
  540.             IF (OP2 != 0.0)
  541.     PUSH(POP()/OP2);
  542.             ELSE
  543.                PRINTF("ZERO DIVISOR POPPED\N");
  544.             BREAK;
  545.        CASE '=':
  546.             PRINTF("\T%F\N",PUSH(POP()));
  547.             BREAK;
  548.        CASE 'C':
  549.             CLEAR();
  550.             BREAK;
  551.        CASE TOOBIG:
  552.             PRINTF("%.20S ... IS TOO LONG\N",S)
  553.             BREAK;
  554.        /)
  555.     /)
  556.     #DEFINE MAXVAL 100 /* MAXIMUM DEPTH OF VAL STACK */
  557.            
  558.                            - 84 -
  559.      
  560.     INT SP = 0;        /* STACK POINTER */
  561.     DOUBLE VAL[MAXVAL]; /*VALUE STACK */
  562.     DOUBLE PUSH(F)    /* PUSH F ONTO VALUE STACK */
  563.     DOUBLE F;
  564.     /(
  565.      IF (SP < MAXVAL)
  566.              RETURN(VAL[SP++] =F);
  567.      ELSE    /(
  568.              PRINTF("ERROR: STACK FULL\N");
  569.              CLEAR();
  570.              RETURN(0);
  571.      /)
  572.     /)
  573.  
  574.     DOUBLE POP()   /* POP TOP VALUE FROM STEACK */
  575.     /(
  576.      IF (SP > 0)
  577.              RETURN(VAL[--SP]);
  578.      ELSE    /(
  579.              PRINTF("ERROR: STACK EMPTY\N");
  580.              CLEAR();
  581.              RETURN(0);
  582.      /)
  583.     /)
  584.  
  585.     CLEAR()       /* CLEAR STACK */
  586.     /(
  587.       SP=0;
  588.     /)
  589.  
  590.      è«¼á¡ñá C «τ¿ΘáÑΓ ßΓѬ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ CLEAR, ¬«Γ«αá∩
  591.  ΓᬪѠ¿ß»«½∞ºπÑΓß∩ ó ß½πτáÑ «Φ¿í¬¿ Σπ¡¬µ¿∩¼¿ PUSH ¿ POP. ¬
  592.  Σπ¡¬µ¿¿ GETOP ¼δ «τÑ¡∞ ß¬«α« óÑα¡Ñ¼ß∩.
  593.      èᬠπªÑ ú«ó«α¿½«ß∞ ó ú½áóÑ 1, »ÑαѼѡ¡á∩ ∩ó½∩ÑΓß∩ ó¡ÑΦ-
  594.  ¡Ñ⌐, Ñß½¿ «¡á «»αÑñѽѡá ó¡Ñ Γѽᠬᬫ⌐ íδ Γ« ¡¿ í佫 Σπ¡¬-
  595.  µ¿¿. Å«φΓ«¼π ßΓѬ ¿ π¬áºáΓѽ∞ ßΓѬá, ¬«Γ«αδÑ ñ«½ª¡δ ¿ß»«½∞-
  596.  º«óáΓ∞ß∩ Σπ¡¬µ¿∩¼¿ PUSH, POP ¿ CLEAR, «»αÑñѽѡδ ó¡Ñ φΓ¿σ
  597.  ΓαÑσ Σπ¡¬µ¿⌐. ì« ßá¼á Σπ¡¬µ¿∩ MAIN ¡Ñ ßßδ½áÑΓß∩ ¡¿ ¬ ßΓѬπ,
  598.  ¡¿ ¬ π¬áºáΓѽε ßΓѬá - ¿σ πτáßΓ¿Ñ ΓΘáΓѽ∞¡« ºá¼á߬¿α«óá¡«. é
  599.  ß¿½π φΓ«ú« τáßΓ∞ »α«úαá¼¼δ, ß««ΓóÑΓßΓóπεΘá∩ «»Ñαᵿ¿ = , ¿ß-
  600.  »«½∞ºπÑΓ ¬«¡ßΓαπ¬µ¿ε
  601.   
  602.     PUSH(POP());
  603.  
  604.  
  605.  ñ½∩ Γ«ú«, τΓ«íδ »α«á¡á½¿º¿α«óáΓ∞ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá, ¡Ñ
  606.  ¿º¼Ñ¡∩∩ Ñú«.
  607.      ÄΓ¼ÑΓ¿¼ ΓᬪÑ, τΓ« Γᬠ¬á¬ «»Ñαᵿ¿ + ¿ * ¬«¼¼πΓáΓ¿ó¡δ,
  608.  »«α∩ñ«¬, ó ¬«Γ«α«¼ «íΩÑñ¿¡∩εΓß∩ ¿ºó½ÑτÑ¡¡δÑ «»Ñαá¡ñδ, ¡Ñßπ-
  609.  ΘÑßΓóѡѡ, ¡« ó ß½πτáÑ «»Ñαᵿ⌐ - ¿ / ¡Ñ«íσ«ñ¿¼« αẽ¿τáΓ∞
  610.  ½Ñóδ⌐ ¿ »αáóδ⌐ «»Ñαá¡ñδ.
  611.      
  612.                            - 85 -
  613.      
  614.      ô»α᪡ѡ¿Ñ 4-3.
  615.      ---------------
  616.      Åα¿óÑñÑ¡¡á∩ «ß¡«ó¡á∩ ßσѼá ñ«»π߬áÑΓ ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ
  617.  αáßΦ¿αÑ¡¿Ñ ó«º¼«ª¡«ßΓÑ⌐ ¬á½∞¬π½∩Γ«αá. é¬½ετ¿ΓÑ «»Ñαᵿε ñÑ-
  618.  ½Ñ¡¿∩ »« ¼«ñπ½ε /%/ ¿ π¡áα¡δ⌐ ¼¿¡πß. é¬½ετ¿ΓÑ ¬«¼á¡ñπ "ßΓÑ-
  619.  αÑΓ∞", ¬«Γ«αá∩ πñá½∩ÑΓ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá. éóÑñ¿ΓÑ ¬«¼á¡-
  620.  ñδ ñ½∩ αáí«Γδ ß »ÑαѼѡ¡δ¼¿. /¥Γ« »α«ßΓ«, Ñß½¿ ¿¼Ñ¡á »ÑαÑ-
  621.  ¼Ñ¡¡δσ íπñπΓ ß«ßΓ«∩Γ∞ ¿º «ñ¡«⌐ íπ¬óδ ¿º ¿¼ÑεΘ¿σß∩ ñóáñµáΓ¿
  622.  ΦÑßΓ¿ íπ¬ó/.
  623.  
  624.       4.5. Åαáó¿½á, «»αÑñѽ∩εΘ¿Ñ «í½áßΓ∞ ñÑ⌐ßΓó¿∩.
  625.  
  626.      öπ¡¬µ¿¿ ¿ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ, óσ«ñ∩Θ¿Ñ ó ß«ßΓáó
  627.  "C"-»α«úαá¼¼δ, ¡Ñ «í∩ºá¡δ ¬«¼»¿½¿α«óáΓ∞ß∩ «ñ¡«óαѼѡ¡«;
  628.  »α«úαἼᠡᠿßσ«ñ¡«¼ ∩ºδ¬Ñ ¼«ªÑΓ αáß»«½áúáΓ∞ß∩ ó ¡Ñ߬«½∞¬¿σ
  629.  Σá⌐½áσ, ¿ αá¡ÑѠ߬«¼»¿½¿α«óá¡¡δÑ »α«µÑñπαδ ¼«úπΓ ºáúαπªáΓ∞ß∩
  630.  ¿º í¿í½¿«ΓѬ. äóá ó«»α«ßá »αÑñßΓáó½∩εΓ ¿¡ΓÑαÑß:
  631.      èᬠ߽ÑñπÑΓ ß«ßΓáó½∩Γ∞ «»¿ßá¡¿∩, τΓ«íδ »ÑαѼѡ¡δÑ »αá-
  632.  ó¿½∞¡« ó«ß»α¿¡¿¼á½¿ß∞ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿ ?
  633.      èᬠ߽ÑñπÑΓ ß«ßΓáó½∩Γ∞ «»¿ßá¡¿∩, τΓ«íδ «íÑß»Ñτ¿Γ∞ »αá-
  634.  ó¿½∞¡πε ßó∩º∞ τáßΓÑ⌐ »α«úαá¼¼δ »α¿ ºáúαπº¬Ñ ?
  635.  
  636.      4.5.1. Äí½áßΓ∞ ñÑ⌐ßΓó¿∩.
  637.  
  638.      Äí½áßΓ∞ε ñÑ⌐ßΓó¿∩ ¿¼Ñ¡¿ ∩ó½∩ÑΓß∩ Γá τáßΓ∞ »α«úαá¼¼δ, ó
  639.  ¬«Γ«α«⌐ φΓ« ¿¼∩ «»αÑñѽѡ«. ä½∩ áóΓ«¼áΓ¿τÑ߬«⌐ »ÑαѼѡ¡«⌐,
  640.  «»¿ßá¡¡«⌐ ó ¡áτá½Ñ Σπ¡¬µ¿¿, «í½áßΓ∞ε ñÑ⌐ßΓó¿∩ ∩ó½∩ÑΓß∩ Γá
  641.  Σπ¡¬µ¿∩, ó ¬«Γ«α«⌐ «»¿ßá¡« ¿¼∩ φΓ«⌐ »ÑαѼѡ¡«⌐, á »ÑαѼѡ¡δÑ
  642.  ¿º αạδσ Σπ¡¬µ¿⌐, ¿¼ÑεΘ¿Ñ «ñ¿¡á¬«ó«Ñ ¿¼∩, ßτ¿ΓáεΓß∩ ¡Ñ «Γ-
  643.  ¡«ß∩Θ¿¼¿ß∩ ñαπú ¬ ñαπúπ. ¥Γ« ªÑ ß»αáóÑñ½¿ó« ¿ ñ½∩ áαúπ¼Ñ¡Γ«ó
  644.  Σπ¡¬µ¿⌐.
  645.      Äí½áßΓ∞ ñÑ⌐ßΓó¿∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ »α«ßΓ¿αáÑΓß∩ «Γ Γ«τ-
  646.  ¬¿, ó ¬«Γ«α«⌐ «¡á «íΩ∩ó½Ñ¡á ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ, ñ« ¬«¡µá φΓ«ú«
  647.  Σá⌐½á. ìá»α¿¼Ñα, Ñß½¿ VAL, SP, PUSH, POP ¿ CLEAR «»αÑñѽѡδ
  648.  ó «ñ¡«¼ Σá⌐½Ñ ó »«α∩ñ¬Ñ, π¬áºá¡¡«¼ óδΦÑ, á ¿¼Ñ¡¡«:
  649.  
  650.       INT  SP = 0;
  651.       DOUBLE  VAL[MAXVAL];
  652.  
  653.       DOUBLE  PUSH(F) {...}
  654.  
  655.       DOUBLE  POP()  {...}
  656.  
  657.       CLEAR()  {...}
  658.  
  659.  Γ« »ÑαѼѡ¡δÑ VAL ¿ SP ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó PUSH, POP ¿
  660.  CLEAR »α∩¼« »« ¿¼Ñ¡¿; ¡¿¬á¬¿Ñ ñ«»«½¡¿Γѽ∞¡δÑ «»¿ßá¡¿∩ ¡Ñ
  661.  ¡πª¡δ.
  662.      æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ ¡πª¡« ß«ß½áΓ∞ß∩ ¡á ó¡ÑΦ¡εε »ÑαÑ-
  663.  ¼Ñ¡¡πε ñ« ÑÑ «»αÑñѽѡ¿∩, ¿½¿ Ñß½¿ Γá¬á∩ »ÑαѼѡ¡á∩ «»αÑñÑ-
  664.  ½Ñ¡á ó Σá⌐½Ñ, «Γ½¿τ¡«¼ «Γ Γ«ú«, ó ¬«Γ«α«¼ «¡á ¿ß»«½∞ºπÑΓß∩,
  665.  Γ« ¡Ñ«íσ«ñ¿¼« «»¿ßá¡¿Ñ EXTERN.
  666.      
  667.                            - 86 -
  668.      
  669.      é᪡« αẽ¿τáΓ∞ «»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ ¿ ÑÑ «»αÑñÑ-
  670.  ½Ñ¡¿Ñ. «»¿ßá¡¿Ñ π¬áºδóáÑΓ ßó«⌐ßΓóá »ÑαѼѡ¡«⌐ /ÑÑ Γ¿», αáº-
  671.  ¼Ñα ¿ Γ.ñ./; «»αÑñѽѡ¿Ñ ªÑ óδºδóáÑΓ ÑΘÑ ¿ «ΓóÑñÑ¡¿Ñ »á¼∩Γ¿.
  672.  àß½¿ ó¡Ñ ¬á¬«⌐ íδ Γ« ¡¿ í佫 Σπ¡¬µ¿¿ »«∩ó½∩εΓß∩ ßΓα«τ¬¿
  673.  
  674.     INT  SP;
  675.     DOUBLE  VAL[MAXVAL];
  676.  
  677.  Γ« «¡¿ «»αÑñѽ∩εΓ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ SP ¿ VAL, óδºδóáεΓ «Γ-
  678.  óÑñÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ¡¿σ ¿ ß½πªáΓ ó ¬áτÑßΓóÑ «»¿ßá¡¿∩ ñ½∩ «ß-
  679.  Γá½∞¡«⌐ τáßΓ¿ φΓ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á. é Γ« ªÑ óαѼ∩ ßΓα«τ¬¿
  680.  
  681.     EXTERN  INT  SP;
  682.     EXTERN  DOUBLE  VAL[];
  683.  
  684.  «»¿ßδóáεΓ ó «ßΓá½∞¡«⌐ τáßΓ¿ φΓ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á »ÑαѼѡ¡πε
  685.  SP ¬á¬ INT, á VAL ¬á¬ ¼áßß¿ó Γ¿»á DOUBLE /αẼÑα ¬«Γ«α«ú«
  686.  π¬áºá¡ ó ñαπú«¼ ¼ÑßΓÑ/, ¡« ¡Ñ ß«ºñáεΓ »ÑαѼѡ¡δσ ¿ ¡Ñ «Γó«-
  687.  ñ∩Γ ¿¼ ¼ÑßΓá ó »á¼∩Γ¿.
  688.      é« óßÑσ Σá⌐½áσ, ß«ßΓáó½∩εΘ¿σ ¿ßσ«ñ¡πε »α«úαá¼¼π, ñ«½ª¡«
  689.  ß«ñÑαªáΓ∞ß∩ Γ«½∞¬« «ñ¡« «»αÑñѽѡ¿Ñ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐; ñαπ-
  690.  ú¿Ñ Σá⌐½δ ¼«úπΓ ß«ñÑαªáΓ∞ «»¿ßá¡¿∩ EXTERN ñ½∩ ñ«ßΓπ»á ¬ ¡Ñ⌐.
  691.  /Ä»¿ßá¡¿Ñ EXTERN ¼«ªÑΓ ¿¼ÑΓ∞ß∩ ¿ ó Γ«¼ Σá⌐½Ñ, úñÑ ¡áσ«ñ¿Γß∩
  692.  «»αÑñѽѡ¿Ñ/. ïεíá∩ ¿¡¿µ¿á½¿ºáµ¿∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ »α«ó«-
  693.  ñ¿Γß∩ Γ«½∞¬« ó «»αÑñѽѡ¿¿. é «»αÑñѽѡ¿¿ ñ«½ª¡δ π¬áºδóáΓ∞ß∩
  694.  αẼÑαδ ¼áßß¿ó«ó, á ó «»¿ßá¡¿¿ EXTERN φΓ«ú« ¼«ª¡« ¡Ñ ñѽáΓ∞.
  695.      ò«Γ∩ »«ñ«í¡á∩ «αúá¡¿ºáµ¿∩ »α¿óÑñÑ¡¡«⌐ óδΦÑ »α«úαá¼¼δ ¿
  696.  ¼á½«óÑα«∩Γ¡á, ¡« VAL ¿ SP ¼«ú½¿ íδ íδΓ∞ «»αÑñÑ½Ñ¡δ ¿ ¿¡¿µ¿á-
  697.  ½¿º¿α«óá¡δ ó «ñ¡«¼ Σá⌐½Ñ, á Σπ¡¬µ¿∩ PUSH, POP ¿ CLEAR «»αÑ-
  698.  ñѽѡδ ó ñαπú«¼. é φΓ«¼ ß½πτáÑ ñ½∩ ßó∩º¿ í뫨 íδ ¡Ñ«íσ«ñ¿¼δ
  699.  ß½ÑñπεΘ¿Ñ «»αÑñѽѡ¿∩ ¿ «»¿ßá¡¿∩:
  700.  
  701.  ó Σá⌐½Ñ 1:
  702.  ----------
  703.  
  704.     INT SP = 0;  /* STACK POINTER */
  705.     DOUBLE VAL[MAXVAL]; /* VALUE STACK */
  706.  
  707.   ó Σá⌐½Ñ 2:
  708.   ----------
  709.  
  710.      EXTERN INT SP;
  711.      EXTERN DOUBLE VAL[];
  712.  
  713.      DOUBLE PUSH(F)  {...}
  714.  
  715.      DOUBLE POP()   {...}
  716.  
  717.      CLEAR()   {...}
  718.  
  719.  
  720.  Γᬠ¬á¬ «»¿ßá¡¿∩ EXTERN 'ó Σá⌐½Ñ 1' ¡áσ«ñ∩Γß∩ óδΦÑ ¿ ó¡Ñ
  721.  ΓαÑσ π¬áºá¡¡δσ Σπ¡¬µ¿⌐, «¡¿ «Γ¡«ß∩Γß∩ ¬« óßѼ ¡¿¼; «ñ¡«ú«
  722.  ¡áí«αá «»¿ßá¡¿⌐ ñ«ßΓáΓ«τ¡« ñ½∩ óßÑú« 'Σá⌐½á 2'.
  723.      
  724.                            - 87 -
  725.      
  726.      ä½∩ »α«úαá¼¼ í«½∞Φ«ú« αẼÑαá «íßπªñáѼá∩ »«ºªÑ ó φΓ«⌐
  727.  ú½áóѠ󫺼«ª¡«ßΓ∞ ó¬½ετÑ¡¿∩ Σá⌐½«ó, #INCLUDE, »«ºó«½∩ÑΓ
  728.  ¿¼ÑΓ∞ ó« óßÑ⌐ »α«úαá¼¼Ñ Γ«½∞¬« «ñ¡π ¬«»¿ε «»¿ßá¡¿⌐ EXTERN ¿
  729.  óßΓáó½∩Γ∞ ÑÑ ó ¬áªñδ⌐ ¿ßσ«ñ¡δ⌐ Σá⌐½ ó« óαѼ∩ Ñú« ¬«¼»¿½∩µ¿¿.
  730.      ÄíαáΓ¿¼ß∩ ΓÑ»Ñα∞ ¬ Σπ¡¬µ¿¿ GETOP, óδí¿αáεΘÑ⌐ ¿º Σá⌐½á
  731.  óó«ñá ß½ÑñπεΘπε «»Ñαáµ¿ε ¿½¿ «»Ñαá¡ñ. Äß¡«ó¡á∩ ºáñáτá »α«ß-
  732.  Γá: »α«»πßΓ¿Γ∞ »α«íѽδ, º¡á¬¿ Γáíπ½∩µ¿¿ ¿ ¡«óδÑ ßΓ᫬¿. àß½¿
  733.  ß½ÑñπεΘ¿⌐ ß¿¼ó«½ «Γ½¿τÑ¡ «Γ µ¿Σαδ ¿ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿, Γ«
  734.  ó«ºóαáΓ¿Γ∞ Ñú«. é »α«Γ¿ó¡«¼ ß½πτáÑ ß«íαáΓ∞ ßΓα«¬π µ¿Σα /«¡á
  735.  ¼«ªÑΓ ó¬½ετáΓ∞ ñÑß∩Γ¿τ¡πε Γ«τ¬π/ ¿ ó«ºóαáΓ¿Γ∞ NUMBER ¬á¬
  736.  ß¿ú¡á½ « Γ«¼, τΓ« óδíαá¡« τ¿ß½«.
  737.      Åα«µÑñπαá ßπΘÑßΓóÑ¡¡« πß½«ª¡∩ÑΓß∩, Ñß½¿ ßΓαѼ¿Γ∞ß∩ »αá-
  738.  ó¿½∞¡« «íαáíáΓδóáΓ∞ ß¿Γπᵿε, ¬«úñá óó«ñ¿¼«Ñ τ¿ß½« «¬áºδóá-
  739.  ÑΓß∩ ß½¿Φ¬«¼ ñ½¿¡¡δ¼. öπ¡¬µ¿∩ GETOP ßτ¿ΓδóáÑΓ µ¿Σαδ »«ñα∩ñ
  740.  /󫺼«ª¡« ß ñÑß∩Γ¿τ¡«⌐ Γ«τ¬«⌐/ ¿ ºá»«¼¿¡áÑΓ ¿σ, »«¬á »«ß½Ñ-
  741.  ñ«óáΓѽ∞¡«ßΓ∞ ¡Ñ »αÑαδóáÑΓß∩. àß½¿ »α¿ φΓ«¼ ¡Ñ »α«¿ßσ«ñ¿Γ
  742.  »ÑαÑ»«½¡Ñ¡¿∩, Γ« Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NUMBER ¿ ßΓα«¬π µ¿Σα.
  743.  àß½¿ ªÑ τ¿ß½« «¬áºδóáÑΓß∩ ß½¿Φ¬«¼ ñ½¿¡¡δ¼, Γ« GETOP «Γíαáßδ-
  744.  óáÑΓ «ßΓá½∞¡πε τáßΓ∞ ßΓ᫬¿ ¿º Σá⌐½á óó«ñá, ΓᬠτΓ« »«½∞º«-
  745.  óáΓѽ∞ ¼«ªÑΓ »α«ßΓ« »ÑαÑ»ÑτáΓáΓ∞ φΓπ ßΓ᫬π ß ¼ÑßΓá «Φ¿í¬¿;
  746.  Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ TOOBIG ¬á¬ ß¿ú¡á½ « »ÑαÑ»«½¡Ñ¡¿¿.
  747.  
  748.   GETOP(S, LIM) /* GET NEXT OPRERATOR OR OPERAND */
  749.   CHAR S[];
  750.   INT LIM;
  751.   {
  752.     INT I, C;
  753.  
  754.       WHILE((C=GETCH())==' '\!\! C=='\T' \!\! C=='\N')
  755.      ;
  756.     IF (C != '.' && (C < '0' \!\! C > '9'))
  757.      RETURN(C);
  758.     S[0] = C;
  759.     FOR(I=1; (C=GETCHAR()) >='0' && C <= '9'; I++)
  760.      IF (I < LIM)
  761.      
  762.         S[I] = C;
  763.    IF (C == '.') {   /* COLLECT FRACTION */
  764.     IF (I < LIM)
  765.        S[I] = C;
  766.    FOR(I++;(C=GETCHAR()) >='0' && C<='9';I++)
  767.        IF (I < LIM)
  768.            S[I] =C;
  769.    }
  770.    IF (I < LIM)  { /* NUMBER IS OK */
  771.    UNGETCH(C);
  772.    S[I] = '\0';
  773.    RETURN (NUMBER);
  774.  
  775.   } ELSE { /* IT'S TOO BIG; SKIP REST OF LINE */
  776.     WHILE (C != '\N' && C != EOF)
  777.            C = GETCHAR();
  778.     S[LIM-1] = '\0';
  779.     RETURN (TOOBIG);
  780.    }
  781.       }    
  782.                            - 88 -
  783.  
  784.      ùΓ« ªÑ »αÑñßΓáó½∩εΓ ¿º ßÑí∩ Σπ¡¬µ¿¿ 'GETCH' ¿ 'UNGETCH'?
  785.  ùáßΓ« ΓᬠíδóáÑΓ, τΓ« »α«úαá¼¼á, ßτ¿ΓδóáεΘá∩ óσ«ñ¡δÑ ñá¡¡δÑ,
  786.  ¡Ñ ¼«ªÑΓ «»αÑñѽ¿Γ∞, τΓ« «¡á »α«τ½á πªÑ ñ«ßΓáΓ«τ¡«, »«¬á «¡á
  787.  ¡Ñ »α«τΓÑΓ ß½¿Φ¬«¼ ¼¡«ú«. Äñ¡¿¼ ¿º »α¿¼Ñα«ó ∩ó½∩ÑΓß∩ óδí«α
  788.  ß¿¼ó«½«ó, ß«ßΓáó½∩εΘ¿σ τ¿ß½«: »«¬á ¡Ñ »«∩ó¿Γß∩ ß¿¼ó«½, «Γ-
  789.  ½¿τ¡δ⌐ «Γ µ¿Σαδ, τ¿ß½« ¡Ñ ºá¬«¡τÑ¡«. ì« »α¿ φΓ«¼ »α«úαá¼¼á
  790.  ßτ¿ΓδóáÑΓ «ñ¿¡ ½¿Φ¡¿⌐ ß¿¼ó«½, ß¿¼ó«½, ñ½∩ ¬«Γ«α«ú« «¡á ÑΘÑ
  791.  ¡Ñ »«ñú«Γ«ó½Ñ¡á.
  792.      ¥Γá »α«í½Ñ¼á íδ½á íδ αÑΦÑ¡á, Ñß½¿ íδ í佫 íδ ó«º¼«ª¡«
  793.  "»α«τÑßΓ∞ «íαáΓ¡«" ¡ÑªÑ½áΓѽ∞¡δ⌐ ß¿¼ó«½. Æ«úñá ¬áªñδ⌐ αáº,
  794.  »α«τ¿Γáó ½¿Φ¡¿⌐ ß¿¼ó«½, »α«úαἼᠼ«ú½á íδ »«¼ÑßΓ¿Γ∞ Ñú« «í-
  795.  αáΓ¡« ó Σá⌐½ óó«ñá Γᬿ¼ «íαẫ¼, τΓ« «ßΓá½∞¡á∩ τáßΓ∞ »α«ú-
  796.  αá¼¼δ ¼«ú½á íδ óÑßΓ¿ ßÑí∩ Γá¬, ß½«ó¡« φΓ«Γ ß¿¼ó«½ ¡¿¬«úñá ¡Ñ
  797.  ßτ¿Γδóá½ß∩. ¬ ßτáßΓ∞ε, ΓᬫѠ¡Ñ»«½πτÑ¡¿Ñ ß¿¼ó«½á ½Ñú¬« ¿¼¼¿-
  798.  Γ¿α«óáΓ∞, ¡á»¿ßáó »áαπ ñÑ⌐ßΓóπεΘ¿σ ß«ó¼ÑßΓ¡« Σπ¡¬µ¿⌐. öπ¡¬-
  799.  µ¿∩ GETCH ñ«ßΓáó½∩ÑΓ ß½ÑñπεΘ¿⌐ ß¿¼ó«½ óó«ñá, »«ñ½ÑªáΘ¿⌐ αáß-
  800.  ß¼«ΓαÑ¡¿ε; Σπ¡¬µ¿∩ UNGETCH »«¼ÑΘáÑΓ ß¿¼ó«½ ¡áºáñ ó« óó«ñ,
  801.  ΓᬠτΓ« »α¿ ß½ÑñπεΘѼ «íαáΘÑ¡¿¿ ¬ GETCH «¡ íπñÑΓ ó«ºóαáΘÑ¡.
  802.      Æ«, ¬á¬ φΓ¿ Σπ¡¬µ¿¿ ß«ó¼ÑßΓ¡« αáí«ΓáεΓ, óÑß∞¼á »α«ßΓ«.
  803.  öπ¡¬µ¿∩ UNGETCH »«¼ÑΘáÑΓ ó«ºóαáΘáѼδÑ ¡áºáñ ß¿¼ó«½δ ó ß«ó-
  804.  ¼ÑßΓ¡« ¿ß»«½∞ºπѼδ⌐ íπΣÑα, ∩ó½∩εΘ¿⌐ß∩ ß¿¼ó«½∞¡δ¼ ¼áßß¿ó«¼.
  805.  öπ¡¬µ¿∩ GETCH τ¿ΓáÑΓ ¿º φΓ«ú« íπΣÑαá, Ñß½¿ ó ¡Ñ¼ τΓ«-½¿í«
  806.  ¿¼ÑÑΓß∩; Ñß½¿ ªÑ íπΣÑα »πßΓ, «¡á «íαáΘáÑΓß∩ ¬ GETCHAR. Åα¿
  807.  φΓ«¼ ΓᬪѠ¡πª¡á ¿¡ñѬ߿απεΘá∩ »ÑαѼѡ¡á∩, ¬«Γ«αá∩ íπñÑΓ
  808.  Σ¿¬ß¿α«óáΓ∞ »«º¿µ¿ε ΓѬπΘÑú« ß¿¼ó«½á ó íπΣÑαÑ.
  809.      Æá¬ ¬á¬ íπΣÑα ¿ Ñú« ¿¡ñѬߠ߫ó¼ÑßΓ¡« ¿ß»«½∞ºπεΓß∩ Σπ¡¬-
  810.  µ¿∩¼¿ GETCH ¿ UNGETCH ¿ ñ«½ª¡δ ß«σαá¡∩Γ∞ ßó«¿ º¡áτÑ¡¿∩ ó »Ñ-
  811.  α¿«ñ ¼Ñªñπ «íαáΘÑ¡¿∩¼¿, «¡¿ ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿ ñ½∩ «íÑ¿σ
  812.  Σπ¡¬µ¿⌐. Æá¬¿¼ «íαẫ¼, ¼δ ¼«ªÑ¼ ¡á»¿ßáΓ∞ GETCH, UNGETCH ¿
  813.  φΓ¿ »ÑαѼѡ¡δÑ ¬á¬:
  814.  
  815.   #DEFINE  BUFSIZE  100
  816.   CHAR BUF[BUFSIZE]; /* BUFFER FOR UNGETCH */
  817.   INT BUFP = 0; /* NEXT FREE POSITION IN BUF */
  818.  
  819.       GETCH() /* GET A (POSSIBLY PUSHED BACK) CHARACTER */
  820.   {
  821.     RETURN((BUFP > 0) ? BUF[--BUFP] : GETCHAR());
  822.   }
  823.  
  824.       UNGETCH(C)  /* PUSH CHARACTER BACK ON INPUT */
  825.   INT C;
  826.   {
  827.      IF (BUFP > BUFSIZE)
  828.    PRINTF("UNGETCH: TOO MANY CHARACTERS\N");
  829.      ELSE
  830.    BUF [BUFP++] = C;
  831.   }
  832.  
  833.  îδ ¿ß»«½∞º«ó὿ ñ½∩ σαá¡Ñ¡¿∩ ó«ºóαáΘáѼδσ ß¿¼ó«½«ó ¼áßß¿ó, á
  834.  ¡Ñ «Γñѽ∞¡δ⌐ ß¿¼ó«½, »«Γ«¼π τΓ« Γá¬á∩ «íΘ¡«ßΓ∞ ¼«ªÑΓ »α¿ú«-
  835.  ñ¿Γ∞ß∩ ó ñá½∞¡Ñ⌐ΦѼ.
  836.      
  837.                            - 89 -
  838.      
  839.      
  840.      ô»α᪡ѡ¿Ñ  4-4.
  841.      ----------------
  842.  ìá»¿Φ¿ΓÑ Σπ¡¬µ¿ε UNGETS(S) , ¬«Γ«αá∩ íπñÑΓ ó«ºóαáΘáΓ∞ ó«
  843.  óó«ñ µÑ½πε ßΓ᫬π. ä«½ª¡á ½¿ UNGETS ¿¼ÑΓ∞ ñѽ« ß BUF ¿ BUFP
  844.  ¿½¿ «¡á ¼«ªÑΓ »α«ßΓ« ¿ß»«½∞º«óáΓ∞ UNGETCH ?
  845.      ô»α᪡ѡ¿Ñ  4-5.
  846.      ----------------
  847.  ÅαÑñ»«½«ª¿ΓÑ, τΓ« ¼«ªÑΓ ó«ºóαáΘáΓ∞ß∩ Γ«½∞¬« «ñ¿¡ ß¿¼ó«½. êº-
  848.  ¼Ñ¡¿ΓÑ GETCH ¿ UNGETCH ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼.
  849.      ô»α᪡ѡ¿Ñ  4-6.
  850.      ----------------
  851.  ìáΦ¿ Σπ¡¬µ¿¿ GETCH ¿ UNGETCH ¡Ñ «íÑß»Ñτ¿óáεΓ «íαáí«Γ¬π ó«ºó-
  852.  αáΘÑ¡¡«ú« ß¿¼ó«½á EOF »ÑαÑ¡«ß¿¼δ¼ «íαẫ¼. ÉÑΦ¿ΓÑ, ¬á¬¿¼
  853.  ßó«⌐ßΓó«¼ ñ«½ª¡δ «í½áñáΓ∞ φΓ¿ Σπ¡¬µ¿¿, Ñß½¿ ó«ºóαáΘáÑΓß∩
  854.  EOF, ¿ αÑ὿ºπ⌐ΓÑ óáΦ¿ óδó«ñδ.
  855.  
  856.       4.6. æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ.
  857.  
  858.      æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ »αÑñßΓáó½∩εΓ ß«í«⌐ ΓαÑΓ¿⌐ ¬½áßß
  859.  »á¼∩Γ¿, ó ñ«»«½¡Ñ¡¿¿ ¬ áóΓ«¼áΓ¿τÑ߬¿¼ »ÑαѼѡ¡δ¼ ¿ EXTERN, ß
  860.  ¬«Γ«α묨 ¼δ πªÑ óßΓαÑτ὿ß∞.
  861.      æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ¼«úπΓ íδΓ∞ ½¿í« ó¡πΓαÑ¡¡¿¼¿, ½¿í«
  862.  ó¡ÑΦ¡¿¼¿. é¡πΓαÑ¡¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ Γ«τ¡« ΓᬠªÑ,
  863.  ¬á¬ ¿ áóΓ«¼áΓ¿τÑ߬¿Ñ, ∩ó½∩εΓß∩ ½«¬á½∞¡δ¼¿ ñ½∩ ¡Ñ¬«Γ«α«⌐ Σπ¡-
  864.  ¬µ¿¿, ¡«, ó «Γ½¿τ¿Ñ «Γ áóΓ«¼áΓ¿τÑ߬¿σ, «¡¿ «ßΓáεΓß∩ ßπΘÑßΓ-
  865.  ó«óáΓ∞, á ¡Ñ »«∩ó½∩εΓß∩ ¿ ¿ßτѺáεΓ ó¼ÑßΓÑ ß «íαáΘÑ¡¿Ñ¼ ¬
  866.  φΓ«⌐ Σπ¡¬µ¿¿. φΓ« «º¡áτáÑΓ, τΓ« ó¡πΓαÑ¡¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαÑ-
  867.  ¼Ñ¡¡δÑ «íÑß»Ñτ¿óáεΓ »«ßΓ«∩¡¡«Ñ, ¡Ññ«ßΓπ»¡«Ñ ¿ºó¡Ñ σαá¡Ñ¡¿Ñ
  868.  ó¡πΓα¿ Σπ¡¬µ¿¿. æ¿¼ó«½∞¡δÑ ßΓ᫬¿, »«∩ó½∩εΘ¿Ñß∩ ó¡πΓα¿ Σπ¡¬-
  869.  µ¿¿, ¬á¬, ¡á»α¿¼Ñα, áαúπ¼Ñ¡Γδ PRINTF , ∩ó½∩εΓß∩ ó¡πΓαÑ¡¡¿¼¿
  870.  ßΓáΓ¿τÑ߬¿¼¿.
  871.      é¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ «»αÑñѽѡδ ó «ßΓá½∞¡«⌐
  872.  τáßΓ¿ Γ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, ó ¬«Γ«α«¼ «¡¿ «»¿ßá¡δ, ¡« ¡Ñ ó
  873.  ¬á¬«¼-½¿í« ñαπú«¼ Σá⌐½Ñ. Æá¬¿¼ «íαẫ¼, «¡¿ ñáεΓ ß»«ß«í
  874.  ß¬αδóáΓ∞ ¿¼Ñ¡á, »«ñ«í¡δÑ BUF ¿ BUFP ó ¬«¼í¿¡áµ¿¿
  875.  GETCH-UNGETCH, ¬«Γ«αδÑ ó ß¿½π ¿σ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩
  876.  ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿, ¡« óßÑ ªÑ ¡Ñ ñ«ßΓπ»¡δ¼¿ ñ½∩ »«½∞º«óá-
  877.  ΓѽÑ⌐ GETCH ¿ UNGETCH , τΓ«íδ ¿ß¬½ετá½áß∞ ó«º¼«ª¡«ßΓ∞ ¬«¡Σ-
  878.  ½¿¬Γá. àß½¿ φΓ¿ ñóÑ Σπ¡¬µ¿¿ ¿ ñóÑ »ÑαѼѡ¡δÑ «íΩÑñÑ¡¿Γ∞ ó
  879.  «ñ¡«¼ Σá⌐½Ñ ß½ÑñπεΘ¿¼ «íαẫ¼
  880.  
  881.  STATIC CHAR BUF[BUFSIZE]; /* BUFFER FOR UNGETCH */
  882.  STATIC INT BUFP=0; /*NEXT FREE POSITION IN BUF */
  883.  
  884.  GETCH()  {...}
  885.  
  886.  UNGETCH()  {...}
  887.  
  888.  Γ« ¡¿¬á¬á∩ ñαπúá∩ Σπ¡¬µ¿∩ ¡Ñ íπñÑΓ ó ß«ßΓ«∩¡¿¿ «íαáΓ¿Γ∞ß∩ ¬
  889.  BUF ¿ BUFP; Σá¬Γ¿τÑ߬¿, «¡¿ ¡Ñ íπñπΓ óßΓπ»áΓ∞ ó ¬«¡Σ½¿¬Γ ß
  890.  Γᬿ¼¿ ªÑ ¿¼Ñ¡á¼¿ ¿º ñαπú¿σ Σá⌐½«ó Γ«⌐ ªÑ ßἫ⌐ »α«úαá¼¼δ.
  891.      æΓáΓ¿τÑ߬á∩ »á¼∩Γ∞, ¬á¬ ó¡πΓαÑ¡¡∩∩, Γᬠ¿ ó¡ÑΦ¡∩∩, ß»Ñ-
  892.  µ¿Σ¿µ¿απÑΓß∩ ß½«ó«¼ STATIC , ßΓ«∩Θ¿¼ »ÑαÑñ «íδτ¡δ¼ «»¿ßá¡¿-
  893.  Ñ¼. ÅÑαѼѡ¡á∩ ∩ó½∩ÑΓß∩ ó¡ÑΦ¡Ñ⌐, Ñß½¿ «¡á «»¿ßá¡á ó¡Ñ ¬á¬«⌐
  894.  íδ Γ« ¡¿ í佫 Σπ¡¬µ¿¿, ¿ ó¡πΓαÑ¡¡Ñ⌐, Ñß½¿ «¡á «»¿ßá¡á ó¡πΓα¿
  895.  ¡Ñ¬«Γ«α«⌐ Σπ¡¬µ¿¿.
  896.      
  897.                            - 90 -
  898.      
  899.      ì«α¼á½∞¡« Σπ¡¬µ¿¿ ∩ó½∩εΓß∩ ó¡ÑΦ¡¿¼¿ «íΩѬΓἿ; ¿σ ¿¼Ñ¡á
  900.  ¿ºóÑßΓ¡δ ú½«íá½∞¡«. ó«º¼«ª¡«, «ñ¡á¬«, «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε ¬á¬
  901.  STATIC ; Γ«úñá ÑÑ ¿¼∩ ßΓá¡«ó¿Γß∩ ¡Ñ¿ºóÑßΓ¡δ¼ ó¡Ñ Σá⌐½á, ó
  902.  ¬«Γ«α«¼ «¡« «»¿ßá¡«.
  903.      é ∩ºδ¬Ñ "C" "STATIC" «ΓαáªáÑΓ ¡Ñ Γ«½∞¬« »«ßΓ«∩¡ßΓó«, ¡«
  904.  ¿ ßΓѻѡ∞ Γ«ú«, τΓ« ¼«ª¡« ¡áºóáΓ∞ "»α¿óáΓ¡«ßΓ∞ε". é¡πΓαÑ¡¡¿Ñ
  905.  ßΓáΓ¿τÑ߬¿Ñ «íΩѬΓδ «»αÑñѽѡδ Γ«½∞¬« ó¡πΓα¿ «ñ¡«⌐ Σπ¡¬µ¿¿;
  906.  ó¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ «íΩѬΓδ /»ÑαѼѡ¡δÑ ¿½¿ Σπ¡¬µ¿¿/ «»αÑñÑ-
  907.  ½Ñ¡δ Γ«½∞¬« ó¡πΓα¿ Γ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, úñÑ «¡¿ »«∩ó½∩εΓß∩,
  908.  ¿ ¿σ ¿¼Ñ¡á ¡Ñ óßΓπ»áεΓ ó ¬«¡Σ½¿¬Γ ß Γᬿ¼¿ ªÑ ¿¼Ñ¡á¼¿ »ÑαÑ-
  909.  ¼Ñ¡¡δσ ¿ Σπ¡¬µ¿⌐ ¿º ñαπú¿σ Σá⌐½«ó.
  910.      é¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ¿ Σπ¡¬µ¿¿ »αÑñ«ßΓáó½∩εΓ
  911.  ß»«ß«í «αúá¡¿º«óδóáΓ∞ ñá¡¡δÑ ¿ αáí«ΓáεΘ¿Ñ ß ¡¿¼¿ ó¡πΓαÑ¡¡¿Ñ
  912.  »α«µÑñπαδ Γᬿ¼ «íαẫ¼, τΓ« ñαπú¿Ñ »α«µÑñπαδ ¿ ñá¡¡δÑ ¡Ñ
  913.  ¼«úπΓ »α¿⌐Γ¿ ß ¡¿¼¿ ó ¬«¡Σ½¿¬Γ ñáªÑ »« ¡Ññ«αáºπ¼Ñ¡¿ε. ìá»α¿-
  914.  ¼Ñα, Σπ¡¬µ¿¿ GETCH ¿ UNGETCH «íαáºπεΓ "¼«ñπ½∞" ñ½∩ óó«ñá ¿
  915.  ó«ºóαáΘÑ¡¿∩ ß¿¼ó«½«ó; BUF ¿ BUFP ñ«½ª¡δ íδΓ∞ ßΓáΓ¿τÑ߬¿¼¿,
  916.  τΓ«íδ «¡¿ ¡Ñ í뫨 ñ«ßΓπ»¡δ ¿ºó¡Ñ. Æ«τ¡« ΓᬠªÑ Σπ¡¬µ¿¿ PUSH,
  917.  POP ¿ CLEAR Σ«α¼¿απεΓ ¼«ñπ½∞ «íαáí«Γ¬¿ ßΓѬá; VAR ¿ SP Γ«ªÑ
  918.  ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿ ßΓáΓ¿τÑ߬¿¼¿.
  919.  
  920.       4.7. ÉÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ.
  921.  
  922.      ùÑΓóÑαΓδ⌐ ¿ »«ß½Ññ¡¿⌐ ¬½áßß »á¼∩Γ¿ ¡áºδóáÑΓß∩ αÑú¿ßΓα«-
  923.  óδ¼. Ä»¿ßá¡¿Ñ REGISTER π¬áºδóáÑΓ ¬«¼»¿½∩Γ«απ, τΓ« ñá¡¡á∩ »Ñ-
  924.  αѼѡ¡á∩ íπñÑΓ τáßΓ« ¿ß»«½∞º«óáΓ∞ß∩. è«úñá φΓ« ó«º¼«ª¡«, »Ñ-
  925.  αѼѡ¡δÑ, «»¿ßá¡¡δÑ ¬á¬ REGISTER, αáß»«½áúáεΓß∩ ó ¼áΦ¿¡¡δσ
  926.  αÑú¿ßΓαáσ, τΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ¼Ñ¡∞Φ¿¼ »« αẼÑαπ ¿ í«½ÑÑ
  927.  íδßΓαδ¼ »α«úαá¼¼á¼. Ä»¿ßá¡¿Ñ REGISTER óδú½∩ñ¿Γ ¬á¬
  928.  
  929.   REGISTER INT X;
  930.   REGISTER CHAR C;
  931.  
  932.  ¿ Γ.ñ.; τáßΓ∞ INT ¼«ªÑΓ íδΓ∞ «»πΘÑ¡á. Ä»¿ßá¡¿Ñ REGISTER ¼«ª-
  933.  ¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ½∩ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ¿ Σ«α-
  934.  ¼á½∞¡δσ »áαá¼ÑΓα«ó Σπ¡¬µ¿⌐. é φΓ«¼ »«ß½Ññ¡Ñ¼ ß½πτáÑ «»¿ßá¡¿∩
  935.  óδú½∩ñ∩Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
  936.  
  937.   F(C,N)
  938.   REGISTER INT C,N;
  939.   {
  940.      REGISTER INT I;
  941.      ...
  942.   }
  943.            
  944.                            - 91 -
  945.  
  946.      ìá »αá¬Γ¿¬Ñ ó«º¡¿¬áεΓ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩ ¡á αÑú¿ßΓα«-
  947.  óδÑ »ÑαѼѡ¡δÑ, «ΓαáªáεΘ¿Ñ αÑá½∞¡δѠ󫺼«ª¡«ßΓ¿ ¿¼ÑεΘ¿σß∩
  948.  á»»áαáΓ¡δσ ßαÑñßΓó. é αÑú¿ßΓαδ ¼«ª¡« »«¼ÑßΓ¿Γ∞ Γ«½∞¬« ¡Ñß-
  949.  ¬«½∞¬« »ÑαѼѡ¡δσ ó ¬áªñ«⌐ Σπ¡¬µ¿¿, »α¿τѼ Γ«½∞¬« «»αÑñѽѡ-
  950.  ¡δσ Γ¿»«ó. é ß½πτáÑ »αÑóδΦÑ¡¿∩ ó«º¼«ª¡«ú« τ¿ß½á ¿½¿ ¿ß»«½∞-
  951.  º«óá¡¿∩ ¡ÑαáºαÑΦÑ¡¡δσ Γ¿»«ó ß½«ó« REGISTER ¿ú¡«α¿απÑΓß∩.
  952.  èα«¼Ñ Γ«ú« ¡Ñ󫺼«ª¡« ¿ºó½Ñτ∞ áñαÑß αÑú¿ßΓα«ó«⌐ »ÑαѼѡ¡«⌐
  953.  (φëàó«»α«ß «íßπªñáÑΓß∩ ó ú½áóÑ 5). ¥Γ¿ ß»Ñµ¿Σ¿τÑ߬¿Ñ «úαá-
  954.  ¡¿τÑ¡¿∩ óáα∞¿απεΓß∩ «Γ ¼áΦ¿¡δ ¬ ¼áΦ¿¡Ñ. Æá¬, ¡á»α¿¼Ñα, ¡á
  955.  PDP-11 φΣΣÑ¬Γ¿ó¡δ¼¿ ∩ó½∩εΓß∩ Γ«½∞¬« »ÑαóδÑ Γα¿ «»¿ßá¡¿∩
  956.  REGISTER ó Σπ¡¬µ¿¿, á ó ¬áτÑßΓóÑ Γ¿»«ó ñ«»π߬áεΓß∩ INT, CHAR
  957.  ¿½¿ π¬áºáΓѽ∞.
  958.  
  959.       4.8. ü½«τ¡á∩ ßΓαπ¬Γπαá.
  960.  
  961.      ƒºδ¬ "C" ¡Ñ ∩ó½∩ÑΓß∩ ∩ºδ¬«¼ ß í½«τ¡«⌐ ßΓαπ¬Γπα«⌐ ó ß¼δß-
  962.  ½Ñ PL/1 ¿½¿ á½ú«½á; ó ¡Ñ¼ ¡Ñ½∞º∩ «»¿ßδóáΓ∞ «ñ¡¿ Σπ¡¬µ¿¿
  963.  ó¡πΓα¿ ñαπú¿σ.
  964.      ÅÑαѼѡ¡δÑ ªÑ, ß ñαπú«⌐ ßΓ«α«¡δ, ¼«úπΓ «»αÑñѽ∩Γ∞ß∩ »«
  965.  ¼ÑΓ«ñπ í½«τ¡«ú« ßΓαπ¬Γπα¿α«óá¡¿∩. Ä»¿ßá¡¿∩ »ÑαѼѡ¡δσ (ó¬½ε-
  966.  τá∩ ¿¡¿µ¿á½¿ºáµ¿ε) ¼«úπΓ ß½Ññ«óáΓ∞ ºá ½Ñó«⌐ Σ¿úπα¡«⌐ ß¬«í-
  967.  ¬«⌐,«Γ¬αδóáεΘÑ⌐ ½εí«⌐ «»ÑαáΓ«α, á ¡Ñ Γ«½∞¬« ºá Γ«⌐, ß ¬«Γ«-
  968.  α«⌐ ¡áτ¿¡áÑΓß∩ Γѽ« Σπ¡¬µ¿¿. ÅÑαѼѡ¡δÑ, «»¿ßá¡¡δÑ Γᬿ¼ «í-
  969.  αẫ¼, óδΓÑß¡∩εΓ ½εíδÑ »ÑαѼѡ¡δÑ ¿º ó¡ÑΦ¡¿σ í½«¬«ó, ¿¼ÑεΘ¿Ñ
  970.  ΓᬿѠªÑ ¿¼Ñ¡á, ¿ «ßΓáεΓß∩ «»αÑñѽѡ¡δ¼¿ ñ« ß««ΓóÑΓßΓóπεΘÑ⌐
  971.  »αáó«⌐ Σ¿úπα¡«⌐ ß¬«í¬¿. ìá»α¿¼Ñα ó
  972.  
  973.  IF (N > 0)  {
  974.     INT I;  /* DECLARE A NEW I */
  975.     FOR (I = 0; I < N; I++)
  976.             ...
  977.  }
  978.  
  979.      Äí½áßΓ∞ε ñÑ⌐ßΓó¿∩ »ÑαѼѡ¡«⌐ I ∩ó½∩ÑΓß∩ "¿ßΓ¿¡¡á∩" óÑΓó∞
  980.  IF; φΓ« I ¡¿¬á¬ ¡Ñ ßó∩ºá¡« ¡¿ ß ¬á¬¿¼¿ ñαπú¿¼¿ I ó »α«úαá¼-
  981.  ¼Ñ.
  982.      ü½«τ¡á∩ ßΓαπ¬Γπαá ó½¿∩ÑΓ ¿ ¡á «í½áßΓ∞ ñÑ⌐ßΓó¿∩ ó¡ÑΦ¡¿σ
  983.  »ÑαѼѡ¡δσ. àß½¿ ñá¡δ «»¿ßá¡¿∩
  984.  
  985.  INT X;
  986.  
  987.  F()
  988.  {
  989.     DOUBLE X;
  990.     ...
  991.  }
  992.  
  993.  Æ« »«∩ó½Ñ¡¿Ñ X ó¡πΓα¿ Σπ¡¬µ¿¿ F «Γ¡«ß¿Γß∩ ¬ ó¡πΓαÑ¡¡Ñ⌐ »ÑαÑ-
  994.  ¼Ñ¡¡«⌐ Γ¿»á DOUBLE, á ó¡Ñ F - ¬ ó¡ÑΦ¡Ñ⌐ µÑ½«⌐ »ÑαѼѡ¡«⌐.
  995.  φΓ« ªÑ ß»αáóÑñ½¿ó« ó «Γ¡«ΦÑ¡¿¿ ¿¼Ñ¡ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó:
  996.  
  997.  INT X;
  998.  F(X)
  999.  DOUBLE X;
  1000.  {
  1001.     ...
  1002.  }
  1003.  
  1004.  é¡πΓα¿ Σπ¡¬µ¿¿ F ¿¼∩ X «Γ¡«ß¿Γß∩ ¬ Σ«α¼á½∞¡«¼π »áαá¼ÑΓαπ, á
  1005.  ¡Ñ ¬ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐.
  1006.  
  1007.       4.9. ê¡¿µ¿á½¿ºáµ¿∩.
  1008.  
  1009.      îδ ñ« ß¿σ »«α πªÑ ¼¡«ú« αáº π»«¼¿¡á½¿ ¿¡¿µ¿á½¿ºáµ¿ε, ¡«
  1010.  óßÑúñá ¼¿¼«σ«ñ«¼ , ßαÑñ¿ ñαπú¿σ ó«»α«ß«ó. ÆÑ»Ñα∞, »«ß½Ñ Γ«ú«
  1011.  ¬á¬ ¼δ «íßπñ¿½¿ αẽ¿τ¡δÑ ¬½áßßδ »á¼∩Γ¿, ¼δ ó φΓ«¼ αáºñѽÑ
  1012.  »α«ßπ¼¼¿απѼ ¡Ñ¬«Γ«αδÑ »αáó¿½á, «Γ¡«ß∩Θ¿Ñß∩ ¬ ¿¡¿µ¿á½¿ºáµ¿¿.
  1013.      àß½¿ ∩ó¡á∩ ¿¡¿µ¿á½¿ºáµ¿∩ «ΓßπΓßΓóπÑΓ, Γ« ó¡ÑΦ¡¿¼ ¿ ßΓá-
  1014.  Γ¿τÑ߬¿¼ »ÑαѼѡ¡δ¼ »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ ¡π½∞; áóΓ«¼áΓ¿-
  1015.  τÑ߬¿Ñ ¿ αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ ¿¼ÑεΓ ó φΓ«¼ ß½πτáÑ ¡Ñ«»αÑ-
  1016.  ñѽѡ¡δÑ º¡áτÑ¡¿∩ (¼πß«α).
  1017.      
  1018.                            - 92 -
  1019.      
  1020.      Åα«ßΓδÑ »ÑαѼѡ¡δÑ (¡Ñ ¼áßß¿óδ ¿½¿ ßΓαπ¬Γπαδ) ¼«ª¡« ¿¡¿-
  1021.  µ¿á½¿º¿α«óáΓ∞ »α¿ ¿σ «»¿ßá¡¿¿, ñ«íáó½∩∩ óß½Ññ ºá ¿¼Ñ¡Ñ¼ º¡á¬
  1022.  αáóÑ¡ßΓóá ¿ ¬«¡ßΓá¡Γ¡«Ñ óδαáªÑ¡¿Ñ:
  1023.  
  1024.   INT X = 1;
  1025.   CHAR SQUOTE = '\'';
  1026.   LONG DAY = 60 * 24;    /* MINUTES IN A DAY */
  1027.  
  1028.  ä½∩ ó¡ÑΦ¡¿σ ¿ ßΓáΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ¿¡¿µ¿á½¿ºáµ¿∩ óδ»«½¡∩-
  1029.  ÑΓß∩ Γ«½∞¬« «ñ¿¡ αáº, ¡á φΓá»Ñ ¬«¼»¿½∩µ¿¿. ÇóΓ«¼áΓ¿τÑ߬¿Ñ ¿
  1030.  αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ ¿¡¿µ¿á½¿º¿απεΓß∩ ¬áªñδ⌐ αẠ»α¿ óσ«ñÑ
  1031.  ó Σπ¡¬µ¿ε ¿½¿ í½«¬.
  1032.  é ß½πτáÑ áóΓ«¼áΓ¿τÑ߬¿σ ¿ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ ¿¡¿µ¿á½¿ºá-
  1033.  Γ«α ¡Ñ «í∩ºá¡ íδΓ∞ ¬«¡ßΓá¡Γ«⌐: ¡á ßἫ¼ ñѽѠ«¡ ¼«ªÑΓ íδΓ∞
  1034.  ½εíδ¼ º¡áτ¿¼δ¼ óδαáªÑ¡¿Ñ¼, ¬«Γ«α«Ñ ¼«ªÑΓ ó¬½ετáΓ∞ «»αÑñѽѡ-
  1035.  ¡δÑ αá¡ÑÑ óѽ¿τ¿¡δ ¿ ñáªÑ «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿∩¼. ìá»α¿¼Ñα,
  1036.  ¿¡¿µ¿á½¿ºáµ¿∩ ó »α«úαá¼¼Ñ í¿¡áα¡«ú« »«¿ß¬á ¿º ú½áóδ 3 ¼«ú½á
  1037.  íδ íδΓ∞ ºá»¿ßá¡á ó ó¿ñÑ
  1038.  
  1039.  
  1040.   BINARY(X, V, N)
  1041.   INT X, V[], N;
  1042.   {
  1043.      INT LOW = 0;
  1044.      INT HIGH = N - 1;
  1045.      INT MID;
  1046.      ...
  1047.   }
  1048.  
  1049.  ó¼ÑßΓ«
  1050.  
  1051.   BINARY(X, V, N)
  1052.   INT X, V[], N;
  1053.   {
  1054.      INT LOW, HIGH, MID;
  1055.  
  1056.      LOW = 0;
  1057.     HIGH = N - 1;
  1058.     ...
  1059.  }
  1060.  
  1061.  Å« ßó«Ñ¼π αѺπ½∞ΓáΓπ, ¿¡¿µ¿á½¿ºáµ¿¿ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ-
  1062.  ¡δσ ∩ó½∩εΓß∩ ß«¬αáΘÑ¡¡«⌐ ºá»¿ß∞ε «»ÑαáΓ«α«ó »α¿ßóá¿óá¡¿∩.
  1063.  èá¬πε Σ«α¼π »αÑñ»«τÑßΓ∞ - ó «ß¡«ó¡«¼ ñѽ« ó¬πßá. ¼δ «íδτ¡«
  1064.  ¿ß»«½∞ºπѼ ∩ó¡δÑ »α¿ßóá¿óá¡¿∩, »«Γ«¼π τΓ« ¿¡¿µ¿á½¿ºáµ¿∩ ó
  1065.  «»¿ßá¡¿∩σ ¼Ñ¡ÑÑ ºá¼ÑΓ¡á.
  1066.  ÇóΓ«¼áΓ¿τÑ߬¿Ñ ¼áßß¿óδ ¡Ñ ¼«úπΓ íδΓ∞ ¿¡¿µ¿á½¿º¿α«óá¡δ. é¡ÑΦ-
  1067.  ¡¿Ñ ¿ ßΓáΓ¿τÑ߬¿Ñ ¼áßß¿óδ ¼«ª¡« ¿¡¿µ¿á½¿º¿α«óáΓ∞, »«¼ÑΘá∩
  1068.  óß½Ññ ºá «»¿ß᡿Ѽ ºá¬½ετÑ¡¡δ⌐ ó Σ¿úπα¡δѠ߬«í¬¿ ß»¿ß«¬ ¡á-
  1069.  τá½∞¡δσ º¡áτÑ¡¿⌐, αáºñѽѡ¡δσ ºá»∩Γ묨. ìá»α¿¼Ñα »α«úαá¼¼á
  1070.  »«ñßτÑΓá ß¿¼ó«½«ó ¿º ú½áóδ 1, ¬«Γ«αá∩ ¡áτ¿¡á½áß∞ ß
  1071.            
  1072.                            - 93 -
  1073.      
  1074.      
  1075.  MAIN()     /* COUNT DIGITS, WHITE SPACE, OTHERS */
  1076.   (
  1077.    INT C, I, NWHITE, NOTHER;
  1078.    INT NDIGIT[10];
  1079.    
  1080.    NWHITE = NOTHER = 0;
  1081.    FOR (I = 0; I < 10; I++)
  1082.       NDIGIT[I] = 0;
  1083.    ...
  1084.   )
  1085.  
  1086.  ÄªÑΓ íδΓ∞ »ÑαÑ»¿ßá¡á ó ó¿ñÑ
  1087.  
  1088.   INT NWHITE = 0;
  1089.   INT NOTHER = 0;
  1090.   INT NDIGIT[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  1091.     
  1092.   MAIN()     /* COUNT DIGITS, WHITE SPACE, OTHERS */
  1093.    (
  1094.     INT C, I;
  1095.     ...
  1096.    )
  1097.  
  1098.  ¥Γ¿ ¿¡¿µ¿á½¿ºáµ¿¿ Σá¬Γ¿τÑ߬¿ ¡Ñ ¡πª¡δ, Γᬠ¬á¬ óßÑ »α¿ßóá¿-
  1099.  óáѼδÑ º¡áτÑ¡¿∩ αáó¡δ ¡π½ε, ¡« σ«α«Φ¿⌐ ßΓ¿½∞ - ßñѽáΓ∞ ¿σ
  1100.  ∩ó¡δ¼¿. àß½¿ ¬«½¿τÑßΓó« ¡áτá½∞¡δσ º¡áτÑ¡¿⌐ ¼Ñ¡∞ΦÑ, τѼ π¬á-
  1101.  ºá¡¡δ⌐ αẼÑα ¼áßß¿óá, Γ« «ßΓá½∞¡δÑ φ½Ñ¼Ñ¡Γδ ºá»«½¡∩εΓß∩ ¡π-
  1102.  ½∩¼¿. ÅÑαÑτ¿ß½Ñ¡¿Ñ ß½¿Φ¬«¼ í«½∞Φ«ú« τ¿ß½á ¡áτá½∞¡δσ º¡áτÑ¡¿⌐
  1103.  ∩ó½∩ÑΓß∩ «Φ¿í¬«⌐. è ß«ªá½Ñ¡¿ε, ¡Ñ »αÑñπß¼«ΓαÑ¡á ó«º¼«ª¡«ßΓ∞
  1104.  π¬áºá¡¿∩, τΓ« ¡Ñ¬«Γ«α«Ñ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«óΓ«α∩ÑΓß∩, ¿
  1105.  ¡Ñ½∞º∩ ¿¡¿µ¿á½¿º¿α«óáΓ∞ φ½Ñ¼Ñ¡Γ ó ßÑαÑñ¿¡Ñ ¼áßß¿óá íѺ »ÑαÑ-
  1106.  τ¿ß½Ñ¡¿∩ óßÑσ »αÑñδñπΘ¿σ.
  1107.      ä½∩ ß¿¼ó«½∞¡δσ ¼áßß¿ó«ó ßπΘÑßΓóπÑΓ ß»Ñµ¿á½∞¡δ⌐ ß»«ß«í
  1108.  ¿¡¿µ¿á½¿ºáµ¿¿; ó¼ÑßΓ« Σ¿úπα¡δσ ß¬«í«¬ ¿ ºá»∩Γδσ ¼«ª¡« ¿ß-
  1109.  »«½∞º«óáΓ∞ ßΓ᫬π:
  1110.  
  1111.   CHAR PATTERN[] = "THE";
  1112.  
  1113.  ¥Γ« ß«¬αáΘÑ¡¿Ñ í«½ÑÑ ñ½¿¡¡«⌐, ¡« φ¬ó¿óá½Ñ¡Γ¡«⌐ ºá»¿ß¿:
  1114.  
  1115.   CHAR PATTERN[] = { 'T', 'H', 'E', '\0' };
  1116.  
  1117.  àß½¿ αẼÑα ¼áßß¿óá ½εí«ú« Γ¿»á «»πΘÑ¡, Γ« ¬«¼»¿½∩Γ«α «»αÑ-
  1118.  ñѽ∩ÑΓ Ñú« ñ½¿¡π, »«ñßτ¿Γδóá∩ τ¿ß½« ¡áτá½∞¡δσ º¡áτÑ¡¿⌐. é
  1119.  φΓ«¼ ¬«¡¬αÑΓ¡«¼ ß½πτáÑ αẼÑα αáóÑ¡ τÑΓδαѼ (Γα¿ ß¿¼ó«½á
  1120.  »½εß ¬«¡Ñτ¡«Ñ \0).
  1121.      
  1122.                            - 94 -
  1123.      
  1124.       4.10. ÉѬπαß¿∩.
  1125.  
  1126.      é ∩ºδ¬Ñ "C" Σπ¡¬µ¿¿ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ αѬπαß¿ó¡«; φΓ«
  1127.  «º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ ¼«ªÑΓ »α∩¼« ¿½¿ ¬«ßóÑ¡¡« «íαáΘáΓ∞ß∩ ¬
  1128.  ßÑíÑ ßἫ⌐. Æαáñ¿µ¿«¡¡δ¼ »α¿¼Ñα«¼ ∩ó½∩ÑΓß∩ »ÑτáΓ∞ τ¿ß½á ó
  1129.  ó¿ñÑ ßΓ᫬¿ ß¿¼ó«½«ó. ¬á¬ ¼δ πªÑ αá¡ÑÑ «Γ¼Ñτ὿, µ¿Σαδ úÑ¡Ñ-
  1130.  α¿απεΓß∩ ¡Ñ ó Γ«¼ »«α∩ñ¬Ñ: µ¿Σαδ ¼½áñΦ¿σ αáºα∩ñ«ó »«∩ó½∩εΓß∩
  1131.  αá¡∞ΦÑ µ¿Σα ¿º ßΓáαΦ¿σ αáºα∩ñ«ó, ¡« »ÑτáΓáΓ∞ß∩ «¡¿ ñ«½ª¡δ ó
  1132.  «íαáΓ¡«¼ »«α∩ñ¬Ñ.
  1133.      ¥Γπ »α«í½Ñ¼π ¼«ª¡« αÑΦ¿Γ∞ ñóπ¼∩ ß»«ß«íἿ. ÅÑαóδ⌐ ß»«-
  1134.  ß«í, ¬«Γ«αδ¼ ¼δ ó«ß»«½∞º«ó὿ß∞ ó ú½áóÑ 3 ó Σπ¡¬µ¿¿ ITOA,
  1135.  ºá¬½ετáÑΓß∩ ó ºá»«¼¿¡á¡¿¿ µ¿Σα ó ¡Ñ¬«Γ«α«¼ ¼áßß¿óÑ »« ¼ÑαÑ
  1136.  ¿σ »«ßΓπ»½Ñ¡¿∩ ¿ »«ß½ÑñπεΘѼ ¿σ »ÑτáΓá¡¿¿ ó «íαáΓ¡«¼ »«α∩ñ-
  1137.  ¬Ñ. ÅÑαóδ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ PRINTD ß½ÑñπÑΓ φΓ«⌐ ßσѼÑ.
  1138.  
  1139.    PRINTD(N)    /* PRINT N IN DECIMAL */
  1140.    INT N;
  1141.    {
  1142.      CHAR S[10];
  1143.      INT I;
  1144.     
  1145.      IF (N < 0) {
  1146.         PUTCHAR('-');
  1147.         N = -N;
  1148.      }
  1149.      I = 0;
  1150.      DO {
  1151.         S[I++] = N % 10 + '0'; /* GET NEXT CHAR */
  1152.      } WHILE ((N /= 10) > 0); /* DISCARD IT */
  1153.      WHILE (--I >= 0)
  1154.         PUTCHAR(S[I]);
  1155.    }
  1156.     
  1157.  
  1158.      Ç½∞ΓÑα¡áΓ¿ó«⌐ φΓ«¼π ß»«ß«íπ ∩ó½∩ÑΓß∩ αѬπαß¿ó¡«Ñ αÑΦÑ-
  1159.  ¡¿Ñ, ¬«úñá »α¿ ¬áªñ«¼ ó맮óÑ Σπ¡¬µ¿∩ PRINTD ß¡áτá½á ß¡«óá
  1160.  «íαáΘáÑΓß∩ ¬ ßÑíÑ, τΓ«íδ ß¬«»¿α«óáΓ∞ ½¿ñ¿απεΘ¿Ñ µ¿Σαδ, á ºá-
  1161.  ΓѼ »ÑτáΓáÑΓ »«ß½Ññ¡εε µ¿Σαπ.
  1162.  
  1163.   PRINTD(N)   /* PRINT N IN DECIMAL (RECURSIVE)*/
  1164.   INT N;
  1165.    (
  1166.     INT I;
  1167.     
  1168.     IF (N < 0) {
  1169.        PUTCHAR('-');
  1170.        N = -N;
  1171.     }
  1172.     IF ((I = N/10) != 0)
  1173.        PRINTD(I);
  1174.     PUTCHAR(N % 10 + '0');
  1175.    )       
  1176.                            - 95 -
  1177.  
  1178.      è«úñá Σπ¡¬µ¿∩ óδºδóáÑΓ ßÑí∩ αѬπαß¿ó¡«, »α¿ ¬áªñ«¼ «íαá-
  1179.  ΘÑ¡¿¿ «íαáºπÑΓß∩ ¡«óδ⌐ ¡áí«α óßÑσ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ,
  1180.  ß«óÑαΦÑ¡¡« ¡Ñ ºáó¿ß∩Θ¿⌐ «Γ »αÑñδñπΘÑú« ¡áí«αá. Æá¬¿¼ «íαá-
  1181.  º«¼, ó PRINTD(123) »Ñαóá∩ Σπ¡¬µ¿∩ PRINTD ¿¼ÑÑΓ N = 123. Ä¡á
  1182.  »ÑαÑñáÑΓ 12 óΓ«α«⌐ PRINTD, á ¬«úñá Γá ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ
  1183.  Ñ⌐, »ÑτáΓáÑΓ 3. Æ«τ¡« ΓᬠªÑ óΓ«αá∩ PRINTD »ÑαÑñáÑΓ 1
  1184.  ΓαÑΓ∞Ñ⌐ (¬«Γ«αá∩ φΓπ Ññ¿¡¿µπ »ÑτáΓáÑΓ), á ºáΓѼ »ÑτáΓáÑΓ 2.
  1185.      ÉѬπαß¿∩ «íδτ¡« ¡Ñ ñáÑΓ ¡¿¬á¬«⌐ φ¬«¡«¼¿¿¿ »á¼∩Γ¿, »«ß-
  1186.  ¬«½∞¬π »α¿σ«ñ¿Γß∩ úñÑ-Γ« ß«ºñáóáΓ∞ ßΓѬ ñ½∩ «íαáíáΓδóáѼδσ
  1187.  º¡áτÑ¡¿⌐. ìÑ »α¿ó«ñ¿Γ «¡á ¿ ¬ ß«ºñá¡¿ε í«½ÑÑ íδßΓαδσ »α«ú-
  1188.  αá¼¼. ì« αѬπαß¿ó¡δÑ »α«úαá¼¼δ í«½ÑÑ ¬«¼»á¬Γ¡δ, ¿ «¡¿ ºáτáß-
  1189.  Γπε ßΓá¡«ó∩Γß∩ í«½ÑÑ ½Ñú¬¿¼¿ ñ½∩ »«¡¿¼á¡¿∩ ¿ ¡á»¿ßá¡¿∩. ÉÑ-
  1190.  ¬παß¿∩ «ß«íÑ¡¡« πñ«í¡á »α¿ αáí«ΓÑ ß αѬπα߿󡫠«»αÑñѽ∩Ñ¼δ¼¿
  1191.  ßΓαπ¬ΓπαἿ ñá¡¡δσ, ¡á»α¿¼Ñα, ß ñÑαÑó∞∩¼¿; σ«α«Φ¿⌐ »α¿¼Ñα
  1192.  íπñÑΓ »α¿óÑñÑ¡ ó ú½áóÑ 6.
  1193.      ô»α᪡ѡ¿Ñ 4-7.
  1194.      --------------
  1195.      Åα¿ß»«ß«í∞ΓÑ ¿ñÑ¿, ¿ß»«½∞º«óá¡¡δÑ ó PRINTD ñ½∩ αѬπαß¿ó-
  1196.  ¡«ú«  ¡á»¿ßá¡¿∩ ITOA; Γ.Ñ. ÅαÑ«íαáºπ⌐ΓÑ µÑ½«Ñ ó ßΓ᫬π ß »«-
  1197.  ¼«Θ∞ε αѬπαß¿ó¡«⌐ »α«µÑñπαδ.
  1198.  
  1199.      ô»α᪡ѡ¿Ñ 4-8.
  1200.      --------------
  1201.      ìá»¿Φ¿ΓÑ αѬπαß¿ó¡δ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ REVERSE(S), ¬«Γ«αá∩
  1202.  αáß»«½áúáÑΓ ó «íαáΓ¡«¼ »«α∩ñ¬Ñ ßΓ᫬π S.
  1203.  
  1204.       4.11. ÅαÑ»α«µÑßß«α ∩ºδ¬á "C".
  1205.  
  1206.      é ∩ºδ¬Ñ "ß" »αÑñπß¼«ΓαÑ¡δ «»αÑñѽѡ¡δÑ αáßΦ¿αÑ¡¿∩ ∩ºδ¬á
  1207.  ß »«¼«Θ∞ε »α«ßΓ«ú« ¼á¬α«»αÑñ»α«µÑßß«αá. «ñ¡¿¼ ¿º ßá¼δσ αáß»-
  1208.  α«ßΓαá¡Ñ¡¡δσ Γᬿσ αáßΦ¿αÑ¡¿⌐, ¬«Γ«α«Ñ ¼δ πªÑ ¿ß»«½∞º«ó὿,
  1209.  ∩ó½∩ÑΓß∩ ¬«¡ßΓαπ¬µ¿∩ #DEFINE; ñαπú¿¼ αáßΦ¿αÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩
  1210.  ó«º¼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿ ß«ñÑন¼«Ñ ñαπú¿σ
  1211.  Σá⌐½«ó.
  1212.  
  1213.       4.11.1. é¬½ετÑ¡¿Ñ Σá⌐½«ó
  1214.  
  1215.      ä½∩ «í½ÑúτÑ¡¿∩ αáí«Γδ ß ¡áí«αἿ ¬«¡ßΓαπ¬µ¿⌐ #DEFINE ¿
  1216.  «»¿ßá¡¿⌐ (ßαÑñ¿ »α«τ¿σ ßαÑñßΓó) ó ∩ºδ¬Ñ "ß" »αÑñπß¼«ΓαÑ¡á
  1217.  ó«º¼«ª¡«ßΓ∞ ó¬½ετÑ¡¿∩ Σá⌐½«ó. ïεíá∩ ßΓ᫬á ó¿ñá
  1218.  
  1219.   #INCLUDE "FILENAME"
  1220.  
  1221.  ºá¼Ñ¡∩ÑΓß∩ ß«ñÑন¼δ¼ Σá⌐½á ß ¿¼Ñ¡Ñ¼ FILENAME. (èáóδτ¬¿ «í∩-
  1222.  ºáΓѽ∞¡δ). ùáßΓ« «ñ¡á ¿½¿ ñóÑ ßΓ᫬¿ Γᬫú« ó¿ñá »«∩ó½∩εΓß∩
  1223.  ó ¡áτá½Ñ ¬áªñ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, ñ½∩ Γ«ú« τΓ«íδ ó¬½ετ¿Γ∞
  1224.  «íΘ¿Ñ ¬«¡ßΓαπ¬µ¿¿ #DEFINE ¿ «»¿ßá¡¿∩ EXTERN ñ½∩ ú½«íá½∞¡δσ
  1225.  »ÑαѼѡ¡δσ. ä«»π߬áÑΓß∩ ó½«ªÑ¡¡«ßΓ∞ ¬«¡ßΓαπ¬µ¿⌐ #INCLUDE.
  1226.      è«¡ßΓαπ¬µ¿∩ #INCLUDE ∩ó½∩ÑΓß∩ »αÑñ»«τΓ¿Γѽ∞¡δ¼ ß»«ß«í«¼
  1227.  ßó∩º¿ «»¿ßá¡¿⌐ ó í«½∞Φ¿σ »α«úαá¼¼áσ. ¥Γ«Γ ß»«ß«í úáαá¡Γ¿απ-
  1228.  ÑΓ, τΓ« óßÑ ¿ßσ«ñ¡δÑ Σá⌐½δ íπñπΓ ß¡áíªÑ¡δ «ñ¿¡á¬«ó묨 «»αÑ-
  1229.  ñѽѡ¿∩¼¿ ¿ «»¿ßá¡¿∩¼¿ »ÑαѼѡ¡δσ, ¿, ß½Ññ«óáΓѽ∞¡«, ¿ß¬½ε-
  1230.  τáÑΓ «ß«íÑ¡¡« ¡Ñ»α¿∩Γ¡δ⌐ ß«αΓ «Φ¿í«¬. àßΓÑßΓóÑ¡¡«, ¬«úñá ¬á-
  1231.  ¬«⌐-TO ó¬½ετáѼδ⌐ Σá⌐½ ¿º¼Ñ¡∩ÑΓß∩, óßÑ ºáó¿ß∩Θ¿Ñ «Γ ¡Ñú«
  1232.  Σá⌐½δ ñ«½ª¡δ íδΓ∞ »ÑαѬ«¼»¿½¿α«óá¡δ.
  1233.            
  1234.                            - 96 -
  1235.      
  1236.      4.11.2. îá¬α«»«ñßΓá¡«ó¬á
  1237.  
  1238.      Ä»αÑñѽѡ¿Ñ ó¿ñá
  1239.  
  1240.   #DEFINE TES     1
  1241.  
  1242.  »α¿ó«ñ¿Γ ¬ ¼á¬α«»«ñßΓá¡«ó¬Ñ ßἫú« »α«ßΓ«ú« ó¿ñá - ºá¼Ñ¡Ñ
  1243.  ¿¼Ñ¡¿ ¡á ßΓ᫬π ß¿¼ó«½«ó. ê¼Ñ¡á ó #DEFINE ¿¼ÑεΓ Γπ ªÑ ßá¼πε
  1244.  Σ«α¼π, τΓ« ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó "ß"; ºá¼Ñ¡∩εΘ¿⌐ ΓѬßΓ ß«óÑα-
  1245.  ΦÑ¡¡« »α«¿ºó«½Ñ¡. ì«α¼á½∞¡« ºá¼Ñ¡∩εΘ¿¼ ΓѬßΓ«¼ ∩ó½∩ÑΓß∩ «ß-
  1246.  Γá½∞¡á∩ τáßΓ∞ ßΓ᫬¿; ñ½¿¡¡«Ñ «»αÑñѽѡ¿Ñ ¼«ª¡« »α«ñ«½ª¿Γ∞,
  1247.  »«¼ÑßΓ¿ó \ ó ¬«¡Ñµ »α«ñ«½ªáѼ«⌐ ßΓ᫬¿. "Äí½áßΓ∞ ñÑ⌐ßΓó¿∩"
  1248.  ¿¼Ñ¡¿, «»αÑñѽѡ¡«ú« ó #DEFINE, »α«ßΓ¿αáÑΓß∩ «Γ Γ«τ¬¿ «»αÑ-
  1249.  ñѽѡ¿∩ ñ« ¬«¡µá ¿ßσ«ñ¡«ú« Σá⌐½á. ¿¼Ñ¡á ¼«úπΓ íδΓ∞ »ÑαÑ«»αÑ-
  1250.  ñѽѡδ, ¿ «»αÑñѽѡ¿∩ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¿∩, ßñÑ-
  1251.  ½á¡¡δÑ αá¡ÑÑ. é¡πΓα¿ ºá¬½ετÑ¡¡δσ ó ¬áóδτ¬¿ ßΓ᫬ »«ñßΓá¡«ó¬¿
  1252.  ¡Ñ »α«¿ºó«ñ∩Γß∩, ΓᬠτΓ« Ñß½¿, ¡á»α¿¼Ñα, YES - «»αÑñѽѡ¡«Ñ
  1253.  ¿¼∩, Γ« ó PRINTF("YES") ¡Ñ íπñÑΓ ßñѽᡫ ¡¿¬á¬«⌐ »«ñßΓá¡«ó-
  1254.  ¬¿.
  1255.      Æá¬ ¬á¬ αÑ὿ºáµ¿∩ #DEFINE ∩ó½∩ÑΓß∩ τáßΓ∞ε αáí«Γδ
  1256.  ¼áKα«»αÑñ»α«µÑßß«αá, á ¡Ñ ß«íßΓóÑ¡¡« ¬«¼»¿½∩Γ«αá, ¿¼ÑÑΓß∩
  1257.  «τÑ¡∞ ¼á½« úαá¼¼áΓ¿τÑ߬¿σ «úαá¡¿τÑ¡¿⌐ ¡á Γ«, τΓ« ¼«ªÑΓ íδΓ∞
  1258.  «»αÑñѽѡ«. Æá¬, ¡á»α¿¼Ñα, ½εí¿Γѽ¿ á½ú«½á ¼«úπΓ «íΩ∩ó¿Γ∞
  1259.  
  1260.  #DEFINE THEN
  1261.  #DEFINE BEGIN {
  1262.  #DEFINE END   ;}
  1263.  
  1264.  ¿ ºáΓѼ ¡á»¿ßáΓ∞
  1265.  
  1266.  IF (I > 0) THEN
  1267.     BEGIN
  1268.             A = 1;
  1269.             B = 2
  1270.     END
  1271.  
  1272.      ê¼ÑÑΓß∩ ΓᬪѠ󫺼«ª¡«ßΓ∞ «»αÑñѽѡ¿∩ ¼á¬α«ßá ß áαúπ¼Ñ¡-
  1273.  ΓἿ, ΓᬠτΓ« ºá¼Ñ¡∩εΘ¿⌐ ΓѬßΓ íπñÑΓ ºáó¿ßÑΓ∞ «Γ ó¿ñá «íαá-
  1274.  ΘÑ¡¿∩ ¬ ¼á¬α«ßπ. Ä»αÑñѽ¿¼, ¡á»α¿¼Ñα, ¼á¬α«ß ß ¿¼Ñ¡Ñ¼ MAX
  1275.  ß½ÑñπεΘ¿¼ «íαẫ¼:
  1276.  
  1277.  #DEFINE MAX(A, B)  ((A) > (B) ? (A) : (B))
  1278.  
  1279.  ¬«úñá ßΓ᫬á
  1280.  
  1281.  X = MAX(P+Q, R+S);
  1282.  
  1283.  íπñÑΓ ºá¼Ñ¡Ñ¡á ßΓ᫬«⌐
  1284.  
  1285.  X = ((P+Q) > (R+S) ? (P+Q) : (R+S));
  1286.  
  1287.  Æá¬á∩ ó«º¼«ª¡«ßΓ∞ «íÑß»Ñτ¿óáÑΓ "Σπ¡¬µ¿ε ¼á¬ß¿¼π¼á", ¬«Γ«αá∩
  1288.  αáßΦ¿α∩ÑΓß∩ ó »«ß½Ññ«óáΓѽ∞¡δ⌐ ¬«ñ, á ¡Ñ ó «íαáΘÑ¡¿Ñ ¬ Σπ¡¬-
  1289.  µ¿¿. Åα¿ »αáó¿½∞¡«¼ «íαáΘÑ¡¿¿ ß áαúπ¼Ñ¡ΓἿ Γᬫ⌐ ¼á¬α«ß íπ-
  1290.  ñÑΓ αáí«ΓáΓ∞ ß ½εí묨 Γ¿»á¼¿ ñá¡¡δσ; ºñÑß∞ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿
  1291.  ó αẽ¿τ¡δσ ó¿ñáσ MAX ñ½∩ ñá¡¡δσ αạδσ Γ¿»«ó, ¬á¬ φΓ« í佫
  1292.  íδ ß Σπ¡¬µ¿∩¼¿.
  1293.      
  1294.                            - 97 -
  1295.      
  1296.      è«¡Ñτ¡«, Ñß½¿ óδ ΓΘáΓѽ∞¡« αáßß¼«Γα¿ΓÑ »α¿óÑñÑ¡¡«Ñ óδΦÑ
  1297.  αáßΦ¿αÑ¡¿Ñ MAX, óδ ºá¼ÑΓ¿ΓÑ «»αÑñѽѡ¡δÑ ¡Ññ«ßΓáΓ¬¿. éδαáªÑ-
  1298.  ¡¿∩ óδτ¿ß½∩εΓß∩ ñóáªñδ; φΓ« »½«σ«, Ñß½¿ «¡¿ ó½Ñ¬πΓ ºá ß«í«⌐
  1299.  »«í«τ¡δÑ φΣΣѬΓδ, óδºóá¡¡δÑ, ¡á»α¿¼Ñα, «íαáΘÑ¡¿∩¼¿ ¬ Σπ¡¬µ¿-
  1300.  ∩¼ ¿½¿ ¿ß»«½∞º«ó᡿Ѽ «»Ñαᵿ⌐ πóѽ¿τÑ¡¿∩. ìπª¡« »«ºáí«Γ¿Γ∞-
  1301.  ß∩ « »αáó¿½∞¡«¼ ¿ß»«½∞º«óá¡¿¿ ¬απú½δσ ß¬«í«¬, τΓ«íδ úáαá¡Γ¿-
  1302.  α«óáΓ∞ ß«σαá¡Ñ¡¿Ñ ΓαÑíπѼ«ú« »«α∩ñ¬á óδτ¿ß½Ñ¡¿⌐. (Éáßß¼«Γα¿-
  1303.  ΓÑ ¼á¬α«ß
  1304.  
  1305.    #DEFINE SQUARE(X)  X * X
  1306.  
  1307.  »α¿ «íαáΘÑ¡¿¿ ¬ ¡Ñ⌐, ¬á¬ SQUARE(Z+1)). çñÑß∞ ó«º¡¿¬áεΓ ñáªÑ
  1308.  ¡Ñ¬«Γ«αδÑ τ¿ßΓ« ½Ñ¬ß¿τÑ߬¿Ñ »α«í½Ñ¼δ: ¼Ñªñπ ¿¼Ñ¡Ñ¼ ¼á¬α« ¿
  1309.  ½Ñó«⌐ ¬απú½«⌐ ß¬«í¬«⌐, «Γ¬αδóáεΘÑ⌐ ß»¿ß«¬ ÑÑ áαúπ¼Ñ¡Γ«ó, ¡Ñ
  1310.  ñ«½ª¡« íδΓ∞ ¡¿¬á¬¿σ »α«íѽ«ó.
  1311.      ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ á»»áαáΓ ¼á¬α«ß«ó ∩ó½∩ÑΓß∩ óÑß∞¼á µÑ¡¡δ¼.
  1312.  Äñ¿¡ »αá¬Γ¿τÑ߬¿⌐ »α¿¼Ñα ñáÑΓ «»¿ßδóáѼá∩ ó ú½áóÑ 7 ßΓá¡ñáα-
  1313.  Γ¡á∩ í¿í½¿«ΓѬá óó«ñá-óδó«ñá, ó ¬«Γ«α«⌐ GETCHAR ¿ PUTCHAR
  1314.  «»αÑñÑ½Ñ¡δ ¬á¬ ¼á¬α«ßδ («τÑó¿ñ¡« PUTCHAR ñ«½ª¡á ¿¼ÑΓ∞ áαúπ-
  1315.  ¼Ñ¡Γ), τΓ« »«ºó«½∩ÑΓ ¿ºíѪáΓ∞ ºáΓαáΓ ¡á «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿
  1316.  »α¿ «íαáí«Γ¬Ñ ¬áªñ«ú« ß¿¼ó«½á.
  1317.      äαπú¿Ñ ó«º¼«ª¡«ßΓ¿ ¼á¬α«»α«µÑßß«αá «»¿ßá¡δ ó »α¿½«ªÑ¡¿¿
  1318.  Ç.
  1319.      ô»α᪡ѡ¿Ñ 4-9.
  1320.      ---------------
  1321.      Ä»αÑñѽ¿ΓÑ ¼á¬α«ß SWAP(X, Y), ¬«Γ«αδ⌐ «í¼Ñ¡¿óáÑΓ º¡áτÑ-
  1322.  ¡¿∩¼¿ ñóá ßó«¿σ áαúπ¼Ñ¡Γá Γ¿»á INT. (é φΓ«¼ ß½πτáÑ »«¼«ªÑΓ
  1323.  í½«τ¡á∩ ßΓαπ¬Γπαá).
  1324.