10일차[switch / 실습 예제]

진하의 메모장·2025년 1월 15일
3

공부일기

목록 보기
11/66
post-thumbnail

2025 / 01 /15

오늘은 수업시간에 switch 조건문에 대해 배웠습니다. switch문만 사용하여 실습 문제를 풀었는데 생각보다 쉽지 않았습니다. 오늘은 switch문의 내용과 실습 예제에 대해 다루겠습니다.



💌 switch문

switch 문은 여러 조건을 비교하고 그에 맞는 실행 코드를 선택하는 제어문입니다.
if 문과 비슷하지만, 여러 조건을 효율적으로 처리할 수 있게 도와줍니다.


1. 기본 문법

switch (표현식) {
  case1:
    // 표현식이 값1과 같을 때 실행할 코드
    break;
  case2:
    // 표현식이 값2와 같을 때 실행할 코드
    break;
  case3:
    // 표현식이 값3과 같을 때 실행할 코드
    break;
  default:
    // 위의 어떤 값과도 일치하지 않을 때 실행할 코드
}


2. 동작 방식

① switch 뒤의 표현식이 평가되고, 그 값이 각 case 값들과 차례대로 비교됩니다.
② 첫 번째로 일치하는 case의 코드 블록이 실행됩니다.
③ break 문이 있으면 실행이 종료되고, switch 문을 빠져나옵니다.
④ break가 없다면, 다음 case로 넘어가서 계속 실행됩니다.
⑤ default는 선택 사항으로, 어떤 case와도 일치하지 않으면 실행되는 부분입니다.



3. 예시

  • fruit의 값은 'apple'이므로 "사과입니다."가 출력됩니다.
let fruit = 'apple';

switch (fruit) {
  case 'apple':
    console.log('사과입니다.');
    break;
  case 'banana':
    console.log('바나나입니다.');
    break;
  case 'orange':
    console.log('오렌지입니다.');
    break;
  default:
    console.log('알 수 없는 과일입니다.');
}


4. 중요한 점

  • switch 문에서는 case의 값을 비교할 때 엄격한 일치(===)를 사용합니다.
  • 값의 타입도 일치해야 합니다.
  • break가 없다면, 해당 case 이후의 코드가 계속 실행됩니다.
  • 결과 값은 "바나나입니다."와 "오렌지입니다."가 모두 출력됩니다.
let fruit = 'banana';

switch (fruit) {
  case 'apple':
    console.log('사과입니다.');
    break;
  case 'banana':
    console.log('바나나입니다.');
  case 'orange':
    console.log('오렌지입니다.');
    break;
  default:
    console.log('알 수 없는 과일입니다.');
}


💌 실습 예제(1)

양수,음수,0을 구분하는 제어문을 작성하시오.

  • if, switch를 사용하여 만드시오
  • 심화 - 값이 숫자가 아니라면 "숫자를 입력해 주세요" 문구 출력

1. if문으로 작성

if(newNum >0){
   console.log("양수입니다.")
}else if(newNum < 0){
console.log("음수입니다.")
}else if(newNum === 0){
   console.log("0입니다.")
}else{
   console.log("숫자를 입력해주세요");
}


2. switch문으로 작성

  • switch문 조건에는 변수만 들어가는 것이 아니라 논리 값도 들어갈 수 있습니다.
  • switch문은 조건과 같은 값을 가진 case를 찾는데 해당 case에 비교 등의 조건을 넣고 true를 찾는 방식으로 사용할 수 있다.
 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)

숫자 2개와 연산자를 입력받고 연산자에 맞는 결과를 출력하시오.

  • 입력 : 5,3,+
  • 결과 : "결과는 8입니다."

1. 숫자 / 연산자 입력 받기

  • 사용자에게 숫자 2개와 연산자를 입력받습니다.
  • prompt는 받은 값을 문자열로 인식하기 때문에 Number( )를 사용하여 숫자형으로 변환
let n1 = Number(prompt("첫번째 숫자를 입력해주세요!"));
let n2 = Number(prompt("두번째 숫자를 입력해주세요!"));
let cal = prompt("연산자를 입력해주세요!");


2. switch문 작성

  • 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);  // 페이지를 새로고침
}


💌 실습 예제(3)

학점 계산기

  • 수학,과학,영어 점수를 입력받고 평균점수를 계산합니다.
  • 점수에 따라 학점을 출력하는 프로그램을 만드세요.
  • 90점이상 a / 80점이상 b / 70점이상 c / 60점이상 d / 나머지 f

1. 점수 입력 받기

  • 수학,과학,영어 점수를 입력받습니다.
let math = Number(prompt("수학 점수를 입력해주세요!"));
let en = Number(prompt("영어 점수를 입력해주세요!"));
let sc = Number(prompt("과학 점수를 입력해주세요!"));


2. 평균 계산

  • 세 점수의 평균점수를 계산합니다.
let avrage = ( math + en + sc ) / 3;


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");
}


4. 화면 출력

  • 결과를 화면에 출력해줍니다.
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•́๑)و
profile
૮꒰ ྀི〃´꒳`〃꒱ა

0개의 댓글