home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-05 | 90.5 KB | 3,061 lines |
- âïÇéÇ 7 -- 1 --
- -------
-
- êìÆàÉÅÉàÆÇÆÄÉ¢ ƒç¢èÇ.
- -----------------------------------------------------------------
-
- éδ ¬«úñá-¡¿íπñ∞ σ«Γѽ¿ ß«ºñáΓ∞ ßó«⌐ ∩ºδ¬ »α«úαá¼¼¿α«óá¡¿∩?
- ü«½∞Φ¿¡ßΓó« »α«úαá¼¼¿ßΓ«ó »α¿ºδóáεΓ ¬ »«¿ß¬π ¿ñÑ¿ ß«ºñá¡¿∩,
- π»αáó½Ñ¡¿∩ ¿ ¼«ñ¿Σ¿¬áµ¿¿ ßó«¿σ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩. Äñ¡á¬«,
- ½¿Φ∞ ¡Ñ¼¡«ú¿Ñ »α«úαá¼¼¿ßΓδ ¼«úπΓ ½Ñú¬« ¿ ¡Ñ»α¿¡πªñÑ¡¡« ß«ºñáΓ∞
- ∩ºδ¬ »α«úαá¼¼¿α«óá¡¿∩. 櫺ñá¡¿Ñ »«½¡«ú« ¬«¼»¿½∩Γ«αá ∩ó½∩ÑΓß∩
- ¼¡«ú««í∩ºδóáεΘÑ⌐ ºáñáτÑ⌐, ¡« ú«αáºñ« »α«ΘÑ ß«ºñáΓ∞ ¿¡ΓÑα»αÑΓáΓ«α
- ∩ºδ¬á. îÑΓ«ñδ, ¿ß»«½∞ºπѼδÑ ñ½∩ ß«ºñá¡¿∩ ¿ΓÑα»αÑΓáΓ«α«ó ∩ºδ¬á,
- ¿ºπτáεΓß∩ αÑñ¬« ¿½¿ ¿ºπτáεΓß∩ ñ«ó«½∞¡« áíßΓαá¬Γ¡«. é φΓ«⌐ ú½áóÑ
- ¡á »αá¬Γ¿τÑ߬¿σ »α¿¼Ñαáσ óδ íπñÑΓÑ ¿ºπτáΓ∞ ßѬαÑΓδ ¿¡ΓÑα»αÑΓᵿ¿
- ∩ºδ¬á ¿ úαá¼¼áΓ¿τÑ߬«ú« αáºí«αá óδαáªÑ¡¿⌐.
-
- ê¡ΓÑα»αÑΓáΓ«αδ óáª¡δ »« ΓαѼ «τÑ¡∞ óáª¡δ¼ »α¿τ¿¡á¼.
- é«-»Ñαóδσ, «¡¿ ¼«úπΓ «íÑß»Ñτ¿óáΓ∞ πñ«í¡πε ¿¡ΓÑαá¬Γ¿ó¡πε ßαÑñπ
- (¬á¬ ñ«¬áºáΓѽ∞ßΓó« - ¿¡ΓÑα»αÑΓáΓ«α ßΓá¡ñáαΓ¡«ú« ∩ºδ¬á BASIC,
- ¬«Γ«α묨 ß¡áíªáεΓß∩ í«½∞Φ¿¡ßΓó« »Ñαß«¡á½∞¡δσ ¬«¼»∞ΓÑα«ó). î¡«ú¿Ñ
- »«½∞º«óáΓѽ¿-¡«ó¿τ¬¿ ¡áσ«ñ∩Γ, τΓ« ¿¡ΓÑαá¬Γ¿ó¡á∩ ßαÑñá í«½ÑÑ
- πñ«í¡á, τѼ ¬«¼»¿½∩Γ«α. é«-óΓ«αδσ, ¿¡ΓÑα»αÑΓáΓ«αδ ∩ºδ¬á
- «íÑß»Ñτ¿óáεΓ »αÑó«ßσ«ñ¡δÑ ¿¡ΓÑαá¬Γ¿ó¡δÑ «Γ½áñ«τ¡δÑ ó«º¼«ª¡«ßΓ¿.
- äáªÑ óÑΓÑαá¡δ-»α«úαá¼¼¿ßΓδ »α¿ «Γ½áñ¬Ñ Γαπñ¡δσ »α«úαá¼¼ »α¿íÑúáεΓ
- ¬ »«¼«Θ¿ ¿¡ΓÑα»αÑΓáΓ«αá ∩ºδ¬á, »«Γ«¼π τΓ« «¡ »«ºó«½∩ÑΓ ñ¿¡á¼¿τ¡«
- πßΓá¡áó½¿óáΓ∞ º¡áτÑ¡¿∩ »ÑαѼѡ¡δσ ¿ πß½«ó¿⌐. é-ΓαÑΓ∞¿σ,
- í«½∞Φ¿¡ßΓó« ∩ºδ¬«ó ºá»α«ß«ó ¬ íáºÑ ñá¡¡δσ αáí«ΓáεΓ ó αѪ¿¼Ñ
- ¿¡ΓÑα»αÑΓᵿ¿.
-
- é φΓ«⌐ ú½áóÑ íπñÑΓ αáºαáí«Γá¡ ¿¡ΓÑα»αÑΓáΓ«α ñ½∩ »«ñ¼¡«ªÑßΓóá
- ∩ºδ¬á BASIC, ¬«Γ«αδ⌐ ÑΘÑ ¡áºδóáεΓ "SMALL BASIC". BASIC óδíαá¡
- ó¼ÑßΓ« C¿, »«Γ«¼π τΓ« BASIC ½ÑúτÑ ¿¡ΓÑα»αÑΓ¿απÑΓß∩, τѼ C¿ ¿½¿
- ñαπú«⌐ ßΓαπ¬Γπα¡δ⌐ ∩ºδ¬. ê¡ΓÑα»αÑΓáΓ«α ñ½∩ ßΓαπ¬Γπα¡«ú« ∩ºδ¬á,
- Γᬫú« ¬á¬ C¿ í«½ÑÑ ΓαπñÑ¡, τѼ ñ½∩ BASIC ¿º-ºá áóΓ«¡«¼¡δσ
- Σπ¡¬µ¿⌐ ß ½«¬á½∞¡δ¼¿ »ÑαѼѡ¡δ¼¿, ¬«Γ«αδÑ «íÑß»Ñτ¿óáεΓ
- ¿¡ΓÑα»αÑΓáΓ«απ ¼¡«ú«º¡áτ¡«ßΓ∞. Åα¿¡µ¿»δ, ¿ß»«½∞ºπѼδÑ ó
- ¿¡ΓÑα»αÑΓáΓ«αÑ BASIC, »α¿¼Ñ¡¿¼δ ¿ ñ½∩ ñαπú¿σ ∩ºδ¬«ó, ¿ óδ ¼«ªÑΓÑ
- ¿ß»«½∞º«óáΓ∞ ¡á»¿ßá¡¡δÑ »α«úαá¼¼δ ó ¬áτÑßΓóÑ «Γ»αáó¡«⌐ Γ«τ¬¿.
- ÅαѪñÑ, τѼ ¡áτáΓ∞ αáí«Γπ, ¡Ñ«íσ«ñ¿¼« ¿ºπτ¿Γ∞ ßπΘ¡«ßΓ∞ ∩ºδ¬«ó«⌐
- ¿¡ΓÑα»αÑΓᵿ¿, «ß«íÑ¡¡« »ÑαÑñ ΓѼ, ¬á¬ íαáΓ∞ß∩ ºá ¿¡ΓÑα»ÑΓᵿε
- Γᬫú« ß½«ª¡«ú« ∩ºδ¬á, ¬á¬ C¿. àß½¿ óδ ¡Ñ º¡áÑΓÑ BASIC, ¡Ñ
- íÑß»«¬«⌐ΓÑß∞, ¬«¼á¡ñδ ¿ß»«½∞ºπѼδÑ ó SMALL BASIC «τÑ¡∞ ½Ñú¬¿Ñ ñ½∩
- »«¡¿¼á¡¿∩.
-
- îδ ¡áτ¿¡áѼ ß ßÑαñµá ½εí«ú« ¿¡ΓÑα»αÑΓáΓ«αá: ß¿¡Γá¬ß¿τÑ߬«ú«
- á¡á½¿ºáΓ«αá óδαáªÑ¡¿⌐.
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 2 --
-
-
- æêìÆÇèæêùàæèêë ÉÇçüÄÉ é¢ÉÇåàìêë
- -----------------------------------------------------------------
-
- ìá¿í«½ÑÑ ó᪡«⌐ τáßΓ∞ε ¿¡ΓÑα»αÑΓáΓ«αá ∩ºδ¬á ∩ó½∩ÑΓß∩
- ß¿¡Γá¬Γ¿τÑ߬¿⌐ á¡á½¿ºáΓ«α óδαáªÑ¡¿⌐, ¬«Γ«αδ⌐ »αÑ«íαáºπÑΓ τ¿ß½«óδÑ
- óδαáªÑ¡¿∩, Γá¬¿Ñ ¬á¬ (10-X)/23, ó Γá¬πε Σ«α¼π, τΓ«íδ ¬«¼»∞εΓÑα
- ¼«ú »«¡∩Γ∞ ÑÑ ¿ óδτ¿ß½¿Γ∞. é ¬¡¿úÑ »« ∩ºδ¬π C¿: The Complete
- Reference (Osborne/McGraw-uill, 1987) óßΓπ»¿Γѽ∞¡á∩ ú½áóá
- »«ßó∩ΘÑ¡á ß¿¡Γá¬ß¿τÑ߬«¼π á¡á½¿ºπ óδαáªÑ¡¿⌐. Å«ñ«í¡«ú« ªÑ α«ñá
- ß¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿º, «ß¡«óá¡¡δ⌐ ¡á »α¿¡µ¿»áσ, ¿º½«ªÑ¡¡δσ ó
- óδΦÑπ»«¼∩¡πΓ«⌐ ¬¡¿úÑ, (»αáóñá, ß ¡Ñí«½∞Φ¿¼¿ ¿º¼Ñ¡Ñ¡¿∩¼¿) íπñÑΓ
- ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ »«ßΓα«Ñ¡¿∩ ¿¡ΓÑα»αÑΓáΓ«αá SMALL BASIC ó ñá¡¡«⌐
- ú½áóÑ ¡áΦÑ⌐ ¬¡¿ú¿. (Æá¬ ¬á¬ φΓá ú½áóá ß«ñÑαª¿Γ Γ«½∞¬« ¬αáΓ¬¿Ñ
- ßóÑñÑ¡¿∩ « ß¿¡Γá¬ß¿τÑ߬«¼ á¡á½¿ºÑ óδαáªÑ¡¿⌐, Γ« ñ½∩ í«½ÑÑ
- ñÑΓá½∞¡«ú« ¿ºπτÑ¡¿∩ φΓ«⌐ »α«í½Ñ¼δ ß«óÑΓπѼ óá¼ «íαáΓ¿Γ∞ß∩ ¬
- ¿ßΓ«τ¡¿¬π: The Compelete Reference.
-
- æ¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿º óδαáªÑ¡¿⌐ ∩ó½∩ÑΓß∩ ñ«ó«½∞¡« ß½«ª¡«⌐
- ºáñáτÑ⌐, «ñ¡á¬« ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ «¡á «í½ÑúτáÑΓß∩ ΓѼ, τΓ« ó
- »α«µÑßßÑ ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºá ¿ß»«½∞ºπεΓß∩ ñ«ó«½∞¡« ßΓα«ú¿Ñ
- »αáó¿½á á½úÑíαδ. æ¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α, «»¿ßá¡¡δ⌐ ó φΓ«⌐
- ú½áóÑ, ó «íΘѼ ¼«ªÑΓ íδΓ∞ ¬½áßß¿Σ¿µ¿α«óá¡ ¬á¬ ß¿¡Γá¬ß¿τÑ߬¿⌐
- á¡á½¿ºáΓ«α αѬπαß¿ó¡«ú« ß»π߬á.
-
- ÅÑαÑñ ΓѼ, ¬á¬ »α¿ßΓπ»¿Γ∞ ¬ ñÑΓá½∞¡«⌐ αáºαáí«Γ¬Ñ
- ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºáΓ«αá, óδ ñ«½ª¡δ ¿¼ÑΓ∞ »αÑñßΓáó½Ñ¡¿Ñ «
- óδαáªÑ¡¿∩σ. Å«φΓ«¼π ¡áΦ ß½ÑñπεΘ¿⌐ »áαáúαáΣ »«ßó∩ΘÑ¡ ¿¼Ñ¡¡« φΓ«¼π
- ó«»α«ßπ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 3 --
-
-
- é¢ÉÇåàìêƒ
- -----------------------------------------------------------------
-
- ò«Γ∩ óδαáªÑ¡¿∩ ¼«úπΓ íδΓ∞ ß«ßΓáó½Ñ¡δ ó »α¿¡µ¿»Ñ ¿º ½εíδσ
- Γ¿»«ó ñá¡¡δσ, ó φΓ«⌐ ú½áóÑ ¼δ íπñѼ ¿¼ÑΓ∞ ñѽ« Γ«½∞¬« ß τ¿ß½«ó묨
- óδαáªÑ¡¿∩¼¿. üπñѼ ßτ¿ΓáΓ∞, τΓ« ñ½∩ ¡áΦ¿σ µÑ½Ñ⌐ τ¿ß½«óδÑ
- óδαáªÑ¡¿∩ ¼«úπΓ ßΓα«¿Γß∩ ¿º ß½ÑñπεΘ¿σ φ½Ñ¼Ñ¡Γ«ó:
-
- - τ¿ß½á
- - «»ÑαáΓ«αδ + - / * ^ % = () <> ; ,
- - ߬«í¬¿
- - »ÑαѼѡ¡δÑ
-
- æ¿¼ó«½ '^' «º¡áτáÑΓ φ¬ß»«¡Ñ¡Γπ, á ß¿¼ó«½ '=' ¿ß»«½∞ºπÑΓß∩
- ¬á¬ «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩, á Γá¬ªÑ ¬á¬ º¡á¬ αáóÑ¡ßΓóá ó «»Ñαᵿ∩σ
- ßαáó¡Ñ¡¿∩. ¥½Ñ¼Ñ¡Γδ óδαáªÑ¡¿∩ ¼«ª¡« ¬«¼í¿¡¿α«óáΓ∞ ß«ú½áß¡«
- »αáó¿½á¼ á½úÑíαδ.
-
- é«Γ ¡Ñ¬«Γ«αδÑ »α¿¼Ñαδ óδαáªÑ¡¿⌐:
-
- 7-8 (100-5)*14/6
- a+b-c
- 10^5
- a=7-b
-
- 濼ó«½δ '=', '>', '<', ',', ';' ∩ó½∩εΓß∩ «»ÑαáΓ«αἿ, «¡¿ ¡Ñ
- ¼«úπΓ ¿ß»«½∞º«óáΓß∩ ó óδαáªÑ¡¿∩σ Σπ¡¬µ¿⌐ ¿ ¬«¡ßΓαπ¬µ¿∩σ Γ¿»á IF,
- PRINT ¿ «»ÑαáΓ«αáσ »α¿ßóá¿óá¡¿∩. (çá¼ÑΓ¿¼, τΓ« á¡á½¿ºáΓ«α ∩ºδ¬á
- C¿ ñ«½ªÑ¡ «íαáíáΓδóáΓ∞ ¿ φΓ¿ «»ÑαáΓ«αδ ó αẽ¿τ¡δσ ¿σ
- ¬«¼í¿¡áµ¿∩σ).
-
- ùΓ« ¬áßáÑΓß∩ ∩ºδ¬á BASIC, ßΓáαΦ¿¡ßΓó« «»ÑαáΓ«α«ó ¡Ñ
- «»αÑñѽѡ«. é »α«µÑßßÑ αáí«Γδ ß¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α
- »α¿ßóá¿óáÑΓ «»ÑαáΓ«αá¼ ß½ÑñπεΘ¿Ñ »α¿«α¿ΓÑΓδ:
-
- óδßΦ¿⌐ ()
- ^
- * / %
- + -
- ¡¿ºΦ¿⌐ =
-
- Ä»ÑαáΓ«αδ αáó¡«ú« »α¿«α¿ΓÑΓá óδ»«½¡∩εΓß∩ ß½Ñóá ¡á»αáó«.
-
- æ¿¡Γá¬ß¿ß ∩ºδ¬á SMALL BASIC »αÑñ»«½áúáÑΓ, τΓ« óßÑ »ÑαѼѡ¡δÑ
- «í«º¡áτáεΓß∩ «ñ¡«⌐ íπ¬ó«⌐. ¥Γ« »«ºó«½∩ÑΓ «»Ñα¿α«óáΓ∞ ó »α«úαá¼¼Ñ
- ñóáñµáΓ¿ ΦÑßΓ∞ε »ÑαѼѡ¡δ¼¿ (íπ¬óδ «Γ A ñ« Z). ò«Γ∩
- ¿¡ΓÑα»αÑΓáΓ«αδ ∩ºδ¬á BASIC »«ññÑনóáεΓ «íδτ¡« í«½∞ΦÑÑ τ¿ß½«
- ß¿¼ó«½«ó ó «»αÑñѽѡ¿¿ »ÑαѼѡ¡«⌐, (¡á»α¿¼Ñα, »ÑαѼѡ¡δÑ Γ¿»á
- ò27), ¡« ñ½∩ »α«ßΓ«Γδ ¿º½«ªÑ¡¿∩ «ß¡«ó¡δσ »α¿¡µ¿»«ó »«ßΓα«Ñ¡¿∩
- ¿¡ΓÑα»αÑΓáΓ«α«ó ¡áΦ ¿¡ΓÑα»αÑΓáΓ«α ∩ºδ¬á SMALL BASIC φΓ«ú« ñѽáΓ∞
- ¡Ñ íπñÑΓ. üπñѼ ßτ¿ΓáΓ∞ ΓᬪÑ, τΓ« »ÑαѼѡ¡δÑ αạδσ αÑú¿ßΓα«ó ¡Ñ
- «Γ½¿τáεΓß∩ ñαπú «Γ ñαπúá ¿, »«φΓ«¼π, »ÑαѼѡ¡δÑ "a" ¿ "A" íπñπΓ
- Γαá¬Γ«óáΓ∞ß∩ ¬á¬ «ñ¡á ¿ Γá ªÑ »ÑαѼѡ¡á∩. ôß½«ó¿¼ß∩, τΓ« óßÑ
- τ¿ß½á ∩ó½∩εΓß∩ µÑ½δ¼¿, σ«Γ∩ óδ íѺ «ß«í«ú« Γαπñá ¼«ªÑΓÑ ¡á»¿ßáΓ∞
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 4 --
-
-
- »α«úαá¼¼δ ñ½∩ ¼á¡¿»π½¿α«óá¡¿∩ ñαπú¿¼¿ Γ¿»á¼¿ τ¿ßѽ. ò«Γ∩
- ß¿¼ó«½∞¡δÑ »ÑαѼѡ¡δÑ ó ¡áΦÑ⌐ óÑαß¿¿ ∩ºδ¬á ¿ ¡Ñ »«ññÑনóáεΓß∩,
- íπñѼ ßτ¿ΓáΓ∞, τΓ« 󫺼«ªÑ¡ óδó«ñ «úαá¡¿τÑ¡¡δσ ß¿¼ó«½∞¡δσ
- ¬«¡ßΓá¡Γ ¡á φ¬αá¡ ó ó¿ñÑ αẽ¿τ¡δσ ß««íΘÑ¡¿⌐.
-
- êΓá¬, íπñѼ ßΓα«¿Γ∞ ß¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α ¿ßσ«ñ∩ ¿º
- »ÑαÑτ¿ß½Ñ¡¡δσ óδΦÑ ñ«»πΘÑ¡¿⌐. ÆÑ»Ñα∞ ñáóá⌐ΓÑ αáßß¼«Γα¿¼ ΓᬫÑ
- íẫó«Ñ »«¡∩Γ¿Ñ ΓÑ«α¿¿ ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºá ¬á¬ ½Ñ¬ßѼá.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 5 --
-
-
- ïàèæàî¢
- -----------------------------------------------------------------
-
- ÅÑαÑñ ΓѼ, ¬á¬ »«ßΓα«¿Γ∞ ß¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α,
- αáºí¿αáεΘ¿⌐ º¡áτÑ¡¿∩ óδαáªÑ¡¿⌐, óδ ñ«½ª¡δ ¿¼ÑΓ∞ ¡Ñ߬«½∞¬«
- óáα¿á¡Γ«ó αáºí¿Ñ¡¿∩ ßΓ᫬¿, ß«ñÑαªáΘÑ⌐ óδαáªÑ¡¿Ñ, ¡á ß«ßΓáó½∩εΘ¿Ñ
- τáßΓ¿. ìá»α¿¼Ñα, óδαáªÑ¡¿Ñ
-
- Ç*é-(W+10)
-
- ß«ñÑαª¿Γ ¬«¼»«¡Ñ¡Γδ "Ç", "*", "é", "-", "(", "W", "+", "10" ¿
- ")". èáªñδ⌐ ¬«¼»«¡Ñ¡Γ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡Ññѽ¿¼δ⌐ φ½Ñ¼Ñ¡Γ
- óδαáªÑ¡¿∩. Æá¬«⌐ ¬«¼»«¡Ñ¡Γ ¿½¿ ¡Ñºáó¿ß¿¼á∩ τáßΓ∞ óδαáªÑ¡¿∩
- ¡áºδóáÑΓß∩ ½Ñ¬ßѼ«⌐. öπ¡¬µ¿∩, αáºí¿óáεΘá∩ óδαáªÑ¡¿Ñ ¡á ß«ßΓáó¡δÑ
- τáßΓ¿, ñ«½ª¡á αÑΦáΓ∞ τÑΓδαÑ ºáñáτ¿: (1) ¿ú¡«α¿α«óáΓ∞ »α«íÑ½δ ¿
- ß¿¼ó«½δ Γáíπ½∩µ¿¿, (2) ¿ºó½Ñ¬áΓ∞ ¬áªñπε ½Ñ¬ßÑ¼π ¿º ΓѬßΓá, (3)
- Ñß½¿ ¡Ñ«íσ«ñ¿¼«, »αÑ«íαẫóδóáΓ∞ ½Ñ¬ßѼπ ó« ó¡πΓαÑ¡¡¿⌐ Σ«α¼áΓ,
- (4) «»αÑñѽ∩Γ∞ Γ¿» ½Ñ¬ßѼδ.
-
- èáªñá∩ ½Ñ¬ßÑ¼á ¿¼ÑÑΓ ñóá Σ«α¼áΓá: ó¡ÑΦ¡¿⌐ ¿ ó¡πΓαÑ¡¡¿⌐.
- é¡ÑΦ¡¿⌐ Σ«α¼áΓ - φΓ« ß¿¼ó«½∞¡á∩ ßΓ᫬á, ß »«¼«Θ∞ε ¬«Γ«α«⌐ óδ
- »¿Φ¿ΓÑ »α«úαá¼¼δ ¡á ¬á¬«¼-½¿í« ∩ºδ¬Ñ »α«úαá¼¼¿α«óá¡¿∩. ìá»α¿¼Ñα,
- "PRINT" - φΓ« ó¡ÑΦ¡∩∩ Σ«α¼á ¬«¼á¡ñδ PRINT ∩ºδ¬á BASIC. ¡«
- »«ßΓα«¿Γ∞ ¿¡ΓÑα»αÑΓáΓ«α ¿º αáßτÑΓá, τΓ« ¬áªñá∩ ½Ñ¬ßѼá
- ¿ß»«½∞ºπÑΓß∩ ó« ó¡ÑΦ¡Ñ¼ Σ«α¼áΓÑ, ¡« φΓ« Γ¿»¿τ¡«Ñ αÑΦÑ¡¿Ñ »α«í½Ñ¼δ
- »α«úαá¼¼¿ßΓ«¼-¡Ñ»α«ΣÑßß¿«¡á½«¼, ¬«Γ«αδ⌐ ½¿Φ∞ ñóá τáßá ¡áºáñ
- «Γ«αóá½ß∩ «Γ ¼áΓÑα¿¡«⌐ εí¬¿ ¿ τáß ¡áºáñ πó¿ñѽ ¡áßΓ«∩Θ¿⌐
- ¬«¼»∞εΓÑα. ìáßΓ«∩Θ¿Ñ ¼πªτ¿¡δ «α¿Ñ¡Γ¿απεΓß∩ ¡á ó¡πΓαÑ¡¡¿⌐ Σ«α¼áΓ
- ½Ñ¬ßѼδ, ¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩ »α«ßΓ« τ¿ß½«¼, ¿ αáºαáíáΓδóáεΓ
- ¿¡ΓÑα»αÑΓáΓ«αδ ¿ßσ«ñ∩ ¿º φΓ«⌐ »α«ΣÑßß¿«¡á½∞¡«⌐ Γ«τ¬¿ ºαÑ¡¿∩ ¡á
- »α«í½Ñ¼π. Å«∩ß¡¿¼ φëà »«ñσ«ñ. ìá»α¿¼Ñα, ¬«¼á¡ñá PRINT ¼«ªÑΓ
- ¿¼ÑΓ∞ »«α∩ñ¬«óδ⌐ ó¡πΓαÑ¡¡¿⌐ ¡«¼Ñα 1, ¬«¼á¡ñá INPUT - 2 ¿ Γ.ñ.
- ÅαÑ¿¼πΘÑßΓó« ó¡πΓαÑ¡¡Ñú« Σ«α¼áΓá ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ«
- »α«úαá¼¼δ, «íαáíáΓδóáεΘ¿Ñ τ¿ß½á, í«½ÑÑ íδßΓα«ñÑ⌐ßΓóπεΘ¿Ñ, τѼ
- »α«úαá¼¼δ, «íαáíáΓδóáεΘ¿Ñ ßΓ᫬¿. ä½∩ αÑ὿ºáµ¿¿ Γᬫú« »«ñσ«ñá
- ¡Ñ«íσ«ñ¿¼á Σπ¡¬µ¿∩, ¬«Γ«αá∩ íÑαÑΓ ¿º óσ«ñ¡«ú« »«Γ«¬á ñá¡¡δσ
- «τÑαÑñ¡πε ½Ñ¬ßÑ¼π ¿ »αÑ«íαáºπÑΓ ÑÑ ¿º ó¡ÑΦ¡Ñú« Σ«α¼áΓá ó«
- ó¡πΓαÑ¡¡¿⌐. Å«¼¡¿ΓÑ, τΓ« ¡Ñ óßÑ ½Ñ¬ßÑ¼δ ¿¼ÑεΓ αạδÑ Σ«α¼áΓδ.
- ìá»α¿¼Ñα, «»ÑαáΓ«αδ ¡Ñ »«ñ½ÑªáΓ »αÑ«íαẫóá¡¿ε »«Γ«¼π, τΓ« «¡¿
- ¼«úπΓ Γαá¬Γ«óáΓ∞ß∩ ¬á¬ ß¿¼ó«½δ ¿½¿ τ¿ß½á ó ßó«¿σ ó¡ÑΦ¡¿σ
- Σ«α¼áΓáσ.
-
- ÄτÑ¡∞ ó᪡« º¡áΓ∞, ¬á¬«⌐ Γ¿» ½Ñ¬ßѼδ ó«ºóαáΘÑ¡. ìá»α¿¼Ñα,
- á¡á½¿ºáΓ«απ óδαáªÑ¡¿⌐ ¡Ñ«íσ«ñ¿¼« º¡áΓ∞, ∩ó½∩ÑΓß∩ ½¿ ß½ÑñπεΘá∩
- ½Ñ¬ßѼá τ¿ß½«¼, «»ÑαáΓ«α«¼ ¿½¿ »ÑαѼѡ¡«⌐. ç¡áτÑ¡¿Ñ Γ¿»á ½Ñ¬ßѼδ
- ñ½∩ »α«µÑßßá á¡á½¿ºá ó µÑ½«¼ ßΓá¡ÑΓ «τÑó¿ñ¡δ¼, ¬«úñá óδ
- »α¿ßΓπ»¿ΓÑ ¡Ñ»«ßαÑñßΓóÑ¡¡« ¬ αáºαáí«Γ¬Ñ ¿¡ΓÑα»αÑΓáΓ«αá.
-
- öπ¡¬µ¿∩, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ß½ÑñπεΘπε ½Ñ¬ßѼπ ó óδαáªÑ¡¿¿,
- ¡áºδóáÑΓß∩ get_token( ). Ä¡á αáí«ΓáÑΓ ¿º αáßτÑΓá Γ«ú«, τΓ« ó
- ∩ºδ¬Ñ SMALL BASIC, »α«úαá¼¼á σαá¡¿Γß∩ ¬á¬ «ñ¡á ßΓ᫬á,
- «úαá¡¿τÑ¡¡á∩ ó ¬«¡µÑ ß¿¼ó«½«¼ ºáóÑαΦÑ¡¿∩ ßΓ᫬¿ (\0). öπ¡¬µ¿∩
- get_token() ߬᡿απÑΓ ΓѬßΓ »α«úαá¼¼δ, á¡á½¿º¿απ∩ »« «ñ¡«¼π
- ß¿¼ó«½π, »α¿ φΓ«¼ ú½«íá½∞¡δ⌐ π¬áºáΓѽ∞ á¡á½¿ºáΓ«αá »α¿¡¿¼áÑΓ
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 6 --
-
-
- º¡áτÑ¡¿Ñ áñαÑßá «τÑαÑñ¡«⌐ ßτ¿Γá¡«⌐ ½Ñ¬ßѼδ. é óÑαß¿¿ get_token(),
- »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ, φëà π¬áºáΓѽ∞ ¡áºδóáÑΓß∩ prog. Æá¬ ¬á¬ prog
- ∩ó½∩ÑΓß∩ ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐, Γ« Ñú« º¡áτÑ¡¿Ñ ¼Ñªñπ ó맮óἿ
- get_token ß«σαá¡∩ÑΓß∩ ¿ »«ºó«½∩ÑΓ ñαπú¿¼ Σπ¡¬µ¿∩¼ ¿ß»«½∞º«óáΓ∞
- Ñú«.
-
- ǡ὿ºáΓ«α, αáºαáíáΓδóáѼδ⌐ ó φΓ«⌐ ú½áóÑ, ¿ß»«½∞ºπÑΓ ΦÑßΓ∞
- Γ¿»«ó ½Ñ¬ßѼ: DELIMITER, VARIABLE, NUMBER, COMMAND, STRING ¿
- QUOTE (αáºñѽ¿Γѽ∞, »ÑαѼѡ¡á∩, τ¿ß½«, ¬«¼á¡ñá, ßΓα«¬á ¿
- ¬áóδτ¬¿). Æ¿» VARIABLE »α¿»¿ßδóáÑΓß∩ »ÑαѼѡ¡δ¼. Æ¿» DELIMITER
- »α¿»¿ßδóáÑΓß∩ «»ÑαáΓ«αá¼ ¿ ߬«í¬á¼. Æ¿» NUMBER - ñ½∩ τ¿ßѽ. Æ¿»
- COMMAND - ñ½∩ ¬«¼á¡ñ ∩ºδ¬á SMALL BASIC. Æ¿» STRING óαѼѡ¡«
- ¿ß»«½∞ºπÑΓß∩ ó¡πΓα¿ get_token() »«¬á ¿ñÑΓ αáºí«α ½Ñ¬ßѼδ. Æ¿»
- QUOTE ¿ß»«½∞ºπÑΓß∩ »α¿ «»αÑñѽѡ¿¿ ¬áóδτѬ, «úαá¡¿τ¿óáεΘ¿σ
- ßΓ᫬π. ⽫íá½∞¡á∩ »ÑαѼѡ¡á∩ token_type ß«ñÑαª¿Γ Γ¿» ½Ñ¬ßѼδ.
- é¡πΓαÑ¡¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ ½Ñ¬ßÑ¼δ »«¼ÑΘáÑΓß∩ ó ú½«íá½∞¡πε
- »ÑαѼѡ¡πε tok.
-
- ì¿ªÑ »α¿óÑñÑ¡á Σπ¡¬µ¿∩ get_token(). éßÑ «ßΓá½∞¡δÑ
- ¡Ñ«íσ«ñ¿¼δÑ óß»«¼«úáΓѽ∞¡δÑ Σπ¡¬µ¿¿ ñ½∩ »«½¡«ú« ß¿¡Γá¬ß¿τÑ߬«ú«
- á¡¿½¿ºáΓ«αá íπñπΓ »α¿óÑñÑ¡δ ó φΓ«⌐ ú½áóÑ ¡Ñ¼¡«ú« »«ºªÑ.
-
-
- #define DELIMITER 1
- #define VARIABLE 2
- #define NUMBER 3
- #define COMMAND 4
- #define STRING 5
- #define QUOTE 6
- #define FINISHED 10
- #define EOL 9
-
- extern char token[80];
- extern int tok, token_type;
- extern char *prog; /* æ«ñÑαª¿Γ á¡á½¿º¿απѼ«Ñ óδαáªÑ¡¿Ñ */
- /* Å«½πτ¿Γ∞ ½Ñ¬ßѼπ */
- get_token()
- {
- register char *temp;
-
- token_type=0; tok=0;
- temp=token;
-
- if(*prog=='\0') { /* 諡ѵ Σá⌐½á */
- *token=0;
- tok=FINISHED;
- return(token_type=DELIMITER);
- }
-
- while(iswhite(*prog)) ++prog; /* »α«»π߬ »α«íѽ«ó */
-
- if(*prog=='\r') { /* crtl */
- ++prog; ++prog;
- tok= EOL; *token='\r';
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 7 --
-
-
- token[1]='\n';token[2]=0;
- return (token_type = DELIMITER);
- }
-
- if(strchr("+-*^/%=;(),><", *prog)) { /* αáºñѽ¿Γѽ∞ */
- *temp=*prog;
- prog++; /* »ÑαÑσ«ñ ¡á ß½¬ñπεΘπε »«º¿µ¿ε */
- temp++;
- *temp=0;
- return (token_type=DELIMITER);
- }
-
- if(*prog=='"') { /* ßΓ᫬á ó ¬áóδτ¬áσ */
- prog++;
- while(*prog != '"' && *prog!='\r') *temp++=*prog++;
- if(*prog=='\r') serror(1);
- prog++;*temp=0;
- return(token_type=QUOTE);
- }
-
- if(isdigit(*prog)) { /* τ¿ß½« */
- while(!isdelim(*prog)) *temp++=*prog++;
- *temp = '\0';
- return(token_type = NUMBER);
- }
-
- if(isalpha(*prog)) { /* »ÑαѼѡ¡á∩ ¿½¿ ¬«¼á¡ñá */
- while(!isdelim(*prog)) *temp++=*prog++;
- token_type=STRING;
- }
-
- *temp = '\0';
- /* Åα«ß¼áΓα¿óáÑΓß∩, Ñß½¿ ßΓ᫬á ÑßΓ∞ ¬«¼á¡ñá ¿½¿ »ÑαѼѡ¡á∩ */
- if(token_type==STRING) {
- tok=look_up(token); /* »αÑ«íαẫóá¡¿Ñ ó« ó¡πΓαÑ¡¡¿⌐
- Σ«α¼áΓ */
- if(!tok) token_type = VARIABLE;
- else token_type = COMMAND; /* φΓ« ¬«¼á¡ñá */
- }
- return token_type;
- }
-
-
- ū߼«Γα¿ΓÑ ó¡¿¼áΓѽ∞¡« ¡á get_token(). î¡«ú¿Ñ »α«úαá¼¼¿ßΓδ
- ½εí∩Γ »«¼ÑΘáΓ∞ »α«íÑ½δ »ÑαÑñ óδαáªÑ¡¿∩¼¿ ñ½∩ π½πτΦÑ¡¿∩
- πñ«í«τ¿ΓáѼ«ßΓ¿ ¿ ¡áú½∩ñ¡«ßΓ¿ ßó«Ñ⌐ »α«úαá¼¼δ. ï¿ñ¿απεΘ¿Ñ »α«íѽδ
- »α«»π߬áεΓß∩ ß »«¼«Φ∞ε Σπ¡¬µ¿¿ is_white(), ¬«Γ«αá∩ ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿Ñ "¿ßΓ¿¡á" ("TRUE"), Ñß½¿ ÑÑ áαúπ¼Ñ¡Γ ∩ó½∩ÑΓß∩ »α«íѽ«¼
- ¿½¿ ß¿¼ó«½«¼ Γáíπ½∩µ¿¿. Å᫥ »α«»πß¬á »α«íѽ«ó, ߬á¡Ñα,
- αÑ὿ºπѼδ⌐ ß »«¼«Θ∞ε »α«úαá¼¼δ prog, π¬áºδóáÑΓ ¡á ¬áªñ«Ñ τ¿ß½«,
- »ÑαѼѡ¡πε, ¬«¼á¡ñπ, ß¿¼ó«½ "ó«ºóαáΓ ¬áαÑΓ¬¿" ¿½¿ ¡«½∞, Ñß½¿
- ñ«ßΓ¿ú¡πΓ ¬«¡Ñµ óδαáªÑ¡¿∩ (»α«úαá¼¼δ). àß½¿ «τÑαÑñ¡δ¼
- á¡á½¿º¿απÑ¼δ¼ ß¿¼ó«½«¼ ∩ó½∩ÑΓß∩ ß¿¼ó«½ "ó«ºóαáΓ ¬áαÑΓ¬¿" (\r), Γ«
- ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ "¬«¡Ñµ ßΓ᫬¿ »α«úαá¼¼δ" ("EOL"). àß½¿
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 8 --
-
-
- «τÑαÑñ¡«⌐ ß¿¼ó«½ ∩ó½∩ÑΓß∩ «»ÑαáΓ«α«¼, Γ« ó ¬áτÑßΓóÑ º¡áτÑ¡¿∩
- ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐ token ó«ºóαáΘáÑΓß∩ ß««ΓóÑΓßΓóπεΘá∩ ßΓ᫬á,
- »α¿ φΓ«¼ ó »ÑαѼѡ¡πε token_type »«¼ÑΘáÑΓß∩ º¡áτÑ¡¿Ñ DELIMITER. é
- »α«Γ¿ó¡«¼ ß½πτáÑ »α«óÑα∩ÑΓß∩ ¡á½¿τ¿Ñ ¬áóδτѬ. çáΓѼ »α«¿ßσ«ñ¿Γ
- »α«óÑα¬á ∩ó½∩ÑΓß∩ ½¿ ½Ñ¬ßѼá τ¿ß½«¼. àß½¿ ½Ñ¬ßѼá ∩ó½∩ÑΓß∩
- ß¿¼ó«½«¼, Γ« «¡á, ß½Ññ«óáΓѽ∞¡«, ∩ó½∩ÑΓß∩ ¿½¿ »ÑαѼѡ¡«⌐ ¿½¿
- ¬«¼á¡ñ«⌐. öπ¡¬µ¿∩ look_up() ßαáó¡¿óáÑΓ ó¡ÑΦ¡¿⌐ Σ«α¼áΓ ½Ñ¬ßѼδ ß
- Γáí½¿µÑ⌐ ½Ñ¬ßѼ, «»αÑñѽѡ¡«⌐ »α¿ αáºαáí«Γ¬Ñ á¡á½¿ºáΓ«αá ¿, Ñß½¿
- ¡áσ«ñ¿Γ ß««ΓóÑΓßΓóπεΘÑ º¡áτÑ¡¿Ñ ó ¡Ñ⌐, ó«ºóαáΘáÑΓ ó¡πΓαÑ¡¡ÑÑ
- »αÑñßΓáó½Ñ¡¿Ñ ½Ñ¬ßѼδ (¬«¼á¡ñδ). é »α«Γ¿ó¡«¼ ß½πτáÑ ½Ñ¬ßѼá
- Γαá¬ΓπÑΓß∩ ¬á¬ »ÑαѼѡ¡á∩. ê, ¡á¬«¡Ñµ, Ñß½¿ ß¿¼ó«½ ¡Ñ
- πñ«ó½ÑΓó«α∩ÑΓ ¡¿ «ñ¡«¼π ¿º πß½«ó¿⌐, »α¿óÑñÑ¡¡δσ óδΦÑ, Γ« «¡
- Γαá¬ΓπÑΓß∩ ¬á¬ ß¿¼ó«½ ¬«¡µá óδαáªÑ¡¿∩. Åα¿ φΓ«¼ º¡áτÑ¡¿Ñ token
- «í¡π½∩ÑΓß∩.
-
- ä½∩ ½πτΦÑú« »«¡¿¼á¡¿∩ αáí«Γδ get_token() ¿ºπτ¿ΓÑ Γ¿»δ,
- ¬«Γ«αδÑ ó«ºóαáΘáÑΓ Σπ¡¬µ¿∩ ñ½∩ ¬áªñ«⌐ ½Ñ¬ßѼδ:
-
- PRINT A+100-(B*C)/2
-
- --------------------------------
- ïѬßÑ¼á Æ¿» ½Ñ¬ßѼδ.
-
- PRINT COMMAND
- A VARIABLE
- + DELIMITER
- 100 NUMBER
- - DELIMITER
- ( DELIMITER
- B VARIABLE
- * DELIMITER
- C VARIABLE
- ) DELIMITER
- / DELIMITER
- 2 NUMBER
- null DELIMITER
- --------------------------------
-
- Å«¼¡¿ΓÑ, τΓ« º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐ token αáó¡« ¡π½ε, Ñß½¿
- ½Ñ¬ßѼá ß«ßΓ«¿Γ ¿º «ñ¡«ú« ß¿¼ó«½á.
-
- ìѬ«Γ«αδÑ Σπ¡¬µ¿¿ ¿¡ΓÑα»αÑΓáΓ«αá ¡πªñáεΓß∩ ó »«óΓ«α¡«¼
- »α«ß¼«ΓαÑ ½Ñ¬ßѼδ. é φΓ«¼ ß½πτáÑ ½Ñ¬ßѼá ñ«½ª¡á íδΓ∞ ó«ºóαáΘÑ¡á
- ó« óσ«ñ¡«⌐ »«Γ«¬. öπ¡¬µ¿∩ putback() αÑΦáÑΓ φΓπ ºáñáτπ.
-
- /* 髺óαáΘáÑΓ ½Ñ¬ßѼπ «íαáΓ¡« ó« óσ«ñ¡«⌐ »«Γ«¬ */
- void putback()
- {
-
- char *t;
-
- t = token;
- for(; *t; t++) prog--;
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 9 --
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 10 --
-
-
- ÅÄɃäÄè ÅÄæÆÉÄàìêƒ é¢ÉÇåàìêë
- -----------------------------------------------------------------
-
- ê¼ÑÑΓß∩ ¼¡«ú« óáα¿á¡Γ«ó á¡á½¿ºá ¿ óδτ¿ß½Ñ¡¿∩ óδαáªÑ¡¿⌐. ä½∩
- ¿ß»«½∞º«óá¡¿∩ »«½¡«ú« ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºáΓ«αá αѬπαß¿ó¡«ú«
- ß»πß¬á ¼δ ñ«½ª¡δ »αÑñßΓáó¿Γ∞ óδαáªÑ¡¿Ñ ó ó¿ñÑ αѬπαß¿ó¡«⌐
- ßΓαπ¬Γπαδ ñá¡¡δσ. ¥Γ« «º¡áτáÑΓ, τΓ« óδαáªÑ¡¿Ñ «»αÑñѽ∩ÑΓß∩ ó
- ΓÑα¼áσ ßἫú« ßÑí∩. àß½¿ óδαáªÑ¡¿Ñ ¼«ª¡« «»αÑñѽ¿Γ∞ ß
- ¿ß»«½∞º«ó᡿Ѽ Γ«½∞¬« ß¿¼ó«½«ó "+" ,"-" ,"*" ,"/" ¿ ߬«í«¬, Γ«
- óßÑ óδαáªÑ¡¿∩ ¼«úπΓ íδΓ∞ «»αÑñѽѡδ ß ¿ß»«½∞º«ó᡿Ѽ ß½ÑñπεΘ¿σ
- »αáó¿½:
-
- éδαáªÑ¡¿Ñ = > ÆÑα¼ [+ÆÑα¼][-ÆÑα¼]
- ÆÑα¼ = > öá¬Γ«α [*öá¬Γ«α][/öá¬Γ«α]
- öá¬Γ«α = > ÅÑαѼѡ¡á∩, ù¿ß½« ¿½¿ (éδαáªÑ¡¿Ñ)
-
- ÄτÑó¿ñ¡«, τΓ« ¡Ñ¬«Γ«αδÑ τáßΓ¿ ó óδαáªÑ¡¿¿ ¼«úπΓ
- «ΓßπΓßΓó«óáΓ∞ ó««íΘÑ. èóáñαáΓ¡δÑ ß¬«í¬¿ «º¡áτáεΓ ¿¼Ñ¡¡« ΓᬿÑ
- ¡Ñ«í∩ºáΓѽ∞¡δÑ φ½Ñ¼Ñ¡Γδ óδαáªÑ¡¿∩. æ¿¼ó«½ => ¿¼ÑÑΓ ß¼δß½
- "»α«ñπµ¿απÑΓ".
-
- öá¬Γ¿τÑ߬¿, óδΦÑ »ÑαÑτ¿ß½Ñ¡δ »αáó¿½á, ¬«Γ«αδÑ «íδτ¡«
- ¡áºδóáεΓ »αáó¿½á¼¿ óδó«ñá óδαáªÑ¡¿∩. é ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼¿
- »αáó¿½á¼¿ ΓÑα¼ ¼«ª¡« «»αÑñѽ¿Γ∞ Γá¬: "ÆÑα¼ ∩ó½∩ÑΓß∩
- »α«¿ºóÑñÑ¡¿Ñ¼ ¿½¿ «Γ¡«ΦÑ¡¿Ñ¼ Σá¬Γ«α«ó".
-
- éδ óÑα«∩Γ¡« ºá¼ÑΓ¿½¿, τΓ« »α¿«α¿ΓÑΓ «»ÑαáΓ«α«ó íѺπß½«óÑ¡ ó
- «»¿ßá¡¡δσ óδαáªÑ¡¿∩σ, Γ« ÑßΓ∞ 󽫪ѡ¡δÑ φ½Ñ¼Ñ¡Γδ ó¬½ετáεΓ
- «»ÑαáΓ«αδ ß í«½ÑÑ óδß«¬¿¼ »α¿«α¿ΓÑΓ«¼.
-
- é ßó∩º¿ ß φΓ¿¼ αáßß¼«Γα¿¼ α∩ñ »α¿¼Ñα«ó. éδαáªÑ¡¿Ñ
-
- 10+5*B
-
- ß«ñÑαª¿Γ ñóá ΓÑα¼á: "10" ¿ "5*B". Ä¡¿, ó ßó«ε «τÑαÑñ∞, ß«ßΓ«∩Γ ¿º
- ΓαÑσ Σá¬Γ«α«ó: "10", "5" ¿ "B", ß«ñÑαªáΘ¿σ ñóá τ¿ß½á ¿ «ñ¡π
- »ÑαѼѡ¡πε.
-
- é ñαπú«¼ ß½πτáÑ óδαáªÑ¡¿Ñ
-
- 14*(7-C)
-
- ß«ñÑαª¿Γ ñóá Σá¬Γ«αá "14" ¿ "(7-C)", ¬«Γ«αδÑ, ó ßó«ε «τÑαÑñ∞,
- ß«ßΓ«∩Γ ¿º τ¿ß½á ¿ óδαáªÑ¡¿∩ ó ߬«í¬áσ. éδαáªÑ¡¿Ñ ó ߬«í¬áσ
- óδτ¿ß½∩ÑΓß∩ ¬á¬ αạ«ßΓ∞ τ¿ß½á ¿ »ÑαѼѡ¡«⌐.
-
- ¡« »αÑ«íαẫóáΓ∞ »αáó¿½á óδó«ñá óδαáªÑ¡¿⌐ ó ¼¡«ªÑßΓó«
- «íΘ¿σ αѬπαß¿ó¡δσ Σπ¡¬µ¿⌐, τΓ« ¿ ∩ó½∩ÑΓß∩ ºáτáßΓπε «ß¡«ó¡«⌐
- Σ«α¼«⌐ ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºáΓ«αá αѬπαß¿ó¡«ú« ß»π߬á. ìá ¬áªñ«¼
- ΦáúÑ á¡á½¿ºáΓ«α Γᬫú« Γ¿»á óδ»«½¡∩ÑΓ ß»Ñµ¿Σ¿τÑ߬¿Ñ «»Ñαᵿ¿ ó
- ß««ΓóÑΓßΓó¿¿ ß πßΓá¡«ó½Ñ¡¡δ¼¿ á½úÑíαá¿τÑ߬¿¼¿ »αáó¿½á¼¿. Éáí«Γπ
- φΓ«ú« »α«µÑßßá ¼«ª¡« αáßß¼«ΓαÑΓ∞ ¡á »α¿¼ÑαÑ á¡á½¿ºá óδαáªÑ¡¿∩ ¿
- óδ»«½¡Ñ¡¿∩ áα¿Σ¼ÑΓ¿τÑ߬¿σ «»Ñαᵿ⌐.
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 11 --
-
-
- ÅπßΓ∞ ¡á óσ«ñ á¡á½¿ºáΓ«αá »«ßΓπ»áÑΓ ß½ÑñπεΘÑÑ óδαáªÑ¡¿Ñ:
-
- 9/3-(100+56)
-
- ǡ὿ºáΓ«α ó φΓ«¼ ß½πτáÑ íπñÑΓ αáí«ΓáΓ∞ »« Γᬫ⌐ ßσѼÑ:
-
- 1. üÑαѼ »Ñαóδ⌐ ΓÑα¼: "9/3".
- 2. üÑαѼ ¬áªñδ⌐ Σá¬Γ«α ¿ óδ»«½¡∩Ѽ ñѽѡ¿Ñ τ¿ßѽ, »«½πτáѼ
- αѺπ½∞ΓáΓ "3".
- 3. üÑαѼ óΓ«α«⌐ ΓÑα¼: "(100+56)". é φΓ«⌐ Γ«τ¬Ñ ßΓáαΓπÑΓ
- αѬπαß¿ó¡δ⌐ á¡á½¿º óΓ«α«ú« óδαáªÑ¡¿∩.
- 4. üÑαѼ ¬áªñδ⌐ Σá¬Γ«α ¿ ßπ¼¼¿απѼ ¿σ ¼Ñªñπ ß«í«⌐, »«½πτáѼ
- αѺπ½∞ΓáΓ 156
- 5. üÑαѼ τ¿ß½«, óÑα¡πóΦÑÑß∩ ¿º αѬπαß¿¿, ¿ óδτ¿ΓáѼ Ñú« ¿º
- »Ñαó«ú«: 3-156. Å«½πτáѼ ¿Γ«ú«óδ⌐ αѺπ½∞ΓáΓ "-153".
-
-
- àß½¿ óδ ¡Ñ¼¡«ú« ß¼πΘÑ¡δ ßΓ«½∞ ß½«ª¡«⌐ ßσѼ«⌐ αáí«Γδ
- á¡á½¿ºáΓ«αá, Γ« πóÑα∩Ѽ óáß, τΓ« φΓ« ¡Ñ Γᬠπª ßΓαáΦ¡«. â«αáºñ«
- ßΓαáΦ¡ÑÑ «¬áºáΓ∞ß∩ π ΓѽÑ󿺫αá, ¬«úñá Γαá¡ß½¿απεΓ Σ¿¡á½∞¡δ⌐
- ΣπΓí«½∞¡δ⌐ ¼áΓτ, ¡Ñ ¿¼Ñ∩ ß ß«í«⌐ ñ«ßΓáΓ«τ¡«ú« ºá»áßá »¿óá.
- Å«φΓ«¼π ¡Ñ »πúá⌐ΓÑß∞ ¬«¼»½Ñ¬ß¡«ú« »«ñσ«ñá.
-
- éδ ñ«½ª¡δ »«¼¡¿Γ∞ ñóÑ «ß¡«ó¡δÑ ¿ñÑ¿ αѬπαß¿ó¡«ú« αáºí«αá
- óδαáªÑ¡¿⌐: (1) »α¿«α¿ΓÑΓ «»ÑαáΓ«α«ó ∩ó½∩ÑΓß∩ íѺπß½«ó¡δ¼ ó
- »α«ñπ¬µ¿«¡¡δσ »αáó¿½áσ ¿ «»αÑñѽѡ ó ¡¿σ; (2) φëà ¼ÑΓ«ñ
- ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºá ¿ óδτ¿ß½Ñ¡¿∩ óδαáªÑ¡¿⌐ «τÑ¡∞ »«σ«ª ¡á
- Γ«Γ, ¬«Γ«αδ⌐ óδ ßἿ ¿ß»«½∞ºπÑΓÑ ñ½∩ óδ»«½¡Ñ¡¿∩ Γᬿσ ªÑ
- «»Ñαᵿ⌐.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 12 --
-
-
- æêìÆÇèæêùàæèêë ÇìÇïêçÇÆÄÉ é¢ÉÇåàìêë
- -----------------------------------------------------------------
-
- Å«½¡δ⌐ »α«ßΓ«⌐ ß¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α αѬπαß¿ó¡«ú« ß»π߬á
- ñ½∩ µÑ½δσ τ¿ß½«óδσ óδαáªÑ¡¿⌐ ó¬½ετáÑΓ ó ßÑí∩ α∩ñ Σπ¡¬µ¿⌐. éδ
- ñ«½ª¡δ óº∩Γ∞ ΓѬßΓδ φΓ¿σ Σπ¡¬µ¿⌐ ¿ ß«σαá¡¿Γ∞ ¿σ ó ßó«Ñ¼ Σá⌐½Ñ
- (¬«úñá ΓѬßΓδ á¡á½¿ºáΓ«αá ¿ ¿¡ΓÑα»αÑΓáΓ«αá «íΩÑñ¿¡∩Γß∩ »«½πτ¿Γß∩
- ñ«ó«½∞¡« í«½∞Φ«⌐ Σá⌐½, »«φΓ«¼π αѬ«¼Ñ¡ñπÑΓß∩ «Γ¬«¼»¿½¿α«óáΓ∞
- Σá⌐½δ «Γñѽ∞¡«). æ¼δß½ ¿ß»«½∞º«óá¡¿∩ ú½«íá½∞¡δσ »ÑαѼѡ¡δσ íπñÑΓ
- ¬αáΓ¬« «»¿ßá¡, ó »α«µÑßßÑ «íßπªñÑ¡¿∩ ¿¡ΓÑα»αÑΓáΓ«αá.
-
- êßσ«ñ¡δ⌐ ΓѬßΓ »α«ßΓÑ⌐ΦÑú« ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºáΓ«αá
- αѬπαß¿ó¡«ú« ß»π߬á ñ½∩ µÑ½«τ¿ß½Ñ¡¡δσ óδαáªÑ¡¿⌐ »α¿óÑñÑ¡ ¡¿ªÑ.
-
-
- /* æ¿¡Γá¬ß¿τÑ߬¿⌐ á¡á½¿ºáΓ«α αѬπαß¿ó¡«ú« ß»π߬á
- ñ½∩ µÑ½«τ¿ß½Ñ¡¡δσ óδαáªÑ¡¿⌐, ¬«Γ«αδ⌐ ß«ñÑনΓ
- α∩ñ ó¬½ετáѼδσ »ÑαѼѡ¡δσ
- */
- #include "setjmp.h"
- #include "math.h"
- #include "ctype.h"
- #include "stdlib.h"
- #define DELIMITER 1
- #define VARIABLE 2
- #define NUMBER 3
- #define COMMAND 4
- #define STRING 5
- #define QUOTE 6
- #define EOL 9
- #define FINISHED 10
-
- extern char *prog; /* íπΣÑα á¡á½¿º¿απѼ«ú« óδαáªÑ¡¿∩ */
- extern jmp_buf e_buf; /* íπΣÑα ßαÑñδ Σπ¡¬µ¿¿ longjmp() */
- extern int variables[26]; /* »ÑαѼѡ¡δÑ */
- extern struct commands {
- char command[20];
- char tok;
- } table[];
-
- extern char token[80]; /* ó¡ÑΦ¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ ½Ñ¬ßѼδ */
- extern char token_type; /* Γ¿» ½Ñ¬ßѼδ */
- extern char tok; /* ó¡πΓαÑ¡¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ ½Ñ¬ßѼδ */
- void get_exp(),level2(),level3(),level4(),level5();
- void level6(),primitive(),arith(),unary();
- void serror(), putback();
-
- /* Æ«τ¬á óσ«ñá ó á¡á½¿ºáΓ«α. */
- void get_exp(result)
- int *result;
- {
- get_token();
- if(!*token) {
- serror(2);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 13 --
-
-
- return;
- }
- level2(result);
- putback(); /* ó«ºóαáΘáÑΓ »«ß½Ññ¡εε ßτ¿Γá¡πε
- ½Ñ¬ßѼπ «íαáΓ¡« ó« óσ«ñ¡«⌐ »«Γ«¬ */
- }
-
- /* 潫ªÑ¡¿Ñ ¿½¿ óδτ¿Γá¡¿Ñ ñóπσ ΓÑମó */
- void level2(result)
- int *result;
- {
- register char op;
- int hold;
-
- level3(result);
- while((op=*token) == '+' || op == '-') {
- get_token();
- level3(&hold);
- arith(op,result,&hold);
- }
- }
-
- /* éδτ¿ß½Ñ¡¿Ñ »α«¿ºóÑñÑ¡¿∩ ¿½¿ τáßΓ¡«ú« ñóπσ Σó¬Γ«α«ó */
- void level3(result)
- int *result;
- {
- register char op;
- int hold;
-
- level4(result);
-
- while((op = *token) == '+' || op == '/' || op == '%') {
- get_token();
- level4(&hold);
- arith(op,result,&hold);
- }
- }
-
- /* Äíαáí«Γ¬á ßΓѻѡ¿ τ¿ß½á (µÑ½«τ¿ß½Ñ¡¡«⌐) */
- void level4(result)
- int *result;
- {
- int hold;
-
- level5(result);
- if(*token== '^') {
- get_token();
- level4(&hold);
- arith('^', result, &hold);
- }
- }
-
- /* ô¡áα¡δ⌐ + ¿½¿ - */
- void level5(result)
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 14 --
-
-
- int *result;
- {
- register char op;
-
- op = 0;
- if((token_type==DELIMITER) && *token=='+' || *token=='-') {
- op = *token;
- get_token();
- }
- level6(result);
- if(op)
- unary(op, result);
- }
-
- /* Äíαáí«Γ¬á óδαáªÑ¡¿∩ ó ¬απú½δσ ߬«í¬áσ */
- void level6(result)
- int *result;
- {
- if((*token == '(') && (token_type == DELIMITER)) {
- get_token();
- level2(result);
- if(*token != ')')
- serror(1);
- get_token();
- }
- else
- primitive(result);
- }
-
- /* Ä»αÑñѽѡ¿Ñ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ »« ÑÑ ¿¼Ñ¡¿ */
- void primitive(result)
- int *result;
- {
- switch(token_type) {
- case VARIABLE:
- *result = find_var(token);
- get_token();
- return;
- case NUMBER:
- *result = atoi(token);
- get_token();
- return;
- default:
- serror(0);
- }
- }
-
- /* éδ»«½¡Ñ¡¿Ñ ߻ѵ¿Σ¿µ¿α«óá¡¡«⌐ áα¿Σ¼ÑΓ¿¬¿ */
- void arith(o, r, h)
- char o;
- int *r, *h;
- {register int t, ex;
-
- switch(o) {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 15 --
-
-
- case '-':
- *r = *r-*h;
- break;
- case '+':
- *r = *r+*h;
- break;
- case '*':
- *r = *r * *h;
- break;
- case '/':
- *r = (*r)/(*h);
- break;
- case '%':
- t = (*r)/(*h);
- *r = *r-(t*(*h));
- break;
- case '^':
- ex =*r;
- if(*h==0) {
- *r = 1;
- break;
- }
- for(t=*h-1; t>0; --t) *r = (*r) * ex;
- break;
- }
- }
-
- /* 꺼ѡѡ¿Ñ º¡á¬á */
- void unary(o, r)
- char o;
- int *r;
- {
- if(o=='-') *r = -(*r);
- }
-
- /* Å«¿ß¬ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ */
- int find_var(s)
- char *s;
- {
- if(!isalpha(*s)){
- serror(4); /* ¡Ñ »ÑαѼѡ¡á∩ */
- return 0;
- }
- return variables[toupper(*token)-'^'];
- }
-
- /* óδñáΓ∞ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ */
- void serror(error)
- int error;
- {
- static char *e[]= {
- "æ¿¡Γá¬ß¿τÑ߬á∩ «Φ¿í¬á",
- "ìÑ»áα¡δÑ ¬απú½δÑ ß¬«í¬¿",
- "¥Γ« ¡Ñ óδαáªÑ¡¿Ñt",
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 16 --
-
-
- "ÅαÑñ»«½áúáÑΓß∩ ß¿¼ó«½ αáóÑ¡ßΓóá",
- "ìÑ »ÑαѼѡ¡á∩",
- "Æáí½¿µá ¼ÑΓ«¬ »ÑαÑ»«½¡Ñ¡á",
- "äπí½¿α«óá¡¿Ñ ¼ÑΓ«¬",
- "ìÑ«»αÑñѽѡ¡á∩ ¼ÑΓ¬á",
- "ìÑ«íσ«ñ¿¼ «»ÑαáΓ«α THEN",
- "ìÑ«íσ«ñ¿¼ «»ÑαáΓ«α TO",
- "ôα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ µ¿¬½á FOR ß½¿Φ¬«¼ óѽ¿¬",
- "NEXT ¡Ñ ß««ΓóÑΓßΓóπÑΓ FOR",
- "ôα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ GOSUB ß½¿Φ¬«¼ óѽ¿¬",
- "RETURN ¡Ñ ß««ΓóÑΓßΓóπÑΓ GOSUB"
- };
- printf("&4%s\n",e[error]);
- longjmp(e_buf, 1); /* ó«ºóαáΓ ó Γ«τ¬π ß«σαá¡Ñ¡¿∩ */
- }
-
- /* ùΓÑ¡¿Ñ ½Ñ¬ßѼδ. */
- get_token()
- {
-
- register char *temp;
- token_type=0; tok=0;
- temp=token;
- if(*prog=='\0') { /* 諡ѵ Σá⌐½á */
- *token=0;
- tok = FINISHED;
- return(token_type=DELIMITER);
- }
- while(iswhite(*prog)) ++prog; /* »α«»π߬ »α«íѽ«ó */
-
- if(*prog=='\r') { /* ¬«¡Ñ⌐ ßΓ᫬¿ »α«úαá¼¼δ */
- ++prog; ++prog;
- tok = EOL; *token='\r';
- token[1]='\n'; token[2]=0;
- return (token_type = DELIMITER);
- }
-
- if(strchr("+-^/%=;(),><", *prog)){ /* αáºñѽ¿Γѽ∞ */
- *temp=*prog;
- prog++; /* »ÑαÑσ«ñ ¡á ß½ÑñπεΘπε »«º¿µ¿ε */
- temp++;
- *temp=0;
- return (token_type=DELIMITER);
- }
-
- if(*prog=='"') { /* ßΓα«¬á ¬áóδτѬ */
- prog++;
- while(*prog != '"' && *prog!='\r') *temp++=*prog++;
- if(*prog=='\r') serror(1);
- prog++;*temp=0;
- return(token_type=QUOTE);
- }
-
- if(isdigit(*prog)) { /* τ¿ß½« */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 17 --
-
-
- while(!isdelim(*prog)) *temp++=*prog++;
- *temp = '\0';
- return(token_type = NUMBER);
- }
-
- if(isalpha(*prog)) { /* »ÑαѼѡ¡á∩ ¿½¿ ¬«¼á¡ñá */
- while(!isdelim(*prog)) *temp++=*prog++;
- token_type=STRING;
- }
-
- *temp = '\0';
-
- /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ ßΓ᫬á - »ÑαѼѡ¡á∩ ¿½¿ ¬«¼á¡ñá */
- if (token_type==STRING) {
- tok=look_up(token); /* ÅαÑ«íαẫóá¡¿Ñ ó« ó¡πΓαÑ¡¡¿⌐ Σ«α¼áΓ */
- if (!tok) token_type = VARIABLE;
- else token_type = COMMAND; /* φΓ« ¬«¼á¡ñá */
- }
- return token_type;
- }
-
- /* 髺óαáΓ ½Ñ¬ßѼδ ó« óσ«ñ¡«⌐ »«Γ«¬ */
- void putback()
- {
-
- char *t;
-
- t = token;
- for(; *t; t++) prog--;
- }
-
- /* Å«¿ß¬ ß««ΓóÑΓßΓó¿∩ ó¡πΓαÑ¡¡Ñú« Σ«α¼áΓá ñ½∩
- ΓѬπΘÑ⌐ ½Ñ¬ßѼδ ó Γáí½¿µÑ ½Ñ¬ßѼ.
- */
- look_up(s)
- char *s;
- {
- register int i,j;
- char *p;
-
- /* »αÑ«íαẫóá¡¿Ñ ¬ ¡¿ª¡Ñ¼π αÑú¿ßΓαπ */
- p = s;
- while(*p){ *p = tolower(*p); p++; }
-
- /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ ½Ñ¬ßÑ¼á «í¡áαπªÑ¡á ó
- Γáí½¿µÑ */
- for(i=0; *table[i].command; i++)
- if(!strcmp(table[i].command, s)) return table[i].tok;
- return 0; /* ¡Ñαáß»«º¡á¡¡á∩ ¬«¼á¡ñá */
- }
-
- /* 髺óαáΘáÑΓ "¿ßΓ¿¡π", Ñß½¿ "c" αáºñѽ¿Γѽ∞ */
- isdelim(c)
- char c;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 18 --
-
-
- {
- if(strchr(" ;,+-<>/*%^=()",c) || c==9 || c=='\r' || c==0)
- return 1;
- return 0;
- }
-
- /* 髺óαáΘáÑΓ 1, Ñß½¿ "ß" »α«íѽ ¿½¿ Γáíπ½∩µ¿∩ */
- iswhite(c)
- char c;
- {
- if(c==' ' || c=='\t') return 1;
- else return 0;
- }
-
-
- ǡ὿ºáΓ«α »«ññÑনóáÑΓ ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ: "+", "-", "*",
- "/", "%", µÑ½«τ¿ß½Ñ¡¡δ⌐ »«¬áºáΓѽ∞ ßΓѻѡ¿ (^) ¿ π¡áα¡δ⌐ ¼¿¡πß.
- éßÑ φΓ¿ «»Ñαᵿ¿ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ ó ß«τÑΓá¡¿¿ ß ¬απú½δ¼¿
- ߬«í¬á¼¿. éδ, óÑα«∩Γ¡«, ºá¼ÑΓ¿½¿, τΓ« ó »α«úαá¼¼Ñ ¿¼ÑεΓß∩ Σπ¡¬µ¿¿
- ΦÑßΓ¿ πα«ó¡Ñ⌐, ¬«Γ«αδÑ αáí«ΓáεΓ Γ«τ¡« Γá¬ªÑ ¬á¬ Σπ¡¬µ¿∩
- primitive(), óαáΘáεΘá∩ º¡áτÑ¡¿Ñ τ¿ß½á. Å«¼¿¼« φΓ¿σ Σπ¡¬µ¿⌐,
- αÑ὿ºπεΘ¿σ áα¿Σ¼ÑΓ¿τÑ߬¿Ñ «»Ñαᵿ¿, ó ß«ßΓáó »α«úαá¼¼δ ó¬½ετÑ¡δ
- Σπ¡¬µ¿¿ arith() ¿ unary(), á Γá¬ªÑ get_token().
-
- Åα¿ óδτ¿ß½Ñ¡¿¿ óδαáªÑ¡¿∩ prog π¬áºδóáÑΓ ¡á ¡áτὫ ßΓ᫬¿,
- ß«ñÑαªáΘÑ⌐ óδαáªÑ¡¿Ñ, ¿ óδºδóáÑΓ get_exp() ß áñαÑß«¼ »ÑαѼѡ¡«⌐,
- ó ¬«Γ«απε óδ σ«Γ¿ΓÑ »«¼ÑßΓ¿Γ∞ αѺπ½∞ΓáΓ.
-
- ÄíαáΓ¿ΓÑ «ß«í«Ñ ó¡¿¼á¡¿Ñ ¡á Σπ¡¬µ¿ε serror(), ¬«Γ«αá∩
- ¿ß»«½∞ºπÑΓß∩ ñ½∩ óδñáτ¿ ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ. Åα¿ «í¡áαπªÑ¡¿¿
- ß¿¡Γá¬ß¿τÑ߬«⌐ «Φ¿í¬¿ serror() óδºδóáÑΓß∩ ß ¡«¼Ñα«¼ φΓ«⌐ «Φ¿í¬¿ ó
- ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá. ÄΦ¿í¬á ß ¬«ñ«¼ 0, ¬«Γ«α«⌐ ß««ΓóÑΓßΓóπÑΓ
- ß««íΘÑ¡¿Ñ "ß¿¡Γá¬ß¿τÑ߬á∩ «Φ¿í¬á", óδñáÑΓß∩ ó Γ«¼ ß½πτáÑ, ¬«úñá
- Γ¿» «Φ¿í¬¿ ¡Ñ½∞º∩ «»αÑñѽ¿Γ∞ í«½ÑÑ ¬«¡¬αÑΓ¡«. é ñαπú¿σ ß½πτá∩σ
- «Φ¿í¬á πΓ«τ¡∩ÑΓß∩. çá¼ÑΓ∞ΓÑ, τΓ« serror() ºá¬á¡τ¿óáÑΓß∩ ó맮ó«¼
- Σπ¡¬µ¿¿ longjmp().
-
- öπ¡¬µ¿∩ logjmp() óδ»«½¡∩ÑΓ ¡Ñ½«¬á½∞¡δ⌐ »ÑαÑσ«ñ, ó«ºóαáΘá∩ß∞
- ó Γ«τ¬π, «»αÑñѽѡ¡πε ß »«¼«Θ∞ε Σπ¡¬µ¿¿ setjmp(). öπ¡¬µ¿∩
- setjmp() ó¬½ετÑ¡á ó ¿ßσ«ñ¡δ⌐ ΓѬßΓ ¿¡ΓÑα»αÑΓáΓ«αá. ÅÑαóδ⌐
- áαúπ¼Ñ¡Γ Σπ¡¬µ¿¿ logjmp() ∩ó½∩ÑΓß∩ íπΣÑα«¼ ßαÑñδ, ¿¡¿µ¿¿α«óá¡¡«⌐
- ß »«¼«Θ∞ε setjmp(). éΓ«α«⌐ áαúπ¼Ñ¡Γ - φΓ« º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ
- «»αÑñѽ∩ÑΓß∩ »α¿ »ÑαÑñáτÑ π»αáó½Ñ¡¿∩ ¿º setjmp() «íαáΓ¡« ó Γ«τ¬π
- ÑÑ ó맮óá. èᬠφΓ« ñѽáÑΓß∩ óδ, πó¿ñ¿ΓÑ »«ºªÑ.
-
- êß»«½∞º«óá¡¿Ñ ljgjmp() π»α«ΘáÑΓ «íαáí«Γ¬π «Φ¿í«¬, Γᬠ¬á¬
- »α«úαá¼¼δ-á¡á½¿ºáΓ«αδ ¡Ñ ñ«½ª¡δ áóáα¿⌐¡« ºáóÑαΦáΓ∞ß∩ »α¿
- «í¡áαπªÑ¡¿¿ «Φ¿í¬¿. àß½¿ óáΦ ¬«¼»¿½∩Γ«α æ¿ ¡Ñ »«ññÑনóáÑΓ
- Σπ¡¬µ¿¿ setjmp() ¿ logjmp(), Γ« ¬áªñá∩ Σπ¡¬µ¿∩ »α¿ «í¡áαπªÑ¡¿¿
- «Φ¿í«¬ ñ«½ª¡á óδ»«½¡∩Γ∞ ó«ºóαáΓ ó Γ«τ¬π 󫺡¿¬¡«óÑ¡¿∩ «Φ¿í¬¿
- ßἫßΓ«∩Γѽ∞¡«.
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 19 --
-
-
- èÇè ÇìÇïêçÇÆÄÉ ÄüÉÇüÇÆ¢éÇàÆ ÅàÉàîàìì¢à
- -----------------------------------------------------------------
-
- èᬠí佫 ߬áºá¡« αá¡∞ΦÑ, ¿¡ΓÑα»αÑΓáΓ«α ∩ºδ¬á SMALL BASIC
- αáß»«º¡áÑΓ »ÑαѼѡ¡δÑ ß ¿¼Ñ¡á¼¿ Γ«½∞¬« «Γ "A" ñ« "Z". èáªñ«⌐
- »ÑαѼѡ¡«⌐ ß««ΓóÑΓßΓóπÑΓ φ½Ñ¼Ñ¡Γ ¼áßß¿óá variables, ß«ßΓ«∩ΘÑú« ¿º
- 26 φ½Ñ¼Ñ¡Γ«ó. ¥Γ«Γ ¼áßß¿ó «»αÑñѽѡ ó ΓѬßΓÑ ¿¡ΓÑα»αÑΓáΓ«αá, ¬á¬
- »«¬áºá¡« ¡¿ªÑ, ¿ ¿¡¿µ¿á½¿º¿απÑΓß∩ ¡π½Ñó묨 º¡áτÑ¡¿∩¼¿.
-
- int variables[26]= { /* 26 »ÑαѼѡ¡δσ »«½∞º«óáΓѽ∩, A-Z */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
- Æá¬ ¬á¬ ¿¼Ñ¡á¼¿ »ÑαѼѡ¡δσ ∩ó½∩εΓß∩ íπ¬óδ «Γ "A" ñ« "Z", Γ«
- ¿¡ñѬ߿α«óá¡¿Ñ ¼áßß¿óá variables ¼«ª¡« ½Ñú¬« «ßπΘÑßΓó¿Γ∞ »πΓѼ
- óδτ¿Γá¡¿∩ ¿º ß««ΓóÑΓßΓóπεΘ¿σ º¡áτÑ¡¿⌐ ¿¼Ñ¡ »ÑαѼѡ¡δσ ó ¬«ñÑ
- ASCII ¬«ñá ß¿¼ó«½á 'A'. öπ¡¬µ¿∩ find_var(), «»αÑñѽ∩εΘá∩ º¡áτÑ¡¿Ñ
- »ÑαѼѡ¡«⌐ ó ºáó¿ß¿¼«ßΓ¿ «Γ ÑÑ ¿¼Ñ¡¿, »αÑñßΓáó½Ñ¡á ¡¿ªÑ.
-
- /* Ä»αÑñѽѡ¿Ñ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ »« ÑÑ ¿¼Ñ¡¿*/
- int find_var(s)
- char *s;
- {
- if(!isalpha(*s)){
- serror(4); /* φΓ« ¡Ñ »ÑαѼѡ¡á∩ */
- return 0;
- }
- return variables[toupper(*token)-'A'];
- }
-
- ¥Γá Σπ¡¬µ¿∩ ñ«»π߬áÑΓ ¿ß»«½∞º«óá¡¿Ñ í«½ÑÑ ñ½¿¡¡δσ ¿¼Ñ¡, ¡«
- Γ«½∞¬« »Ñαóá∩ íπ¬óá ¿¼Ñ¡¿ »ÑαѼѡ¡«⌐ ∩ó½∩ÑΓß∩ º¡áτáΘÑ⌐.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 20 --
-
-
- êìÆàÉÅÉàÆÇÆÄÉ ƒç¢èÇ SMALL BASIC
- -----------------------------------------------------------------
-
- ÉáºαáíáΓδóáѼδ⌐ ¿¡ΓÑα»αÑΓáΓ«α íπñÑΓ αáß»«º¡áóáΓ∞ ß½ÑñπεΘ¿Ñ
- ¬½ετÑóδÑ ß½«óá ∩ºδ¬á »α«úαá¼¼¿α«óá¡¿∩ BASIC:
-
- PRINT
- INPUT
- IF
- THEN
- FOR
- NEXT
- TO
- GOTO
- GOSUB
- RETURN
- END
-
- é¡πΓαÑ¡¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ φΓ¿σ ¬«¼á¡ñ (»½εß º¡áτÑ¡¿Ñ EOL ñ½∩
- ¬«¡µá ßΓ᫬¿ ¿ FINISHED ñ½∩ ß¿ú¡á½¿ºáµ¿¿ « ¬«¡µÑ »α«úαá¼¼δ)
- «»αÑñѽ∩ÑΓß∩ Γá¬:
-
- #define PRINT 1
- #define INPUT 2
- #define IF 3
- #define THEN 4
- #define FOR 5
- #define NEXT 6
- #define TO 7
- #define GOTO 8
- #define EOL 9
- #define FINISHED 10
- #define GOSUB 11
- #define RETURN 12
- #define END 13
-
- ä½∩ »αÑ«íαẫóá¡¿∩ ó¡ÑΦ¡Ñú« »αÑñßΓáó½Ñ¡¿∩ ½Ñ¬ßѼ ó«
- ó¡πΓαÑ¡¡¿⌐ Σ«α¼áΓ ¿ß»«½∞ºπÑΓß∩ óß»«¼áúáΓѽ∞¡á∩ ßΓαπ¬Γπαá table.
-
- struct commands { /* éß»«¼«úáΓѽ∞¡á∩ ßΓαπ¬Γπαá ¬½ετÑóδσ
- ß½«ó á¡á½¿ºáΓ«αá */
- char command[20];
- char tok;
- } table[] = { /* Æáí½¿µá «íαáíáΓδóáÑΓ ¬«¼á¡ñδ, óóÑñÑ¡¡δÑ */
- "print",PRINT, /* ¡á ¡¿ª¡Ñ¼ αÑú¿ßΓαÑ */
- "input",INPUT,
- "if",IF,
- "then",THEN,
- "goto",GOTO,
- "for",FOR,
- "next",NEXT,
- "to",TO,
- "gosub",GOSUB,
- "return",RETURN,
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 21 --
-
-
- "end",END,
- "",END /* mark end of table */
- };
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á Γ«, τΓ« »α¿º¡á¬ ¬«¡µá Σá⌐½á (¡π½Ñóá∩
- ßΓ᫬á) »«¼ÑΘÑ¡ ó ¬«¡Ñµ Γáí½¿µδ.
-
- öπ¡¬µ¿∩ look_up() ó«ºóαáΘáÑΓ ó¡πΓαÑ¡¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ ¬áªñ«⌐
- ½Ñ¬ßÑ¼δ ¿½¿ ß¿¼ó«½á '\0', Ñß½¿ Γᬫóá∩ ¡Ñ «í¡áαπªÑ¡á.
-
- /* ÅαÑ«íαẫóá¡¿Ñ ¬áªñ«⌐ ½Ñ¬ßÑ¼δ ¿º Γáí½¿µδ ½Ñ¬ßѼ
- ó« ó¡πΓαÑ¡¡ÑÑ »αÑñßΓáó½Ñ¡¿Ñ.
- */
- look_up(s)
- char *s;
- {
- register int i,j;
- char *p;
- /* »αÑ«íαẫóá¡¿Ñ ó ß¿¼ó«½δ ¡¿ª¡Ñú« αÑú¿ßΓαá */
- p =s;
- while(*p){ *p = tolower(*p); p++; }
-
- /* Ñß½¿ ½Ñ¬ßÑ¼á «í¡áαπªÑ¡á ó Γáí½¿µÑ */
- for(i=0; *table[i].command; i++)
- if(!strcmp(table[i].command, s)) return table[i].tok;
- return 0; /* ¬«¼á¡ñá ¡Ñ αáß»«º¡á¡á */
- }
-
- ê¡ΓÑα»αÑΓáΓ«α ∩ºδ¬á SMALL BASIC ¡Ñ »«ññÑনóáÑΓ αÑñá¬Γ«α
- ΓѬßΓ«ó, »«φΓ«¼π óδ ñ«½ª¡δ ß«ºñáóáΓ∞ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ BASIC,
- ¿ß»«½∞ºπ∩ ßΓá¡ñáαΓ¡δ⌐ ΓѬßΓ«óδ⌐ αÑñá¬Γ«α.
-
- èáªñá∩ »α«úαá¼¼á ßτ¿ΓδóáÑΓß∩ ¿ óδ»«½¡∩ÑΓß∩ ß »«¼«Θ∞ε
- ¿¡ΓÑα»αÑΓáΓ«αá. öπ¡¬µ¿∩, ¬«Γ«αá∩ ºáúαπªáÑΓ »α«úαá¼¼π, ¡áºδóáÑΓß∩
- load_program().
-
-
- /* çáúαπº¬á »α«úαá¼¼δ */
- load_program(p, fname)
- char *p;
- char *fname;
- {
- FILE *fp;
- int i=0;
- if(!(fp=fopen(fname, "rb"))) return 0;
-
- i = 0;
- do {
- *p = getc(fp);
- p++; i++;
- } while(!feof(fp) && i<PROG_SIZE);
- *(p-2) = '\0'; /* æ¿¼ó«½ ¬«¡µá ºáúαπªáѼ«⌐ »α«úαá¼¼δ */
- fclose(fp);
- return 1;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 22 --
-
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 23 --
-
-
- ÄæìÄéìÄë ûêèï ÉÇüÄÆ¢ ÇìÇïêçÇÆÄÉÇ
- -----------------------------------------------------------------
-
- éßÑ ¿¡ΓÑα»αÑΓáΓ«αδ óδ»«½¡∩εΓ «»Ñαᵿ¿ »πΓѼ ßτ¿Γδóá¡¿∩
- ½Ñ¬ßÑ¼δ »α«úαá¼¼δ ¿ óδí«αá ¡Ñ«íσ«ñ¿¼«⌐ Σπ¡¬µ¿¿ ñ½∩ ÑÑ óδ»«½¡Ñ¡¿∩.
- Äß¡«ó¡«⌐ µ¿¬½ αáí«Γδ ñ½∩ ¿¡ΓÑα»αÑΓáΓ«αá ∩ºδ¬á SMALL BASIC
- óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼.
-
- do {
- token_type = get_token();
- /* Åα«óÑα¬á ¡á ß««ΓóÑΓßΓó¿Ñ «»ÑαáΓ«απ ∩ºδ¬á */
- if (token_type == VARIABLE) {
- putback(); /* ó«ºóαáΓ »ÑαѼѡ¡«⌐ ó« óσ«ñ¡«⌐ »«Γ«¬ */
- assignment(); /* ñ½ªÑ¡ íδΓ∞ «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩ */
- }
- else /* φΓ« ¬«¼á¡ñá */
-
-
- switch(tok) {
- case PRINT:
- print();
- break;
- case GOTO:
- exec_if();
- break;
-
- case FOR:
- exec_for();
- break;
- case NEXT:
- next();
- break;
- case INPUT:
- input();
- break;
- case GOSUB:
- gosub();
- break;
- case RETURN:
- greturn();
- break;
- case END:
- exit(0);
- }
- } while (tok != FINISHED);
-
-
- æ¡áτá½á ½Ñ¬ßѼá ßτ¿ΓδóáÑΓß∩ ¿º »α«úαá¼¼δ. ä½∩ πñ«íßΓóá
- á¡á½¿ºá ¬áªñá∩ ½Ñ¬ßѼá αáß»«½áúáÑΓß∩ ¡á «Γñѽ∞¡«⌐ ßΓ᫬Ñ. àß½¿
- ½Ñ¬ßѼá ∩ó½∩ÑΓß∩ »ÑαѼѡ¡«⌐, Γ«, ß½Ññπ∩ ß¿¡Γá¬ß¿ßπ ∩ºδ¬á, ºá ¡Ñ⌐
- ñ«½ªÑ¡ ß½Ññ«óáΓ∞ «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩ (SMALL BASIC ¡Ñ
- »«ññÑনóáÑΓ ßΓáα«¼«ñ¡πε ¬«¼á¡ñπ LET). é »α«Γ¿ó¡«¼ ß½πτáÑ,
- ½Ñ¬ßѼá ßτ¿ΓáÑΓß∩ ¬«¼á¡ñ«⌐ ¿ ß »«¼«Θ∞ε «»ÑαáΓ«αá case ó
- ºáó¿ß¿¼«ßΓ¿ «Γ º¡áτÑ¡¿∩ tok »α«¿ßσ«ñ¿Γ óδí«α ß««ΓóÑΓßΓóπεΘÑ⌐
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 24 --
-
-
- ¬«¼á¡ñδ. ū߼«Γα¿ΓÑ, ¬á¬ αáí«ΓáÑΓ ¬áªñá∩ ¿º ¡¿σ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 25 --
-
-
- èÄîÇìäÇ ÅÉêæéÇêéÇìêƒ çìÇùàìêë.
- -----------------------------------------------------------------
-
- é ∩ºδ¬Ñ BASIC «ß¡«ó¡«⌐ Σ«α¼«⌐ «»ÑαáΓ«αá »α¿ßóá¿óá¡¿∩
- ∩ó½∩ÑΓß∩ ß½ÑñπεΘá∩:
-
- <¿¼∩ »ÑαѼѡ¡«⌐>=<óδαáªÑ¡¿Ñ>
-
- öπ¡¬µ¿∩ assignment() »«ññÑনóáÑΓ φΓ«Γ Γ¿» »α¿ßóá¿óá¡¿∩.
-
- /* Åα¿ßó«¿Γ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐ */
- assignment()
- {
- int var, value;
- /* »«½πτ¿Γ∞ ¿¼∩ »ÑαѼѡ¡«⌐ */
- get_token();
- if(!isalpha(*token)) {
- serror(4); /* φΓ« ¡Ñ »ÑαѼѡ¡á∩ */
- return;
- }
-
- /* »«¿ß¬ ¿¡ñѬßá »ÑαѼѡ¡«⌐ ó ¼áßß¿óÑ */
- var = toupper(*token)-'A';
-
- /* ßτ¿ΓáΓ∞ ß¿¼ó«½ αáóÑ¡ßΓóá*/
- get_token();
- if(*token!='=') {}
- serror(3);
- return;
- }
-
- /* ßτ¿ΓáΓ∞ »α¿ßóáѼ«Ñ »ÑαѼѡ¡«⌐ º¡áτÑ¡¿Ñ */
- get_exp(&value);
-
- /* »α¿ßó«¿Γ∞ º¡áτÑ¡¿Ñ*/
- variables[var] = value;
- }
-
-
- æ¡áτá½á assignment() ßτ¿ΓδóáÑΓ ½Ñ¬ßÑ¼π ¿º »α«úαá¼¼δ. ¥Γ« -
- ½Ñ¬ßѼá-»ÑαѼѡ¡á∩, ¬«Γ«α«⌐ ñ«½ª¡á íδΓ∞ »α¿ßó«Ñ¡á óѽ¿τ¿¡á. àß½¿
- ½Ñ¬ßÑ¼á ¡Ñ ∩ó½∩ÑΓß∩ »ÑαѼѡ¡«⌐, Γ« ß««íΘáÑΓß∩ «í «Φ¿í¬Ñ. çáΓѼ
- ßτ¿ΓδóáÑΓß∩ º¡á¬ αáóÑ¡ßΓóá («τÑαÑñ¡á∩ ½Ñ¬ßѼá). äá½ÑÑ óδºδóáÑΓß∩
- Σπ¡¬µ¿∩ get_exp(), ¬«Γ«αá∩ óδτ¿ß½∩ÑΓ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐. öπ¡¬µ¿∩
- »«½πτáÑΓß∩ πñ¿ó¿Γѽ∞¡« »α«ßΓ«⌐ »«Γ«¼π, τΓ« á¡á½¿ºáΓ«α óδαáªÑ¡¿⌐ ¿
- get_token ñѽáεΓ í«½∞Φπε τáßΓ∞ απΓ¿¡¡«⌐ αáí«Γδ.
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 26 --
-
-
- èÄîÇìäÇ PRINT
- -----------------------------------------------------------------
-
- 諼á¡ñá PRINT ßΓá¡ñáαΓá ∩ºδ¬á BASIC ñ«ßΓáΓ«τ¡« ¼«Θ¡á∩ ¿
- ú¿í¬á∩, «ß«íÑ¡¡« ¬«úñá »α¿¼Ñ¡∩ÑΓß∩ ÑÑ Σ«α¼áΓ PRINT USING. ò«Γ∩
- ß«ºñá¡¿Ñ Σπ¡¬µ¿¿, ¬«Γ«αá∩ αÑ὿ºπÑΓ óßÑ ó«º¼«ª¡«ßΓ¿ φΓ«⌐ ¬«¼á¡ñδ,
- óδσ«ñ¿Γ ºá αἬ¿ φΓ«⌐ ú½áóδ, αáºαáíáΓδóáѼá∩ Σπ¡¬µ¿∩ ∩ó½∩ÑΓß∩
- ¡á¿í«½ÑÑ ó᪡«⌐. é«Γ «ß¡«ó¡á∩ Σ«α¼á ¬«¼á¡ñδ PRINT ∩ºδ¬á SMALL
- BASIC:
-
- PRINT <ß»¿ß«¬ áαúπ¼ÑÑ¡Γ«ó>
-
- úñÑ <ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó> »αÑñßΓáó½∩ÑΓ ß«í«⌐ »ÑαÑτÑ¡∞ »ÑαѼѡ¡δσ,
- ºá¬½ετÑ¡¡δσ ó ¬áóδτ¬¿ ¿ αáºñѽѡ¡δσ ºá»∩Γ묨 ¿½¿ Γ«τ¬«⌐ ß
- ºá»∩Γ«⌐. öπ¡¬µ¿∩ print(), »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, ∩ó½∩ÑΓß∩ á¡á½«ú«¼
- ¬«¼á¡ñδ PRINT ∩ºδ¬á BASIC. ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ, τΓ« »ÑτáΓ∞
- óδ»«½¡∩ÑΓß∩ ó ΓÑ½Ñ µ¿¬½á do-while, πß½«ó¿Ñ¼ ºáóÑαΦÑ¡¿∩ ¬«Γ«α«ú«
- ∩ó½∩ÑΓß∩ óδó«ñ ¡á »ÑτáΓ∞ óßÑú« ß»¿ß¬á áαúπ¼Ñ¡Γ«ó ¬«¼á¡ñδ.
-
-
- /* Åα«ßΓÑ⌐Φá∩ óÑαß¿∩ «»ÑαáΓ«αá PRINT */
- void print()
- {
- int answer;
- int len=0, spaces;
- char last_delim;
- do {
- get_token(); /* »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ φ½Ñ¼Ñ¡Γ ß»¿ß¬á */
- if (tok == EOL || tok == FINISHED) break;
- if (token_tipe == QUOTE) { /* φΓ« ßΓ᫬á */
- printf(token);
- len += strlen(token);
- get_token();
- }
- else { /* φΓ« óδαáªÑ¡¿Ñ */
- putback();
- get_exp(&answer);
- get_token();
- len+= printf("%d", answer);
- }
- last_delim = *token;
- if (*token == ';') {
- /* éδτ¿ß½Ñ¡¿Ñ τ¿ß½á »α«íѽ«ó »α¿ »ÑαÑσ«ñÑ ¬ ß½ÑñπεΘÑ⌐
- Γáíπ½∩µ¿¿ */
- spaces = 8-(len % 8);
- len += spaces; /* ß¼ÑΘÑ¡¿Ñ ¡á «ñ¡π Γáíπ½∩µ¿ε */
- while (spaces) {
- printf(" ");
- spaces--;
- }
- }
- else if (*token == ','); /* ¡¿τÑú« ¡Ñ ñѽáΓ∞ */;
- else if (tok != EOL && tok != FINESHED) serror(0);
- } while (*token == ';' || *token == ',');
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 27 --
-
-
- if (tok == EOL || tok == FINESHED) {
- if (last_delim != ';' && last_delim != ',')
- printf("\n");
- else serror(0); /* ÄΓßπΓßΓóπÑΓ αáºñѽ¿Γѽ∞ */
- }
-
- 諼á¡ñá PRINT ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á ñ½∩ óδó«ñá ß»¿ß¬á
- »ÑαѼѡ¡δσ ¿ ßΓα«τ¡δσ ¬«¡ßΓá¡Γ ¡á φ¬αá¡. àß½¿ ñóá φ½Ñ¼Ñ¡Γá
- αáºñÑ½Ñ¡δ ºá»∩Γ«⌐, Γ« ¿σ º¡áτÑ¡¿∩ óδó«ñ∩Γß∩ ¡á »ÑτáΓ∞ íѺ
- »α«íѽ«ó (¬«¡¬áΓÑ¡¿απεΓß∩). àß½¿ ªÑ ñóá φ½Ñ¼Ñ¡Γá αáºñѽѡδ Γ«τ¬«⌐
- ß ºá»∩Γ«⌐, Γ« óΓ«α«⌐ φ½Ñ¼Ñ¡Γ óδó«ñ¿Γß∩ ¡áτ¿¡á∩, ß« ß½ÑñπεΘÑ⌐
- »«º¿µ¿¿ Γáíπ½∩µ¿¿. àß½¿ ß»¿ß«¬ φ½Ñ¼Ñ¡Γ«ó ºá¬á¡τ¿óáÑΓß∩ ºá»∩Γ«⌐
- ¿½¿ Γ«τ¬«⌐ ß ºá»∩Γ«⌐, Γ« »ÑαÑσ«ñ ¡á ¡«óπε ßΓ᫬π ¡Ñ óδ»«½¡∩ÑΓß∩.
-
- Åα¿óÑñÑ¡¡δÑ ¡¿ªÑ »α¿¼Ñαδ ó맮óπΓ »ÑτáΓ∞ ñá¡¡δσ ß ¡«ó«⌐
- ßΓ᫬¿:
-
- PRINT X; Y; "¥ÆÄ æÆÉÄèÇ"
- PRINT 10 / 4
- PRINT
-
- öπ¡¬µ¿∩ print() ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε putback() ñ½∩ ó«ºóαáΓá
- ½Ñ¬ßѼδ ó« óσ«ñ¡«⌐ »«Γ«¬. Åα¿τ¿¡«⌐ φΓ«ú« ∩ó½∩ÑΓß∩ Γ«, τΓ« »αѪñÑ,
- τѼ ¡áτáΓ∞ »ÑτáΓ∞ ßΓ᫬¿, ºá¬½ετÑ¡¡«⌐ ó ߬«í¬¿, ¿½¿ τ¿ß½«ó«ú«
- óδαáªÑ¡¿∩, Σπ¡¬µ¿∩ print() ñ«½ª¡á »α«á¡á½¿º¿α«óáΓ∞ ß½ÑñπεΘ¿⌐
- φ½Ñ¼Ñ¡Γ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó. àß½¿ ß½ÑñπεΘ¿⌐ φ½Ñ¼Ñ¡Γ ∩ó½∩ÑΓß∩
- óδαáªÑ¡¿Ñ¼, Γ« »Ñαóδ⌐ ΓÑα¼ óδαáªÑ¡¿∩ ñ«½ªÑ¡ íδΓ∞ »«¼ÑΘÑ¡ «íαáΓ¡«
- ó« óσ«ñ¡«⌐ »«Γ«¬, Γᬠ¬á¬ ó »α«Γ¿ó¡«¼ ß½πτáÑ á¡á½¿ºáΓ«απ ¡Ñ
- πñáßΓß∩ ¬«ααÑ¬Γ¡« «íαáí«ΓáΓ∞ φΓ« óδαáªÑ¡¿Ñ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 28 --
-
-
- èÄîÇìäÇ INPUT.
- -----------------------------------------------------------------
-
- é ∩ºδ¬Ñ BASIC ¬«¼á¡ñá INPUT ¿ß»«½∞ºπÑΓß∩ ñ½∩ τΓÑ¡¿∩
- ¿¡Σ«α¼áµ¿¿ ß ¬½áó¿áΓπαδ ¿ ß«σαá¡Ñ¡¿∩ ÑÑ ó »ÑαѼѡ¡δσ. Ä¡á ¿¼ÑÑΓ
- ñóá «ß¡«ó¡δσ Σ«α¼áΓá. ÅÑαóδ⌐ Σ«α¼áΓ ¬«¼á¡ñδ óδó«ñ¿Γ ¼áα¬Ñα
- «ª¿ñá¡¿∩ óó«ñá ñá¡¡δσ ('?') ¿ »ÑαÑó«ñ¿Γ óßε »α«úαá¼¼π ó «ª¿ñá¡¿Ñ
- óó«ñá ñá¡¡δσ:
-
- INPUT <¿¼∩ »ÑαѼѡ¡«⌐>
-
- éΓ«α«⌐ Σ«α¼áΓ »α¿ó«ñ¿Γ ¬ «Γ«íαáªÑ¡¿ε ¡á φ¬αá¡Ñ ßΓ᫬¿
- ß¿¼ó«½«ó, »«ß½Ñ τÑú« «ª¿ñáÑΓß∩ óó«ñ ñá¡¡δσ:
-
- INPUT "<ß¿¼ó«½∞¡á∩ ßΓ᫬á>" <¿¼∩ »ÑαѼѡ¡«⌐>
-
- öπ¡¬µ¿∩ input (), »α¿óÑñÑ¡¡á∩ ¡¿ªÑ, αÑ὿ºπÑΓ ¬«¼á¡ñπ ∩ºδ¬á
- BASIC INPUT.
-
- /* Åα«ßΓÑ⌐Φá∩ óÑαß¿∩ «»ÑαáΓ«αá INPUT */
- void input()
- {
- char str[80], var;
- int i;
-
- get_token(); /*ǡ὿º ¡á½¿τ¿∩ ß¿¼ó«½∞¡«⌐ ßΓ᫬¿ */
- if (token_type == QUOTE) {
- printf(token); /*àß½¿ ßΓ᫬á ÑßΓ∞, »α«óÑα¬á ºá»∩Γ«⌐ */
- get_token();
- if (*token != ',') serror(1);
- get_token();
- }
- else printf("? "); /* é »α«Γ¿ó¡«¼ ß½πτáÑ «Γ«íαáªÑ¡¿Ñ "? "*/
- var = toupper(*token)-'A'; /* éδτ¿ß½Ñ¡¿Ñ ¿¡ñѬßá ¼áßß¿óá ¿¼Ñ¡ */
- scanf("%d",&i); /* ùΓÑ¡¿Ñ óσ«ñ¡δσ ñá¡¡δσ */
- variables[var] = i; /* æ«σαá¡Ñ¡¿Ñ ¿σ */
- }
-
- Éáí«Γá Σπ¡¬µ¿¿ ßΓá¡ÑΓ ∩ß¡«⌐ ¿ »«¡∩Γ¡«⌐ »«ß½Ñ τΓÑ¡¿∩
- ¬«¼¼Ñ¡Γáα¿Ñó.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 29 --
-
-
- èÄîÇìäÇ GOTO
- -----------------------------------------------------------------
-
- æÑ⌐τáß óδ πó¿ñ¿ΓÑ αÑ὿ºáµ¿ε «ñ¡«⌐ ¿º ßá¼δσ »α«ßΓδσ ¬«¼á¡ñ,
- ¡« ó Γ« ªÑ óαѼ∩ ñ«ó«½∞¡« ß½«ª¡«⌐ ñ½∩ αáºαáí«Γτ¿¬á. é ∩ºδ¬Ñ BASIC
- «ß¡«ó¡«⌐ Σ«α¼«⌐ »α«úαá¼¼¡«ú« π»αáó½Ñ¡¿∩ ∩ó½∩ÑΓß∩ ¬«¼á¡ñá GOTO. é
- ßΓá¡ñáαΓÑ ∩ºδ¬á BASIC «íΩÑ¬Γ«¼, ¡á ¬«Γ«αδ⌐ ñ«½ªÑ¡ π¬áºδóáΓ∞ GOTO,
- ∩ó½∩ÑΓß∩ ¡«¼Ñα ßΓ᫬¿. ¥Γ«Γ Γαáñ¿µ¿«¡¡δ⌐ »«ñσ«ñ ß«σαá¡∩ÑΓß∩ ¿ ó
- ∩ºδ¬Ñ SMALL BASIC. Äñ¡á¬«, SMALL BASIC ¡Ñ ΓαÑíπÑΓß∩ ¡π¼Ñα«óáΓ∞
- ¬áªñπε ßΓ᫬π. 쫼Ñα ßΓ᫬¿ ¡Ñ«íσ«ñ¿¼ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿
- ¡á ¡ÑÑ ßßδ½áÑΓß∩ ¬«¼á¡ñá GOTO. Äß¡«ó¡«⌐ Σ«α¼áΓ ¬«¼á¡ñδ GOTO
- »αÑñßΓáó½Ñ¡ ¡¿ªÑ:
-
- GOTO <¡«¼Ñα ßΓ᫬¿>
-
- Äß¡«ó¡«⌐ ß½«ª¡«ßΓ∞ε αÑ὿ºáµ¿¿ «»ÑαáΓ«αá GOTO ∩ó½∩ÑΓß∩ Γ«,
- τΓ« «¡ ñ«½ªÑ¡ »«ºó«½∩Γ∞ ß«óÑαΦáΓ∞ »ÑαÑσ«ñδ ¬á¬ ó¡¿º, Γᬠ¿ óóÑασ
- »« »α«úαá¼¼Ñ. ä½∩ πñ«ó½ÑΓó«αÑ¡¿∩ φΓ«ú« ΓαÑí«óá¡¿∩ ¡Ñ«íσ«ñ¿¼
- ¼Ñσá¡¿º¼, ¬«Γ«αδ⌐ íδ »α«ß¼áΓα¿óá½ »α«úαá¼¼π, óδí¿αá½ ¬áªñπε ¼ÑΓ¬π
- ¿ »«¼ÑΘá½ ÑÑ ó Γáí½¿µπ, ß«ñÑαªáΘπε ¬á¬ ¿¼∩ ¼ÑΓ¬¿ Γá¬, ¿ π¬áºáΓѽ∞
- ÑÑ αẼÑΘÑ¡¿∩ ó »α«úαá¼¼Ñ. Æá¬á∩ Γáí½¿µá «»αÑñÑ½Ñ¡á ¡¿ªÑ.
-
- struct label {
- char name[LAB_LEN]; /* ¿¼∩ ¼ÑΓ¬¿ */
- char *p; /* π¬áºáΓѽ∞ ¡á ¼ÑßΓ« αẼÑΘÑ¡¿∩ ó »α«úαá¼¼Ñ */
- };
- struct label label_table[NUM_LAB];
-
- öπ¡¬µ¿∩, ¬«Γ«αá∩ »α«ß¼áΓα¿óáÑΓ »α«úαá¼¼π ¿ óδí¿αáÑΓ ¬áªñπε
- ¼ÑΓ¬π ñ½∩ αẼÑΘÑ¡¿∩ ÑÑ ó Γáí½¿µÑ, ¡áºδóáÑΓß∩ scan_labels(). Ä¡á
- ¿ «ß¡«ó¡δÑ »«ññÑনóáεΘ¿Ñ ÑÑ Σπ¡¬µ¿¿ »α¿óÑñÑ¡δ ¡¿ªÑ.
-
- /* Å«¿ß¬ óßÑσ ¼ÑΓ«¬ */
- void scan_labels()
- {
- register int loc;
- char *temp;
-
- label_init(); /* «í¡π½Ñ¡¿Ñ óßÑσ ¼ÑΓ«¬ */
- temp = prog; /* ºá»¿ß∞ π¬áºáΓѽ∩ ¡á ¡áτὫ »α«úαá¼¼δ */
- /* àß½¿ »Ñαóá∩ ½Ñ¬ßѼá Σá⌐½á ∩ó½∩ÑΓß∩ ¼ÑΓ¬«⌐ */
- get_token();
- if(token_type==NUMBER) {
- strcpy(label_table[0].name,token);
- label_table[0].p=prog;
- }
-
- find_eol();
- do {
- get_token();
- if(token_type==NUMBER) {
- loc=get_next_label(token);
- if(loc == -1 || loc == -2) {
- (loc == -1) ? serror(5):serror(6);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 30 --
-
-
- }
- strcpy(label_table[loc].name, token);
- label_table[loc].p = prog; /* ΓѬπΘ¿⌐ π¬áºáΓѽ∞ »α«úαá¼¼δ*/
- }
- /* àß½¿ ßΓα«¬á ¡Ñ »«¼ÑτÑ¡á, »ÑαÑσ«ñ ¬ ß½ÑñπεΘÑ⌐ */
- if(tok!=EOL) find_eol();
- } while(tok != FINISHED);
- prog = temp; /* ó«ßßΓá¡«ó¿Γ∞ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ*/
- }
-
- /* ê¡¿µ¿á½¿ºáµ¿∩ ¼áßß¿óá σαá¡Ñ¡¿∩ ¼ÑΓ«¬.
- Å« ß«ú½áΦÑ¡¿ε ¿¼∩ ¡π½Ñó«⌐ ¼ÑΓ¬¿ π¬áºδóáÑΓ, τΓ«
- ñá¡¡á∩ »«º¿µ¿∩ ¼áßß¿óá ¡Ñ ¿ß»«½∞ºπÑΓß∩ */
- void label_init()
- {
- register int t;
- for(t=0;t<NUM_LAB;++t) lable_table[t].name[0]='\0';
- }
- /* Å«¿ß¬ ¡áτá½á ß½ÑñπεΘÑ⌐ ßΓ᫬¿ */
- void find_eol()
- {
- while (*prog!='\n' && *prog!='\0') ++prog;
- if (*prog) prog++;
- }
-
- /* 髺óαáΘáÑΓ ¿¡ñÑ¬ß ß½ÑñπεΘÑ⌐ ßó«í«ñ¡«⌐ »«º¿µ¿¿ ó ¼áßß¿óÑ
- ¼ÑΓ«¬. ç¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á »ÑαÑ»«½¡Ñ¡¿Ñ ¼áßß¿óá.
- ç¡áτÑ¡¿Ñ -2 π¬áºδóáÑΓ ¡á ñπí½¿α«óá¡¿Ñ ¿¼Ñ¡ ¼ÑΓ«¬ */
- get_next_label(s)
- char *s;
- {
- register int t;
-
- for (t=0;t<NUM_LAB;++t) {
- if (label_table[t].name[0] == 0) return t;
- if(!strcmp(label_table[t].name,s)) return -2; /* ñπí½∞ */
- }
- return -1;
- }
-
-
- öπ¡¬µ¿∩ scan_labels() ß««íΘáÑΓ « ñóπσ Γ¿»áσ «Φ¿í«¬. ÅÑαóδ⌐ -
- φΓ« ñπí½¿απεΘ¿Ñ ¼ÑΓ¬¿. é ∩ºδ¬Ñ BASIC (¬á¬ ¿ ó í«½∞Φ¿¡ßΓóÑ ñαπú¿σ
- ∩ºδ¬«ó) ¡Ñ ¼«ªÑΓ íδΓ∞ ñóπσ «ñ¿¡á¬«óδσ ¼ÑΓ«¬. éΓ«α«⌐ Γ¿» «Φ¿í¬¿ -
- φΓ« »ÑαÑ»«½¡Ñ¡¿Ñ Γáí½¿µδ ¼ÑΓ«¬. ÉẼÑα Γáí½¿µδ «»αÑñѽѡ ß
- »«¼«Θ∞ε ¼á¬α««»αÑñѽѡ¿∩ NUM_LAB. éδ ¼«ªÑΓÑ ¿º¼Ñ¡¿Γ∞ Ñú« ó Γπ ¿½¿
- ¿¡πε ßΓ«α«¡π.
-
- Æáí½¿µá ¼ÑΓ«¬ ßΓα«¿Γß∩ «ñ¿¡ αáº, ¿ óδ»«½¡Ñ¡¿Ñ »ÑαÑσ«ñá GOTO
- óδ»«½¡∩ÑΓß∩ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec_goto(), »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ.
-
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá GOTO */
- void exec_goto()
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 31 --
-
-
- {
- char *loc;
-
- get_token(); /* »«½πτ¿Γ∞ ¼ÑΓ¬π »ÑαÑσ«ñá */
- /* Å«¿ß¬ ¼ÑßΓ«»«½«ªÑ¡¿∩ ¼ÑΓ¬¿ ó »α«úαá¼¼Ñ*/
- loc = find_label(token);
- if (loc == '\0')
- serror(7); /* îÑΓ¬á ¡Ñ ¡á⌐ñÑ¡á */
- else prog=loc; /*Åα«úαá¼¼á ¡áτá½á óδ»«½¡∩Γß∩ ¡Ñ ß ¡áτá½á*/
- }
-
- /* Å«¿ß¬ ¼ÑßΓ«»«½«ªÑ¡¿∩ ¼ÑΓ¬¿. 쫽∞ ó«ºóαáΘáÑΓß∩, Ñß½¿ ¼ÑΓ¬á
- ¡Ñ ¡á⌐ñÑ¡á; ó »α«Γ¿ó¡«¼ ß½πτáÑ ó«ºóαáΘáÑΓß∩ π¬áºáΓѽ∞ ¡á
- ¼ÑßΓ«, úñÑ αáß»«½«ªÑ¡á ¼ÑΓ¬á */
-
- char *find_label(s)
- char *s;
- {
- register int t;
-
- for (t=0;t<NUM_LAB;++t)
- if (!strcmp(label_tabel[t].name,s)) return label_tabel[t].p;
- return '\0';
- }
-
- éß»«¼«úáΓѽ∞¡á∩ Σπ¡¬µ¿∩ find_label(), »«½πτá∩ ¼ÑΓ¬π, ¿ΘÑΓ ÑÑ
- ó Γáí½¿µÑ ¼ÑΓ«¬ ¿ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ¡ÑÑ. àß½¿ ¼ÑΓ¬á ¡Ñ
- «í¡áαπªÑ¡á, ó«ºóαáΘáÑΓ, º¡áτÑ¡¿Ñ null. àß½¿ áñαÑß ¡Ñ null, Γ« «¡
- »α¿ßóá¿óáÑΓß∩ »ÑαѼѡ¡«⌐ prog, τΓ« óδºδóáÑΓ óδ»«½¡Ñ¡¿Ñ Γ«⌐
- ßΓ᫬¿, ¬«Γ«αá∩ íδ½á »«¼ÑτÑ¡á ¼ÑΓ¬«⌐. (Å«¼¡¿ΓÑ « Γ«¼, τΓ«
- π¬áºáΓѽ∞ prog «»¿ßδóáÑΓ »πΓ∞ óδ»«½¡Ñ¡¿∩ ßτ¿Γá¡«⌐ »α«úαá¼¼δ).
- àß½¿ π¬áºáΓѽ∞ ¡Ñ «í¡áαπªÑ¡, Γ« óδñáÑΓß∩ ß««íΘÑ¡¿Ñ « Γ«¼, τΓ«
- ¼ÑΓ¬á ¡Ñ«»αÑñѽѡá.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 32 --
-
-
- ÄÅàÉÇÆÄÉ IF
- -----------------------------------------------------------------
-
- ê¡ΓÑα»αÑΓáΓ«α SMALL BASIC «íαáíáΓδóáÑΓ «»ÑαáΓ«α IF ó
- ß««ΓóÑΓßΓó¿¿ ß« ßΓá¡ñáαΓ«¼ ∩ºδ¬á BASIC. é SMALL BASIC,
- «ΓßπΓßΓóπÑΓ ELSE ¿ »«ññÑনóáÑΓß∩ Γ«½∞¬« Γα¿ πß½«ó¿∩: "í«½∞ΦÑ",
- "¼Ñ¡∞ΦÑ" ¿½¿ "αáó¡«". (¥Γ« ßñѽᡫ ñ½∩ Γ«ú«, τΓ«íδ óδ ¼«ú½¿ ½Ñú¬«
- »«¡∩Γ∞ αáí«Γπ φΓ«ú« «»ÑαáΓ«αá). Äß¡«ó¡«⌐ Σ«α¼áΓ «»ÑαáΓ«αá:
-
- IF <óδαáªÑ¡¿Ñ><«»ÑαáΓ«α><óδαáªÑ¡¿Ñ> THEN <«»ÑαáΓ«α>
-
- Ä»ÑαáΓ«α, ßΓ«∩Θ¿⌐ »«ß½Ñ THEN, óδ»«½¡∩ÑΓß∩ Γ«½∞¬« ó Γ«¼
- ß½πτáÑ, Ñß½¿ º¡áτÑ¡¿Ñ ßαáó¡Ñ¡¿∩ ∩ó½∩ÑΓß∩ ¿ßΓ¿¡¡δ¼. öπ¡¬µ¿∩
- exec_if(), »α¿óÑñÑ¡¡á∩ ¡¿ªÑ, «íÑß»Ñτ¿óáÑΓ óδ»«½¡Ñ¡¿Ñ φΓ«⌐ Σ«α¼δ
- «»ÑαáΓ«αá IF.
-
- /* Åα«ßΓÑ⌐Φá∩ αÑ὿ºáµ¿∩ «»ÑαáΓ«αá IF */
- void exec_if()
- {
- int x , y, cond;
- char op;
- get_exp(&x); /* »«½πτ¿Γ∞ ½Ñó«Ñ óδαáªÑ¡¿Ñ */
- get_token(); /* »«½πτ¿Γ∞ «»ÑαáΓ«α */
- if (!strchr("=<>", *token)) {
- serror(0); /* ¡Ññ«»πßΓ¿¼δ⌐ «»ÑαáΓ«α */
- return;
- }
- op=*token;
- get_exp(&y); /* »«½πτ¿Γ∞ »αáó«Ñ óδαáªÑ¡¿Ñ */
- /* Ä»αÑñѽѡ¿Ñ αѺπ½∞ΓáΓá */
- cond=0;
- switch(op) {
- case '=':
- if(x==y) cond=1;
- break;
- case '<':
- if(x<y) cond=1;
- break;
- case '>':
- if(x>y) cond=1;
- break;
- }
- if(cond) { /* Ñß½¿ ¿ßΓ¿¡á, Γ« »«¿ß¬ ¡πª¡«ú« IF */
- get_token();
- if(tok!=THEN) {
- serror(8);
- return;
- } /* é »α«Γ¿ó¡«¼ ß½πτáÑ »α«úαá¼¼á »α«ñ«½ªáÑΓß∩ ß«
- ß½ÑñπεΘÑ⌐ ßΓ᫬¿ */
- }
- else find_eol(); /* »«¿ß¬ ßΓ᫬¿ »α«ñ«½ªÑ¡¿∩ »α«úαá¼¼δ */
- }
-
- öπ¡¬µ¿∩ exec_if() óδ»«½¡∩ÑΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 33 --
-
-
- 1. éδτ¿ß½∩ÑΓß∩ º¡áτÑ¡¿Ñ ½Ñó«ú« óδαáªÑ¡¿∩.
- 2. æτ¿ΓδóáÑΓß∩ «»ÑαáΓ«α ßαáó¡Ñ¡¿∩.
- 3. éδτ¿ß½∩ÑΓß∩ óѽ¿τ¿¡á »αáó«ú« óδαáªÑ¡¡¿∩.
- 4. éδ»«½¡∩ÑΓß∩ «»Ñαᵿ∩ ßαáó¡Ñ¡¿∩.
- 5. àß½¿ πß½«ó¿Ñ ∩ó½∩ÑΓß∩ ¿ßΓ¿¡«⌐, Γ« óδ»«½¡∩ÑΓß∩ »«¿ß¬ THEN;
- ó »α«Γ¿ó¡«¼ ß½πτáÑ, find_eol óδ»«½¡∩ÑΓ »ÑαÑσ«ñ ¡á ¡áτὫ
- ß½ÑñπεΘÑ⌐ ßΓ᫬¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 34 --
-
-
- ûêèï FOR
- -----------------------------------------------------------------
-
- Åα«í½Ñ¼á «íαáí«Γ¬¿ ¿¡ΓÑα»αÑΓáΓ«α«¼ «»ÑαáΓ«αá µ¿¬½á FOR,
- óσ«ñ∩ΘÑú« ó ß«ßΓáó «»ÑαáΓ«αá BASIC, αÑΦÑ¡á ó ¡áΦѼ ß½πτáÑ
- ñ«ó«½∞¡« «α¿ú¿¡á½∞¡«. Äß¡«ó¡«⌐ Σ«α¼áΓ «»ÑαáΓ«αá µ¿¬½á FOR
- ß½ÑñπεΘ¿⌐:
-
- FOR<¿¼∩ π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐>=<¡áτ. º¡áτÑ¡¿Ñ>TO<¬«¡. º¡áτÑ¡¿Ñ>
- .
- .
- .
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ «»ÑαáΓ«α«ó
- .
- .
- .
- NEXT
-
- éÑαß¿∩ «»ÑαáΓ«αá FOR, »«ññÑনóáѼá∩ ¿¡ΓÑα»αÑΓáΓ«α«¼ SMALL
- BASIC, αÑ὿ºπÑΓ µ¿¬½ ß »«½«ª¿Γѽ∞¡δ¼ »α«αáΘÑ¡¿Ñ¼ αáó¡δ¼ 1 ¡á
- ¬áªñπε ¿ΓÑαáµ¿ε µ¿¬½á. Åáαá¼ÑΓα STEP ¡Ñ »«ññÑনóáÑΓß∩.
-
- é ∩ºδ¬Ñ BASIC, Γ«τ¡« Γá¬ªÑ ¬á¬ ¿ ó C¿, ñ«»π߬áÑΓß∩
- 󽫪ѡ¡«ßΓ∞ µ¿¬½á FOR. Äß¡«ó¡«⌐ ¿ºε¼¿¡¬«⌐, »α¿ αÑ὿ºáµ¿¿ φΓ«ú«
- «»ÑαáΓ«αá, ß Γ«τ¬¿ ºαÑ¡¿∩ »α«úαá¼¼¿ßΓá-»α«ΣÑßß¿«¡á½á, ∩ó½∩ÑΓß∩
- ß«σαá¡Ñ¡¿Ñ ¿¡Σ«α¼áµ¿¿ « ¬áªñ«¼ 󽫪ѡ¡«¼ µ¿¬½Ñ ß« ßß佬«⌐ ¡á
- ó¡ÑΦ¡¿⌐ µ¿¬½. ä½∩ αÑ὿ºáµ¿¿ φΓ«⌐ ¼á½Ñ¡∞¬«⌐, ¡« óßÑ-Γᬿ
- ºá¬«óδન (Γαπñ¡«ßΓ¿ óßÑúñá αáñπεΓ ¡áßΓ«∩Θ¿σ
- »α«úαá¼¼¿ßΓ«ó-¼πªτ¿¡), ¿ß»«½∞ºπÑΓß∩ ßΓѬ«óá∩ ßΓαπ¬Γπαá, ¬«Γ«αá∩
- αáí«ΓáÑΓ ß½ÑñπεΘ¿¼ «íαẫ¼: ìáτὫ µ¿¬½á, ¿¡Σ«α¼áµ¿∩ « º¡áτÑ¡¿¿
- π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐ µ¿¬½á ¿ ÑÑ ¬«¡Ñτ¡«¼ º¡áτÑ¡¿¿, á ΓᬪÑ
- ¼ÑßΓ« αáß»«½«ªÑ¡¿∩ µ¿¬½á ó ΓÑ½Ñ »α«úαá¼¼δ ºá¡«ß∩Γß∩ ó ßΓѬ.
- èáªñδ⌐ αáº, »α¿ ñ«ßΓ¿ªÑ¡¿¿ «»ÑαáΓ«αá NEXT, ¿º ßΓÑ¬á ¿ºó½Ñ¬áÑΓß∩
- ¿¡Σ«α¼áµ¿∩ « º¡áτÑ¡¿¿ π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐, ºáΓѼ ÑÑ º¡áτÑ¡¿Ñ
- »ÑαÑßτ¿ΓδóáÑΓß∩ ¿ ßαáó¡¿óáÑΓß∩ ß ¬«¡Ñτ¡δ¼ º¡áτÑ¡¿Ñ¼ µ¿¬½á. àß½¿
- º¡áτÑ¡¿Ñ π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐ µ¿¬½á ñ«ßΓ¿ú½« ßó«Ñú« ¬«¡Ñτ¡«ú«
- º¡áτÑ¡¿∩, óδ»«½¡Ñ¡¿Ñ µ¿¬½á »αѬαáΘáÑΓß∩ ¿ óδ»«½¡∩ÑΓß∩ «»ÑαáΓ«α
- »α«úαá¼¼δ ß½ÑñπεΘ¿⌐ ºá «»ÑαáΓ«α«¼ NEXT. é »α«Γ¿ó¡«¼ ß½πτáÑ, ó
- ßΓѬ ºá¡«ß¿Γß∩ ¡«óá∩ ¿¡Σ«α¼áµ¿∩ ¿ óδ»«½¡Ñ¡¿Ñ µ¿¬½á ¡áτ¿¡áÑΓß∩ ß
- Ñú« ¡áτá½á. Æá¬¿¼ ªÑ «íαẫ¼ «íÑß»Ñτ¿óáÑΓß∩ ¿¡ΓÑα»αÑΓᵿ∩ ¿
- óδ»«½¡Ñ¡¿Ñ 󽫪ѡ¡δσ µ¿¬½«ó. é ßΓѬ«»«ñ«í¡«⌐ ßΓαπ¬ΓπαÑ ó½«ªÑ¡¡δσ
- µ¿¬½«ó ¬áªñδ⌐ FOR ñ«½ªÑ¡ íδΓ∞ ºá¬αδΓ ß««ΓóÑΓßΓóπεΘ¿¼ «»ÑαáΓ«α«¼
- NEXT.
-
- ä½∩ αÑ὿ºáµ¿¿ «»ÑαáΓ«αá µ¿¬½á FOR ßΓѬ ñ«½ªÑ¡ ¿¼ÑΓ∞
- ß½ÑñπεΘπε ßΓαπ¬Γπαπ:
-
- struct for_stack {
- int var; /* ßτÑΓτ¿¬ µ¿¬½á */
- int target; /* ¬«¡Ñτ¡«Ñ º¡áτÑ¡¿Ñ */
- char *loc;
- } fstack[FOR_NEST]; /* ßΓѬ ñ½∩ µ¿¬½á FOR/NEXT */
- int ftos; /* ¿¡ñÑ¬ß ¡áτá½á ßΓѬá FOR */
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 35 --
-
-
- ç¡áτÑ¡¿Ñ ¼á¬α«ßá FOR_NEST «úαá¡¿τ¿óáÑΓ πα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿
- µ¿¬½á. (Å« π¼«½τá¡¿ε ñ«»π߬áÑΓß∩ 25 πα«ó¡Ñ⌐ 󽫪ѡ¡«ßΓ¿).
- ÅÑαѼѡ¡á∩ ftos óßÑúñá ¿¼ÑÑΓ º¡áτÑ¡¿Ñ ¿¡ñѬßá ¡áτá½á ßΓѬá.
-
- ä½∩ «íαáí«Γ¬¿ ßΓѬá óá¼ »«¡áñ«í∩Γß∩ ñóÑ Σπ¡¬µ¿¿ fpush() ¿
- fpop(), ¬«Γ«αδÑ »α¿óÑñÑ¡δ ¡¿ªÑ.
-
- /* Å«¼ÑßΓ¿Γ∞ φ½Ñ¼Ñ¡Γ ó ßΓѬ */
- void fpush(i)
- struct for_stack i;
- {
- if (ftos > FOR_NEST)
- serror(10);
-
- fstack[ftos]=i;
- ftos++;
- }
-
- struct for_stack fpop()
- {
- ftos--;
- if (ftos < 0) serror(11);
- return(fstack[ftos]);
- }
-
-
- êΓá¬, »«ß½Ñ Γ«ú«, ¬á¬ óδ »«½πτ¿½¿ 󫺼«ª¡«ßΓ∞ «º¡á¬«¼¿Γ∞ß∩
- ß« óßѼ¿ ¡Ñ«íσ«ñ¿¼δ¼¿ óß»«¼«úáΓѽ∞¡δ¼¿ Σπ¡¬µ¼∩¼¿, »α¿óÑñѼ »«½¡δ⌐
- ΓѬßΓ Σπ¡¬µ¿¿, αÑ὿ºπεΘÑ⌐ «»ÑαáΓαδ FOR ¿ NEXT.
-
-
- /* Åα«ßΓÑ⌐Φá∩ αÑ὿ºáµ¿∩ «»ÑαáΓ«αá µ¿¬½á FOR */
- void exec_for()
- {
- struct for_stack i;
- int value;
-
- get_token(); /* τΓÑ¡¿Ñ π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐ */
- if (!isalfa(*token)) {
- serror(4);
- return;
- }
-
- i.var=toupper(token) - 'A'; /* ß«σαá¡¿¼ ¿¡ñÑ¬ß */
-
- get_token(); /* τΓÑ¡¿Ñ ß¿¼ó«½á αáóÑ¡ßΓóá */
- if (*token != '=') {
- serror(3);
- return;
- }
-
- get_exp(&value); /* »«½πτ¿Γ∞ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ */
-
- variables[i.var] = value;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 36 --
-
-
-
- get_token();
- if (tok != TO) serror(9); /* τΓÑ¡¿Ñ ¿ á¡á½¿º TO */
-
- get_exp(&i.target); /* »«½πτ¿Γ∞ ¬«¡Ñτ¡«Ñ º¡áτÑ¡¿Ñ */
-
- /* àß½¿ µ¿¬½ óδ»«½¡∩ÑΓß∩ »«ß½Ññ¡¿⌐ αáº, »«¼ÑßΓ¿Γ∞ ¿¡Σ«α¼áµ¿ε
- ó ßΓѬ*/
- if (value >= variables[i.var]) {
- i.loc = prog;
- fpush(i);
- }
- else { /* »α«»πßΓ¿Γ∞ óÑß∞ µ¿¬½ µÑ½¿¬«¼ */
- while(tok != NEXT) get_token();
- }
- }
-
- /* éδ»«½¡Ñ¡¿Ñ «»ÑαáΓ«αá NEXT */
- void next()
- {
- struct for_stack i;
-
- i = fpop(); /* τΓÑ¡¿Ñ ¿¡Σ«α¼áµ¿¿ « µ¿¬½Ñ */
-
- variables[i.var]++; /* πóѽ¿τÑ¡¿Ñ »ÑαѼѡ¡«⌐ µ¿¬½á */
- if (variables[i.var] > i.target) return; /* ¬«¡Ñµ */
- fpush(i); /* ó »α«Γ¿ó¡«¼ ß½πτáÑ ºá»«¼¡¿Γ∞ ¿¡Σ«α¼áµ¿ε */
- prog = i.loc; /* µ¿¬½ */
- }
-
-
- èᬠ¿¼Ñ¡¡« αáí«ΓáÑΓ φΓá »«ñ»α«úαá¼¼á, 󻫽¡Ñ ∩ß¡« ¿º
- ¬«¼¼Ñ¡Γáα¿Ñó ¬ ¡Ñ⌐. æ½ÑñπÑΓ ºá¼ÑΓ¿Γ∞, τΓ« á¡á½¿º ¡á 󫺼«ª¡«ßΓ∞
- óδσ«ñá ¿º µ¿¬½á »« «»ÑαáΓ«απ GOTO ó ñá¡¡«¼ ß½πτáÑ ¡Ñ
- óδ»«½¡∩ÑΓß∩. Å«φΓ«¼π ¿ß»«½∞º«óá¡¿Ñ GOTO ó ΓÑ½Ñ µ¿¬½á ¼«ªÑΓ
- »α¿óÑßΓ¿ ¬ ¿ß¬áªÑ¡¿ε ß«ñÑন¼«ú« ßΓѬá, τΓ« ó«íΘѼ-Γ« ¡Ñ
- ªÑ½áΓѽ∞¡«.
-
- ÉÑΦÑ¡¿Ñ »α«í½Ñ¼δ αÑ὿ºáµ¿¿ µ¿¬½á FOR ß »«¼«Θ∞ε »α¿¼Ñ¡Ñ¡¿∩
- ßΓѬ«óδσ ßΓαπ¬Γπα ∩ó½∩ÑΓß∩, ó «íΘѼ ß½πτáÑ, Γ¿»¿τ¡δ¼ ñ½∩
- αÑ὿ºáµ¿¿ µ¿¬½¿τÑ߬¿σ ¬«¡ßΓαπ¬µ¿⌐. Æá¬ ¬á¬ ¿¡ΓÑα»αÑΓáΓ«α SMALL
- BASIC ¡Ñ »«ññÑনóáÑΓ ñαπú¿Ñ Γ¿»δ µ¿¬½¿τÑ߬¿σ ¬«¡ßΓαπ¬µ¿⌐, Γ« óδ
- ¼«ªÑΓÑ ßἫßΓ«∩Γѽ∞¡« αáºαáí«ΓáΓ∞ »«ñ»α«úαá¼¼δ αÑ὿ºáµ¿¿ µ¿¬½«ó
- WHILE ¿ DO-WHILE. èᬠóδ ß¼«ªÑΓÑ πó¿ñÑΓ∞ ó ß½ÑñπεΘѼ »áαáúαáΣÑ,
- ßΓѬ«óδÑ ßΓαπ¬Γπαδ ¿»«½∞ºπεΓß∩ »α¿ αÑ὿ºáµ¿¿ ¿ ñαπú¿σ
- ¬«¡ßΓαπ¬µ¿⌐ »α«úαá¼¼¿α«óá¡¿∩, ñ«»π߬áεΘ¿σ 󽫪ѡ¡«ßΓ∞.
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 37 --
-
-
- ÄÅàÉÇÆÄÉ GOSUB.
- -----------------------------------------------------------------
-
- ò«Γ∩ BASIC ¡Ñ »«ññÑনóáÑΓ «Γñѽ∞¡δÑ »«ñ»α«úαá¼¼δ, ¡«
- ¿¼ÑÑΓß∩ 󫺼«ª¡«ßΓ∞ óδºóáΓ∞ «Γñѽ∞¡δÑ τáßΓ¿ »α«úαá¼¼δ ß »«¼«Θ∞ε
- «»ÑαáΓ«αá GOSUB ¿ óÑα¡πΓß∩ ¿º ¡ÑÑ ß »«¼«Θ∞ε «»ÑαáΓ«αá RETURN.
- Äß¡«ó¡«⌐ Σ«α¼«⌐ GOSUB-RETURN ∩ó½∩ÑΓß∩ ß½ÑñπεΘá∩:
-
- GOSUB <¡«¼Ñα ßΓ᫬¿>
- .
- .
- .
- <¡«¼Ñα ßΓ᫬¿>
- .
- Γѽ« »«ñ»α«úαá¼¼δ
- .
- .
- RETURN
-
- éδº«ó »«ñ»α«úαá¼¼δ ΓαÑíπÑΓ ¿ß»«½∞º«óá¡¿∩ ßΓѬá. ÄτÑó¿ñ¡«,
- τΓ« φΓ« αÑ὿º«óáΓ∞ ó ñá¡¡«¼ ß½πτáÑ »α«ΘÑ, τѼ ñ½∩ «»ÑαáΓ«αá FOR
- »«Γ«¼π, τΓ« ¬áªñ«¼π «»ÑαáΓ«απ RETURN ß««ΓóÑΓßΓóπÑΓ ßó«⌐ GOSUB.
- Ä»¿ßá¡¿Ñ ßΓѬá GOSUB »«¬áºá¡« ¡¿ªÑ.
-
- char *gstack[SUB_NEST]; /* ßΓѬ »«ñ»α«úαá¼¼ */
- int gtos; /* ¿¡ñÑ¬ß óÑασ¡Ñ⌐ τáßΓ¿ ßΓѬá */
-
- öπ¡¬µ¿∩ gosub() ¿ óß»«¼«úáΓѽ∞¡δÑ »α«úαá¼¼δ »α¿óÑñÑ¡δ ¡¿ªÑ.
-
- /* Åα«ßΓÑ⌐Φá∩ αÑ὿ºáµ¿∩ «»ÑαáΓ«αá GOSUB */
- void gosub()
- {
- char *loc;
-
- get_token();
- /* »«¿ß¬ ¼ÑΓ¬¿ «íαáΘÑ¡¿∩ */
- loc = find_label(token);
- if(loc=='\0')
- serror(7); /* ¼ÑΓ¬á ¡Ñ ¡á⌐ñÑ¡á */
- else {
- gpush(prog); /* ºá»«¼¡¿¼ ¼ÑßΓ«, ¬πñá ¡áñ« óÑα¡πΓ∞ß∩ */
- prog = loc; /* ßΓáαΓ »α«úαá¼¼δ ß Γ«τ¬¿ loc */
- }
- }
-
- /* 髺óαáΓ ¿º »«ñ»α«úαá¼¼δ */
- void greturn()
- {
- prog = gpop();
- }
-
- /* Å«¼ÑßΓ¿Γ∞ φ½Ñ¼Ñ¡Γ ó ßΓѬ «»ÑαáΓ«α«ó GOSUB (»«ñ»α«úαá¼¼) */
- void gpush(s)
- char *s;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 38 --
-
-
- {
- gtos++;
- if(gtos == SUB_NEST) {
- serror(12);
- return;
- }
- gstack[gtos]=s;
- }
-
- /* éδΓ«½¬¡πΓ∞ φ½Ñ¼Ñ¡Γ ¿º ßΓÑ¬á «»ÑαáΓ«α«ó GOSUB (»«ñ»α«úαá¼¼) */
- char *gpop()
- {
- if(gtos==0) {
- serror(13);
- return;
- }
- return(gstack[gtos--]);
- }
-
- 諼á¡ñá GOSUB αáí«ΓáÑΓ ß½ÑñπεΘ¿¼ «íαẫ¼. ÆÑ¬πΘÑÑ º¡áτÑ¡¿Ñ
- prog »«¼ÑΘáÑΓß∩ ó ßΓѬ GOSUB. çáΓѼ prog »α¿ßóá¿óáÑΓß∩ áñαÑß
- ßΓ᫬¿, ß ¬«Γ«α«⌐ ¡áτ¿¡áÑΓß∩ »«ñ»α«úαá¼¼á, ¿ ¡áτ¿¡áÑΓß∩
- óδ»«½¡Ñ¡¿Ñ »«ñ»α«úαá¼¼δ. è«úñá óßΓαÑτáÑΓß∩ RETURN, ¿º ßΓѬá GOSUB
- óδΓὬ¿óáÑΓß∩ «τÑαÑñ¡«Ñ º¡áτÑ¡¿Ñ ¿ »α¿ßóá¿óáÑΓß∩ prog. äá½ÑÑ
- óδ»«½¡Ñ¡¿Ñ »α«ñ«½ªáÑΓß∩ ß« ß½ÑñπεΘÑ⌐ ßΓ᫬¿ »«ß½Ñ «»ÑαáΓ«αá
- GOSUB. Ä»ÑαáΓ«α GOSUB ñ«»π߬áÑΓ ó½«ªÑ¡¡«ßΓ∞.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 39 --
-
-
- ÅÄïì¢ë öÇëï êìÆàÉÅÉàÆÇÆÄÉÇ.
- -----------------------------------------------------------------
-
- éßÑ ΓѬßΓδ SMALL BASIC, ¿ß¬½ετá∩ ΓѬßΓδ ß¿¡Γá¬ß¿τÑ߬«ú«
- á¡á½¿ºáΓ«αá óδαáªÑ¡¿⌐, »α¿óÑñÑ¡δ ¡¿ªÑ. éá¼ ¡Ñ«íσ«ñ¿¼«
- «Γ¬«¼»¿½¿α«óáΓ∞ Σá⌐½δ ¿¡ΓÑα»αÑΓáΓ«αá ¿ á¡á½¿ºáΓ«αá, á ºáΓѼ
- «ΓαÑñá¬Γ¿α«óáΓ∞ ¿σ.
-
- /* î¿¡¿¼á½∞¡δ⌐ BASIC-¿¡ΓÑ»αÑΓáΓ«α */
- #include "stdio.h"
- #include "setjmp.h"
- #include "math.h"
- #include "ctype.h"
- #include "stdlib.h"
-
- #define NUM_LAB 100
- #define LAB_LEN 10
- #define FOR_NEST 25
- #define SUB_NEST 25
- #define PROG_SIZE 10000
-
- #define DELIMITER 1
- #define VARIABLE 2
- #define NUMBER 3
- #define COMMAND 4
- #define STRING 5
- #define QUOTE 6
-
- #define PRINT 1
- #define INPUT 2
- #define IF 3
- #define THEN 4
- #define FOR 5
- #define NEXT 6
- #define TO 7
- #define GOTO 8
- #define EOL 9
- #define FINISHED 10
- #define GOSUB 11
- #define RETURN 12
- #define END 13
-
- char *prog; /* ß«ñÑαª¿Γ óδαáªÑ¡¿Ñ ñ½∩ á¡á½¿ºá */
- jmp_buf e_buf; /* ß«ñÑαª¿Γ ßαΓÑñπ ñ½∩ longjmp() */
-
- int variables[26]= { /* 26 »ÑαѼѡ¡δσ »«½∞º«óáΓѽ∩ A - Z */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- struct commands { /* Åα«ß¼«Γα Γáí½¿µδ ¬½ετÑóδσ ß½«ó */
- char command[20];
- char tok;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 40 --
-
-
- } table[] = { /* 諼á¡ñá ñ«½ª¡á óó«ñ¿Γß∩ »α«»¿ß¡δ¼¿ */
- "print",PRINT, /* íπ¬óἿ ó φΓπ Γáí½¿µπ */
- "input",INPUT,
- "if",IF,
- "then",THEN,
- "goto",GOTO,
- "for",FOR,
- "next",NEXT,
- "to",TO,
- "gosub",GOSUB,
- "return",RETURN,
- "end",END,
- "",END /* îáα¬Ñα ¬«¡µá Γáí½¿µδ */
- };
-
- char token[80];
- char token_type, tok;
-
- struct label {
- char name[LAB_LEN];
- char *p; /* */
- };
- struct label label_table[NUM_LAB];
-
- char *find_label(), *gpop();
-
- struct for_stack {
- int var; /* »ÑαѼѡ¡á∩ ßτÑΓτ¿¬á */
- int target; /* ¬«¡Ñτ¡«Ñ º¡áτÑ¡¿Ñ */
- char *loc;
- } fstack[FOR_NEST]; /* ßΓѬ µ¿¬½á FOR/NEXT */
- struct for_stack fpop();
-
- char *gstack[SUB_NEST]; /* ßΓѬ «»ÑαáΓ«αá GOSUB */
- int ftos; /* ¿¡ñÑ¬ß ¡áτá½á ßΓѬá FOR */
- int gtos; /* ¿¡ñÑ¬ß ¡áτá½á ßΓѬá GOSUB */
-
- void print(), scan_labels(), find_eol(),exec_goto();
- void exec_if(), exec_for(), next(), fpush(), input();
- void gosub(), greturn(), gpush(), label_init();
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- char in[80];
- int answer;
- char *p_buf;
- char *t;
-
- if(argc!=2) {
- printf("êß»«½∞ºπ⌐ΓÑ Σ«α¼áΓ: run <filename>\n");
- exit(1);
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 41 --
-
-
-
- /* éδñѽѡ¿Ñ »á¼∩Γ¿ ñ½∩ »α«úαá¼¼δ */
- if (!(p_buf=(char *) malloc(PROG_SIZE))) {
- printf("ÄΦ¿í¬á »α¿ óδñѽѡ¿¿ »á¼∩Γ¿ ");
- exit(1);
- }
-
- /* çáúαπº¬á »α«úαá¼¼δ ñ½∩ óδ»«½¡Ñ¡¿∩ */
- if(!load_program(p_buf,argv[1])) exit(1);
- if(setjmp(e_buf)) exit(1); /* ¿¡¿µ¿á½¿ºáµ¿∩ íπΣÑαá
- ¡Ñ½«¬á½∞¡δσ »ÑαÑσ«ñ«ó */
- prog = p_buf;
- scan_labels(); /* »«¿ß¬ ¼ÑΓ¬¿ ó »α«úαá¼¼Ñ */
- ftos = 0; /* ¿¡¿µ¿á½¿ºáµ¿∩ ¿¡ñÑßá ßΓѬá FOR */
- gtos = 0; /* ¿¡¿µ¿á½¿ºáµ¿∩ ¿¡ñÑßá ßΓѬá GOSUB */
- do {
- token_type = get_token();
- /* »α«óÑα¬á ¡á «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩ */
- if(token_type==VARIABLE) {
- putback(); /* ó«ºóαáΓ »Ñα. «íαáΓ¡« ó« óσ«ñ¡«⌐ »«Γ«¬ */
- assignment(); /* ñ«½ªÑ¡ íδΓ∞ «»ÑαáΓ«α »α¿ßóá¿óá¡¿∩ */
- }
- else /* φΓ« ¬«¼á¡ñá */
- switch(tok) {
- case PRINT:
- print();
- break;
- case GOTO:
- exec_if();
- break;
- case FOR:
- exec_for();
- break;
- case NEXT:
- next();
- break;
- case INPUT:
- input();
- break;
- case GOSUB:
- gosub();
- break;
- case RETURN:
- greturn();
- break;
- case END:
- exit(0);
- }
- } while (tok != FINISHED);
- }
-
- /* çáúαπº¬á »α«úαá¼¼δ. */
- load_program(p, fname)
- char *p;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 42 --
-
-
- char *fname;
- {
- FILE *fp;
- int i=0;
- if(!(fp=fopen(fname, "rb"))) return 0;
-
- i = 0;
- do {
- *p = getc(fp);
- p++; i++;
- } while(!feof(fp) && i<PROG_SIZE);
- *(p-2) = '\0'; /* ß¿¼ó«½ ¬«¡µá »α«úαá¼¼δ */
- fclose(fp);
- return 1;
- }
-
- /* Åα¿ßóá¿óá¡¿Ñ »ÑαѼѡ¡«⌐ º¡áτÑ¡¿∩ */
- assigment()
- {
- int var, value;
- /* Å«½πτ¿Γ∞ ¿¼∩ »ÑαѼѡ¡«⌐ */
- get_token();
- if(!isalpha(*token)) {
- serror(4); /* φΓ« ¡Ñ »ÑαѼѡ¡á∩ */
- return;
- }
-
- /* óδτ¿ß½Ñ¡¿Ñ ¿¡ñѬßá »ÑαѼѡ¡«⌐ */
- var = toupper(*token)-'A';
-
- /* »«½πτ¿Γ∞ º¡á¬ αáóÑ¡ßΓóá */
- get_token();
- if(*token!='=') {
- serror(3);
- return;
- }
-
- /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ, »α¿ßóáѼ«Ñ »ÑαѼѡ¡«⌐ */
- get_exp(&value);
-
- /* »α¿ßó«¿Γ∞ φΓ« º¡áτÑ¡¿Ñ */
- variables[var] = value;
- }
-
- /* Åα«ßΓÑ⌐Φá∩ αÑ὿ºáµ¿∩ «»ÑαáΓ«αá PRINT */
- void print()
- {
- int answer;
- int len=0, spaces;
- char last_delim;
-
- do {
- get_token(); /* »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ φ½Ñ¼Ñ¡Γ ß»¿ß¬á */
- if(tok==EOL || tok==FINISHED) break;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 43 --
-
-
- if(token_type==QUOTE) { /* φΓ« ßΓ᫬á */
- print(token);
- len += strlen(token);
- get_token();
- }
- else { /* φΓ« óδαáªÑ¡¿Ñ */
- putback();
- get_exp(&answer);
- get_token();
- len +=printf("%d", answer);
- }
- last_delim = *token;
-
- if(*token==';') {
- /* óδτ¿ß½Ñ¡¿Ñ τ¿ß½á »α«íѽ«ó »α¿ »ÑαÑσ«ñÑ ¬ ß½ÑñπεΘÑ⌐ Γáíπ½∩µ¿¿*/
- spaces= 8- (len % 8);
- len += spaces; /* ó¬½ετá∩ »«º¿µ¿ε Γáíπ½∩µ¿¿ */
- while(spaces) {
- print(" ");
- spaces--;
- }
- }
- else if(*token==','); /* ¡¿τÑú« ¡Ñ ñѽáΓ∞ */
- else if(tok!=EOL && tok!=FINISHED) serror(0);
- } while (*token == ';' || *token == ',');
-
- if(tok==EOL || tok==FINISHED) {
- if(last_delim != ';' && last_delim != ',') printf("\n");
- }
- else serror(0); /* «ΓßπΓßΓóπÑΓ ',' ¿½¿ ';' */
- }
- /* Å«¿ß¬ óßÑσ ¼ÑΓ«¬ */
- void scan_labels()
- {
- int addr;
- char *temp;
-
- label_init(); /* «í¡π½Ñ¡¿Ñ óßÑσ ¼ÑΓ«¬ */
- temp = prog; /* ß«σαá¡¿¼ π¬áºáΓѽ∞ ¡á ¡áτὫ »α«úαá¼¼δ*/
- /* àß½¿ »Ñαóá∩ ½Ñ¬ßѼá Σá⌐½á ÑßΓ∞ ¼ÑΓ¬á */
- get_token();
- if(token_type==NUMBER) {
- strcpy(label_table[0].name,token);
- label_table[0].p=prog;
- }
-
- find_eol();
- do {
- get_token();
- if(token_type==NUMBER) {
- addr =get_next_label(token);
- if(addr==-1 || addr==-2) {
- (addr==-1) ?serror(5):serror(6);
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 44 --
-
-
- strcpy(label_table[addr].name, token);
- label_table[addr].p = prog; /* ΓѬπΘ¿⌐ π¬áºáΓѽ∞ »α«úαá¼¼δ */
- }
- /* Ñß½¿ ßΓα«¬á ¡Ñ »«¼ÑτÑ¡á, Γ« »«¿ß¬ ß½ÑñπεΘÑ⌐ */
- if(tok!=EOL) find_eol();
- } while(tok!=FINISHED);
- prog = temp; /* ß«σαá¡¿¼ «α¿ú¿¡á½ */
- }
-
- /* Å«¿ß¬ ¡áτá½á ß½ÑñπεΘÑ⌐ ßΓ᫬¿ */
- void find_eol()
- {
- while(*prog!='\n' && *prog!='\0') ++prog;
- if(*prog) prog++;
- }
-
- /* 髺óαáΘáÑΓ ¿¡ñÑ¬ß Ñ¡á ß½ÑñπεΘπε ßó«í«ñ¡πε »«º¿µ¿ε
- ¼áßß¿óá ¼ÑΓ«¬. -1, Ñß½¿ ¼áßß¿ó »ÑαÑ»«½¡Ñ¡.
- -2, Ñß½¿ ñπí½¿α«óá¡¿Ñ ¼ÑΓ«¬. */
-
- get_next_label(s)
- char *s;
- {
- register int t;
-
- for(t=0;t<NUM_LAB;++t) {
- if(label_table[t].name[0]==0) return t;
- if(!strcmp(label_table[t].name,s)) return -2; /*ñπí½∞*/
- }
-
- return -1;
- }
-
- /* Å«¿ß¬ ßΓ᫬¿ »« ¿ºóÑßΓ¡«⌐ ¼ÑΓ¬Ñ. ç¡áτÑ¡¿Ñ 0 ó«ºóαáΘáÑΓß∩,
- Ñß½¿ ¼ÑΓ¬á ¡Ñ ¡á⌐ñÑ¡á; ó »α«Γ¿ó¡«¼ ß½πτáÑ ó«ºóαáΘáÑΓß∩
- π¬áºáΓѽ∞ ¡á »«¼ÑτÑ¡¡πε ßΓ᫬π »α«úαá¼¼δ */
-
- char *find_label(s)
-
- char *s;
- {
- register int t;
-
- for(t=0; t<NUM_LAB; ++t)
- if(!strcmp(label_table[t].name,s)) return label_table[t].p;
- return '\0'; /* ß«ßΓ«∩¡¿Ñ «Φ¿í¬¿ */
- }
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá GOTO */
- void exec_goto()
- {
- char *loc;
-
- get_token(); /* »«½πτ¿Γ∞ ¼ÑΓ¬π »ÑαÑσ«ñá */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 45 --
-
-
- /* Å«¿ß¬ ¼ÑßΓ«»«½«ªÑ¡¿∩ ¼ÑΓ¬¿ */
- loc = find_label(token);
- if(loc=='\0')
- serror(7); /* ¼ÑΓ¬á ¡Ñ «í¡áαπªÑ¡á */
- else prog=loc; /* ßΓáαΓ »α«úαá¼¼δ ß π¬áºá¡¡«⌐ Γ«τ¬¿ */
- }
-
- /* ê¡¿µ¿á½¿ºáµ¿∩ ¼áßß¿óá σαá¡Ñ¡¿∩ ¼ÑΓ«¬. Å« ñ«ú«ó«αÑ¡¡«ßΓ¿
- ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ ¼ÑΓ¬¿ ß¿¼ó«½¿º¿απÑΓ »πßΓπε ∩τÑ⌐¬π ¼áßß¿óá *
- void label_init()
- {
- register int t;
-
- for(t=0; t<NUM_LAB; ++t) label_table[t].name[0]='\0';
- }
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá IF */
- void exec_if()
- {
- int x , y, cond;
- char op;
- get_exp(&x); /* »«½πτ¿Γ∞ ½Ñó«Ñ óδαáªÑ¡¿Ñ */
- get_token(); /* »«½πτ¿Γ∞ «»ÑαáΓ«α */
- if(!strchr("=<>", *token)) {
- serror(0); /* ¡Ññ«»πßΓ¿¼δ⌐ «»ÑαáΓ«α */
- return;
- }
- op=*token;
- get_exp(&y); /* »«½πτ¿Γ∞ »αáó«Ñ óδαáªÑ¡¿Ñ */
- /* Ä»αÑñѽѡ¿Ñ αѺπ½∞ΓáΓá */
- cond=0;
- switch(op) {
- case '=':
- if(x==y) cond=1;
- break;
- case '<':
- if(x<y) cond=1;
- break;
- case '>':
- if(x>y) cond=1;
- break;
- }
- if(cond) { /* Ñß½¿ º¡áτÑ¡¿Ñ IF "¿ßΓ¿¡á" */
- get_token();
- if(tok!=THEN) {
- serror(8);
- return;
- } /* ¿¡áτÑ, »α«úαá¼¼á óδ»«½¡∩ÑΓß∩ ß« ß½ÑñπεΘÑ⌐ ßΓ᫬¿ */
- }
- else find_eol(); /* »«¿ß¬ Γ«τ¬¿ ßΓáαΓá »α«úαá¼¼δ */
- }
-
- /* ÉÑ὿ºáµ¿∩ µ¿¬½á FOR */
- void exec_for()
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 46 --
-
-
- {
- struct for_stack i;
- int value;
-
- get_token(); /* »«½πτ¿Γ∞ π»αáó½∩εΘπε »ÑαѼѡ¡πε */
- if(!isalpha(*token)); {
- serror(4);
- return;
- }
- i.var=toupper(*token)-'A'; /* ß«σαá¡¿Γ∞ ÑÑ ¿¡ñÑ¬ß */
- get_token(); /* »«½πτ¿Γ∞ º¡á¬ αáóÑ¡ßΓóá */
- if(*token!='=') {
- serror(3);
- return;
- }
- get_exp(&value); /* »«½πτ¿Γ∞ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ */
- variables[i.var]=value;
-
- get_token();
- if(tok!=TO) serror(9); /* Ñß½¿ ¡ÑÑ ¡áΦ½¿ TO */
- get_exp(&i.target); /* »«½πτ¿Γ∞ ¬«¡Ñτ¡«Ñ º¡áτÑ¡¿Ñ */
-
- /* àß½¿ µ¿¬½ óδ»«½¡∩ÑΓß∩ »«ß½Ññ¡¿⌐ αáº, »«¼ÑßΓ¿Γ∞
- ¿¡Σ«α¼áµ¿ε ó ßΓѬ */
- if(value>=variables[i.var]) {
- i.loc = prog;
- fpush(i);
- }
- else /* »α«»πßΓ¿Γ∞ óÑß∞ µ¿¬½ */
- while(tok!=NEXT) get_token();
- }
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá NEXT */
- void next()
- {
- struct for_stack i;
- i = fpop(); /* τΓÑ¡¿Ñ ¿¡Σ«α¼áµ¿¿ « µ¿¬½Ñ */
-
- variables[i.var]++; /* πóѽ¿τÑ¡¿Ñ π»αáó½∩εΘÑ⌐ »ÑαѼѡ¡«⌐*/
- if(variables[i.var]>i.target) return; /* ¬«¡Ñµ µ¿¬½á */
- fpush(i); /* ¿¡áτÑ, ß«σαá¡¿Γ∞ ¿¡Σ«α¼áµ¿ε ó ßΓÑ¬Ñ */
- prog = i.loc; /* µ¿¬½ */
- }
-
- /* Å«¼ÑßΓ¿Γ∞ ¿¡Σ«α¼áµ¿ε ó ßΓѬ FOR */
- void fpush(i)
- struct for_stack i;
- {
- if(ftos>FOR_NEST)
- serror(10);
- fstack[ftos]=i;
- ftos++;
- }
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 47 --
-
-
- struct for_stack fpop()
- {
- ftos--;
- if(ftos<0) serror(11);
- return(fstack[ftos]);
- }
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá INPUT */
- void input()
- {
- char str[80], var;
- int i;
-
- get_token(); /*»α«ß¼áΓα¿óáÑΓß∩ Ñß½¿ ßπΘÑßΓóπÑΓ ßΓ᫬á ß¿¼ó«½«ó*/
- if(token_type==QUOTE) {
- printf(token); /* Ñß½¿ ñá, Γ« ÑÑ »ÑτáΓ∞ ¿ ¬«¡Γα«½∞ ',' */
- get_token();
- if(*token!=',') serror(1);
- get_token();
- }
- else printf("? "); /* óδñáτá ßΓ᫬¿ »« π¼«½τá¡¿ε */
- var = toupper(*token)-'A'; /* »«½πτ¿Γ∞ ¿¡ñÑ¬ß ¿¼Ñ¡¿ »ÑαѼѡ¡«⌐*
- scanf("%d",&i); /* τΓÑ¡¿Ñ óó«ñá ñá¡¡δσ */
- variables[var] = i; /* ß«σαá¡Ñ¡¿Ñ ñá¡¡δσ */
- }
-
- /* ÉÑ὿ºáµ¿∩ «»ÑαáΓ«αá GOSUB */
- void gosub()
- {
- char *loc;
-
- get_token();
- /* »«¿ß¬ ¼ÑΓ¬¿ ó맮óá */
- loc = find_label(token);
- if(loc=='\0')
- serror(7); /* ¼ÑΓ¬á ¡Ñ «»αÑñѽѡá */
- else {
- gpush(prog); /* ºá»«¼¡¿¼ ¼ÑßΓ«, ¬πñá óÑα¡Ñ¼ß∩ */
- prog = loc; /* ßΓáαΓ »α«úαá¼¼δ ß π¬áºá¡¡«⌐ Γ«τ¬¿ */
- }
- }
-
- /* 髺óαáΓ ¿º »«ñ»α«úαá¼¼δ, óδºóδ¡¡«⌐ »« GOSUB */
- void greturn()
- {
- prog = gpop();
- }
-
- /* Å«¼ÑΘáÑΓ ñá¡¡δÑ ó ßΓѬ GOSUB */
- void gpush(s)
- char *s;
- {
- gtos++;
- if(gtos==SUB_NEST) {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 48 --
-
-
- serror(12);
- return;
- }
- gstack[gtos]=s;
- }
-
- /* */
- char *gpop()
- {
- if(gtos==0) {
- serror(13);
- return;
- }
- return(gstack[gtos--]);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 49 --
-
-
- ÅÉêîàÉ êæÅÄï£çÄéÇìêƒ êìÆàÉÅÉàÆÇÆÄÉÇ SMALL BASIC
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞ óδ ¼«ªÑΓÑ ºá»π߬áΓ∞ »α«ßΓÑ⌐Φ¿Ñ BASIC-»α«úαá¼¼δ.
-
-
- PRINT "¥Γá »α«úαá¼¼á ñѼ«¡ßΓα¿απÑΓ óßÑ ¬«¼á¡ñδ."
- FOR X = 1 TO 100
- PRINT X, X/2; X, X*X
- NEXT
- GOSUB 300
- PRINT "Åα¿óÑΓ"
- INPUT H
- IF H<11 THEN GOTO 200
- PRINT 12-4/2
- PRINT 100
- 200 A = 100/2
- IF A>10 THEN PRINT "éßÑ ¡«α¼á½∞¡«"
- PRINT A
- PRINT A+34
- INPUT H
- PRINT H
- INPUT "¥Γ« ΓÑßΓ",y
- PRINT H+Y
- END
- 300 PRINT "¥Γ« »«ñ»α«úαá¼¼á"
- RETURN
-
-
-
- PRINT "¥Γá »«ñ»α«úαá¼¼á ñѼ«¡ßΓα¿απÑΓ ó½«ªÑ¡¡δ⌐ GOSUB"
- INPUT "éóÑñ¿ΓÑ τ¿ß½«: ", i
- GOSUB 100
-
- END
-
- 100 FOR T = 1 TO I
- X = X+I
- GOSUB 150
- NEXT
- RETURN
-
- 150 PRINT X;
- RETURN
-
-
- print "¥Γá »«ñ»α«úαá¼¼á óδτ¿ß½∩ÑΓ «íΩѼ ¬πíá "
- input "éóÑñ¿ΓÑ ñ½¿¡π »áαó«⌐ ßΓ«α«¡δ: ", l
- input "éóÑñ¿ΓÑ ñ½¿¡π óΓ«α«⌐ ßΓ«α«¡δ: ", w
- input "éóÑñ¿ΓÑ ñ½¿¡π ΓαÑΓÑ⌐ ßΓ«α«¡δ: ", d
- t = l * w * d
- print "Äí∞Ѽ αáóÑ¡: ", t
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 50 --
-
-
- PRINT "¥Γá »α«úαá¼¼á ñѼ«¡ßΓα¿απÑΓ ó½«ªÑ¡¡δÑ µ¿¬½δ"
- FOR X = 1 TO 100
- FOR Y = 1 TO 10
- PRINT X; Y; X*Y
- NEXT
- NEXT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá VII -- 51 --
-
-
- ÉÇæÿêÉàìàêà éÄçîÄåìÄæÆàë êìÆàÉÅÉàÆÇÆÄÉÇ
- -----------------------------------------------------------------
-
- Äß¡«ó¡δ¼ »π¡¬Γ«¼ αáßΦ¿αÑ¡¿∩ Σπ¡¬µ¿⌐ ¿¡ΓÑα»αÑΓáΓ«αá ¿ ¿σ
- ¼«ñ¿Σ¿¬áµ¿¿ ∩ó½∩ÑΓß∩ «úαá¡¿τÑ¡¡«ßΓ∞ Ñú« ½¿Φ∞ 󫺼«ª¡«ßΓ∞ε
- ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ ∩ºδ¬ BASIC. Äß¡«ó¡á∩ ¼áßßá ΓÑσ¡¿τÑ߬¿σ »α¿Ñ¼«ó,
- «»¿ßá¡¡δσ ó φΓ«⌐ ú½áóÑ, ¼«ªÑΓ ¿ß»«½∞º«óáΓß∩ »α¿ ß«ºñá¡¿¿
- ¿¡ΓÑα»αÑΓáΓ«α«ó ñ½∩ αẽ¿τ¡δσ »α«µÑñπα¡δσ ∩ºδ¬«ó
- »α«úαá¼¼¿α«óá¡¿∩. Å«Γ«¼π óδ, ó »α¿¡µ¿»Ñ, ¼«ªÑΓÑ αáºαáí«ΓáΓ∞ ßó«⌐
- ∩ºδ¬, πτ¿ΓδóáεΘ¿⌐ óáΦ óºú½∩ñ ¡á »α«úαá¼¼¿α«óá¡¿Ñ ¿ óáΦ ßΓ¿½∞
- »α«úαá¼¼¿α«óá¡¿∩.
-
- ä«»«½¡¿Γѽ∞¡δÑ ¬«¼á¡ñδ ¿ ß««ΓóÑΓßΓóπεΦ¿Ñ ¿¼ «ß¡«ó¡δÑ Σ«α¼áΓδ
- ½Ñ¬ßѼ «»¿ßá¡δ ó φΓ«⌐ ú½áóÑ. ä½∩ ¿ß»«½∞º«óá¡¿∩ αẽ¿τ¡δσ
-
- ñ«»«½¡¿Γѽ∞¡δσ Γ¿»«ó »ÑαѼѡ¡δσ óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ¼áßß¿óδ
- ßΓαπ¬Γπα ñ½∩ σαá¡Ñ¡¿∩ Γᬿσ »ÑαѼѡ¡δσ; «ñ¡« ¿º »«½Ñ⌐ φΓ«⌐
- ßΓαπ¬Γπαδ ñ«½ª¡« ¿¡ñ¿µ¿α«óáΓ∞ Γ¿» »ÑαѼѡ¡«⌐, á «ßΓá½∞¡δÑ »«½∩
- »αÑñ¡áº¡áτÑ¡δ ñ½∩ σαá¡Ñ¡¿∩ º¡áτÑ¡¿⌐ φΓ¿σ »ÑαѼѡ¡δσ. ä½∩
- ¿ß»«½∞º«óá¡¿∩ ßΓα«τ¡δσ »ÑαѼѡ¡δσ óá¼ ¡Ñ«íσ«ñ¿¼« πßΓá¡«ó¿Γ∞
- Γáí½¿µπ ßΓ᫬. Åα«ßΓÑ⌐Φ¿¼ »πΓѼ αÑ὿ºáµ¿¿ ßΓ᫬ Σ¿¬ß¿α«óá¡¡«⌐
- ñ½¿¡δ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ Σ¿¬ß¿α«óá¡¡δσ πτáßΓ¬«ó »á¼∩Γ¿ ó 255
- íá⌐Γ ñ½∩ αẼÑΦÑ¡¿∩ ßΓ᫬.
-
- ê »«ß½Ññ¡∩∩ ¼δß½∞: Γ¿»δ «»ÑαáΓ«α«ó, ¬«Γ«αδÑ óδ ¼«ªÑΓÑ
- ¿¡ΓÑα»αÑΓ¿α«óáΓ∞, «úαá¡¿τÑ¡δ ½¿Φ∞ óáΦÑ⌐ Σá¡ΓếÑ⌐.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó