Post

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부터 시작한다는 뜻이 된다. 그리고 그 다음은 언제까지 실행을 할 지를 나타낸다. 여기에서는 i100이하일 때까지 조건문을 반복시행하게 된다. 보통 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;}이므로 i101이 되는 순간 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;}가 있는데, i4로 나눈 나머지가 0이 아닌 경우는 continue;, 즉 넘어가라는 뜻이다. continue;for문을 끝내지 않고 그냥 넘어가라는 명령어다.

여기까지 썼을 때는 C언어에 while문이 없나? 싶었는데 while문도 있었다. while문은 다음 시간에 알아보도록 하자.

This post is licensed under CC BY 4.0 by the author.