1-3강이 왜 없는가 싶은데,
1-3강은 Mac 개발환경 세팅하는 내용이어서
Windows 유저인 나는 PASS했다.
Mac 유저인 블친들은 미안합니다🙏
멍청하게도, 1-3강 제목을 확인하지 않고 뭔가를 또 다운받으라고 해서
뭐야 끝난 게 아니야? 하면서 첫 번째 파일(Xcode)를 다운받던 중에
Mac 개발환경임을 알아차린 나새끼의 귀여움을 알리고, 오늘의 포스팅 시작한다.
Dart 프로젝트의 생성
VS Code를 연다.
커맨드 팔레트 (단축키: ctrl+shift+P)에 "dart new project"라고 입력
→ console application 선택하면 작업 경로를 설정하도록 나온다. 배경화면 pjoj 폴더로 선택.
→ 새로운 프로젝트의 이름을 적도록 하는데, 추천이름 (dart_application_1)으로 그대로 실행한다.

기카면 화면 우측 하단에 요래 VS Code가 Dart 프로젝트를 만들고 있다고 뜬다. 파란색 바가 슝슝 움직이는 것이 귀엽다.
Dart 프로젝트의 구성

그래 하면 다트 프로젝트가 이렇게 만들어진다.
구성을 하나씩 살펴보자.
.dart\_tool: Dart에서 내부적으로 사용하는 폴더로, 빌드 캐시와 설정 정보가 저장됨. → 개발자가 건드릴 일 없으니, 직접 수정하거나 버전관리에 포함시키지 않아야 한다.bin: 앱의 진입점이 되는main( )함수가 포함된 Dart 파일들이 위치한다. 콘솔앱 실행 시dart run이라는 명령어로 실행하게 되는데, 이때 이 폴더 내의 main 파일을 사용한다.

lib: 주요 기능을 모듈화하여 정의하는 곳. 클래스, 함수, 유틸리티 등을lib폴더에 저장해두면bin또는test에서 가져다 쓴다.test: 테스트 코드 작성용 폴더gitignore: Git에 포함시키지 않을 파일이나 폴더를 명시. dart에서는 사용하지 않고, flutter에서 사용 예정analysis_options.yaml: 코드 스타일이나 린트(lint) 규칙을 설정하는 파일. 팀 내 일관된 코드 스타일을 유지할 때 유용하다.changelog.md: 프로젝트의 버전별 변경사항을 정리하는 마크다운 문서. 나중에 패키지 배포할 때pub.dev에 변경사항을 기록하는 역할.pubspec.yaml: 프로젝트 이름, 의존성, SDK 버전, 메타데이터 등을 정의하는 핵심 설정 파일. flutter에서는 많이 사용한다.pubspec.lock: 설치된 의존성들의 정확한 버전을 고정하여 기록. 프로젝트 재설치 시 동일한 환경을 보장.README.md: 프로젝트의 개요, 설치법, 실행 방법 등을 설명하는 문서. GitHub 등에서 가장 먼저 노출되는 문서로, 문서화에 매우 중요하다.
VOD에서 이 구성 부분을 다룬 것은 4분이 채 되지 않는다.
그런데 이걸 옮겨적는 데에 나는 거의 40분을 썼다.
이런 구시대적 깜지 발상으로 이렇게 빠르게 변화하는 코딩 세계에서 살아남을 수 있을까?
학습의 방법, 정보를 처리하는 방법에 대해서도 고민이 필요할 것.
하지만 암튼 일단은 나는 이걸 다 옮겨 적으면서 한번이라도 뇌에다가 얼굴 비춰놓는 것이 마음 편하다.
뭐랄까. 새로운 회사에 입사했을 때 각 부서별로 인사 한 번 돌고 온 느낌.
프로그래밍 언어
0과 1로 구성된 디지털 언어와 인간이 사용하는 언어 사이에서 브릿지가 되어주는 언어 = 프로그래밍 언어
프로그래밍 = 컴퓨터에게 사람이 이해할 수 있는 언어로 명령을 내리는 일
더보기
사담은 접은 글로.
결국 언어를 배우는 것은 시스템을 배우는 것이다. 사유의 과정과 체계를 익히는 일이다.
그것은 프로그래밍에서는 물론이고 일반 언어를 배우는 일에서도 동일하다.
그러니 언어 학습은 단순히 어휘력이 증진되는 차원의 문제가 아니라, 사고 체계가 확장되는 일이다.
Dart 기초 문법
Main 함수
프로그램의 시작과 끝을 담당하는 함수.
Dart에서 main() 함수는 항상 하나만 존재해야 한다.main() 함수 없이는 프로그램을 실행할 수 없다.
Print 함수
콘솔(터미널, 명령줄 창)에 출력하는 함수. 문자열, 숫자, 참/거짓, 리스트, 변수, 계산식 등을 결과값으로 보여준다.
주석
// /* /// 등으로 표시한다.
연산자
산술 연산자
| 연산 | 기호 | 기호이름 | 입력 | 출력 |
|---|---|---|---|---|
| 덧셈 | + | plus | print(100 + 1); | 101 |
| print("100" + "1"); | 1001 | |||
| 뺄셈 | - | minus | print(100 - 1); | 99 |
| 곱셉 | * | asterisk | print(2 * 9); | 18 |
| 나눗셈 | / | slash | print(5 / 2); | 2.5 |
| 나머지 | % | percent | print(5 % 2); | 1 |
| 몫 | ~/ | tilde slash | print(5 ~/ 2); | 2 |
비교 연산자
| 연산 | 기호 | 입력 | 출력 |
|---|---|---|---|
| 같다 | == | print(5 == 5) | true |
| 같지 않다 | != | print(5 != 3) | true |
| 크다 | > | print(10 > 7) | true |
| 크거나 같다 | >= | print(3 >= 3) | true |
| 작다 | < | print(2 < 1 ) | true |
| 작거나 같다 | <= | print (4 <= 2) | false |
논리 연산자
| 연산 | 기호 | 이름 | 입력 | 출력 |
|---|---|---|---|---|
| 그리고 | && | and | print(true && false) | false |
| 또는 | || | or | print(true || false) | true |
| 부정 | ! | not | print(!true) | false |
|| 라는 기호는 처음 본다.
Enter 키 위에 있는 ₩ 키를 shift 키와 함께 누르면 | 이 나온다. 이름은 vertical bar.
변수
변수는 수학에서 x, y로 표기했던 그야말로 변수에 해당한다.
예를 들어,
반지름이 10인 원의 둘레 출력하기 (변수를 쓰지 않을 때)
print("반지름이 10인 원의 둘레는 ${2 * 3.141592 * 10}");변수를 사용할 때
double pi = 3.141592; double 2pi = pi * 2; int r = 10 print("반지름이 ${r}인 원의 둘레는 ${2pi * r}");
그럼 이제 이렇게 나오는 것이다.

