¿À´ÃÀº È帧 Á¦¾îÁß ¹Ýº¹¹®¿¡¼­ Àú¹ø¿¡ ÇÏÁö¸øÇÑ while¿Í do-while¿¡ ´ëÇØ °øºÎÇϰڽÀ´Ï´Ù.
±×¸®°í ³ª¼­ ÇÔ¼ö¿¡ °ª Àü´ÞÇÏ´Â ¹æ¹ý°ú ¹è¿­¿¡ ´ëÇØ °øºÎÇϵµ·Ï ÇÏÁÒ.

- while¹®

¿ì¼± while¹®¿¡ ´ëÇØ ¾Ë¾Æº¸ÁÒ.

while¹®Àº for¹®Ã³·³ ¹Ýº¹¹®ÀÌÁö¸¸ for¹®º¸´Ù »ç¿ë¹ýÀº °£´ÜÇÕ´Ï´Ù.

¿ì¼± »ç¿ë¹ýÀ» ¾Ë¾Æº¸ÁÒ.

while(Á¶°Ç)
{
   /* Çϳª ÀÌ»óÀÇ C¾ð¾î ¹®Àå */
   .
   .
}

ÀÌ·¸°Ô »ç¿ëÇϴµ¥, ¿©±â¼­ Á¶°ÇÀÌ ¸¸Á·ÇÏ´Â µ¿¾È¸¸

while¹® ³»ÀÇ ¹®ÀåµéÀ» ½ÇÇàÇÕ´Ï´Ù.

À̰Š¿ª½Ã ¹®ÀåÀÌ ÇϳªÀ̸é {}¸¦ »ý·«ÇÒ¼ö ÀÖ½À´Ï´Ù.

±×·³ ¿¹Á¦¸¦ º¼±î¿ä?

/* ÆÄÀÏ À̸§     : C8-1.C
   ÇÁ·Î±×·¥ ³»¿ë :  while¹® ¿¹Á¦.. */
#include <stdio.h>
void main()
{
   int a=1;
   int total=0;

   while(a<=100)
   {
      total+=a;
      a++;
   }

   printf("%d\n",total);
}

while¹®À» º¸¸é

a<=100À϶§ ±îÁö¸¸ ¹Ýº¹ÇÏ´Â ¹Ýº¹¹® ÀÔ´Ï´Ù.

while¹® ¾È¿¡¸¦ º¸¸é

total+=a¸¦ Çϰí Àִµ¥, ÀÌ°Ç total=total+a¶ó´Â°ÍÀº

¾ðÁ¨°¡ ¼³¸í Çß°í ÀÌ°É ½ÇÇà ÇÑ ÈÄ¿¡ a++·Î a¸¦

1Áõ°¡½Ã۰í ÀÖ½À´Ï´Ù.

ÀÌ·¸°Ô °è¼Ó µÇ´Ù º¸¸é total=total+1, total=total+2...

ÀÌ·¸°Ô °è¼Ó ½ÇÇàÀÌ µÇ°ÚÁÒ?

±×·¡¼­ ³ªÁß¿£ 1ºÎÅÍ 100±îÁöÀÇ ÇÕÀÌ total¿¡ µé¾î°¡°í

±×°ÍÀÌ Ãâ·ÂµÇ°Ô µÇÁÒ. ±×·¯¹Ç·Î 5050ÀÌ Ãâ·ÂµÊ´Ï´Ù.

- do-while¹®

±×·³ À̹ø¿£ do-while¹®¿¡ ´ëÇØ ¾Ë¾Æº¸ÁÒ.

do-while¹®µµ while¹®°ú ºñ½ÁÇÏÁö¸¸.

ÀÌ°Ç Á¶°ÇÀÌ ¹Ø¿¡ ÀÖ´Ù´Â °ÍÀÌ ´Ù¸§´Ï´Ù.

¿ì¼± »ç¿ë¹ýÀ» º¸ÁÒ.

do
{
   /* Çϳª ÀÌ»óÀÇ C¾ð¾î ¹®Àå */
   .
   .
} while(Á¶°Ç);

ÀÌ·¸°Ô »ç¿ëÇÕ´Ï´Ù.

À̰ÍÀº óÀ½¿¡ ¹®ÀåµéÀÌ ½ÇÇà µÈ ÈÄ,

