-
7장. 반복문C++ 기본 문법 알아보기 2019. 1. 10. 12:41
C++에서는 while, do while, for이라는 세 개의 반복문이 있다.
그렇다면 반복문을 어느 상황에서 사용할까?
만약 1부터 100까지 더하는 프로그램을 만든다고 했을 때 반복문이 없다면 1 + 2 + ... + 100 까지 하나하나 적어줘야한다.
하지만 반복문을 사용하면 그럴 필요가 없다.
while
첫번째 반복문인 while부터 보자.
#include <iostream>
using namespace std;
int main()
{
int i = 1;
int sum = 0;
while ( i <= 10 )
{
sum += i;
++i;
}
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
예제를 보면 알겠지만 while문의 기능은 아주 간단하다.
입력한 조건이 true일 동안 while의 중괄호를 반복해서 실행한다.
while의 조건 부분은 매번 반복을 시작하기 전에 검사한다.
조건 부분에서 i에 1을 더하는 기능 또한 할 수 있다.
#include <iostream>
using namespace std;
int main()
{
int i = 0;
int sum = 0;
while ( ++i <= 10 )
{
sum += i;
}
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int i = 11;
int sum = 0;
while ( --i )
{
sum += i;
}
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
현재 i 값은 각각 11, 0이 나온다.
정수 값 0이 bool 타입으로 해석될 때 false가 된다는 점을 사용해서 --i를 사용했다.
그리고 if와 마찬가지로 중괄호에 한 문장만 있다면, 중괄호가 생략 가능하다.
이제 break를 사용해서 반복문을 탈출해보자.
#include <iostream>
using namespace std;
int main()
{
int i = 1;
int sum = 0;
while (true)
{
sum += i;
++i;
if ( i > 10 )
break;
}
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
아까와 같은 결과가 나오는 것을 볼 수 있다.
do while
방금 전에 배웠던 while 앞에 do가 붙어있다.
do while과 while의 차이점은 하나다.
do while은 무조건 한 번 반복한 후에 조건을 검사한다.
숫자를 입력받아서 입력받은 숫자가 1이면 종료시키는 프로그램을 만들어보자.
do while의 경우에는
int n;
do
{
cin >> n; // 입력. 자세한 설명은 나중에 배워보자.
} while ( 1 != n )
이지만 while로 구현하면
int n;
cin >> n;
while ( 10 != n )
{
cin >> n;
}
이렇게 동일한 코드가 중복해서 존재한다.
for
while과 함께 많이 쓰이는 반복문인 for문을 배워보자.
for문의 구조는 이렇다.
for (제일 처음에 한번 실행되는 코드; 매번 반복 시작 전에 조건 검사 코드; 매번 반복이 끝난 후 실행되는 코드)
{
반복될 코드
}
while문과 같은 1부터 10까지 더하는 예제를 보고 이해해보자.
#include <iostream>
using namespace std;
int main()
{
int i;
int sum = 0;
for (i = 1; i <= 10; ++i)
sum += i;
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
같은 결과가 정상 출력되는 것을 볼 수 있다.
for문의 생략
for문을 사용할 때 초기화, 반복 조건, 증가치를 적어 줄 수 있는 공간을 비워놓아도 정상 동작한다.
예제를 보자.
for (int i = 1; i <= 10; )
{
sum += i;
++i;
}
++i를 증가치 자리에 넣어주지 않고 반복 코드 안에 넣어주어도 정상 동작하는 것을 볼 수 있다.
continue
break와 반대로 이번 반복을 중단하되, 다음 번 반복으로 넘어가게 하는 예약어가 있다.
바로 continue다.
continue를 사용해서 1~5, 7~10까지의 합을 구해보자.
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
for (int i = 1; i <= 10; ++i)
{
if (i == 6)
continue;
sum += i;
}
cout << "현재 i의 값 = " << i << "\n";
cout << "1~10 까지의 합 = " << sum << "\n";
return 0;
}
6일 때 이번 반복을 종료하고 다음 반복으로 넘어간 것을 볼 수 있다.
중첩 반복문
반복문 안에 반복문을 사용해서 중첩 반복문을 사용할 수 있다.
만약 5번 도는 while문 안에 2번 도는 while문을 넣는다면 총 10번 돌 것이다.
직접 보고 중첩 반복문을 응용하여 구구단 출력 프로그램을 만들어보자!
#include <iostream>
using namespace std;
int main()
{
for (int i = 2; i <= 9; ++i)
{
cout << i << " 단 ========\n";
for (int j = 1; j <= 9; ++j)
{
cout << i << " x " << j << " = " << i * j << "\n";
}
cout << "\n";
}
return 0;
}
정상적으로 구구단이 출력된 것을 볼 수 있다.
다음 글에서는 배열에 대해서 배워보자.
'C++ 기본 문법 알아보기' 카테고리의 다른 글
9장. 구조체에 대하여 (0) 2019.01.12 8장. 배열에 대하여 (0) 2019.01.11 6장. 조건문이란? (0) 2019.01.09 5-2장. 비트 단위 연산자와 연산자 마무리 (0) 2019.01.08 5-1장. 기본적인 연산자 (0) 2019.01.07