ÃÖ±Ù¿¡ ¸Å¿ì Èï¹Ì·Î¿î ÆäÀÌÆÛ¸¦ ¹ß°ßÇß½À´Ï´Ù. ±×·¡¼ ±×°Í¶§¹®¿¡ ÅغÏÀб⸦ Àá±ñµ¿¾È Áß´ÜÇß½À´Ï´Ù. Áß´ÜÇÒ ÃæºÐÇÑ ÀÌÀ¯°¡ ÀÖ´Â ÆäÀÌÆÛÀÔ´Ï´Ù.
FIFO and LIFO sing the BLUes, Kees van der Laan, MAPS 92.2 (revision March 1996)
|
ÁÖ·Î ¸®½ºÆ® 󸮿¡ ´ëÇÑ Å×Å©´Ð(
TeXnique) ³»¿ëÀ» ´ã°í ÀÖ´Â ÆäÀÌÆÛÀÔ´Ï´Ù. ¿©±â¼ÀÇ ¸®½ºÆ® ó¸® ±â¹ý(Å×Å©´Ð)À̶ó ÇÔÀº º°°Í¾Æ´Õ´Ï´Ù. ¿ì¸®°¡ ÀÌ¹Ì ¾Ë°í ÀÖ´Â "²¿¸®Àç±Í±â¹ý"À̶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ²¿¸®Àç±Í±â¹ýÀÌ ÇÏ´Â ÀÏÀÌ ÁÖ¾îÁø ÀÎÀÚ¿¡¼ ±× ÀÎÀÚ¸¦ ±¸¼ºÇÏ´Â ÅäÅ«µéÀ» ÇϳªÇϳª¾¿ ó¸®ÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. ¿©±â¼ ÀÎÀÚ¸¦ ¸®½ºÆ®¶ó°í ÇÏ°í, ÅäÅ« °¢°¢À» ¸®½ºÆ® ¿ä¼Ò(list element)¶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.
ÆäÀÌÆÛÀÇ Á¦¸ñ¿¡ ³ª¿ÍÀÖ´Â "
FIFO"¶ó ÇÔÀº "
First
In
First
Out"ÀÇ ¾àÀÚÀÔ´Ï´Ù. ¿ì¸®¸»·Î ÇÏÀÚ¸é,
¸ÕÀú µé¾î¿Â ³ðÀ» ¸ÕÀú ³»º¸³½´Ù´Â ¶æÀÔ´Ï´Ù. Áï ¾î¶² ¸ÅÅ©·Î¿Í ±×ÀÇ ÀÎÀÚ·Î ¸®½ºÆ®°¡ ÁÖ¾îÁ³À»¶§, ¸®½ºÆ®ÀÇ ¿ä¼ÒµéÀÌ Â÷·Ê·Î ¸ÅÅ©·Î¿¡ Àû¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦µé¾î, \foo abc\oof°¡ ÀÖÀ»¶§, ¸¸¾à \foo°¡ FIFOÀÇ ²¿¸®Àç±Í±â¹ýÀ¸·Î ±¸ÇöµÈ ¸ÅÅ©·Î¶ó¸é, ±× ¸ÅÅ©·ÎÀÇ ¶æÀº ´ÙÀ½°ú °°½À´Ï´Ù.
´Ù½Ã ÇÑ ¹ø ¼³¸íÇÏÀÚ¸é, ¸ÅÅ©·Î \foo¿¡ 'abc'¶ó´Â ¸®½ºÆ®°¡ ÀÔ·Â ½ºÆ®¸²(stream)À¸·Î µé¾î¿À¸é \foo´Â µé¾î¿À´Â ¼ø¼´ë·Î ó¸®ÇÏ¿© ³»º¸³½´Ù´Â ÀǹÌÀÔ´Ï´Ù. ½¬¿î ³»¿ëÀÏÁöµµ ¸ð¸£´Âµ¥, ÀÛÀº³ª¹«°¡ ³Ê¹« ÀåȲÇÏ°Ô ¼³¸íÇÏ´Â °ÍÀº ¾Æ´Ñ°¡ ¸ð¸£°Ú½À´Ï´Ù.
±×·¸´Ù¸é, ÆäÀÌÆÛ Á¦¸ñ¿¡ ³ª¿ÍÀÖ´Â ´Ù¸¥ ÀÌ»óÇÑ ´Ü¾î "
LIFO"´Â ¹«½¼ ¶æÀϱî¿ä? FIFO¸¦ ÈùÆ®»ï¾Æ »ý°¢Çغ¸¼¼¿ä.
±×·¸ÁÒ. ¹Ù·Î "
Last
In
First
Out"ÀÇ ¾àÀÚÀÔ´Ï´Ù. LIFO¸¦ Àû¿ëÇϸé \foo abc\oof´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
ÀÌÁ¦ ¾îÈÖ¿Í °³³ä¿¡ ´ëÇÑ ±âº»Áö½ÄÀº ¸ðµÎ °®Ãß¾ú½À´Ï´Ù. º»°ÝÀûÀ¸·Î ½ÃÀÛÇÏ°Ú½À´Ï´Ù. ÀÛÀº³ª¹«°¡ ÀÌ ÆäÀÌÆÛ¿¡ ¸Å·áµÈ °ÍÀº ±âÁ¸ÀÇ ¾Ë°íÀÖ´ø ²¿¸®Àç±Í±â¹ýÀÌ ³Ê¹«µµ ¿¤·¹°½ºÇÏ°í È¿À²ÀûÀ¸·Î ±¸ÇöµÇ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ ÆäÀÌÆÛ¿¡¼ ¸»ÇÏ´Â FIFO°¡ Àû¿ëµÈ ²¿¸®Àç±Í±â¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
\def\fifo#1{\ifx\ofif#1\ofif\fi
\process#1\fifo}
\def\ofif#1\fifo{\fi}
¿ì¸®°¡ ±âÁ¸¿¡ ¾Ë°íÀÖ´ø ²¿¸®Àç±Í±â¹ý°ú Á¤È®È÷ µ¿ÀÏÇÑ ÀÏÀ» ÇÕ´Ï´Ù. ¿ÀÈ÷·Á "\let\next=\foo"ÀÌ·± ½ÄÀÇ ÇÒ´ç¹®(assignment statement)ÀÌ ÇÊ¿ä¾ø½À´Ï´Ù. ÀÌ ¹æ¹ýÀÌ ±âÁ¸ÀÇ ¹æ¹ýº¸´Ù °£´ÜÇÏ¸é¼ È¿À²ÀûÀ̶ó°í ÇÕ´Ï´Ù. ±×¸®°í ÀÌ \fifoÀÇ ÀÀ¿ëÀ¸·Î ´Ü¾îµéÀ» ó¸®ÇÏ´Â ¹æ¹ýÀº ¾î¶»°Ô ÇÏ¸é µÉ±î¿ä? ÀÌÀü¿¡ ÀÛÀº³ª¹«°¡ ÀÛ¼ºÇÑ
TeX ¸ÅÅ©·Î ÀÛ¼º ±â¹ýÀ̶ó´Â ±ÛÀ» º¸¸é, ²¿¸®Àç±Í±â¹ý°ú µ¿ÀÏÇÏ°í ½ºÆäÀ̽º¸¸À¸·Î ±¸ºÐÇß´ø °ÍÀ» ¾Ë¼ö ÀÖ½À´Ï´Ù. ¸¶Âù°¡Áö·Î ¿©±â¼µµ ½ºÆäÀ̽º¸¦ ±¸ºÐÀÚ(delimeter)·Î »ç¿ëÇÏ¸é µË´Ï´Ù. ´ÙÀ½°ú °°½À´Ï´Ù.
\def\fifow#1 {\ifx\wofif#1\wofif\fi
\processw{#1}\ \fifow}
\def\wofif#1\fifow{\fi}
±âÁ¸ÀÇ ¹æ¹ýº¸´Ù ´Ü¼ø ¸í·áÇÕ´Ï´Ù. À§ µÎ°³ÀÇ ¸ÅÅ©·Î¿¡¼ \process, \processw¸¸ ÇÏ°íÀÚ ÇÏ´Â ÀÏÀÇ ¸ñÀû¿¡ ¸Â°Ô ±¸ÇöÇØ ÁÖ¸é µË´Ï´Ù. ½±°í °£´ÜÇÕ´Ï´Ù.
±×·¯¸é À§ÀÇ µÎ°³ÀÇ ¸ÅÅ©·Î¸¦ °¡Áö°í ÅØºÏ 67ÆäÀÌÁöÀÇ ¿¬½À¹®Á¦11.5°¡ ¾ó¸¶³ª ½±°Ô ÇØ°áµÇ´ÂÁö º¸°Ú½À´Ï´Ù. ±× ¿¬½À¹®Á¦¸¦ ¾à°£ °£·«È Çϸé, ´ÙÀ½°ú °°½À´Ï´Ù. \demobox¶ó´Â ¸ÅÅ©·Î¸¦ Á¤Çϴµ¥,
¶ó°í ÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ ¾ò´Â ¸ÅÅ©·ÎÀÔ´Ï´Ù.
Àß »ìÆ캸½Ã¸é, ¿ì¼± ´Ü¾îº°·Î ó¸®ÇÏ°í, ±× ´ÙÀ½¿¡ °¢ ´Ü¾îÀÇ ±ÛÀÚ¸¶´Ù ¹Ú½º¸¸ ±×·ÁÁÖ¸é µÇ´Â °ÍÀÔ´Ï´Ù. µû¶ó¼ À§ÀÇ µÎ°³ÀÇ ¸ÅÅ©·Î \fifo...\ofif ¿Í \fifow...\wofif °¡ »ç¿ëµÇ´Â °ÍÀÔ´Ï´Ù. ÀÌÁ¦ \process¿Í \processw¸¸ Á¤ÀÇÇϸé ÇØ°áµÇ´Âµ¥, À̶ÇÇÑ ½¬¿ö¼ °¢ ±ÛÀÚ¸¦ ó¸®ÇÏ´Â \process°¡ ÇÒ ÀÏÀº
±× ±ÛÀÚ¸¦ µÑ·¯½Î´Â ¹Ú½º¸¦ ±×¸®´Â ÀÏÀÌ°í, \processw°¡ ÇÒ ÀÏÀº ÁÖ¾îÁø ÀÎÀÚ¿¡¼ ´Ü¾î¸¶´Ù \fifo#1\ofif¸¦ È£ÃâÇÏ¸é µË´Ï´Ù. Áï, °¢ ´Ü¾î¸¶´Ù ¹Ú½º¸¦ ±×¸®´Â ¸ÅÅ©·Î¸¦ È£ÃâÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. !!!
¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù. (
DohyunKim´ÔÀÌ ÁöÀûÇØÁֽŠ°Í°ú Á¦½ÃÇØ ÁֽŠÇØ°áÃ¥À¸·Î ¼Ò½º¸¦ ÀϺΠ¼öÁ¤ÇÏ¿´½À´Ï´Ù.)
\def\fifo#1{\ifx\ofif#1\ofif\fi
\process#1\fifo}
\def\ofif#1\fifo{\fi}
\def\fifow#1 {\ifx\wofif#1\wofif\fi
\processw{#1}\ \fifow}
\def\wofif#1\fifow{\fi}
\def\processw#1{\fifo#1\ofif}
\def\process#1{\boxit#1}
\def\boxit#1{\setbox0=\hbox{#1}
\hbox{\lower\dp0
\vbox{\offinterlineskip\hrule
\hbox{\vrule\phantom#1\vrule}\hrule}
}
}
\def\demobox#1{\leavevmode\fifow #1 \wofif \unskip{} }
\demobox{Tough exercise}
¹®Á¦¸¦ ¿ø·¡ÀÇ ¹®Á¦¿¡¼ ¾à°£ °£·«È Çϱä ÇßÁö¸¸, Knuth°¡ Á¦½ÃÇÑ ¿ø·¡ Çش亸´Ù ¸¹ÀÌ °£´ÜÇØ Áø°ÍÀ» È®ÀÎÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
¸¶Áö¸·À¸·Î LIFO¸¦ Àû¿ëÇÑ ¸ÅÅ©·Î \lifo...\ofil´Â ¾î¶»°Ô ±¸ÇöÇÏ¸é µÉ±î¿ä? ÇÑ ¹ø Çغ¸¼¼¿ä.
ÈùÆ®: \fifo...\ofif ¸¦ Á¶±Ý¸¸ ¹Ù²Ù¸é µË´Ï´Ù. \process¸¦ ¾ðÁ¦ ½ÇÇàÇÏ´À³Ä°¡ ¹®Á¦ÀÔ´Ï´Ù.