본문 바로가기

이론/다트&플러터

VOLUME.B: Dart 언어 기초 이해

겨울방학을 맞아 처음으로 새로운 언어를 공부해 보려고 합니다.

바로 'Dart'라는 언어인데요 이 언어는 2011년도에 나온것으로

비교적 최신 언어라고 볼 수 있습니다.

CHAPTER. 1 - DartPad를 이용하여 개발 환경 구축하기

 

웹 브라우저를 열고 https://dartpad.dev/? 에 접속합시다.

 

이렇게 별도의 개발환경을 설치하지않고 웹 브라우저를 통해서 Dart라는 언어를 공부할 수 있게 만들어놓은 사이트입니다. 당분간은 이 웹을 이용해 공부를 하게될 것 같습니다.

 

더보기

CHAPTER. 3 - 기초적인 숫자와 문자 다루기

문법 의미 주요특징
int 정수 -9,007,199,253,740,992 ~ 9,007,199,254,740,992
double 실수 최대 1.7976931348623157e + 308
num 숫자 정수 혹은 실수
String 문자열 글자, 단어 혹은 문장
var(static) 변수 정수, 실수, 문자열 등을 저장하며, 값의 변경 가능
(한번 값을 저장하고 나면, 같은 타입의 값을 저장해야 함)
dynamic 변수 정수, 실수, 문자열 등을 저장하며, 값의 변경 가능
(저장하는 값의 타입에 제한 없음)
constant 상수 처음 만드는 시점에 값을 설정하며, 값의 변경 불가능

 

[ $]

- print에서 문자열을 출력하도록 작성할 때 그 문자열 안에서 '$'기호로 시작하는 변수의 이름을 포함하면 해당 변수가 저장하는 값을 변수 이름의 위치에 출력하라는 의미가 된다.

- 만약 a*b의 값을 출력하고 싶으면 ${a*b}라고 입력하면 a와 b를 곱한 값을 출력해준다.

 

[final과 const의 차이는 무엇일까?]

- final 문법을 통해서 만든 상수는, 초기에 어떠한 값도 가지지 않는 상태로 만들어지고 나서 나중에 상수에 값을 저장할 수 있다. 반면 constant에서는 반드시 상수가 만들어지는 시점에서 상수가 저장할 값으로 초기화 해야한다.

- 프로그램의 시작 시점에서 상수에 저장할 값을 알 수 있다면 const를 사용하고, 프로그램이 시작된 후 계산에 의해서 상수 값을 만들어야 한다면 final을 사용한다.

 

[전체 코드]

void main() {
  // Variable Case.1
  int intTemp = 1;
  print(intTemp);
  double dblTemp = 2.2;
  print(dblTemp);
  num numIntTemp = 3;
  print(numIntTemp);
  num numDblTemp = 4.4;
  print(numDblTemp);
  String strTemp = "Hello!";
  print(strTemp);
  //Variable Case.2
  var varInt = 1;
  var varDouble = 2.2;
  var varString = "Hello!";
  print("$varInt $varDouble $varString");
  print("RESULT[ $varInt, $varDouble, '$varString']");
  //Variable Case.3
  dynamic dynInt = 1;
  dynInt = 3.3;
  dynamic dynDouble = 2.2;
  dynamic dynString = "Hello!";
  print("$dynInt $dynDouble $dynString");
  //Constant Case.1
  const double cMathPi = 3.141592;
  const cChangeRate = 1.3;
  print("$cMathPi $cChangeRate");
  //Constant Case.2
  final String fFirstFruit;
  fFirstFruit = "Banana";
  final fSecondFruit = "Mango";
  print("$fFirstFruit $fSecondFruit");
}

 

더보기

CHAPTER. 4 - 숫자 자세히 다루기

[주의해야할 점]

1. 컴퓨터에서 다룰 수 있는 숫자의 크기는 유한하다. Dart의 경우 정수의 크기는 웹 서비스를 개발하는 경우와 컴퓨터에서 바로 수행하는 경우에 다르다.

 

[연산자들]

연산자 의미 기능
+ 더하기 두 값을 더함
- 빼기 왼쪽 값에서 오른쪽 값을 뺌
* 곱하기 두 값을 곱함
/ 나누기 왼쪽 값을 오른쪽 값으로 나눔
~/ 나누기 왼쪽 값을 오른쪽 값으로 나눈 몫을 정수로 계산
% 나누기 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산
++ 더하기 연산자가 적용된 값을 1만큼 증가
-- 빼기 연산자가 적용된 값을 1만큼 감소
+= 더하기 연산자 왼쪽의 값에 연산자 오른쪽의 값을 더함
-= 빼기 연산자 왼쪽의 값에서 연산자 오른쪽의 값을 뺌
*= 곱하기 연산자 값에 연산자 오른쪽의 값을 곱함
/= 나누기 연산자 왼쪽의 값을 연산자 오른쪽의 값으로 나눔

 

[++ 연산자에서 주의할 점]

1. ++ 연산자가 변수 앞에 있을 경우: 다른 연산자보다 ++를 먼저 실행

number1 = number1 + 1
number3 = number3 + 1
//number3 = ++number1 + 1;과 동일

2. ++연산자가 변수 뒤에 있을 경우:

number4 = number2 + 1
number2 = number2 + 1
// number4 = number2++ + 1;과 동일

*--연산자도 동일

 

[전체 코드]

void main(){
  num number1, number2; //의미없는 값이 들어가게 됨.
  num tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
  number1 = 3;
  number2 = 3;
  tmp1 = number1 + number2;
  tmp2 = number1 - number2;
  tmp3 = number1 * number2;
  tmp4 = number1 / number2;
  tmp5 = number1 ~/ number2;
  tmp6 = number1 % number2;
  
  num number3, number4;
  
  number3 = ++number1 + 1;
  number4 = number2++ + 1;
  // number3 = --number1 + 1;
  // number4 = number2-- + 1;
  print('[1] $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp5 $tmp6');
  print('[3] $number3 $number4');
  
  number1 = 3;
  number1 += 1;
  print('[5] $number1');
  
  number1 = 3;
  number1 -= 1;
  print('[6] $number1');
  
  number1 = 3;
  number1 *= 2;
  print('[7] $number1');
  
  number1 = 6;
  number1 ~/= 2;
  print('[8] $number1');
  
  number1 = 7;
  number1 %= 2;
  print('[9] $number1');
}

[출처]풀스택 개발이 쉬워지는 다트&플러터 - 이성원