본문 바로가기
c언어

c언어 break문, goto문, continue문 알아보기(재테크, 주식, 코인 매매 자동화)

by 개발자 L 2022. 12. 4.
반응형

c언어 break문, goto문, continue문 알아보기(재테크, 주식, 코인 매매 자동화)

네 안녕하세요, 이번 포스팅에서는 c언어에서 반복문과 조건문 등을 쓸 때 자주 쓰이는 문법인 break, goto, continue문에 대하여 알아보는 시간을 가져보려 합니다.

이들은 반복문을 제어할 때 자주 쓰이기 때문에 그만큼 중요하고,

사용법을 잘 숙지를 하셔야 합니다.

그럼 지금부터 시작하도록 하겠습니다.

 

1. break문

break문은 반복 루프를 벗어날 때 쓰는 문법입니다.

이 문장이 실행이 되면 루프를 빠져나오게 됩니다.

for 루프에서도 많이 쓰이지만,

무엇보다도 while 루프에서 더 자주 쓰입니다.

그 이유는 보통 while 루프는 시간 단위로 돌리거나, 증감률, 큰 범위를 다루는 무한루프를 굉장히 많이 사용하기 때문에 돌아가는 시간이 매우 깁니다.

다시 말하면 업무 자동화를 시킬 때 많이 씁니다.

그래서 빠져나오는 장치를 걸어두지 않으면 계속해서 작업을 하게 되기 때문에 쓰레기 데이터도 많이 쌓일 수 있고,

나중에 용량 부족 사태를 초래할 수도 있습니다.

그러면 간단한 예제를 통하여 사용방법을 알아보도록 하겠습니다.

#include <stdio.h>
#define SEED_MONEY 1000000

int main()

{
    int year = 0, money = SEED_MONEY;

    while(1)
    {
        year++;

        money += money * 0.30;

        if(money > 10 * SEED_MONEY)
        {
            break;
        }
    }
    
    printf("%d년이 걸렸습니다.\n", year);
    return 0;
}

이건 실제 경우를 본떠서 만든 예시입니다.

우리가 재테크 자동화를 할 때 이러한 문법을 사용하기 때문입니다.

이 경우에는 본인이 투자한 원금의 10배가 되는 순간에 돈 굴리기를 종료하는 예시를 들었습니다.

이렇게 쓰는 방법이 있고, 여기서 원금 증감이 아니라 수익률의 증감률을 보고서 종료나 매도 및 매수를 시킬 수도 있고,

주식이라면 개장 시간과 폐장 시간을 계산하여 매크로 작동 시간과 종료 시간을 입력하여 돌릴 수도 있습니다.

하지만 지금 이 글을 보시는 여러분들은 아직은 반복문을 쓰는 것이 조금은 미숙할 수 있으니, 아주 간단한 예시를 들어보도록 하겠습니다.

#include <stdio.h>
#include <math.h>

int main()

{
    double rn;

    while(1)
    {
        printf("실수를 입력하세요 : ");
        scanf("%lf", &rn);

        if(rn < 0.0)
        {
            break;
        }

        printf("%f의 제곱근은 %f입니다.\n", rn, sqrt(rn));
    }
    
    return 0;
}

여기에서 루프를 빠져나가는 장치는 음수를 입력하는 것입니다.

그 이유는 음수를 입력하게 되면 실수근이 나오지 않기 때문입니다.

그리고 제곱근 등 딱 떨어지지 않는 실수 값을 구하고 싶으면 <math.h>라는 헤더 파일을 불러와서 sqrt()라는 함수를 써서 나타내야 합니다.

그럼 결과를 보도록 하겠습니다.

실수를 입력하세요 : 7
7.000000의 제곱근은 2.645751입니다.
실수를 입력하세요 : 8
8.000000의 제곱근은 2.828427입니다.
실수를 입력하세요 : 3
3.000000의 제곱근은 1.732051입니다.
실수를 입력하세요 : 2
2.000000의 제곱근은 1.414214입니다.
실수를 입력하세요 : -1
PS C:\Users\사용자명\AppData\Local\Temp>

이런 식으로 음수를 입력하게 되면 자동으로 루프가 종료가 됩니다.

반응형

 

2. goto문의 활용 방법

goto문은 제가 예전에 포스팅을 한 번 한 적이 있었는데, 잘 쓰지 않는다고 했었습니다.

하지만 무한루프를 돌릴 때는 간혹 사용을 합니다.

그 이유는 간혹 루프를 돌리다가 문제가 생겼을 경우에 단번에 빠져나오게 하는 문법이 바로 goto문이기 때문에 비상장치로 사용을 합니다.

그리고 break문과 가장 큰 차이는 break문은 하나의 루프만 빠져나오지만, goto문은 다수의 루프를 빠져나올 수 있습니다.

그럼 간단한 예제 코드를 한 번 작성을 해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int i, j;

    for(i = 1; i < 10000; i++)
    {
        for(j = 1; j < 50; j++)
        {
            if(_kbhit())
            {
                goto OUT;
            }
            printf("*");
        }
        printf("\n");
    }
    OUT: 
    
    return 0;
}

이렇게 작성을 할 수 있습니다.

그리고 주의를 할 점은 goto가 가리키는 문장 뒤에는 항상 콜론(:)이 존재해야 합니다.

세미콜론(;)을 쓰면 안됩니다.

그럼 실행 결과를 한 번 보도록 하겠습니다.

*************************************************
*************************************************
*************************************************
*************************************************
*************************************************
*************************************************
*************************************************
*************************************************
*************************************************
**********************************
PS C:\Users\사용자명\AppData\Local\Temp>

이렇게 나옵니다.

제가 키보드를 하나라도 건들면 바로 루프는 종료됩니다.

 

3. continue문

continue문은 멈추거나 빠져나오는 것이 아니라 건너뛸 때 씁니다.

우리가 코드를 실행시키는데 필요 없는 것들이 보일 때 그런 것들을 생략할 수 있게 해주는 문법입니다.

사용법도 break문을 쓰는 것과 똑같습니다.

그럼 간단한 코드를 작성을 해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    char lt;

    while(1)
    {
        printf("소문자를 입력하세요 : ");
        scanf("%c", &lt);

        if(lt == '0')
        {
            break;
        }

        if(lt < 'a' || lt > 'z')
        {
            continue;
        }
        lt -= 32;

        printf("변환된 대문자는 %c입니다.\n", lt);
    }
    
    return 0;
}

이렇게 작성을 할 수 있습니다.

그럼 결과를 한 번 보도록 하겠습니다.

// 범위에 있는 글자를 입력했을 경우

소문자를 입력하세요 : y
변환된 대문자는 Y입니다.

// 범위를 벗어난 기타 문자를 입력했을 경우

소문자를 입력하세요 : ㄱ // 생략

// 0을 입력했을 경우

소문자를 입력하세요 : 0
PS C:\Users\사용자명\AppData\Local\Temp>

이렇게 잘 나오는 것을 보실 수가 있습니다.

 

여기까지 break문, goto문, continue문을 사용하는 방법에 대하여 알아보았습니다.

다음 포스팅에서는 지금까지 배운 것들을 이용하여 여러 가지 문제들을 풀어보며 코딩 실력을 늘리는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글