ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.