Chapter 3.       ÇÔ ¼ö

 

¡¼¾Ë°ÔµÇ´Â °Íµé¡½

¡× ³»ÀåÇÔ¼öÀÇ ÀÇ¹Ì¿Í »ç¿ë ¹æ¹ý

¡× »ç¿ëÀÚ Á¤ÀÇÇÔ¼ö Á¤ÀÇ¿Í È°¿ë

 

I.  ÇÔ¼ö¶õ?

 

 

ÇÔ¼ö´Â ´ÙÀ½ÀÇ °æ¿ì¿¡ ºñÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚµ¿Â÷ ȸ»ç ¾÷¹«°úÁ¤ÀÇ ÀϺθ¦ »ìÆì º¾½Ã´Ù. »çÀåÀÌ ÁöÁ¡º° ¿µ¾÷½ÇÀûÀ» ¾Ë°íÀÚ ÇÕ´Ï´Ù. »çÀåÀº ¿µ¾÷ºÎÀåÀ» ºÒ·¯¼­ ÆÇ¸Å±â·Ï ÀڷḦ °Ç³×ÁÖ°í ÁöÁ¡º° ¿µ¾÷½ÇÀûÀ» ÆÄ¾ÇÇÏ¿© º¸°íÇ϶ó°í Áö½ÃÇÕ´Ï´Ù.

¿µ¾÷ºÎÀåÀº °Ç³×¹ÞÀº ÀڷḦ ÀÌ¿ëÇÏ¿© ÀÏÁ¤ÇÑ ÀýÂ÷¿Í ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÁöÁ¡º° ¿µ¾÷½ÇÀûÀ» ÀÛ¼ºÇÑ ´ÙÀ½ »çÀå¿¡°Ô º¸°íÇÕ´Ï´Ù. »çÀåÀº ¿µ¾÷ºÎÀåÀÌ ¾î¶»°Ô ¿µ¾÷½ÇÀûÀ» ¸¸µé¾î ³Â´ÂÁö ¾Ë¾Æµµ ÁÁ°ÚÁö¸¸ º¸ÅëÀÇ °æ¿ì¿¡´Â ±×°Í¿¡´Â °ü½ÉÀÌ ¾ø°í º¸°í¹ÞÀº ¿µ¾÷½ÇÀû¿¡¸¸ °ü½ÉÀÌ ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ °æ¿ì¿¡ »çÀåÀ» ¡ºÈ£ÃâÇÔ¼ö(call function)¡»¶ó ÇÏ°í ¿µ¾÷ºÎÀåÀ» ¡ºÇÇÈ£ÃâÇÔ¼ö(called function)¡»À̶ó°í ÇÕ´Ï´Ù. »çÀåÀÌ ¿µ¾÷ºÎÀå¿¡¼­ ÀÛ¾÷ Áö½Ã¸¦ ³»¸± ¶§ °Ç³× ÁÖ´Â Çü½ÄÀ» ¡ºÀμö(parmameter)¡»À̶ó°í Çϰí, »çÀåÀÌ ¿µ¾÷ºÎÀå¿¡°Ô °Ç³×ÁØ ½ÇÁ¦ ÀÚ·á(¹®¼­³ª ¼ýÀÚ ÀÚ·á) ¡ºÀÎÀÚ(argument)¡»¶ó ÇÕ´Ï´Ù. ¿µ¾÷ºÎÀåÀÌ »çÀå¿¡°Ô º¸°íÇÑ ÁöÁ¡º° ÆÇ¸Å½ÇÀûÀ» ¡º¹Ýȯ°ª(return value)¡»À̶ó°í ÇÕ´Ï´Ù. ¿©±â¿¡¼­ ÇÇÈ£ÃâÇÔ¼ö°¡ ¿ì¸®°¡ ÀϹÝÀûÀ¸·Î ¸»ÇÏ´Â ¡ºÇÔ¼ö(function)¡»ÀÔ´Ï´Ù.

 

