while

Jaemyeong Lee·2024년 8월 4일
0

FastCampusC++

목록 보기
18/78

첫 번째 블록

{
    // 아래 for 문과 동일한 while 문
    int i = 0;
    while (i < 10)
    {
        cout << i << endl;
        ++i;
    }

    // 한 변수(i)를 가지고 초기화, 조건체크, 갱신을 해야하는 경우 for 문을 사용하자 
    for (int i = 0; i < 10; ++i)
    {
        cout << i << endl;
    }
}
  1. while 문을 사용하여 0부터 9까지의 숫자를 출력합니다.
    • i를 0으로 초기화합니다.
    • i가 10보다 작을 때까지 반복합니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
  2. 동일한 작업을 for 문을 사용하여 수행합니다.
    • for 문 내에서 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
  3. 초기화, 조건 체크, 갱신이 모두 하나의 변수로 이루어질 때 for 문이 더 적합합니다.

두 번째 블록

{
    int i = 0;
    // while (i < 10)
    // {
    //     if (i % 3 == 0)
    //         continue; // for와 다르게 ++i가 호출이 되지 않는다. 무한 루프
    //
    //     cout << i << endl;
    //     ++i;
    // }

    for (int i = 0; i < 10; ++i)
    {
        if (i % 3 == 0)
            continue; // ++i가 호출 된다
        cout << i << endl;
    }
}
  1. 주석 처리된 while 문:
    • i를 0으로 초기화합니다.
    • i가 10보다 작을 때까지 반복합니다.
    • i가 3의 배수일 경우 continue 문을 만나 반복의 시작으로 돌아가 i가 증가하지 않아 무한 루프에 빠집니다.
    • 주석 처리된 이유는 무한 루프를 방지하기 위해서입니다.
  2. 동일한 작업을 for 문을 사용하여 수행합니다.
    • i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
    • i가 3의 배수일 경우 continue 문을 만나 다음 반복으로 넘어갑니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
  3. for 문에서는 continue 문 이후에도 i가 증가하기 때문에 무한 루프가 발생하지 않습니다.

세 번째 블록

{
    // while 문 내에서 switch 를 사용할 때 break, continue 는 for 문과 동일하게 동작
}
  1. while 문 내에서 switch 문을 사용할 때 breakcontinue 문은 for 문과 동일하게 동작합니다.
  2. break 문은 switch 문을 종료하고 while 문을 계속 수행합니다.
  3. continue 문은 while 문의 현재 반복을 건너뛰고 다음 반복을 시작합니다.

네 번째 블록

{
    // 팩토리얼
    int num;
    cin >> num;

    int total = 1;
    while (num)
    {
        total *= num--;
    }
    cout << total << endl;
}
  1. 사용자로부터 정수 num을 입력받습니다.
  2. total 변수를 1로 초기화합니다.
  3. while 문을 사용하여 num이 0이 아닐 때까지 반복합니다.
    • totalnum을 곱하고 num을 1씩 감소시킵니다.
  4. 최종적으로 total에는 num의 팩토리얼 값이 저장되어 출력됩니다.

다섯 번째 블록

{
    // 알파벳 출력
    char ch = 'a';
    while (ch <= 'z')
    {
        cout << ch++ << endl;
    }
}
  1. ch 변수를 'a'로 초기화합니다.
  2. while 문을 사용하여 ch가 'z'보다 작거나 같을 때까지 반복합니다.
    • ch를 출력하고, ch를 1씩 증가시킵니다.
  3. 결과적으로 'a'부터 'z'까지의 모든 소문자 알파벳이 출력됩니다.

여섯 번째 블록

{
    // 피보나치 수열
    // 0, 1, 1, 2, 3, 5, 8, 13, 21 ...
    // a(0) = 0, a(1) = 1
    // a(n) = a(n - 2) + a(n - 1)

    int num;
    cin >> num;
    
    if (0 == num)
        cout << 0 << endl;
    else
    {
        int prevValue = 0;
        int currValue = 1;
        while (--num)
        {
            int nextValue = prevValue + currValue;
            prevValue = currValue;
            currValue = nextValue;
        }
        cout << currValue << endl;
    }
}
  1. 사용자로부터 정수 num을 입력받습니다.
  2. num이 0이면 0을 출력합니다.
  3. 그렇지 않으면 피보나치 수열을 계산합니다.
    • prevValue를 0으로, currValue를 1로 초기화합니다.
    • while 문을 사용하여 num이 1이 될 때까지 반복합니다.
    • 각 반복에서 다음 피보나치 수를 계산하고, prevValuecurrValue를 갱신합니다.
  4. 최종적으로 currValue에는 num번째 피보나치 수가 저장되어 출력됩니다.
profile
李家네_공부방

0개의 댓글