학습
Dart 입출력 처리
Dart 입출력 처리 — 초급
Dart 입출력 처리
1. 도입 (왜 배워야 하는가)
입출력 처리는 프로그램과 사용자(또는 다른 시스템) 간의 데이터 교환을 담당하는 중요한 요소입니다. 실무에서는 사용자로부터 입력을 받고, 그에 대한 결과를 출력하는 일이 빈번하게 발생합니다. 예를 들어, 웹 애플리케이션이나 모바일 앱에서 사용자로부터 정보를 입력받아 처리하고, 결과를 보여주는 것이 대표적입니다.
입출력 처리를 모르거나 잘못 이해하면, 프로그램이 사용자와 상호작용하지 못하게 되며, 결과적으로는 사용자 경험이 저하되고, 프로젝트의 성공 가능성이 줄어듭니다. 따라서 입출력 처리에 대한 이해는 모든 프로그래머에게 필수적입니다.
2. 핵심 개념 설명
- 입력(Input): 사용자로부터 데이터를 받는 과정입니다. 예를 들어, 사용자가 로그인할 때 입력하는 아이디와 비밀번호가 이에 해당합니다.
- 출력(Output): 프로그램이 처리한 결과를 사용자에게 보여주는 과정입니다. 예를 들어, 로그인 성공 여부를 알리는 메시지가 이에 해당합니다.
이 두 개념은 마치 대화하는 사람과 같아서, 사용자가 질문을 하면 프로그램이 응답하는 구조입니다.
| 용어 | 정의 |
|---|---|
| 입력 | 사용자로부터 정보를 받는 것 |
| 출력 | 프로그램이 결과를 사용자에게 보여주는 것 |
3. 기본 코드 예제
아래는 Dart에서 사용자로부터 입력을 받고, 그 입력을 바탕으로 출력하는 기본적인 예제입니다.
import 'dart:io';
void main() {
// 사용자에게 이름을 입력하라고 요청
print('이름을 입력하세요: ');
// 사용자 입력을 받음
String? name = stdin.readLineSync();
// 입력된 이름을 출력
print('안녕하세요, $name 님!');
}
실행 결과
이름을 입력하세요:
[사용자가 '홍길동' 입력]
안녕하세요, 홍길동 님!
코드 한 줄씩 동작 설명
import 'dart:io';: Dart의 입출력 라이브러리를 가져옵니다.void main() {: 프로그램의 시작점인 main 함수를 정의합니다.print('이름을 입력하세요: ');: 사용자에게 이름을 입력하라는 메시지를 출력합니다.String? name = stdin.readLineSync();: 사용자가 입력한 내용을 읽어와 name 변수에 저장합니다.print('안녕하세요, $name 님!');: 입력된 이름을 포함한 인사 메시지를 출력합니다.- 이 예제는 사용자가 입력한 아이템을 장바구니 리스트에 추가하고, 'exit'를 입력하면 종료됩니다.
- 사용자가 두 숫자를 입력하면 그 합계를 출력하는 간단한 계산기입니다.
- 입출력 처리는 사용자와 프로그램 간의 상호작용을 담당합니다.
- 사용자로부터 입력을 받고, 그 결과를 출력하는 과정이 기본입니다.
- null 체크는 필수이며, 사용자 입력을 처리할 때 데이터 타입 변환에 주의해야 합니다.
4. 실전 활용 예제
예제 1: 쇼핑몰 장바구니 구현
import 'dart:io';
void main() {
List<String> cart = [];
while (true) {
print('장바구니에 추가할 아이템의 이름을 입력하세요 (종료: exit):');
String? item = stdin.readLineSync();
if (item == 'exit') {
break; // 'exit' 입력 시 루프 종료
} else if (item != null) {
cart.add(item); // 장바구니에 아이템 추가
print('$item 이(가) 장바구니에 추가되었습니다.');
}
}
print('장바구니 내용: $cart');
}
예제 2: 간단한 계산기
import 'dart:io';
void main() {
print('첫 번째 숫자를 입력하세요:');
double? num1 = double.tryParse(stdin.readLineSync()!);
print('두 번째 숫자를 입력하세요:');
double? num2 = double.tryParse(stdin.readLineSync()!);
if (num1 != null && num2 != null) {
print('합계: ${num1 + num2}');
} else {
print('유효한 숫자를 입력하세요.');
}
}
5. 흔한 실수와 주의사항
실수 1: 입력값을 null 체크하지 않음
// 잘못된 코드
String? name = stdin.readLineSync();
print('안녕하세요, $name 님!'); // name이 null일 경우 오류 발생
올바른 코드
String? name = stdin.readLineSync();
if (name != null) {
print('안녕하세요, $name 님!');
} else {
print('입력이 없습니다.');
}
실수 2: 데이터 타입을 잘못 사용
// 잘못된 코드
int age = stdin.readLineSync(); // 문자열을 정수형으로 직접 대입
올바른 코드
String? input = stdin.readLineSync();
int age = int.parse(input!); // 문자열을 정수형으로 변환
6. 정리
다음에 학습하면 좋은 주제는 "Dart의 파일 입출력 처리"입니다. 파일을 읽고 쓰는 방법을 배우면, 더욱 다양한 데이터 저장 및 처리 방법을 이해할 수 있습니다.