Á¶°ÇÀÌ ¸¸Á·ÇÏ¸é ¶Ç ½ÇÇà½Ã۰í ÇÏ´Â ½ÄÀ¸·Î ½ÇÇàµÊ´Ï´Ù.

while¹®¿¡¼­´Â óÀ½ºÎÅÍ Á¶°ÇÀÌ ¸¸Á·ÇÏÁö ¾ÊÀ¸¸é

Çѹøµµ ½ÇÇàµÇÁö ¾ÊÁö¸¸, do-while¹®Àº óÀ½ºÎÅÍ Á¶°ÇÀÌ

¸¸Á·ÇÏÁö ¾Ê´õ¶óµµ ÃÖ¼ÒÇÑ ÇѹøÀº ½ÇÇàÀÌ µÊ´Ï´Ù.

/* ÆÄÀÏ À̸§     : C8-2.C
   ÇÁ·Î±×·¥ ³»¿ë : do-while¹® ¿¹Á¦.. */
#include <stdio.h>
#include <conio.h>
void main()
{
   int yn;
   do
   {
      printf("Continue(Y/N)?");
      yn=getche();
      putchar('\n');
   }while(yn!='Y' && yn!='N');
}

ÀÌ ÇÁ·Î±×·¥Àº "Continue(Y/N)?"À̶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰí

Y¶Ç´Â NÀÌ ÀԷµǸé Á¾·áµÇ°í ´Ù¸¥ °ÍÀÌ ÀԷµǸé

°è¼Ó ÀÔ·ÂÀ» ¹Þ´Â °Í ÀÔ´Ï´Ù.

Àß ºÐ¼®ÇØ º¸½Ã¸é ¿Ö ±×·¸°Ô µÇ´ÂÁö´Â ½±°Ô ¾Æ½Ç¼ö ÀÖÀ»°Ì´Ï´Ù.

- goto¹®

goto¹®Àº »ç½Ç °­Á¿¡ ³ÖÀ¸·Á°í ÇÏÁö ¾Ê¾ÒÁö¸¸,

±×·¡µµ CÀÇ ÀϺκРÀ̹ǷΠ¼³¸íÀº µå¸®ÁÒ.

goto¹®Àº ƯÁ¤ ¶óº§·Î ¶Ù¾î ³Ñ¾î ¹ö¸®´Â ±â´ÉÀ» ÇÕ´Ï´Ù.

»ç¿ë¹ýÀº...

goto ¶óº§;

ÀÌ·¸°Ô »ç¿ëÇÏÁÒ.

¿©±â¼­ ¶óº§Àº °°Àº ÇÔ¼ö ³»¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù.

¶óº§ÀÇ Á¤ÀÇ´Â ÀÌ·¸°Ô ÇÏÁÒ.

¶óº§¸í:

¶óº§¸íÀº ÇÔ¼ö¸íÀ̳ª º¯¼ö¸í°ú´Â °ãÃĵµ »ó°ü ¾ø°í

¼­·Î ÇÔ¼ö°¡ ´Ù¸£´Ù¸é ¶óº§¸íÀÌ °ãÃĵµ µÊ´Ï´Ù.

ÇÏÁö¸¸ °°Àº ÇÔ¼ö ³»¿¡¼­ ¶óº§¸íÀÌ °ãÃļ­´Â ¾ÊµÇ¸ç,

¶óº§¸íµµ ½Éº¼°ú °°Àº ±ÔÄ¢¿¡ µû¶ó Áö¾îÁ®¾ß ÇÏÁÒ.

Áï ¶óº§¸íÀÇ Ã¹¹®ÀÚ´Â ¹Ýµå½Ã ¿µ¹®ÀÚ ¶Ç´Â ¾ð´õ½ºÄÚ¾î(_)°¡ ¿Í¾ß Çϰí,

±× µÚ·Î´Â ¿µ¹®ÀÚ, ¼ýÀÚ, ¾ð´õ½ºÄھ ¿Ã¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ.

¶ÇÇѰ¡Áö ¶óº§À» Á¤ÀÇÇÒ¶§´Â µÚ¿¡ :¸¦ ºÙÀÌÁö¸¸,

goto¹®¿¡¼­ ¶óº§À» ¾µ¶§´Â ÀÌ°É ¾²¸é ¾ÊµÈ´Ù´Â °Í ÀÔ´Ï´Ù.

¿¹¸¦ µé¾î

Label:

ÀÌ·± ¶óº§ÀÌ ÀÖÀ»¶§

goto Label:;

