brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Mar 03. 2020

다트 조건문과 반복문 (Control Flow)

플러터를 위한 다트 프로그래밍

다트의 제어 흐름

다트는 익숙한 형태의 기본적인 조건문과 반복문을 모두 지원한다. assert문이 다소 생소할 수 있으나 이 역시 C나 자바에서 이미 제공하고 있는 기능이다. assert문도 안다면 사실상 이번 포스팅은 그냥 넘기면 된다.


조건문

종류는 다음과 같다. 사용법과 형태도 예상 그대로다.


if, if~else, switch, assert



다른 프로그래밍 언어 경험자라면 별도 학습이 불필요할 정도로 똑같다. 한 가지 언어를 배우고 나면 다른 언어를 배울 때 다소 수월한 이유 중 하나이기도 하다.



그래서 설명하기도 민망하여 그냥 넘어가려고 했으나 간단한 설명과 예제를 남긴다.


1) if, if~else

기본 형태와 사용 예제는 다음과 같다. if의 조건이 참이면 { } 내부를 실행한다. 만약 if~else문이라면 if의 조건이 거짓이면 else의 { } 내부를 실행한다.


if (조건) { 

실행문;

}


if (조건) {

 실행문

} else { 

실행문;

}


ex)

if(a==1) {

 print('a is 1'); 

} else {

print('a is not 1');

}



2) switch

기본 형태와 사용 예제는 다음과 같다. switch()에 전달된 값이 case 값에 일치하면 해당 case 내부를 실행한다. break가 없으면 이어서 다음 case까지 실행하게 되기 때문에 case 구분이 필요할 때는 반드시 break를 선언한다. 모든 case에 만족하지 않으면 default 내부를 실행한다.


switch(변수) {

case 값1:

실행문;

break;

case 값2:

실행문;

break;

default:

실행문;

}


ex)

var number = 1;

switch(number) {

case 1:

print('number is 1');

break;

case 2:

print('number is 2');

break;

default:

print('number is not 1 or 2');

}



3) assert


assert(조건식);

ex) assert(a>0);


assert는 조건식이 거짓이면 에러가 발생한다. 아래 예제에서 a > b는 false인데 왜 에러가 발생하지 않았을까? assert는 debug mode에서만 동작하기 때문이다. 따라서 현재는 release mode(production mode)라는 것이다.

안타깝게도 IntelliJ에서 debug mode로 실행하는 방법을 몰라서 안드로이드 스튜디오로 잠시 넘어갔다. (의외의 복병.. 누가 좀 알려주세요...) 안드로이드 스튜디오는 기본이 debug mode라서 같은 코드인데 아래와 같이 에러가 발생하는 것을 확인할 수 있다.


반복문

종류는 다음과 같다. 사용법과 형태도 예상 그대로다.


for, while, do~while


1) for

for문은 반복문의 가장 기본이다. 반복 횟수를 지정해주기 쉽고 증감식을 통해서 리스트 형태의 데이터에 좀 더 유연하게 접근할 수도 있다. 조건식은 보통 초기화해준 인덱스의 범위를 지정해주는 데 사용한다. 증감식은 인덱스의 값을 증가, 감소할 수 있다. i +=2 이런 식으로 2씩 증가도 가능하다.


for (초기화; 조건식; 증감식) {

실행문;

}


ex)

for (int i = 1; i < 5; i++) {

print('i = $i');

}


2) while

while문은 조건식이 참이면 내부를 순환하는 구조이다. 즉, 조건식이 거짓일 때까지 반복한다. switch문처럼 break를 지원하기 때문에 특정 조건에서 멈추고 싶다면 break를 사용하면 된다. 혹은 특정 조건에서 더 이상 다음 내용을 실행하지 않고 다시 반복하려면 continue를 사용하면 된다. 무한 반복하려면 조건식에 true를 쓰면 된다.


while(조건식) {

 실행문;

}


ex)

int a = 0;

while(a < 5) {

 print('hello');

 a++;

}


3) do~while

do~while문은 while문과 딱 하나의 차이가 있다. while문은 조건식을 확인하고 참일 때 실행을 하기 때문에 처음 조건식 확인 시 거짓이면 한 번의 실행도 없이 끝난다. 하지만 do~while은 일단 한 번 실행한다(do). 그 후에 while의 조건식을 보고 참이면 다시 반복하고 거짓이면 끝낸다.


do {

 실행문;

} while (조건식);


ex)

int a = 0;

do {

 print('hello');

} while (a > 0);


기본적인 반복문 예제와 실행결과는 다음과 같다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari