Post

[C] ์ˆœํ™˜๋ฌธ

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

๊ฐ™์€ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ๊ทธ๊ฑธ ์†์œผ๋กœ ์ผ์ผ์ด ์“ฐ๋Š” ๊ฑด ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๋ฐฉ์‹์ด ์•„๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์„ ์ฝ”๋“œ์—๊ฒŒ ๋งก๊ธฐ๋Š” ๊ฒƒ์ด ์ˆœํ™˜๋ฌธ(loop)์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” for, while, do ~ while๊ณผ ์ค‘์ฒฉ ์ˆœํ™˜๋ฌธ, ๊ทธ๋ฆฌ๊ณ  break / continue๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.

์ˆœํ™˜๋ฌธํŠน์ง•
for๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋ช…ํ™•ํ•  ๋•Œ
while์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต
do ~ while์ตœ์†Œ ํ•œ ๋ฒˆ์€ ์‹คํ–‰ (ํ˜„๋Œ€ ์–ธ์–ด์—์„  ์ž˜ ์•ˆ ์“ฐ์ž„)

1. for ์ˆœํ™˜๋ฌธ

Desktop View

1
2
3
for (โ‘ ์ดˆ๊ธฐ์‹; โ‘ก์กฐ๊ฑด์‹; โ‘ฃ์ฆ๊ฐ์‹) {
    โ‘ข์ˆ˜ํ–‰๋ฌธ;
}

์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ฒˆํ˜ธ์™€ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ์ด๋‹ค.

1
2
3
4
5
6
7
8
โ‘  ์ดˆ๊ธฐ์‹    ์ตœ์ดˆ์— ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰
   โ†“
โ‘ก ์กฐ๊ฑด์‹ โ”€โ”€ ๊ฑฐ์ง“ โ”€โ”€โ–บ for๋ฌธ ์ข…๋ฃŒ
   โ”‚ ์ฐธ
   โ–ผ
โ‘ข ์ˆ˜ํ–‰๋ฌธ    ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์‹คํ–‰
   โ†“
โ‘ฃ ์ฆ๊ฐ์‹    ์ˆ˜ํ–‰๋ฌธ์ด ๋๋‚˜๋ฉด ์‹คํ–‰ โ†’ ๋‹ค์‹œ โ‘ก๋กœ

๐Ÿ’ก ์ˆœํ™˜๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•  3๊ฐ€์ง€

  1. ๋ช‡ ๋ฒˆ ์ˆœํ™˜ํ•˜๋Š”๊ฐ€?
  2. ์ธ๋ฑ์Šค์˜ ์‹œ์ž‘๊ฐ’๊ณผ ๋๊ฐ’์€?
  3. ์ˆœํ™˜์ด ๋๋‚œ ๋’ค ์ธ๋ฑ์Šค ๊ฐ’์€? โ† ํ”ํžˆ ๋นผ๋จน์ง€๋งŒ, for๋ฌธ ์ดํ›„ ๋ฌธ์žฅ์„ ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๊ผญ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

์ž‘์„ฑ TIP:

1
2
3
4
5
// โ‘  n๋ฒˆ ๋ฐ˜๋ณต (ํšŸ์ˆ˜๊ฐ€ ํ•ต์‹ฌ)
for (int i = 0; i < n; i++) { ... }

// โ‘ก a ~ b ๋ฐ˜๋ณต (์‹œ์ž‘ยท๋๊ฐ’์ด ํ•ต์‹ฌ)
for (int i = a; i <= b; i++) { ... }

โš ๏ธ for๋ฌธ ์•ˆ์—์„œ ์„ ์–ธํ•œ int i๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ผ for๋ฌธ ๋ฐ”๊นฅ์—์„œ ๋ชป ์“ด๋‹ค. for๋ฌธ ์ดํ›„์—๋„ ์“ฐ๋ ค๋ฉด for๋ฌธ ์‹œ์ž‘ ์ „์— ์„ ์–ธํ•œ๋‹ค.

Desktop View

์˜ˆ์ œ โ‘  โ€” ๊ตฌ๊ตฌ๋‹จ 2๋‹จ

1
2
for (int i = 1; i <= 9; i++)
    printf("2 * %d = %d\n", i, 2 * i);

Desktop View

i๋Š” 1๋ถ€ํ„ฐ 9๊นŒ์ง€, ์ด 9๋ฒˆ ์‹คํ–‰๋œ๋‹ค. ํ•œ ๋ฒˆ ๋Œ ๋•Œ๋งˆ๋‹ค i๊ฐ€ 1์”ฉ ์ปค์ง€๋ฏ€๋กœ 2*i๊ฐ€ 2์˜ ๋ฐฐ์ˆ˜๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

Desktop View

์˜ˆ์ œ โ‘ก โ€” 1~n ๋ˆ„์ ํ•ฉ

1
2
3
4
int n = 100, sum = 0;
for (int i = 1; i <= n; i++)
    sum += i;          // sum = sum + i
printf("ํ•ฉ = %d\n", sum);   // for๋ฌธ '๋ฐ–'์—์„œ ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅ

Desktop View

+=๋Š” ๋ˆ„์  ์—ฐ์‚ฐ์ž๋‹ค. i๊ฐ€ 1์ด๋ฉด sum(0)์— 1์„ ๋”ํ•ด ์ €์žฅํ•˜๊ณ , 2๋ฉด ๋ˆ„์ ๊ฐ’ 1์— 2๋ฅผ ๋”ํ•˜๊ณ โ€ฆ 100๊นŒ์ง€ ์ง„ํ–‰ํ•œ๋‹ค. printf๋ฅผ for๋ฌธ ๋ฐ–์— ๋‘ฌ์„œ ์ดํ•ฉ์„ ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒŒ ํฌ์ธํŠธ๋‹ค.

Desktop View


2. while ์ˆœํ™˜๋ฌธ

while์€ ์กฐ๊ฑด์‹์ด ์ฐธ์ธ ๋™์•ˆ ๋ธ”๋ก์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1
while (์กฐ๊ฑด์‹) { ... }

๐Ÿ’ก while๊ณผ for๋Š” 100% ํ˜ธํ™˜๋œ๋‹ค. for๋กœ ๋งŒ๋“  ๊ฑด while๋กœ, while๋กœ ๋งŒ๋“  ๊ฑด for๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

์•ž์˜ ๊ตฌ๊ตฌ๋‹จ์„ while๋กœ ๋ฐ”๊ฟ”๋ณด์ž.

Desktop View

for์™€ ๋‹ฌ๋ฆฌ while์˜ ๊ด„ํ˜ธ์—๋Š” ์กฐ๊ฑด๋งŒ ๋“ค์–ด๊ฐ„๋‹ค. ๊ทธ๋ž˜์„œ i์˜ ์„ ์–ธ๊ณผ ์ฆ๊ฐ์‹(i++)์€ ๋”ฐ๋กœ ์ ์–ด์•ผ ํ•œ๋‹ค.

Desktop View


3. ์ค‘์ฒฉ ์ˆœํ™˜๋ฌธ (nested loop)

์ˆœํ™˜๋ฌธ ์•ˆ์— ์žˆ๋Š” ์ˆœํ™˜๋ฌธ์ด๋‹ค. ์ˆœํ™˜๋ฌธ ํ•˜๋‚˜๋กœ๋Š” ๊ตฌ๊ตฌ๋‹จ ํ•œ ๋‹จ๋ฐ–์— ๋ชป ๋งŒ๋“ค์ง€๋งŒ, ์ค‘์ฒฉํ•˜๋ฉด ์ „์ฒด ๊ตฌ๊ตฌ๋‹จ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Desktop View

1
2
3
4
5
6
7
๋ฐ”๊นฅ for (i: 2~9)   โ† ๋‹จ(ๆฎต)
   ์•ˆ์ชฝ for (j: 1~9)   โ† ๊ณฑํ•˜๋Š” ์ˆ˜
       printf(i * j)

i=2 ๊ณ ์ • โ†’ j 1~9 ์ „๋ถ€ ์‹คํ–‰ (2๋‹จ ์™„์„ฑ)
i=3 ๊ณ ์ • โ†’ j 1~9 ์ „๋ถ€ ์‹คํ–‰ (3๋‹จ ์™„์„ฑ)
...

๋ฐ”๊นฅ for๊ฐ€ ํ•œ ๋ฒˆ ๋„๋Š” ๋™์•ˆ ์•ˆ์ชฝ for๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ „๋ถ€ ๋ˆ๋‹ค. ๊ทธ๋ž˜์„œ i๊ฐ€ 2๋กœ ๊ณ ์ •๋œ ์ฑ„ j๋งŒ 1~9๋ฅผ ๋Œ์•„ 2๋‹จ์ด ์™„์„ฑ๋˜๊ณ , ๊ทธ๋‹ค์Œ i๊ฐ€ 3์ด ๋˜์–ด 3๋‹จโ€ฆ 9๋‹จ๊นŒ์ง€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

Desktop View


4. Break์™€ Continue

ํ‚ค์›Œ๋“œ๋™์ž‘
break์ž๊ธฐ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆœํ™˜๋ฌธ์„ ์ข…๋ฃŒ
continue์ž๊ธฐ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆœํ™˜๋ฌธ์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ

โš ๏ธ ํ•ต์‹ฌ์€ โ€˜์ˆœํ™˜๋ฌธโ€™์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. if ์•ˆ์— ์žˆ์–ด๋„ break๋Š” if๊ฐ€ ์•„๋‹ˆ๋ผ ์ˆœํ™˜๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค. (์ฒ˜์Œ์—” โ€œ์™œ for๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€์ง€?โ€ํ•˜๊ณ  ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฝ๋‹ค!)

break ์˜ˆ์ œ

Desktop View

for์˜ ์กฐ๊ฑด์‹ ์ž๋ฆฌ๋ฅผ ๋น„์šฐ๋ฉด ํ•ญ์ƒ ์ฐธ์ด๋ผ ๋ฌดํ•œ ๋ฐ˜๋ณต๋œ๋‹ค. ํ•˜์ง€๋งŒ if ์•ˆ์—์„œ i๊ฐ€ 7์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋  ๋•Œ break๋กœ for๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค. printf๊ฐ€ if๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ i๋Š” 6๊นŒ์ง€๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.

Desktop View

continue ์˜ˆ์ œ

Desktop View

i๊ฐ€ 2์˜ ๋ฐฐ์ˆ˜์ผ ๋•Œ continue๋ฅผ ๋งŒ๋‚˜๋ฉด printf๋กœ ๊ฐ€์ง€ ์•Š๊ณ  ์ˆœํ™˜๋ฌธ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ 0~10 ์ค‘ ์ง์ˆ˜๋Š” ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ™€์ˆ˜๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.

Desktop View


5. do ~ while ์ˆœํ™˜๋ฌธ

์š”์ฆ˜์—” ์ž˜ ์“ฐ์ด์ง€ ์•Š์ง€๋งŒ, while๊ณผ์˜ ๊ฒฐ์ •์  ์ฐจ์ด๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค.

Desktop View

i = 1, ์กฐ๊ฑด์ด ๋‘˜ ๋‹ค i < 0์ธ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.

์ˆœํ™˜๋ฌธ์กฐ๊ฑด์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฑฐ์ง“์ด๋ฉด
whileํ•œ ๋ฒˆ๋„ ์‹คํ–‰ ์•ˆ ๋จ (์กฐ๊ฑด ๋จผ์ € ๊ฒ€์‚ฌ)
do ~ while์ผ๋‹จ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋จ (์‹คํ–‰ ํ›„ ์กฐ๊ฑด ๊ฒ€์‚ฌ)

do ~ while์€ ์ผ๋‹จ do! ํ•˜๊ณ  ๋‚˜์„œ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์•„๋„ ์ตœ์†Œ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋œ๋‹ค.

Desktop View

๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ do ~ while์˜ printf๋งŒ ์‹คํ–‰๋๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
5
6
์ˆœํ™˜๋ฌธ(loop)
โ”œโ”€ for        for(์ดˆ๊ธฐ์‹; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹) { ์ˆ˜ํ–‰๋ฌธ }  ์‹คํ–‰์ˆœ์„œ โ‘ โ‘กโ‘ขโ‘ฃโ‘กโ‘ขโ‘ฃโ€ฆ
โ”œโ”€ while      ์กฐ๊ฑด๋งŒ ๊ด„ํ˜ธ์—, ์„ ์–ธยท์ฆ๊ฐ์€ ๋”ฐ๋กœ (for์™€ 100% ํ˜ธํ™˜)
โ”œโ”€ do~while   ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด์–ด๋„ ์ตœ์†Œ 1ํšŒ ์‹คํ–‰
โ”œโ”€ ์ค‘์ฒฉ       ์ˆœํ™˜๋ฌธ ์•ˆ์˜ ์ˆœํ™˜๋ฌธ โ†’ ๊ตฌ๊ตฌ๋‹จ ์ „์ฒด ๋“ฑ
โ””โ”€ ์ œ์–ด       break(์ˆœํ™˜๋ฌธ ์ข…๋ฃŒ) ยท continue(์ˆœํ™˜๋ฌธ ์ฒ˜์Œ์œผ๋กœ)
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
for๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋ช…ํ™•ํ•  ๋•Œ ์“ฐ๋Š” ์ˆœํ™˜๋ฌธ
while์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต
do~while์ตœ์†Œ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋˜๋Š” ์ˆœํ™˜๋ฌธ
break๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆœํ™˜๋ฌธ์„ ์ข…๋ฃŒ
continue๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆœํ™˜๋ฌธ์˜ ์ฒ˜์Œ์œผ๋กœ

์ˆœํ™˜๋ฌธ์€ ๋ฐ˜๋ณต์„ ์ฝ”๋“œ์— ์œ„์ž„ํ•˜๋Š” ๋„๊ตฌ๋‹ค. ํŠนํžˆ break/continue๊ฐ€ ์กฐ๊ฑด๋ฌธ์ด ์•„๋‹ˆ๋ผ ์ˆœํ™˜๋ฌธ์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  for๋ฌธ ์ข…๋ฃŒ ํ›„์˜ ์ธ๋ฑ์Šค ๊ฐ’๊นŒ์ง€ ๊ณ ๋ คํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด๋ฉด ์‹ค์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.