같은 처리를 반복하기 위해 사용하는 for문에 대해 살펴보겠습니다.
반복문을 사용하는 이유는 같은 처리를 해야 하는 경우 똑같은 처리를 몇 번이고 작성하는 것은 비효율적입니다.
예를 들어 Hello World를 백번 출력하려고 할 때 printf를 100번 작성해야 합니다.
하지만 for문을 사용해 100번이든 1000번이든 같은 처리를 간단하게 할 수 있습니다.
for문 사용법
먼저 for문의 작성 방법을 보겠습니다.
for (변수의 초기값; 조건; 변수의 연산)
{
반복 작업할 코드
}
for문에서 사용할 변수를 선언합니다.
조건에는 for문이 얼마큼 반복될지 조건식을 지정합니다.
변수의 연산에는 for문에서 선언한 변수가 어떠한 형태로 증가하거나 감소할지 설정합니다.
Hello World를 백번 출력해보겠습니다.
#include <stdio.h>
int main(void) {
for(int i =0; i<100 ; i++){
printf("Hello World \n");
}
}
결과
Hello World를 100번 출력했습니다.
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);
또한 for문 안에 for문을 사용하는 다중 반복 처리도 가능합니다.
다중 반복 처리를 사용해 구구단을 출력해보겠습니다.
#include <stdio.h>
int main(void) {
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 <stdio.h>
int main(void) {
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("Inner Loop\n");
}
printf("Outter Loop\n");
}
}
결과
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
일반적인 2중 for문입니다.
내부 for문 5번을 돌고 외부 for문 5번을 돌아 5*5 총 25번을 반복합니다.
break
위 예제를 가지고 break문을 사용해보겠습니다.
break문은 가장 가까운 반복문을 탈출합니다
#include <stdio.h>
int main(void) {
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("Inner Loop\n");
break;
printf("break문 뒷 코드는 실행되지 않습니다.\n");
}
printf("Outter Loop\n");
}
}
위 코드의 결과를 보면 Inner Loop를 들어온 뒤 break문을 타 Inner Loop문이 탈출하고 바로 Outter Loop로 직행하는 것을 볼 수 있습니다.
break문이 있는 블록에서 break문이 실행되고 난 뒤의 코드는 실행되지 않습니다.
continue
break문은 반복문이 실행되는 블록을 종료시키고 탈출하였다면 continue문은 해당 반복문의 다음 반복을 실행합니다.
#include <stdio.h>
int main(void) {
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");
}
}
결과
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Inner Loop
Outter Loop
continue문을 실행했을 때의 차이점이라면 continue가 나오는 순간 바로 다음번째 반복으로 넘어가기 때문에 continue문 뒷부분의 내용은 실행되지 않는다는 것입니다.
return
return문은 그 즉시 해당 메서드 자체를 빠져나옵니다.
#include <stdio.h>
int main(void) {
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");
}
}
결과
Inner Loop
main에서 return을 하였다면 main함수를 빠져나오기 때문에 프로그램이 종료됩니다.
해당 코드에서는 return을 하기 전 Inner Loop를 단 한 번만 찍고 프로그램이 종료가 된 것을 볼 수 있습니다.
만약 함수에서 for문에 return을 설정하였다면 함수가 종료됩니다.
댓글