2025 / 01 /15
오늘은 수업시간에 switch 조건문에 대해 배웠습니다. switch문만 사용하여 실습 문제를 풀었는데 생각보다 쉽지 않았습니다. 오늘은 switch문의 내용과 실습 예제에 대해 다루겠습니다.
switch 문은 여러 조건을 비교하고 그에 맞는 실행 코드를 선택하는 제어문입니다.
if 문과 비슷하지만, 여러 조건을 효율적으로 처리할 수 있게 도와줍니다.
switch (표현식) {
case 값1:
// 표현식이 값1과 같을 때 실행할 코드
break;
case 값2:
// 표현식이 값2와 같을 때 실행할 코드
break;
case 값3:
// 표현식이 값3과 같을 때 실행할 코드
break;
default:
// 위의 어떤 값과도 일치하지 않을 때 실행할 코드
}
① switch 뒤의 표현식이 평가되고, 그 값이 각 case 값들과 차례대로 비교됩니다.
② 첫 번째로 일치하는 case의 코드 블록이 실행됩니다.
③ break 문이 있으면 실행이 종료되고, switch 문을 빠져나옵니다.
④ break가 없다면, 다음 case로 넘어가서 계속 실행됩니다.
⑤ default는 선택 사항으로, 어떤 case와도 일치하지 않으면 실행되는 부분입니다.
let fruit = 'apple';
switch (fruit) {
case 'apple':
console.log('사과입니다.');
break;
case 'banana':
console.log('바나나입니다.');
break;
case 'orange':
console.log('오렌지입니다.');
break;
default:
console.log('알 수 없는 과일입니다.');
}
let fruit = 'banana';
switch (fruit) {
case 'apple':
console.log('사과입니다.');
break;
case 'banana':
console.log('바나나입니다.');
case 'orange':
console.log('오렌지입니다.');
break;
default:
console.log('알 수 없는 과일입니다.');
}
양수,음수,0을 구분하는 제어문을 작성하시오.
- if, switch를 사용하여 만드시오
- 심화 - 값이 숫자가 아니라면 "숫자를 입력해 주세요" 문구 출력
if(newNum >0){
console.log("양수입니다.")
}else if(newNum < 0){
console.log("음수입니다.")
}else if(newNum === 0){
console.log("0입니다.")
}else{
console.log("숫자를 입력해주세요");
}
switch(true){ // newNum -> "edfsdf"
case newNum > 0:
console.log("양수입니다.");
break;
case newNum < 0:
console.log("음수입니다.")
break;
case newNum === 0:
console.log("0입니다.")
default:
console.log("숫자를 입력해주세요");
}
숫자 2개와 연산자를 입력받고 연산자에 맞는 결과를 출력하시오.
- 입력 : 5,3,+
- 결과 : "결과는 8입니다."
- 사용자에게 숫자 2개와 연산자를 입력받습니다.
- prompt는 받은 값을 문자열로 인식하기 때문에 Number( )를 사용하여 숫자형으로 변환
let n1 = Number(prompt("첫번째 숫자를 입력해주세요!"));
let n2 = Number(prompt("두번째 숫자를 입력해주세요!"));
let cal = prompt("연산자를 입력해주세요!");
- switch문으로 Case와 결과값을 작성합니다.
switch(cal){
case "+":
document.write(`${n1} ${cal} ${n2} = ${n1+n2} <br><br>`);
break;
case "-":
document.write(`${n1} ${cal} ${n2} = ${n1-n2} <br><br>`);
break;
case "*":
document.write(`${n1} ${cal} ${n2} = ${n1*n2} <br><br>`);
break;
case "/":
document.write(`${n1} ${cal} ${n2} = ${n1/n2} <br><br>`);
break;
default :
alert("다시 입력해주세요!");
location.reload(true);
}
- switch문으로 계산기를 작성할 때 저는 연산자를 넣어서 Case를 찾았습니다.
// 첫번째 숫자를 입력받고 숫자로 변환
let n1 = Number(prompt("첫번째 숫자를 입력해주세요!"));
// 두번째 숫자를 입력받고 숫자로 변환
let n2 = Number(prompt("두번째 숫자를 입력해주세요!"));
// 사용자가 입력할 연산자를 받음
let cal = prompt("연산자를 입력해주세요!");
// switch 문을 사용해 입력된 연산자에 맞는 계산을 수행
switch(cal){
// 더하기 연산
case "+":
document.write(`${n1} ${cal} ${n2} = ${n1 + n2} <br><br>`);
// n1과 n2를 더한 결과 출력
break;
// 빼기 연산
case "-":
document.write(`${n1} ${cal} ${n2} = ${n1 - n2} <br><br>`);
// n1에서 n2를 뺀 결과 출력
break;
// 곱하기 연산
case "*":
document.write(`${n1} ${cal} ${n2} = ${n1 * n2} <br><br>`);
// n1과 n2를 곱한 결과 출력
break;
// 나누기 연산
case "/":
document.write(`${n1} ${cal} ${n2} = ${n1 / n2} <br><br>`);
// n1을 n2로 나눈 결과 출력
break;
// 올바른 연산자가 입력되지 않으면 경고 메시지 출력 후 페이지 새로고침
default :
alert("다시 입력해주세요!"); // 잘못된 입력을 알림
location.reload(true); // 페이지를 새로고침
}
학점 계산기
- 수학,과학,영어 점수를 입력받고 평균점수를 계산합니다.
- 점수에 따라 학점을 출력하는 프로그램을 만드세요.
- 90점이상 a / 80점이상 b / 70점이상 c / 60점이상 d / 나머지 f
- 수학,과학,영어 점수를 입력받습니다.
let math = Number(prompt("수학 점수를 입력해주세요!"));
let en = Number(prompt("영어 점수를 입력해주세요!"));
let sc = Number(prompt("과학 점수를 입력해주세요!"));
- 세 점수의 평균점수를 계산합니다.
let avrage = ( math + en + sc ) / 3;
- 점수에 따라 학점을 출력하는 프로그램을 만드세요.
- 90점이상 a / 80점이상 b / 70점이상 c / 60점이상 d / 나머지 f
- 혹시 몰라서 저는 논리연산자를 사용해 조건을 구체화했습니다.
switch(true){
case avrage >= 90 :
document.write(`당신의 학점 -> A <br><br>`);
break;
case avrage >= 80 && avrage < 90 :
document.write(`당신의 학점 -> B<br><br>`);
break;
case avrage >= 70 && avrage < 80 :
document.write(`당신의 학점 -> C<br><br>`);
break;
case avrage >= 60 && avrage < 70 :
document.write(`당신의 학점 -> D<br><br>`);
break;
default:
document.write("1");
}
- 결과를 화면에 출력해줍니다.
document.write(`수학 점수 -> ${math}점 <br>`);
document.write(`영어 점수 -> ${en}점 <br>`);
document.write(`과학 점수 -> ${sc}점 <br><br>`);
document.write(`전체 평균 -> ${math}점(수학) + ${en}점(영어) + ${sc}점(과학) = ${avrage}점 <br>`);
- 사용자가 결과를 보기 쉽도록 화면에 출력하였습니다.
- 백틱( ` )을 사용해 조금 더 간결하게 작성하였습니다.
let math = Number(prompt("수학 점수를 입력해주세요!"));
let en = Number(prompt("영어 점수를 입력해주세요!"));
let sc = Number(prompt("과학 점수를 입력해주세요!"));
let avrage = ( math + en + sc ) / 3;
switch(true){
case avrage >= 90 :
document.write(`당신의 학점 -> A <br><br>`);
break;
case avrage >= 80 && avrage < 90 :
document.write(`당신의 학점 -> B<br><br>`);
break;
case avrage >= 70 && avrage < 80 :
document.write(`당신의 학점 -> C<br><br>`);
break;
case avrage >= 60 && avrage < 70 :
document.write(`당신의 학점 -> D<br><br>`);
break;
default:
document.write("1");
}
document.write(`수학 점수 -> ${math}점 <br>`);
document.write(`영어 점수 -> ${en}점 <br>`);
document.write(`과학 점수 -> ${sc}점 <br><br>`);
document.write(`전체 평균 -> ${math}점(수학) + ${en}점(영어) + ${sc}점(과학) = ${avrage}점 <br>`);
10일차 후기
- switch문에서 조건에 논리값도 넣을 수 있다는 걸 알게되었다.
- 그래서 실습 예제(1)에서 음수, 양수, 0 구분할 때 음수 조건 설정할 때가 너무 어려웠다.
- 답을 알고나서 생각보다 괜찮은 것 같아서 허망했다.
- if문을 사랑하는 나지만... switch문에도 익숙해질 수 있도록 노력해야겠다. ٩(๑•̀o•́๑)و