1 of 33

앱프로그래밍응용

2주차 - Dart 문법 (1/2)

2 of 33

2주차 - Dart 문법 (1/2)

  • 다트 언어 연습 환경
  • 기본 문법
  • 함수
  • 분기와 반복

※ Dart 언어는 C 계열 언어이므로 여러분은 이미 Dart 언어를 50% 이상 알고 있음

3 of 33

다트 언어 연습 환경

https://dartpad.dev/

4 of 33

Dart 언어

  • Google에서 설계하여 만든 JavaScript와 유사하지만 다른 정적 언어

  • Dart와 유사한 프로그래밍 언어
    • JavaScript - 거의 유사
    • Java - 클래스 및 메서드 구문 유사
    • C# - 비동기 프로그래밍 async, await 등이 유사

JavaScript의 동적 언어의 단점인 성능과 일관성의 문제를 보완하기 위해서� Google이 설계함

5 of 33

기본 문법

  • 주석
  • 문장
  • 변수
  • 상수
  • 연산자

6 of 33

주석

// 이것은 주석

/**�* 이것도 주석�**/

/// 이것도 주석

※ //, /* … */, /// – C 계열 언어의 주석과 동일

※ /// 주석을 이용하면 나중에 dartdoc과 같은 문서 생성 도구를 이용해 자동으로 문서화 할 수 있음

7 of 33

문장

  • 명령 단위. C 계열의 프로그래밍 언어는 세미콜론(;) 으로 한 문장을 표시 함

void main() {� // 여기에 작성� print(“Hello World!”) // 세미콜론이 빠졌으므로 에러� print(‘안녕하세요’);

}

8 of 33

변수

  • 데이터(값)을 저장하는 장소
  • 변수 종류를 타입(type) 또는 자료형이라 함
  • Dart는 크게 숫자형과 문자열의 기본 변수 타입을 제공 함

int : 정수�double : 실수(소수점)�String: 문자열�bool: 참 또는 거짓

9 of 33

변수

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;

10 of 33

변수 - 타입 추론

  • 변수 타입을 추론할 수 있다면 선언 시 변수형을 ‘var’로 쓸 수 있음

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를 쓰는 이유? 가독성, 유연성, 일관성 향상

11 of 33

상수 final, const

  • 값이 한번 설정되면 바꿀 수 없는 것을 상수

final String name = ‘홍길동’;�name = ‘임꺽정’; 에러

final name = ‘홍길동’; // String을 생략할 수 있음

※ final과 const의 차이점 : final은 동작중에 값이 고정되나 const는 컴파일 시점에서 값이 고정 됨

12 of 33

연산자 - 산술 연산자

  • +, -, *
  • / : 나누기 (double형으로 반환)
  • ~/ : 몫 (int형으로 반환)
  • % : 나머지 (int형으로 반환)

※ C 계열 언어와 유사

13 of 33

증감 연산자

  • 후위 연산 : x++, x--
  • 전위 연산 : ++x, --x

※ C 계열 언어와 유사

14 of 33

비교 연산자

  • ==
  • !=
  • >
  • <
  • >=
  • <=

※ 연산 결과 : bool형

※ C 계열 언어와 유사

15 of 33

논리 연산자

  • && (and)
  • || (or)
  • ! (not)

※ 연산 결과 : bool형

※ C 계열 언어와 유사

16 of 33

타입 검사 - is, is!

  • is : 같은 타입이면 true, 아니면 false
  • is! : 같은 타입이면 false, 아니면 true

※ 연산 결과 : bool형

※ C# 언어와 유사

17 of 33

형변환 - as

var c = 30.5; // var는 double�int d = c as int; // 오류 발생. 이유는 double → int 안됨

※ 연산 결과 : 형변환 된 타입

※ C# 언어와 유사

※ 형 변환의 필요성 - 객체지향 언어의 객체(인스턴스)의 형 변환이 필요하기 때문

18 of 33

함수 - 형태

  • 특별한 기능을 하는 코드 묶음. 코드를 함수로 묶는 것을 모듈화라 한다.

int f(int x) {� return x + 10;�}

void main() {� var result = f(10);�}

※ C 계열 언어와 유사

19 of 33

함수 - 함수와 메서드

  • 함수 : 모든 지역에서 접근 가능 함

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);

20 of 33

함수 - 익명 함수

  • 익명 함수는 함수 코드를 변수 값처럼 취급해 변수에 담을 수 있도록 함

var list = [1, 2, 3, 4];�list.forEach((item) { // (item) { … } 익명 함수� print(item);�});

21 of 33

함수 - 람다식

(number) => number %2 == 0;

var list = [1, 2, 3, 4];�list.forEach((item) => print(item));

※ 익명 함수보다 단순한 함수 코드일 경우 람다 형태로 간단하게 표현 가능

22 of 33

함수 - 선택 매개변수

  • 선택적으로 함수에 전달하고자 하는 매개변수의 경우 { } 로 표시

void somthing({String name, int age}) {}

void main() {� something(name: ‘홍길동’, age: 10);� something(name: ‘홍길동’);� something(age: 10);�}

23 of 33

분기와 반복

  • if else
  • 삼항 연산자
  • switch case
  • for

※ C 계열 언어와 유사!

24 of 33

if else

String text = ‘hello’;

if (text is int) { // txt의 타입은 int가 아니므로 false� print(‘정수’);�} else if (text is double) { // txt 타입은 double이 아니므로 false� print(‘실수’);�} else {� print(‘정수도 실수도 아님’);�}

25 of 33

삼항 연산자

var isRainy = true;

var todo = isRainy ? ‘빨래를 하지 않는다’ : ‘빨래를 한다’;

// todo는?

26 of 33

switch case

enum Status {� Uninitialized, Authenticated, Authenticating, Unauthenticated�}

var status = Status.Authenticated;�switch (status) {� case Status.Authenticated:� …�}

※ C 계열 언어와 유사!

27 of 33

for

var items = [‘짜장’, ‘라면’, ‘볶음밥’];

for (var i = 0; i < items.length; i++) {� print(items[i]);�}

28 of 33

실습

29 of 33

실습 방법

  • https://dartpad.dev 사이트를 통해 Dart 실행
  • Copilot 띄우고 궁금한 것 생길때마다 질문하기�https://copilot.microsoft.com/

※ Dart 문법 심화 : https://dart.dev/language

※ 눈으로 보고 쉽다고 스킵하지 말것!�※ 리스트, 맵, 집합도 살펴볼 것!

Copilot) Dart의 자료형을 알려줘

30 of 33

실습 1

  • 구구단을 출력하라

31 of 33

실습 2

정사각형의 길이를 입력하고 사각형을 출력하라

? 10 // DartPad에서는 n = 10일 때의 출력으로 처리할 것

…..�. .�. .�. .�…..��※ 곽 찬 사각형, 테두리 사각형, / 표시, \ 표시, X 표시 사각형

32 of 33

실습 3

  • 년/월/일을 입력하면 요일을 출력하라

예)

입력: 2025-03-11 // var input = ‘2025-03-11’;

출력: 화 // 또는 화요일

33 of 33

과제

  • 오늘 배운 내용을 TIL 형태로 GitHub에 올릴 것

참고: https://doing7.tistory.com/4