ÀÌÁ¦´Â »çÀåÀÌ ±¤°íºñ¿¡ µû¸¥ ÆÇ¸ÅÁõ°¡·®À» ¾Ë°íÀÚ ÇÕ´Ï´Ù. ±×·¡¼­ ¿µ¾÷ºÎÀå¿¡°Ô Áö½ÃÇÏ·Á Çϴµ¥ ºÒÇàÈ÷µµ ¿µ¾÷ºÎÀåÀº ±× ÀÏÀ» ÇÒ ´É·ÂÀÌ ¾ø½À´Ï´Ù. »çÀåÀº ±× ÀÏÀ» ÇÒ ¼ö ÀÖ´Â Á÷¿øÀ» »Ì±â·Î °áÁ¤Çß½À´Ï´Ù. ±×·¡¼­ »õ·Î¿î Á÷¿øÀ» ä¿ëÇÏ¿© ±× ÀÏÀ» Çϵµ·Ï Áö½ÃÇÏ¿´½À´Ï´Ù. ±×·¯¸é ¿µ¾÷ºÎÀå°ú »õ·Î »ÌÀº Á÷¿ø°úÀÇ  Â÷ÀÌ´Â ¹«¾ùÀϱî¿ä?

 

¿µ¾÷ºÎÀåÀº ÀÚ½ÅÀÇ ¼Ò¼ÓÀ» Àß ¾Ë°í ÀÖ°í,  »çÀå ¶ÇÇÑ ÀÚ½ÅÀÇ ºÎÇÏ Á÷¿øÀÌ ´©±¸ÀÌ°í ¾î¶² ÀÏÀ» ½Ãų ¶§´Â ´©±¸¿¡°Ô ½ÃÄÑ¾ß ÇÒ Áö¸¦ Àß ¾Ë°í ÀÖ½À´Ï´Ù. ±×¸®°í ±×  Á÷¿øÀº ȸ»ç ³»ºÎ¿¡ Ç×»ó À־ ¾ðÁ¦µçÁö ºÒ·¯¼­ ÀÛ¾÷À» ½Ãų ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª »õ·Î »ÌÀº Á÷¿ø¿¡°Ô´Â ¹«½¼ ÀÏÀ» ÇÏ¿©¾ß ÇÒÁö ¾÷¹«³»¿ëÀ» Áö½ÃÇÏ¿© ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ ±âÁ¸¿¡ ÀÌ¹Ì ÀÖ´Â ¿µ¾÷ºÎÀåÀ» ¡º³»ÀåÇÔ¼ö¡»¶ó ÇÏ°í »õ·Î »ÌÀº Á÷¿øÀ» ¡º»ç¿ëÀÚ Á¤ÀÇÇÔ¼ö¡»¶ó°í ÇÕ´Ï´Ù.

 

ÁÖ¾îÁø ¹®Á¦¸¦ Ç® ¶§, ¹®Á¦ÀÇ ÇØ°áÀ» À§ÇØ ¸î °¡Áö ´Ü°è¸¦ °ÅÄ¡°Ô µË´Ï´Ù. °¢ ´Ü°è´Â ¶Ç ´Ù¸¥ ÀÛÀº ¹®Á¦°¡ µÇ¾î ±× ¹®Á¦µéÀ» ´Ù ÇØ°áÇϸé Àüü°¡ ÇØ°áµÇ°Ô µË´Ï´Ù. ÀÌ¿Í °°ÀÌ °¢°¢ÀÇ ÀÛÀº ¹®Á¦·Î ºÐÇÒÇÏ´Â °ÍÀ» ÇÁ·Î±×·¥¿¡¼­´Â ¡º¸ðµâÈ­¡»¶ó Çϰí ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ Æ¯Â¡¿¡ µû¶ó ¡º¼­ºê·çƾ(subroutine), ÇÁ·Î½ÃÁ®(procedure)¡»¿Í °°Àº À̸§À» ºÙÀÔ´Ï´Ù. C¾ð¾î¿¡¼­´Â À̸¦ ÇÔ¼ö¶ó°í ÇÕ´Ï´Ù.

 

