home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-11-18 | 49.7 KB | 1,324 lines |
- - 73 -
-
- 4. öπ¡¬µ¿¿ ¿ ßΓαπ¬Γπαá »α«úαá¼¼.
-
- öπ¡¬µ¿¿ αáºí¿óáεΓ í«½∞Φ¿Ñ óδτ¿ß½¿Γѽ∞¡δÑ ºáñáτ¿ ¡á ¼á-
- ½Ñ¡∞¬¿Ñ »«ñºáñáτ¿ ¿ »«ºó«½∩εΓ ¿ß»«½∞º«óáΓ∞ ó αáí«ΓÑ Γ«, τΓ«
- πªÑ ßñѽᡫ ñαπú¿¼¿, á ¡Ñ ¡áτ¿¡áΓ∞ ¬áªñδ⌐ αáº ß »πßΓ«ú« ¼Ñß-
- Γá. æ««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿ τáßΓ« ¼«úπΓ ß¬αδóáΓ∞ ó ßÑíÑ ñÑ-
- Γ὿ »α«ó«ñ¿¼δσ ó αạδσ τáßΓ∩σ »α«úαá¼¼δ «»Ñαᵿ⌐, º¡áΓ∞
- ¬«Γ«αδÑ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿, »α«∩ß¡∩∩ ΓѼ ßá¼δ¼ óßε »α«úαá¼¼π,
- ¬á¬ µÑ½«Ñ, ¿ «í½Ñúτá∩ ¼πτÑ¡¿∩ »α¿ ó¡ÑßÑ¡¿¿ ¿º¼Ñ¡Ñ¡¿⌐.
- ƒºδ¬ "C" αáºαáíáΓδóá½ß∩ ß« ßΓαѼ½Ñ¡¿Ñ¼ ßñѽáΓ∞ Σπ¡¬µ¿¿
- φΣΣÑ¬Γ¿ó¡δ¼¿ ¿ πñ«í¡δ¼¿ ñ½∩ ¿ß»«½∞º«óá¡¿∩; "C"-»α«úαá¼¼δ
- «íδτ¡« ß«ßΓ«∩Γ ¿º í«½∞Φ«ú« τ¿ß½á ¼á½Ñ¡∞¬¿σ Σπ¡¬µ¿⌐, á ¡Ñ ¿º
- ¡Ñ߬«½∞¬¿σ í«½∞Φ¿σ. Åα«úαá¼¼á ¼«ªÑΓ αẼÑΘáΓ∞ß∩ ó «ñ¡«¼ ¿½¿
- ¡Ñ߬«½∞¬¿σ ¿ßσ«ñ¡δσ Σá⌐½áσ ½εíδ¼ πñ«í¡δ¼ «íαẫ¼; ¿ßσ«ñ¡δÑ
- Σá⌐½δ ¼«úπΓ ¬«¼»¿½¿α«óáΓ∞ß∩ «Γñѽ∞¡« ¿ ºáúαπªáΓ∞ß∩ ó¼ÑßΓÑ
- ¡áα∩ñπ ß« ߬«¼»¿½¿α«óá¡¡δ¼¿ αá¡ÑÑ Σπ¡¬µ¿∩¼¿ ¿º í¿í½¿«ΓѬ. îδ
- ºñÑß∞ ¡Ñ íπñѼ óñáóáΓ∞ß∩ ó ñÑΓ὿ φΓ«ú« »α«µÑßßá, »«ß¬«½∞¬π
- «¡¿ ºáó¿ß∩Γ «Γ ¿ß»«½∞ºπѼ«⌐ ß¿ßΓѼδ.
- ü«½∞Φ¿¡ßΓó« »α«úαá¼¼¿ßΓ«ó σ«α«Φ« º¡á¬«¼δ ß "í¿í½¿«ΓÑτ¡δ-
- ¼¿" Σπ¡¬µ¿∩¼¿ ñ½∩ óó«ñá ¿ óδó«ñá /GETCHAR , PUTCHAR/ ¿ ñ½∩
- τ¿ß½Ñ¡¡δσ αáßτÑΓ«ó /SIN, COS, SQRT/. é φΓ«⌐ ú½áóÑ ¼δ ß««íΘ¿¼
- í«½∞ΦÑ « ¡á»¿ßá¡¿¿ ¡«óδσ Σπ¡¬µ¿⌐.
-
- 4.1. Äß¡«ó¡δÑ ßóÑñÑ¡¿∩.
-
- ä½∩ ¡áτá½á ñáóá⌐ΓÑ αáºαáí«ΓáѼ ¿ ß«ßΓáó¿¼ »α«úαá¼¼π »Ñ-
- τáΓ¿ ¬áªñ«⌐ ßΓ᫬¿ óó«ñá, ¬«Γ«αá∩ ß«ñÑαª¿Γ «»αÑñѽѡ¡πε ¬«¼-
- í¿¡áµ¿ε ß¿¼ó«½«ó. /¥Γ« - ߻ѵ¿á½∞¡δ⌐ ß½πτá⌐ πΓ¿½¿Γδ GREP
- ß¿ßΓѼδ "UNIX"/. ìá»α¿¼Ñα, »α¿ »«¿ß¬Ñ ¬«¼í¿¡áµ¿¿ "THE" ó ¡á-
- í«αÑ ßΓ᫬
-
- NOW IS THE TIME
- FOR ALL GOOD
- MEN TO COME TO THE AID
- OF THEIR PARTY
- ó ¬áτÑßΓóÑ óδσ«ñá »«½πτ¿¼
-
- NOW IS THE TIME
- MEN TO COME TO THE AID
- OF THEIR PARTY
-
-
- «ß¡«ó¡á∩ ßσѼá óδ»«½¡Ñ¡¿∩ ºáñá¡¿∩ τÑΓ¬« αáºñѽ∩ÑΓß∩ ¡á Γα¿
- τáßΓ¿:
-
- WHILE (¿¼ÑÑΓß∩ ÑΘÑ ßΓ᫬á)
- IF (ßΓ᫬á ß«ñÑαª¿Γ ¡πª¡πε ¬«¼í¿¡áµ¿ε)
- óδó«ñ φΓ«⌐ ßΓ᫬¿
-
-
- - 74 -
-
- è«¡Ñτ¡«, 󫺼«ª¡« ºá»α«úαá¼¼¿α«óáΓ∞ óßÑ ñÑ⌐ßΓó¿∩ ó ó¿ñÑ
- «ñ¡«⌐ «ß¡«ó¡«⌐ »α«µÑñπαδ, ¡« ½πτΦÑ ¿ß»«½∞º«óáΓ∞ ÑßΓÑßΓóÑ¡¡πε
- ßΓαπ¬Γπαπ ºáñáτ¿ ¿ »αÑñßΓáó¿Γ∞ ¬áªñπε τáßΓ∞ ó ó¿ñÑ «Γñѽ∞¡«⌐
- Σπ¡¬µ¿¿. æ ΓαѼ∩ ¼á½Ñ¡∞¬¿¼¿ ¬π߬Ἷ ½ÑúτÑ ¿¼ÑΓ∞ ñѽ«, τѼ ß
- «ñ¡¿¼ í«½∞Φ¿¼, »«Γ«¼π τΓ« «Γñѽ∞¡δÑ ¡Ñ «Γ¡«ß∩Θ¿Ñß∩ ¬ ßπΘÑßΓ-
- óπ ñѽá ñÑΓ὿ ¼«ª¡« ó¬½ετ¿Γ∞ ó Σπ¡¬µ¿¿ ¿ π¼Ñ¡∞Φ¿Γ∞ 󫺼«ª-
- ¡«ßΓ∞ ¡ÑªÑ½áΓѽ∞¡δσ óºá¿¼«ñÑ⌐ßΓó¿⌐. èα«¼Ñ Γ«ú«, φΓ¿ ¬π߬¿
- ¼«úπΓ «¬áºáΓ∞ß∩ »«½Ñº¡δ¼¿ ßἿ »« ßÑíÑ.
-
- "Å«¬á ¿¼ÑÑΓß∩ ÑΘÑ ßΓ᫬á" - φΓ« GETLINE, Σπ¡¬µ¿∩, ¬«Γ«-
- απε ¼δ ºá»α«úαá¼¼¿α«ó὿ ó ú½áóÑ 1, á "óδó«ñ φΓ«⌐ ßΓ᫬¿" -
- φΓ« Σπ¡¬µ¿∩ PRINTF, ¬«Γ«απε πªÑ ¬Γ«-Γ« »«ñú«Γ«ó¿½ ñ½∩ ¡áß.
- ¥Γ« º¡áτ¿Γ, τΓ« ¡á¼ «ßΓὫß∞ Γ«½∞¬« ¡á»¿ßáΓ∞ »α«µÑñπαπ ñ½∩
- «»αÑñѽѡ¿∩, ß«ñÑαª¿Γ ½¿ ßΓ᫬á ñá¡¡πε ¬«¼í¿¡áµ¿ε ß¿¼ó«½«ó
- ¿½¿ ¡ÑΓ. îδ ¼«ªÑ¼ αÑΦ¿Γ∞ φΓπ »α«í½Ñ¼π, »«ºá¿¼ßΓó«óáó αáºαá-
- í«Γ¬π ¿º PL/1: Σπ¡¬µ¿∩ INDEX(S,Γ) ó«ºóαáΘáÑΓ »«º¿µ¿ε, ¿½¿
- ¿¡ñѬß, ßΓ᫬¿ S, úñÑ ¡áτ¿¡áÑΓß∩ ßΓ᫬á T, ¿ -1, Ñß½¿ S ¡Ñ
- ß«ñÑαª¿Γ Γ . é ¬áτÑßΓóÑ ¡áτá½∞¡«⌐ »«º¿µ¿¿ ¼δ ¿ß»«½∞ºπѼ 0, á
- ¡Ñ 1, »«Γ«¼π τΓ« ó ∩ºδ¬Ñ "C" ¼áßß¿óδ ¡áτ¿¡áεΓß∩ ß »«º¿µ¿¿
- ¡π½∞. è«úñá ¡á¼ ó ñá½∞¡Ñ⌐ΦѼ »«¡áñ«í¿Γß∩ »α«óÑα∩Γ∞ ¡á ß«ó»á-
- ñÑ¡¿Ñ í«½ÑÑ ß½«ª¡δÑ ¬«¡ßΓαπ¬µ¿¿, ¡á¼ »α¿ñÑΓß∩ ºá¼Ñ¡¿Γ∞ Γ«½∞-
- ¬« Σπ¡¬µ¿ε INDEX; «ßΓá½∞¡á∩ τáßΓ∞ »α«úαá¼¼δ «ßΓá¡ÑΓß∩ Γ«⌐ ªÑ
- ßἫ⌐.
- Å«ß½Ñ Γ«ú«, ¬á¬ ¼δ »«ΓαáΓ¿½¿ ßΓ«½∞¬« πß¿½¿⌐ ¡á αáºαáí«Γ-
- ¬π, ¡á»¿ßá¡¿Ñ »α«úαá¼¼δ ó ñÑΓá½∩σ ¡Ñ »αÑñßΓáó½∩ÑΓ ºáΓαπñ¡Ñ-
- ¡¿⌐. ¡¿ªÑ »α¿ó«ñ¿Γß∩ µÑ½¿¬«¼ óß∩ »α«úαá¼¼á, ΓᬠτΓ« óδ ¼«ªÑ-
- ΓÑ ó¿ñÑΓ∞, ¬á¬ ß«Ññ¿¡∩εΓß∩ ó¼ÑßΓÑ «Γñѽ∞¡δÑ τáßΓ¿. è«¼í¿¡á-
- µ¿∩ ß¿¼ó«½«ó, »« ¬«Γ«α«⌐ »α«¿ºó«ñ¿Γß∩ »«¿ß¬, óδßΓπ»áÑΓ »«¬á
- ó ¬áτÑßΓóÑ ß¿¼ó«½∞¡«⌐ ßΓ᫬¿ ó áαúπ¼Ñ¡ΓÑ Σπ¡¬µ¿¿ INDEX, τΓ«
- ¡Ñ ∩ó½∩ÑΓß∩ ßá¼δ¼ «íΘ¿¼ ¼Ñσá¡¿º¼«¼. îδ ߬«α« óÑα¡Ñ¼ß∩ ¬ «í-
- ßπªñÑ¡¿ε ó«»α«ßá «í ¿¡¿µ¿á½¿ºáµ¿¿ ß¿¼ó«½∞¡δσ ¼áßß¿ó«ó ¿ ó
- ú½áóÑ 5 »«¬áªÑ¼, ¬á¬ ßñѽáΓ∞ ¬«¼í¿¡áµ¿ε ß¿¼ó«½«ó »áαá¼ÑΓα«¼,
- ¬«Γ«α«¼π »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ ó σ«ñÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ.
- Åα«úαá¼¼á Γá¬ªÑ ß«ñÑαª¿Γ ¡«óδ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ GETLINE; óá¼
- ¼«ªÑΓ «¬áºáΓ∞ß∩ »«½Ñº¡δ¼ ßαáó¡¿Γ∞ Ñú« ß óáα¿á¡Γ«¼ ¿º ú½áóδ
- 1.
-
- #DEFINE MAXLINE 1000
- MAIN() /* FIND ALL LINES MATCHING A PATTERN */
- {
- CHAR LINE[MAXLINE];
-
- WHILE (GETLINE(LINE, MAXLINE) > 0)
- IF (INDEX(LINE, "THE") >= 0)
- PRINTF("%S", LINE);
- }
-
- - 75 -
-
-
- GETLINE(S, LIM) /* GET LINE INTO S, RETURN LENGTH *
- CHAR S[];
- INT LIM;
- {
- INT C, I;
-
- I = 0;
- WHILE(--LIM>0 && (C=GETCHAR()) != EOF && C != '\N')
- S[I++] = C;
- IF (C == '\N')
- S[I++] = C;
- S[I] = '\0';
- RETURN(I);
- }
-
- INDEX(S,T) /* RETURN INDEX OF T IN S,-1 IF NONE */
- CHAR S[], T[];
- {
- INT I, J, K;
-
- FOR (I = 0; S[I] != '\0'; I++) {
- FOR(J=I, K=0; T[K] !='\0' && S[J] == T[K]; J++; K++)
- ;
- IF (T[K] == '\0')
- RETURN(I);
- }
- RETURN(-1);
- }
-
- èáªñá∩ Σπ¡¬µ¿∩ ¿¼ÑÑΓ ó¿ñ ¿¼∩ (ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó, Ñß½¿ «¡¿
- ¿¼ÑεΓß∩) «»¿ßá¡¿∩ áαúπ¼Ñ¡Γ«ó, Ñß½¿ «¡¿ ¿¼ÑεΓß∩
-
- {
- «»¿ßá¡¿∩ ¿ «»ÑαáΓ«αδ , Ñß½¿ «¡¿ ¿¼ÑεΓß∩
- }
-
-
- èᬠ¿ π¬áºδóáÑΓß∩, ¡Ñ¬«Γ«αδÑ τáßΓ¿ ¼«úπΓ «ΓßπΓßΓó«-
- óáΓ∞; ¼¿¡¿¼á½∞¡«⌐ Σπ¡¬µ¿Ñ⌐ ∩ó½∩ÑΓß∩
-
-
- DUMMY () { }
-
- ¬«Γ«αá∩ ¡Ñ ß«óÑαΦáÑΓ ¡¿¬á¬¿σ ñÑ⌐ßΓó¿⌐.
-
- /Æá¬á∩ ¡¿τÑú« ¡Ñ ñѽáεΘá∩ Σπ¡¬µ¿∩ ¿¡«úñá «¬áºδóáÑΓß∩
- πñ«í¡«⌐ ñ½∩ ß«σαá¡Ñ¡¿∩ ¼ÑßΓá ñ½∩ ñá½∞¡Ñ⌐ΦÑú« αáºó¿Γ¿∩ »α«ú-
- αá¼¼δ/. Ñß½¿ Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ τΓ«-½¿í« «Γ½¿τ¡«Ñ «Γ µÑ½«ú«
- º¡áτÑ¡¿∩, Γ« »ÑαÑñ ÑÑ ¿¼Ñ¡Ñ¼ ¼«ªÑΓ ßΓ«∩Γ∞ π¬áºáΓѽ∞ Γ¿»á;
- φëà ó«»α«ß «íßπªñáÑΓß∩ ó ß½ÑñπεΘѼ αáºñѽÑ.
-
- - 76 -
-
- Åα«úαá¼¼«⌐ ∩ó½∩ÑΓß∩ »α«ßΓ« ¡áí«α «»αÑñѽѡ¿⌐ «Γñѽ∞¡δσ
- Σπ¡¬µ¿⌐. æó∩º∞ ¼Ñªñπ Σπ¡¬µ¿∩¼¿ «ßπΘÑßΓó½∩ÑΓß∩ τÑαѺ áαúπ¼Ñ¡-
- Γδ ¿ ó«ºóαáΘáѼδÑ Σπ¡¬µ¿∩¼¿ º¡áτÑ¡¿∩ /ó φΓ«¼ ß½πτáÑ/; ÑÑ
- ¼«ª¡« Γá¬ªÑ «ßπΘÑßΓó½∩Γ∞ τÑαѺ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ. öπ¡¬µ¿¿
- ¼«úπΓ αáß»«½áúáΓ∞ß∩ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ó ½εí«¼ »«α∩ñ¬Ñ, á ßá¼á
- ¿ßσ«ñ¡á∩ »α«úαá¼¼á ¼«ªÑΓ αẼÑΘáΓ∞ß∩ ¡á ¡Ñ߬«½∞¬¿σ Σá⌐½áσ,
- ¡« Γá¬, τΓ«íδ ¡¿ «ñ¡á Σπ¡¬µ¿∩ ¡Ñ αáßΘÑ»½∩½áß∞.
- Ä»ÑαáΓ«α RETURN ß½πª¿Γ ¼Ñσá¡¿º¼«¼ ñ½∩ ó«ºóαáΘÑ¡¿∩ º¡á-
- τÑ¡¿∩ ¿º óδºóá¡¡«⌐ Σπ¡¬µ¿¿ ó Σπ¡¬µ¿ε, ¬«Γ«αá∩ ¬ ¡Ñ⌐ «íαáΓ¿-
- ½áß∞. çá RETURN ¼«ªÑΓ ß½Ññ«óáΓ∞ ½εí«Ñ óδαáªÑ¡¿Ñ:
-
- RETURN (óδαáªÑ¡¿Ñ)
-
- éδºδóáεΘá∩ Σπ¡¬µ¿∩ ¼«ªÑΓ ¿ú¡«α¿α«óáΓ∞ ó«ºóαáΘáѼ«Ñ
- º¡áτÑ¡¿Ñ, Ñß½¿ «¡á φΓ«ú« »«ªÑ½áÑΓ. ü«½ÑÑ Γ«ú«, »«ß½Ñ RETURN
- ¼«ªÑΓ ¡Ñ íδΓ∞ ó««íΘÑ ¡¿¬á¬«ú« óδαáªÑ¡¿∩; ó φΓ«¼ ß½πτáÑ ó óδ-
- ºδóáεΘπε »α«úαá¼¼π ¡Ñ »ÑαÑñáÑΓß∩ ¡¿¬á¬«ú« º¡áτÑ¡¿∩. ô»αáó½Ñ-
- ¡¿Ñ Γá¬ªÑ ó«ºóαáΘÑΓß∩ ó óδºδóáεΘπε »α«úαá¼¼π íѺ »ÑαÑñáτ¿
- ¬á¬«ú«-½¿í« º¡áτÑ¡¿∩ ¿ ó Γ«¼ ß½πτáÑ, ¬«úñá »α¿ óδ»«½¡Ñ¡¿¿ ¼δ
- "»α«ó὿óáѼß∩" ¡á ¬«¡Ñµ Σπ¡¬µ¿¿, ñ«ßΓ¿úá∩ ºá¬αδóáεΘÑ⌐ß∩
- »αáó«⌐ Σ¿úπα¡«⌐ ߬«í¬¿. E潿 Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ¿º
- «ñ¡«ú« ¼ÑßΓá ¿ ¡Ñ ó«ºóαáΘáÑΓ ¡¿¬á¬«ú« º¡áτÑ¡¿∩ ¿º ñαπú«ú«
- ¼ÑßΓá, φΓ« ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñºá¬«¡¡δ¼, ¡« ¼«ªÑΓ íδΓ∞ »α¿º¡á¬«¼
- ¬á¬¿σ-Γ« ¡Ñ»α¿∩Γ¡«ßΓÑ⌐. é ½εí«¼ ß½πτáÑ "º¡áτÑ¡¿Ñ¼" Σπ¡¬µ¿¿,
- ¬«Γ«αá∩ ¡Ñ ó«ºóαáΘáÑΓ º¡áτÑ¡¿∩, ¡Ñß«¼¡Ñ¡¡« íπñÑΓ ¼πß«α. ÄΓ-
- ½áñ«τ¡á∩ »α«úαá¼¼á LINT »α«óÑα∩ÑΓ Γá¬¿Ñ «Φ¿í¬¿.
- îÑσá¡¿¬á ¬«¼»¿½∩µ¿¿ ¿ ºáúαπº¬¿ "C"-»α«úαá¼¼, αáß»«½«-
- ªÑ¡¡δσ ó ¡Ñ߬«½∞¬¿σ ¿ßσ«ñ¡δσ Σá⌐½áσ, ¼Ñ¡∩ÑΓß∩ «Γ ß¿ßΓÑ¼δ ¬
- ß¿ßΓѼÑ. é ß¿ßΓÑ¼Ñ "UNIX", ¡á»α¿¼Ñα, φΓπ αáí«Γπ óδ»«½¡∩ÑΓ
- ¬«¼á¡ñá 'CC', π»«¼∩¡πΓá∩ ó ú½áóÑ 1. ÅαÑñ»«½«ª¿¼, τΓ« Γα¿
- Σπ¡¬µ¿¿ ¡áσ«ñ∩Γß∩ ó ΓαÑσ αẽ¿τ¡δσ Σá⌐½áσ ß ¿¼Ñ¡á¼¿ MAIN.ß,
- GETLINE.C ¿ INDEX.ß . Æ«úñá ¬«¼á¡ñá
-
- CC MAIN.C GETLINE.C INDEX.C
-
- ¬«¼»¿½¿απÑΓ φΓ¿ Γα¿ Σá⌐½á, »«¼ÑΘáÑΓ »«½πτÑ¡¡δ⌐ ¡áßΓαá¿óáѼδ⌐
- «íΩÑ¬Γ¡δ⌐ ¬«ñ ó Σá⌐½δ MAIN.O, GETLINE.O ¿ INDEX.O ¿ ºáúαπªá-
- ÑΓ ¿σ óßÑσ ó óδ»«½¡∩Ѽδ⌐ Σá⌐½, ¡áºδóáѼδ⌐ A.OUT .
- àß½¿ ¿¼ÑÑΓß∩ ¬á¬á∩-Γ« «Φ¿í¬á, ߬áªÑ¼ ó MAIN.C, Γ« φΓ«Γ
- Σá⌐½ ¼«ª¡« »ÑαѬ«¼»¿½¿α«óáΓ∞ «Γñѽ∞¡« ¿ ºáúαπº¿Γ∞ ó¼ÑßΓÑ ß
- »αÑñδñπΘ¿¼¿ «íΩÑ¬Γ¡δ¼¿ Σá⌐½á¼¿ »« ¬«¼á¡ñÑ
-
- CC MAIN.C GETLIN.O INDEX.O
-
- 諼á¡ñá 'CC' ¿ß»«½∞ºπÑΓ ß«ú½áΦÑ¡¿Ñ « ¡á¿¼Ñ¡«óá¡¿¿ ß ".ß"
- ¿ ".«" ñ½∩ Γ«ú«, τΓ«íδ «Γ½¿τ¿Γ∞ ¿ßσ«ñ¡δÑ Σá⌐½δ «Γ «íΩÑ¬Γ¡δσ.
- ô»α᪡ѡ¿Ñ 4-1.
- ----------------
- æ«ßΓáó∞ΓÑ »α«úαá¼¼π ñ½∩ Σπ¡¬µ¿¿ RINDEX(S,T), ¬«Γ«αá∩
- ó«ºóαáΘáÑΓ »«º¿µ¿ε ßἫú« »αáó«ú« óσ«ªñÑ¡¿∩ Γ ó S ¿ -1, Ñß½¿
- S ¡Ñ ß«ñÑαª¿Γ T.
-
- - 77 -
-
- 4.2. öπ¡¬µ¿¿, ó«ºóαáΘáεΘ¿Ñ ¡ÑµÑ½δÑ º¡áτÑ¡¿∩.
-
- ä« ß¿σ »«α ¡¿ «ñ¡á ¿º ¡áΦ¿σ »α«úαá¼¼ ¡Ñ ß«ñÑαªá½á ¬á¬«-
- ú«-½¿í« «»¿ßá¡¿∩ Γ¿»á Σπ¡¬µ¿¿. äѽ« ó Γ«¼, τΓ« »« π¼«½τá¡¿ε
- Σπ¡¬µ¿∩ ¡Ñ∩ó¡« «»¿ßδóáÑΓß∩ ßó«¿¼ »«∩ó½Ñ¡¿Ñ¼ ó óδαáªÑ¡¿¿ ¿½¿
- «»ÑαáΓ«αÑ, ¬á¬, ¡á»α¿¼Ñα, ó
-
- WHILE (GETLINE(LINE, MAXLINE) > 0)
-
- àß½¿ ¡Ñ¬«Γ«α«Ñ ¿¼∩, ¬«Γ«α«Ñ ¡Ñ í佫 «»¿ßá¡« αá¡ÑÑ, »«∩ó-
- ½∩ÑΓß∩ ó óδαáªÑ¡¿¿ ¿ ºá ¡¿¼ ß½ÑñπÑΓ ½Ñóá∩ ¬απú½á∩ ߬«í¬á, Γ«
- «¡« »« ¬«¡ΓѬßΓπ ßτ¿ΓáÑΓß∩ ¿¼Ñ¡Ñ¼ ¡Ñ¬«Γ«α«⌐ Σπ¡¬µ¿¿. èα«¼Ñ
- Γ«ú«, »« π¼«½τá¡¿ε »αÑñ»«½áúáÑΓß∩, τΓ« φΓá Σπ¡¬µ¿∩ ó«ºóαáΘá-
- ÑΓ º¡áτÑ¡¿Ñ Γ¿»á INT. Æá¬ ¬á¬ ó óδαáªÑ¡¿∩σ CHAR »αÑ«íαáºπÑΓ-
- ß∩ ó INT, Γ« ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ «»¿ßδóáΓ∞ Σπ¡¬µ¿¿, ó«ºóαáΘáε-
- Θ¿Ñ CHAR. ¥Γ¿ »αÑñ»«½«ªÑ¡¿∩ »«¬αδóáεΓ í«½∞Φ¿¡ßΓó« ß½πτáÑó,
- ó¬½ετá∩ óßÑ »α¿óÑñÑ¡¡δÑ ñ« ß¿σ »«α »α¿¼Ñαδ.
- ì« τΓ« »α«¿ßσ«ñ¿Γ, Ñß½¿ Σπ¡¬µ¿∩ ñ«½ª¡á ó«ºóαáΓ¿Γ∞ º¡áτÑ-
- ¡¿Ñ ¬á¬«ú«-Γ« ñαπú«ú« Γ¿»á ? î¡«ú¿Ñ τ¿ß½Ñ¡¡δÑ Σπ¡¬µ¿¿, ΓᬿÑ
- ¬á¬ SQRT, SIN ¿ COS ó«ºóαáΘáεΓ DOUBLE; ñαπú¿Ñ ߻ѵ¿á½∞¡δÑ
- Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ ñαπú¿σ Γ¿»«ó. ùΓ«íδ »«¬áºáΓ∞,
- ¬á¬ »«ßΓπ»áΓ∞ ó φΓ«¼ ß½πτáÑ, ñáóá⌐ΓÑ ¡á»¿ΦѼ ¿ ¿ß»«½∞ºπѼ
- Σπ¡¬µ¿ε AT«F(S), ¬«Γ«αá∩ »αÑ«íαáºπÑΓ ßΓ᫬π S ó φ¬ó¿óá½Ñ¡Γ-
- ¡«Ñ Ñ⌐ »½áóáεΘÑÑ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿. öπ¡¬µ¿∩ AT«F ∩ó½∩-
- ÑΓß∩ αáßΦ¿αÑ¡¿Ñ¼ áΓ«I, óáα¿á¡Γδ ¬«Γ«α«⌐ ¼δ ¡á»¿ß὿ ó ú½áóáσ
- 2 ¿ 3; «¡á «íαáíáΓδóáÑΓ ¡Ñ«í∩ºáΓѽ∞¡« º¡á¬ ¿ ñÑß∩Γ¿τ¡πε Γ«τ-
- ¬π, á Γá¬ªÑ µÑ½πε ¿ ñα«í¡πε τáßΓ∞, ¬áªñá∩ ¿º ¬«Γ«αδσ ¼«ªÑΓ
- ¬á¬ »α¿ßπΓßΓó«óáΓ∞, Γᬠ¿ «ΓßπΓßΓó«óáΓ∞./φΓá »α«µÑñπαá »αÑ-
- «íαẫóá¡¿∩ óó«ñá ¡Ñ «τÑ¡∞ óδß«¬«ú« ¬áτÑßΓóá; ¿¡áτÑ «¡á íδ
- ºá¡∩½á í«½∞ΦÑ ¼ÑßΓá, τѼ ¡á¼ σ«Γѽ«ß∞ íδ/.
- é«-»Ñαóδσ, ßá¼á AT«F ñ«½ª¡á «»¿ßδóáΓ∞ Γ¿» ó«ºóαáΘáѼ«ú«
- Ñε º¡áτÑ¡¿∩, »«ß¬«½∞¬π «¡ «Γ½¿τÑ¡ «Γ INT. Æá¬ ¬á¬ ó óδαáªÑ-
- ¡¿∩σ Γ¿» FLOAT »αÑ«íαáºπÑΓß∩ ó DOUBLE, Γ« ¡ÑΓ ¡¿¬á¬«ú« ß¼δß-
- ½á ó Γ«¼, τΓ«íδ ATOF ó«ºóαáΘá½á FLOAT; ¼δ ¼«ªÑ¼ ß αáó¡δ¼ πß-
- »Ñσ«¼ ó«ß»«½∞º«óáΓ∞ß∩ ñ«»«½¡¿Γѽ∞¡«⌐ Γ«τ¡«ßΓ∞ε, ΓᬠτΓ« ¼δ
- »«½áúáѼ, τΓ« ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ Γ¿»á DOUBLE. ê¼∩ Γ¿»á
- ñ«½ª¡« ßΓ«∩Γ∞ »ÑαÑñ ¿¼Ñ¡Ñ¼ Σπ¡¬µ¿¿, ¬á¬ »«¬áºδóáÑΓß∩ ¡¿ªÑ:
-
- DOUBLE ATOF(S) /* CONVERT STRING S TO DOUBLE */
- CHAR S[];
- {
- DOUBLE VAL, POWER;
- INT I, SIGN;
-
- - 78 -
-
- FOR(I=0; S[I]==' ' \!\! S[I]=='\N' \!\! S[I]=='\T'; I++)
- ; /* SKIP WHITE SPACE */
- SIGN = 1;
- IF (S[I] == '+' \!\! S[I] == '-') /* SIGN */
- SIGN = (S[I++] == '+') ? 1 : -1;
- FOR (VAL = 0; S[I] >= '0' && S[I] <= '9'; I++)
- VAL = 10 * VAL + S[I] - '0';
- IF (S[I] == '.')
- I++;
- FOR (POWER = 1; S[I] >= '0' && S[I] <= '9'; I++) {
- VAL = 10 * VAL + S[I] - '0';
- POWER *= 10;
- }
- RETURN(SIGN * VAL / POWER);
- }
-
- éΓ«αδ¼, ¡« ßΓ«½∞ ªÑ ó᪡δ¼, ∩ó½∩ÑΓß∩ Γ«, τΓ« óδºδóáεΘá∩
- Σπ¡¬µ¿∩ ñ«½ª¡á «íΩ∩ó¿Γ∞ « Γ«¼, τΓ« ATOF ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ,
- «Γ½¿τ¡«Ñ «Γ INT Γ¿»á. Æá¬«Ñ «íΩ∩ó½Ñ¡¿Ñ ñѼ«¡ßΓα¿απÑΓß∩ ¡á
- »α¿¼ÑαÑ ß½ÑñπεΘÑú« »α¿¼¿Γ¿ó¡«ú« ¡áßΓ«½∞¡«ú« ¬á½∞¬π½∩Γ«αá
- /Ññóá »α¿ú«ñ¡«ú« ñ½∩ »«ñóÑñÑ¡¿∩ íá½á¡ßá ó τѬ«ó«⌐ ¬¡¿ª¬Ñ/,
- ¬«Γ«αδ⌐ ßτ¿ΓδóáÑΓ »« «ñ¡«¼π τ¿ß½π ¡á ßΓ᫬π, »α¿τѼ φΓ« τ¿ß-
- ½« ¼«ªÑΓ ¿¼ÑΓ∞ º¡á¬, ¿ ߬½áñδóáÑΓ óßÑ τ¿ß½á, »ÑτáΓá∩ ßπ¼¼π
- »«ß½Ñ ¬áªñ«ú« óó«ñá.
-
- #DEFINE MAXLINE 100
- MAIN() /* RUDIMENTARY DESK CALKULATOR */
- {
- DOUBLE SUM, ATOF();
- CHAR LINE[MAXLINE];
-
- SUM = 0;
- WHILE (GETLINE(LINE, MAXLINE) > 0)
- PRINTF("\T%.2F\N",SUM+=ATOF(LINE));
-
-
- Ä¿ßá¡¿Ñ
-
- DOUBLE SUM, ATOF();
-
-
- ú«ó«α¿Γ, τΓ« SUM ∩ó½∩ÑΓß∩ »ÑαѼѡ¡«⌐ Γ¿»á DOUBLE , ¿ τΓ«
- ATOF ∩ó½∩ÑΓß∩ Σπ¡¬µ¿Ñ⌐, ó«ºóαáΘáεΘÑ⌐ º¡áτÑ¡¿Ñ Γ¿»á DOUBLE .
- ¥Γá ¼¡Ñ¼«¡¿¬á «º¡áτáÑΓ, τΓ« º¡áτÑ¡¿∩¼¿ ¬á¬ SUM, Γᬠ¿
- ATOF(...) ∩ó½∩εΓß∩ »½áóáεΘ¿Ñ τ¿ß½á ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿.
-
- - 79 -
-
- àß½¿ Σπ¡¬µ¿∩ ATOF ¡Ñ íπñÑΓ «»¿ßá¡á ∩ó¡« ó «í«¿σ ¼ÑßΓáσ,
- Γ« ó "C" »αÑñ»«½áúáÑΓß∩, τΓ« «¡á ó«ºóαáΘáÑΓ µÑ½«Ñ º¡áτÑ¡¿Ñ,
- ¿ óδ »«½πτ¿ΓÑ íÑßß¼δ߽ѡ¡δ⌐ «ΓóÑΓ. àß½¿ ßá¼á ATOF ¿ «íαáΘÑ-
- ¡¿Ñ ¬ ¡Ñ⌐ ó MAIN ¿¼ÑεΓ ¡Ñß«ó¼ÑßΓ¿¼δÑ Γ¿»δ ¿ ¡áσ«ñ∩Γß∩ ó «ñ-
- ¡«¼ ¿ Γ«¼ ªÑ Σá⌐½Ñ, Γ« φΓ« íπñÑΓ «í¡áαπªÑ¡« ¬«¼»¿½∩Γ«α«¼. ì«
- Ñß½¿ ATOF íδ½á ߬«¼»¿½¿α«óá¡á «Γñѽ∞¡« /τΓ« í«½ÑÑ óÑα«∩Γ¡«/,
- Γ« φΓ« ¡Ñß««ΓóÑΓßΓó¿Ñ ¡Ñ íπñÑΓ ºáΣ¿¬ß¿α«óá¡«, ΓᬠτΓ« ATOF
- íπñÑΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩ Γ¿»á DOUBLE, ß ¬«Γ«αδ¼ MAIN íπñÑΓ
- «íαáΘáΓ∞ß∩, ¬á¬ ß INT , τΓ« »α¿óÑñÑΓ ¬ íÑßß¼δ߽ѡ¡δ¼ αѺπ½∞-
- ΓáΓá¼. /Åα«úαá¼¼á LINT óδ½áó½¿óáÑΓ φΓπ «Φ¿í¬π/.
- ê¼Ñ∩ ATOF, ¼δ, ó »α¿¡µ¿»Ñ, ¼«ú½¿ íδ ß ÑÑ »«¼«Θ∞ε ¡á»¿-
- ßáΓ∞ ATOI (»αÑ«íαẫóá¡¿Ñ ßΓ᫬¿ ó INT):
-
- ATOI(S) /* CONVERT STRING S TO INTEGER */
- CHAR S[];
- {
- DOUBLE ATOF();
-
- RETURN(ATOF(S));
- }
-
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á ßΓαπ¬Γπαπ «»¿ßá¡¿⌐ ¿ «»ÑαáΓ«α RETURN.
- ç¡áτÑ¡¿Ñ óδαáªÑ¡¿∩ ó
-
- RETURN (óδαáªÑ¡¿Ñ)
-
- óßÑúñá »αÑ«íαáºπÑΓß∩ ¬ Γ¿»π Σπ¡¬µ¿¿ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ßἫú«
- ó«ºóαáΘÑ¡¿∩. Å«φΓ«¼π »α¿ »«∩ó½Ñ¡¿¿ ó «»ÑαáΓ«αÑ RETURN º¡áτÑ-
- ¡¿Ñ Σπ¡¬µ¿¿ áΓ«F, ¿¼ÑεΘÑÑ Γ¿» DOUBLE, áóΓ«¼áΓ¿τÑ߬¿ »αÑ«íαá-
- ºπÑΓß∩ ó INT, »«ß¬«½∞¬π Σπ¡¬µ¿∩ ATOI ó«ºóαáΘáÑΓ INT. (èá¬
- «íßπªñὫß∞ ó ú½áóÑ 2, »αÑ«íαẫóá¡¿Ñ º¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐
- Γ«τ¬«⌐ ¬ Γ¿»π INT «ßπΘÑßΓó½∩ÑΓß∩ »«ßαÑñßΓó«¼ «Γíαáßδóá¡¿∩
- ñα«í¡«⌐ τáßΓ¿).
- ô»α᪡ѡ¿Ñ 4-2.
- ----------------
- ÉáßΦ¿α∞ΓÑ ATOF Γᬿ¼ «íαẫ¼, τΓ«íδ «¡á ¼«ú½á αáí«ΓáΓ∞ ß
- τ¿ß½á¼¿ ó¿ñá
-
- 123.45Ñ-6
-
- úñÑ ºá τ¿ß½«¼ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ¼«ªÑΓ ß½Ññ«óáΓ∞ 'E' ¿ »«¬á-
- ºáΓѽ∞ φ¬ß»«¡Ñ¡Γδ, 󫺼«ª¡« ß« º¡á¬«¼.
-
- 4.3. àΘÑ «í áαúπ¼Ñ¡Γáσ Σπ¡¬µ¿⌐.
-
- é ú½áóÑ 1 ¼δ πªÑ «íßπªñ὿ ëà Σá¬Γ , τΓ« áαúπ¼Ñ¡Γδ Σπ¡-
- ¬µ¿⌐ »ÑαÑñáεΓß∩ »« º¡áτÑ¡¿ε, Γ.Ñ. óδºóá¡¡á∩ Σπ¡¬µ¿∩ »«½πτáÑΓ
- ßó«ε óαѼѡ¡πε ¬«»¿ε ¬áªñ«ú« áαúπ¼Ñ¡Γá, á ¡Ñ Ñú« áñαÑß. φΓ«
- «º¡áτáÑΓ, τΓ« óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¡Ñ ¼«ªÑΓ ó«ºñÑ⌐ßΓó«óáΓ∞ ¡á
- ¿ßσ«ñ¡δ⌐ áαúπ¼Ñ¡Γ ó óδºδóáεΘÑ⌐ Σπ¡¬µ¿¿. é¡πΓα¿ Σπ¡¬µ¿¿ ¬áª-
- ñδ⌐ áαúπ¼Ñ¡Γ »« ßπΘÑßΓóπ ∩ó½∩ÑΓß∩ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐, ¬«-
- Γ«αá∩ ¿¡¿µ¿á½¿º¿απÑΓß∩ ΓѼ º¡áτÑ¡¿Ñ¼, ß ¬«Γ«αδ¼ ¬ φΓ«⌐ Σπ¡¬-
- µ¿¿ «íαáΓ¿½¿ß∞.
-
- - 80 -
-
- àß½¿ ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá Σπ¡¬µ¿¿ óδßΓπ»áÑΓ ¿¼∩ ¼áßß¿óá,
- Γ« »ÑαÑñáÑΓß∩ áñαÑß ¡áτá½á φΓ«ú« ¼áßß¿óá; ßἿ φ½Ñ¼Ñ¡Γδ ¡Ñ
- ¬«»¿απεΓß∩. öπ¡¬µ¿∩ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ φ½Ñ¼Ñ¡Γδ ¼áßß¿óá, ¿ß»«½∞-
- ºπ∩ ¿¡ñѬßáµ¿ε ¿ áñαÑß ¡áτá½á. Æá¬¿¼ «íαẫ¼, ¼áßß¿ó »ÑαÑñá-
- ÑΓß∩ »« ßß佬Ñ. é ú½áóÑ 5 ¼δ «íßπñ¿¼, ¬á¬ ¿ß»«½∞º«óá¡¿Ñ π¬á-
- ºáΓѽÑ⌐ »«ºó«½∩ÑΓ Σπ¡¬µ¿∩¼ ó«ºñÑ⌐ßΓó«óáΓ∞ ¡á «Γ½¿τ¡δÑ «Γ
- ¼áßß¿ó«ó »ÑαѼѡ¡δÑ ó óδºδóáεΘ¿σ Σπ¡¬µ¿∩σ.
- îѪñπ »α«τ¿¼, ¡ÑßπΘÑßΓóπÑΓ »«½¡«ßΓ∞ε πñ«ó½ÑΓó«α¿Γѽ∞¡«ú«
- ß»«ß«íá ¡á»¿ßá¡¿∩ »ÑαÑ¡«ß¿¼«⌐ Σπ¡¬µ¿¿ ß »ÑαѼѡ¡δ¼ τ¿ß½«¼
- áαúπ¼Ñ¡Γ«ó. äѽ« ó Γ«¼, τΓ« ¡ÑΓ »ÑαÑ¡«ß¿¼«ú« ß»«ß«íá, ß »«-
- ¼«Θ∞ε ¬«Γ«α«ú« óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¼«ú½á íδ «»αÑñѽ¿Γ∞, ߬«½∞-
- ¬« áαúπ¼Ñ¡Γ«ó í佫 Σá¬Γ¿τÑ߬¿ »ÑαÑñá¡« Ñ⌐ ó ñá¡¡«¼ «íαáΘÑ-
- ¡¿¿. Æá¬¿¼ «íαẫ¼, óδ, ¡á»α¿¼Ñα, ¡Ñ ¼«ªÑΓÑ ¡á»¿ßáΓ∞ ñÑ⌐ßΓ-
- ó¿Γѽ∞¡« »ÑαÑ¡«ß¿¼πε Σπ¡¬µ¿ε, ¬«Γ«αá∩ íπñÑΓ óδτ¿ß½∩Γ∞ ¼á¬ß¿-
- ¼π¼ «Γ »α«¿ºó«½∞¡«ú« τ¿ß½á áαúπ¼Ñ¡Γ«ó, ¬á¬ ñѽáεΓ óßΓα«Ñ¡¡δÑ
- Σπ¡¬µ¿¿ MAX ó Σ«αΓαá¡Ñ ¿ PL/1.
- Äíδτ¡« ß« ß½πτáѼ »ÑαѼѡ¡«ú« τ¿ß½á áαúπ¼Ñ¡Γ«ó íѺ«»áß¡«
- ¿¼ÑΓ∞ ñѽ«, Ñß½¿ óδºóá¡¡á∩ Σπ¡¬µ¿∩ ¡Ñ ¿ß»«½∞ºπÑΓ áαúπ¼Ñ¡Γ«ó,
- ¬«Γ«αδÑ Ñ⌐ ¡á ßἫ¼ ñÑ½Ñ ¡Ñ í뫨 »ÑαÑñá¡δ, ¿ Ñß½¿ Γ¿»δ ß«ú-
- ½áßπεΓß∩. æá¼á∩ αáß»α«ßΓαá¡Ñ¡¡á∩ ó ∩ºδ¬Ñ "C" Σπ¡¬µ¿∩ ß »ÑαÑ-
- ¼Ñ¡¡δ¼ τ¿ß½«¼ - PRINTF . Ä¡á »«½πτáÑΓ ¿º »Ñαó«ú« áαúπ¼Ñ¡Γá
- ¿¡Σ«α¼áµ¿ε, »«ºó«½∩εΘπε «»αÑñѽ¿Γ∞ ¬«½¿τÑßΓó« «ßΓá½∞¡δσ áα-
- úπ¼Ñ¡Γ«ó ¿ ¿σ Γ¿»δ. öπ¡¬µ¿∩ PRINTF αáí«ΓáÑΓ ß«óÑαΦÑ¡¡« ¡Ñ»-
- αáó¿½∞¡«, Ñß½¿ óδºδóáεΘá∩ Σπ¡¬µ¿∩ »ÑαÑñáÑΓ Ñ⌐ ¡Ññ«ßΓáΓ«τ¡«Ñ
- ¬«½¿τÑßΓó« áαúπ¼Ñ¡Γ«ó, ¿½¿ Ñß½¿ ¿σ Γ¿»δ ¡Ñ ß«ú½áßπεΓß∩ ß Γ¿-
- »á¼¿, π¬áºá¡¡δ¼¿ ó »Ñαó«¼ áαúπ¼Ñ¡ΓÑ. ¥Γá Σπ¡¬µ¿∩ ¡Ñ ∩ó½∩ÑΓß∩
- »ÑαÑ¡«ß¿¼«⌐ ¿ ñ«½ª¡á ¼«ñ¿Σ¿µ¿α«óáΓ∞ß∩ »α¿ ¿ß»«½∞º«óá¡¿¿ ó
- αẽ¿τ¡δσ πß½«ó¿∩σ.
- àß½¿ ªÑ Γ¿»δ áαúπ¼Ñ¡Γ«ó ¿ºóÑßΓ¡δ, Γ« ¬«¡Ñµ ß»¿ß¬á áαúπ-
- ¼Ñ¡Γ«ó ¼«ª¡« «Γ¼ÑΓ¿Γ∞, ¿ß»«½∞ºπ∩ ¬á¬«Ñ-Γ« ß«ú½áΦÑ¡¿Ñ; ¡á»α¿-
- ¼Ñα, ßτ¿Γá∩, τΓ« ¡Ñ¬«Γ«α«Ñ ߻ѵ¿á½∞¡«Ñ º¡áτÑ¡¿Ñ áαúπ¼Ñ¡Γá
- (τáßΓ« ¡π½∞) ∩ó½∩ÑΓß∩ »α¿º¡á¬«¼ ¬«¡µá áαúπ¼Ñ¡Γ«ó.
-
- 4.4. é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ.
-
- Åα«úαá¼¼á ¡á ∩ºδ¬Ñ "C" ß«ßΓ«¿Γ ¿º ¡áí«αá ó¡ÑΦ¡¿σ «íΩѬ-
- Γ«ó, ¬«Γ«αδÑ ∩ó½∩εΓß∩ ½¿í« »ÑαѼѡ¡δ¼¿, ½¿í« Σπ¡¬µ¿∩¼¿. ÆÑα-
- ¼¿¡ "ó¡ÑΦ¡¿⌐" ¿ß»«½∞ºπÑΓß∩ ú½áó¡δ¼ «íαẫ¼ ó »α«Γ¿ó«»«ßΓáó-
- ½Ñ¡¿Ñ ΓÑନ¡π "ó¡πΓαÑ¡¡¿⌐", ¬«Γ«αδ¼ «»¿ßδóáεΓß∩ áαúπ¼Ñ¡Γδ ¿
- áóΓ«¼áΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ, «»αÑñѽѡ¡δÑ ó¡παΓ¿ Σπ¡¬µ¿⌐.
- é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ «»αÑñѽѡδ ó¡Ñ ¬á¬«⌐-½¿í« Σπ¡¬µ¿¿ ¿, Γá-
- ¬¿¼ «íαẫ¼, »«ΓÑ¡µ¿á½∞¡« ñ«ßΓπ»¡δ ñ½∩ ¼¡«ú¿σ Σπ¡¬µ¿⌐. æá¼¿
- Σπ¡¬µ¿¿ óßÑúñá ∩ó½∩εΓß∩ ó¡ÑΦ¡¿¼¿, »«Γ«¼π τΓ« »αáó¿½á ∩ºδ¬á
- "C" ¡Ñ αáºαÑΦáεΓ «»αÑñѽ∩Γ∞ «ñ¡¿ Σπ¡¬µ¿¿ ó¡πΓα¿ ñαπú¿σ. Å«
- π¼«½τá¡¿ε ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ ∩ó½∩εΓß∩ Γá¬ªÑ ¿ "ú½«íá½∞¡δ¼¿",
- ΓᬠτΓ« óßÑ ßß佬¿ ¡á Γá¬πε »ÑαѼѡ¡πε, ¿ß»«½∞ºπεΘ¿Ñ «ñ¡« ¿
- Γ« ªÑ ¿¼∩ (ñáªÑ ¿º Σπ¡¬µ¿⌐, ߬«¼»¿½¿α«óá¡¡δσ ¡Ñºáó¿ß¿¼«),
- íπñπΓ ßßδ½¬á¼¿ ¡á «ñ¡« ¿ Γ« ªÑ. é φΓ«¼ ß¼δ᫥ ó¡ÑΦ¡¿Ñ »ÑαÑ-
- ¼Ñ¡¡δÑ á¡á½«ú¿τ¡δ »ÑαѼѡ¡δ¼ CO¼MON ó Σ«αΓαá¡Ñ ¿ EXTERNAL ó
- PL/1. Å«ºñ¡ÑÑ ¼δ »«¬áªÑ¼, ¬á¬ «»αÑñѽ¿Γ∞ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ
- ¿ Σπ¡¬µ¿¿ Γᬿ¼ «íαẫ¼, τΓ«íδ «¡¿ í뫨 ñ«ßΓπ»¡δ ¡Ñ ú½«íá½∞-
- ¡«, á Γ«½∞¬« ó »αÑñѽáσ «ñ¡«ú« ¿ßσ«ñ¡«ú« Σá⌐½á.
-
- - 81 -
-
- é ß¿½π ßó«Ñ⌐ ú½«íá½∞¡«⌐ ñ«ßΓπ»¡«ßΓ¿ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ
- »αÑñ«ßΓáó½∩εΓ ñαπúπε, «Γ½¿τ¡πε «Γ áαúπ¼Ñ¡Γ«ó ¿ ó«ºóαáΘáѼδσ
- º¡áτÑ¡¿⌐, 󫺼«ª¡«ßΓ∞ ñ½∩ «í¼Ñ¡á ñá¡¡δ¼¿ ¼Ñªñπ Σπ¡¬µ¿∩¼¿.
- àß½¿ ¿¼∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ ¬á¬¿¼-½¿í« «íαẫ¼ «»¿ßá¡«, Γ«
- ½εíá∩ Σπ¡¬µ¿∩ ¿¼ÑÑΓ ñ«ßΓπ» ¬ φΓ«⌐ »ÑαѼѡ¡«⌐, ßßδ½á∩ß∞ ¬ ¡Ñ⌐
- »« φΓ«¼π ¿¼Ñ¡¿.
- é ß½πτá∩σ, ¬«úñá ßó∩º∞ ¼Ñªñπ Σπ¡¬µ¿∩¼¿ «ßπΘÑßΓó½∩ÑΓß∩ ß
- »«¼«Θ∞ε í«½∞Φ«ú« τ¿ß½á »ÑαѼѡ¡δσ, ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ «¬áºδ-
- óáεΓß∩ í«½ÑÑ πñ«í¡δ¼¿ ¿ φΣΣÑ¬Γ¿ó¡δ¼¿, τѼ ¿ß»«½∞º«óá¡¿Ñ
- ñ½¿¡¡δσ ß»¿ß¬«ó áαúπ¼Ñ¡Γ«ó. èá¬, «ñ¡á¬«, «Γ¼ÑτὫß∞ ó ú½áóÑ
- 1, φΓ« ß««íαáªÑ¡¿Ñ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ß «»αÑñѽѡ¡«⌐ «ßΓ«-
- ᫪¡«ßΓ∞ε, Γᬠ¬á¬ «¡« ¼«ªÑΓ »½«σ« «ΓαếΓ∞ß∩ ¡á ßΓαπ¬ΓπαÑ
- »α«úαá¼¼ ¿ »α¿ó«ñ¿Γ∞ ¬ »α«úαá¼¼á¼ ß í«½∞Φ¿¼ τ¿ß½«¼ ßó∩ºÑ⌐ »«
- ñá¡¡δ¼ ¼Ñªñπ Σπ¡¬µ¿∩¼¿.
- éΓ«αá∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ ßó∩ºá¡á
- ß ¿¡¿µ¿á½¿ºáµ¿Ñ⌐. é τáßΓ¡«ßΓ¿, ó¡ÑΦ¡¿Ñ ¼áßß¿óδ ¼«úπΓ íδΓ∞
- ¿¡¿µ¿á½¿º¿α«óá¡δ á áóΓ«¼áΓ¿τÑ߬¿Ñ ¡ÑΓ. îδ αáßß¼«Γα¿¼ ó«»α«ß
- «í ¿¡¿µ¿á½¿ºáµ¿¿ ó ¬«¡µÑ φΓ«⌐ ú½áóδ.
- ÆαÑΓ∞∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ «íπß½«ó-
- ½Ñ¡á ¿σ «í½áßΓ∞ε ñÑ⌐ßΓó¿∩ ¿ óαѼѡѼ ßπΘÑßΓó«óá¡¿∩. ÇóΓ«¼á-
- Γ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ∩ó½∩εΓß∩ ó¡πΓαÑ¡¡¿¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ Σπ¡-
- ¬µ¿∩¼; «¡¿ 󫺡¿¬áεΓ »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε ¿ ¿ßτѺáεΓ »α¿ óδ-
- σ«ñÑ ¿º ¡ÑÑ. é¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ, ¡á»α«Γ¿ó, ßπΘÑßΓóπεΓ »«ßΓ«-
- ∩¡¡«. Ä¡¿ ¡Ñ »«∩ó½∩εΓ∩ ¿ ¡Ñ ¿ßτѺáεΓ, ΓᬠτΓ« ¼«úπΓ ß«σαá-
- ¡∩Γ∞ ßó«¿ º¡áτÑ¡¿∩ ó »Ñα¿«ñ «Γ «ñ¡«ú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ ñ«
- ñαπú«ú«. é ß¿½π φΓ«ú«, Ñß½¿ ñóÑ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓ ¡Ñ¬«Γ«αδÑ
- «íΘ¿Ñ ñá¡¡δÑ, »α¿τѼ ¡¿ «ñ¡á ¿º ¡¿σ ¡Ñ «íαáΘáÑΓß∩ ¬ ñαπú«⌐ ,
- Γ« τáßΓ« ¡á¿í«½ÑÑ πñ«í¡δ¼ «¬áºδóáÑΓß∩ σαá¡¿Γ∞ φΓ¿ «íΘ¿Ñ ñá¡-
- ¡δÑ ó ó¿ñÑ ó¡ÑΦ¡¿σ »ÑαѼѡ¡δσ, á ¡Ñ »ÑαÑñáóáΓ∞ ¿σ ó Σπ¡¬µ¿ε
- ¿ «íαáΓ¡« ß »«¼«Θ∞ε áαúπ¼Ñ¡Γ«ó.
- äáóá⌐ΓÑ »α«ñ«½ª¿¼ «íßπªñÑ¡¿Ñ φΓ«ú« ó«»α«ßá ¡á í«½∞Φ«¼
- »α¿¼ÑαÑ. çáñáτá íπñÑΓ ß«ßΓ«∩Γ∞ ó ¡á»¿ßá¡¿¿ ñαπú«⌐ »α«úαá¼¼δ
- ñ½∩ ¬á½∞¬π½∩Γ«αá, ½πτΦÑ⌐,τѼ »αÑñδñπΘá∩. çñÑß∞ ñ«»π߬áεΓß∩
- «»Ñαᵿ¿ +,-,*,/ ¿ º¡á¬ = (ñ½∩ óδñáτ¿ «ΓóÑΓá).ó¼ÑßΓ« ¿¡Σ¿¬ß-
- ¡«ú« »αÑñßΓáó½Ñ¡¿∩ ¬á½∞¬π½∩Γ«α íπñÑΓ ¿ß»«½∞º«óáΓ∞ «íαáΓ¡πε
- »«½∞߬πε ¡«Γᵿε,»«ß¬«½∞¬π ÑÑ ¡Ñ߬«½∞¬« ½ÑúτÑ αÑ὿º«óáΓ∞.ó
- «íαáΓ¡«⌐ »«½∞߬«⌐ ¡«Γᵿ¿ º¡á¬ ß½ÑñπÑΓ ºá «»Ñαá¡ñἿ; ¿¡Σ¿¬-
- ß¡«Ñ óδαáªÑ¡¿Ñ Γ¿»á
-
- (1-2)*(4+5)=
-
- ºá»¿ßδóáÑΓß∩ ó ó¿ñÑ
- 12-45+*=
- ¬απú½δÑ ß¬«í¬¿ »α¿ φΓ«¼ ¡Ñ ¡πª¡δ
-
- - 82 -
-
- ÉÑ὿ºáµ¿∩ «¬áºδóáÑΓß∩ óÑß∞¼á »α«ßΓ«⌐.¬áªñδ⌐ «»Ñαá¡ñ »«-
- ¼ÑΘáÑΓß∩ ó ßΓѬ; ¬«úñá »«ßΓπ»áÑΓ º¡á¬ «»Ñαᵿ¿,¡πª¡«Ñ τ¿ß½«
- «»Ñαá¡ñ«ó (ñóá ñ½∩ í¿¡áα¡δσ «»Ñαᵿ⌐) óδ¡¿¼áÑΓß∩,¬ ¡¿¼ »α¿-
- ¼Ñ¡∩ÑΓß∩ «»Ñαᵿ∩ ¿ αѺπ½∞ΓáΓ ¡á»αáó½∩ÑΓß∩ «íαáΓ¡« ó
- ßΓѬ.Γᬠó »α¿óÑñÑ¡¡«¼ óδΦÑ »α¿¼ÑαÑ 1 ¿ 2 »«¼ÑΘáεΓß∩ ó ßΓѬ
- ¿ ºáΓѼ ºá¼Ñ¡∩εΓß∩ ¿σ αạ«ßΓ∞ε, -1.»«ß½Ñ φΓ«ú« 4 ¿ 5 óó«-
- ñ∩Γß∩ ó ßΓѬ ¿ ºáΓѼ ºá¼Ñ¡∩εΓß∩ ßó«Ñ⌐ ßπ¼¼«⌐,9.ñá½ÑÑ τ¿ß½á
- -1 ¿ 9 ºá¼Ñ¡∩εΓß∩ ó ßΓÑ¬Ñ ¡á ¿σ »α«¿ºóÑñÑ¡¿Ñ,αáó¡«Ñ -9.«»Ñ-
- αᵿ∩ = »ÑτáΓáÑΓ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá, ¡Ñ πñá½∩∩ Ñú« (Γá¬
- τΓ« »α«¼ÑªπΓ«τ¡δÑ óδτ¿ß½Ñ¡¿∩ ¼«úπΓ íδΓ∞ »α«óÑαÑ¡δ).
- æá¼¿ «»Ñαᵿ¿ »«¼ÑΘÑ¡¿∩ τ¿ßѽ ó ßΓѬ ¿ ¿σ ¿ºó½ÑτÑ¡¿∩
- «τÑ¡∞ »α«ßΓδ,¡«, ó ßó∩º¿ ß ó¬½ετÑ¡¿Ñ¼ ó ¡áßΓ«∩Θπε »α«úαá¼¼π
- «í¡áαπªÑ¡¿∩ «Φ¿í«¬ ¿ ó«ßßΓá¡«ó½Ñ¡¿∩,«¡¿ «¬áºδóáεΓß∩ ñ«ßΓá-
- Γ«τ¡« ñ½¿¡¡δ¼¿. Å«φΓ«¼π ½πτΦÑ «Σ«α¼¿Γ∞ ¿σ ó ó¿ñÑ «Γñѽ∞¡δσ
- Σπ¡¬µ¿⌐,τѼ »«óΓ«α∩Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ ΓѬßΓ »«óßεñπ ó »α«ú-
- αá¼¼Ñ. èα«¼Ñ Γ«ú«, ¡πª¡á «Γñѽ∞¡á∩ Σπ¡¬µ¿∩ ñ½∩ óδí«α¬¿ ¿º
- óó«ñá ß½ÑñπεΘÑ⌐ «»Ñαᵿ¿ ¿½¿ «»Ñαá¡ñá. Æá¬¿¼ «íαẫ¼, ßΓαπ¬-
- Γπαá »α«úαá¼¼δ ¿¼ÑÑΓ ó¿ñ:
-
- WHILE( »«ßΓπ»áÑΓ «»Ñαᵿ∩ ¿½¿ «»Ñαá¡ñ, á ¡Ñ ¬«¡Ñµ
- IF ( τ¿ß½« )
- »«¼ÑßΓ¿Γ∞ Ñú« ó ßΓѬ
- ÑLSE IF ( «»Ñαᵿ∩ )
- óδ¡πΓ∞ «»Ñαá¡ñδ ¿º ßΓѬá
- óδ»«½¡¿Γ∞ «»Ñαᵿε
- »«¼ÑßΓ¿Γ∞ αѺπ½∞ΓáΓ ó ßΓѬ
- ELSE
- «Φ¿í¬á
-
- Äß¡«ó¡«⌐ ó«»α«ß, ¬«Γ«αδ⌐ ÑΘÑ ¡Ñ íδ½ «íßπªñÑ¡, ºá¬½ετáÑΓ-
- ß∩ ó Γ«¼,úñÑ »«¼ÑßΓ¿Γ∞ ßΓѬ, Γ. à. èá¬¿Ñ »α«µÑñπαδ ß¼«úπΓ
- «íαáΘáΓ∞ß∩ ¬ ¡Ñ¼π ¡Ñ»«ßαÑñßΓóÑ¡¡«. Äñ¡á ¿º Γᬿσ 󫺼«ª¡«ß-
- ΓÑ⌐ ß«ßΓ«¿Γ ó »«¼ÑΘÑ¡¿¿ ßΓѬá ó MAIN ¿ »ÑαÑñáτ¿ ßἫú« ßΓѬá
- ¿ ΓѬπΘÑ⌐ »«º¿µ¿¿ ó ßΓÑ¬Ñ Σπ¡¬µ¿∩¼, αáí«ΓáεΘ¿¼ ß« ßΓѬ«¼. ì«
- Σπ¡¬µ¿¿ MAIN ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿¼ÑΓ∞ ñѽ« ß »ÑαѼѡ¡δ¼¿, π»-
- αáó½∩εΘ¿¼¿ ßΓѬ«¼; Ñ⌐ ÑßΓÑßΓóÑ¡¡« αáßßπªñáΓ∞ ó ΓÑନ¡áσ »«-
- ¼ÑΘÑ¡¿∩ τ¿ßѽ ó ßΓѬ ¿ ¿ºó½ÑτÑ¡¿∩ ¿σ «ΓΓπñá. é ß¿½π φΓ«ú« ¼δ
- αÑΦ¿½¿ ßñѽáΓ∞ ßΓѬ ¿ ßó∩ºá¡¡πε ß ¡¿¼ ¿¡Σ«α¼áµ¿ε ó¡ÑΦ¡¿¼¿
- »ÑαѼѡ¡δ¼¿ , ñ«ßΓπ»¡δ¼¿ Σπ¡¬µ¿∩¼ PUSH (»«¼ÑΘÑ¡¿Ñ ó ßΓѬ) ¿
- POP (¿ºó½ÑτÑ¡¿Ñ ¿º ßΓѬá), ¡« ¡Ñ MAIN.
- ÅÑαÑó«ñ φΓ«⌐ ßσѼδ ó »α«úαá¼¼π ñ«ßΓáΓ«τ¡« »α«ßΓ. éÑñπΘá∩
- »α«úαá¼¼á ∩ó½∩ÑΓß∩ »« ßπΘÑßΓóπ í«½∞Φ¿¼ »ÑαѬ½ετáΓѽѼ »« Γ¿-
- »π «»Ñαᵿ¿ ¿½¿ «»Ñαá¡ñπ; φΓ«, »«-ó¿ñ¿¼«¼π, í«½ÑÑ σáαá¬ΓÑα-
- ¡«Ñ »α¿¼Ñ¡Ñ¿Ñ »ÑαѬ½ετáΓѽ∩, τѼ Γ«, ¬«Γ«α«Ñ í佫 »α«ñѼ«¡ß-
- Γα¿α«óá¡« ó ú½áóÑ 3.
-
- #DEFINE MAXOP 20 /* MAX SIZE OF OPERAND, OPERÇTOR *
- #DEFINE NUMBER '0' /* SIGNAL THAT NUMBER FOUND */
- #DEFINE TOOBIG '9' /* SIGNAL THAT STRING IS TOO BIG *
-
- - 83 -
-
- MAIN() /* REVERSE POLISH DESK CALCULATOR */
- /(
- INT TUPE;
- CHAR S[MAXOP];
- DOUBLE OP2,ATOF(),POP(),PUSH();
-
- WHILE ((TUPE=GETOP(S,MAXOP)) !=EOF);
- SWITCH(TUPE) /(
- CASE NUMBER:
- PUSH(ATOF(S));
- BREAK;
- CASE '+':
- PUSH(POP()+POP());
- BREAK;
- CASE '*':
- PUSH(POP()*POP());
- BREAK;
- CASE '-':
- OP2=POP();
- PUSH(POP()-OP2);
- BREAK;
- CASE '/':
- OP2=POP();
- IF (OP2 != 0.0)
- PUSH(POP()/OP2);
- ELSE
- PRINTF("ZERO DIVISOR POPPED\N");
- BREAK;
- CASE '=':
- PRINTF("\T%F\N",PUSH(POP()));
- BREAK;
- CASE 'C':
- CLEAR();
- BREAK;
- CASE TOOBIG:
- PRINTF("%.20S ... IS TOO LONG\N",S)
- BREAK;
- /)
- /)
- #DEFINE MAXVAL 100 /* MAXIMUM DEPTH OF VAL STACK */
-
- - 84 -
-
- INT SP = 0; /* STACK POINTER */
- DOUBLE VAL[MAXVAL]; /*VALUE STACK */
- DOUBLE PUSH(F) /* PUSH F ONTO VALUE STACK */
- DOUBLE F;
- /(
- IF (SP < MAXVAL)
- RETURN(VAL[SP++] =F);
- ELSE /(
- PRINTF("ERROR: STACK FULL\N");
- CLEAR();
- RETURN(0);
- /)
- /)
-
- DOUBLE POP() /* POP TOP VALUE FROM STEACK */
- /(
- IF (SP > 0)
- RETURN(VAL[--SP]);
- ELSE /(
- PRINTF("ERROR: STACK EMPTY\N");
- CLEAR();
- RETURN(0);
- /)
- /)
-
- CLEAR() /* CLEAR STACK */
- /(
- SP=0;
- /)
-
- 諼á¡ñá C «τ¿ΘáÑΓ ßΓѬ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ CLEAR, ¬«Γ«αá∩
- Γá¬ªÑ ¿ß»«½∞ºπÑΓß∩ ó ß½πτáÑ «Φ¿í¬¿ Σπ¡¬µ¿∩¼¿ PUSH ¿ POP. ¬
- Σπ¡¬µ¿¿ GETOP ¼δ «τÑ¡∞ ߬«α« óÑα¡Ñ¼ß∩.
- èᬠπªÑ ú«ó«α¿½«ß∞ ó ú½áóÑ 1, »ÑαѼѡ¡á∩ ∩ó½∩ÑΓß∩ ó¡ÑΦ-
- ¡Ñ⌐, Ñß½¿ «¡á «»αÑñѽѡá ó¡Ñ ΓÑ½á ¬á¬«⌐ íδ Γ« ¡¿ í佫 Σπ¡¬-
- µ¿¿. Å«φΓ«¼π ßΓѬ ¿ π¬áºáΓѽ∞ ßΓѬá, ¬«Γ«αδÑ ñ«½ª¡δ ¿ß»«½∞-
- º«óáΓ∞ß∩ Σπ¡¬µ¿∩¼¿ PUSH, POP ¿ CLEAR, «»αÑñѽѡδ ó¡Ñ φΓ¿σ
- ΓαÑσ Σπ¡¬µ¿⌐. ì« ßá¼á Σπ¡¬µ¿∩ MAIN ¡Ñ ßßδ½áÑΓß∩ ¡¿ ¬ ßΓѬπ,
- ¡¿ ¬ π¬áºáΓѽε ßΓѬá - ¿σ πτáßΓ¿Ñ ΓΘáΓѽ∞¡« ºá¼á߬¿α«óá¡«. é
- ß¿½π φΓ«ú« τáßΓ∞ »α«úαá¼¼δ, ß««ΓóÑΓßΓóπεΘá∩ «»Ñαᵿ¿ = , ¿ß-
- »«½∞ºπÑΓ ¬«¡ßΓαπ¬µ¿ε
-
- PUSH(POP());
-
-
- ñ½∩ Γ«ú«, τΓ«íδ »α«á¡á½¿º¿α«óáΓ∞ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá, ¡Ñ
- ¿º¼Ñ¡∩∩ Ñú«.
- ÄΓ¼ÑΓ¿¼ ΓᬪÑ, τΓ« Γᬠ¬á¬ «»Ñαᵿ¿ + ¿ * ¬«¼¼πΓáΓ¿ó¡δ,
- »«α∩ñ«¬, ó ¬«Γ«α«¼ «íΩÑñ¿¡∩εΓß∩ ¿ºó½ÑτÑ¡¡δÑ «»Ñαá¡ñδ, ¡Ñßπ-
- ΘÑßΓóѡѡ, ¡« ó ß½πτáÑ «»Ñαᵿ⌐ - ¿ / ¡Ñ«íσ«ñ¿¼« αẽ¿τáΓ∞
- ½Ñóδ⌐ ¿ »αáóδ⌐ «»Ñαá¡ñδ.
-
- - 85 -
-
- ô»α᪡ѡ¿Ñ 4-3.
- ---------------
- Åα¿óÑñÑ¡¡á∩ «ß¡«ó¡á∩ ßσѼá ñ«»π߬áÑΓ ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ
- αáßΦ¿αÑ¡¿Ñ 󫺼«ª¡«ßΓÑ⌐ ¬á½∞¬π½∩Γ«αá. 鬽ετ¿ΓÑ «»Ñαᵿε ñÑ-
- ½Ñ¡¿∩ »« ¼«ñπ½ε /%/ ¿ π¡áα¡δ⌐ ¼¿¡πß. 鬽ετ¿ΓÑ ¬«¼á¡ñπ "ßΓÑ-
- αÑΓ∞", ¬«Γ«αá∩ πñá½∩ÑΓ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ßΓѬá. éóÑñ¿ΓÑ ¬«¼á¡-
- ñδ ñ½∩ αáí«Γδ ß »ÑαѼѡ¡δ¼¿. /¥Γ« »α«ßΓ«, Ñß½¿ ¿¼Ñ¡á »ÑαÑ-
- ¼Ñ¡¡δσ íπñπΓ ß«ßΓ«∩Γ∞ ¿º «ñ¡«⌐ íπ¬óδ ¿º ¿¼ÑεΘ¿σß∩ ñóáñµáΓ¿
- ΦÑßΓ¿ íπ¬ó/.
-
- 4.5. Åαáó¿½á, «»αÑñѽ∩εΘ¿Ñ «í½áßΓ∞ ñÑ⌐ßΓó¿∩.
-
- öπ¡¬µ¿¿ ¿ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ, óσ«ñ∩Θ¿Ñ ó ß«ßΓáó
- "C"-»α«úαá¼¼δ, ¡Ñ «í∩ºá¡δ ¬«¼»¿½¿α«óáΓ∞ß∩ «ñ¡«óαѼѡ¡«;
- »α«úαá¼¼á ¡á ¿ßσ«ñ¡«¼ ∩ºδ¬Ñ ¼«ªÑΓ αáß»«½áúáΓ∞ß∩ ó ¡Ñ߬«½∞¬¿σ
- Σá⌐½áσ, ¿ αá¡ÑÑ ß¬«¼»¿½¿α«óá¡¡δÑ »α«µÑñπαδ ¼«úπΓ ºáúαπªáΓ∞ß∩
- ¿º í¿í½¿«ΓѬ. äóá ó«»α«ßá »αÑñßΓáó½∩εΓ ¿¡ΓÑαÑß:
- èᬠ߽ÑñπÑΓ ß«ßΓáó½∩Γ∞ «»¿ßá¡¿∩, τΓ«íδ »ÑαѼѡ¡δÑ »αá-
- ó¿½∞¡« ó«ß»α¿¡¿¼á½¿ß∞ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿ ?
- èᬠ߽ÑñπÑΓ ß«ßΓáó½∩Γ∞ «»¿ßá¡¿∩, τΓ«íδ «íÑß»Ñτ¿Γ∞ »αá-
- ó¿½∞¡πε ßó∩º∞ τáßΓÑ⌐ »α«úαá¼¼δ »α¿ ºáúαπº¬Ñ ?
-
- 4.5.1. Äí½áßΓ∞ ñÑ⌐ßΓó¿∩.
-
- Äí½áßΓ∞ε ñÑ⌐ßΓó¿∩ ¿¼Ñ¡¿ ∩ó½∩ÑΓß∩ Γá τáßΓ∞ »α«úαá¼¼δ, ó
- ¬«Γ«α«⌐ φΓ« ¿¼∩ «»αÑñѽѡ«. ä½∩ áóΓ«¼áΓ¿τÑ߬«⌐ »ÑαѼѡ¡«⌐,
- «»¿ßá¡¡«⌐ ó ¡áτá½Ñ Σπ¡¬µ¿¿, «í½áßΓ∞ε ñÑ⌐ßΓó¿∩ ∩ó½∩ÑΓß∩ Γá
- Σπ¡¬µ¿∩, ó ¬«Γ«α«⌐ «»¿ßá¡« ¿¼∩ φΓ«⌐ »ÑαѼѡ¡«⌐, á »ÑαѼѡ¡δÑ
- ¿º αạδσ Σπ¡¬µ¿⌐, ¿¼ÑεΘ¿Ñ «ñ¿¡á¬«ó«Ñ ¿¼∩, ßτ¿ΓáεΓß∩ ¡Ñ «Γ-
- ¡«ß∩Θ¿¼¿ß∩ ñαπú ¬ ñαπúπ. ¥Γ« ªÑ ß»αáóÑñ½¿ó« ¿ ñ½∩ áαúπ¼Ñ¡Γ«ó
- Σπ¡¬µ¿⌐.
- Äí½áßΓ∞ ñÑ⌐ßΓó¿∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ »α«ßΓ¿αáÑΓß∩ «Γ Γ«τ-
- ¬¿, ó ¬«Γ«α«⌐ «¡á «íΩ∩ó½Ñ¡á ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ, ñ« ¬«¡µá φΓ«ú«
- Σá⌐½á. ìá»α¿¼Ñα, Ñß½¿ VAL, SP, PUSH, POP ¿ CLEAR «»αÑñѽѡδ
- ó «ñ¡«¼ Σá⌐½Ñ ó »«α∩ñ¬Ñ, π¬áºá¡¡«¼ óδΦÑ, á ¿¼Ñ¡¡«:
-
- INT SP = 0;
- DOUBLE VAL[MAXVAL];
-
- DOUBLE PUSH(F) {...}
-
- DOUBLE POP() {...}
-
- CLEAR() {...}
-
- Γ« »ÑαѼѡ¡δÑ VAL ¿ SP ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó PUSH, POP ¿
- CLEAR »α∩¼« »« ¿¼Ñ¡¿; ¡¿¬á¬¿Ñ ñ«»«½¡¿Γѽ∞¡δÑ «»¿ßá¡¿∩ ¡Ñ
- ¡πª¡δ.
- æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ ¡πª¡« ߽߫áΓ∞ß∩ ¡á ó¡ÑΦ¡εε »ÑαÑ-
- ¼Ñ¡¡πε ñ« ÑÑ «»αÑñѽѡ¿∩, ¿½¿ Ñß½¿ Γá¬á∩ »ÑαѼѡ¡á∩ «»αÑñÑ-
- ½Ñ¡á ó Σá⌐½Ñ, «Γ½¿τ¡«¼ «Γ Γ«ú«, ó ¬«Γ«α«¼ «¡á ¿ß»«½∞ºπÑΓß∩,
- Γ« ¡Ñ«íσ«ñ¿¼« «»¿ßá¡¿Ñ EXTERN.
-
- - 86 -
-
- é᪡« αẽ¿τáΓ∞ «»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ ¿ ÑÑ «»αÑñÑ-
- ½Ñ¡¿Ñ. «»¿ßá¡¿Ñ π¬áºδóáÑΓ ßó«⌐ßΓóá »ÑαѼѡ¡«⌐ /ÑÑ Γ¿», αáº-
- ¼Ñα ¿ Γ.ñ./; «»αÑñѽѡ¿Ñ ªÑ óδºδóáÑΓ ÑΘÑ ¿ «ΓóÑñÑ¡¿Ñ »á¼∩Γ¿.
- àß½¿ ó¡Ñ ¬á¬«⌐ íδ Γ« ¡¿ í佫 Σπ¡¬µ¿¿ »«∩ó½∩εΓß∩ ßΓα«τ¬¿
-
- INT SP;
- DOUBLE VAL[MAXVAL];
-
- Γ« «¡¿ «»αÑñѽ∩εΓ ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ SP ¿ VAL, óδºδóáεΓ «Γ-
- óÑñÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ¡¿σ ¿ ß½πªáΓ ó ¬áτÑßΓóÑ «»¿ßá¡¿∩ ñ½∩ «ß-
- Γá½∞¡«⌐ τáßΓ¿ φΓ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á. é Γ« ªÑ óαѼ∩ ßΓα«τ¬¿
-
- EXTERN INT SP;
- EXTERN DOUBLE VAL[];
-
- «»¿ßδóáεΓ ó «ßΓá½∞¡«⌐ τáßΓ¿ φΓ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á »ÑαѼѡ¡πε
- SP ¬á¬ INT, á VAL ¬á¬ ¼áßß¿ó Γ¿»á DOUBLE /αẼÑα ¬«Γ«α«ú«
- π¬áºá¡ ó ñαπú«¼ ¼ÑßΓÑ/, ¡« ¡Ñ ß«ºñáεΓ »ÑαѼѡ¡δσ ¿ ¡Ñ «Γó«-
- ñ∩Γ ¿¼ ¼ÑßΓá ó »á¼∩Γ¿.
- é« óßÑσ Σá⌐½áσ, ß«ßΓáó½∩εΘ¿σ ¿ßσ«ñ¡πε »α«úαá¼¼π, ñ«½ª¡«
- ß«ñÑαªáΓ∞ß∩ Γ«½∞¬« «ñ¡« «»αÑñѽѡ¿Ñ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐; ñαπ-
- ú¿Ñ Σá⌐½δ ¼«úπΓ ß«ñÑαªáΓ∞ «»¿ßá¡¿∩ EXTERN ñ½∩ ñ«ßΓπ»á ¬ ¡Ñ⌐.
- /Ä»¿ßá¡¿Ñ EXTERN ¼«ªÑΓ ¿¼ÑΓ∞ß∩ ¿ ó Γ«¼ Σá⌐½Ñ, úñÑ ¡áσ«ñ¿Γß∩
- «»αÑñѽѡ¿Ñ/. ïεíá∩ ¿¡¿µ¿á½¿ºáµ¿∩ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐ »α«ó«-
- ñ¿Γß∩ Γ«½∞¬« ó «»αÑñѽѡ¿¿. é «»αÑñѽѡ¿¿ ñ«½ª¡δ π¬áºδóáΓ∞ß∩
- αẼÑαδ ¼áßß¿ó«ó, á ó «»¿ßá¡¿¿ EXTERN φΓ«ú« ¼«ª¡« ¡Ñ ñѽáΓ∞.
- ò«Γ∩ »«ñ«í¡á∩ «αúá¡¿ºáµ¿∩ »α¿óÑñÑ¡¡«⌐ óδΦÑ »α«úαá¼¼δ ¿
- ¼á½«óÑα«∩Γ¡á, ¡« VAL ¿ SP ¼«ú½¿ íδ íδΓ∞ «»αÑñÑ½Ñ¡δ ¿ ¿¡¿µ¿á-
- ½¿º¿α«óá¡δ ó «ñ¡«¼ Σá⌐½Ñ, á Σπ¡¬µ¿∩ PUSH, POP ¿ CLEAR «»αÑ-
- ñѽѡδ ó ñαπú«¼. é φΓ«¼ ß½πτáÑ ñ½∩ ßó∩º¿ í뫨 íδ ¡Ñ«íσ«ñ¿¼δ
- ß½ÑñπεΘ¿Ñ «»αÑñѽѡ¿∩ ¿ «»¿ßá¡¿∩:
-
- ó Σá⌐½Ñ 1:
- ----------
-
- INT SP = 0; /* STACK POINTER */
- DOUBLE VAL[MAXVAL]; /* VALUE STACK */
-
- ó Σá⌐½Ñ 2:
- ----------
-
- EXTERN INT SP;
- EXTERN DOUBLE VAL[];
-
- DOUBLE PUSH(F) {...}
-
- DOUBLE POP() {...}
-
- CLEAR() {...}
-
-
- Γᬠ¬á¬ «»¿ßá¡¿∩ EXTERN 'ó Σá⌐½Ñ 1' ¡áσ«ñ∩Γß∩ óδΦÑ ¿ ó¡Ñ
- ΓαÑσ π¬áºá¡¡δσ Σπ¡¬µ¿⌐, «¡¿ «Γ¡«ß∩Γß∩ ¬« óßѼ ¡¿¼; «ñ¡«ú«
- ¡áí«αá «»¿ßá¡¿⌐ ñ«ßΓáΓ«τ¡« ñ½∩ óßÑú« 'Σá⌐½á 2'.
-
- - 87 -
-
- ä½∩ »α«úαá¼¼ í«½∞Φ«ú« αẼÑαá «íßπªñáѼá∩ »«ºªÑ ó φΓ«⌐
- ú½áóÑ ó«º¼«ª¡«ßΓ∞ ó¬½ετÑ¡¿∩ Σá⌐½«ó, #INCLUDE, »«ºó«½∩ÑΓ
- ¿¼ÑΓ∞ ó« óßÑ⌐ »α«úαá¼¼Ñ Γ«½∞¬« «ñ¡π ¬«»¿ε «»¿ßá¡¿⌐ EXTERN ¿
- óßΓáó½∩Γ∞ ÑÑ ó ¬áªñδ⌐ ¿ßσ«ñ¡δ⌐ Σá⌐½ ó« óαѼ∩ Ñú« ¬«¼»¿½∩µ¿¿.
- ÄíαáΓ¿¼ß∩ ΓÑ»Ñα∞ ¬ Σπ¡¬µ¿¿ GETOP, óδí¿αáεΘÑ⌐ ¿º Σá⌐½á
- óó«ñá ß½ÑñπεΘπε «»Ñαáµ¿ε ¿½¿ «»Ñαá¡ñ. Äß¡«ó¡á∩ ºáñáτá »α«ß-
- Γá: »α«»πßΓ¿Γ∞ »α«íѽδ, º¡á¬¿ Γáíπ½∩µ¿¿ ¿ ¡«óδÑ ßΓ᫬¿. àß½¿
- ß½ÑñπεΘ¿⌐ ß¿¼ó«½ «Γ½¿τÑ¡ «Γ µ¿Σαδ ¿ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿, Γ«
- ó«ºóαáΓ¿Γ∞ Ñú«. é »α«Γ¿ó¡«¼ ß½πτáÑ ß«íαáΓ∞ ßΓα«¬π µ¿Σα /«¡á
- ¼«ªÑΓ ó¬½ετáΓ∞ ñÑß∩Γ¿τ¡πε Γ«τ¬π/ ¿ ó«ºóαáΓ¿Γ∞ NUMBER ¬á¬
- ß¿ú¡á½ « Γ«¼, τΓ« óδíαá¡« τ¿ß½«.
- Åα«µÑñπαá ßπΘÑßΓóÑ¡¡« πß½«ª¡∩ÑΓß∩, Ñß½¿ ßΓαѼ¿Γ∞ß∩ »αá-
- ó¿½∞¡« «íαáíáΓδóáΓ∞ ß¿Γπᵿε, ¬«úñá óó«ñ¿¼«Ñ τ¿ß½« «¬áºδóá-
- ÑΓß∩ ß½¿Φ¬«¼ ñ½¿¡¡δ¼. öπ¡¬µ¿∩ GETOP ßτ¿ΓδóáÑΓ µ¿Σαδ »«ñα∩ñ
- /󫺼«ª¡« ß ñÑß∩Γ¿τ¡«⌐ Γ«τ¬«⌐/ ¿ ºá»«¼¿¡áÑΓ ¿σ, »«¬á »«ß½Ñ-
- ñ«óáΓѽ∞¡«ßΓ∞ ¡Ñ »αÑαδóáÑΓß∩. àß½¿ »α¿ φΓ«¼ ¡Ñ »α«¿ßσ«ñ¿Γ
- »ÑαÑ»«½¡Ñ¡¿∩, Γ« Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NUMBER ¿ ßΓα«¬π µ¿Σα.
- àß½¿ ªÑ τ¿ß½« «¬áºδóáÑΓß∩ ß½¿Φ¬«¼ ñ½¿¡¡δ¼, Γ« GETOP «Γíαáßδ-
- óáÑΓ «ßΓá½∞¡πε τáßΓ∞ ßΓ᫬¿ ¿º Σá⌐½á óó«ñá, ΓᬠτΓ« »«½∞º«-
- óáΓѽ∞ ¼«ªÑΓ »α«ßΓ« »ÑαÑ»ÑτáΓáΓ∞ φΓπ ßΓ᫬π ß ¼ÑßΓá «Φ¿í¬¿;
- Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ TOOBIG ¬á¬ ß¿ú¡á½ « »ÑαÑ»«½¡Ñ¡¿¿.
-
- GETOP(S, LIM) /* GET NEXT OPRERATOR OR OPERAND */
- CHAR S[];
- INT LIM;
- {
- INT I, C;
-
- WHILE((C=GETCH())==' '\!\! C=='\T' \!\! C=='\N')
- ;
- IF (C != '.' && (C < '0' \!\! C > '9'))
- RETURN(C);
- S[0] = C;
- FOR(I=1; (C=GETCHAR()) >='0' && C <= '9'; I++)
- IF (I < LIM)
-
- S[I] = C;
- IF (C == '.') { /* COLLECT FRACTION */
- IF (I < LIM)
- S[I] = C;
- FOR(I++;(C=GETCHAR()) >='0' && C<='9';I++)
- IF (I < LIM)
- S[I] =C;
- }
- IF (I < LIM) { /* NUMBER IS OK */
- UNGETCH(C);
- S[I] = '\0';
- RETURN (NUMBER);
-
- } ELSE { /* IT'S TOO BIG; SKIP REST OF LINE */
- WHILE (C != '\N' && C != EOF)
- C = GETCHAR();
- S[LIM-1] = '\0';
- RETURN (TOOBIG);
- }
- }
- - 88 -
-
- ùΓ« ªÑ »αÑñßΓáó½∩εΓ ¿º ßÑí∩ Σπ¡¬µ¿¿ 'GETCH' ¿ 'UNGETCH'?
- ùáßΓ« ΓᬠíδóáÑΓ, τΓ« »α«úαá¼¼á, ßτ¿ΓδóáεΘá∩ óσ«ñ¡δÑ ñá¡¡δÑ,
- ¡Ñ ¼«ªÑΓ «»αÑñѽ¿Γ∞, τΓ« «¡á »α«τ½á πªÑ ñ«ßΓáΓ«τ¡«, »«¬á «¡á
- ¡Ñ »α«τΓÑΓ ß½¿Φ¬«¼ ¼¡«ú«. Äñ¡¿¼ ¿º »α¿¼Ñα«ó ∩ó½∩ÑΓß∩ óδí«α
- ß¿¼ó«½«ó, ß«ßΓáó½∩εΘ¿σ τ¿ß½«: »«¬á ¡Ñ »«∩ó¿Γß∩ ß¿¼ó«½, «Γ-
- ½¿τ¡δ⌐ «Γ µ¿Σαδ, τ¿ß½« ¡Ñ ºá¬«¡τÑ¡«. ì« »α¿ φΓ«¼ »α«úαá¼¼á
- ßτ¿ΓδóáÑΓ «ñ¿¡ ½¿Φ¡¿⌐ ß¿¼ó«½, ß¿¼ó«½, ñ½∩ ¬«Γ«α«ú« «¡á ÑΘÑ
- ¡Ñ »«ñú«Γ«ó½Ñ¡á.
- ¥Γá »α«í½Ñ¼á íδ½á íδ αÑΦÑ¡á, Ñß½¿ íδ í佫 íδ 󫺼«ª¡«
- "»α«τÑßΓ∞ «íαáΓ¡«" ¡ÑªÑ½áΓѽ∞¡δ⌐ ß¿¼ó«½. Æ«úñá ¬áªñδ⌐ αáº,
- »α«τ¿Γáó ½¿Φ¡¿⌐ ß¿¼ó«½, »α«úαá¼¼á ¼«ú½á íδ »«¼ÑßΓ¿Γ∞ Ñú« «í-
- αáΓ¡« ó Σá⌐½ óó«ñá Γᬿ¼ «íαẫ¼, τΓ« «ßΓá½∞¡á∩ τáßΓ∞ »α«ú-
- αá¼¼δ ¼«ú½á íδ óÑßΓ¿ ßÑí∩ Γá¬, ß½«ó¡« φΓ«Γ ß¿¼ó«½ ¡¿¬«úñá ¡Ñ
- ßτ¿Γδóá½ß∩. ¬ ßτáßΓ∞ε, Γá¬«Ñ ¡Ñ»«½πτÑ¡¿Ñ ß¿¼ó«½á ½Ñú¬« ¿¼¼¿-
- Γ¿α«óáΓ∞, ¡á»¿ßáó »áαπ ñÑ⌐ßΓóπεΘ¿σ ß«ó¼ÑßΓ¡« Σπ¡¬µ¿⌐. öπ¡¬-
- µ¿∩ GETCH ñ«ßΓáó½∩ÑΓ ß½ÑñπεΘ¿⌐ ß¿¼ó«½ óó«ñá, »«ñ½ÑªáΘ¿⌐ αáß-
- ß¼«ΓαÑ¡¿ε; Σπ¡¬µ¿∩ UNGETCH »«¼ÑΘáÑΓ ß¿¼ó«½ ¡áºáñ ó« óó«ñ,
- ΓᬠτΓ« »α¿ ß½ÑñπεΘѼ «íαáΘÑ¡¿¿ ¬ GETCH «¡ íπñÑΓ ó«ºóαáΘÑ¡.
- Æ«, ¬á¬ φΓ¿ Σπ¡¬µ¿¿ ß«ó¼ÑßΓ¡« αáí«ΓáεΓ, óÑß∞¼á »α«ßΓ«.
- öπ¡¬µ¿∩ UNGETCH »«¼ÑΘáÑΓ ó«ºóαáΘáѼδÑ ¡áºáñ ß¿¼ó«½δ ó ß«ó-
- ¼ÑßΓ¡« ¿ß»«½∞ºπѼδ⌐ íπΣÑα, ∩ó½∩εΘ¿⌐ß∩ ß¿¼ó«½∞¡δ¼ ¼áßß¿ó«¼.
- öπ¡¬µ¿∩ GETCH τ¿ΓáÑΓ ¿º φΓ«ú« íπΣÑαá, Ñß½¿ ó ¡Ñ¼ τΓ«-½¿í«
- ¿¼ÑÑΓß∩; Ñß½¿ ªÑ íπΣÑα »πßΓ, «¡á «íαáΘáÑΓß∩ ¬ GETCHAR. Åα¿
- φΓ«¼ Γá¬ªÑ ¡πª¡á ¿¡ñѬ߿απεΘá∩ »ÑαѼѡ¡á∩, ¬«Γ«αá∩ íπñÑΓ
- Σ¿¬ß¿α«óáΓ∞ »«º¿µ¿ε ΓѬπΘÑú« ß¿¼ó«½á ó íπΣÑαÑ.
- Æá¬ ¬á¬ íπΣÑα ¿ Ñú« ¿¡ñÑ¬ß ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπεΓß∩ Σπ¡¬-
- µ¿∩¼¿ GETCH ¿ UNGETCH ¿ ñ«½ª¡δ ß«σαá¡∩Γ∞ ßó«¿ º¡áτÑ¡¿∩ ó »Ñ-
- α¿«ñ ¼Ñªñπ «íαáΘÑ¡¿∩¼¿, «¡¿ ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿ ñ½∩ «íÑ¿σ
- Σπ¡¬µ¿⌐. Æá¬¿¼ «íαẫ¼, ¼δ ¼«ªÑ¼ ¡á»¿ßáΓ∞ GETCH, UNGETCH ¿
- φΓ¿ »ÑαѼѡ¡δÑ ¬á¬:
-
- #DEFINE BUFSIZE 100
- CHAR BUF[BUFSIZE]; /* BUFFER FOR UNGETCH */
- INT BUFP = 0; /* NEXT FREE POSITION IN BUF */
-
- GETCH() /* GET A (POSSIBLY PUSHED BACK) CHARACTER */
- {
- RETURN((BUFP > 0) ? BUF[--BUFP] : GETCHAR());
- }
-
- UNGETCH(C) /* PUSH CHARACTER BACK ON INPUT */
- INT C;
- {
- IF (BUFP > BUFSIZE)
- PRINTF("UNGETCH: TOO MANY CHARACTERS\N");
- ELSE
- BUF [BUFP++] = C;
- }
-
- îδ ¿ß»«½∞º«ó὿ ñ½∩ σαá¡Ñ¡¿∩ ó«ºóαáΘáѼδσ ß¿¼ó«½«ó ¼áßß¿ó, á
- ¡Ñ «Γñѽ∞¡δ⌐ ß¿¼ó«½, »«Γ«¼π τΓ« Γá¬á∩ «íΘ¡«ßΓ∞ ¼«ªÑΓ »α¿ú«-
- ñ¿Γ∞ß∩ ó ñá½∞¡Ñ⌐ΦѼ.
-
- - 89 -
-
-
- ô»α᪡ѡ¿Ñ 4-4.
- ----------------
- ìá»¿Φ¿ΓÑ Σπ¡¬µ¿ε UNGETS(S) , ¬«Γ«αá∩ íπñÑΓ ó«ºóαáΘáΓ∞ ó«
- óó«ñ µÑ½πε ßΓ᫬π. 䫽ª¡á ½¿ UNGETS ¿¼ÑΓ∞ ñѽ« ß BUF ¿ BUFP
- ¿½¿ «¡á ¼«ªÑΓ »α«ßΓ« ¿ß»«½∞º«óáΓ∞ UNGETCH ?
- ô»α᪡ѡ¿Ñ 4-5.
- ----------------
- ÅαÑñ»«½«ª¿ΓÑ, τΓ« ¼«ªÑΓ ó«ºóαáΘáΓ∞ß∩ Γ«½∞¬« «ñ¿¡ ß¿¼ó«½. êº-
- ¼Ñ¡¿ΓÑ GETCH ¿ UNGETCH ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼.
- ô»α᪡ѡ¿Ñ 4-6.
- ----------------
- ìáΦ¿ Σπ¡¬µ¿¿ GETCH ¿ UNGETCH ¡Ñ «íÑß»Ñτ¿óáεΓ «íαáí«Γ¬π ó«ºó-
- αáΘÑ¡¡«ú« ß¿¼ó«½á EOF »ÑαÑ¡«ß¿¼δ¼ «íαẫ¼. ÉÑΦ¿ΓÑ, ¬á¬¿¼
- ßó«⌐ßΓó«¼ ñ«½ª¡δ «í½áñáΓ∞ φΓ¿ Σπ¡¬µ¿¿, Ñß½¿ ó«ºóαáΘáÑΓß∩
- EOF, ¿ αÑ὿ºπ⌐ΓÑ óáΦ¿ óδó«ñδ.
-
- 4.6. æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ.
-
- æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ »αÑñßΓáó½∩εΓ ß«í«⌐ ΓαÑΓ¿⌐ ¬½áßß
- »á¼∩Γ¿, ó ñ«»«½¡Ñ¡¿¿ ¬ áóΓ«¼áΓ¿τÑ߬¿¼ »ÑαѼѡ¡δ¼ ¿ EXTERN, ß
- ¬«Γ«α묨 ¼δ πªÑ óßΓαÑτ὿ß∞.
- æΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ¼«úπΓ íδΓ∞ ½¿í« ó¡πΓαÑ¡¡¿¼¿, ½¿í«
- ó¡ÑΦ¡¿¼¿. é¡πΓαÑ¡¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ Γ«τ¡« ΓᬠªÑ,
- ¬á¬ ¿ áóΓ«¼áΓ¿τÑ߬¿Ñ, ∩ó½∩εΓß∩ ½«¬á½∞¡δ¼¿ ñ½∩ ¡Ñ¬«Γ«α«⌐ Σπ¡-
- ¬µ¿¿, ¡«, ó «Γ½¿τ¿Ñ «Γ áóΓ«¼áΓ¿τÑ߬¿σ, «¡¿ «ßΓáεΓß∩ ßπΘÑßΓ-
- ó«óáΓ∞, á ¡Ñ »«∩ó½∩εΓß∩ ¿ ¿ßτѺáεΓ ó¼ÑßΓÑ ß «íαáΘÑ¡¿Ñ¼ ¬
- φΓ«⌐ Σπ¡¬µ¿¿. φΓ« «º¡áτáÑΓ, τΓ« ó¡πΓαÑ¡¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαÑ-
- ¼Ñ¡¡δÑ «íÑß»Ñτ¿óáεΓ »«ßΓ«∩¡¡«Ñ, ¡Ññ«ßΓπ»¡«Ñ ¿ºó¡Ñ σαá¡Ñ¡¿Ñ
- ó¡πΓα¿ Σπ¡¬µ¿¿. 濼ó«½∞¡δÑ ßΓ᫬¿, »«∩ó½∩εΘ¿Ñß∩ ó¡πΓα¿ Σπ¡¬-
- µ¿¿, ¬á¬, ¡á»α¿¼Ñα, áαúπ¼Ñ¡Γδ PRINTF , ∩ó½∩εΓß∩ ó¡πΓαÑ¡¡¿¼¿
- ßΓáΓ¿τÑ߬¿¼¿.
- é¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ «»αÑñѽѡδ ó «ßΓá½∞¡«⌐
- τáßΓ¿ Γ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, ó ¬«Γ«α«¼ «¡¿ «»¿ßá¡δ, ¡« ¡Ñ ó
- ¬á¬«¼-½¿í« ñαπú«¼ Σá⌐½Ñ. Æá¬¿¼ «íαẫ¼, «¡¿ ñáεΓ ß»«ß«í
- ߬αδóáΓ∞ ¿¼Ñ¡á, »«ñ«í¡δÑ BUF ¿ BUFP ó ¬«¼í¿¡áµ¿¿
- GETCH-UNGETCH, ¬«Γ«αδÑ ó ß¿½π ¿σ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩
- ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿, ¡« óßÑ ªÑ ¡Ñ ñ«ßΓπ»¡δ¼¿ ñ½∩ »«½∞º«óá-
- ΓѽÑ⌐ GETCH ¿ UNGETCH , τΓ«íδ ¿ß¬½ετá½áß∞ 󫺼«ª¡«ßΓ∞ ¬«¡Σ-
- ½¿¬Γá. àß½¿ φΓ¿ ñóÑ Σπ¡¬µ¿¿ ¿ ñóÑ »ÑαѼѡ¡δÑ «íΩÑñÑ¡¿Γ∞ ó
- «ñ¡«¼ Σá⌐½Ñ ß½ÑñπεΘ¿¼ «íαẫ¼
-
- STATIC CHAR BUF[BUFSIZE]; /* BUFFER FOR UNGETCH */
- STATIC INT BUFP=0; /*NEXT FREE POSITION IN BUF */
-
- GETCH() {...}
-
- UNGETCH() {...}
-
- Γ« ¡¿¬á¬á∩ ñαπúá∩ Σπ¡¬µ¿∩ ¡Ñ íπñÑΓ ó ß«ßΓ«∩¡¿¿ «íαáΓ¿Γ∞ß∩ ¬
- BUF ¿ BUFP; Σá¬Γ¿τÑ߬¿, «¡¿ ¡Ñ íπñπΓ óßΓπ»áΓ∞ ó ¬«¡Σ½¿¬Γ ß
- Γᬿ¼¿ ªÑ ¿¼Ñ¡á¼¿ ¿º ñαπú¿σ Σá⌐½«ó Γ«⌐ ªÑ ßἫ⌐ »α«úαá¼¼δ.
- æΓáΓ¿τÑ߬á∩ »á¼∩Γ∞, ¬á¬ ó¡πΓαÑ¡¡∩∩, Γᬠ¿ ó¡ÑΦ¡∩∩, ß»Ñ-
- µ¿Σ¿µ¿απÑΓß∩ ß½«ó«¼ STATIC , ßΓ«∩Θ¿¼ »ÑαÑñ «íδτ¡δ¼ «»¿ßá¡¿-
- Ѽ. ÅÑαѼѡ¡á∩ ∩ó½∩ÑΓß∩ ó¡ÑΦ¡Ñ⌐, Ñß½¿ «¡á «»¿ßá¡á ó¡Ñ ¬á¬«⌐
- íδ Γ« ¡¿ í佫 Σπ¡¬µ¿¿, ¿ ó¡πΓαÑ¡¡Ñ⌐, Ñß½¿ «¡á «»¿ßá¡á ó¡πΓα¿
- ¡Ñ¬«Γ«α«⌐ Σπ¡¬µ¿¿.
-
- - 90 -
-
- ì«α¼á½∞¡« Σπ¡¬µ¿¿ ∩ó½∩εΓß∩ ó¡ÑΦ¡¿¼¿ «íΩѬΓἿ; ¿σ ¿¼Ñ¡á
- ¿ºóÑßΓ¡δ ú½«íá½∞¡«. 󫺼«ª¡«, «ñ¡á¬«, «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε ¬á¬
- STATIC ; Γ«úñá ÑÑ ¿¼∩ ßΓá¡«ó¿Γß∩ ¡Ñ¿ºóÑßΓ¡δ¼ ó¡Ñ Σá⌐½á, ó
- ¬«Γ«α«¼ «¡« «»¿ßá¡«.
- é ∩ºδ¬Ñ "C" "STATIC" «ΓαáªáÑΓ ¡Ñ Γ«½∞¬« »«ßΓ«∩¡ßΓó«, ¡«
- ¿ ßΓѻѡ∞ Γ«ú«, τΓ« ¼«ª¡« ¡áºóáΓ∞ "»α¿óáΓ¡«ßΓ∞ε". é¡πΓαÑ¡¡¿Ñ
- ßΓáΓ¿τÑ߬¿Ñ «íΩѬΓδ «»αÑñѽѡδ Γ«½∞¬« ó¡πΓα¿ «ñ¡«⌐ Σπ¡¬µ¿¿;
- ó¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ «íΩѬΓδ /»ÑαѼѡ¡δÑ ¿½¿ Σπ¡¬µ¿¿/ «»αÑñÑ-
- ½Ñ¡δ Γ«½∞¬« ó¡πΓα¿ Γ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, úñÑ «¡¿ »«∩ó½∩εΓß∩,
- ¿ ¿σ ¿¼Ñ¡á ¡Ñ óßΓπ»áεΓ ó ¬«¡Σ½¿¬Γ ß Γᬿ¼¿ ªÑ ¿¼Ñ¡á¼¿ »ÑαÑ-
- ¼Ñ¡¡δσ ¿ Σπ¡¬µ¿⌐ ¿º ñαπú¿σ Σá⌐½«ó.
- é¡ÑΦ¡¿Ñ ßΓáΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ¿ Σπ¡¬µ¿¿ »αÑñ«ßΓáó½∩εΓ
- ß»«ß«í «αúá¡¿º«óδóáΓ∞ ñá¡¡δÑ ¿ αáí«ΓáεΘ¿Ñ ß ¡¿¼¿ ó¡πΓαÑ¡¡¿Ñ
- »α«µÑñπαδ Γᬿ¼ «íαẫ¼, τΓ« ñαπú¿Ñ »α«µÑñπαδ ¿ ñá¡¡δÑ ¡Ñ
- ¼«úπΓ »α¿⌐Γ¿ ß ¡¿¼¿ ó ¬«¡Σ½¿¬Γ ñáªÑ »« ¡Ññ«αáºπ¼Ñ¡¿ε. ìá»α¿-
- ¼Ñα, Σπ¡¬µ¿¿ GETCH ¿ UNGETCH «íαáºπεΓ "¼«ñπ½∞" ñ½∩ óó«ñá ¿
- ó«ºóαáΘÑ¡¿∩ ß¿¼ó«½«ó; BUF ¿ BUFP ñ«½ª¡δ íδΓ∞ ßΓáΓ¿τÑ߬¿¼¿,
- τΓ«íδ «¡¿ ¡Ñ í뫨 ñ«ßΓπ»¡δ ¿ºó¡Ñ. Æ«τ¡« ΓᬠªÑ Σπ¡¬µ¿¿ PUSH,
- POP ¿ CLEAR Σ«α¼¿απεΓ ¼«ñπ½∞ «íαáí«Γ¬¿ ßΓѬá; VAR ¿ SP Γ«ªÑ
- ñ«½ª¡δ íδΓ∞ ó¡ÑΦ¡¿¼¿ ßΓáΓ¿τÑ߬¿¼¿.
-
- 4.7. ÉÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ.
-
- ùÑΓóÑαΓδ⌐ ¿ »«ß½Ññ¡¿⌐ ¬½áßß »á¼∩Γ¿ ¡áºδóáÑΓß∩ αÑú¿ßΓα«-
- óδ¼. Ä»¿ßá¡¿Ñ REGISTER π¬áºδóáÑΓ ¬«¼»¿½∩Γ«απ, τΓ« ñá¡¡á∩ »Ñ-
- αѼѡ¡á∩ íπñÑΓ τáßΓ« ¿ß»«½∞º«óáΓ∞ß∩. è«úñá φΓ« 󫺼«ª¡«, »Ñ-
- αѼѡ¡δÑ, «»¿ßá¡¡δÑ ¬á¬ REGISTER, αáß»«½áúáεΓß∩ ó ¼áΦ¿¡¡δσ
- αÑú¿ßΓαáσ, τΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ¼Ñ¡∞Φ¿¼ »« αẼÑαπ ¿ í«½ÑÑ
- íδßΓαδ¼ »α«úαá¼¼á¼. Ä»¿ßá¡¿Ñ REGISTER óδú½∩ñ¿Γ ¬á¬
-
- REGISTER INT X;
- REGISTER CHAR C;
-
- ¿ Γ.ñ.; τáßΓ∞ INT ¼«ªÑΓ íδΓ∞ «»πΘÑ¡á. Ä»¿ßá¡¿Ñ REGISTER ¼«ª-
- ¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ½∩ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ¿ Σ«α-
- ¼á½∞¡δσ »áαá¼ÑΓα«ó Σπ¡¬µ¿⌐. é φΓ«¼ »«ß½Ññ¡Ñ¼ ß½πτáÑ «»¿ßá¡¿∩
- óδú½∩ñ∩Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- F(C,N)
- REGISTER INT C,N;
- {
- REGISTER INT I;
- ...
- }
-
- - 91 -
-
- ìá »αá¬Γ¿¬Ñ 󫺡¿¬áεΓ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩ ¡á αÑú¿ßΓα«-
- óδÑ »ÑαѼѡ¡δÑ, «ΓαáªáεΘ¿Ñ αÑá½∞¡δÑ ó«º¼«ª¡«ßΓ¿ ¿¼ÑεΘ¿σß∩
- á»»áαáΓ¡δσ ßαÑñßΓó. é αÑú¿ßΓαδ ¼«ª¡« »«¼ÑßΓ¿Γ∞ Γ«½∞¬« ¡Ñß-
- ¬«½∞¬« »ÑαѼѡ¡δσ ó ¬áªñ«⌐ Σπ¡¬µ¿¿, »α¿τѼ Γ«½∞¬« «»αÑñѽѡ-
- ¡δσ Γ¿»«ó. é ß½πτáÑ »αÑóδΦÑ¡¿∩ 󫺼«ª¡«ú« τ¿ß½á ¿½¿ ¿ß»«½∞-
- º«óá¡¿∩ ¡ÑαáºαÑΦÑ¡¡δσ Γ¿»«ó ß½«ó« REGISTER ¿ú¡«α¿απÑΓß∩.
- èα«¼Ñ Γ«ú« ¡Ñ󫺼«ª¡« ¿ºó½Ñτ∞ áñαÑß αÑú¿ßΓα«ó«⌐ »ÑαѼѡ¡«⌐
- (φëà ó«»α«ß «íßπªñáÑΓß∩ ó ú½áóÑ 5). ¥Γ¿ ߻ѵ¿Σ¿τÑ߬¿Ñ «úαá-
- ¡¿τÑ¡¿∩ óáα∞¿απεΓß∩ «Γ ¼áΦ¿¡δ ¬ ¼áΦ¿¡Ñ. Æá¬, ¡á»α¿¼Ñα, ¡á
- PDP-11 φΣΣÑ¬Γ¿ó¡δ¼¿ ∩ó½∩εΓß∩ Γ«½∞¬« »ÑαóδÑ Γα¿ «»¿ßá¡¿∩
- REGISTER ó Σπ¡¬µ¿¿, á ó ¬áτÑßΓóÑ Γ¿»«ó ñ«»π߬áεΓß∩ INT, CHAR
- ¿½¿ π¬áºáΓѽ∞.
-
- 4.8. ü½«τ¡á∩ ßΓαπ¬Γπαá.
-
- ƒºδ¬ "C" ¡Ñ ∩ó½∩ÑΓß∩ ∩ºδ¬«¼ ß í½«τ¡«⌐ ßΓαπ¬Γπα«⌐ ó ß¼δß-
- ½Ñ PL/1 ¿½¿ á½ú«½á; ó ¡Ñ¼ ¡Ñ½∞º∩ «»¿ßδóáΓ∞ «ñ¡¿ Σπ¡¬µ¿¿
- ó¡πΓα¿ ñαπú¿σ.
- ÅÑαѼѡ¡δÑ ªÑ, ß ñαπú«⌐ ßΓ«α«¡δ, ¼«úπΓ «»αÑñѽ∩Γ∞ß∩ »«
- ¼ÑΓ«ñπ í½«τ¡«ú« ßΓαπ¬Γπα¿α«óá¡¿∩. Ä»¿ßá¡¿∩ »ÑαѼѡ¡δσ (ó¬½ε-
- τá∩ ¿¡¿µ¿á½¿ºáµ¿ε) ¼«úπΓ ß½Ññ«óáΓ∞ ºá ½Ñó«⌐ Σ¿úπα¡«⌐ ߬«í-
- ¬«⌐,«Γ¬αδóáεΘÑ⌐ ½εí«⌐ «»ÑαáΓ«α, á ¡Ñ Γ«½∞¬« ºá Γ«⌐, ß ¬«Γ«-
- α«⌐ ¡áτ¿¡áÑΓß∩ Γѽ« Σπ¡¬µ¿¿. ÅÑαѼѡ¡δÑ, «»¿ßá¡¡δÑ Γᬿ¼ «í-
- αẫ¼, óδΓÑß¡∩εΓ ½εíδÑ »ÑαѼѡ¡δÑ ¿º ó¡ÑΦ¡¿σ í½«¬«ó, ¿¼ÑεΘ¿Ñ
- Γá¬¿Ñ ªÑ ¿¼Ñ¡á, ¿ «ßΓáεΓß∩ «»αÑñѽѡ¡δ¼¿ ñ« ß««ΓóÑΓßΓóπεΘÑ⌐
- »αáó«⌐ Σ¿úπα¡«⌐ ߬«í¬¿. ìá»α¿¼Ñα ó
-
- IF (N > 0) {
- INT I; /* DECLARE A NEW I */
- FOR (I = 0; I < N; I++)
- ...
- }
-
- Äí½áßΓ∞ε ñÑ⌐ßΓó¿∩ »ÑαѼѡ¡«⌐ I ∩ó½∩ÑΓß∩ "¿ßΓ¿¡¡á∩" óÑΓó∞
- IF; φΓ« I ¡¿¬á¬ ¡Ñ ßó∩ºá¡« ¡¿ ß ¬á¬¿¼¿ ñαπú¿¼¿ I ó »α«úαá¼-
- ¼Ñ.
- ü½«τ¡á∩ ßΓαπ¬Γπαá ó½¿∩ÑΓ ¿ ¡á «í½áßΓ∞ ñÑ⌐ßΓó¿∩ ó¡ÑΦ¡¿σ
- »ÑαѼѡ¡δσ. àß½¿ ñá¡δ «»¿ßá¡¿∩
-
- INT X;
-
- F()
- {
- DOUBLE X;
- ...
- }
-
- Æ« »«∩ó½Ñ¡¿Ñ X ó¡πΓα¿ Σπ¡¬µ¿¿ F «Γ¡«ß¿Γß∩ ¬ ó¡πΓαÑ¡¡Ñ⌐ »ÑαÑ-
- ¼Ñ¡¡«⌐ Γ¿»á DOUBLE, á ó¡Ñ F - ¬ ó¡ÑΦ¡Ñ⌐ µÑ½«⌐ »ÑαѼѡ¡«⌐.
- φΓ« ªÑ ß»αáóÑñ½¿ó« ó «Γ¡«ΦÑ¡¿¿ ¿¼Ñ¡ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó:
-
- INT X;
- F(X)
- DOUBLE X;
- {
- ...
- }
-
- é¡πΓα¿ Σπ¡¬µ¿¿ F ¿¼∩ X «Γ¡«ß¿Γß∩ ¬ Σ«α¼á½∞¡«¼π »áαá¼ÑΓαπ, á
- ¡Ñ ¬ ó¡ÑΦ¡Ñ⌐ »ÑαѼѡ¡«⌐.
-
- 4.9. ê¡¿µ¿á½¿ºáµ¿∩.
-
- îδ ñ« ß¿σ »«α πªÑ ¼¡«ú« αáº π»«¼¿¡á½¿ ¿¡¿µ¿á½¿ºáµ¿ε, ¡«
- óßÑúñá ¼¿¼«σ«ñ«¼ , ßαÑñ¿ ñαπú¿σ ó«»α«ß«ó. ÆÑ»Ñα∞, »«ß½Ñ Γ«ú«
- ¬á¬ ¼δ «íßπñ¿½¿ αẽ¿τ¡δÑ ¬½áßßδ »á¼∩Γ¿, ¼δ ó φΓ«¼ αáºñѽÑ
- »α«ßπ¼¼¿απѼ ¡Ñ¬«Γ«αδÑ »αáó¿½á, «Γ¡«ß∩Θ¿Ñß∩ ¬ ¿¡¿µ¿á½¿ºáµ¿¿.
- àß½¿ ∩ó¡á∩ ¿¡¿µ¿á½¿ºáµ¿∩ «ΓßπΓßΓóπÑΓ, Γ« ó¡ÑΦ¡¿¼ ¿ ßΓá-
- Γ¿τÑ߬¿¼ »ÑαѼѡ¡δ¼ »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ ¡π½∞; áóΓ«¼áΓ¿-
- τÑ߬¿Ñ ¿ αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ ¿¼ÑεΓ ó φΓ«¼ ß½πτáÑ ¡Ñ«»αÑ-
- ñѽѡ¡δÑ º¡áτÑ¡¿∩ (¼πß«α).
-
- - 92 -
-
- Åα«ßΓδÑ »ÑαѼѡ¡δÑ (¡Ñ ¼áßß¿óδ ¿½¿ ßΓαπ¬Γπαδ) ¼«ª¡« ¿¡¿-
- µ¿á½¿º¿α«óáΓ∞ »α¿ ¿σ «»¿ßá¡¿¿, ñ«íáó½∩∩ óß½Ññ ºá ¿¼Ñ¡Ñ¼ º¡á¬
- αáóÑ¡ßΓóá ¿ ¬«¡ßΓá¡Γ¡«Ñ óδαáªÑ¡¿Ñ:
-
- INT X = 1;
- CHAR SQUOTE = '\'';
- LONG DAY = 60 * 24; /* MINUTES IN A DAY */
-
- ä½∩ ó¡ÑΦ¡¿σ ¿ ßΓáΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ¿¡¿µ¿á½¿ºáµ¿∩ óδ»«½¡∩-
- ÑΓß∩ Γ«½∞¬« «ñ¿¡ αáº, ¡á φΓá»Ñ ¬«¼»¿½∩µ¿¿. ÇóΓ«¼áΓ¿τÑ߬¿Ñ ¿
- αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ ¿¡¿µ¿á½¿º¿απεΓß∩ ¬áªñδ⌐ αẠ»α¿ óσ«ñÑ
- ó Σπ¡¬µ¿ε ¿½¿ í½«¬.
- é ß½πτáÑ áóΓ«¼áΓ¿τÑ߬¿σ ¿ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ ¿¡¿µ¿á½¿ºá-
- Γ«α ¡Ñ «í∩ºá¡ íδΓ∞ ¬«¡ßΓá¡Γ«⌐: ¡á ßἫ¼ ñÑ½Ñ «¡ ¼«ªÑΓ íδΓ∞
- ½εíδ¼ º¡áτ¿¼δ¼ óδαáªÑ¡¿Ñ¼, ¬«Γ«α«Ñ ¼«ªÑΓ ó¬½ετáΓ∞ «»αÑñѽѡ-
- ¡δÑ αá¡ÑÑ óѽ¿τ¿¡δ ¿ ñáªÑ «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿∩¼. ìá»α¿¼Ñα,
- ¿¡¿µ¿á½¿ºáµ¿∩ ó »α«úαá¼¼Ñ í¿¡áα¡«ú« »«¿ß¬á ¿º ú½áóδ 3 ¼«ú½á
- íδ íδΓ∞ ºá»¿ßá¡á ó ó¿ñÑ
-
-
- BINARY(X, V, N)
- INT X, V[], N;
- {
- INT LOW = 0;
- INT HIGH = N - 1;
- INT MID;
- ...
- }
-
- ó¼ÑßΓ«
-
- BINARY(X, V, N)
- INT X, V[], N;
- {
- INT LOW, HIGH, MID;
-
- LOW = 0;
- HIGH = N - 1;
- ...
- }
-
- Å« ßó«Ñ¼π αѺπ½∞ΓáΓπ, ¿¡¿µ¿á½¿ºáµ¿¿ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ-
- ¡δσ ∩ó½∩εΓß∩ ß«¬αáΘÑ¡¡«⌐ ºá»¿ß∞ε «»ÑαáΓ«α«ó »α¿ßóá¿óá¡¿∩.
- èá¬πε Σ«α¼π »αÑñ»«τÑßΓ∞ - ó «ß¡«ó¡«¼ ñѽ« ó¬πßá. ¼δ «íδτ¡«
- ¿ß»«½∞ºπѼ ∩ó¡δÑ »α¿ßóá¿óá¡¿∩, »«Γ«¼π τΓ« ¿¡¿µ¿á½¿ºáµ¿∩ ó
- «»¿ßá¡¿∩σ ¼Ñ¡ÑÑ ºá¼ÑΓ¡á.
- ÇóΓ«¼áΓ¿τÑ߬¿Ñ ¼áßß¿óδ ¡Ñ ¼«úπΓ íδΓ∞ ¿¡¿µ¿á½¿º¿α«óá¡δ. é¡ÑΦ-
- ¡¿Ñ ¿ ßΓáΓ¿τÑ߬¿Ñ ¼áßß¿óδ ¼«ª¡« ¿¡¿µ¿á½¿º¿α«óáΓ∞, »«¼ÑΘá∩
- óß½Ññ ºá «»¿ß᡿Ѽ ºá¬½ετÑ¡¡δ⌐ ó Σ¿úπα¡δÑ ß¬«í¬¿ ß»¿ß«¬ ¡á-
- τá½∞¡δσ º¡áτÑ¡¿⌐, αáºñѽѡ¡δσ ºá»∩Γ묨. ìá»α¿¼Ñα »α«úαá¼¼á
- »«ñßτÑΓá ß¿¼ó«½«ó ¿º ú½áóδ 1, ¬«Γ«αá∩ ¡áτ¿¡á½áß∞ ß
-
- - 93 -
-
-
- MAIN() /* COUNT DIGITS, WHITE SPACE, OTHERS */
- (
- INT C, I, NWHITE, NOTHER;
- INT NDIGIT[10];
-
- NWHITE = NOTHER = 0;
- FOR (I = 0; I < 10; I++)
- NDIGIT[I] = 0;
- ...
- )
-
- ĪÑΓ íδΓ∞ »ÑαÑ»¿ßá¡á ó ó¿ñÑ
-
- INT NWHITE = 0;
- INT NOTHER = 0;
- INT NDIGIT[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
- MAIN() /* COUNT DIGITS, WHITE SPACE, OTHERS */
- (
- INT C, I;
- ...
- )
-
- ¥Γ¿ ¿¡¿µ¿á½¿ºáµ¿¿ Σá¬Γ¿τÑ߬¿ ¡Ñ ¡πª¡δ, Γᬠ¬á¬ óßÑ »α¿ßóá¿-
- óáѼδÑ º¡áτÑ¡¿∩ αáó¡δ ¡π½ε, ¡« σ«α«Φ¿⌐ ßΓ¿½∞ - ßñѽáΓ∞ ¿σ
- ∩ó¡δ¼¿. àß½¿ ¬«½¿τÑßΓó« ¡áτá½∞¡δσ º¡áτÑ¡¿⌐ ¼Ñ¡∞ΦÑ, τѼ π¬á-
- ºá¡¡δ⌐ αẼÑα ¼áßß¿óá, Γ« «ßΓá½∞¡δÑ φ½Ñ¼Ñ¡Γδ ºá»«½¡∩εΓß∩ ¡π-
- ½∩¼¿. ÅÑαÑτ¿ß½Ñ¡¿Ñ ß½¿Φ¬«¼ í«½∞Φ«ú« τ¿ß½á ¡áτá½∞¡δσ º¡áτÑ¡¿⌐
- ∩ó½∩ÑΓß∩ «Φ¿í¬«⌐. è ß«ªá½Ñ¡¿ε, ¡Ñ »αÑñπß¼«ΓαÑ¡á 󫺼«ª¡«ßΓ∞
- π¬áºá¡¿∩, τΓ« ¡Ñ¬«Γ«α«Ñ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«óΓ«α∩ÑΓß∩, ¿
- ¡Ñ½∞º∩ ¿¡¿µ¿á½¿º¿α«óáΓ∞ φ½Ñ¼Ñ¡Γ ó ßÑαÑñ¿¡Ñ ¼áßß¿óá íѺ »ÑαÑ-
- τ¿ß½Ñ¡¿∩ óßÑσ »αÑñδñπΘ¿σ.
- ä½∩ ß¿¼ó«½∞¡δσ ¼áßß¿ó«ó ßπΘÑßΓóπÑΓ ß»Ñµ¿á½∞¡δ⌐ ß»«ß«í
- ¿¡¿µ¿á½¿ºáµ¿¿; ó¼ÑßΓ« Σ¿úπα¡δσ ߬«í«¬ ¿ ºá»∩Γδσ ¼«ª¡« ¿ß-
- »«½∞º«óáΓ∞ ßΓ᫬π:
-
- CHAR PATTERN[] = "THE";
-
- ¥Γ« ß«¬αáΘÑ¡¿Ñ í«½ÑÑ ñ½¿¡¡«⌐, ¡« φ¬ó¿óá½Ñ¡Γ¡«⌐ ºá»¿ß¿:
-
- CHAR PATTERN[] = { 'T', 'H', 'E', '\0' };
-
- àß½¿ αẼÑα ¼áßß¿óá ½εí«ú« Γ¿»á «»πΘÑ¡, Γ« ¬«¼»¿½∩Γ«α «»αÑ-
- ñѽ∩ÑΓ Ñú« ñ½¿¡π, »«ñßτ¿Γδóá∩ τ¿ß½« ¡áτá½∞¡δσ º¡áτÑ¡¿⌐. é
- φΓ«¼ ¬«¡¬αÑΓ¡«¼ ß½πτáÑ αẼÑα αáóÑ¡ τÑΓδαѼ (Γα¿ ß¿¼ó«½á
- »½εß ¬«¡Ñτ¡«Ñ \0).
-
- - 94 -
-
- 4.10. ÉѬπαß¿∩.
-
- é ∩ºδ¬Ñ "C" Σπ¡¬µ¿¿ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ αѬπαß¿ó¡«; φΓ«
- «º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ ¼«ªÑΓ »α∩¼« ¿½¿ ¬«ßóÑ¡¡« «íαáΘáΓ∞ß∩ ¬
- ßÑíÑ ßἫ⌐. Æαáñ¿µ¿«¡¡δ¼ »α¿¼Ñα«¼ ∩ó½∩ÑΓß∩ »ÑτáΓ∞ τ¿ß½á ó
- ó¿ñÑ ßΓ᫬¿ ß¿¼ó«½«ó. ¬á¬ ¼δ πªÑ αá¡ÑÑ «Γ¼Ñτ὿, µ¿Σαδ úÑ¡Ñ-
- α¿απεΓß∩ ¡Ñ ó Γ«¼ »«α∩ñ¬Ñ: µ¿Σαδ ¼½áñΦ¿σ αáºα∩ñ«ó »«∩ó½∩εΓß∩
- αá¡∞ΦÑ µ¿Σα ¿º ßΓáαΦ¿σ αáºα∩ñ«ó, ¡« »ÑτáΓáΓ∞ß∩ «¡¿ ñ«½ª¡δ ó
- «íαáΓ¡«¼ »«α∩ñ¬Ñ.
- ¥Γπ »α«í½Ñ¼π ¼«ª¡« αÑΦ¿Γ∞ ñóπ¼∩ ß»«ß«íἿ. ÅÑαóδ⌐ ß»«-
- ß«í, ¬«Γ«αδ¼ ¼δ ó«ß»«½∞º«ó὿ß∞ ó ú½áóÑ 3 ó Σπ¡¬µ¿¿ ITOA,
- ºá¬½ετáÑΓß∩ ó ºá»«¼¿¡á¡¿¿ µ¿Σα ó ¡Ñ¬«Γ«α«¼ ¼áßß¿óÑ »« ¼ÑαÑ
- ¿σ »«ßΓπ»½Ñ¡¿∩ ¿ »«ß½ÑñπεΘѼ ¿σ »ÑτáΓá¡¿¿ ó «íαáΓ¡«¼ »«α∩ñ-
- ¬Ñ. ÅÑαóδ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ PRINTD ß½ÑñπÑΓ φΓ«⌐ ßσѼÑ.
-
- PRINTD(N) /* PRINT N IN DECIMAL */
- INT N;
- {
- CHAR S[10];
- INT I;
-
- IF (N < 0) {
- PUTCHAR('-');
- N = -N;
- }
- I = 0;
- DO {
- S[I++] = N % 10 + '0'; /* GET NEXT CHAR */
- } WHILE ((N /= 10) > 0); /* DISCARD IT */
- WHILE (--I >= 0)
- PUTCHAR(S[I]);
- }
-
-
- ǽ∞ΓÑα¡áΓ¿ó«⌐ φΓ«¼π ß»«ß«íπ ∩ó½∩ÑΓß∩ αѬπαß¿ó¡«Ñ αÑΦÑ-
- ¡¿Ñ, ¬«úñá »α¿ ¬áªñ«¼ ó맮óÑ Σπ¡¬µ¿∩ PRINTD ß¡áτá½á ß¡«óá
- «íαáΘáÑΓß∩ ¬ ßÑíÑ, τΓ«íδ ߬«»¿α«óáΓ∞ ½¿ñ¿απεΘ¿Ñ µ¿Σαδ, á ºá-
- ΓѼ »ÑτáΓáÑΓ »«ß½Ññ¡εε µ¿Σαπ.
-
- PRINTD(N) /* PRINT N IN DECIMAL (RECURSIVE)*/
- INT N;
- (
- INT I;
-
- IF (N < 0) {
- PUTCHAR('-');
- N = -N;
- }
- IF ((I = N/10) != 0)
- PRINTD(I);
- PUTCHAR(N % 10 + '0');
- )
- - 95 -
-
- è«úñá Σπ¡¬µ¿∩ óδºδóáÑΓ ßÑí∩ αѬπαß¿ó¡«, »α¿ ¬áªñ«¼ «íαá-
- ΘÑ¡¿¿ «íαáºπÑΓß∩ ¡«óδ⌐ ¡áí«α óßÑσ áóΓ«¼áΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ,
- ß«óÑαΦÑ¡¡« ¡Ñ ºáó¿ß∩Θ¿⌐ «Γ »αÑñδñπΘÑú« ¡áí«αá. Æá¬¿¼ «íαá-
- º«¼, ó PRINTD(123) »Ñαóá∩ Σπ¡¬µ¿∩ PRINTD ¿¼ÑÑΓ N = 123. Ä¡á
- »ÑαÑñáÑΓ 12 óΓ«α«⌐ PRINTD, á ¬«úñá Γá ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ
- Ñ⌐, »ÑτáΓáÑΓ 3. Æ«τ¡« ΓᬠªÑ óΓ«αá∩ PRINTD »ÑαÑñáÑΓ 1
- ΓαÑΓ∞Ñ⌐ (¬«Γ«αá∩ φΓπ Ññ¿¡¿µπ »ÑτáΓáÑΓ), á ºáΓѼ »ÑτáΓáÑΓ 2.
- ÉѬπαß¿∩ «íδτ¡« ¡Ñ ñáÑΓ ¡¿¬á¬«⌐ φ¬«¡«¼¿¿¿ »á¼∩Γ¿, »«ß-
- ¬«½∞¬π »α¿σ«ñ¿Γß∩ úñÑ-Γ« ß«ºñáóáΓ∞ ßΓѬ ñ½∩ «íαáíáΓδóáѼδσ
- º¡áτÑ¡¿⌐. ìÑ »α¿ó«ñ¿Γ «¡á ¿ ¬ ß«ºñá¡¿ε í«½ÑÑ íδßΓαδσ »α«ú-
- αá¼¼. ì« αѬπαß¿ó¡δÑ »α«úαá¼¼δ í«½ÑÑ ¬«¼»á¬Γ¡δ, ¿ «¡¿ ºáτáß-
- Γπε ßΓá¡«ó∩Γß∩ í«½ÑÑ ½Ñú¬¿¼¿ ñ½∩ »«¡¿¼á¡¿∩ ¿ ¡á»¿ßá¡¿∩. ÉÑ-
- ¬παß¿∩ «ß«íÑ¡¡« πñ«í¡á »α¿ αáí«ΓÑ ß αѬπαß¿ó¡« «»αÑñѽ∩Ñ¼δ¼¿
- ßΓαπ¬ΓπαἿ ñá¡¡δσ, ¡á»α¿¼Ñα, ß ñÑαÑó∞∩¼¿; σ«α«Φ¿⌐ »α¿¼Ñα
- íπñÑΓ »α¿óÑñÑ¡ ó ú½áóÑ 6.
- ô»α᪡ѡ¿Ñ 4-7.
- --------------
- Åα¿ß»«ß«í∞ΓÑ ¿ñÑ¿, ¿ß»«½∞º«óá¡¡δÑ ó PRINTD ñ½∩ αѬπαß¿ó-
- ¡«ú« ¡á»¿ßá¡¿∩ ITOA; Γ.Ñ. ÅαÑ«íαáºπ⌐ΓÑ µÑ½«Ñ ó ßΓ᫬π ß »«-
- ¼«Θ∞ε αѬπαß¿ó¡«⌐ »α«µÑñπαδ.
-
- ô»α᪡ѡ¿Ñ 4-8.
- --------------
- ìá»¿Φ¿ΓÑ αѬπαß¿ó¡δ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ REVERSE(S), ¬«Γ«αá∩
- αáß»«½áúáÑΓ ó «íαáΓ¡«¼ »«α∩ñ¬Ñ ßΓ᫬π S.
-
- 4.11. ÅαÑ»α«µÑßß«α ∩ºδ¬á "C".
-
- é ∩ºδ¬Ñ "ß" »αÑñπß¼«ΓαÑ¡δ «»αÑñѽѡ¡δÑ αáßΦ¿αÑ¡¿∩ ∩ºδ¬á
- ß »«¼«Θ∞ε »α«ßΓ«ú« ¼á¬α«»αÑñ»α«µÑßß«αá. «ñ¡¿¼ ¿º ßá¼δσ αáß»-
- α«ßΓαá¡Ñ¡¡δσ Γᬿσ αáßΦ¿αÑ¡¿⌐, ¬«Γ«α«Ñ ¼δ πªÑ ¿ß»«½∞º«ó὿,
- ∩ó½∩ÑΓß∩ ¬«¡ßΓαπ¬µ¿∩ #DEFINE; ñαπú¿¼ αáßΦ¿αÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩
- 󫺼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿ ß«ñÑন¼«Ñ ñαπú¿σ
- Σá⌐½«ó.
-
- 4.11.1. 鬽ετÑ¡¿Ñ Σá⌐½«ó
-
- ä½∩ «í½ÑúτÑ¡¿∩ αáí«Γδ ß ¡áí«αἿ ¬«¡ßΓαπ¬µ¿⌐ #DEFINE ¿
- «»¿ßá¡¿⌐ (ßαÑñ¿ »α«τ¿σ ßαÑñßΓó) ó ∩ºδ¬Ñ "ß" »αÑñπß¼«ΓαÑ¡á
- 󫺼«ª¡«ßΓ∞ ó¬½ετÑ¡¿∩ Σá⌐½«ó. ïεíá∩ ßΓ᫬á ó¿ñá
-
- #INCLUDE "FILENAME"
-
- ºá¼Ñ¡∩ÑΓß∩ ß«ñÑন¼δ¼ Σá⌐½á ß ¿¼Ñ¡Ñ¼ FILENAME. (èáóδτ¬¿ «í∩-
- ºáΓѽ∞¡δ). ùáßΓ« «ñ¡á ¿½¿ ñóÑ ßΓ᫬¿ Γᬫú« ó¿ñá »«∩ó½∩εΓß∩
- ó ¡áτá½Ñ ¬áªñ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á, ñ½∩ Γ«ú« τΓ«íδ ó¬½ετ¿Γ∞
- «íΘ¿Ñ ¬«¡ßΓαπ¬µ¿¿ #DEFINE ¿ «»¿ßá¡¿∩ EXTERN ñ½∩ ú½«íá½∞¡δσ
- »ÑαѼѡ¡δσ. ä«»π߬áÑΓß∩ 󽫪ѡ¡«ßΓ∞ ¬«¡ßΓαπ¬µ¿⌐ #INCLUDE.
- è«¡ßΓαπ¬µ¿∩ #INCLUDE ∩ó½∩ÑΓß∩ »αÑñ»«τΓ¿Γѽ∞¡δ¼ ß»«ß«í«¼
- ßó∩º¿ «»¿ßá¡¿⌐ ó í«½∞Φ¿σ »α«úαá¼¼áσ. ¥Γ«Γ ß»«ß«í úáαá¡Γ¿απ-
- ÑΓ, τΓ« óßÑ ¿ßσ«ñ¡δÑ Σá⌐½δ íπñπΓ ß¡áíªÑ¡δ «ñ¿¡á¬«ó묨 «»αÑ-
- ñѽѡ¿∩¼¿ ¿ «»¿ßá¡¿∩¼¿ »ÑαѼѡ¡δσ, ¿, ß½Ññ«óáΓѽ∞¡«, ¿ß¬½ε-
- τáÑΓ «ß«íÑ¡¡« ¡Ñ»α¿∩Γ¡δ⌐ ß«αΓ «Φ¿í«¬. àßΓÑßΓóÑ¡¡«, ¬«úñá ¬á-
- ¬«⌐-TO ó¬½ετáѼδ⌐ Σá⌐½ ¿º¼Ñ¡∩ÑΓß∩, óßÑ ºáó¿ß∩Θ¿Ñ «Γ ¡Ñú«
- Σá⌐½δ ñ«½ª¡δ íδΓ∞ »ÑαѬ«¼»¿½¿α«óá¡δ.
-
- - 96 -
-
- 4.11.2. îá¬α«»«ñßΓá¡«ó¬á
-
- Ä»αÑñѽѡ¿Ñ ó¿ñá
-
- #DEFINE TES 1
-
- »α¿ó«ñ¿Γ ¬ ¼á¬α«»«ñßΓá¡«ó¬Ñ ßἫú« »α«ßΓ«ú« ó¿ñá - ºá¼Ñ¡Ñ
- ¿¼Ñ¡¿ ¡á ßΓ᫬π ß¿¼ó«½«ó. ê¼Ñ¡á ó #DEFINE ¿¼ÑεΓ Γπ ªÑ ßá¼πε
- Σ«α¼π, τΓ« ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó "ß"; ºá¼Ñ¡∩εΘ¿⌐ ΓѬßΓ ß«óÑα-
- ΦÑ¡¡« »α«¿ºó«½Ñ¡. ì«α¼á½∞¡« ºá¼Ñ¡∩εΘ¿¼ ΓѬßΓ«¼ ∩ó½∩ÑΓß∩ «ß-
- Γá½∞¡á∩ τáßΓ∞ ßΓ᫬¿; ñ½¿¡¡«Ñ «»αÑñѽѡ¿Ñ ¼«ª¡« »α«ñ«½ª¿Γ∞,
- »«¼ÑßΓ¿ó \ ó ¬«¡Ñµ »α«ñ«½ªáѼ«⌐ ßΓ᫬¿. "Äí½áßΓ∞ ñÑ⌐ßΓó¿∩"
- ¿¼Ñ¡¿, «»αÑñѽѡ¡«ú« ó #DEFINE, »α«ßΓ¿αáÑΓß∩ «Γ Γ«τ¬¿ «»αÑ-
- ñѽѡ¿∩ ñ« ¬«¡µá ¿ßσ«ñ¡«ú« Σá⌐½á. ¿¼Ñ¡á ¼«úπΓ íδΓ∞ »ÑαÑ«»αÑ-
- ñѽѡδ, ¿ «»αÑñѽѡ¿∩ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¿∩, ßñÑ-
- ½á¡¡δÑ αá¡ÑÑ. é¡πΓα¿ ºá¬½ετÑ¡¡δσ ó ¬áóδτ¬¿ ßΓ᫬ »«ñßΓá¡«ó¬¿
- ¡Ñ »α«¿ºó«ñ∩Γß∩, ΓᬠτΓ« Ñß½¿, ¡á»α¿¼Ñα, YES - «»αÑñѽѡ¡«Ñ
- ¿¼∩, Γ« ó PRINTF("YES") ¡Ñ íπñÑΓ ßñѽᡫ ¡¿¬á¬«⌐ »«ñßΓá¡«ó-
- ¬¿.
- Æá¬ ¬á¬ αÑ὿ºáµ¿∩ #DEFINE ∩ó½∩ÑΓß∩ τáßΓ∞ε αáí«Γδ
- ¼áKα«»αÑñ»α«µÑßß«αá, á ¡Ñ ß«íßΓóÑ¡¡« ¬«¼»¿½∩Γ«αá, ¿¼ÑÑΓß∩
- «τÑ¡∞ ¼á½« úαá¼¼áΓ¿τÑ߬¿σ «úαá¡¿τÑ¡¿⌐ ¡á Γ«, τΓ« ¼«ªÑΓ íδΓ∞
- «»αÑñѽѡ«. Æá¬, ¡á»α¿¼Ñα, ½εí¿Γѽ¿ á½ú«½á ¼«úπΓ «íΩ∩ó¿Γ∞
-
- #DEFINE THEN
- #DEFINE BEGIN {
- #DEFINE END ;}
-
- ¿ ºáΓѼ ¡á»¿ßáΓ∞
-
- IF (I > 0) THEN
- BEGIN
- A = 1;
- B = 2
- END
-
- ê¼ÑÑΓß∩ Γá¬ªÑ ó«º¼«ª¡«ßΓ∞ «»αÑñѽѡ¿∩ ¼á¬α«ßá ß áαúπ¼Ñ¡-
- ΓἿ, ΓᬠτΓ« ºá¼Ñ¡∩εΘ¿⌐ ΓѬßΓ íπñÑΓ ºáó¿ßÑΓ∞ «Γ ó¿ñá «íαá-
- ΘÑ¡¿∩ ¬ ¼á¬α«ßπ. Ä»αÑñѽ¿¼, ¡á»α¿¼Ñα, ¼á¬α«ß ß ¿¼Ñ¡Ñ¼ MAX
- ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- #DEFINE MAX(A, B) ((A) > (B) ? (A) : (B))
-
- ¬«úñá ßΓ᫬á
-
- X = MAX(P+Q, R+S);
-
- íπñÑΓ ºá¼Ñ¡Ñ¡á ßΓ᫬«⌐
-
- X = ((P+Q) > (R+S) ? (P+Q) : (R+S));
-
- Æá¬á∩ 󫺼«ª¡«ßΓ∞ «íÑß»Ñτ¿óáÑΓ "Σπ¡¬µ¿ε ¼á¬ß¿¼π¼á", ¬«Γ«αá∩
- αáßΦ¿α∩ÑΓß∩ ó »«ß½Ññ«óáΓѽ∞¡δ⌐ ¬«ñ, á ¡Ñ ó «íαáΘÑ¡¿Ñ ¬ Σπ¡¬-
- µ¿¿. Åα¿ »αáó¿½∞¡«¼ «íαáΘÑ¡¿¿ ß áαúπ¼Ñ¡ΓἿ Γᬫ⌐ ¼á¬α«ß íπ-
- ñÑΓ αáí«ΓáΓ∞ ß ½εí묨 Γ¿»á¼¿ ñá¡¡δσ; ºñÑß∞ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿
- ó αẽ¿τ¡δσ ó¿ñáσ MAX ñ½∩ ñá¡¡δσ αạδσ Γ¿»«ó, ¬á¬ φΓ« í佫
- íδ ß Σπ¡¬µ¿∩¼¿.
-
- - 97 -
-
- è«¡Ñτ¡«, Ñß½¿ óδ ΓΘáΓѽ∞¡« αáßß¼«Γα¿ΓÑ »α¿óÑñÑ¡¡«Ñ óδΦÑ
- αáßΦ¿αÑ¡¿Ñ MAX, óδ ºá¼ÑΓ¿ΓÑ «»αÑñѽѡ¡δÑ ¡Ññ«ßΓáΓ¬¿. éδαáªÑ-
- ¡¿∩ óδτ¿ß½∩εΓß∩ ñóáªñδ; φΓ« »½«σ«, Ñß½¿ «¡¿ ó½Ñ¬πΓ ºá ß«í«⌐
- »«í«τ¡δÑ φΣΣѬΓδ, óδºóá¡¡δÑ, ¡á»α¿¼Ñα, «íαáΘÑ¡¿∩¼¿ ¬ Σπ¡¬µ¿-
- ∩¼ ¿½¿ ¿ß»«½∞º«ó᡿Ѽ «»Ñαᵿ⌐ πóѽ¿τÑ¡¿∩. ìπª¡« »«ºáí«Γ¿Γ∞-
- ß∩ « »αáó¿½∞¡«¼ ¿ß»«½∞º«óá¡¿¿ ¬απú½δσ ߬«í«¬, τΓ«íδ úáαá¡Γ¿-
- α«óáΓ∞ ß«σαá¡Ñ¡¿Ñ ΓαÑíπѼ«ú« »«α∩ñ¬á óδτ¿ß½Ñ¡¿⌐. (Éáßß¼«Γα¿-
- ΓÑ ¼á¬α«ß
-
- #DEFINE SQUARE(X) X * X
-
- »α¿ «íαáΘÑ¡¿¿ ¬ ¡Ñ⌐, ¬á¬ SQUARE(Z+1)). çñÑß∞ 󫺡¿¬áεΓ ñáªÑ
- ¡Ñ¬«Γ«αδÑ τ¿ßΓ« ½Ñ¬ß¿τÑ߬¿Ñ »α«í½Ñ¼δ: ¼Ñªñπ ¿¼Ñ¡Ñ¼ ¼á¬α« ¿
- ½Ñó«⌐ ¬απú½«⌐ ߬«í¬«⌐, «Γ¬αδóáεΘÑ⌐ ß»¿ß«¬ ÑÑ áαúπ¼Ñ¡Γ«ó, ¡Ñ
- ñ«½ª¡« íδΓ∞ ¡¿¬á¬¿σ »α«íѽ«ó.
- ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ á»»áαáΓ ¼á¬α«ß«ó ∩ó½∩ÑΓß∩ óÑß∞¼á µÑ¡¡δ¼.
- Äñ¿¡ »αá¬Γ¿τÑ߬¿⌐ »α¿¼Ñα ñáÑΓ «»¿ßδóáѼá∩ ó ú½áóÑ 7 ßΓá¡ñáα-
- Γ¡á∩ í¿í½¿«ΓѬá óó«ñá-óδó«ñá, ó ¬«Γ«α«⌐ GETCHAR ¿ PUTCHAR
- «»αÑñÑ½Ñ¡δ ¬á¬ ¼á¬α«ßδ («τÑó¿ñ¡« PUTCHAR ñ«½ª¡á ¿¼ÑΓ∞ áαúπ-
- ¼Ñ¡Γ), τΓ« »«ºó«½∩ÑΓ ¿ºíѪáΓ∞ ºáΓαáΓ ¡á «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿
- »α¿ «íαáí«Γ¬Ñ ¬áªñ«ú« ß¿¼ó«½á.
- äαπú¿Ñ 󫺼«ª¡«ßΓ¿ ¼á¬α«»α«µÑßß«αá «»¿ßá¡δ ó »α¿½«ªÑ¡¿¿
- Ç.
- ô»α᪡ѡ¿Ñ 4-9.
- ---------------
- Ä»αÑñѽ¿ΓÑ ¼á¬α«ß SWAP(X, Y), ¬«Γ«αδ⌐ «í¼Ñ¡¿óáÑΓ º¡áτÑ-
- ¡¿∩¼¿ ñóá ßó«¿σ áαúπ¼Ñ¡Γá Γ¿»á INT. (é φΓ«¼ ß½πτáÑ »«¼«ªÑΓ
- í½«τ¡á∩ ßΓαπ¬Γπαá).
-