WEB/JavaScript
Js - 조건문, 반복문
jomericano
2022. 6. 8. 19:52
<!DOCTYPE html>
<html lang="ko">
<meta charset="UTF-8">
<title>자바스크립트 조건문</title>
</head>
<body>
<h1>자바스크립트 조건문</h1>
<h2>개요</h2>
<p>특정 조건에 대한 만족 여부에 따라 실행할 코드를 결정하는 기능</p>
<p>자바스크립트는 2가지의 조건문 제공 - if, switch </p>
<h2> 블럭(문) block statement </h2>
<p>0개 이상의 명령문을 중괄호로 묶은 것 </p>
<p>블럭은 단독으로 사용할 수 있으나, 일반적으로 제어문이나 함수/ 객체 선언시 주로 사용</p>
<script>
{
document.write('<b>Hello, World</b>');
} // 코드 블럭
</script>
<h2> if 문 </h2>
<p>조건을 만족할때만 코드블럭을 실행함</p>
<script>
let avg = 68.5;
//평균이 60점 이상이면 '시험합격'을 출력
if (avg >= 60) {
document.write('시험합격!');
}
</script>
<h2> if ~ else 문 </h2>
<p>조건을 만족하면 코드블럭 실행하고 만족 안할경우 else코드블럭 실행 </p>
<script>
//평균이 60점 이상이면 '시험 합격'을 출력
//평균이 60점 미만이면 '시험 불합격'을 출력
avg = 50;
if (avg >= 60 ) {
document.write('시험 합격!');
} else {
document.write('시험 불합격!');
}
</script>
<h2> if ~ else if ~ else 문 </h2>
<p>조건이 3개 이상인 다중 조건에 대한
만족 여부에 따라 코드블럭 실행하려면 if ~ else 사이에
else if를 추가함</p>
<script>
//평균점수를 수우미양가 조건에 따라 학점을 출력
if (avg >= 90 ) {
document.write('수');
} else if (avg >= 80 ) {
document.write('우');
} else if (avg >= 70 ) {
document.write('미');
} else if (avg >= 60 ) {
document.write('양');
} else {
document.write('가<br>');
}
</script>
<hr>
<script>
// 버스 기본요금 부과하기 - 나이를 입력받음
// 미취학 아동 (7세 이하): 0원
// 어린이 (8~13): 450원
// 청소년 (14~19): 720원
// 일반 (20~): 1200원
// 노인 (70~): 0원
// let age = parseInt(prompt('나이를 입력하세요'));
let pay = 0;
if (age >=70) {
pay=0;
} else if (age >=20) {
pay=1200;
} else if (age >=14) {
pay=720;
} else if (age >=8) {
pay=450;
} else pay=0;
document.write(`나이가 ${age}세 라고요? 버스요금은 ${pay} 원 입니다 `)
// if (age <= 7 ) {
// document.write('미취학 아동 0원');
// } else if (age <= 13 ) {
// document.write('어린이 450원');
// } else if (age <= 19 ) {
// document.write('청소년 720원');
// } else if (age <= 70 ) {
// document.write('일반 1200원');
// } else if (age > 70 ) {
// document.write('노인 0원');
// }
</script>
<h2>조건식을 거짓으로 취급하는 값</h2>
<p>false, 0, undefined, null, NaN, 빈문자열 등은 조건식에서 참이 아닌 거짓취급</p>
<script>
// if (undefined) {
// if (null) {
// if (NaN) {
if ('') {
document.write('이 글이 보이나요?');
} else {
} document.write('아니면 이 글이 보이나요?');
</script>
<h2>switch </h2>
<p>다중 조건 if문을 가독성있게 작성한 조건문</p>
<p>switch 의 표현식을 평가하여 그 값의 일치 여부에 따라
case 문 아래의 코드 블럭을 실행하는 구조 </p>
<p>표현식의 평가값과 일치하는 case가 없는 경우
default 문의 코드블럭을 실행함</p>
<p>단, 표현식의 평가값과 일치하는 case 문이 실행되더라도
break 문이 없으면 switch 문이 중단되지 않고 나머지 case문을 실행하게 됨
- full through </p>
<script>
// 월 을 입력하면 영어로 변환해서 출력
let month = parseInt(prompt('"월"을 숫자로 입력하세요'));
let name = '';
switch (month) {
case 1: name = 'January'; break;
case 2: name = 'February'; break;
case 3: name = 'March'; break;
case 4: name = 'April'; break;
default:name='잘못 입력하셨습니다'; //break 안스면 풀스루, 끝에걸 실행하게됨
}
if (month >= 1 &&month <=12)
document.write(`${month}월은 ${name}입니다.<br>`);
else
document.write(name);
</script>
<hr>
<script>
//월, 윤년여부(y/n)을 입력하면 해당 월의 마지막 날을 출력
// 1,3,5,7,8,10,12 - 31일
// 4, 6, 9, 11 - 30일
// 2 윤년 여부에 따라 28일 or 29일
month = parseInt(prompt('월 을 숫자로 입력하시오'));
let yun = null;
if (month == 2) yun = prompt('윤년 (Y/N)');
endDay = 0;
switch (month) {
case 1:case 3:case 5: case 7: case 8: case 10: case 12 :endDay=31; break;
case 4: case 6:case 9:case 11 : endDay=30; break;
case 2 : if (yun=='Y') endDay =29;
else endDay = 28; break;
}
document.write(`${month}월은 마지막 날이 ${endDay}일 입니다.`)
</script>
<hr>
<script>
//평균점수를 수우미양가 조건에 따라 학점을 출력
avg = parseInt(prompt('평균점수를 입력하시오')/10);
grade = '';
switch (avg) {
case 10 : case 9: grade = '수'; break;
case 8: grade = '우'; break;
case 7: grade = '미'; break;
case 6: grade = '양'; break;
default:grade ='가';
}
document.write(`${grade}`)
</script>
<p>자바스크립트 한정으로 switch 의 case 문에 비교연산자를 이용한 범위를 검사하는 코드를
작성할 수도 있음 </p>
<h2>if vs switch </h2>
<p>if문의 경우 조건식 검사는 위에서 아래로 순차적으로 진행됨</p>
<p>운이 나빠서, 만족하는 조건식이 맨 아래에 있다면 위의 조건식 모두를
비교한 뒤에야 비로소 도달, 범위찾기 </p>
<p>switch문의 경우 해당 값을 바로 찾음. 정수값의 경우 성능 향상</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>자바크스립트 반복문 </title>
</head>
<body>
<h1>자바스크립트 반복문 </h1>
<h2>개요</h2>
<p>조건을 만족하는 동안 코드를 반복적으로 수행하는 문장</p>
<p>자바스크립트에서 기본적으로 3가지 반복문 (for, while, do-while)
이 지원되고 그 외 for-in 과 ES6에서 추가된 for-of 등이 있음</p>
<p>for</p>
<p>조건식이 거짓으로 판별될 때까지 코드블럭 반복실행
즉, 참의 범위에 있을때까지 반복실행</p>
<script>
// 1~ 10까지 정수 출력
// 초기식 조건식 증감식
for (let i = 1; i <= 10; ++i ) {
//조건식이 참일 경우 실행할 코드들
document.write(i, ' ');
}
document.write(' <br> ');
// 1~100까지 정수 중 짝수만 출력
for(let j = 1; j<=100; ++j ) {
if (j % 2 ==0) {
document.write(j, ' ');
}
}
document.write(' <br> ');
for(let j = 2; j<=100; j+=2 ) {
document.write(j, ' ');
}
</script>
<hr>
<script>
// 단을 입력받아 구구단 출력
dan = parseInt(prompt('단을 입력하시오'));
for(let i = 1; i<=10; ++i) {
document.write(`${dan} x ${i} = ${dan * i} <br>`);
}
</script>
<hr>
<script>
// 중첩 반복문을 이용해서 구구단을 출력
document.write('<table cellpadding="15">');
for (let i=1; i<=9; ++i) {
document.write('<tr>');
for (let dan=1; dan<=9; ++dan) {
document.write('<td>')
document.write(`${dan} x ${i} = ${dan * i} `);
document.write('</td>')
}
document.write('</tr>');
}
</script>
<p>무한 반복문</p>
<p>for문의 경우 초기식, 조건식, 증감식을 비워두면 끊임없는 반복 실행하는 무한반복문이 됨</p>
<h2>while </h2>
<p>조건식이 참일동안 코드블럭 실행하는 제어문 </p>
<p>만일, 조건식이 처음부터 거짓이면 코드블럭은 한번도 실행되지 않음</p>
<script>
let i = 1;
while (i <= 10) {
document.write(`${i} `);
i += 1;
}
</script>
<h2>do - while</h2>
<p>while문과 다르게 먼저 코드블럭을 실행하고 조건식을 검사함 </p>
<p>따라서, 코드블럭은 최소 1번은 실행됨</p>
<script>
//1~10까지 정수 출력
i=1;
do {
document.write(`${i} `);
i +=1;
} while (i<=10);
</script>
<h2>무한반복문 - while , do-while </h2>
<p>반복문의 조건식을 true로 설정하면
해당 반복문이 무한 반복문이 됨</p>
<!-- <script>-->
<!-- while(true) {-->
<!-- alert('헤헤헤헤');-->
<!-- }-->
<!-- </script>-->
<h2>break</h2>
<p>원하는 시점에 반복문이나 코드블럭에서 벗어나려면 break 사용</p>
<script>
//임의의 정수를 계속 입력하면
// 그것의 합을 구함
let sum=0;
while (true){
let val = parseInt(prompt('숫자 하나 입력'));
if (val == 0) break ;
sum+=val;
}
document.write('지금까지 총합 : ', sum);
</script>
<h2>continue</h2>
<p>반복문의 코드실행을 현 지점에서 중단하고
반복문의 증감식이나 조건식으로 제어를 이동시킴</p>
<p>즉, 반복을 일시적으로 건너뛰어 다음 반복으로 넘어감</p>
<script>
//1~100사이의 총합을 구함
// 단, 4의 배수나 7의 배수 제외
sum=0;
for (let i = 1; i<=100; ++i) {
if (i% 4==0 || i%7==0 ) continue;
sum +=i; //sum = sum + i
document.write(sum, ' ')
}
</script>
<hr>
<script>
//단 입력 후 구구단 출력 - while
let o = parseInt(prompt('단을 입력하세요 '));
i = 1
while (i <= 9) {
document.write(`${o} * ${i} = ${o*i} <br>`);
i += 1;
}
//중첩 반복문 이용 구구단 출력 - while
let k = 1;
while (k <= 9) {
let j = 1;
while (j <= 9) {
document.write(`${k} * ${j} = ${k*j} <br>`);
j += 1;
}
document.write('<br>')
k += 1;
}
</script>
<hr>
</body>
</html>