6-2.Çì´õ ÆÄÀÏ

6-2-°¡.ÇÔ¼öÀÇ ¿øÇü

ÇÔ¼öÀÇ ¿øÇüÀ» ÀÌÇØÇϱâ À§Çؼ­´Â C ÄÄÆÄÀÏ·¯ÀÇ ÄÄÆÄÀÏ ¹æ½Ä¿¡ ´ëÇØ ¾Ë¾Æ¾ß ÇÑ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÇØ¼® ¹æ½Ä¿¡ µû¶ó ÀÎÅÍÇÁ¸®ÅÍ ¹æ½Ä°ú ÄÄÆÄÀÏ ¹æ½ÄÀ¸·Î ³ª´©¾îÁö´Âµ¥ ÄÄÆÄÀÏ ¹æ½ÄÀÌ ÈξÀ ´õ ¼º´ÉÀÌ ÁÁ±â ¶§¹®¿¡ ´ëºÎºÐÀÇ ¾ð¾î°¡ ÄÄÆÄÀÏ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù. C¾ð¾îµµ ¹°·Ð ÄÄÆÄÀÏ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù.

ÄÄÆÄÀÏ ¹æ½ÄÀº ¼Ò½º¸¦ ÀÐ¾î ±â°è¾î·Î ÇѲ¨¹ø¿¡ ¹ø¿ªÇÏ´Â ¹æ½ÄÀε¥ ¹ø¿ªÀ» ¸î ¹ø¿¡ ³ª´©¾î ÇÏ´À³Ä¿¡ µû¶ó 1ÆÐ½º, 2ÆÐ½º µîÀ¸·Î ±¸ºÐµÈ´Ù. ÇÑ ¹ø Á× Àо ¹ø¿ªÀ» ´Ù ÇØ ³»¸é 1ÆÐ½º (one pass)¹æ½ÄÀ̶ó°í Çϸç ÇÑ ¹ø Àо ÄÄÆÄÀÏ Áغñ¸¦ ÇÑ ÈÄ ´Ù½Ã ÀÐÀ¸¸é¼­ ±â°è¾î ÄÚµå·Î ¹Ù²Ù´Â ¹æ½ÄÀ» 2ÆÐ½º ¹æ½ÄÀ̶ó°í ÇÑ´Ù. 2ÆÐ½º ¹æ½ÄÀÇ ´ëÇ¥ÀûÀÎ ¿¹°¡ ¾î¼Àºí·¯Àε¥ ¼Ò½º»óÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â ·¹À̺íÀ» ½ÇÁ¦ ¹øÁö·Î ¹Ù²Ù±â À§ÇØ Ã³À½ºÎÅÍ ³¡±îÁö ¼Ò½º¸¦ ÀÐ¾î ·¹À̺íÀÇ ¹øÁö¸¦ ¹Ì¸® ÆÄ¾ÇÇÑ ÈÄ ´Ù½Ã óÀ½ºÎÅÍ ÀÐÀ¸¸é¼­ ±â°è¾î ÄÚµå·Î ¹ø¿ªÇÑ´Ù. ¾î¼Àºí·¯´Â ÀÌ·± ½ÄÀ¸·Î ¼Ò½º¸¦ µÎ ¹ø ÀÐÁö ¾ÊÀ¸¸é ÄÄÆÄÀÏÀÌ ºÒ°¡´ÉÇÏ´Ù.