ÀÌ·¸°Ô ÇØ¼­´Â ¾ÊµÇ°í,

goto Label;

ÀÌ·¸°Ô ÇØ¾ß ÇÑ´Ù´Â °Í ÀÔ´Ï´Ù.

goto¹®Àº C°°Àº ±¸Á¶È­ ÇÁ·Î±×·¡¹Ö ¾ð¾î ¿¡¼­´Â

°ÅÀÇ ¾µ¸ð°¡ ¾ø½À´Ï´Ù. ¶ÇÇÑ ´ëºÎºÐÀÇ C ÇÁ·Î±×·¡¸ÓµéÀº

goto¹®ÀÇ »ç¿ëÀ» ²¨·ÁÇϰí ÀÖ½À´Ï´Ù.

ÀÌÀ¯´Â goto¹®À» ¸¹ÀÌ »ç¿ëÇÒ °æ¿ì ÇÁ·Î±×·¥À» º¸±â°¡ Èûµé¾îÁö°í

º¹ÀâÇØ º¸À̱⠶§¹®ÀÌÁÒ.

±×·¯¹Ç·Î µÇµµ·Ï goto¹®ÀÇ »ç¿ëÀº ÁÙÀ̰í, ÇÔ¼ö³ª C¾ð¾îÀÇ °­·ÂÇÑ

Á¦¾î¹®µéÀ» »ç¿ëÇØ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ½À°üÀ» µé¿©¾ß ÇÕ´Ï´Ù.

- ÇÔ¼ö¿¡ °ª Àü´Þ.

¿©·¯ºÐÀÌ ¾î¶² ÇÔ¼ö¸¦ ¸¸µç´Ù°í ÇսôÙ.

±× ÇÔ¼ö´Â printf¿Í °°ÀÌ ¾î¶² ³»¿ëÀ» È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÔ¼öÀÌÁÒ.

±×·±µ¥ È­¸é¿¡ ¹«¾ð°¡¸¦ Ãâ·ÂÇϱâ À§Çؼ± ±× Ãâ·ÂÇÒ ³»¿ëÀ»

Àü´Þ¹Þ¾Æ¾ß °ÚÁÒ? ¾î¶»°Ô Çϸé Àü´Þ¹ÞÀ»¼ö ÀÖÀ»±î¿ä?

¹Ù·Î ±× ¹æ¹ý¿¡ ´ëÇØ¼­ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÏÁÒ.

Àú¹ø 2ȸ¶§ ÇÔ¼ö¿¡ ´ëÇØ ¹è¿ï¶§ Àμö¶ó´Â °ÍÀÌ ÀÖ¾ú½À´Ï´Ù.

±×¶§ Àμö´Â ÇÔ¼ö°¡ ¾î¶² 󸮸¦ ÇÒ¶§ ÇÊ¿äÇØ¼­ Àü´Þ¹ÞÀ» µ¥ÀÌÅͶó°í

ÇßÁÒ. ÀÌ Àμö¸¦ ÅëÇØ¼­ ÇÔ¼ö°¡ °ªÀ» Àü´Þ¹ÞÀ»¼ö ÀÖ½À´Ï´Ù.

(1) Àμö°¡ Á¤È®È÷?

Àμö¿¡ ´ëÇØ Á¤È®È÷ ¸»ÇÏÀÚ¸é ÇÔ¼ö¿¡¼­ °ªÀ» Àü´Þ¹Þ´Âµ¥ ¾²ÀÌ´Â

º¯¼ö¸¦ ¸»ÇÕ´Ï´Ù. Áï º¯¼öÀÇ ÀÏÁ¾ÀÌÁÒ. ¾Æ´Ï ÀÏÁ¾ÀÌ ¾Æ´Ï°í

º¯¼ö¶ó°í »ý°¢Çϼ¼¿ä. ´Ü ÇÔ¼ö ½ÃÀ۽ÿ¡ Àü´Þ¹ÞÀ» °ªÀÌ µé¾î°¡°Ô µÊ´Ï´Ù.

(2) Àμö ¸¸µé±â.

Àμö´Â ¾î¶»°Ô ¸¸µé±î¿ä? Àú¹ø 2ȸ¶§ ÇÔ¼ö ¸¸µå´Â ¹æ¹ý¿¡ ³ª¿Í ÀÖ´ø°Íó·³