나는 이제 다른 것은 수정하지 않고 변수에 해당하는 r 값만 바꿔주면 된다.
이게 프로그래밍이지. 이게 노가다를 줄이는 노가다지.
변수의 타입
- double : 소수
- String : 문자열 --- "S"는 반드시 대문자로 넣어야 한다. 소문자로 넣었다가 오류났음...
- int : 정수
- bool : 참/거짓
등등이 있다.
선언 방법
1. 타입을 명시하여 선언하기: 위에서처럼 각 타입과 그 값을 직접 지정하는 경우
2. 타입 추론 var: = 뒤에 오는 값에 따라 변수의 타입을 추론하여 지정함. 한 번 지정한 타입은 바꿀 수 없으므로 주의. 또한 `=` 뒤에 값을 설정해놓지 않으면 자동으로 dynamic 타입으로 세팅되는데, 추후 에러를 일으키는 주요 원인이 되기 떄문에 반드시 값을 할당해주도록 한다.
import 문
다른 Dart 파일이나 패키지를 불러올 때 사용하는 키워드
// 반드시 코드 최상단에 위치
반복되고 있는 double pi = 3.141592 식을 아예 별도의 dart파일로 만들어서 import하는 것도 가능하다.
bin 폴더에서 마우스 우클릭하여 새로운 파일을 만들어준다. 나는 파일명을 pi.dart로 정했다.
반복되는 식을 해당 파일에 입력하고 저장한다.


그리고 원래 작업하던 파일로 돌아와서는 반복되는 식을 삭제한다.
import 구문은 가장 위에 삽입해야 한다. 현재 작성되어 있는 무의미한 import 문을 삭제하고 `import './py.dart';` 를 입력한다.


그러면 요렇게~ 깔끔하고 아름다운 코드가 완성된다. (박수)
개뿌듯.
문제는 오늘 들은 강의가 고작 33분짜리 였다는 거다.
나는 지금 다섯시간 째 이걸 하고 있다.
이렇게 하는 거 맞음??
무엇보다도 나는 여기에서 말하는
- 문장
- 식
- 연산자
- 변수
- 키워드
- 타입
등의 개념이 탑재되지 않은 상황이라 이것이 무척 혼란스러웠는데,
이걸 이해하기 위해 GPT와 많은 시간 이야기를 나눴다.
그 내용은 다음 포스팅에 정리하겠다.
'TIL (Today I Learn)' 카테고리의 다른 글
| 1-5. 함수 (0) | 2025.11.18 |
|---|---|
| [자율학습] 프로그래밍 언어 구성요소 학습 - GPT 프로젝트 (1) | 2025.11.13 |
| 1-2. Windows 개발환경 세팅 (계속) (1) | 2025.11.11 |
| 1-2. Windows 개발환경 세팅 (0) | 2025.11.10 |
| 1-1. Flutter란? (0) | 2025.11.10 |