
3차시: 조건문과 반복문 마스터하기
프로그램의 흐름을 제어하는 핵심 기능 익히기
📚 학습 목표
- if, else if, else를 활용한 조건문 작성하기
- for, while 반복문으로 반복 작업 자동화하기
- 중첩 반복문과 조건문 활용하기
- 실전 예제: 출석부와 성적 분석 프로그램 만들기
📖 조건문(if문) 이해하기
1
조건문의 기본 구조
조건문은 특정 조건이 참(true)일 때만 코드를 실행합니다.
기본 문법:
• if (조건): 조건이 참이면 실행
• else if (조건): 이전 조건이 거짓이고 이 조건이 참이면 실행
• else: 모든 조건이 거짓일 때 실행
• if (조건): 조건이 참이면 실행
• else if (조건): 이전 조건이 거짓이고 이 조건이 참이면 실행
• else: 모든 조건이 거짓일 때 실행
🚀 실습 1: 조건문 활용하기
2
날씨에 따른 메시지 출력
조건문을 사용하여 다양한 경우를 처리해봅시다:
실행해보고, 기온과 강수확률 값을 바꿔가며 테스트해보세요.
function 날씨알림() {
let 기온 = 25;
let 강수확률 = 70;
let 메시지 = "";
// 온도에 따른 판단
if (기온 >= 30) {
메시지 = "매우 더워요! 시원한 곳에서 지내세요.";
} else if (기온 >= 20) {
메시지 = "쾌적한 날씨입니다.";
} else if (기온 >= 10) {
메시지 = "조금 쌀쌀해요. 겉옷을 챙기세요.";
} else {
메시지 = "추운 날씨입니다. 따뜻하게 입으세요.";
}
// 비 확률 추가
if (강수확률 >= 70) {
메시지 += " 우산을 꼭 챙기세요!";
} else if (강수확률 >= 30) {
메시지 += " 우산을 준비하는게 좋겠어요.";
}
Logger.log("오늘의 날씨: " + 메시지);
SpreadsheetApp.getActiveSpreadsheet().toast(메시지, "날씨 알림", 5);
}
3
논리 연산자 활용하기
여러 조건을 조합할 수 있습니다 (&& = 그리고, || = 또는, ! = 부정):
실행하고 로그를 확인하세요.
function 할인적용() {
let 나이 = 15;
let 회원등급 = "VIP";
let 구매금액 = 50000;
let 할인율 = 0;
// 복합 조건
if (나이 < 19 || 나이 >= 65) {
할인율 = 10;
Logger.log("연령 할인 10% 적용");
}
if (회원등급 === "VIP" && 구매금액 >= 30000) {
할인율 += 15;
Logger.log("VIP 추가 할인 15% 적용");
} else if (회원등급 === "GOLD" && 구매금액 >= 50000) {
할인율 += 10;
Logger.log("GOLD 추가 할인 10% 적용");
}
let 할인금액 = 구매금액 * (할인율 / 100);
let 최종금액 = 구매금액 - 할인금액;
Logger.log("구매금액: " + 구매금액 + "원");
Logger.log("총 할인율: " + 할인율 + "%");
Logger.log("할인금액: " + 할인금액 + "원");
Logger.log("최종금액: " + 최종금액 + "원");
}🔄 반복문(for, while) 이해하기
4
for 반복문 기본
for문은 정해진 횟수만큼 반복할 때 사용합니다:
실행 후 로그와 스프레드시트를 확인하세요.
function for문연습() {
let sheet = SpreadsheetApp.getActiveSheet();
// 1부터 10까지 숫자 출력
Logger.log("=== 1부터 10까지 ===");
for (let i = 1; i <= 10; i++) {
Logger.log(i);
}
// 구구단 5단
Logger.log("=== 구구단 5단 ===");
for (let i = 1; i <= 9; i++) {
let 결과 = 5 * i;
Logger.log("5 x " + i + " = " + 결과);
}
// 스프레드시트에 구구단 작성
sheet.getRange("A1").setValue("구구단 5단");
for (let i = 1; i <= 9; i++) {
let 행 = i + 1;
sheet.getRange(행, 1).setValue("5 x " + i + " = " + (5 * i));
}
}
5
중첩 반복문 활용하기
반복문 안에 또 다른 반복문을 넣을 수 있습니다:
실행하면 2단부터 9단까지 모든 구구단이 표시됩니다!
function 구구단전체() {
let sheet = SpreadsheetApp.getActiveSheet();
sheet.clear(); // 시트 내용 지우기
// 제목 작성
for (let dan = 2; dan <= 9; dan++) {
let 열 = dan - 1;
sheet.getRange(1, 열).setValue(dan + "단");
}
// 구구단 작성 (2단부터 9단까지)
for (let dan = 2; dan <= 9; dan++) {
let 열 = dan - 1; // 2단은 1열, 3단은 2열...
for (let i = 1; i <= 9; i++) {
let 행 = i + 1;
let 결과 = dan * i;
sheet.getRange(행, 열).setValue(dan + "x" + i + "=" + 결과);
}
}
SpreadsheetApp.getActiveSpreadsheet().toast("구구단 작성 완료!", "완료", 3);
}
6
while 반복문
while문은 조건이 참인 동안 계속 반복합니다:
실행하고 결과를 확인하세요.
function while문연습() {
// 1부터 100까지 합계
let 합계 = 0;
let i = 1;
while (i <= 100) {
합계 += i;
i++;
}
Logger.log("1부터 100까지의 합: " + 합계);
// 특정 값을 찾을 때까지 반복
let 숫자 = 1;
while (숫자 * 숫자 < 1000) {
Logger.log(숫자 + "의 제곱: " + (숫자 * 숫자));
숫자++;
}
Logger.log("제곱이 1000을 넘는 첫 번째 숫자: " + 숫자);
}🎯 실습 2: 출석부 관리 프로그램
7
출석 데이터 입력하기
학생들의 출석 정보를 관리하는 프로그램을 만들어봅시다:
실행 후 출석부가 완성되었는지 확인하세요.
function 출석부작성() {
let sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
// 제목 행
let 제목 = ["번호", "이름", "월", "화", "수", "목", "금", "출석일", "결석일", "출석률"];
for (let i = 0; i < 제목.length; i++) {
sheet.getRange(1, i + 1).setValue(제목[i]);
}
// 학생 데이터 (O: 출석, X: 결석)
let 학생들 = [
[1, "김민수", "O", "O", "O", "X", "O"],
[2, "이지은", "O", "O", "O", "O", "O"],
[3, "박준호", "O", "X", "O", "O", "X"],
[4, "최유진", "X", "O", "O", "O", "O"],
[5, "정하늘", "O", "O", "X", "O", "O"]
];
// 데이터 입력 및 출석 통계 계산
for (let i = 0; i < 학생들.length; i++) {
let 행 = i + 2;
let 학생 = 학생들[i];
let 출석일수 = 0;
let 결석일수 = 0;
// 기본 정보 입력
sheet.getRange(행, 1).setValue(학생[0]); // 번호
sheet.getRange(행, 2).setValue(학생[1]); // 이름
// 요일별 출석 입력 및 카운트
for (let j = 2; j <= 6; j++) {
let 출석여부 = 학생[j];
sheet.getRange(행, j + 1).setValue(출석여부);
if (출석여부 === "O") {
출석일수++;
} else {
결석일수++;
}
}
// 통계 입력
sheet.getRange(행, 8).setValue(출석일수);
sheet.getRange(행, 9).setValue(결석일수);
// 출석률 계산 (출석일 / 전체일 * 100)
let 출석률 = (출석일수 / 5) * 100;
sheet.getRange(행, 10).setValue(출석률 + "%");
}
SpreadsheetApp.getActiveSpreadsheet().toast("출석부 작성 완료!", "완료", 3);
}
8
출석률 분석 및 경고
출석률이 낮은 학생을 찾아 경고 메시지를 표시합니다:
실행하면 출석률에 따라 셀 색상이 변하고 분석 결과가 표시됩니다.
function 출석률분석() {
let sheet = SpreadsheetApp.getActiveSheet();
let 경고학생 = [];
let 우수학생 = [];
// 2행부터 6행까지 검사 (학생 5명)
for (let row = 2; row <= 6; row++) {
let 이름 = sheet.getRange(row, 2).getValue();
let 출석률문자열 = sheet.getRange(row, 10).getValue();
let 출석률 = parseFloat(출석률문자열); // "80%" → 80
// 조건에 따라 분류
if (출석률 < 70) {
경고학생.push(이름 + "(" + 출석률 + "%)");
// 셀에 배경색 추가 (빨간색)
sheet.getRange(row, 10).setBackground("#ffcdd2");
} else if (출석률 === 100) {
우수학생.push(이름);
// 셀에 배경색 추가 (녹색)
sheet.getRange(row, 10).setBackground("#c8e6c9");
}
}
// 결과 출력
Logger.log("=== 출석률 분석 결과 ===");
if (경고학생.length > 0) {
Logger.log("출석 주의 학생: " + 경고학생.join(", "));
} else {
Logger.log("출석 주의 학생 없음");
}
if (우수학생.length > 0) {
Logger.log("개근 학생: " + 우수학생.join(", "));
} else {
Logger.log("개근 학생 없음");
}
// 전체 평균 출석률 계산
let 총출석률 = 0;
for (let row = 2; row <= 6; row++) {
let 출석률문자열 = sheet.getRange(row, 10).getValue();
let 출석률 = parseFloat(출석률문자열);
총출석률 += 출석률;
}
let 평균출석률 = 총출석률 / 5;
Logger.log("전체 평균 출석률: " + 평균출석률.toFixed(1) + "%");
SpreadsheetApp.getActiveSpreadsheet().toast(
"분석 완료! 평균 출석률: " + 평균출석률.toFixed(1) + "%",
"출석률 분석",
5
);
}💡 반복문 제어하기
- break: 반복문을 즉시 종료합니다
- continue: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다
- 중첩 반복문: 반복문 안에 또 다른 반복문을 넣을 수 있습니다
- 무한루프 주의: while문 사용 시 조건이 항상 true면 무한 반복됩니다
⚠️ 주의사항
- 조건문에서 등호는 === (비교)와 = (할당)를 구분하세요
- 반복문의 시작값, 종료조건, 증감값을 정확히 설정하세요
- 중첩 반복문 사용 시 변수명이 겹치지 않도록 주의하세요 (i, j, k 등)
- 무한루프가 발생하면 스크립트 실행 시간 제한(6분)에 걸릴 수 있습니다
🎯 3차시 정리
이번 시간에는 조건문과 반복문을 배우고, 실제 출석부 관리 시스템을 만들어보았습니다.조건문과 반복문은 프로그래밍의 핵심이며, 이를 조합하면 복잡한 작업도 자동화할 수 있습니다.
다음 차시에서는 함수를 만들고 활용하는 방법을 배워보겠습니다.
'AppSheet' 카테고리의 다른 글
| 구글 앱스크립트 5차시 - 스프레드시트 Range 다루기 (1) | 2025.12.20 |
|---|---|
| 구글 앱스크립트 4차시 - 함수와 매개변수 (1) | 2025.12.20 |
| 구글 앱스크립트 2차시 - 변수와 데이터 타입 (2) | 2025.12.20 |
| 구글 앱스크립트 1차시 - 시작하기 (2) | 2025.12.20 |
| 구글시트 와 구글스크립트 이용 출석체크 (1) | 2025.12.07 |