Bibi's DevLog ๐ค๐
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๋ฌธ์์ด ๊ณ์ฐ๊ธฐ - ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋ฐ/Javascript ์๋ฐ์คํฌ๋ฆฝํธ
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๋ฌธ์์ด ๊ณ์ฐ๊ธฐ - ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ
๋น๋น bibi 2020. 10. 26. 18:20* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
์กฐ๊ฑด๋ฌธ
ํ์ต ๋ชฉํ
- ํ๋ก๊ทธ๋๋ฐ์ ์กฐ๊ฑด๋ฌธ์ ๊ฒฝํํ๋ค.
์๊ตฌ์ฌํญ
- ์ฌ์ฉ์์๊ฒ 2๊ฐ์ ์ซ์ ๊ฐ๊ณผ ์ฌ์น์ฐ์ฐ ๊ธฐํธ(+, -, *, /) ์ค ํ๋๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ฌ์น์ฐ์ฐ ๊ธฐํธ์ ๋ฐ๋ผ ์ฌ์น์ฐ์ฐ์ ๊ณ์ฐํ ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๋ ๊ฐ 2์ 4 ์ ๋ ฅํ๊ณ ๊ณฑ์ (*) ๊ธฐํธ๋ฅผ ์ ๋ ฅํ๋ฉด 2 * 4์ ๊ฒฐ๊ณผ์ธ 8์ ์ถ๋ ฅํด์ผ ํ๋ค.
ํํธ
- ์ฌ์น์ฐ์ฐ ๊ธฐํธ๊ฐ ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ์ฌ์น์ฐ์ฐ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์กฐ๊ฑด๋ฌธ(if/else if/else)์ ์ฌ์ฉํด ๊ตฌํํ๋ค.
- ๋ฌธ์์ด ๋น๊ต๋ฅผ ์ํด === ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
if (op === '+') {
//code here
} else if
//...
์ถ๊ฐ ํ์ตํ๊ธฐ
- == ๊ณผ ===์ ์ฐจ์ด
- switch ์ case๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํด ๋ณด์.
๋ด๊ฐ ์ง ์ฝ๋
- if, else if, else ๋ฒ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ณ์ฐ๊ธฐ - ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ</h1>
- 2๊ฐ์ ์ซ์์ ์ฌ์น์ฐ์ฐ ๊ธฐํธ(+ - * /)๋ฅผ ์
๋ ฅํ๋ฉด ๊ณ์ฐ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.<br>
์ซ์ 1 : <input type="number" id="num1"> <br>
์ซ์ 2 : <input type="number" id="num2"> <br>
์ฌ์น์ฐ์ฐ : <input type="text" id="symbol"> <br>
<button onclick="calc()">๊ณ์ฐํ๊ธฐ</button>
<div id="result"></div>
<script>
function calc() {
var str1 = document.getElementById("num1").value;
var str2 = document.getElementById("num2").value;
var num1 = Number(str1);
var num2 = Number(str2);
var symbol = document.getElementById("symbol").value;
var result = 0;
if (symbol === "+") {
result = num1 + num2;
} else if (symbol === "-"){
result = num1 - num2;
} else if (symbol === "*") {
result = num1 * num2;
} else if (symbol === "/") {
result = num1 / num2;
} else {
result = "+(๋ํ๊ธฐ), -(๋นผ๊ธฐ), *(๊ณฑํ๊ธฐ), /(๋๋๊ธฐ)์ค ํ๋๋ฅผ ์
๋ ฅํ์ญ์์ค"
}
document.getElementById("result").innerHTML = "๊ณ์ฐ๊ฒฐ๊ณผ : "+result;
}
</script>
</body>
</html>
- switch-case ๋ฒ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ณ์ฐ๊ธฐ - ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ</h1>
- 2๊ฐ์ ์ซ์์ ์ฌ์น์ฐ์ฐ ๊ธฐํธ(+ - * /)๋ฅผ ์
๋ ฅํ๋ฉด ๊ณ์ฐ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.<br>
์ซ์ 1 : <input type="number" id="num1"> <br>
์ซ์ 2 : <input type="number" id="num2"> <br>
์ฌ์น์ฐ์ฐ : <input type="text" id="symbol"> <br>
<button onclick="calc()">๊ณ์ฐํ๊ธฐ</button>
<div id="result"></div>
<script>
function calc() {
var str1 = document.getElementById("num1").value;
var str2 = document.getElementById("num2").value;
var num1 = Number(str1);
var num2 = Number(str2);
var symbol = document.getElementById("symbol").value;
var result = 0;
switch (symbol) {
case "+" :
result = num1 + num2;
break;
case "-" :
result = num1 - num2;
break;
case "*" :
result = num1 * num2;
break;
case "/" :
result = num1 / num2;
break;
default :
result = "์ฌ์น์ฐ์ฐ ์นธ์๋ +(๋ํ๊ธฐ), -(๋นผ๊ธฐ), *(๊ณฑํ๊ธฐ), /(๋๋๊ธฐ)์ค ํ๋๋ฅผ ์
๋ ฅํ์ญ์์ค";
}
document.getElementById("result").innerHTML = "๊ณ์ฐ๊ฒฐ๊ณผ : "+result;
}
</script>
</body>
</html>
ํด์ค
* ์ฐ์ฐ์ (Operator) : ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฌธ์.
(์ฐธ๊ณ : jhnyang.tistory.com/185 ์ฐ์ฐ์๋?, ์ฐ์ฐ์ ์ข ๋ฅ )
-> ๋ณ์๋ช ์ผ๋ก๋ op๋ก ์ค์ฌ ๋ถ๋ฅธ๋ค.
-if๋ฌธ ๋ฒ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div>
์ฒซ ๋ฒ์งธ ์ : <input type="text" id="n1"><br>
์ฐ์ฐ์ : <input type="text" id="op"><br>
๋ ๋ฒ์งธ ์ : <input type="text" id="n2"><br>
<button onclick="calc()">์คํ</button>
</div>
<div id="output">์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๋๋ค.</div>
<script>
function calc() {
var str1 = document.getElementById("n1").value;
var str2 = document.getElementById("n2").value;
var op = document.getElementById("op").value;
var n1 = Number(str1);
var n2 = Number(str2);
var out = document.getElementById("output");
var str = "";
if (op === "+") {
str += "๋ํ๊ธฐ : " + (n1 + n2) + "<br>";
} else if (op === "-") {
str += "๋นผ๊ธฐ : " + (n1 - n2) + "<br>";
} else if (op === "*") {
str += "๊ณฑํ๊ธฐ : " + (n1 * n2) + "<br>";
} else if (op === "/") {
str += "๋๋๊ธฐ : " + (n1 / n2) + "<br>";
} else {
str += "์ฐ์ฐ์์๋ ์ฌ์น์ฐ์ฐ์๋ง ์
๋ ฅํด ์ฃผ์ธ์."
}
out.innerHTML = str;
}
</script>
</body>
</html>
-switch-case ๋ฒ์
โ switch-case๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
if๋ฌธ์ด ๋๋ฌด ๋ง์์!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div>
์ฒซ ๋ฒ์งธ ์ : <input type="text" id="n1"><br>
์ฐ์ฐ์ : <input type="text" id="op"><br>
๋ ๋ฒ์งธ ์ : <input type="text" id="n2"><br>
<button onclick="calc()">์คํ</button>
</div>
<div id="output">์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๋๋ค.</div>
<script>
function calc() {
var str1 = document.getElementById("n1").value;
var str2 = document.getElementById("n2").value;
var op = document.getElementById("op").value;
var n1 = Number(str1);
var n2 = Number(str2);
var out = document.getElementById("output");
var str = "";
switch (op) {
case "+" :
str += "๋ํ๊ธฐ: " + (n1 + n2) + "<br>";
break;
case "-" :
str += "๋นผ๊ธฐ: " + (n1 - n2) + "<br>";
break;
case "*" :
str += "๊ณฑํ๊ธฐ: " + (n1 * n2) + "<br>";
break;
case "/" :
str += "๋๋๊ธฐ: " + (n1 / n2) + "<br>";
break;
}
out.innerHTML = str;
}
</script>
</body>
</html>
๋ฐ๋ณต๋ฌธ
ํ์ต ๋ชฉํ
- ํ๋ก๊ทธ๋๋ฐ ์ค ๋ฐ๋ณต๋ฌธ์ ๊ฒฝํํ๋ค.
- ๋ฌดํ๋ฃจํ๋ฅผ ์ฌ์ฉํด ๋ณธ๋ค.
์๊ตฌ์ฌํญ
- prompt()๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๋ค.
- ํ ๋ฒ์ 2๊ฐ์ ์ซ์ ๊ฐ๋ง ์ฌ์น์ฐ์ฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ ์ฌ์น์ฐ์ฐ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์ ๋จ๊ณ์์ ๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ ์ดํ ์ฐ์ฐ์ ์ฒซ๋ฒ์งธ ๊ฐ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด 4 + 2 * 3์ ์์๋ก ๊ฐ์ ์ ๋ ฅํ๋ฉด ๋จผ์ 4 + 2๊ฐ ๊ณ์ฐ๋๊ณ ๊ฒฐ๊ณผ ๊ฐ 6๊ณผ 3์ ๊ณฑ์ ์ ํตํด 18์ ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํ๋ค.
- ์ฌ์น์ฐ์ฐ ๊ธฐํธ ๋์ "q"๋ผ๋ ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ฉด ์ต์ข ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ค.
ํํธ
- ๊ฐ์ ์ ๋ ฅ ๋ฐ์ ๋ while ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค.
- while(true)์ ๊ฐ์ด ๊ตฌํํ๋ฉด ๋ฌดํํ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์ ์๋ค.
- while(true)๋ก ์คํํ๊ณ ์๋ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ ค๋ฉด break ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฆ, "quit"์ด๋ผ๋ ๋ฌธ์์ด์ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ break๋ฅผ ์ฌ์ฉํด ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ ์ ์๋ค.
๋ด๊ฐ ์ง ์ฝ๋
- ๋ฏธ์์ฑ (์ ๋๋ก ๋์ํ์ง ์์)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ณ์ฐ๊ธฐ - ๋ฐ๋ณต๋ฌธ</h1>
<div id="result"></div>
<script>
var numArr = [];
var symArr = [];
var result = 0;
function calculate() {
while (true) {
var num = Number(prompt("๊ณ์ฐ์์ ๋ค์ด๊ฐ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์."));
numArr.push(num);
var sym = prompt("๊ณ์ฐ์์ ๋ค์ด๊ฐ ์ฐ์ฐ์(+-*/)๋ฅผ ์
๋ ฅํ์ธ์. p๋ฅผ ์
๋ ฅํ๋ฉด ์ข
๋ฃ๋ฉ๋๋ค.");
symArr.push(sym);
document.getElementById("result").innerHTML = result;
if (sym === "p") {
break;
}
}
console.log(numArr, symArr);
if (symArr[0] === "+") {
result += numArr[0] + numArr[0 + 1];
console.log(numArr[0] + "๋ํ๊ธฐ" + numArr [0 + 1] + "=" + result);
} else if (symArr[0] === "-") {
result += numArr[0] - numArr[0 + 1];
console.log(numArr[0] + "๋นผ๊ธฐ" + numArr [0 + 1] + "=" + result);
} else if (symArr[0] === "*") {
result += numArr[0] * numArr[0 + 1];
console.log(numArr[0] + "๊ณฑํ๊ธฐ" + numArr [0 + 1] + "=" + result);
} else if (symArr[0] === "/") {
result += numArr[0] / numArr[0 + 1];
console.log(numArr[0] + "๋๋๊ธฐ" + numArr [0 + 1] + "=" + result);
} else {
document.getElementById("result").innerHTML = "์ฐ์ฐ์์๋ + - * / ์ค ํ๋๋ง ๋ฃ์ด์ฃผ์ธ์";
} // 0๋ฒ์จฐ, 1๋ฒ์งธ ์ฌ์น์ฐ์ฐ ๋
for (var i = 2; i < numArr.length; i++) {
// ์ด์ ๊ฒฐ๊ณผ & 2๋ฒ์งธ, ๊ฒฐ๊ณผ& 3๋ฒ์จฐ .. ๊ณ์ฐํด์ผ
if (symArr[i] === "+") {
result += result + numArr[i + 1];
} else if (symArr[0] === "-") {
result += result - numArr[i + 1];
} else if (symArr[0] === "*") {
result += result * numArr[i + 1];
} else if (symArr[0] === "/") {
result += result / numArr[i + 1];
} else {
document.getElementById("result").innerHTML = "์ฐ์ฐ์์๋ + - * / ์ค ํ๋๋ง ๋ฃ์ด์ฃผ์ธ์";
}
}
}
calculate();
</script>
</body>
</html>
ํด์ค
- ๋ฐ๋ณต๋ฌธ์ ๋ ๋๋..
[์ซ์1, ์ฐ์ฐ์1, ์ซ์2, ์ฐ์ฐ์ 2..] -> ๋ฅผ ๋ฐ๋ณตํ๋ฉด ์ ๋๋ค! -> ์ด๊ฒ์ด ๋ด ์ฝ๋์ ๋ฌธ์ ์ ,..
์ซ์1 ์ ๋ฐ์ ๋ค, [์ฐ์ฐ์1, ์ซ์2, ์ฐ์ฐ์2, ์ซ์3, ์ฐ์ฐ์3, ์ซ์4]..->๋ฅผ ๋ฐ๋ณตํด์ผ ํ๋ค!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div id="output">์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๋๋ค.</div>
<script>
function main() {
var n1 = Number(prompt("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
var op, n2;
var result = n1;// ์ฒ์ ๊ฒฐ๊ณผ๊ฐ์ ํ ๋ฒ๋ง n1์ ๋ฃ์ด while๋ฐ๋ณต๋ฌธ ํ์ฉํ๊ธฐ.
var n = 2;
while (true) { // ๋ฌดํ๋ฃจํ
op = prompt("์ฐ์ฐ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์. q๋ฅผ ์
๋ ฅํ๋ฉด ์ข
๋ฃ๋ฉ๋๋ค.")
if (op === 'q'){
break;// break๋ ๋ฐ๋ณต๋ฌธ(while) ์ ์ฒด๋ฅผ ๋น ์ ธ๋๊ฐ๋ค.
}
n2 = Number(prompt(n + "๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
if (op === "+") {
result += n2;
} else if (op === "-") {
result -= n2;
} else if (op === "*") {
result *= n2;
} else if (op === "/") {
result /= n2;
} else {
result = "์ค๊ฐ์ค๋ฅ";
break;
}
n++;
}
document.getElementById("output").innerHTML = "์ต์ข
๊ฒฐ๊ณผ๊ฐ์" + result + "์
๋๋ค.";
}
main();
</script>
</body>
</html>
์ฒ์์ result = n1์ ํ ์ด์ : ์ฒ์ ์ ๋ ฅ๋ฐ์ ์ซ์๋ฅผ result๊ฐ์ผ๋ก ๋ฃ์ด์, ์๋์ while๋ฐ๋ณต๋ฌธ์ ๊ณ์ ํ์ฉํ๊ธฐ ์ํด.
if (op === 'q') { break; } ๊ฐ op๋ฐ๋ก ๋ฐ์ ์๋ ์ด์ : op(์ฐ์ฐ์)๊ฐ์ผ๋ก q๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด ์ฆ์ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ธฐ ์ํด.
์๋นํ ๋์ด๋๊ฐ ์๋ ๋ฌธ์ ์๋ค. (์ฒ์ ํผ ๋ฌธ์ ๊ฐ์ ๋๋)