Dart의 흐름 제어문은 프로그램의 실행 흐름을 제어하는 데 사용된다. 이를 통해 조건에 따라 코드를 실행하거나 반복적으로 코드를 실행할 수 있다. Dart에서 제공하는 주요 흐름 제어문으로는 if, switch, for, while이 있다.

if 문

if 문은 주어진 조건이 참일 때 코드 블록을 실행하는 제어문이다. 기본 구조는 다음과 같다.

if (condition) {
  // 조건이 참일 때 실행되는 코드
} else if (otherCondition) {
  // 다른 조건이 참일 때 실행되는 코드
} else {
  // 모든 조건이 거짓일 때 실행되는 코드
}

예제

int age = 18;

if (age >= 18) {
  print("성인이다.");
} else {
  print("미성년자이다.");
}

이 예제에서, age 변수가 18 이상이면 "성인이다."라는 메시지를 출력하고, 그렇지 않으면 "미성년자이다."라는 메시지를 출력한다.

switch 문

switch 문은 여러 조건을 비교할 때 사용하는 제어문으로, if-else if 문을 간결하게 표현할 수 있다. switch 문은 값과 일치하는 case 블록을 찾아 실행하고, 일치하는 값이 없으면 default 블록이 실행된다.

기본 구조

switch (expression) {
  case value1:
    // value1에 해당하는 코드
    break;
  case value2:
    // value2에 해당하는 코드
    break;
  default:
    // 아무 것도 일치하지 않을 때 실행되는 코드
}

예제

String grade = 'B';

switch (grade) {
  case 'A':
    print('우수');
    break;
  case 'B':
    print('양호');
    break;
  case 'C':
    print('보통');
    break;
  default:
    print('재수강 필요');
}

위 예제에서 grade 변수가 'B'이므로 "양호"라는 메시지가 출력된다. 각 case 이후에는 break 문을 사용하여 실행을 중단해야 한다. 그렇지 않으면 다음 case로 계속 실행된다.

for 문

for 문은 일정 횟수만큼 코드를 반복 실행하는 제어문이다. 일반적으로 초기값, 조건식, 증감식을 사용하여 반복을 제어한다.

기본 구조

for (초기값; 조건식; 증감식) {
  // 반복할 코드
}

예제

for (int i = 0; i < 5; i++) {
  print('반복 횟수: $i');
}

위 예제에서는 i가 0부터 시작하여 5 미만일 때까지 반복하며, 매번 i 값을 출력한다. i++는 반복할 때마다 i 값을 1씩 증가시키는 역할을 한다.

while 문

while 문은 조건이 참일 때까지 코드를 반복 실행하는 제어문이다. 조건을 먼저 평가하고 참일 경우에만 코드가 실행된다.

기본 구조

while (조건식) {
  // 반복할 코드
}

예제

int count = 0;

while (count < 5) {
  print('현재 카운트: $count');
  count++;
}

이 예제는 count 변수가 5 미만일 때까지 "현재 카운트"를 출력하며, 매번 count 값을 1씩 증가시킨다.

do-while 문

do-while 문은 while 문과 유사하지만, 조건을 나중에 평가한다. 즉, 코드 블록이 먼저 실행된 후 조건을 검사하여 반복 여부를 결정한다. 따라서 적어도 한 번은 무조건 실행된다.

기본 구조

do {
  // 반복할 코드
} while (조건식);

예제

int count = 0;

do {
  print('현재 카운트: $count');
  count++;
} while (count < 5);

위 예제에서는 count 변수가 5 미만일 때까지 반복하면서 count 값을 출력한다. do-while 문에서는 while 문과 달리 코드가 먼저 실행된 후 조건을 검사한다.

흐름 제어의 중첩

흐름 제어문은 다른 흐름 제어문 안에 중첩될 수 있다. 이를 통해 더 복잡한 논리를 구현할 수 있다. 예를 들어, if 문 안에 for 문을 넣거나 switch 문 안에 if 문을 넣는 방식이 가능한다.

예제

for (int i = 0; i < 3; i++) {
  if (i % 2 == 0) {
    print('$i는 짝수이다.');
  } else {
    print('$i는 홀수이다.');
  }
}

이 예제에서는 for 문 안에 if 문을 중첩하여 i의 값이 짝수인지 홀수인지 확인하고, 각각에 맞는 메시지를 출력한다.

break와 continue

흐름 제어문 내에서 breakcontinue를 사용하여 반복을 제어할 수 있다.

예제: break

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    break;
  }
  print('반복 횟수: $i');
}

이 예제에서는 i가 3이 되면 break 문이 실행되어 반복이 종료된다. 결과적으로 0, 1, 2만 출력된다.

예제: continue

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    continue;
  }
  print('반복 횟수: $i');
}

이 예제에서는 i가 3일 때 continue 문이 실행되어 그 이후 코드를 건너뛰고 다음 반복을 시작한다. 결과적으로 3은 출력되지 않고 0, 1, 2, 4가 출력된다.