[C++] 반복문 (for, while, do While)

목차

  1. for문 사용
  2. while문 사용
  3. do while문 사용

1. 반복문

- for 문이란

for 루프는 반복문의 일종으로, 특정한 부분의 코드가 반복적으로 수행될 수 있도록 합니다.
일반적으로 해당 루프에 연계된 루프 변수가 존재하며, 그 변수의 비교 및 증감을 위해 별도의 문법을 할애한 점이 구분됩니다.

- for문 코드 구성요소

for문에는 초기화, 조건식, 증감문 3가지를 활용하여 사용할 수 있으며 사용시에는
for( 초기화 ; 조건식 ; 증감문) 으로 이루어집니다.
조건식을 제외한 초기화 및 증감문은 for( ) 안에서 꼭 이루어질 필요는 없지만 초기화 및 증감문은 for문 안밖에서는 해주셔야합니다.

for문은 위 그림 과 같이 흐르게 됩니다.

- for 문 코드

#include <Iostream>

int main(void) {
	for (int i = 0; i < 10; i++) {
		std::cout << i << "\n";
	}
   return 0;
 }

위 코드에 for 문을 보겠습니다.

int =0 은 위 설명에서 초기화에 해당합니다.

i < 10은 조건식에 해당하고

i++ 은 후위증감연산자로 증감문에 해당합니다.

for문안에서 std::cout << i << "\n"; 은 i값을 출력시키고 줄바꿈을 하는것입니다.

 

위 코드를 해석해보겠습니다.

1. int형 i를 0으로 초기화를 시킨다. - 초기화

2. 조건식대로 i가 10보다 작은지 판단한다. - 조건식

3. i값을 출력시키고 줄바꿈을 한다. - 조건식에 해당하니 for문안에 출력문 실행

4. 증감문대로 i값을 후위연산자로 1 증가한다. -> 증감문에의해 i값이 1이 됩니다.

5. 이젠 조건식으로 다시가서 i(=1)이 10보다 작은지 판단한다. - 조건식

6. 조건에 해당하니 i값을 출력시킨다. - 출력문실행

7. i 값을 증가시킨다. - i는 2가 됩니다. 증감문

8. 다시 조건식으로 가서 i(=2)가 10보다 작은지 판단한다.

. . . . . .

i값이 조건식(10보다 작다)에 해당하지 않으면 for문을 탈출하여 return 0; 을 만나 프로그램이 종료된다.

 

 

대충 흐름을 보시고 감이 잡히시나요?

위에 for문 흐름도 그림과 코드의 흐름을 비교하여 보시면 이해하기 수월합니다.

그럼 저 코드를 실행한 결과를 보겠습니다.

0부터 시작하여 조건식과 증감문을 흐르다가 i값이 10이 되니 조건식에 해당하지 않아서 return되어 프로그램이 종료된 결과입니다.

 


- while 문

While 루프는 반복문의 일종으로, 주어진 bool 자료형 조건을 기반으로 코드가 반복적으로 수행 할 수 있게 도와줍니다.

위 그림은 While문 흐름도 입니다.

- while 문 코드

#include <Iostream>

int main(void) {
	std::cout<<"반복문 시작"<<"\n";
	int i = 0;
	while (i < 5) {
		std::cout << i << "\n";
		i++;
	}
   return 0;
}

while문은 for문과 달리 조건식만 들어갑니다. 그래서 초기화를 미리 해주시고 증감식은 while문 안에서 하도록 합니다.

while문 설명에서 bool 자료형 조건 기반이라고 했는데, 이는 i < 5 가 참일경우 bool 값인 true와 false로 while문을 실행할지 말지 결정하게 됩니다. true일경우 실행이고 false면 while문을 탈출합니다.

 

int형 i 값을 초기에 0으로 초기화시킨후,

while문에서 조건에 맞는지 판단 후 true를 반환하면 while문 실행 / false 반환시 탈출하게 되며 

4를 출력시킨 후 i++로 증감시켰을 때 i값이 5가 되며 조건문에서 false를 반환하게되어 탈출하여 프로그램이 끝난 모습입니다.


- do While문

do while문은 while문과 동일하지만 차이점이라고 한다면 while문은 첫 시작에서 조건에 해당하지않으면 바로 탈출하여 실행을 안할 수 있지만, do while문은 반드시 한번은 실행한다는 것입니다.

 

코드로 보겠습니다.

#include <Iostream>

int main(void) {
	std::cout<<"반복문 시작"<<"\n";

	int i = 0;

	do {
		std::cout << i << "\n";
		i++;
	} while (i < 5);
	
	return 0;
}

do { 실행문 } while(조건문) 으로 되있는 구조입니다.

 

출력 결과는 while문과 동일합니다.

 

위 설명에서 반드시 한번은 실행한다는 설명은 while문은 i < 0 일때 출력문 자체를 출력시키지 않지만

do while문은 조건문이 똑같이 i < 0이여도 위에서 아래로 읽어오는 컴파일의 특성상 출력문을 반드시 한번은 실행 시킨 후 조건문으로 가기 때문에 반드시 한번은 실행한다는 것 입니다.

#include <Iostream>

int main(void) {
	std::cout<<"반복문 시작"<<"\n";

	int i = 0;

	do {
		std::cout << i << "\n";
		i++;
	} while (i < 0);
	
	return 0;
}

위 코드의 출력 결과입니다.

원래라면 조건식에 해당하지 않으니 바로 탈출해야하지만 출력문이 조건문보다 먼저 읽히므로 출력되는 모습을 볼 수 있습니다.

 

이상입니다.