Dart 프로그래밍 기초 - #4. 제어 흐름

2024. 9. 25. 19:00Dart

Dart 프로그래밍 언어에서 제공하는 제어 흐름(Control Flow)에 대해 알아봅시다. 제어 흐름은 프로그램이 코드의 어떤 부분을 실행할지 결정하는 방식입니다. 쉽게 말해, "어떤 일이 발생할 때 프로그램이 어떻게 반응하라"고 명시하는 것입니다. 지금부터는 각 흐름 제어문을 간단한 예시와 함께 설명하겠습니다.

 

조건문(if, else if, else)

if 문은 특정 조건이 참일 때 코드의 일부를 실행하도록 합니다. 만약 조건이 거짓이라면, 여러 else if 문을 통해 다른 조건들을 확인해보고 실행하도록 할 수 있습니다. else if문에도 해당되는 조건이 없다면, else 문을 통해 대체 실행할 코드를 지정할 수 있습니다.

 

 

조건절의 괄호 안의 문이 참이면 해당하는 중괄호 내의 code block이 실행됩니다.

4번 라인은 temperature >= 10을 명시적으로 쓰고 있지만 사실 temperature < 10가 거짓이기 때문에 생략해도 무방합니다.

 

for 문

for 문은 코드의 일부를 일정 횟수만큼 반복 실행하고 싶을 때 사용합니다. 보통 리스트나 배열의 각 요소를 처리할 때 사용됩니다.

 

forLoop() 함수를 실행하면 아래와 같은 결과가 나오게 됩니다.

 

for문에는 세 가지 요소가 있는데 for(초기화; 조건; 증감)를 사용하여 반복을 제어합니다. '초기화' 코드를 실행하고 '조건'에 이를 때까지 for 문 블록 내에 있는 코드를 반복 실행합니다. i라는 변수가 0으로 초기화된 상태에서 시작해서 print() 함수를 호출하고, 블록의 코드가 모두 실행되면 조건문에 해당하는 내용을 검사합니다. 아직 조건문에 도달하지 않았다면 '증감' 부분에 해당하는 코드를 수행하고 다시 블록 내의 코드를 실행합니다.

 

for-in 문

for-in 문은 Dart에서 리스트(List), 집합(Set), 맵(Map) 같은 Iterable 객체의 요소를 반복하는 데 사용됩니다.

 

break, continue

실행 도중에 조건에 따라 스킵하거나 for문을 빠져나갈 수도 있습니다.

break는 루프나 switch 문에서 즉시 빠져나오고 싶을 때 사용합니다. continue는 루프의 현재 반복을 중단하고, 다음 반복으로 넘어갑니다.

 

 

위의 코드를 실행해보면 다음과 같은 결과가 출력됩니다.

 

continue와 break에 도달하게 되면 이후의 코드를 실행하지 않지만, continue는 증감 코드를 실행하고 이후의 코드를 실행하면서 다음 반복으로 넘어가고, break는 바로 중단해버리는 차이가 있습니다.

 

while 문

while 문은 특정 조건이 참일 때까지 코드를 반복해서 실행합니다.

여기서는 count가 3보다 작을 때까지 "Count is $count"가 출력됩니다. 만약 count를 증가시키지 않고 감소시킨다면 어떻게 될까요? 무한 루프에 빠지게 됩니다. 이럴 경우에는 프로그램이 강제 종료되지 않으면 계속 실행되기 때문에 주의해야 합니다.

do-while 문

do-while 문은 while 문과 비슷하지만, 조건을 체크하기 전에 코드를 최소한 한 번은 실행합니다. while문에서의 예제와 같은 결과를 실행하려면 아래와 같은 코드로 나타낼 수 있습니다.

 

switch 문

 

switch 문은 여러 개의 조건을 검사할 때 유용합니다. 주어진 변수의 값에 따라 코드의 다른 부분을 실행할 수 있습니다. 해당하는 구문이 없다면 default 구문을 수행하게 됩니다.

다른 언어와 다른 점은 switch 문에서 break;가 없을 때 어떻게 되는지가 다르다는 것입니다. Java와 같은 언어에서는 printEmoji('banana');를 실행했을 때, banana와 apple에 해당하는 케이스를 모두 실행하고 break;를 만나서 멈추게 됩니다. Dart에서는 이러한 fall-through 기능은 비어 있는 case문에만 적용이 됩니다. 'berry'의 경우처럼 명시적으로 아무 것도 수행하지 않음을 나타내고자 할 때만 break;를 사용하도록 권장하고 있습니다.

 

switch case문으로 변수의 값에 따라 리턴을 할 수도 있습니다.