앱프로그래밍응용
2주차 - Dart 문법 (1/2)
2주차 - Dart 문법 (1/2)
※ Dart 언어는 C 계열 언어이므로 여러분은 이미 Dart 언어를 50% 이상 알고 있음
다트 언어 연습 환경
https://dartpad.dev/
Dart 언어
JavaScript의 동적 언어의 단점인 성능과 일관성의 문제를 보완하기 위해서� Google이 설계함
기본 문법
주석
// 이것은 주석
/**�* 이것도 주석�**/
/// 이것도 주석
※ //, /* … */, /// – C 계열 언어의 주석과 동일
※ /// 주석을 이용하면 나중에 dartdoc과 같은 문서 생성 도구를 이용해 자동으로 문서화 할 수 있음
문장
void main() {� // 여기에 작성� print(“Hello World!”) // 세미콜론이 빠졌으므로 에러� print(‘안녕하세요’);
}
변수
int : 정수�double : 실수(소수점)�String: 문자열�bool: 참 또는 거짓
변수
String name; // 변수 선언�name = ‘홍길동’; // 값 할당
bool b = true; // 참�bool b2 = i < 10; // i가 10보다 작을 경우 참, 같거나 클 경우 거짓�bool b3 = s.isEmpty; // s가 비어있을 경우 참, 비어있지 않을 경우 거짓
int i = 10; // 정수�double d = 10.0; // 실수
num a = 10; // 정수와 실수를 같이 쓰고자 할 때 ‘num’�num b = 20.0;
변수 - 타입 추론
var i = 10; // 추론에 의해 var는 int�var d = 10.0; // var는 double�var s = ‘hello’; // var는 String�var s2 = “hello”; // var는 String�var b = true; // var는 bool�var b2 = i < 10; // var는 bool�var b3 = s.isEmpty; // var는 bool
※ var를 쓰는 이유? 가독성, 유연성, 일관성 향상
상수 final, const
final String name = ‘홍길동’;�name = ‘임꺽정’; 에러
final name = ‘홍길동’; // String을 생략할 수 있음
※ final과 const의 차이점 : final은 동작중에 값이 고정되나 const는 컴파일 시점에서 값이 고정 됨
연산자 - 산술 연산자
※ C 계열 언어와 유사
증감 연산자
※ C 계열 언어와 유사
비교 연산자
※ 연산 결과 : bool형
※ C 계열 언어와 유사
논리 연산자
※ 연산 결과 : bool형
※ C 계열 언어와 유사
타입 검사 - is, is!
※ 연산 결과 : bool형
※ C# 언어와 유사
형변환 - as
var c = 30.5; // var는 double�int d = c as int; // 오류 발생. 이유는 double → int 안됨
※ 연산 결과 : 형변환 된 타입
※ C# 언어와 유사
※ 형 변환의 필요성 - 객체지향 언어의 객체(인스턴스)의 형 변환이 필요하기 때문
함수 - 형태
int f(int x) {� return x + 10;�}
void main() {� var result = f(10);�}
※ C 계열 언어와 유사
함수 - 함수와 메서드
bool isEven(int number) {� return number % 2 == 0;�}
class MyClass {� bool isEven(int number) {� return number % 2 == 0;� }�}��…�var myClass = MyClass();�print(myClass.isEven(10);
함수 - 익명 함수
var list = [1, 2, 3, 4];�list.forEach((item) { // (item) { … } 익명 함수� print(item);�});
함수 - 람다식
(number) => number %2 == 0;
var list = [1, 2, 3, 4];�list.forEach((item) => print(item));
※ 익명 함수보다 단순한 함수 코드일 경우 람다 형태로 간단하게 표현 가능
함수 - 선택 매개변수
void somthing({String name, int age}) {}
void main() {� something(name: ‘홍길동’, age: 10);� something(name: ‘홍길동’);� something(age: 10);�}
분기와 반복
※ C 계열 언어와 유사!
if else
String text = ‘hello’;
if (text is int) { // txt의 타입은 int가 아니므로 false� print(‘정수’);�} else if (text is double) { // txt 타입은 double이 아니므로 false� print(‘실수’);�} else {� print(‘정수도 실수도 아님’);�}
삼항 연산자
var isRainy = true;
var todo = isRainy ? ‘빨래를 하지 않는다’ : ‘빨래를 한다’;
// todo는?
switch case
enum Status {� Uninitialized, Authenticated, Authenticating, Unauthenticated�}
var status = Status.Authenticated;�switch (status) {� case Status.Authenticated:� …�}
※ C 계열 언어와 유사!
for
var items = [‘짜장’, ‘라면’, ‘볶음밥’];
for (var i = 0; i < items.length; i++) {� print(items[i]);�}
실습
실습 방법
※ Dart 문법 심화 : https://dart.dev/language
※ 눈으로 보고 쉽다고 스킵하지 말것!�※ 리스트, 맵, 집합도 살펴볼 것!
Copilot) Dart의 자료형을 알려줘
실습 1
실습 2
정사각형의 길이를 입력하고 사각형을 출력하라
? 10 // DartPad에서는 n = 10일 때의 출력으로 처리할 것
…..�. .�. .�. .�…..��※ 곽 찬 사각형, 테두리 사각형, / 표시, \ 표시, X 표시 사각형
실습 3
예)
입력: 2025-03-11 // var input = ‘2025-03-11’;
출력: 화 // 또는 화요일
과제