3ÆÐ½º ¹æ½ÄÀ» äÅÃÇÏ´Â ¾ð¾îµµ ÀÖ°í µð½º ¾î¼Àºí·¯µéÀº 5ÆÐ½º ¹æ½Ä±îÁöµµ »ç¿ëÇÑ´Ù. ¾ð¾î°¡ º¹ÀâÇØÁú¼ö·Ï ÆÐ½º ¼ö°¡ ´Ã¾î³ª¸ç »ç¿ëÇÏ´Â ¸Þ¸ð¸®´Â ¸¹¾ÆÁö°í ÄÄÆÄÀÏ ¼Óµµ´Â ¶³¾îÁø´Ù. ÃʱâÀÇ C ÄÄÆÄÀÏ·¯µéÀº ÄÄÆÄÀÏ ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ Åë»ó 1ÆÐ½º ¹æ½ÄÀ» ¸¹ÀÌ Ã¤ÅÃÇß¾ú´Ù. C´Â ´Ù¸¥ ¾ð¾îº¸´Ù ¹®¹ý ±¸Á¶°¡ º¹ÀâÇØ¼­ ÄÄÆÄÀÏ ¼Óµµ°¡ ´À¸° ÆíÀ̶ó ÆÐ½º¸¦ ¿©·¯ ¹ø ÇÒ ¼ö°¡ ¾ø¾ú´Ù. ±×·¡¼­ C ¼Ò½º´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ÀÐÈ÷´Â Á·Á· ±â°è¾î·Î ¹ø¿ªµÈ´Ù.

¹°·Ð ÃÖ±ÙÀÇ CÄÄÆÄÀÏ·¯µéÀº 1ÆÐ½º°¡ ¾Æ´Ñ °Íµéµµ ÀÖÁö¸¸ ÃʱâÀÇ ÄÄÆÄÀÏ·¯µéÀÌ 1ÆÐ½º ¹æ½ÄÀ¸·Î ÀÛ¼ºµÇ¾ú±â ¶§¹®¿¡ CÇ¥ÁØÀº ÀÌ·± ÄÄÆÄÀÏ·¯¸¦ À§ÇØ ÇÑ ¹ø¿¡ ¼Ò½º¸¦ ÀÐÀ» ¼ö ÀÖ´Â ÀåÄ¡¸¦ ¸¶·ÃÇÒ Çʿ䰡 ÀÖ¾ú´Ù. ÀÌ·¯ÇÑ CÀÇ 1ÆÐ½º ¹æ½Ä ¶§¹®¿¡ ÇÔ¼öÀÇ ¿øÇüÀ̶ó´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. ¿øÇü(ProtoType)À̶õ ÇÔ¼ö¿¡ ´ëÇÑ Á¤È®ÇÑ Á¤º¸¶ó´Â ¶æÀÌ¸ç ¸®ÅÏ Å¸ÀÔ, ÇÔ¼ö À̸§, Àμö ¸®½ºÆ® µîÀÇ Á¤º¸µé·Î ±¸¼ºµÈ´Ù. ¿øÇüÀ̶ó´Â °ÍÀÌ ¿Ö ÇÊ¿äÇÑÁö ¾Õ¿¡¼­ ¸¸µé¾ú´ø Max ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ ´Ù½Ã ÀÛ¼ºÇØ º¸ÀÚ.

 

¿¹ Á¦ : MaxFunc2

#include <Turboc.h>

 

void main()

{

     int a,b,m;

 

     printf("µÎ ¼ö¸¦ ÀÔ·ÂÇϼ¼¿ä : ");

     scanf("%d%d",&a,&b);

     m=Max(a,b);

     printf("µÎ ¼ö Áß Å« °ªÀº %dÀÔ´Ï´Ù.\n",m);

}

 

int Max(int a, int b)

{

     if (a > b) {

          return a;

     } else {

          return b;

     }

}

 

¿ø·¡ ¿¹Á¦¿¡ ºñÇØ main, Max ÇÔ¼öÀÇ ¼ø¼­°¡ ¹Ù²î¾úÀ» »Ó ÄÚµå´Â µ¿ÀÏÇÏ´Ù. ¿ø·¡ ¿¹Á¦¿¡¼­´Â Max ÇÔ¼ö¸¦ ¸ÕÀú Á¤ÀÇÇϰí main ÇÔ¼ö°¡ ±× µÚ¿¡ ÀÖ¾úÀ¸³ª À̹ø¿¡´Â ¹Ý´ë·Î µÇ¾î ÀÖ´Ù. ÀÌ ¿¹Á¦¸¦ ÄÄÆÄÀÏÇÏ¸é ´ÙÀ½ µÎ°¡Áö ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.

 

