for

Jaemyeong Lee·2024년 8월 4일
0

FastCampusC++

목록 보기
17/78

첫 번째 블록

{
    // for (초기화; 조건; 갱신)
    //   반복할 구문
    //
    // 1. 초기화
    // 2. 조건(true -> 3, false -> 종료)
    // 3. 반복할 구문 수행
    // 4. 갱신
    // 5. 2번으로 돌아감
}
  1. for 문은 다음과 같은 구조로 이루어집니다:
    • 초기화: 반복을 시작하기 전에 변수를 초기화합니다.
    • 조건: 각 반복 전에 조건을 평가하여 true이면 반복을 계속하고 false이면 종료합니다.
    • 갱신: 각 반복이 끝날 때 변수의 값을 갱신합니다.
    • 반복할 구문: 조건이 true일 때 실행할 코드 블록입니다.

두 번째 블록

{
    // for의 기본
    // 0 ~ 9 출력
    int i;
    for (i = 0; i < 10; ++i)
        cout << i << endl;
}
  1. i 변수를 선언합니다.
  2. for 문은 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  3. i를 출력하고, i를 1씩 증가시킵니다.
  4. 결과적으로 0부터 9까지의 숫자가 출력됩니다.

세 번째 블록

{
    int i;
    // i가 0이기 때문에 false로 평가 되어 아무 것도 실행 되지 않음
    for (i = 0; i; ++i)
        cout << i << endl;
}
  1. i 변수를 선언합니다.
  2. for 문의 초기 조건에서 i가 0이므로 조건이 처음부터 false가 되어 반복이 실행되지 않습니다.
  3. 따라서 이 블록에서는 아무 것도 출력되지 않습니다.

네 번째 블록

{
    int i;
    // 10 ~ 1 출력
    for (i = 10; i; --i)
        cout << i << endl;
}
  1. i 변수를 선언합니다.
  2. for 문은 i를 10으로 초기화하고, i가 0보다 클 때까지 반복합니다.
  3. i를 출력하고, i를 1씩 감소시킵니다.
  4. 결과적으로 10부터 1까지의 숫자가 출력됩니다.

다섯 번째 블록

{
    // 무한 루프
    // for (;;)
    // 주석을 풀고 사용

    // int i;
    // for (i = 0;; ++i)
    //     cout << i << endl;
}
  1. for 문의 조건 부분을 생략하여 무한 루프를 만듭니다.
  2. 주석을 해제하면 i가 계속 증가하면서 무한히 출력됩니다.

여섯 번째 블록

{
    // 선언을 for에 포함 시킬 수 있다
    for (int i = 0; i < 10; i += 2)
        cout << i << endl;
}
  1. for 문 안에서 i 변수를 선언합니다.
  2. i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  3. i를 출력하고, i를 2씩 증가시킵니다.
  4. 결과적으로 0, 2, 4, 6, 8이 출력됩니다.

일곱 번째 블록

{
    // 두 개 이상의 변수 사용 가능
    for (int i = 0, j = 0; i < 10 && j < 10; i += 1, j += 2)
    {
        cout << i << endl;
        cout << j << endl;
    }
}
  1. for 문 안에서 ij 두 변수를 동시에 선언하고 초기화합니다.
  2. ij가 모두 10보다 작을 때까지 반복합니다.
  3. i를 1씩 증가시키고, j를 2씩 증가시킵니다.
  4. ij를 각각 출력합니다.
  5. 결과적으로 ij의 값이 번갈아 출력됩니다.

여덟 번째 블록

{
    // break의 사용
    for (int i = 0; i < 10; ++i)
    {
        if (i % 3 == 0)
            break;
        if (i % 5 == 0)
            break;

        cout << i << endl;
    }
}
  1. for 문은 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  2. i가 3의 배수이거나 5의 배수이면 break 문으로 반복을 종료합니다.
  3. 조건에 맞지 않으면 i를 출력합니다.
  4. i가 0이므로 첫 번째 if 조건에서 break가 실행되어 아무 것도 출력되지 않습니다.

