Flutter/Dart 입문

[Dart] 5. 조건문

Couldi 2021. 10. 8. 12:10
반응형

21. 10. 8.

- Could -

 

이 글은 프로그래밍 입문을 Flutter 때문에 Dart로 시작하는 사람들을 위한 글입니다.
프로그래밍 언어가 가지고 있는 기본 컨셉 자체를 Dart라는 언어를 통해 설명하고,
많은 분들이 Flutter를 위해 학습한다고 생각해, 추후 Flutter 학습에 도움이 되는 방향으로 작성되었습니다.
1. 조건문(conditional)
 

A tour of the Dart language

A tour of all the major Dart language features.

dart.dev

이제부터 다룰 내용은 Dart doc 에서 Control flow statements 라고 얘기하는 내용이다. 코드는 일반적으로 위에서 부터 한줄씩 실행되는데 그 순서에 변형을 줄 수 있는 문법들이다. 코드의 흐름을 바꾸는 구문들이고 전에 배운 변수와 연산자와 맞물려 프로그래밍의 기초가 되는 개념들이다.

1. 조건문 (conditional)

조건문이라 하기도 하고 분기문이라 하기도 한다. 컴퓨터에 특정 조건을 제시하고 그 조건의 만족 유무에 따라 실행되는 코드에 변경을 주는 구문이다. 구문의 생김새는 생각보다 단순하다.

 

if statement(if문)

 

if (조건식) {
  print('조건식이 true면 이 안의 코드가 실행이 된다.');
}

 

if문의 시작을 알리는 if를 적은후 뒤에는 괄호를 열고 조건식을 적는다. 그 후 중괄호 {} 를 적고 조건식이 true일때 실행될 코드 내용들을 는다. 이렇게 규칙을 지켜서 적어주면, 컴퓨터가 조건식의 true, false를 판별해 {} 안의 코드를 실행시킬지 못본척 넘어갈지 결정한다.

간단한 예제코드를 살펴보자.

 

int age = 15;

if (age < 18) {
  print('미성년자에게는 주류를 판매하지 않습니다.');
}

 

age라는 상자를 만들어 15를 담았다. 그리고 if문의 조건식 위치에 age < 18 이라는 조건식을 넣었다. age < 18 는 true가 되고 중괄호 안에 있는 print문이 실행된다.

 

age 에 넣는 데이터 수를 바꿔가며 실행해보자. age에 18보다 큰 정수가 담기는 경우 print문은 실행되지 않는다.

 

else statement(ielse 문)

사실 위의 예제처럼 if문만 단독으로 사용하는 경우는 드물다. 보통은 else 문과 함께 쓰이는데, if가 조건문이 true일때 실행되는 코드를 적는다면, else는 false일때 실행되는 코드를 적는다.

 

int age = 15;

if (age < 18) {
  print('미성년자에게는 주류를 판매하지 않습니다.');
} else {
  print('행복한 음주 되세요');
}

age에 숫자를 바꿔가며 코드를 실행시켜보자.

 

else if statement(else if문)

이건 한번 더 조건을 걸때 사용한다.

 

int age = 15;

if (age < 18) {
  print('미성년자에게는 주류를 판매하지 않습니다.');
} else if (age <= 70) {
  print('행복한 음주 되세요');
} else {
  print('약주는 조금만 하세요');
}

 

위와 같은 식이다. age가 18이상의 수인 경우 else if문을 먼저 만나게 되고 여기서 마주하는 조건문에 따라 어떤 중괄호 안에 있는 코드가 실행 될지 결정된다. 이걸 일반적인 프로그래밍 교재나 선생님들이 else if문이 새로운 내용인 것처럼 설명하는 경우가 있는데, 결국 if문과 else문의 조합으로 구성된 문법일 뿐이다. if문과 else문의 개념만 알고 있다면 사용하는데 큰 문제는 없다.

 

switch statement(switch 문)

if문의 경우는 true냐 false냐 두가지 경우에 따라 어떤 코드를 실행시킬지 결정한다. 하지만 인생을 살다보면 항상 두 갈래길만 마주하게 되는건 아니다. switch문은 인생의 여러갈래의 길 중 하나를 선택해야할때 유용하게 사용된다. if문과 else문을 사용해서 대체할 수 있으니 switch문은 잘 몰라도 된다고 얘기하는 사람도 보았지만.. 그 생각에는 동의 할 수 없다.

 

if문에 비해 사용이 조금 까다로울 수는 있다. 하지만 한번 이해하고 나면 여러갈림길을 만드는데 큰 도움을 주니 꼭 이해하고 넘어가자. 전체적인 코드 구성을 외우고 있지는 못하더라도, 어떤때 사용하면 좋겠구나를 알고 나면, 필요할때 검색해서 사용하면 된다.

 

https://dart.dev/guides/language/language-tour#switch-and-case

 

A tour of the Dart language

A tour of all the major Dart language features.

dart.dev

 

int difficulty = 2;

switch (difficulty) {
  case 1:
    print('easy');
    break;
  case 2:
    print('normal');
    break;
  case 3:
    print('hard');
    break;
  default:
    print('please, re-select difficulty.');
}

 

if문과 비슷하기도 많이 다르기도 하다. if문 다음에 조건문을 적었다면, swich문은 비교할 대상을 적는다. 즉, 괄호 안의 내용과 case 뒤에 있는 내용이 같은지를 판단하여 값을 지정한다. 위 코드를 분석해보자면, difficulty에 2가 들어있으므로 case 2: 에 적힌 코드가 실행된다.

 

break는 swich문을 끝내는 명령어이다. swich문이 실행되면 {} 안 코드 중 조건이 맞는 코드줄로 이동해 코드를 실행시키고  break문을 만나면 {} 안의 코드 실행을 멈추고 {} 밖의 코드를 차례차례 실행시키기 시작한다.

 

default는 만약의 경우를 대비한 코드이다. 발생할 수 있는 case를 모두 적어 두었다고 생각했지만, 혹시 모르는 예외가 발생 한다면 컴퓨터는 조건이 맞는 case를 찾아 영원히 헤메고 있을꺼다. 그런 상황을 방지하기 위해  case를 못찾았을 경우 실행시킬 코드를 넣어둔다.

default는 보통 swich문 제일 마지막 부분에 적기 때문에 따로 break문을 적어줄 필요는 없다.

반응형