CExam.cpp(9) : error C2065: 'Max' : undeclared identifier

CExam.cpp(14) : error C2373: 'Max' : redefinition; different type modifiers

 

ù ¹øÂ° ¿¡·¯´Â main ÇÔ¼öÀÇ Áß°£Âë¿¡ ÀÖ´Â Max¶ó´Â ¸íĪÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò´Ù´Â ¶æÀÌ´Ù. 1ÆÐ½º ¹æ½ÄÀ¸·Î ¼Ò½º¸¦ ¼ø¼­´ë·Î ¹ø¿ªÇϹǷΠMax ÇÔ¼öº¸´Ù´Â main ÇÔ¼ö¸¦ ¸ÕÀú ¹ø¿ªÇϴµ¥ main ÇÔ¼öÀÇ m=Max(a,b)¸¦ ¹ø¿ªÇÏ´Â ½ÃÁ¡¿¡¼­´Â Max°¡ ÇÔ¼öÀÎÁö, º¯¼öÀÎÁö Á¶Â÷µµ ¾ÆÁ÷ ÆÄ¾ÇÀÌ ¾ÈµÈ »óÅÂÀÌ´Ù. ±×·¡¼­ Max°¡ ¹«¾ùÀÎÁö ¸ð¸£°Ú´Ù´Â ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµÇ´Â °ÍÀÌ´Ù.

ÄÄÆÄÀÏ·¯°¡ ¾ÆÁ÷ ÀÌÇØÇÏÁö ¸øÇÏ´Â ÇÔ¼ö È£Ãâ¹®À» ¸¸³µÀ¸¹Ç·Î ÀÌ »óÅ¿¡¼­´Â ÄÄÆÄÀÏÇÒ ¼ö ¾øÀ¸¸ç Max¶ó´Â ¸íĪ¿¡ ´ëÇØ ¿¡·¯·Î ±â·ÏÇÒ °ÍÀÌ´Ù. µÎ ¹øÂ° ¿¡·¯ ¸Þ½ÃÁö´Â ¾Õ¿¡¼­ ÀÌÇØÇÏÁö ¸øÇß´ø Max¶ó´Â ¸íĪÀ» ´Ù½Ã ÇÔ¼ö·Î Á¤ÀÇÇϰí ÀÖÀ¸¹Ç·Î Áߺ¹ Á¤ÀÇÇß´Ù´Â ¶æÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â óÀ½ º¸´Â ¸íĪ¿¡ ´ëÇØ ³»ºÎÀûÀÎ µðÆúÆ®¸¦ °¡Á¤Çϴµ¥ ÀÌ µðÆúÆ®¿Í ´Ù¸£°Ô ¼±¾ðµÇ¾ú´Ù´Â ºÒ¸¸ Ç¥½ÃÀÌ´Ù.

ÀÌ ¿¡·¯ ¸Þ½ÃÁöµéÀÌ Ãâ·ÂµÇ´Â ¿øÀÎÀº C ÄÄÆÄÀÏ·¯°¡ 1ÆÐ½º ¹æ½ÄÀ¸·Î ¼Ò½º¸¦ ÇØ¼®Çϱ⠶§¹®ÀÌ´Ù. ÃÖÃÊ main¿¡¼­ Max¶ó´Â ¸íĪÀ» ¸¸³µÀ» ¶§ ¼Ò½ºÀÇ µÚÂÊÀ» ¹Ì¸® ÀÐ¾î µÎ¾ú´Ù¸é Max°¡ ÇÔ¼ö¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÁö¸¸ ¼ø¼­´ë·Î µü ÇÑ ¹ø¸¸ Àб⠶§¹®¿¡ MaxÀÇ ½Çü¸¦ ÆÄ¾ÇÇÏÁö ¸øÇÏ´Â °ÍÀÌ´Ù. ÀÌ Çö»óÀ» Á» ´õ ½±°Ô ÀÌÇØÇÏ·Á¸é ´ÙÀ½ ¿¹¸¦ »ý°¢ÇØ º¸¸é µÈ´Ù.

 

i=3;

int i;

 

¼±¾ð°ú ´ëÀÔÀÇ ¼ø¼­°¡ ¹Ù²î¾î ÀÖÀ¸¹Ç·Î ¿¡·¯°¡ µÉ °ÍÀÓÀº ³Ê¹« ´ç¿¬ÇÏ´Ù. ¼ø¼­¸¦ ¹Ù²Ù¾î¾ß¸¸ Á¦´ë·Î ÄÄÆÄÀ쵃 °ÍÀÌ´Ù. ¹°·Ð ¸ð¸£´Â ¸íĪÀÌ ³ª¿ÔÀ» ¶§ µÚÂÊÀ» ¸ÕÀú ÀÐ¾î º¸µµ·Ï ÇÑ´Ù¸é ÀÌ·± Äڵ带 Á¦´ë·Î ÇØ¼®ÇÏ´Â ÄÄÆÄÀÏ·¯¸¦ ¸¸µé ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ·± ÄÄÆÄÀÏ·¯¸¦ ¸¸µç´Ù¸é º¹ÀâÇØÁö°í ÄÄÆÄÀÏ ¼Óµµµµ ´À·ÁÁú °ÍÀÌ¸ç ¿¹»óÄ¡ ¸øÇÑ ºÎÀÛ¿ëµµ »ý±æ ¼ö ÀÖÀ¸¹Ç·Î ¾Æ¿¹ ±ò²ûÇÏ°Ô ¿¡·¯·Î ó¸®ÇÏ´Â °ÍÀÌ´Ù. ¹®¹ýÀº Æí¸®ÇÑ °Íº¸´Ù´Â ¸í·áÇÑ °ÍÀÌ ÈξÀ ´õ ¹Ù¶÷Á÷ÇÏ´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº ¾ÆÁÖ °£´ÜÇÏ´Ù. ¿ø·¡ ÀÛ¼ºÇß´ø ¿¹Á¦Ã³·³ ÇÔ¼öÀÇ ¼ø¼­¸¦ ¹Ù²Ù¸é µÈ´Ù. mainº¸´Ù Max¸¦ ¸ÕÀú Á¤ÀÇÇϰí main¿¡¼­ Max¸¦ È£ÃâÇÑ´Ù¸é ÄÄÆÄÀÏ·¯°¡ Max¿¡ ´ëÇÑ Á¤ÀǸ¦ ¸ÕÀú º¸°Ô µÇ¹Ç·Î ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. main¿¡¼­ A¸¦ È£ÃâÇϰí A°¡ C, D¸¦ È£ÃâÇϰí C°¡ B¸¦ È£ÃâÇÑ´Ù¸é B-C-D-A-main ¼øÀ¸·Î ¹èÄ¡Çϸé ÀÏ´Ü ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö´Â ÀÖ´Ù. È£ÃâµÇ´Â ÇÔ¼ö°¡ Ç×»ó ¸ÕÀú ³ª¿À¸é µÈ´Ù.

±×·¯³ª ÀÌ·± ´Ü¼øÇÑ ¹æ¹ýÀ¸·Î´Â º¹ÀâÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱ⿡ ÇѰ谡 ÀÖ´Ù. ¿Ö³ÄÇϸé ÇÔ¼öÀÇ ¼ö°¡ ¸¹¾ÆÁö°í ÇÔ¼ö³¢¸® º¹ÀâÇÏ°Ô È£ÃâÇØ´î ¶§´Â ¼ø¼­¸¦ Á¤Çϱ⠹«Ã´ ¾î·Á¿öÁö±â ¶§¹®ÀÌ´Ù. ÇÔ¼ö°¡ 100°³¸¸ µÇ¾îµµ ¼ø¼­°¡ º¸Åë º¹ÀâÇØÁö´Â °ÍÀÌ ¾Æ´Ï´Ù. ¶ÇÇÑ »óÈ£ È£ÃâÀ̶ó´Â Ưº°ÇÑ ±â¹ýÀ» »ç¿ëÇÒ °æ¿ìµµ Àֱ⠶§¹®¿¡ ÇÔ¼öÀÇ ¼ø¼­¸¦ Á¶Á¤ÇÏ´Â °ÍÀº ÀϹÝÀûÀÎ ÇØ°áÃ¥ÀÌ µÇÁö ¸øÇÑ´Ù.

