본문 바로가기
Flutter/Dart 입문

[Dart] 4. 변수와 연산

by Couldi 2021. 10. 7.
반응형

21. 10. 7.

- Could -

 

이 글은 프로그래밍 입문을 Flutter 때문에 Dart로 시작하는 사람들을 위한 글입니다.
프로그래밍 언어가 가지고 있는 기본 컨셉 자체를 Dart라는 언어를 통해 설명하고,
많은 분들이 Flutter를 위해 학습한다고 생각해, 추후 Flutter 학습에 도움이 되는 방향으로 작성되었습니다.
1. 변수
    - 변수의 선언
    - 변수의 할당
    - 사용
2. 연산
    - 연산자
        - 산술연산자
        - 비교연산자
        - 논리연산자 

 

1. 변수(Variable)

 

뭐라는거야

 

변수는 수학을 공부했다면 '아 x? 그거 얘기하는거 아냐?' 라는 생각이 먼저 든다. 그거 맞다. 변할 수 있는 수를 변수라 불렀고, 프로그래밍에서는 그 개념을 수 차원이 아니라 좀 더 큰 개념으로 사용하는데 자세한 내용을 알아보자면 저 위에 위키처럼 머리 아픈 이야기를 해야한다.

그러니까 우리는 쉬운 이해를 위해, 앞으로 변수는 '상자'라고 생각하자.

 

상자!

 

앞서 데이터가 무엇이고, 여러 종류의 타입이 있다는 걸 배웠다. 변수는 데이터를 담아두는 상자다. 프로그래밍 세계에서는 변수안에 데이터를 집어넣고, 여기저기 가져와 사용한다. 예를 들자면 이런식이다.

 

String name = 'Could';
print(name);

 

위 코드를 해석해보자면 name 이라는 상자를 만들어 그 안에 'Could' 라는 String 타입의 데이터를 넣은 것이다. 이런식으로 변수에 데이터를 넣으면 'Could' 라는 데이터를 name이라는 변수를 사용함으로 언제든지 호출이 가능하다.

 

DartPad에서 실습해보자.

Console을 확인해보면 Could 라는 String 타입의 데이터가 제대로 출력됨을 확인 할 수 있다.

 

변수의 선언

변수를 사용하기 위해서는 변수의 선언이라는 것을 해주어야한다. 선언 이라니 뭔가 대단한 것처럼 보이지만 그저 상자를 만드는 작업일 뿐이다.

변수는 상자다. 이 상자에 물건(데이터)를 넣기전에 '어떤 물건이 들어가는지(type)'와 '상자의 이름을 뭐라할지(변수명: variable name)'을 뭐라 할지 정해줘야한다. 이걸 변수의 선언 혹은 변수의 정의라고 부르는데 엄밀히 구분짓기도 하지만 입문자는 그럴 필요 없다.

(쓰다보면 그게그거 같고, 크게 구분할 일도 없다. 이게 구분할 일이 생긴다면 당신은 벌써 실력있는 개발자이다.)

 

String name; // 타입 변수명 순서로 적어준다.
int age;
double height;
double weight;

 

위에 코드를 보면 이제 읽을 수 있다. 상자 4개를 만들었고, 그 상자들의 이름은 각각 name, age, height, weight이다. 그 안에 넣을 수 있는 자료도 유추해볼수 있다. name에는 String 타입, age에는 int 타입, height와 weight에는 double 타입 데이터를 넣겠다고 선언한 것이다.

이렇게만 적어서 Dartpad에 실행하면 어떻게 될까?

 

 

Console에는 아무것도 출력되지 않는다. 대신 오른쪽 하단에 뭔가 info메세지가 잔뜩 뜬걸 볼 수 있는데, 읽어보면 '야, 상자는 만들었는데 안썼더라?' 라는 이야기다. 그렇다면 상자를 만들어 놨으니 안에 데이터를 넣어보자.

 

변수의 할당

변수의 할당은 상자안에 데이터를 넣는 과정을 말한다. 이때 = 기호를 사용하는데 수학에서 사용하는 기호와는 차이가 있다.

 

// 변수의 선언
String name;
int age;
double height;
double weight;

// 변수의 할당
name = 'James';
age = 41;
height = 183.5;
weight = 74.19;

 

상자안에 데이터를 넣는 법은 상자의 이름을 적고 = 기호를 쓴 뒤 넣고 상자에 넣고 싶은 내용을 적어주면 된다. 

 

제임스씨를 소개한다. 41세, 183.5cm, 74.19kg

 

DartPad로 보면 print문에 변수명을 활용해 코드를 적었고, Console에 제대로 출력 됨을 볼 수 있다.

 

만약에 변수에 데이터를 넣지않고 출력하라고 명령하면 어떻게 될까? 해보시라. 상자가 비었다고 에러가 날 것이고 이렇게 상자가 비어있는 상황을 'Null'이라고 한다. Dart에서는 'Null Safety'라는 기능을 제공하는데, 프로그래밍을 할때 상자가 비었는지 안비었는지 철저하게 감시해 프로그램이 동작할때 발생할수 있는 에러를 막아주는 기능이다. 지금은 개념정도만 알고 넘어가고, 어느정도 프로그래밍 언어가 익숙해진 후 공부하는 걸 추천한다.

 

