[C언어] for문 사용법 & 예제 총정리

 반복문 종류 

반복문의 종류로는 for문, while문 do-while문이 있습니다. 어떤 상황이냐에 따라 반복문의 문법을 결정하여 코딩을 하게 되는데요. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 상관은 없습니다만 for문은 반복횟수를 명확히 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복 횟수를 결정해야 할 때 주로 사용하게 되는 것 같습니다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐만 다를 뿐 기본적인 로직은 같습니다. do-while은 솔직히 잘 쓰지는 않는 것 같아요. 대부분 for문과 while문을 많이 쓰게 되는데 특히 for문을 가장 많이 사용하게 됩니다. 그 이유는 for문이 while문 보다 좀 더 가독성이 좋고 사용하기도 가장 편하기 때문입니다..

 

 for문 작동방식(흐름) 

for문 흐름

 

실행순서

①초기화식이 제일 먼저 실행됩니다. 그런 뒤 ②조건식을 평가해서 true이면 ③실행문을 실행시키고 false이면 for문을 종료합니다. 만약 실행문이 실행되었다면 블록 내부의 ③실행문을 모두 실행시키고 ④증감식을 실행시킨 뒤 다시 ②조건식을 평가하게 됩니다.

 

for문 문법

//문법
for(초기화식; 조건식; 증감식){
    실행문; 
}

//사용법
for(int i=0;i<10;i++){
    printf("%d\n",i);
}

 

for문의 생략

꼭 저렇게 딱딱 문법에 맞춰서 써야 하는 건 아닙니다. 상황에 따라 초기화식, 조건식, 증감식, 실행문의 블록등 여러 가지 코드를 생략할 수도 있습니다.

//초기화식 생략
int i=0;
for(;i<10;i++){
    printf("%d\n",i);
}

//조건식 생략(무한루프에 빠지게됩니다.)
for(int i=0;;i++){
    printf("%d\n",i);
}

//증감식 생략(무한루프에 빠지게됩니다.)
for(int i=0;i<10;){
    printf("%d\n",i);
}

//실행문이 한라인일 경우 { } 대괄호 생략 가능
for(int i=0;i<10;i++)
    printf("%d\n",i);

 

구구단 만들기

#include
int main(){
	for(int i=1;i<10;i++){
		for(int j=1;j<10;j++){
			printf("%d * %d = %d\n",i,j,i*j);	
		}
		printf("\n");
	}
		
}

구구단

 

 반복문 생략과 탈출(break, continue, return) 

for문을 사용할때 break문 continue return같은 제어 이동문을 같이 사용합니다. 
#include
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			printf("Inner Loop\n");
		}
		printf("Outter Loop\n");
	}
}

이중포문

일반적인 2중 for문입니다. 내부 for문 5번을 돌고 외부 for문 5번을 돌아 5*5 총 25번을 반복합니다.

 

break문

#include
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			printf("Inner Loop\n");
			break;
			printf("brea문 뒷 코드는 실행되지 않습니다.\n");
		}
		printf("Outter Loop\n");
	}
}

break문

break문은 가장 가까운 loop를 탈출합니다. 윗 코드의 결과를 보시면 Inner Loop를 들어온 뒤 break문을 타 Inner Loop문이 탈출되어 바로 Outter Loop로 직행하시는 것을 보실 수 있습니다. break문이 있는 블록에서 break문이 실행되고 난 뒤의 코드는 실행되지 않습니다.

 

continue문

#include
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			printf("Inner Loop\n");
			continue;
			printf("continue문 뒷 코드는 실행되지 않습니다.\n");
		}
		printf("Outter Loop\n");
	}
}

continue문

그냥 일반적인 이중포문을 실행시켰을 때와 같은 결과가 나왔습니다. break문이 반복문이 실행되는 블록을 종료시키고 탈출하였다면 continue문은 해당 반복문의 다음 반복으로 직행합니다. continue문을 실행했을 때의 차이점이라면 continue가 나오는 순간 바로 다음번째 반복으로 넘어가기에 continue문 뒷부분의 내용은 실행되지 않는다는 점입니다.

 

return문

#include
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			printf("Inner Loop\n");
			return 0;
			printf("메서드가 종료됩니다.\n");
		}
		printf("Outter Loop\n");
	}
}

return문

return문은 그 즉시 해당 메서드 자체를 빠져나옵니다. 만약 main에서 return을 하였다면 main함수를 빠져나오기에 프로그램이 종료되는 효과를 볼 수 있습니다. 해당코드에서는 return을 하기 전 Inner Loop를 단 한 번만 찍고 프로그램이 종료가 된 것을 보실 수 있습니다.

 

for문 관련 연습은 별 찍기라는 알고리즘 풀이를 통해 연습하실 수 있습니다.

[C언어] 별찍기 예제 (For문 연습)

[Java] 별찍기 예제 (For문 연습)

 

댓글

Designed by JB FACTORY