티스토리 뷰

흐름 제어

  • 프로그램은 한 줄씩 실행됨
  • 어떤 조건에 따라 특정 line으로 실행흐름을 이동시키거나, 특정 영역을 반복 실행시킨다.

조건문

  • 특정 조건을 만족할 때 해당 코드 실행

  • if - else if - else

    • 조건에 맞는 if block 또는 else if block을 실행

    • 어느 조건도 만족하지 않을 때 else block 실행

      if (조건1) {
        // code 1
      } else if (조건2) {
        // code 2
      } else {
        // default code
      }
  • switch

    • 일치하는 case의 코드 실행

    • 어떤 case도 일치하지 않을 때 default 코드 실행

      switch (값) {
      case 조건1:
        // code 1
        break;
      case 조건2:
        // code 2
        break;
      default:
        // default code
        break;
      }   

반복문

  • 특정 조건을 만족할 때 특정 명령을 반복해서 실행

  • for문과 while문은 상호 치환 가능. Assembly단에서는 동일한 명령어로 동작한다.

  • for

    • 초기화한 뒤 초기화한 값이 조건에 맞는다면 명령을 실행하고 반복 끝 명령어로 마무리.

    • 다음으로 조건에 만족한다면 명령을 실행하는 것을 반복

    • 반복 탈출할 떄 break 사용

      for (초기화; 조건; 반복 끝 명령어) {
        // 명령
      }
  • while

    • 조건을 만족하는 동안에 명령을 반복 실행
    • 조건을 만족하지 않게 되면 반복 종료
    • 중간에 반복을 탈출할 때 break 사용
    • while (조건) { // 명령 } // n을 계속 감소시키면서 명령 실행하기. n이 0이되면 조건이 false가 되므로 종료된다. int n; while (n--) { // 명령 }

무한 루프

  • 종료조건 없이 한 없이 반복되는 반복문
  • 조건이 항상 참이게 되는 경우 발생한다
  • 시스템 자원을 비정상적으로 많이 소모하므로 발생하지 않게 주의해야 함
for (;;) {
}

for (; 1;) {
}

반복 중첩

  • 반복문 안에 또 다른 반복문
  • 바깥 반복문이 n번 반복, 안쪽 반복문이 m번 반복 → n x m 번 반복하게 된다
for (int i=0; i<n; i++) {
    for (int j=0; j<m; j++ {
    }
}

함수

  • 입력(input)을 받아 처리한 뒤 결과값(output)을 반환(return)
  • 특정 소스코드의 실행이 반복되는 것을 줄여준다.
  • 라이브러리 : 자주 사용하는 함수들을 모아놓은 것으로 이해할 수 있다.
반환자료명 함수명(매개변수) {
    // 명령
    return 반환값;
}

재귀함수

  • 자기 자신을 포함하는 함수, 함수 안에서 자기 자신을 호출한다.
  • 종료 조건이 없다면 무한 루프에 빠질 위험. 재귀 호출의 종료 조건이 반드시 필요함
  • 코드를 많이 줄여주지만 무한 루프 위험이 있음
    • 함수 call → stack 자원 사용 → 무한루프가 발생하면 stack overflow error가 발생할 수 있다.
  • 대표적인 예로 팩토리얼을 구하는 함수를 들 수 있다.
    int factorial(int n) {
        if (n == 1)  return n;
        else return n * factorial(n - 1);
    }
TAG
댓글
댓글쓰기 폼