1) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¶õ?
»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(Function)´Â »ç¿ëÀÚ°¡ ÇÊ¿ä¿¡ ÀÇÇÏ¿© Á÷Á¢ ÇÔ¼ö¸¦ Á¤ÀÇÇÏ
¿© »ç¿ëÇÏ´Â °ÍÀ» ÀǹÌÇÏ¸ç ³»Àå ÇÔ¼öó·³ ÀÎÀÚ¸¦ Àü´ÞÇÒ ¼ö ÀÖ°í ÇÔ¼öÀÇ °á°ú
°ªÀ» µÇµ¹·Á ¹ÞÀ» ¼ö ÀÖÀ¸¸ç ÇÔ¼ö ³»ºÎ¿¡¼ »ç¿ëµÇ´Â º¯¼ö·Î ÀÎÇÏ¿© ÇÔ¼ö ¿ÜºÎ
¿¡¼ »ç¿ëµÇ´Â º¯¼ö¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù.
2) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öÀÇ ¼±¾ð
Çü½Ä)
function [Çü¼±¾ð¹®] ÇÔ¼ö¸í([Çü¼±¾ð¹®] ÀÎÀÚ1, ... , [Çü¼±¾ð¹®] ÀÎÀÚN)
{
¹®Àå1;
.
.
¹®ÀåN;
[return ¿¬»ê½Ä];
}
-. [ ] ¾ÈÀÇ ³»¿ëÀº »ý·« °¡´ÉÇÔÀ» ÀǹÌÇÑ´Ù.
-. Çü¼±¾ð¹®: ÇÔ¼öÀÇ ÀÎÀÚ³ª °á°ú°ª¿¡ ´ëÇÑ ÀÚ·áÇü ¼±¾ð¹®À¸·Î »ý·«½Ã freeÇü
À¸·Î ÁöÁ¤µÈ´Ù.
-. ÇÔ¼ö¸í: º¯¼ö¸í ÀÛ¼º ±ÔÄ¢°ú °°Àº ¹æ¹ýÀÇ ¸íĪÀ» »ç¿ëÇؾßÇÏ¸ç ³»Àå ÇÔ¼ö³ª
¸í·É¾î¿Í µ¿ÀÏÇÑ ¸íĪÀº »ç¿ëÇÒ ¼ö ¾ø´Ù.
-. ÀÎÀÚ1 ºÎÅÍ ÀÎÀÚN±îÁöÀÇ ÀÎÀÚ´Â º¯¼ö¸íÀ̾î¾ß Çϸç ÇÔ¼ö¾È¿¡¼¸¸ Åë¿ëµÇ´Â
Áö¿ª º¯¼öÀÌ´Ù.
3) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ³»¿¡¼ÀÇ º¯¼ö »ç¿ë
a. ¼±¾ðÇÏÁö ¾Ê°í º¯¼ö¸¦ »ç¿ëÇÒ °æ¿ì
»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ÇØ´ç º¯¼ö¸¦ ÁÖ ÇÁ·Î±×·¥(Main program)
¿¡¼ ÀÌ¹Ì ¼±¾ð ÇÏ¿´°Å³ª ¶Ç´Â ¼±¾ð ¾øÀÌ º¯¼ö¸¦ »ç¿ëÇÏ¿´À» °æ¿ì¿¡´Â Àüü
ÇÁ·Î±×·¥¿¡¼ Åë¿ëÀÌ µÇ´Â Àü¿ª º¯¼ö°¡ µÈ´Ù.
È£ÃâÀü¿¡ ÇØ´ç º¯¼ö¸¦ ¼±¾ðÇÏÁö ¾Ê¾Ò°í ¶ÇÇÑ »ç¿ëÇÏÁö ¾Ê¾ÒÀ¸¸ç »ç¿ëÀÚ Á¤
ÀÇ ÇÔ¼ö ³»¿¡¼ ÃÖÃÊ·Î »ç¿ëÇÒ °æ¿ì¿¡´Â ±× ÇÔ¼ö ³»¿¡¼ Åë¿ëÀÌ µÇ´Â Áö¿ª
º¯¼öÀ̸ç ÇÔ¼ö°¡ ½ÇÇàµÉ ¶§ »ý¼ºÀÌ µÇ°í ÇÔ¼ö°¡ Á¾·áµÇ¸é »ç¶óÁö°Ô µÈ´Ù.
¡Ø »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ³»¿¡¼ º¯¼ö¸¦ ¼±¾ð ÇÏÁö ¾Ê°í »ç¿ëÇÒ °æ¿ì¿¡´Â Àü¿ª
º¯¼ö ¶Ç´Â Áö¿ª º¯¼ö°¡ µÉ ¼ö Àֱ⠶§¹®¿¡ ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ÇØ´ç
º¯¼öÀÇ »óȲÀ» ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.
b. Çü ¼±¾ð¹®À¸·Î ¼±¾ðÈÄ º¯¼ö¸¦ »ç¿ëÇÒ °æ¿ì
»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ³»¿¡¼¸¸ Åë¿ëÀÌ µÇ´Â Áö¿ª º¯¼ö·Î½á ÇÔ¼ö°¡ ½ÇÇàµÉ ¶§
ÇØ´ç º¯¼ö°¡ »ý¼º(È®º¸)µÇ°í ÇÔ¼ö°¡ Á¾·áµÇ¸é »ç¶óÁö°Ô µÈ´Ù.
c. static À¸·Î ¼±¾ðÈÄ º¯¼ö¸¦ »ç¿ëÇÒ °æ¿ì
»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ³»¿¡¼¸¸ Åë¿ëÀÌ µÇ´Â Áö¿ª º¯¼ö·Î½á ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¶§
º¯¼ö°¡ »ý¼º(È®º¸)µÇ¸ç ½ÇÇà½Ã ÇØ´ç º¯¼ö¸¦ È®º¸Çϰųª ÃʱâÈ ÇÏÁö ¾Ê´Â´Ù.
ÀÌ¿Í °°Àº º¯¼ö´Â Ç×»ó ±× °ªÀ» À¯ÁöÇϸç ÇÔ¼ö ¿ÜºÎ¿¡¼ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù.
d. global ·Î ÂüÁ¶ ÁöÁ¤ ÈÄ º¯¼ö¸¦ »ç¿ëÇÒ °æ¿ì
ÇØ´ç º¯¼ö°¡ Àü¿ª º¯¼ö·Î ÂüÁ¶ ÁöÁ¤µÇ¾î ÇÔ¼ö ³»ÀÇ º¯¼ö°¡ ¾Æ´Ï¶ó ÇÔ¼ö
¿ÜºÎÀÇ ÁÖ ÇÁ·Î±×·¥(Main program) »óÀÇ º¯¼ö°¡ µÈ´Ù.
3) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öÀÇ È¸±Í °ª(Return value)
a. return ¹®À» »ç¿ëÇÒ °æ¿ì
ÇÔ¼öÀÇ Çü(function ´ÙÀ½ÀÇ Çü ¼±¾ð¹®)°ú ´Ù¸£¸é Çü º¯È¯ÇÏ¿© ±× °ªÀ»
µÇµ¹¸®¸ç, ÇÔ¼öÀÇ ÇüÀÌ »ý·«µÇ¾úÀ» °æ¿ì¿¡´Â free ÇüÀÌ µÇ¾î Çü º¯È¯À»
ÇÏÁö ¾Ê´Â´Ù.
b. return ¹®À» »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì
ÃÖÈÄ¿¡ »ç¿ëµÈ ¹®ÀåÀÇ »ó¼ö°ªÀ» µÇµ¹¸°´Ù. ÀÌ °æ¿ì µÇµ¹·ÁÁö´Â °ªÀÌ
¹«¾ùÀÎÁö ¸íÈ®ÇÏÁö ¾ÊÀ» ¼ö Àֱ⠶§¹®¿¡ ÇÔ¼öÀÇ °á°ú°ªÀ» º¯¼ö¿¡ ´ëÀÔÇÒ
°æ¿ì ÁÖÀǸ¦ ÇؾßÇÑ´Ù.
4) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öÀÇ ¿¹#1
function int add(int a, int b)
{
int c; // ÀÎÀÚ a,b ¹× º¯¼ö c´Â Áö¿ªº¯¼öÀÓ
c= a + b;
return c; // a+bÀÇ °á°ú¸¦ µÇµ¹¸²
}
ad= add(3,2); // 3À» a¿¡ 2¸¦ b¿¡ Àü´ÞÇÏ¿© ÇÔ¼ö¸¦ ½ÇÇàÇÑ ÈÄ °á°ú 5¸¦
print(ad); // adº¯¼ö¿¡ ´ëÀÔÇÑ ÈÄ Ãâ·ÂÇÔ
5) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öÀÇ ¿¹#2
function int add()
{
global a; // Àü¿ªº¯¼ö a¸¦ ÂüÁ¶Çϵµ·Ï ÁöÁ¤ÇÔ
c= a + b; // º¯¼ö b´Â ¼±¾ðµÇÁö ¾Ê¾Æ¼ Àü¿ªº¯¼ö¸¦ ÂüÁ¶ÇÔ
return c; // º¯¼ö c´Â È£ÃâÀü¿¡ ¼±¾ð ¶Ç´Â »ç¿ëÇÏÁö ¾Ê¾Æ
} // ÇÔ¼ö³»¿¡¼ Åë¿ëµÇ´Â Áö¿ªº¯¼ö·Î È®º¸µÊ
a= 3; // Àü¿ª º¯¼ö a¿¡ 3À» ´ëÀÔÇÔ
b= 2; // Àü¿ª º¯¼ö b¿¡ 2¸¦ ´ëÀÔÇÔ
ad= add(); //ÇÔ¼ö¸¦ ½ÇÇàÇÑ ÈÄ °á°ú 5¸¦ adº¯¼ö¿¡ ´ëÀÔÇÑ´Ù.
print(ad); // adº¯¼öÀÇ °ªÀ» Ãâ·ÂÇÔ
6) »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öÀÇ ¿¹#3
function int count()
{
static int cnt= 0; // ³»ºÎ Á¤Àûº¯¼ö·Î cnt¿¡ 0À» ´ëÀÔÇÏ´Â
// ÃʱâÈ´Â ÃÖÃÊ¿¡ 1ȸ¸¸ ÇÑ´Ù.
cnt= cnt + 1;
return cnt;
}
a= count(); // ÇÔ¼ö¸¦ ½ÇÇàÇÏ¿© 1À» a¿¡ ±â¾ïÇÔ
b= count(); // ÇÔ¼ö¸¦ ½ÇÇàÇÏ¿© 2¸¦ b¿¡ ±â¾ïÇÔ
print(a, " ", b, "\n");
|