03-1 if 조건문
if 조건문
기본형태
if(불 값이 나오는 표현식) {
불 값이 참일 때 실행할 문장
}
if else 조건문
기본형태
if(불 값이 나오는 표현식) {
불 값이 참일 때 실행할 문장
} else {
불 값이 거짓일 때 실행할 문장
}
*if 두개를 쓰는 것보다 if else 를 사용하여 조건 하나를 처리하는 횟수를 줄이면 실제 성능 향상에 도움이 된다.
중첩 조건문
기본형태
if(불 값이 나오는 표현식 1) {
// 표현식 1이 참이면 실행
if(불 값이 나오는 표현식 2) {
표현식 2가 참일 때 실행할 문장
} else {
표현식 2가 거짓일 때 실행할 문장
}
} else {
// 표현식 1이 거짓이면 실행
if(불 값이 나오는 표현식 3) {
표현식 3이 참일 때 실행할 문장
} else {
표현식 3이 거짓일 때 실행할 문장
}
}
if else if 조건문
겹치지 않는 3가지 이상의 조건으로 나눌 때 사용
if(불 표현식) {
문장
} else if(불 표현식) {
문장
} else if(불 표현식) {
문장
} else {
문장
}
p.140
확인문제 5번
<script>
const a = Number(prompt('숫자로 입력해주세요.', ''))
if (a % 2 === 0) {
// % 연산자는 나머지를 구한다. 여기까진 알았는데 "같다"는 언제나 === 로 표현하는 습관을 들이자.
alert('입력한 숫자는 짝수입니다.')
} else {
alert('입력한 숫자는 홀수입니다.')
}
</script>
확인문제 6번
나의 풀이
<script>
const a = Number(prompt('월을 입력해주세요.', ''))
if (5 >= a > 2) {
alert('봄입니다.')
} else if (8 >= a > 5) {
alert('여름입니다.')
} else if (11 >= a > 8) {
alert('가을입니다.')
} else {
alert('겨울입니다.')
}
//부등호를 사용하여 범위를 설정했다.
</script>
해설지 정답
<script>
const a = Number(prompt('월을 입력해주세요.', ''))
if (3 <= a && a <= 5) {
alert('봄입니다.')
} else if (6 <= a && a <= 8) {
alert('여름입니다.')
} else if (9 <= a && a <= 11) {
alert('가을입니다.')
} else {
alert('겨울입니다.')
}
//&&연산자를 굳이 써야할 이유가 있었을까? 코드를 더 단순하게 하는게 좋은 거 아닐까?
</script>
03-2 switch 조건문과 짧은 조건문
switch 조건문
기본형태
switch (자료) {
case 조건1:
break
case 조건2:
break
default:
break
}
* break 키워드는 조건문이나 반복문을 빠져나가기 위해 사용하는 키워드. 코드를 읽다가 break 키워드르 만나면 break 키워드르 감싼 조건문이나 반복문을 완전히 빠져나갑니다.
switch 조건문을 if 조건문으로 변환하기
범위를 조건으로 가지는 if 조건문을 switch 조건문으로 대체하기는 불가능하지는 않으나, 어렵다.
조건부 연산자 (삼항 연산자)
기본 형태
불 표현식 ? 참일 때의 결과 : 거짓일 때의 결과
예시
<script>
// 변수를 선언합니다.
const input = prompt('숫자를 입력해주세요.', '')
const number = Number(input)
// 조건문
const result = (number >= 0 ? '0 이상의 숫자입니다.' : '0보다 작은 숫자입니다.')
alert(result)
</script>
짧은 조건문
논리합 연산자를 사용한 짧은 조건문
기본 형태
불 표현식 || 불 표현식이 거짓일 때 실행할 문장
예시
> true || console.log('실행')
true
> false || console.log('실행?')
실행?
undefined
논리곱 연산자를 사용한 짧은 조건문
기본형태
결과가 거짓인 불 표현식 && 불 표현식이 참일 때 실행할 문장
//논리곱 연산자는 어느 한 변이 거짓일때 실행되지 않는 다는 것을 활용한 조건문
//이해가 어려워 잘 사용하지 않는 추세이다. 그러나 다른 사람의 코드에서 발견할 수도 있다.
짝수와 홀수 구분하기
<script>
// 입력이 문자열이므로 다음과 같은 코드를 사용할 수 있습니다.
const 입력 = prompt("정수를 입력해주세요.", "");
// length 는 총 길이를 나타낸다. 만약 253을 입력한 경우 length는 3이 된다.
// 그러나, 자리수는 0부터 매겨진다. 그러므로 맨 끝자리를 나타내려는 경우 총 length 에서 1을 빼야한다.
const 끝자리 = 입력[입력.length - 1];
// 끝자리를 비교합니다.
// 문자열로 나타내면 이와 같이 나타낼수 있다. 그러나 컴퓨터는 문자열 연산 보다 숫자 연산이 훨씬 빠르다.
// 그러므로 숫자열로 나타내려는 습관을 들이는 것이 좋다.
if (끝자리 === "0" ||
끝자리 === "2" ||
끝자리 === "4" ||
끝자리 === "6" ||
끝자리 === "8") {
alert(`${입력}은 짝수입니다.`);
} else {
alert(`${입력}은 홀수입니다.`);
}
</script>
숫자열로 나타낸 프로그램
<script>
// 입력이 문자열이므로 다음과 같은 코드를 사용할 수 있습니다.
// 문자열 보다 숫자로 나타내는 것이 성능향상에 훨씬 도움이 된다.
const 입력 = prompt("정수를 입력해주세요.", "");
const 숫자 = Number(입력)
if (숫자 % 2 === 0){
alert(`${입력}은 짝수입니다.`)
} else {
alert(`${입력}은 홀수입니다.`)
}
</script>
* 컴퓨터에게 적합한 조건을 찾기 위해 다른 사람의 코드를 보면서 많이 겸험해보는 것이 좋다. 자료구조와 알고리즘 관련 도서도 살펴보면 좋다. 알고리즘 대회의 문제들을 풀어보고, 다른 사람들은 어떻게 작성했는지 확인해보면서 어떤 코드를 사용하는 것이 더 효율적인지 알아보는 과정도 중요하다.
p.151
학점을 기반으로 별명 붙여주기
// 참고로 나는 학점이 3.2점이다. 그러므로 그렇게 되기 힘들다는 일반인이다. 자랑스럽다.
<script>
const score = Number(prompt('학점을 입력해주세요', ''))
/*if ( score === 4.5 ) {
alert('신')
} else if ( 4.5 > score >= 4.2 ) {
alert('교수님의 사랑')
} else if ( 4.2 > score >= 3.5 ) {
alert('현 체제의 수호자')
} else if ( 3.5 > score >= 2.8 ) {
alert('일반인')
} else if ( 2.8 > score >= 2.3 ) {
alert('일탈을 꿈꾸는 소시민')
} else if ( 2.3 > score >= 1.75 ) {
alert('오락문화의 선구자')
} else if ( 1.75 > score >= 1.0 ) {
alert('불가촉천민')
} else if ( 1.0 > score >= 0.5 ) {
alert('자벌레')
} else if ( 0.5 > score > ) {
alert('플랑크톤')
} else {
alert('시대를 앞서가는 혁명의 씨앗')
} */
//이런 식으로 코드를 간소화 하여 효율적으로 만드는 것이 좋다.
if ( score === 4.5 ) {
alert('신')
} else if (score >= 4.2 ) {
alert('교수님의 사랑')
} else if (score >= 3.5 ) {
alert('현 체제의 수호자')
} else if (score >= 2.8 ) {
alert('일반인')
} else if (score >= 2.3 ) {
alert('일탈을 꿈꾸는 소시민')
} else if (score >= 1.75 ) {
alert('오락문화의 선구자')
} else if (score >= 1.0 ) {
alert('불가촉천민')
} else if (score >= 0.5 ) {
alert('자벌레')
} else if (score > 0 ) {
alert('플랑크톤')
} else {
alert('시대를 앞서가는 혁명의 씨앗')
}
</script>
p.152
태어난 연도를 입력받아띠 출력하기
<script>
const rawInput = prompt('태어난 해를 입력해주세요.','')
const year = Number(rawInput)
const e = year % 12
let result
if (e === 0) { result = '원숭이' }
else if (e === 1) { result = '닭' }
else if (e === 2) { result = '개' }
else if (e === 3) { result = '돼지' }
else if (e === 4) { result = '쥐' }
else if (e === 5) { result = '소' }
else if (e === 6) { result = '호랑이' }
else if (e === 7) { result = '토끼' }
else if (e === 8) { result = '용' }
else if (e === 9) { result = '뱀' }
else if (e === 10) { result = '말' }
else if (e === 11) { result = '양' }
alert(`${year}년에 태어났다면 ${result} 띠입니다.`)
</script>
split을 사용하여 더 간략하게 표현하기
<script>
const rawInput = prompt('태어난 해를 입력해주세요.','')
const year = Number(rawInput)
// 문자열a.split('문자열b') 메소드는 문자열a를 문자열b로 잘라서 배열을 만든다.
const tti = '원숭이,닭,개,돼지,쥐,소,호랑이,토끼,용,뱀,말,양'.split(',')
// tti[year % 12]는 tti 배열의 [year % 12]번째 배열을 나타낸다.
alert(`${year}년에 태어났다면 ${tti[year % 12]} 띠입니다.`)
</script>
p.155
확인문제 2번
나의 오답
<script>
const rawInput = prompt('태어난 해를 입력해주세요.', '')
const year = Number(rawInput)
const e = year % 12
/*
let result
switch (e) {
case 0:
result === 원숭이
break
case 1:
result === 닭
break
case 2:
result === 개
break
case 3:
result === 돼지
break
case 4:
result === 쥐
break
case 5:
result === 소
break
case 6:
result === 호랑이
break
case 7:
result === 토끼
break
case 8:
result === 용
break
case 9:
result === 뱀
break
case 10:
result === 말
break
case 11:
result === 양
break
}*/
//switch 조건문에서는 '='을 한번만 써준다.
//문자열에는 ''를 꼭 써야 한다.
alert(`${year}년에 태어났다면 ${result} 띠입니다.`)
</script>
정답
이런식으로 간단하게 표현할 수 있다.
나의 오답과의 차이는 여러줄에 썼는냐 한줄에 입력했는냐의 차이이다.
<script>
const rawInput = prompt('태어난 해를 입력해주세요.', '')
const year = Number(rawInput)
const e = year % 12
// 자바스크립트는 문장의 끝을
// 줄바꿈 또는 세미콜론으로 나타냅니다.
// 여러 줄로 입력한다면 '원숭이' 부분처럼 할 수 있겠지만,
// 한 줄에 입력하려고 한다면 세미콜론을 사용해 다음과 같이 입력합니다.
let result
switch (e) {
case 0:
result = '원숭이'
break
case 1: result = '닭'; break;
case 2: result = '개'; break;
case 3: result = '돼지'; break;
case 4: result = '쥐'; break;
case 5: result = '소'; break;
case 6: result = '호랑이'; break;
case 7: result = '토끼'; break;
case 8: result = '용'; break;
case 9: result = '뱀'; break;
case 10: result = '말'; break;
case 11: result = '양'; break;
}
alert(`${year}년에 태어났다면 ${result} 띠입니다.`)
</script>
'Hanghae99' 카테고리의 다른 글
| 221109 TIL Chapter 05 함수 첫번째 시간 (0) | 2022.11.10 |
|---|---|
| 221109 TIL 사전시험 문제풀이 (0) | 2022.11.09 |
| 221108 TIL Chapter 04 반복문 (0) | 2022.11.08 |
| 221107 TIL Chapter 02 자료와 변수 (0) | 2022.11.07 |
| 221107 TIL Chapter 01 자바스크립트 개요와 개발환경 설정 (0) | 2022.11.07 |