๐ถ ์ ์ด๋ฌธ์ด๋?
์ ์ด๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ฑฐ๋(์กฐ๊ฑด๋ฌธ), ํน์ ์ฝ๋๋ฅผ ๋ฐ๋ณต ์คํํ ๋(๋ฐ๋ณต๋ฌธ) ์ฌ์ฉ๋ฉ๋๋ค.
๐ถ ๋ธ๋ก๋ฌธ
๋ธ๋ก๋ฌธ์ ํ๋ ์ด์์ ๋ฌธ์ ์ค๊ดํธ ``{}``๋ก ๋ฌถ์ ์ฝ๋ ๋ธ๋ก์ ์๋ฏธํ๋ฉฐ, ๋ณดํต ์ ์ด๋ฌธ์ด๋ ํจ์๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ธ๋ก๋ฌธ์ ์์ฒด์ ์ผ๋ก ์ข ๊ฒฐ์ฑ์ ๊ฐ์ง๋ฏ๋ก ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ด์ง ์์ต๋๋ค.
๐ถ ์กฐ๊ฑด๋ฌธ
์กฐ๊ฑด๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐํ ํ, ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์กฐ๊ฑด์์ ์ฐธ(true)๊ณผ ๊ฑฐ์ง(false)์ผ๋ก ํ๊ฐ๋ฉ๋๋ค.
if-else ๋ฌธ
if (์กฐ๊ฑด์1) {
// ์กฐ๊ฑด์1์ด ์ฐธ์ด๋ฉด ์ด ์ฝ๋๋ธ๋ก์ด ์คํ๋๋ค.
} else if (์กฐ๊ฑด์2) {
// ์กฐ๊ฑด์2๊ฐ ์ฐธ์ด๋ฉด ์ด ์ฝ๋๋ธ๋ก์ด ์คํ๋๋ค.
} else {
// ์กฐ๊ฑด์1๊ณผ ์กฐ๊ฑด์2๊ฐ ๋ชจ๋ ๊ฑฐ์ง์ด๋ฉด ์ด ์ฝ๋๋ธ๋ญ์ด ์คํ๋๋ค.
}
``if-else`` ๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ``if``๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ , ๊ฑฐ์ง์ด๋ฉด ``else`` ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ์คํํฉ๋๋ค. ์กฐ๊ฑด์ ์๋ฅผ ๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด ``else if`` ๋ฌธ์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ``else``์ ``else if`` ๋ฌธ์ ์ ํ ์ฌํญ์ ๋๋ค. ๋ํ, ์คํํ ์ฝ๋๊ฐ ํ๋๋ฟ์ด๋ผ๋ฉด ์ค๊ดํธ ``{}``๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
๋ง์ ๊ฒฝ์ฐ ``if-else`` ๋ฌธ์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ๋์ฒดํ ์ ์์ต๋๋ค. ์ด๋, ``if-else`` ๋ฌธ์ ํํ์์ด ์๋ ๋ฌธ์ด๋ฏ๋ก ๊ฐ์ ๋ฐํํ ์ ์์ง๋ง ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์์ต๋๋ค.
switch ๋ฌธ
switch (ํํ์) {
case ํํ์1:
switch ๋ฌธ์ ํํ์๊ณผ ํํ์1์ด ์ผ์นํ๋ฉด ์คํ๋ ๋ฌธ;
break;
case ํํ์2:
switch ๋ฌธ์ ํํ์๊ณผ ํํ์2๊ฐ ์ผ์นํ๋ฉด ์คํ๋ ๋ฌธ;
break;
default:
switch ๋ฌธ์ ํํ์๊ณผ ์ผ์นํ๋ case ๋ฌธ์ด ์์ ๋ ์คํ๋ ๋ฌธ;
}
``switch`` ๋ฌธ์ ์ฃผ์ด์ง ํํ์์ ํ๊ฐํ ํ, ๊ทธ ๊ฐ๊ณผ ์ผ์นํ๋ ``case`` ๋ฌธ์ ์คํํ๋ ์กฐ๊ฑด๋ฌธ์ ๋๋ค. ๋ง์ฝ ์ผ์นํ๋ ``case`` ๋ฌธ์ด ์์ผ๋ฉด ``default`` ๋ฌธ์ด ์คํ๋ฉ๋๋ค. ``default`` ๋ฌธ์ ์ ํ์ฌํญ์ผ๋ก ์๋ตํ ์๋ ์์ต๋๋ค.
``if-else`` ๋ฌธ์ด ๋ ผ๋ฆฌ์ ์ฐธ/๊ฑฐ์ง์ ๊ธฐ์ค์ผ๋ก ์คํํ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ๋ฉด, ``switch`` ๋ฌธ์ ๋ค์ํ ๊ฒฝ์ฐ(case)์ ๋ฐ๋ผ ์คํํ ์ฝ๋ ๋ธ๋ก์ ๊ฒฐ์ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด๋, ``case`` ๋ฌธ์ ๋ง์ง๋ง์๋ ``break`` ๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ผ์นํ๋ ``case`` ๋ฌธ ์คํ ํ์๋ ๋ค์ ``case`` ๋ฌธ์ด ๊ณ์ ์คํ๋๋ ํด์ค๋ฃจ(fall-through) ํ์์ด ๋ฐ์ํฉ๋๋ค. ๋ค๋ง, ์ฌ๋ฌ ์กฐ๊ฑด์ ํ๋์ ์ฝ๋ ๋ธ๋ก์์ ์คํํ๊ณ ์ถ์ ๋๋ ํด์ค๋ฃจ ํ์์ ์๋์ ์ผ๋ก ํ์ฉํ ์๋ ์์ต๋๋ค.
๐ถ ๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด ๋ ๋๊น์ง ํน์ ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํ๋ ๋ฌธ์ ๋๋ค.
for ๋ฌธ
for (๋ณ์ ์ ์ธ๋ฌธ ๋๋ ํ ๋น๋ฌธ; ์กฐ๊ฑด์; ์ฆ๊ฐ์) {
์กฐ๊ฑด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต ์คํ๋ ๋ฌธ;
}
``for`` ๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ๋ช ํํ ๋ ์ฌ์ฉํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ง๋๋ค.
- ๋ณ์ ์ ์ธ๋ฌธ ๋๋ ํ ๋น๋ฌธ : ๋ฐ๋ณต์ ์์ํ ๋ ํ ๋ฒ ์คํ๋จ
- ์กฐ๊ฑด์ : ๋ฐ๋ณต์ ๊ณ์ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์
- ์ฆ๊ฐ์ : ๋ฐ๋ณต์ด ๋๋ ๋๋ง๋ค ์คํ๋๋ ์
์ด ์์๋ค์ ๋ชจ๋ ์ต์ ์ด๋ฉฐ, ๊ฐ์ ์๋ตํ ์๋ ์์ต๋๋ค. ๋จ, ๋ชจ๋ ๊ฐ์ ์๋ตํ๋ฉด ๋ฌดํ ๋ฃจํ๊ฐ ๋๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค. ๋ํ, ``for`` ๋ฌธ ์์ ๋ ๋ค๋ฅธ ``for`` ๋ฌธ์ ์์ฑํ๋ ์ค์ฒฉ ``for`` ๋ฌธ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
while ๋ฌธ
while (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต ์คํ๋ ๋ฌธ;
}
``while`` ๋ฌธ์ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฉด ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํฉ๋๋ค. ``for`` ๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ์ ํด์ ธ ์์ ๋ ์ ํฉํ์ง๋ง, ``while`` ๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ๋ถ๋ช ํํ ๋ ๋ ์ ์ฉํฉ๋๋ค. ๋ง์ฝ ์กฐ๊ฑด์์ด ํญ์ ์ฐธ์ด๋ผ๋ฉด ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
do...while ๋ฌธ
do {
ํ๋ฒ ์คํ๋๊ณ , ์ดํ ์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ๋ฐ๋ณต ์คํ๋ ๋ฌธ;
} while (์กฐ๊ฑด์);
``do...while`` ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ๋จผ์ ์คํํ ํ, ์กฐ๊ฑด์์ ํ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ฝ๋ ๋ธ๋ก์ด ์ต์ ํ ๋ฒ์ ์คํ๋๋ ํน์ง์ด ์์ต๋๋ค.
๐ถ break ๋ฌธ
``break`` ๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ด๋ ``switch`` ๋ฌธ์ ์คํ์ ์ฆ์ ์ค๋จํ๊ณ ๋น ์ ธ๋์ค๊ฒ ํฉ๋๋ค. ๋ํ, ๋ ์ด๋ธ ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ํน์ ์ฝ๋ ๋ธ๋ก์ ๋ช ์์ ์ผ๋ก ํ์ถํ ์๋ ์์ต๋๋ค.
์ค์ฒฉ๋ ``for`` ๋ฌธ์์ ๋ด๋ถ ๋ฃจํ๋ง ํ์ถํ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ธ ``break`` ๋ฌธ์ ์ฌ์ฉํ์ง๋ง, ์ธ๋ถ ๋ฃจํ๊น์ง ํ์ถํ๋ ค๋ฉด ๋ ์ด๋ธ์ ํ์ฉํ ``break`` ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ถ continue ๋ฌธ
``continue`` ๋ฌธ์ ํ์ฌ ๋ฐ๋ณต๋ฌธ์ ์คํ์ ์ค๋จํ๊ณ , ๋ค์ ๋ฐ๋ณต์ ์์ํ๋๋ก ํ๋ฆ์ ์ ์ดํฉ๋๋ค. ๋จ, ``break`` ๋ฌธ๊ณผ ๋ฌ๋ฆฌ ๋ฐ๋ณต๋ฌธ ์์ฒด๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ๋ค์ ๋ฐ๋ณต์ ๊ณ์ ์ํํฉ๋๋ค.
'๐ Jero's Review > ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
10์ฅ. ๊ฐ์ฒด ๋ฆฌํฐ๋ด (1) | 2025.02.13 |
---|---|
09์ฅ. ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2025.02.13 |
07์ฅ. ์ฐ์ฐ์ (0) | 2025.02.12 |
06์ฅ. ๋ฐ์ดํฐ ํ์ (2) | 2025.02.12 |
05์ฅ. ํํ์๊ณผ ๋ฌธ (0) | 2025.02.11 |