일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 콜백 함수
- 주말에도 1일 1쿼리
- 2일차
- dart
- 컴포지션과 집합
- null check 연산자
- 다중상속
- null safety
- jmeter
- mysql mongo 성능 비교
- FLUTTER
- LinkedList
- 1일 1쿼리
- my_sql
- 비동기 처리
- late 키워드
- null 억제 연산자
- array
- SQL
- 배열과 리스트
- null 병합 연산자
- 앱개발 가보자고
- ?. ?? ! late
- rdbms nosql 차이
- MySQL
- flutter 믹스인
- 주말도 식지않아
- 추상클래스
- 주말도 한다
- 오늘은 1일 2쿼리
- Today
- Total
subindev 님의 블로그
[Flutter] #1 Dart 기본 문법 - 타입추론, 상수, 연산자 본문
Dart 프로그래밍 기초
1. 데이터와 변수
데이터란?
데이터는 사물이나 현상에서 얻어진 사실 또는 값을 의미합니다. 우리가 처리하고 다루는 정보들이 바로 데이터입니다.
변수란?
변수는 값을 저장할 수 있는 메모리 공간을 의미합니다. 즉, 값을 저장해 놓고 나중에 재사용하거나 변경할 수 있는 메모리 공간을 이름으로 할당한 개념입니다.
데이터 타입이란?
데이터 타입은 메모리 공간에 들어간 값의 형태를 의미합니다. 예를 들어, 정수형, 실수형, 문자열 등으로 데이터를 구분할 수 있습니다.
void main() {
int n1 = 10;
double d1 = 10.0;
bool b1 = true;
String s1 = '홍길동'; // 홑따옴표 권장 사항
}
2. 타입 확인 및 타입 추론
타입 확인
타입 확인은 프로그램에서 예상치 못한 타입의 값이 들어올 경우, 오류를 방지하고 디버깅을 용이하게 해줍니다. Dart에서는 runtimeType을 사용하여 변수의 타입을 확인할 수 있습니다.
// 코드의 시작점
void main() {
int n1 = 10;
double d1 = 10.0;
bool b1 = true;
String s1 = '홍길동'; // 홑따옴표 권장 사항
print('정수 : ${n1.runtimeType}');
print('실수 : ${d1.runtimeType}');
print('정수 : ${b1.runtimeType}');
print('정수 : ${s1.runtimeType}');
}
타입 추론
타입 추론은 개발자가 변수의 타입을 명시하지 않아도, 자동으로 적절한 타입을 결정해주는 기능입니다. Dart에서는 var와 dynamic 키워드를 통해 타입 추론을 제공합니다.
void main() {
var n1 = 1;
var d1 = 10.1;
var b1 = true;
var s1 = '홍길동';
print(n1.runtimeType);
print('실수 : ${d1.runtimeType}');
print('부울 : ${b1.runtimeType}');
print('문자열 : ${s1.runtimeType}');
print('------------------------------------');
// var 키워드로 한 번 초기화된 데이터 타입은 다른 데이터 타입으로 변경이 불가능 하다.
// n1 = 20.1; 오류 발생
dynamic dyN1 = 100;
dyN1 = 20.5;
print('dyN1 ${dyN1.runtimeType}');
// dynamic 타입은 모든 타입을 받을 수 있고 다른 타입으로 변경도 가능하다.
} // end of main
3. 상수 (Constant)
상수란?
상수는 한 번 할당된 값이 변경되지 않는 변수입니다.
Dart에서는 final과 const 키워드를 사용하여 상수를 정의합니다. 두 키워드의 차이점은 컴파일 시점에 값이 결정되는지, 런타임 시점에 값이 결정되는지에 있습니다.
void main() {
final int n1 = 10;
// n1 = 100; 컴파일 시점에 오류 발생
const double d1 = 101.0;
// d1 = 20.1; 변경 불가능
// 상수 사용시 데이터 타입 역시 생략 가능 하다.
final a1 = 100;
const b1 = true;
} // end of main
그렇다면 어떤 상황에서 어떤 상수 타입을 쓰는걸까 ?
final과 const 사용
1. final을 사용하는 경우:
- 값이 실행 중에 결정되어야 하는 경우 사용합니다.
- 예: 현재 시간, 사용자 입력 등.
2. const를 사용하는 경우:
- 값이 컴파일 시점에 고정될 수 있을 때 사용합니다.
- 예: 상수 값, 변하지 않는 수학적 상수, 기본 설정 값 등.
4. 연산자 (Operators)
산술 연산자
산술 연산자는 두 개 이상의 수를 사용하여 수학적인 연산을 수행하는 연산자입니다.
나머지 연산자
나머지 연산자는 나누기 연산에서 나머지를 계산하는 연산자입니다. Dart에서 /는 실수 나누기이고, ~/는 정수 나누기를 의미합니다.
// 연산자
// 산술 연산자
void main() {
// 더하기
print('3 + 2 = ${3 + 2}');
print('3 - 2 = ${3 - 2}');
print('3 * 2 = ${3 * 2}');
print('3 / 2 = ${3 / 2}');
// 나머지 연산자
print('3 % 2 = ${3 / 2}');
print('5 ~/ 2 = ${5 ~/ 2}');
}
비교 연산자
비교 연산자는 두 값 간의 관계를 비교하여 true 또는 false를 반환합니다.
// 비교 연산자
// 두 개의 값을 비교하여 결과를 참/거짓을 판별할 때 사용한다.
void main() {
// 같다
print(' 2 == 3 -> ${2 == 3}'); // false
// 다르다
print(' 2 != 3 -> ${2 != 3}'); // true
// 왼쪽 값이 오른쪽 값보다 작다
print(' 2 < 3 -> ${2 < 3}'); // true
// 왼쪽에 있는 값이 오른쪽에 있는 값보다 크다
print(' 2 > 3 -> ${2 > 3}'); // false
// 왼쪽에 있는 값이 오른쪽에 있는 값보다 작거나 같다
print(' 2 <= 3 -> ${2 <= 3}'); // true
// 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같다 -- false
print(' 2 >= 3 -> ${2 >= 3}'); // false
}
논리 연산자
논리 연산자는 true 또는 false 값을 사용하여 논리적인 연산을 합니다. 주요 논리 연산자는 AND, OR, NOT입니다.
// 논리 연산자
void main() {
bool isRainy = true;
bool hasUmbrella = false;
// and
// T && T ---> True
print(isRainy && hasUmbrella);
print(hasUmbrella && isRainy);
// OR
print(isRainy || hasUmbrella);
print(hasUmbrella || isRainy);
// NOT
print(!isRainy);
}
Quiz 구간
1. [객관식] 변수와 데이터 타입
문제
다음 중 정수(int) 타입에 해당하는 값만 묶인 것은 무엇일까요? 1
- 1, 0, 3
- 3.14, 0.5, -2.0
- "Hello", "Dart", "Flutter"
- true, false
2. [객관식] 변수 선언
문제
Dart에서 아래 코드가 하는 일을 올바르게 설명한 것은? 1
var age = 20;
- 정수 타입의 age 변수를 선언하고 초기값으로 20을 대입한다.
- 문자열 타입의 age 변수를 선언하고 초기값으로 "20"을 대입한다.
- final 키워드를 사용해 변경 불가능한 변수를 선언한다.
- 변수 타입을 강제로 double로 지정한다.
3. [주관식] 기본 연산자
문제
“나머지 연산자” 를 나타내는 연산자는 무엇인가요?
정답
%
4. [빈칸 채우기] 데이터 타입
문제
Dart에서 소수점이 있는 실수(예: 3.14)를 저장하려면, ______ 타입을 사용해야 합니다.
정답
double
5. [코드 실행 결과 예측] 문자열 연산
void main() {
String greeting = "Hello";
String name = "Dart";
print(greeting + " " + name);
}
문제
위 코드를 실행하면 콘솔에 어떤 문자가 출력될까요?
정답
Hello Dart
6. [주관식] 변수 수정
문제
아래 코드에서 myAge의 최종 값은 몇일까요?
void main() {
int myAge = 10;
myAge = myAge + 5;
myAge = myAge - 2;
print(myAge);
}
정답
13
7. [참/거짓] 비교 연산자
문제
다음 문장들을 보고 참(True)인지 거짓(False)인지 구분하세요.
- 4 > 2
- 3 == 2
- 10 >= 10
- 5 < 1
정답
True , False, True, False
8. [객관식] 논리 연산자
문제
true && false || true 의 결과는 무엇일까요?
- true
- false
정답
true
9. [코드 실행 결과 예측] 나머지 연산자
void main() {
int x = 14;
int y = 5;
print(x % y);
}
문제
위 코드의 출력 결과는 얼마일까요?
정답
4
10. [빈칸 채우기] 상수 키워드
문제
한 번 할당하면 값 변경이 불가능한 컴파일 시점 상수는 Dart에서 ______ 키워드로 선언합니다.
정답
const
'앱개발 > Flutter' 카테고리의 다른 글
[Flutter] #5 Dart 기본 문법 상속과 super 키워드 (0) | 2025.01.06 |
---|---|
[Flutter] #4 Dart 기본 문법 Null Safety (0) | 2025.01.06 |
[Flutter] #3 Dart 기본 문법 클래스와 인스턴스 (3) | 2025.01.03 |
[Flutter] #2 Dart 기본 문법 - 익명함수와 람다식 (0) | 2025.01.03 |
[Flutter] 플러터(Flutter)란? (1) | 2025.01.03 |