아홉 번째 블록

{
    // continue의 사용
    for (int i = 0; i < 10; ++i)
    {
        if (i % 3 == 0)
            continue;

        cout << i << endl;
    }
}
  1. for 문은 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  2. i가 3의 배수이면 continue 문으로 현재 반복을 건너뛰고 다음 반복을 시작합니다.
  3. 조건에 맞지 않으면 i를 출력합니다.
  4. 결과적으로 3의 배수인 0, 3, 6, 9를 제외한 숫자가 출력됩니다.

열 번째 블록

{
    int i;
    for (i = 0; i < 10; ++i)
    {
        cout << i << endl;
        if (i == 9)
            break;
    }
    cout << " " << i << endl; // 9, break는 i 갱신을 하지 않고 바로 종료

    for (i = 0; i < 10; ++i)
    {
        cout << i << endl;
    }
    cout << " " << i << endl; // 10
}
  1. 첫 번째 for 문은 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  2. i를 출력하고, i가 9이면 break 문으로 반복을 종료합니다.
  3. 첫 번째 for 문이 종료된 후 i의 값은 9입니다.
  4. 두 번째 for 문은 i를 0으로 초기화하고, i가 10보다 작을 때까지 반복합니다.
  5. i를 출력하고, 두 번째 for 문이 종료된 후 i의 값은 10입니다.

열한 번째 블록

{
    // switch 안의 break는 for를 break하지 못 한다.
    for (;;)
    {
        cout << "Food" << endl;
        cout << "1) Kimch" << endl;
        cout << "2) BBQ" << endl;
        cout << "3) Chicken" << endl;
        int num;
        cin >> num;

        bool needToBreak = false;

        switch (num)
        {
        case 1:
            cout << "Kimch" << endl;
            needToBreak = true;
            break;
        case 2:
            cout << "BBQ" << endl;
            needToBreak = true;
            break;
        case 3:
            cout << "Chicken" << endl;
            needToBreak = true;
            break;
        }

        if (needToBreak)
            break;
    }
}
  1. 무한 루프를 실행합니다.
  2. 음식 메뉴를 출력하고, 사용자로부터 입력을 받습니다.
  3. switch 문을 사용하여 입력된 num에 따라 다른 메시지를 출력하고, needToBreak를 true로 설정합니다.
  4. needToBreak가 true이면 for 문을 종료합니다.
  5. switch 안의 breakfor 문을 종료하지 않기 때문에 needToBreak 변수를 사용하여 for 문을 종료합니다.

열두 번째 블록

{
    // switch 안의 continue는 for를 continue 한다.
    for (;;)
    {
        cout << "Food" << endl;
        cout << "1) Kimch" << endl;
        cout << "2) BBQ" << endl;
        cout << "3) Chicken" << endl;
        int num;
        cin >> num;

        switch (num)
        {
        case

 1:
            cout << "Kimch" << endl;
            break;
        case 2:
            cout << "BBQ" << endl;
            break;
        case 3:
            cout << "Chicken" << endl;
            break;
        default:
            continue;
        }
        break;
    }
}
  1. 무한 루프를 실행합니다.
  2. 음식 메뉴를 출력하고, 사용자로부터 입력을 받습니다.
  3. switch 문을 사용하여 입력된 num에 따라 다른 메시지를 출력합니다.
  4. default 조건에서 continue 문을 사용하여 현재 반복을 건너뛰고 다음 반복을 시작합니다.
  5. 유효한 입력이 들어오면 break 문으로 for 문을 종료합니다.

열세 번째 블록

{
    // 팩토리얼 구하기
    int num;
    cin >> num;

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

열네 번째 블록

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

열다섯 번째 블록

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

    int num;
    cin >> num;

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

0개의 댓글