ÇÔ¼ö¸¦ ¿Ö »ç¿ëÇÏ¿©¾ß ÇÏ´ÂÁö »ìÆìº¾½Ã´Ù. 1000¸íÀÇ ÇлýÀÇ ¼ºÀû 󸮸¦ ÇÑ´Ù°í °¡Á¤ÇÏ¿© º¾½Ã´Ù. ÀýÂ÷¸¦ ±â¼úÇÏ¿© º¸¸é

 

¡×  1000¸íÀÇ Çлý ÀÚ·á ÀÐÀ½

¡×  ÃÑÁ¡ °è»ê, Æò±Õ °è»ê

¡×  Á¤·Ä

¡×  ¼®Â÷ °è»ê

¡×  ÀÏÁ¤ ¾ç½ÄÀ¸·Î Ãâ·Â

 

ÀÌ °úÁ¤À» C¾ð¾î ÇÁ·Î±×·¥À¸·Î ¸¸µé·Á¸é ¸¹Àº ÄÚµùÀ» ÇÏ¿©¾ß ÇÕ´Ï´Ù. ¹«¾ùÀ» ¾î¶»°Ô ÇÏ¿©¾ß Çϴ°¡ °¨ÀÌ ¿ÀÁö ¾Ê½À´Ï´Ù. ±×·±µ¥ ´ÙÀ½°ú °°ÀÌ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿© º¾½Ã´Ù.

 

#include<stdio.h>

int main(void){

  int list[1000];

  readList(list);

  calTotal(list);

  calAverage(list);

  sortList(list);

  calRank(list);

  printScore();

  return 0;

}

 

ÀÌ ÇÁ·Î±×·¥À» º¸¸é ¸î ÁÙ ¾ÈµÇÁö¸¸ ÀÌ ÇÁ·Î±×·¥ÀÌ ¹«¾ùÀ» ÇÏ´Â ÇÁ·Î±×·¥Àΰ¡¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.

 

ÀÌÁ¦ ³²Àº °ÍÀº readList(list); ºÎÅÍ print Score(); ±îÁö °¢°¢ÀÇ ¼¼¼¼ÇÑ ºÎºÐÀ» ÇÁ·Î±×·¡¹ÖÇÏ¸é µË´Ï´Ù. ÀÌó·³ ÇÔ¼öµéÀº ¼¼¼¼ÇÑ °Íº¸´Ù ÇÁ·Î±×·¥ Àüü ¼³°è¿¡ ÁýÁßÇÒ ¼ö ÀÖ°í, ÀÌ¹Ì ¸¸µé¾î ³õÀº °ÍÀÌ ÀÖÀ¸¸é(¿ì¸®´Â ÀÌ °ÍÀ» ¡º¶óÀ̺귯¸®¡»¶ó ÇÕ´Ï´Ù.) ÀÌ °ÍÀ» »ç¿ëÇÏ¸é µÇ°í, ¾øÀ¸¸é º»ÀÎÀÌ ¸¸µé°Å³ª ´Ù¸¥ »ç¶÷°ú ³ª´©¾î¼­ ¸¸µé¸é µË´Ï´Ù. C¾ð¾î¿¡¼­´Â ÀÌ·¯ÇÑ È¿¿ëÀ» ÇÔ¼ö¸¦ ÅëÇÏ¿© Á¦°øÇÕ´Ï´Ù. ±×·¡¼­ C¾ð¾î´Â ÇÔ¼ö·Î ¸¸µé¾îÁø ÇÁ·Î±×·¡¹Ö ¾ð¾î¶ó°í ÇÕ´Ï´Ù.