본문 바로가기

C

([C언어] 7강) for문과 continue

 

이번 강좌에서 배울 내용은

프로그래밍에서 아~~~~~주 중요한 부분이니 꼭꼭꼭 완벽하게 이해하시고

다음강으로 넘어가주시길 부탁드릴게요!

 

드디어 "반복문" 까지 왔군요!

반복문은 특정 구간을 반복하게 해주는 문법인데요

흔히 반복문은 세개가 있습니다

 

for문

while문

do-while문

 

각각 포문, 와일문, 두와일문 이라고 부르는것들인데요

 

오늘은 그중에서도 가장 많이 쓰는 for문을 알아볼겁니다!

 

정말 가장많이쓰는 문법이니 꼭꼭꼭 외워주세요!

 

아참 그리고 for문도 break를 쓸수있습니다.

그리고 오늘은 break의 반대 continue도 배워보도록 할게요!

 

 

포문을 쓰는 방법은 아래와 같습니다

for(초기화;조건식;증감식)
{
코드
}

엥 다른것들과 달리 반점 ,이 아니라 세미콜론;으로 나눠지네요?

이 점 기억해주세요!

 

보시다 싶이 for문은 초기화식,조건식,증감식으로 이뤄집니다

초기화에서 변수를 하나 정해주고

조건식을 검사한 후 조건이 참이면

코드를 실행 한 후

증감식을 한번 수행하고

다시 조건식을 검사하고

조건이 참이면 다시한번 코드 실행하고를 반복 하는겁니다.

이렇게 말하면 어렵죠?

 

자 아래 코드를 설명하는걸로 더 쉽게 알려드릴게요

for(int i = 0; i < 10; i++)
{
    printf("%d",i);
}

자 이 코드를 한번 예시로 들어보죠

초기화식에서 int형 변수 i를 만들고 0으로 초기화했네요

이 i변수는 for문의 지역변수가 됩니다.

그리고 조건식을 검사합니다.

 

처음에는 i가 0이니 10보다 작으므로 조건이 참이네요!

 

조건이 참이므로 코드를 실행합니다!

printf함수로 i의 값을 출력하니 화면에 0이 출력되겠네요!

 

이제 코드를 다 실행 했으니 증감식을 수행합니다!

i++니까 i에 1을 더해주고 i는 1이됩니다

 

다시 조건문을 검사합니다! i가 1이므로 10보다 작고 참이네요!

 

printf함수로 i의 값! 즉 1을 출력합니다!

 

8번 반복...

 

증감식을 수행합니다! i++니까

i가 10이되네요

 

조건문을 검사합니다!

i가 10이니까 10보다 작지 않네요! 같으니까요!

조건이 거짓입니다!

 

코드를 수행하지않고 for문을 탈출합니다!

 

이렇게 되는거에요!

 

반복문은 조건을 잘못짜거나 하면 무한반복이 되면서

프로그램 자체가 먹통이 되는경우가 있으니

꼭꼭 정확하게 무한반복되지않도록 고려해서 프로그래밍 하시길 바랍니다!

 

자 그럼 위 코드를 실행해볼까요?

이 상태에서 컨트롤 + F5!

정상출력되네요 ㅎㅎ

 

그럼 이번엔 for문은 정말 중요하니 과제를 하나 내보겠습니다!

정답은 이 글 맨 아래에 올려놓을테니 여기서 멈춰서 프로그래밍 해보세요!

 

정답 미리보기 금지입니다 ㅡㅡ

 

문제

0이상 10000이하의 홀수의 합을 구하고싶습니다. for문을 이용해 0이상 10000이하의 홀수의 합을 구한 후

printf함수를 통해 화면에 출력해주세요

 

 

 

자 그럼 이번엔 continue를 배워보겠습니다

위에서 제가 컨티뉴는 브레이크의 반대다! 라고 말씀드렸는데요!

자 우선 for문에서의 브레이크를 먼저 보여드려야겠네요!

 

for(int i = 0; i < 10; i++)
{
    if( i == 4 )
    {
        break;
    }
    printf("%d",i);
}

이 코드를 수행하면 어떻게 될까요?

i가 0부터 10까지 1씩 늘려가면서 반복되고

printf함수로 i의 값을 출력하는데

i가 4면 break를 만나 포문을 종료해버리므로

화면에는 0123만 출력되겠네요!

 

자 그럼 이번엔 continue입니다

continue는 break와 반대로

break가 "그만하고 끝내!" 였다면

continue는 "여기까지만 하고 다시해!" 입니다

for(int i = 0; i < 10; i++)
{
    if( i == 4 )
    {
        continue;
    }
    printf("%d",i);
}

이렇게 해놓는다면 0123은 출력되고 continue를 만나서

continue가 여기까지만하고! 다시해!라고 하므로

i가 4일때는 printf로 출력하지 않고 증감식을 수행해

i가 5가 된상태로 조건을 다시 검사합니다

위 코드의 수행 결과는

012356789겠네요!

 

모든 반복문에는 break와 continue를 사용할수있으니 참고해주세요!

 

 

또! 꼭 초기화를 초기화문에서 해주지 않아도 됩니다!

증감식이 꼭 i++가 아니여도 되구요!

증감식에

i += 1

i -= 1

i %= 3

i *= 3

 

이런식으로 다 됩니다! 원하시는 식을 넣으시면 돼요

 

또 for문을 다 돌고나서도 i의 값이 소멸되지 않게하려면

i를 for문의 지역변수가 아니라 메인함수의 지역변수로 놓으면 되겠죠!

그럴때는 아래처럼 하면 됩니다

#include <stdio.h>

int main()
{
    int i = 0;
    
    for(i; i < 10; i++)
    {
        printf("%d",i);
    }
}

단 이런식으로 코드를 짠다면 for문이 10까지 가서 조건을 검사하고 조건이 거짓이라 탈출하게 되므로

결론적으로 for문이 끝난후 i에는 9가 아닌 10이 들어있게 되니 참고해주세요!

 

 

 

자 그럼 오늘 강좌는 여기까지 하겠습니다!

아래에는 위에서 냈던 문제의 답을 공개할테니 꼭 풀어본 이후에 봐주세요!!

 

 

 

 

 

 

 

 

 

정답

#include <stdio.h>

int main()
{
    int result = 0;
    for(int i = 0; i <= 10000; i++)
    {
        if( i % 2 == 1 )
        {
            result += i;
        }
    }
    printf("0이상 10000이하인 수 중 홀수의 합은 %d입니다",result);
}

정답은 25,000,000 이였습니다~~

 

다음강좌에선 다중for문에 대해 배워보겠습니다!