๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ํ๋ ๋งํผ ๋ฐ๋ณต ๊ตฌ๋ฌธ์ ์คํํ ์ ์๋ค. ์ํฉ์ ๋ฐ๋ผ์ ๋ฌดํ๋ฃจํ๋ฅผ ์คํ ํ ์ ์๋ค.(์๋ฒ ํ๋ก์ธ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌดํ๋ฃจํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๊ณ ์๋ค.)
๋ํ ์ฌ๊ท๋ผ๋ ๊ฐ๋ ๋ ๋ฐ๋ณต์ผ๋ก ๋ณผ ์ ์์ผ๋ฉฐ ์ฌ๊ท๋ ๋ฐ๋ก ํฌ์คํ ์ ํ ์์ ์ด๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ชฉ์ ์ด ๋ฐ๋ณต์ ์ธ ์์ ์ ์ต์ํํ๋๋ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋งค์ฐ ๋น๋ฒํ๊ฒ ์ฐ์ธ๋ค. ๊ทธ๋งํผ ์ค์ํ๋ค๊ณ ํ ์ ์๊ณ ์ ์คํ ์จ์ผํ ๊ฒ์ด๋ค.
๋ฐ๋ณต๋ฌธ์ด ์ค์ฒฉ๋๋ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์๊ฐ๋ณต์ก๋(Big-Oํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ์๊ฐ๋ณต์ก๋๋ฅผ ๋งํ๋ค.)๊ฐ ๋์ด๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ต์ ํ๋ฅผ ์งํํ๋ค๋ฉด ๋ฐ๋ณต์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ทธ๋งํผ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผ ํ ๊ฒ์ด๋ค.
# for๋ฌธ(for-loop)
// C++
#include <iostream>
for ( int idx = 0; idx < 10; idx++ )
{
std::cout << idx << ",";
}
์ ์์ ๋ ์ ํ์ ์ธ for๋ฌธ์ ์์ ์ด๋ค.(c/c++ ๋ชจ๋ ๋ฌธ๋ฒ์ ๊ฐ๊ณ , ๋ฐ๋ณต๋ฌธ ๋ณธ์ฒด๋ c++๋ก ํํํ๋ค)
for ์กฐ๊ฑด ๋ด ์ธ๋ฏธ์ฝ๋ก (;) ๋๊ฐ๋ฅผ ๋ณผ ์ ์๋ค. ์ธ๋ฏธ์ฝ๋ก ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ๋ถํฐ 1,2,3๋ฒ์ด๋ผ๊ณ ์นญํ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋ณธ์ฒด๋ฅผ 4๋ฒ์ด๋ผ๊ณ ์นญํ๊ฒ ๋ค.
1๋ฒ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ณต๋ฌธ์ ์ํํ ์ธ๋ฑ์ค์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํ๋ค.
2๋ฒ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํ ๋ฐ๋ณต์ ์กฐ๊ฑด์ ํํํ๋ค. ์ด ๋ถ๋ถ์ ๋ ผ๋ฆฌํ๋จ์ด๋ฏ๋ก true์ด๋ฉด ๋ฐ๋ณต๊ตฌ๋ฌธ์ ์งํํ๊ณ , false์ด๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋๊ฐ๋ค.
3๋ฒ์์๋ ์ธ๋ฑ์ค์ ์ฆ๊ฐ์ ํตํด ๋ฐ๋ณต์ ๋ค์ ๋จ๊ณ๋ก ๋์๊ฐ๋ค.
4๋ฒ์์๋ ๋ฐ๋ณต์ ์งํํ ๊ตฌ๋ฌธ์ ๋ํ๋ธ๋ค.
์ ์์ ์์๋ ์ธ๋ฑ์ค๊ฐ 0๋ถํฐ ์์ํด์ 10๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ง ๋ฐ๋ณต๊ตฌ๋ฌธ์ ์งํํ๋ค. ํ๋ฒ ๋ฐ๋ณต๊ตฌ๋ฌธ์ด ์งํ๋ ๋๋ง๋ค ์ธ๋ฑ์ค๋ 1์ฉ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด 10๋ฒ์ ๊ฑธ์ณ์ ์ฆ๊ฐ๋ ์ธ๋ฑ์ค๊ฐ ์ถ๋ ฅ๋๋ค.(0,1,2,3,4,5,6,7,8,9,)
for๋ฌธ์ด ์งํ๋๋ ์์๋ 1(์ธ๋ฑ์ค ์ด๊ธฐํ) → 2(๋ฐ๋ณต ์กฐ๊ฑด ํ์ธ) → 4(๋ฐ๋ณต ๊ตฌ๋ฌธ ์คํ) →3(์ธ๋ฑ์ค ์ฆ๊ฐ) → 2(๋ฐ๋ณต ์กฐ๊ฑด ํ์ธ) → 4(๋ฐ๋ณต ๊ตฌ๋ฌธ ์คํ) →3(์ธ๋ฑ์ค ์ฆ๊ฐ) ... ์์ผ๋ก ์งํ๋๋ค.
์ฆ, ์ด๊ธฐํ์ ์ดํ๋ก 2, 4, 3 ์์ผ๋ก ๋ฐ๋ณต ์กฐ๊ฑด์ ํด๋นํ๋ ๋งํผ ๋ฐ๋ณต์ด ์งํ๋๋ค.
// C/C++
// ์ด๊ธฐํ ์๋ต
int idx = 0;
for (; idx < 10; idx++)
{
printf("%d, ", idx);
}
// ๋ฐ๋ณต ์กฐ๊ฑด์ ์๋ต
for (int idx = 0;; idx++)
{
printf("%d, ", idx);
}
// ๋ฐ๋ณต ์งํ์ ์๋ต
for (int idx = 0; idx < 10;)
{
printf("%d, ", idx);
}
// ๋ชจ๋ ์๋ต
for (;;)
{
printf("%d, ", idx);
}
์ ์์ ์์๋ ์ด๊ธฐํ์, ์กฐ๊ฑด์, ์งํ์์ ์๋ตํ๋ค. ๋ฌธ๋ฒ์์ผ๋ก ๋ฌธ์ ๋ ์์ผ๋ ์ด๊ธฐํ์์ ์ ์ธํ ๋ชจ๋ ๋ฐ๋ณต๋ฌธ์ ๋ฌดํ๋ฃจํ๋ก ๋น ์ง๊ฒ ๋๋ค.
// C++ 11
#include <vector>
std::vector<int> vec = {0,1,2,3,4,5};
for ( int val : vec )
{
printf("%d, ", val);
}
์ ์์ ๋ c++ 11์์ ์๋ก ๋์ ๋ ๋ฒ์๊ธฐ๋ฐ for๋ฌธ์ ๋ํ๋ด๊ณ ์๋ค. ๋ด๋ถ์ ์ผ๋ก ๋ฐ๋ณต์(iterator)๋ฅผ ์ฌ์ฉํ๋ฉฐ, begin(), end()๋ฅผ ๊ฐ์ง STL(c++ standard library)์ปจํ ์ด๋์ ๊ฒฝ์ฐ ๋ฒ์๊ธฐ๋ฐ for๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
STL(c++ standard library)์ปจํ ์ด๋๋ ๋ํ์ ์ผ๋ก std::vector, std::array, std::map, std::set ๋ฑ์ด ์๋ค.
๋ฒ์ ๊ธฐ๋ฐ for๋ฌธ์ ๊ฐ๋จํ๊ฒ ์๋ฃ๊ตฌ์กฐ์ ์์๋ค์ ์ ๊ทผํ ์ ์๋ ์ฅ์ ์ด ์๋ค. ๋ค๋ง begin๋ถํฐ ๋ชจ๋ ์์๋ฅผ ์์ฐจ์ ์ผ๋ก ์ํํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ for๋ฌธ ์ฒ๋ผ ํน์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ๋ณต ๊ตฌ๋ฌธ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ํ ์๋ ์๋ค.(๋ฌผ๋ก ์ด๊ฒ๋ ๋ฐ๋ณตํ๋ ์์๋ฅผ ๋น๊ตํด์ ์กฐ๊ฑด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ์ง ๋ชปํ๋ ๊ฒ์ ์ด์ผ๊ธฐํ๊ณ ์ถ๋ค.)
# ํ๋ฆ์ ์ด๋ฌธ(flow control statements)
ํ๋ฆ์ ์ด๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ ์ค ํ๋ฆ์ ๋๊ฑฐ๋ ๊ฑด๋ ๋ธ ์ ์๋ '์ง์ ์'๋ฅผ ๋ปํ๋ค.
ํฌ๊ฒ continue์ break๊ฐ ์๋ค. goto๋ฌธ์ ๋ค๋ฃจ์ง ์๊ฒ ๋ค.(์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋งํ๋ฉด ์ฐ์ง ์๋ ๊ฒ์ด ์ฌ์ ์ ์ข๋ค.)
# continue
#include <stdio>
for ( int idx = 0; idx < 10; idx++ )
{
if ( idx % 2 == 1 )
continue;
printf("%d, ");
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
0, 2, 4, 6, 8,
์ ์์ ๋ ํ์์ ๊ฒฝ์ฐ ์ถ๋ ฅํ์ง ์๊ณ ๊ฑด๋ ๋ด๋ค.
๋ฐ๋ณต ๊ตฌ๋ฌธ ๋ด์์ continue๋ฅผ ๋ง๋๋ฉด ํด๋น ๋ฐ๋ณต์ ์ฆ์ ๊ฑด๋๋ฐ๊ณ ๋ค์ ๋ฐ๋ณต์ ์งํํ๋ค. continue๋ฅผ ํตํด์ ์์น ์๋ ๋ฐ๋ณต์ ๊ฑด๋ ๋ธ ์ ์๋ค.
# break
#include <stdio>
for ( int idx = 0; idx < 10; idx++ )
{
if ( idx % 2 == 1 )
break;
printf("%d, ");
}
์ถ๋ ฅ๊ฒฐ๊ณผ
0,
๋ฐ๋ณต๋ฌธ ๋ด์์ break๋ฅผ ๋ง๋๋ฉด ์ฆ์ ๋ชจ๋ ๋ฐ๋ณต์ ์ข ๋ฃํ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ๋ค. ์ ์์ ์์๋ ํ์์ ๊ฒฝ์ฐ break๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ idx == 1์ผ ๋ break๋ฅผ ๋ง๋๊ณ , ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ๋ค.
break๋ฅผ ํตํด ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ํ๋ ์์ ์ ๋๋์ ๋, ๋ถํ์ํ ๋จ์ ๋ฐ๋ณต์ ๊ฑด๋๋ธ ์ ์๋ค.
# break๋ switch๋ฌธ์์๋ case๋ฅผ ๋น ์ ธ๋๊ฐ ๋ ์ฐ์ธ๋ค.
# continue์ break๋ if๋ฌธ์์๋ ์ธ ์ ์๋ค.
'C++ ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++] 6. ์ํธ๋ฆฌ ํฌ์ธํธ(Entry point)(feat. argc/argv) (0) | 2021.04.05 |
---|---|
[C/C++] 5. ๋ฐ๋ณต๋ฌธ(Iteration statements) - while๋ฌธ(while loop) (0) | 2021.04.03 |
[C/C++] 3. ์กฐ๊ฑด๋ฌธ(Conditional statement) (0) | 2021.03.18 |
[C/C++] 2. ํ์ ๊ณผ ์ฐ์ฐ์(Type & Operator) (0) | 2021.03.12 |
[C/C++] 0. ์คํํ์ผ์ด ๋ง๋ค์ด์ง๋ ๊ตฌ์กฐ(feat. ์ปดํ์ผ๋ฌ) (0) | 2021.03.10 |
๋๊ธ