ÇÔ¼öÀ̸§ ¿·¿¡ ÀÖ´Â ()¾È¿¡ Àμö¸¦ ³ª¿­ÇØ ÁÖ¸é µÊ´Ï´Ù.

()¾È¿¡ ¸¶Ä¡ º¯¼ö¸¦ ¼±¾ðÇϵíÀÌ Àμö¸¦ ¸¸µé¾î ÁÖ¸é µÇÁÒ.

(Àμö°¡ º¯¼ö´Ï±î ´ç¿¬ÇÑ °ÅÁÒ?)

¿¹¸¦ µé¾î ¾Æ¹« °ªµµ ¸®ÅÏÇÏÁö ¾Ê°í, Àμö´Â Á¤¼öÇüÅ a¿Í,b¸¦ °¡Áø

func¶ó´Â ÇÔ¼ö´Â

void func(int a, int b)
{
   .
   .
   .
}

ÀÌ·±½ÄÀ¸·Î ¸¸µé¼ö ÀÖ°ÚÁÒ?

(3) ÀμöÀÇ »ç¿ë

ÀÌÁ¦ Àμö°¡ º¯¼ö¶ó´Â°Ç ¾Ë°í °è½ÃÁÒ? ±×·¯¹Ç·Î Àμö »ç¿ëÀº

º¯¼ö¿Í ¶È°°´Ù´Â °Íµµ ¾Æ½Ã°ÚÁÒ? ¹¹ ´õÀÌ»ó ¼³¸íµå¸± °ÍµÎ ¾ø±º¿ä.

±×·³ Áß¿äÇÑ°Í ÇѰ¡Áö ¸»¾¸µå¸®ÁÒ.

¿ì¼± ¿¹Á¦¸¦ º¸¼¼¿ä.

/* ÆÄÀÏ À̸§     : C8-3.C
   ÇÁ·Î±×·¥ ³»¿ë : ÇÔ¼ö ¿¹Á¦ */
#include <stdio.h>
void func(int data)
{
   data=10;
}
void main()
{
   int var=1;
   func(var);
   printf("%d\n",var);
}

ÀÌ ¿¹Á¦¸¦ Àß º¸¼¼¿ä.

¿©±â¼­ mainÇÔ¼ö¿¡´Â varÀ̶õ º¯¼ö°¡ ÀÖÁÒ?

±×¸®°í ±× º¯¼ö¿¡ ÃʱⰪÀ¸·Î 1À» ÁÖ¾úÁÒ.

±×·±´ÙÀ½ func¸¦ È£ÃâÇߴµ¥, Àμö·Î varÀ̶õ º¯¼ö¸¦ ÁÖ¾úÁÒ?

±×·³ funcÇÔ¼ö¸¦ º¸¼¼¿ä. funcÇÔ¼ö¿¡´Â data¶ó´Â Àμö°¡ Àִµ¥

ÀÌ ÇÔ¼ö È£Ãâ½Ã¿¡ varÀ̶õ º¯¼ö¿¡´Â 1ÀÌ µé¾îÀÖ¾úÀ¸¹Ç·Î

data¿¡µµ 1ÀÌ µé¾î°©´Ï´Ù. func¿¡¼­´Â data¸¦ 10À¸·Î ¹Ù²Ù°í ÀÖ±º¿ä.

±×·³ ÀÌ·¸°Ô data¸¦ 10À¸·Î ¹Ù²å´Âµ¥, mainÇÔ¼öÀÇ varÀ̶õ º¯¼öµµ

10À¸·Î ¹Ù²ð±î¿ä? ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇØ º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸

¹Ù²îÁö ¾Ê½À´Ï´Ù. ÇÔ¼ö È£Ãâ½Ã¿¡ º¯¼ö¸¦ Àμö·Î ÁÖ¸é ´ÜÁö

º¯¼ö¿¡ µé¾îÀÖ´Â °ªÀ» º¹»çÇØ¼­ Àü´ÞÇØ ÁÙ »ÓÀÌÁÒ.

±×·¯¹Ç·Î ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀÌ·¸°Ô ÇÔ¼ö¿¡ °ª Àü´Þ½Ã

º¯¼ö¿¡ µé¾îÀÖ´Â °ªÀ» ±×³É º¹»çÇØ¼­ Àü´ÞÇØ Áִ ȣÃâ ¹æ¹ýÀ»

Call by value¶ó°í ÇÕ´Ï´Ù.

Previous:switch ¹®, for ¹®
Next:¹è¿­