어제의 조건문에 이어서 오늘은 반복문에 대해서 배워보려한다. 반복문의 첫번째는 while문이다. while문은 다음과 같은 순서로 작성된다.
while ( 조건식 )
{
명령어1;
...
}
여기서 짚고 넘어가야할 국룰이 있다. 반복문의 순회 변수로는 i를 자주 쓴다는 점은 꼭 짚고 넘어가야한다.
두번째는 for문이다 for문은 다음과 같이 작성된다.
for(초기식; 조건식; 증감식)
{
명령어1;
...
}
다음으로는 do-while문이 있다. do-while문은 일단 조건식 검사 없이 1회 순회 후에 조건식 검사 후 다음 순회를 진행하며 다음과 같이 작성한다.
do
{
명령어1;
...
} while (조건식)
do-while문은 해시테이블 구현 같은 경우에서 요긴하게 사용된다고 한다. 대부분의 경우에는 for문 순회하는 변수가 필요 없는 경우엔 while문, 일단 조건식 검사 없이 1회 순회 후부터 조건식 검사해야하는 경우에는 do-while문을 사용한다.
다음으로는 무한 반복문이 있다 for문이나 while문으로 구현가능하며 while문으로 구현하는 경우가 많다고 한다.
1. while문으로 구현한 무한반복문
while (1)
{
명령어1;
...
}
2. for문으로 구현한 무한반복문
int i;
for (i = 1; 1; ++i)
{
명령어1;
...
}
여기서 주의해야할 것은 무한하게 도는것은 아주 위험하기 때문에 break 구문을 통해서 멈춰줘야한다는 것이다.
break는 반복문이나 switch-case문에서 탈출할 때 사용하는 구문으로 해당 스코프에서 탈출하게한다.(다중 반복문 전체를 탈출하는게 아니다)
다음으로 배울것은 이중 반복문이다. 순회 변수로는 i, j, k, ... 순으로 작성되며 다음과 같이 작성한다.
int i, j;
for ( i 초기식; i조건식 ; i증감식)
{
for ( j 초기식; j 조건식 ; j 증감식}
{
명령어;
...
}
}
이중 반복문은 줄의 개수를 파악하고 줄 번호 매기기, 각 줄의 칸 개수를 파악하고 칸 번호 매기기, 각 칸의 출력을 적는 습관을 들이면 작성에 용이하다고한다. 이중반복문을 조금 변형하면 반복문 안에 반복문이 여러개 들어가 있게끔 작성할 수도 있다.
int i, j, k
for ( i 초기식; i 조건식 ; i증감식)
{
for ( j 초기식; j 조건식 ; j 증감식)
{
작은 명령어1
...
}
for ( k 초기식; k 조건식 ; k 증감식)
{
작은 명령어2
...
}
}
예제를 풀어보자


다음과 같이 위는 while문 아래는 for문이다 둘의 결과는 모두 1234가 순서대로 나오게 될것이다.

다음 예제는 continue를 이용한 예제이다

while과 if를 이용한 문제이다. i는 초기값이 0으로 선언한 상태에서 while문에 진입하면 조건이 1이므로 true이고 while구문이 실행된다. 첫번째 if의 조건은 2로 나눈 나머지가 1인지 물어보기에 0을 2로 나누면 나머지는 0 false이므로 두번째 if문으로 넘어간다 두번째 if문은 5보다 i가 크거나 같은지 물어보기에 당연히 false i값을 출력하고 ++i로인해 i값이 1이 증가한다 이를 반복하면
0, 2, 4의 값이 출력될 것이다.

다음 예제를 보도록하자

이번엔 for문을 이용한 이중 반복문이다. i, j를 변수로 선언 후 첫번째 for문에서 i는 1로 시작한다 그 다음 두번째 for문을 진행할때 마찬가지로 j도 1로 시작하여 j가 3보다 작거나 같으면 *을 출력하고 두번째 for문의 명령이 끝났으므로 두번째 for문의 처음으로 돌아간다.(아직 첫번째 for문의 명령은 안끝났다) 마찬가지로 반복하여 j는 2가되고 *이 출력되고 j값이 1추가되어 반복 j가 3이 될때까지 반복된다. j가 4가되어 for의 조건문을 충족하지 못하기 때문에 그 다음줄로 이행하면 줄바꿈을 하게 되어있다. 그러면 첫번째 for문의 명령도 종료되어 다시 첫번째 for문 부터 시작 i값에 1이 추가되어 두번째 for문으로 이동 또 반복...
이런식으로 하다보면 결과적으로 3행 3열의 모든 값이 *인 행렬이 나올것이다
***
***
***
이런 형태로

다음 예제를 보자

참고로 이중 반복문의 꿀팁은 다음과 같다.
1. 줄의 개수를 파악하고 줄 번호 매기기
2. 각 줄의 칸 개수를 파악하고 칸 번호 매기기
3. 각 칸의 출력을 적기
이를 이용하여 어떻게 소스코드를 짤지 구상해보자 일단 변수는 i와 j를 선언해준다. 위의 예제처럼 for문을 이용한 이중 반복문으로 i는 3보다 작거나 같을 때 까지, j는 4보다 작거나 같을때 까지 반복하게 해주면 될것이다. 문제는 각 항마다 커지는 숫자인데 j의 값을 그대로 printf();를 이용하여 출력하자니 줄이 바뀌면 다시 j는 1부터 시작한다. 이를 해결하기위해 cnt를 이용해보았다

인수로서 cnt를 1로 선언해주고 두번째 for문이 실행될 때마다 십진수의 형태로 cnt의 값을 출력해주는것 그리고 cnt++을 통해서 다음의 cnt값은 +1이 된다면 다음과 같이 나온다.

다음 예제를 보자

이번엔 변수가 하나 늘었지만 다를건 없다
공백 공백 *
공백 * *
* * *
가 될 것이다

'unreal 5기' 카테고리의 다른 글
| 250819 언리얼엔진 본캠프 11일차 포인터 (2) (0) | 2025.08.19 |
|---|---|
| 250818 언리얼엔진 본캠프 10일차 포인터 (1) (1) | 2025.08.18 |
| 250813 언리얼엔진 본캠프 8일차 C언어를 배워보자 (2) (7) | 2025.08.13 |
| 250812 언리얼엔진 본캠프 7일차 C언어를 배워보자 (5) | 2025.08.12 |
| 250811 언리얼엔진 본캠프 6일차 캐릭터 카메라를 다뤄보자! (4) | 2025.08.11 |