반복문

반복문은 반복되는 작업을 수행시키는 명령문 입니다.

프로그램은 보통 반복적인 작업이 많기에, 반복문은 여러 프로그램에서 다양하게 활용됩니다

printf("%d\n", 1);
printf("%d\n", 2);
printf("%d\n", 3);

...

printf("%d\n", 100);

예시로 1부터 100까지 출력하는 코드를 작성했습니다.

반복문을 사용하지 않고는 1부터 100까지 출력하기 위해 출력 함수를 100번 작성해야 합니다.

하지만 반복문을 활용한다면, 100줄을 모두 작성할 필요가 없습니다.

for(int i = 1 ; i <= 100; i++) {
	printf("%d\n", i);
}

이 3줄의 코드는 위 100줄의 코드와 같은 역할을 하는 것이죠.

이렇게 반복적인 작업을 수행할때, 반복문을 활용합니다.

반복문을 사용할때, 중괄호 내부에서 변수가 선언되었다면 중괄호가 끝난 이후 변수는 다시 사용할 수 없습니다.

변수의 범위(scope) 때문인데(자세하게는 이후에 설명하겠습니다.) 지금은 중괄호 내부에서만 활용 가능하다고 알고 있으시면 되겠습니다.


while

while

조건이 true인 경우 반복하는 반복문입니다.

명령문이 실행될 때, 조건을 검사하고 줄괄호 블럭을 실행합니다.

중괄호 블럭이 끝났을 때, 다시 조건을 검사하고 true인 경우 다시 반복합니다.

위 구조로 계속하여 반복하는 구조를 가지고 있습니다.


int number = 1;

while(number <= 100) {
	number++;
	printf("%d\n",number);
}

1부터 100까지 출력하는 코드입니다.

변수number가 숫자가 출력되기 전에 1씩 더해지는 구조로, number가 101에 도달하면 조건이 false가 되어 반복이 종료 됩니다.

do while

dowhile

조건을 실행블럭이 실행된 이후 검사하는 반복문입니다.

while과 달리, 조건이 false인 경우에도 한 번은 실행이 되기 때문에, 한번 이상 실행되어야 하는 반복문에서 활용할 수 있습니다.


char i;
do {
	printf("'y'를 입력하세요\n");
	scanf("%c", &i);
} while(i != 'y');

y를 입력받을때까지 반복하는 반복문입니다.

최소 한 번은 실행하는 구조이기에, 실행블럭이 실행되어 입력받기 위해 문자열을 출력하고 문자 입력을 받습니다.

for

for

변수를 생성하고 활용할 수 있는 반복문입니다.

for(int i = 0; i < 100; i++) {

}

반복문이 실행될 때, 변수를 생성하고 조건을 검사합니다.

변수를 생성할 수 있는 구조이기 때문에, 일정 횟수를 반복하는 경우에 효과적으로 활용할 수 있습니다.

조건 여부에 따라 실행블럭을 실행한 이후, 괄호 가장 오른쪽에 작성된 코드를 실행합니다.

이곳에 주로 변수의 증감을 활요합니다.

만약 괄호안에 세미콜론(;)이 2개가 아닌 경우엔 에러가 발생합니다.


for (; i < 100;){

}

만약 변수와 행동이 필요없다면, 비워둘 수 있습니다.


for(int i = 1 ; i <= 100; i++) {
	printf("%d\n", i);
}

처음 반복문을 설명할때 사용했던 1부터 100까지 출력하는 코드 입니다.

다른 반복문과 다르게 변수생성, 실행 이후 행동을 할 수 있어 다양하게 활용할 수 있습니다.


for(int i = 1; i <= 100; printf("%d\n", i++)) {}

주로 활용되는 방식은 아니지만, 예시로 사용했습니다.

실행블럭을 작성하지 않았지만, 위 코드와 같은 코드입니다.


반복문의 제어문

continue

for (int i = 0 ; i< 100; i++) {
	if(i == 0) {
		continue;
	}
	...
}

한 번의 반복 사이클을 종료하는 제어문입니다.

사이클이 종료되기 때문에, continue이후의 코드는 무시되고 다시 반복을 시작합니다.

조건을 검사하고 for 반복문의 경우 행동도 같이 실행됩니다.

예시

for (int i = 1; i <= 100>; i++) {
	if(i % 2 == 1) {
		continue;
	} 
	printf("%d\n", i);
}

1부터 100까지 정수중, 짝수만 출력하는 코드입니다.

조건문if(i % 2 == 1)에서 홀수는 continue을 실행하게 되어 출력함수에 도달하지 못하기 때문에, 짝수만 출력됩니다.


break

for (int i = 0 ; i< 100; i++) {
	if(i == 37) {
		break;
	}
	...
}

조건문 switch에서도 사용했던 제어문입니다.

break는 반복문을 종료하는 제어문입니다.

continue와 동일하게 이후 코드는 모두 무시되지만, 반복문이 종료된다는 차이점이 있습니다.

한 블럭을 종료하는 제어문이기 때문에, switch문과 반복문을 같이 활용하여도 해당 블럭만 종료됩니다.

무한 반복문

while(1) {
	...
}
for(;;) {
	...
}
do {
	...
} while(1);

반복문의 조건이 항상 true인 경우, 이를 무한 반복문(무한루프)이라 합니다.

반복의 끝이 없을때 활용할 수 있는 코드입니다.

위에서 설명한 break제어문을 활용하면 유연한 프로그램을 작성할 수 있습니다.

하지만, 잘못 사용되면 프로그램이 과부화될 수 있어 주의해야 합니다.

만약 반복 종료 조건이 없는 경우 무한 반복문보다 아래에 코드를 작성하면 그 코드는 절대 실행되지 않습니다.

이중 반복문

for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 10; j++) {
		...
	}
}

반복문 내부에 반복문이 있는 경우, 이를 이중 반복문이라 합니다.

적절하게 사용하면 프로그램을 유연하게 작성할 수 있지만, 비효율적인 코드가 될 수 있어 주의해야 합니다.

예시

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

구구단을 출력하는 코드 입니다.

한 번의 사이클에 반복문이 존재하여 i단이 출력되고, 그 다음 사이클에서 i + 1단이 출력되는 구조를 가지고 있습니다.


for (int i = 0; i < 5; i++) {
	for (int j = 0; j < (i + 1); j++){
		printf("*");
	}
	printf("\n");
}

구구단과 함께 주로 활용되는 계단을 출력하는 코드 입니다.

각 층 + 1번 *를 출력하며 계단 모양을 만드는 구조 입니다.



💡 지적 환영합니다

Comments