[KOCW 한국산업기술대학교 박정민 교수님] C 프로그래밍 7강

MinWoo Park·2021년 8월 21일
0

KOCW

목록 보기
7/19
post-thumbnail

Part7 반복문이란 무엇인가

7.1 반복문이란

  • 어떤 행동을 반복적으로 수행하는 문장
  • 종류로는 while문, for 문, do ~ while 문이 있음

7.2 반복문을 만드는 방법 1 - while 문(while loop)

  • '조건식이 참인 동안 반복할 내용을 반복해라'라는 의미
  • while문의 기본 문법: 조건식이 참인 동안 반복되는 반복문
while(조건식)
{ // 반복문의 시작
	반복할 내용
} // 반복문의 종료
  • while 무한 루프: 종료되지 않고 무한히 실행되는 반복문
#include <stdio.h>
int main(void)
{
    int i = 0;
    while(1)
    {
        printf("반복 횟수: %d \n", i);
        i++;

		// 무한 루프 탈출하는 break 문
        // if(i>10)
        // break;
    }
    return 0;
}

cf. break 문은 무한 루프뿐만 아니라 일반적인 반복문을 탈출할 때도 switch 문에도 사용

  • 중첩 while 문
    ex) 구구단
#include <stdio.h>
int main(void)
{
    int i = 2;
    int j = 1;
    int result = 0;

    while(i<10)
    {
        while(j<10)
        {
            result = i * j;
            printf("%d * %d = %d \n", i, j, result);
            j++;
        }
        i++; // 단을 증가
        j = 1; // 단을 시작
        printf("--------\n");
    }

    return 0;
}

7.3 반복문을 만드는 방법 2 - for 문

for 문의 기본 문법

조건식이 '참'인 동안 '반복할 내용'을 반복해라
ex)
```c 
for (초깃값; 조건값; 증감값) 
{ // 반복문의 시작
	반복할 내용
} // 반복문의 종료 

for 무한 루프

ex)

#include <stdio.h>
int main(void)
{
    int i; 
    for (i = 0; 1; i++)  // 조건값 1이 참이기에 무한 반복, 1 생략 가능
    {
        printf("반복 횟수: %d \n", i);
    }
    return 0;
}

중첩 for 문

ex) 구구단

#include <stdio.h>
int main(void)
{
    int i, j;
    int result = 0;

    for (i = 2; i < 10; i++)
    {
        for (j = 1; j < 10; j++)
        {
            result = i * j;
            printf("%d * %d = %d \n", i, j, result);
        }
        printf("-------\n");
    }

    return 0;
}

for 문의 여러 가지

  • 초깃값이 없는 경우: for 문 위에서 변수 선언한 경우
    ex)
#include <stdio.h>
int main()
{
    int i;
    int factorial = 1;

    for (; i < 10; i++) // 초깃값이 없는 경우
    {
        // 1*2*3*4*5*6*7*8*9의 결과 저장
        factorial = factorial * i;
    }
    printf("1부터 10까지의 곱: %d \n", factorial);

    return 0;
}

// 1부터 10까지의 곱(10!): 362880 
  • 조건값이 없는 경우: 무한루프, 조건값이 1(참)인 값과도 같음
    ex)
#include <stdio.h>
int main()
{
    int i;
    int factorial = 1;

    for (i = 1; ; i++) // for(i=1; 1; i++)과 같은 의미, 무한 루프
    {
        factorial = factorial * i;

        if(i>10)
            break;
    }
    printf("1부터 10까지의 곱: %d \n", factorial);

    return 0;
}

// 1부터 10까지의 곱(10!): 362880 
  • 증감값이 없는 경우: 증갑값을 {} 블록 안에 넣는 경우
    ex)
#include <stdio.h>
int main()
{
    int i;
    int factorial = 1;

    for (i = 1; i <= 10; ) // for(i=1; 1; i++)과 같은 의미, 무한 루프
    {
        factorial = factorial * i;
        i++;
    }
    printf("1부터 10까지의 곱: %d \n", factorial);

    return 0;
}

// 1부터 10까지의 곱(10!): 362880 

cf. for문 안의 초깃값, 조건값, 증감값 모두 비워두고 다른 위치에서 선언할 수는 있음. 그러나 가독성이 떨어지기에 사용할 이유가 없음


7.4 반복문을 만드는 방법 3 - do~while 문

앞서 배운 while, for 문은 '~하는 동안 ~을 해라'라는 while(for) ~ do 문의 형식.
이번에 배울 반복문은 do~while 순서가 반대이다.
먼저 실행하고 조건이 만족하면 반복한다. 즉 최소한 한 번은 반복할 내용을 실행함.

do
{
	반복할 내용
} while(조건식);

Reference
강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 7강
교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p170-.

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글