¿øÄ¢ÀûÀ¸·Î ÇÔ¼ö´Â »ç¿ëµÇ±â Àü¿¡ ¹Ì¸® ±× ÇüŸ¦ ÄÄÆÄÀÏ·¯°¡ ¾Ë ¼ö ÀÖµµ·Ï ÇØ¾ß Çϴµ¥ ±× ¹æ¹ýÀÌ ¹Ù·Î ¿øÇü(ProtoType)À» ¼±¾ðÇÏ´Â °ÍÀÌ´Ù. ÇÔ¼öÀÇ ¿øÇüÀ» ¹Ì¸® ¼±¾ðÇØ µÎ¸é º»Ã¼´Â µÚÂÊ¿¡ ÀÖ´õ¶óµµ ÇÔ¼ö È£ÃâºÎ¿¡¼­ ÀÌ ¸íĪÀÌ ÇÔ¼öÀÌ°í ¾î¶² Àμö¸¦ ¿ä±¸ÇÑ´Ù´Â °ÍÀ» ¹Ì¸® ¾Ë ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇÔ¼öÀÇ Á¤º¸¸¦ ¹Ì¸® ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë·Á ÁÖ´Â °ÍÀ» "¿øÇüÀ» ¼±¾ðÇÑ´Ù"¶ó°í ÇÑ´Ù. À§ ¿¹Á¦¸¦ ¿øÇüÀ» ¼±¾ðÇÏ¿© ¼öÁ¤ÇØ º¸¸é ´ÙÀ½°ú °°ÀÌ µÈ´Ù.

 

¿¹ Á¦ : MaxFunc3

#include <Turboc.h>

 

int Max(int a, int b);               // ¿øÇü ¼±¾ð

 

void main()

{

     int a,b,m;

 

     printf("µÎ ¼ö¸¦ ÀÔ·ÂÇϼ¼¿ä : ");

     scanf("%d%d",&a,&b);

     m=Max(a,b);               // ÀÌ¹Ì ¿øÇüÀÌ ¼±¾ðµÇ¾úÀ¸¹Ç·Î Max°¡ ÇÔ¼öÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.

     printf("µÎ ¼ö Áß Å« °ªÀº %dÀÔ´Ï´Ù.\n",m);

}

 

int Max(int a, int b)                // º»Ã¼´Â µÚÂÊ¿¡ ÀÖ´Ù.

{

     if (a > b) {

          return a;

     } else {

          return b;

     }

}

 

Max ÇÔ¼öÀÇ º»Ã¼¸¦ Á¤ÀÇÇϱâ Àü¿¡ main ÇÔ¼ö¿¡¼­ Max¸¦ È£ÃâÇϰí ÀÖÁö¸¸ main ÇÔ¼ö ÀÌÀü¿¡ MaxÀÇ ¿øÇüÀÌ ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î ÄÄÆÄÀÏ·¯´Â Max°¡ ÇÔ¼ö¶ó´Â °Í°ú ¾î¶² ŸÀÔÀÇ Àμö¸¦ ¿ä±¸ÇÏ´ÂÁö¸¦ ¹Ì¸® ÆÄ¾ÇÇÒ ¼ö ÀÖ´Ù. ¿ä¾àÇÏÀÚ¸é ¿øÇü ¼±¾ðÀÌ ÇÊ¿äÇÑ ÀÌÀ¯´Â C ÄÄÆÄÀÏ·¯°¡ 1ÆÐ½º ¹æ½ÄÀ» »ç¿ëÇÏ¸ç µü ÇÑ ¹ø Àо ¹ø¿ªÀ» Çϱ⠶§¹®¿¡ µÞºÎºÐ¿¡ ³ª¿Ã ÇÔ¼ö¿¡ ´ëÇÑ Á¤º¸¸¦ ¹Ì¸® Á¦°øÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù.