[C] ์ํ๋ฌธ
๐ ๋ค์ด๊ฐ๋ฉฐ
๊ฐ์ ์์
์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ผ ํ ๋, ๊ทธ๊ฑธ ์์ผ๋ก ์ผ์ผ์ด ์ฐ๋ ๊ฑด ํ๋ก๊ทธ๋๋จธ์ ๋ฐฉ์์ด ์๋๋ค. ๋ฐ๋ณต์ ์ฝ๋์๊ฒ ๋งก๊ธฐ๋ ๊ฒ์ด ์ํ๋ฌธ(loop)์ด๋ค. ์ด๋ฒ ๊ธ์์๋ for, while, do ~ while๊ณผ ์ค์ฒฉ ์ํ๋ฌธ, ๊ทธ๋ฆฌ๊ณ break / continue๋ฅผ ์ ๋ฆฌํ๋ค.
| ์ํ๋ฌธ | ํน์ง |
|---|---|
for | ๋ฐ๋ณต ํ์๊ฐ ๋ช ํํ ๋ |
while | ์กฐ๊ฑด์ด ์ฐธ์ธ ๋์ ๋ฐ๋ณต |
do ~ while | ์ต์ ํ ๋ฒ์ ์คํ (ํ๋ ์ธ์ด์์ ์ ์ ์ฐ์) |
1. for ์ํ๋ฌธ
1
2
3
for (โ ์ด๊ธฐ์; โก์กฐ๊ฑด์; โฃ์ฆ๊ฐ์) {
โข์ํ๋ฌธ;
}
์คํ ์์๊ฐ ๋ฒํธ์ ๋ค๋ฅด๋ค๋ ์ ์ด ํต์ฌ์ด๋ค.
1
2
3
4
5
6
7
8
โ ์ด๊ธฐ์ ์ต์ด์ ๋ฑ ํ ๋ฒ๋ง ์ํ
โ
โก ์กฐ๊ฑด์ โโ ๊ฑฐ์ง โโโบ for๋ฌธ ์ข
๋ฃ
โ ์ฐธ
โผ
โข ์ํ๋ฌธ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์คํ
โ
โฃ ์ฆ๊ฐ์ ์ํ๋ฌธ์ด ๋๋๋ฉด ์คํ โ ๋ค์ โก๋ก
๐ก ์ํ๋ฌธ์ ์์ฑํ ๋ ๋ฐ๋์ ํ์ธํ 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๋ฌธ ์์ ์ ์ ์ ์ธํ๋ค.
์์ โ โ ๊ตฌ๊ตฌ๋จ 2๋จ
1
2
for (int i = 1; i <= 9; i++)
printf("2 * %d = %d\n", i, 2 * i);
i๋ 1๋ถํฐ 9๊น์ง, ์ด 9๋ฒ ์คํ๋๋ค. ํ ๋ฒ ๋ ๋๋ง๋ค i๊ฐ 1์ฉ ์ปค์ง๋ฏ๋ก 2*i๊ฐ 2์ ๋ฐฐ์๋ก ์ถ๋ ฅ๋๋ค.
์์ โก โ 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๋ฌธ '๋ฐ'์์ ํ ๋ฒ๋ง ์ถ๋ ฅ
+=๋ ๋์ ์ฐ์ฐ์๋ค. i๊ฐ 1์ด๋ฉด sum(0)์ 1์ ๋ํด ์ ์ฅํ๊ณ , 2๋ฉด ๋์ ๊ฐ 1์ 2๋ฅผ ๋ํ๊ณ โฆ 100๊น์ง ์งํํ๋ค. printf๋ฅผ for๋ฌธ ๋ฐ์ ๋ฌ์ ์ดํฉ์ ํ ๋ฒ๋ง ์ถ๋ ฅํ๋ ๊ฒ ํฌ์ธํธ๋ค.
2. while ์ํ๋ฌธ
while์ ์กฐ๊ฑด์์ด ์ฐธ์ธ ๋์ ๋ธ๋ก์ ๋ฐ๋ณตํ๋ค.
1
while (์กฐ๊ฑด์) { ... }
๐ก
while๊ณผfor๋ 100% ํธํ๋๋ค. for๋ก ๋ง๋ ๊ฑด while๋ก, while๋ก ๋ง๋ ๊ฑด for๋ก ๋ฐ๊ฟ ์ ์๋ค.
์์ ๊ตฌ๊ตฌ๋จ์ while๋ก ๋ฐ๊ฟ๋ณด์.
for์ ๋ฌ๋ฆฌ while์ ๊ดํธ์๋ ์กฐ๊ฑด๋ง ๋ค์ด๊ฐ๋ค. ๊ทธ๋์ i์ ์ ์ธ๊ณผ ์ฆ๊ฐ์(i++)์ ๋ฐ๋ก ์ ์ด์ผ ํ๋ค.
3. ์ค์ฒฉ ์ํ๋ฌธ (nested loop)
์ํ๋ฌธ ์์ ์๋ ์ํ๋ฌธ์ด๋ค. ์ํ๋ฌธ ํ๋๋ก๋ ๊ตฌ๊ตฌ๋จ ํ ๋จ๋ฐ์ ๋ชป ๋ง๋ค์ง๋ง, ์ค์ฒฉํ๋ฉด ์ ์ฒด ๊ตฌ๊ตฌ๋จ์ ๋ง๋ค ์ ์๋ค.
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๋จ๊น์ง ๋ง๋ค์ด์ง๋ค.
4. Break์ Continue
| ํค์๋ | ๋์ |
|---|---|
break | ์๊ธฐ๋ฅผ ๊ฐ์ธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ํ๋ฌธ์ ์ข ๋ฃ |
continue | ์๊ธฐ๋ฅผ ๊ฐ์ธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ํ๋ฌธ์ ์ฒ์์ผ๋ก ๋์๊ฐ |
โ ๏ธ ํต์ฌ์ โ์ํ๋ฌธโ์ ๋์์ผ๋ก ํ๋ค๋ ๊ฒ์ด๋ค.
if์์ ์์ด๋break๋if๊ฐ ์๋๋ผ ์ํ๋ฌธ์ ๋น ์ ธ๋๊ฐ๋ค. (์ฒ์์ โ์ for๋ฌธ์ ๋น ์ ธ๋๊ฐ์ง?โํ๊ณ ํท๊ฐ๋ฆฌ๊ธฐ ์ฝ๋ค!)
break ์์
for์ ์กฐ๊ฑด์ ์๋ฆฌ๋ฅผ ๋น์ฐ๋ฉด ํญ์ ์ฐธ์ด๋ผ ๋ฌดํ ๋ฐ๋ณต๋๋ค. ํ์ง๋ง if ์์์ i๊ฐ 7์ ๋ฐฐ์๊ฐ ๋ ๋ break๋ก for๋ฌธ์ ์ข
๋ฃํ๋ค. printf๊ฐ if๋ณด๋ค ๋ค์ ์์ผ๋ฏ๋ก i๋ 6๊น์ง๋ง ์ถ๋ ฅ๋๋ค.
continue ์์
i๊ฐ 2์ ๋ฐฐ์์ผ ๋ continue๋ฅผ ๋ง๋๋ฉด printf๋ก ๊ฐ์ง ์๊ณ ์ํ๋ฌธ ์ฒ์์ผ๋ก ๋์๊ฐ๋ค. ๋ฐ๋ผ์ 0~10 ์ค ์ง์๋ ๊ฑด๋๋ฐ๊ณ ํ์๋ง ์ถ๋ ฅ๋๋ค.
5. do ~ while ์ํ๋ฌธ
์์ฆ์ ์ ์ฐ์ด์ง ์์ง๋ง, while๊ณผ์ ๊ฒฐ์ ์ ์ฐจ์ด๊ฐ ํ๋ ์๋ค.
i = 1, ์กฐ๊ฑด์ด ๋ ๋ค i < 0์ธ ๊ฒฝ์ฐ๋ฅผ ๋ณด์.
| ์ํ๋ฌธ | ์กฐ๊ฑด์ด ์ฒ์๋ถํฐ ๊ฑฐ์ง์ด๋ฉด |
|---|---|
while | ํ ๋ฒ๋ ์คํ ์ ๋จ (์กฐ๊ฑด ๋จผ์ ๊ฒ์ฌ) |
do ~ while | ์ผ๋จ ํ ๋ฒ์ ์คํ๋จ (์คํ ํ ์กฐ๊ฑด ๊ฒ์ฌ) |
do ~ while์ ์ผ๋จ do! ํ๊ณ ๋์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ธฐ ๋๋ฌธ์, ์กฐ๊ฑด์ด ๋ง์ง ์์๋ ์ต์ ํ ๋ฒ์ ์คํ๋๋ค.
๋ณด์ด๋ ๊ฒ์ฒ๋ผ 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๋ฌธ ์ข
๋ฃ ํ์ ์ธ๋ฑ์ค ๊ฐ๊น์ง ๊ณ ๋ คํ๋ ์ต๊ด์ ๋ค์ด๋ฉด ์ค์๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
















Comments powered by Disqus.