본문 바로가기
서적 정리/C++ 기초 플러스

22.for 루프

by 민돌이2 2022. 9. 13.

C++의 for 루프를 사용하면 반복 작업을 쉽게 처리할 수 있다.

int main()
{	
	for (int i = 0; i < 5; i++)
		std::cout << i << " ";
	std::cout << std::endl;

	return 0;
}

결과

위 코드는 정수형 i가 0으로 초기화하여 5보다 작으면 실행하고, 한 바퀴당 i는 1씩 증가한다는 의미이다. 즉, i는 0부터 5가 될 때까지 반복한다.

 

 

for 루프의 각 부분

for 루프를 구성하는 각 부분은 순서대로 다음과 같은 단계를 처리한다.

  1. 조건 검사에 사용할 카운터 값을 초기화한다.
  2. 루프를 진행할 것인지 조건을 검사한다.
  3. 루프 몸체를 수행한다.
  4. 카운터 값을 갱신한다.

for 루프를 구성하는 각 부분들은 각자의 역할이 무엇인지 알기 쉬운 위치에 자리잡고 있다. 초기화(initialization), 조건 검사(test), 갱신(update)을 처리하는 for 루프의 세 제어 부분은 괄호로 묶여 있고 세미콜론(;)에 의해 분리되어 있다. 제어 부분 뒤에 오는 구문을 루프 몸체(body)라 한다.

초기화는 처음에 단 한 번만 수행한다. 일반적으로 초기화 표현식은 어떤 변수에 시작값을 설정한다.

조건 검사는 루프 몸체를 실행할 것인지 여부를 결정한다.

갱신은 루프 몸체를 실행한 후에 수행한다.

정리하자면 초기화 -> 조건 검사 -> 루프 몸체 -> 갱신 -> 조건 검사 -> 루프 몸체 -> ... 조건 검사에서 false가 나올 때 까지 반복이다.

 

 

갱신 크기 변경

for 루프의 예제로 지금까지 매 주기마다 1씩 증가시키고 있다. 그러나 갱신 표현식을 변경하면 갱신되는 크기를 바꿀 수 있다.

int main()
{	
	using namespace std;
	
	int by;
	cin >> by;
	cout << "갱신 크기 : " << by << endl;

	for (int i = 0; i < 100; i = i + by)
		cout << i << endl;

	return 0;
}

위 코드의 경우 만약 by에 100이상이 대입되는 경우 한 바퀴만 루프 몸체를 돌고 끝난다.

 

 

for 루프를 사용한 문자열 처리

for 루프를 사용하여 문자열을 구성하는 문자들에 차례대로 접근할 수 있다.

int main()
{	
	using namespace std;
	
	string word = "Hello World!";

	for (int i = 0; i < word.size(); ++i)
		cout << word[i];

	return 0;
}

결과

좀 더 나아가서 거꾸로 문자열의 문자를 출력하는 것도 가능하다.

int main()
{	
	using namespace std;
	
	string word = "Hello World!";

	for (int i = word.size() - 1; i >= 0; i--)
		cout << word[i];

	return 0;
}

결과

 

 

증가 연산자(++)와 감소 연산자(--)

증가 연산자와 감소 연산자를 합쳐서 증감 연산자라고 부른다. 접두어(prefix) 방식과 접미어(postfix) 방식으로 사용하는데, 둘이 가져오는 효과는 동일하지만, 둘의 의미는 다른 의미를 갖는다.

x++; // 접미어 방식
++x; // 접두어 방식

접미어는 나중에 증감시키고, 접두어는 바로 증감시킨다. 나중의 의미는 줄이 넘어가는 순간이다.

int main()
{	
	using namespace std;
	
	int a = 10;
	cout << "접미어 : "<< a++ << endl;
	cout << "결과 : " << a << endl;
	cout << "-----------------" << endl;
	cout << "접두어 : " << ++a << endl;
	cout << "결과 : " << a;

	return 0;
}

결과

접미어의 경우 다음 줄로 넘어가서야 1이 증가되고, 접두어의 경우 바로 1이 증가된다는 것을 볼 수있다.

 

728x90

'서적 정리 > C++ 기초 플러스' 카테고리의 다른 글

21.배열의 대안  (0) 2022.08.09
20.변수형의 조합  (0) 2022.08.09
19.포인터, 배열, 포인터 연산  (0) 2022.08.09
18.포인터와 메모리 해제  (0) 2022.08.03
17.열거체(enumeration)  (0) 2022.08.03
16.공용체(union)  (0) 2022.08.03
15.구조체(struct)  (0) 2022.08.03
14.string 클래스  (0) 2022.07.29

댓글