[Flutter] 02. Dart 제어문 - 조건문, 반복문
Dart의 조건문과 반복문을 배워 프로그램 흐름을 제어합니다.
조건문
if / else if / else
void main() {
int score = 85;
if (score >= 90) {
print('A등급');
} else if (score >= 80) {
print('B등급');
} else if (score >= 70) {
print('C등급');
} else {
print('F등급');
}
// 출력: B등급
}
삼항 연산자
void main() {
int age = 20;
String result = age >= 18 ? '성인' : '미성년자';
print(result); // 성인
}
switch / case
void main() {
String grade = 'B';
switch (grade) {
case 'A':
print('우수');
break;
case 'B':
print('양호');
break;
case 'C':
print('보통');
break;
default:
print('노력 필요');
}
// 출력: 양호
}
Dart 3.0+ 패턴 매칭 switch
void main() {
int statusCode = 404;
String message = switch (statusCode) {
200 => '성공',
301 => '리다이렉트',
404 => '페이지 없음',
500 => '서버 오류',
_ => '알 수 없는 상태',
};
print(message); // 페이지 없음
}
반복문
for 문
void main() {
// 기본 for
for (int i = 0; i < 5; i++) {
print('반복 $i');
}
// for-in (컬렉션 순회)
List<String> fruits = ['사과', '바나나', '포도'];
for (String fruit in fruits) {
print(fruit);
}
}
while / do-while
void main() {
// while: 조건 먼저 확인
int count = 0;
while (count < 3) {
print('while: $count');
count++;
}
// do-while: 최소 1번 실행
int num = 5;
do {
print('do-while: $num');
num++;
} while (num < 3); // 조건 false지만 1번은 실행됨
}
break / continue
void main() {
// break: 반복 중단
for (int i = 0; i < 10; i++) {
if (i == 5) break;
print(i); // 0, 1, 2, 3, 4
}
// continue: 현재 반복 건너뛰기
for (int i = 0; i < 5; i++) {
if (i == 2) continue;
print(i); // 0, 1, 3, 4
}
}
컬렉션 메서드 활용
List 주요 메서드
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// forEach: 각 요소에 대해 실행
numbers.forEach((n) => print(n));
// map: 변환
var doubled = numbers.map((n) => n * 2).toList();
print(doubled); // [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
// where: 필터링
var evens = numbers.where((n) => n % 2 == 0).toList();
print(evens); // [2, 4, 6, 8, 10]
// any / every: 조건 확인
print(numbers.any((n) => n > 5)); // true
print(numbers.every((n) => n > 0)); // true
// reduce: 누적 계산
int sum = numbers.reduce((a, b) => a + b);
print(sum); // 55
}
Map 순회
void main() {
Map<String, int> scores = {
'국어': 90,
'영어': 85,
'수학': 95,
};
// entries로 순회
for (var entry in scores.entries) {
print('${entry.key}: ${entry.value}점');
}
// forEach
scores.forEach((key, value) {
print('$key: $value점');
});
// keys, values
print(scores.keys.toList()); // [국어, 영어, 수학]
print(scores.values.toList()); // [90, 85, 95]
}
실습 예제
구구단 출력
void main() {
for (int i = 2; i <= 9; i++) {
print('--- $i단 ---');
for (int j = 1; j <= 9; j++) {
print('$i x $j = ${i * j}');
}
}
}
성적 처리
void main() {
List<int> scores = [85, 92, 78, 96, 88, 73, 91];
// 평균 계산
double avg = scores.reduce((a, b) => a + b) / scores.length;
print('평균: ${avg.toStringAsFixed(1)}');
// 80점 이상 필터링
var passed = scores.where((s) => s >= 80).toList();
print('합격자 수: ${passed.length}명');
// 최고점, 최저점
scores.sort();
print('최저: ${scores.first}, 최고: ${scores.last}');
}
- [Flutter] 18. 빌드와 배포 - APK, App Store
- [Flutter] 17. 실전 프로젝트 - Todo 앱 만들기
- [Flutter] 16. 패키지 활용 - 유용한 패키지 소개
- [Flutter] 15. 디자인 - 테마, 스타일, 반응형
- [Flutter] 14. 로컬 저장소 - SharedPreferences, SQLite
- [Flutter] 13. HTTP 통신 - REST API 연동
- [Flutter] 12. 상태관리 - setState, Provider
- [Flutter] 11. 사용자 입력 - Form, TextField, 버튼
- [Flutter] 10. 화면 이동 - Navigation, Route
- [Flutter] 09. 리스트와 스크롤 - ListView, GridView
- [Flutter] 08. 레이아웃 - Row, Column, Stack
- [Flutter] 07. 위젯 기초 - StatelessWidget, StatefulWidget
- [Flutter] 06. Flutter 소개 및 개발환경 설치
- [Flutter] 05. Dart 비동기 - Future, async/await, Stream
- [Flutter] 04. Dart 클래스 - OOP 기초
- [Flutter] 03. Dart 함수 - 선언, 매개변수, 람다
- [Flutter] 02. Dart 제어문 - 조건문, 반복문
- [Flutter] 01. Dart 언어 기초 - 변수, 타입, 연산자