연습문제(9-1)

한 학교에서 학생들의 국어, 영어, 수학 점수로 보충수업 대상자를 뽑습니다. 아래 규칙을 만족하는 함수를 만들어 보세요.

  • 함수는 국어, 영어, 수학 점수 3가지의 값을 입력받습니다. 점수는 숫자입니다.
  • 모든 과목의 점수가 50점 이하라면 "종합반" 이라는 문자열을 return합니다.
  • 특별반이 아닌 학생들 중 한과목이라도 50점 이하라면 "단과반"이라는 문자열을 return합니다.
  • 나머지 학생들은 "보충 수업 없음"이라는 문자열을 return합니다.

위 조건을 만족하는 함수를 만들고, 테스트를 통해 제대로 작동하는지 확인해 보세요.

연습문제(9-2)

2월은 보통 28일까지 있지만 윤년인 경우 2월을 윤달이라고 하고 29일까지 있습니다. 예로, 2020년은 윤년으로 2020년 2월은 윤달이며, 2020년 2월은 29일까지 있습니다. 보통 윤년이 4년마다 돌아온다고 알고 있지만 이는 정확한 것은 아닙니다.

아래는 위키(https://ko.wikipedia.org/wiki/윤년)에서 가져온 윤년을 구하는 정확한 규칙입니다.

  • 서력 기원 연수가 4로 나누어떨어지는 해는 윤년으로 한다.(1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년 …)
  • 이 중에서 100으로 나누어떨어지는 해는 평년으로 한다.(1900년, 2100년, 2200년, 2300년, 2500년 …)
  • 그중에 400으로 나누어떨어지는 해는 윤년으로 둔다.(1600년, 2000년, 2400년 …)

이 규칙을 사용하여 입력된 년도가 윤년인지 아닌지를 구하는 함수를 만들어 보세요.

  • 함수는 하나의 양의 정수를 년도로 받습니다.
  • 윤년 규칙에 따라 윤년이면 true를, 윤년이 아니면 false를 return합니다.

위 조건을 만족하는 함수를 만들고, 2020(윤년), 1992(윤년), 1900(평년),  1600(윤년) 등의 값을 넣어서 제대로 작동하는지 확인해 보세요.

이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.











풀이

function supplementaryClass(koreanScore, englishScore, mathScore){ var average = (koreanScore + englishScore + mathScore)/3; if(average <= 50){ console.log("보충수업 대상자입니다"); } }

혹은,

function supplementaryClass(koreanScore, englishScore, mathScore){
  if((koreanScore + englishScore + mathScore)/3 <= 50){
    console.log("보충수업 대상자입니다");
  }
}

물론 위 함수에서 사용된 함수명(supplementaryClass), 파라메터 이름들(koreanScore, englishScore, mathScore)이 달라도 상관없습니다. 어떻게 함수를 구성했든 세가지 값을 받아 평균을 구하고 평균의 값이 50이거나 작을 때 "보충수업 대상자입니다"라는 문자열을 출력하면 정답입니다.

위 함수를 만들 때 "보충수업", "국어 점수", "영어 점수" 등을 어떻게 함수명, 파라메터명으로 표현해야할지 고민이셨다면.. 개발자의 고충을 한발 더 이해하게 된 것입니다. 실제로 프로그래머들은 변수명, 함수명을 정하는데 많은 고민을 합니다.

지금까지 배운 내용을 바탕으로 코딩 연습을 해봅시다.

연습문제 8-1 보충수업 함수1

한 학교에서 국어, 영어, 수학 평균 점수가 50점 이하인 학생들을 대상으로 보충수업을 진행합니다. 보충수업 대상자인지 아닌지를 판별할 수 있는 함수를 만들어 보세요.

  • 함수는 국어, 영어, 수학 점수 3가지의 값을 입력받습니다. 점수는 숫자입니다.
  • 입력받은 세 점수의 평균 점수가 50점 이하라면 보충수업 대상자입니다.
  • 수학 보충수업 대상자라면 함수는 "보충수업 대상자입니다"라는 문자열을 콘솔에 출력하고, 아니라면 아무런 값을 출력하지 않습니다.

위 조건을 만족하는 함수를 만들고, 테스트를 통해 제대로 작동하는지 확인해 보세요.

연습문제 풀이는 다음 글에 있습니다. 반드시 연습문제를 푼 다음 해답을 확인하시고, 만약 잘 모르는 부분이 있다면 댓글을 남겨주세요. 답변해 드리겠습니다.

조건문(Conditional Statement)

조건문(Conditional Statement)은 조건에 따라 다른 코드를 실행할 수 있게하여 프로그램에 분기를 주는 있는 프로그래밍 문법입니다. 이번 글에서는 조건문 중 하나인 if else문을 공부해 보겠습니다.

if else 문

if else 문의 구조를 살펴봅시다.

if(조건){ 조건을 만족하는 경우 이곳의 코드가 실행됨 } else { 조건을 만족하지 못하는 경우 이곳의 코드가 실행됨 }

- 만약(if) 조건이 참이라면 조건이 참일 경우 할 일 코드를 실행하고, 조건이 거짓이라면(참이 아니라면(else)) 조건에 맞지 않을 경우 할 일 코드를 실행합니다. 여기서 if와 else는 예약어입니다.

- else { ... } 부분은 생략될 수 있으며, else 부분이 없으면 조건에 맞지 않을 경우 아무일도 하지 않고 다음 코드로 진행합니다.

위 구조를 완전히 이해하려면 조건이 참, 조건이 거짓이라는 것이 무슨 뜻인지 알아야 겠죠. 프로그래밍에서 참과 거짓은 Boolean 타입(자료형)의 데이터입니다.

불리언(Boolean) 타입

Boolean에 해당하는 데이터는 참(true)과 거짓(false) 단 두가지 뿐이며 참은 true로 나타내며 거짓은 false로 나타냅니다. 이들은 데이터이므로 당연히 변수에 넣을 수도 있고, 연산을 통해 얻을 수도 있습니다. true와 false는 예약어입니다.

브라우저 콘솔을 열고(콘솔 여는 법 링크) 아래의 코드를 실행해 봅시다.

function trueOrFalse(value){
  if(value){ 
    console.log("참입니다"); 
  } 
  else { 
    console.log("거짓입니다"); 
  }
}

var condition1 = true;
var condition2 = false;

trueOrFalse(condition1);
trueOrFalse(condition2);

trueOrFalse함수에 true가 대입된 condition1을 넣어 호출하면 if else 문에 의해 "참입니다"가 콘솔에 출력되고, false가 대입된 condition2를 넣어 호출하면 if else문에 의해 "거짓입니다"가 출력됩니다.

이 예제에서는 참(true)과 거짓(false)를 변수에 넣어 직접 전달해 주었지만, 비교연산자를 통해 true나 false를 생성할 수도 있습니다.

비교연산자

좌항과 우항을 비교하여 그 값들에 따라 Boolean 타입 true 혹은 false를 생성하는 연산자들을 비교연산자라고 합니다.

 비교연산자  의미  예제  결과
 ==  좌항과 우항이 같음  1 == 1  true
 !=  좌항과 우항이 같지 않음  1 != 1  false
 > 좌향이 우항보다 큼 1 > 2  false
 < 촤항이 우항보다 작음 1 < 2  true
 >= 좌항이 우항보다 크거나 같음  1 >= 1 true
 <=  우항이 좌항보다 크거나 같음 1 <= 1 true

if else 문과 비교연산자를 이용하여 '나이'를 입력받아 성년자인지 미성년자인지를 알려주는 함수를 만들어 봅시다.

function isAdultOrNot(age){
  if(age>=19){
    console.log("성인입니다"); 
  } 
  else { 
    console.log("미성년자입니다"); 
  }
}

isAdultOrNot(13), isAdultOrNot(40) 등의 값을 입력해 보고 값을 확인해 봅시다.

정리 및 요약

  • 조건문(Conditional Statement): 프로그램 코드가 조건에 따라 다른 코드를 실행할 수 있게 프로그램에 분기를 줄 수 있는 프로그래밍 문법
  • if else 문:
    if(조건){
      조건이 참(true)인 경우 이곳의 코드가 실행됨
    }
    else {
      조건이 거짓(false)인 경우 이곳의 코드가 실행됨
    }
    if, else는 예약어
  • 불리언(Boolean): 참(true)과 거짓(false)을 표현하는 데이터 타입(자료형). true. false은 예약어
  • 비교연산자: 좌항과 우항을 비교하여 그 값들에 따라 true 혹은 false를 생성하는 연산자
  •  비교연산자  의미
     ==  좌항과 우항이 같음
     !=  좌항과 우항이 같지 않음
     >  좌향이 우항보다 큼
     <  촤항이 우항보다 작음
     >=  좌항이 우항보다 크거나 같음
     <=  우항이 좌항보다 크거나 같음


+ Recent posts