변수의 사용

변수를 사용하고 싶을때는 변수명을 사용해서 적어주면 된다. 변수명만 적어둔다면 그 자리에는 변수 안에 넣은 데이터를 알아서 가져와 준다. 프로그래밍을 할때 대부분 변수를 가지고 작업을 한다는 사실만 기억해두자. 실습하고 써보면서 익히는게 제일이다.

 

2. 연산(Operation)

연산이란 무엇인가. 일반적으로 생각하는 덧셈, 뺄셈, 곱셈, 나눗셈. 우리는 이런걸 사칙연산이라고 부른다. 맞다. 이것도 연산의 한 종류다.

컴퓨터가 다루는 연산은 데이터를 처리하는 것을 말한다. 연산의 종류를 여러가지로 나눌 수 있겠지만 가장 기본이 되는 연산은 세가지다.

  • 산술연산(Arithmetic operation)
  • 비교연산(Comparison operation)(= 관계연산(Relational operation)
  • 논리연산(Logical operation)

일단은 이렇게 있다고만 알아두자. 다 배울 거다. 내용을 보면 '뭐야 별거 아니잖아.'라고 할게 뻔해서 나눠서 설명한다.

 

https://dart.dev/guides/language/language-tour#operators

 

A tour of the Dart language

A tour of all the major Dart language features.

dart.dev

자세한 공부를 원한다면 Doc을 보라. 모든 것은 doc에 있다.

 

연산자(Operator)

사칙연산을 할때 우리는 +, -, x, ÷ 기호를 사용한다. 컴퓨터도 마찬가지로 연산을 위해서 이런 기호를 사용하는데 이걸 '연산자(Operator)'라고 부른다. 

 

10 + 1
6 - 3
10 * 7
56 / 8
243 % 10

 

기호를 보고 '어.. 이거 이렇게 하라는 기호인거 같은데' 라는 생각이 든다면 그거 맞다. 더하기, 빼기, 곱하기, 나누기 기호이다. 마지막에 있는 % 기호가 생소할 수 있는데 이건 '나머지를 구하시오' 라는 기호이다. print문을 이용해 위에 코드들을 실행하면 결과는 다음과 같다.

예상한 것과 결과가 같은지 확인해보자. 역시나 그거가 맞았다.

 

산술연산자(Arithmetic operators)

이렇게 산수를 위해 사용하는 연산자를 산술 연산자라 하고 Dart의 산술연산자는 아래와 같다.

엇 못보던게 있는데요?

뭔가 처음보는게 몇개 껴있다. 눈을 질끈 감고 못 본 걸로 하자. 이해해보고 싶다면 doc을 보라.

 

 

비교연산자(Comparison operatiors)

비교연산자라하기도 하고, 관계연산자라고 하기도 한다. 뭐가 크냐 작냐 비교하는 기호들을 말한다. 비교연산자로 기억하던 관계연산자로 기억하던 가슴에 와닿는 단어로 기억하면 된다.

앞서 = 기호를 변수에 데이터를 할당하는 용도로 사용했기때문에 두 값이 같다는걸 표현하기 위해서는 == 을 두번 써야한다. 

프로그래밍에서 ! 는 보통 not의 의미를 가지므로, != 라고 하면 같지 않다는 뜻이다.

그럼 이렇게 대소비교를 하는 비교연산의 결과는 어떻게 나올까?

int age = 20;

print(10 > 7);
print(age < 18);
print(age == 20);
print(84 <= 9);

DartPad에 넣어보자.

오 결과가 true, false로 나온다. 

int 타입의 데이터들과 비교연산자의 연산 결과는 bool 타입으로 나온다. 프로그래밍은 이처럼 변수와 연산자를 가지고 데이터를 가공하고 변환하는 과정이다.

 

논리연산자(Logical operators)

다이어그램이 기억나는가? 기억 안나도 좋다. 살면서 and 인지 or 인지 구분해야할 상황을 안겪어봤다고는 말 못할거다. 논리연산자는 조건이 and 조건인지 or 조건인지 판단할때 쓰는 연산자이다.

추후 조건문을 공부할때 자세히 다룰꺼니 기호가 어떻게 생겼는지만 확인하고 가자. 아까 봤던 ! 도 있다.

반응형

'Flutter > Dart 입문' 카테고리의 다른 글

[Dart] 6. collection : Lists, Sets, Maps  (0) 2021.10.12
[Dart] 5. 조건문  (0) 2021.10.08
[Dart] 3. 데이터, 값, 타입  (0) 2021.10.06
[Dart] 2. 화면에 글자 출력하기  (0) 2021.10.05
[Dart] 1. 소개 그리고 공부준비  (2) 2021.10.03

댓글