다트 프로그래밍

다트 Dart는 구글에서 개발한 언어입니다. 이 언어는 주로 플러터 (Flutter) SDK와 함께 사용되어 크로스 플랫폼 앱을 개발하는데 사용됩니다. 이러한 것들이 무슨 의미가 있느냐? 플러터로 모바일 앱을 만들기 위해서는 다트(Dart)를 알아야 한다는 뜻입니다.

 

다트(Dart) 난이도

다트는 배우기 쉬운 것으로 알려져 있습니다. 물론 사람마다 차이가 있을 듯 합니다. 다트에 대해 쉽다고 이야기하는 사람들은 이미 자바, C++ 같은 객체지향 프로그래밍의 학습을 마친 경우가 많아서 처음 배우는 사람에게도 쉬운지는 모르겠습니다. 하지만 커뮤니티의 추천을 보면 다트는 과거 언어들의 문제들을 보완했고 구글이 설계하여 상당히 견고한 언어라서 향후 자바스크립트를 대체할 수도 있을 것이다 - 라는 평도 있습니다. 웹이 어려워지는게 자바스크립트의 난해함 때문인데 다트건 다른 언어건 언젠가는 대체할 수도 있겠지요.

 

 

퀵 스타트

그 언어가 쉬운지 어려운지는 시작해 보면 알 것 입니다. 필자는 그 동안 코딩 포스팅을 할 때 언어의 배경 설명이라던가 꽤 시간을 들여 썼던 것 같습니다. 그런데 그러다가 보니 정작 프로그래밍에 대해서 많이 다루지 못한 아쉬움도 있습니다. 코딩은 명령어의 나열과 조합이기 때문에 본인이 하나씩 실행하면 결과가 나오는 건데 굳이 상세히 설명하는게 필요하나 싶을 때도 있고 여튼 그렇습니다.

 

앞으로는 조금 스타일을 바꿔서 코드에 대한 포스팅은 빠르게 코드의 핵심으로 들어가도록 하고 나머지 배경 지식이라던가 읽을 만한 내용은 별도의 포스팅으로 빼도록 하겠습니다.

 

그럼 바로 퀵 스타트 들어가 보겠습니다.

 

다트 SDK의 설치는 아래 문서를 참고합니다.

 

dart SDK 설치하기 (다트 프로그래밍 언어) - 윈도우 (tistory.com)

 

dart SDK 설치하기 (다트 프로그래밍 언어) - 윈도우

dart SDK dart (다트)는 크로스 플랫폼 모바일 앱을 개발하기 위해 플러터에서 사용하는 프로그래밍 언어입니다. 구글이 개발했으며 최근 플러터가 차세대 프레임워크로 주목을 받으면서 떠오르고

digiconfactory.tistory.com

 

설치가 귀찮으면 웹브라우저에서 DartPad - 다트패드 - 를 사용해도 됩니다.

 

https://dartpad.dev/? 

 

DartPad

 

dartpad.dev

 

다트의 문자열, String Interpolation

다트 문자열을 선언하는 것은 String 키워드로 합니다. 그 다음에 알아야할게 String Interpolation 입니다. 이게 무슨 말이냐면 문자열안에 문자열 변수를 넣는 것 입니다. 꼭 문자열 변수가 아니라 정수도 넣을 수 있는데 이렇게 하면 변수의 재사용성이 좋아지죠. String Interpolation은 다른 언어나 프레임워크에서도 흔히 볼 수 있는 기능입니다.

 

 

void main(){

    String name = '한상국';
    String hello = '안녕하세요!';

    print("${hello}, ${name} 님!");

    name = '고인몰';

    print("${hello}, ${name} 님!");

    hello = '잘 가세요! ${name} 님';
    print("${hello}");

}

결과는 다음처럼 나옵니다.

안녕하세요!, 한상국 님!
안녕하세요!, 고인몰 님!
잘 가세요! 고인몰 님

위의 코드는 간단하지만 문자열을 어떻게 다뤄야하는지 여러가지 생각할 수 있습니다. ${ } 이 안에는 표현식도 들어갈 수 있습니다.

 

다음 예제에서 세가지 변수를 볼까요? String, int, double 입니다. 문자열, 정수, 부동소수점 수 이렇게 세 종류가 기본입니다. 보통 언어를 만들 때 이 세가지는 기본이지요. C처럼 자료형(type)을 수십개 이상 세분화시킬 수도 있지만 현대의 고급언어들은 이런 것들을 좀 더 편하게 정리해 놓은 느낌이 있지요. 다트는 type safe 언어로 정적인 static 타입 언어입니다. 쉽게 말해 변수의 타입을 직접 지정해야 하는데 최신 흐름이 그렇듯 기본타입에는 크게 신경쓰지 않아도 되는 언어입니다. 그래서 배우기 쉬운 측면도 있습니다.

 

그 다음에 bool 은 true or false 입니다. 제어문에 사용되는 변수입니다. 자바나 C++을 학습했다면 모두 너무나 익숙한 타입들입니다.

 

void main(){

    String name = "김다트";
    int age = 15;
    double height = 175.5;
    
    bool isRunning = true;

    print("제 이름은 ${name} 입니다.");
    print("나이는 ${age}살이며, 키는 ${height}cm 입니다.");
    print("3곱하기 7에 대한 답은 ${3*7} 입니다");

    print("다트 프로그램이 작동합니다. 맞습니까? ${isRunning}");

}

결과는 다음과 같습니다.

제 이름은 김다트 입니다.
나이는 15살이며, 키는 175.5cm 입니다.
3곱하기 7에 대한 답은 21 입니다
다트 프로그램이 작동합니다. 맞습니까? true

* 문자열의 구조를 좀 더 알아보면,

 

문자열에 대한 정보와 인덱스를 사용할 수 있습니다. length는 길이를 말하고 인덱스는 문자열에 있는 문자를 하나씩 접근할 수 있습니다.

 

void main(){

    String fruit = "apple";
    // comments

    print("문자열 길이: ${fruit.length}");

    print(fruit[0]);
    print(fruit[1]);
    print(fruit[2]);
    print(fruit[3]);
    print(fruit[4]);
}

 

문자열 길이: 5
a
p
p
l
e

 

인덱스는 for 문과 함께 사용하면 편합니다.

import "dart:io";

void main() {
  String fruit = "apple";
  // comments

  for (int i = 0; i < 5; i++) {
    stdout.write(fruit[i] + ", ");
  }
}

결과는 다음과 같습니다.

a, p, p, l, e,

 

문자열 라이브러리는 다트 API를 참고합니다. 코어 라이브러리에 있는 내용으로 기본적인 문자열 조작이 가능합니다. 연산자(operator)도 문자열은 int 등 다른 변수에 비해서 차이가 있으니 잘 봅니다.

 

https://api.dart.dev/stable/2.17.3/dart-core/String-class.html

 

String class - dart:core library - Dart API

A sequence of UTF-16 code units. Strings are mainly used to represent text. A character may be represented by multiple code points, each code point consisting of one or two code units. For example, the Papua New Guinea flag character requires four code uni

api.dart.dev

공유하기

facebook twitter kakaoTalk kakaostory naver band