C언어 for문 알아보기
#C #for #Loop
이제 프로그래밍 언어의 핵심 조건문을 공부해볼 차례다. 우선 다음과 같은 코드를 입력해본다.
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main() {
int i, sum = 0;
for (i=1; i<=100; i++) {
sum = sum + i;
}
printf("sum over 1 to 100 is %d. \n", sum);
return 0;
}
이 때 sum over 1 to 100 is 5050.
이라고 결과가 뜨면 잘 실행된 것이다.
1. for
for
문은 R과 비슷하게 생겼다. 기본적으로 for(조건){명령어}
형태로 조건이 참인 동안 반복해서 명령어를 실행하는 함수다. 하지만 조건문이 조금 다르다. 우선 첫번째는 처음 실행할 조건을 나타낸다. i=1
부터 시작한다는 뜻이 된다. 그리고 그 다음은 언제까지 실행을 할 지를 나타낸다. 여기에서는 i
가 100
이하일 때까지 조건문을 반복시행하게 된다. 보통 R이나 MATLAB등에서는 i=1:100
과 같이 표현을 하는데, C언어에서는 다른 언어의 while
문처럼 표현을 해줘야 한다는게 특징인 것 같다. 여기에서 i=100
으로 입력하고 실행을 했더니 오류가 떴다. 마지막 구간은 변수의 증감을 나타내는 부분이다. 산술 연산 파트에서 공부했던 것처럼 i++
로 표기했을 때는 +1
씩 변한다는 뜻이다.
그러면 다음과 같이 코드를 짜면 어떻게 될까?
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main(){
int i=1;
for (;;) {
printf("%d ", i);
i++;
if (i>100) {
break;
}
}
return 0;
}
여기에서 for에는 어떤 조건문도 없다. 즉 이 루프는 항상 실행된다는 뜻이다. (MATLAB의 while
문과 동일한 역할을 하는 것 같다.) 무한 반복을 방지하기 위해 break
가 들어가있는데, if
문은 예상할 수 있듯 조건이 참인 경우에만 실행하는 조건문이다. 즉 if (i>100) {break;}
이므로 i
가 101
이 되는 순간 for
문이 종료된다. 이 코드를 실행하면 1부터 100까지가 프린트됨을 확인할 수 있다.
break
대신 continue
를 쓰는 코드도 짜볼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main() {
int i;
for (i = 1; i <=100; i++) {
if (i % 4 != 0) {
continue;
}
printf("%d ", i);
}
return 0;
}
이렇게 코드를 짜면 1
부터 100
까지의 숫자 중에 4의 배수에 해당하는 값만 출력을 해준다. for
문은 아까와 똑같으니 넘어가보면 if (i%4 != 0){continue;}
가 있는데, i
를 4
로 나눈 나머지가 0
이 아닌 경우는 continue;
, 즉 넘어가라는 뜻이다. continue;
는 for
문을 끝내지 않고 그냥 넘어가라는 명령어다.
여기까지 썼을 때는 C언어에 while
문이 없나? 싶었는데 while
문도 있었다. while
문은 다음 시간에 알아보도록 하자.