ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C] 반복문
    C 2021. 12. 8. 16:07

     

    해당 글은 "열혈 C 프로그래밍" 책을 바탕으로 작성되었습니다.
    💡 말 그대로 반복해주는 구문! 조건이 성립하지 않을 때 탈출한다. (건너뜀)

     

    반복문의 종류

    while 문

    • 특정 조건을 주고 그 조건을 만족하는 동안, 특정 영역을 계속해서 반복하는 구조임.
    • while 문의 while 문처럼 중첩해서 사용도 가능 (ex. 구구단 만들 때)
    while (num < 3) {  // 반복의 조건은 3
    	printf("Hello World! \\n");
    	num++;  // num 이 1 증가 -> 반복 조건을 무너뜨리기 위한 최소한의 연산 => 이게 없으면 '무한루프' 발생
    }

    do~while 문

    • while 문과의 차이점은 '반복의 조건을 검사하는 시점'에 있음. 이는 반복 영역을 최소한 한 번은 실행하는 구조임.
    • 사용자가 값을 입력해야 조건이 성립할 때와 같이 최소 한 번은 실행되어야 하는 경우 유용하게 사용됨.
    do {
    	printf("Hello World! \\n");
    	num++;
    } while (num < 3);

    for 문

    • 반복문 중에서 가장 많이 사용되는 반복문으로, 반복을 위한 변수의 선언과 반복 조건을 '거짓'으로 만들기 위한 값의 증가 및 감소 연산 등을 하나로 묶은 것.
    • 반복의 횟수가 딱 정해진 경우는 for 문이 최선이며, 사용자의 값 입력을 기다리는 상황이면 while 문이 더 자연스러울 수도 있음.
    • while 문과 마찬가지로 for 문의 for 문처럼 중첩해서 사용 가능
    /* while 문 구성 */
    
    int num = 0;  // 1) 반복을 위한 변수의 선언
    
    while (num < 3) {  // 2) 반복의 조건
    	printf("Hi");
    	num++;  // 3) 조건을 '거짓'으로 만들기 위한 연산
    }
    /* for 문 구성 ⇒ 초기식, 조건식, 증감식이 한꺼번에 구성됨. */
    
    for (int num = 0; num < 3; num++) {
    	printf("Hi");
    }
    • 아래와 같이 초기식과 증감식이 불필요하다면 비워도 되지만, 중간에 위치한 '조건식'이 비워지면 무조건 '참'으로 인식되어 무한루프를 형성함.
      for (; input >= 0.0;) {
      	printf("Hi");
      }​

     

    반복문의 생략과 탈출

    break

    • 반복문을 탈출할 때 (빠져나올 때) 사용하는 키워드로, 실행 시 break 문을 가장 가까이서 감싸고 있는 '반복문' 하나를 빠져나오게 됨.
    • 이는 무한루프를 빠려자가는 용도로도 사용됨.
    int main(void) {
    	while (1) {
    		if (x > 20)
    			break;  // while 문 탈출
    	}
    }

    continue

    • break 문과 마찬가지로 반복문 안에 삽입이 되며, 실행중인 위치에 상관없이 반복문의 조건검사 위치로 이동함. 조건이 여전히 '참'이라면 반복 영역을 다시 실행함.
    int main(void) {
    	while (1) {
    		if (x/2 == 1)
    			continue;  // 조건검사로 이동
    	}
    }
    

     

    더 알아가기

    • 반복의 대상을 지정할 때 사용하는 중괄호는 반복의 대상이 한 문장으로 이뤄진 경우 생략이 가능함.
    • 반복 조건이 와야 할 위치에 0이 아닌 값 ('참'을 의미하는 값) 이 올 결우에도 무한루프가 발생함.
    • 특정 기능을 완성하기 위해 필요에 의해서 무한루프를 구성하기도 함. (ex. break 문과 함께할 때)
    • 아직 일부 C 컴파일러는 '초기식' 위치에서 변수 선언을 허용하지 않고 있음. 이럴 경우 따로 미리 선언하기!

    'C' 카테고리의 다른 글

    [C] 조건문 (조건 제어문)  (0) 2021.12.15
    [C] 배열 (Array)  (0) 2021.12.15
    [C] 상수 (Const)  (0) 2021.12.08
    [C] 연산자 (Operator)  (0) 2021.12.08
    [C] 변수 (Variable)  (0) 2021.12.08

    댓글

leejiwonn