Bibi's DevLog ๐ค๐
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๊ณ์ฐ๊ธฐ ๊ตฌํ(๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ์์, ์ฌ์น์ฐ์ฐ ๊ณ์ฐ ๋ฐ ์ถ๋ ฅ, ) ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋ฐ/Javascript ์๋ฐ์คํฌ๋ฆฝํธ
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๊ณ์ฐ๊ธฐ ๊ตฌํ(๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ์์, ์ฌ์น์ฐ์ฐ ๊ณ์ฐ ๋ฐ ์ถ๋ ฅ, )
๋น๋น bibi 2020. 10. 26. 16:16* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
[์ค์ต] ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ
์ด๋ฒ ์ค์ต์ ํตํด ๊ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค.
๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ์์
์์ํ๊ธฐ
- ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์๊ตฌ์ฌํญ
- ๊ณ์ฐ๊ธฐ ๊ตฌํ์ ํตํด ๊ฒฝํํ๊ฒ ๋ ๋ด์ฉ
์๊ตฌ์ฌํญ
- ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ์ ๋ฐ๋ผ ์ฌ์น์ฐ์ฐ์ ๊ณ์ฐํ ์ ์๋ ๊ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํ๋ค.
- ์๋ฅผ ๋ค์ด "2 + 3 * 4 / 2"์ ๊ฐ์ ์์๋ก ๊ฐ์ ์
๋ ฅํ๋ ๊ฒฝ์ฐ ์คํ ๊ฒฐ๊ณผ ๊ฐ์ธ 10์ ์ถ๋ ฅํด์ผ ํ๋ค.
(์ฌ์น์ฐ์ฐ ์ฐ์ ์์์ ์๊ด์์ด, ์ฐ์ ์ ์->๋ค ์์๋๋ก ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ ๋ง๋ค ๊ฒ)
- ์๋ฅผ ๋ค์ด "2 + 3 * 4 / 2"์ ๊ฐ์ ์์๋ก ๊ฐ์ ์
๋ ฅํ๋ ๊ฒฝ์ฐ ์คํ ๊ฒฐ๊ณผ ๊ฐ์ธ 10์ ์ถ๋ ฅํด์ผ ํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ์๋ ๊ฐ์ ์๋ ์ ํ๋์ด ์์ง ์๋ค.
- ๋๋์ ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์๋ก ๊ฐ์ด ๋จ์ด์ง์ง ์๋๋ผ๋ ์ ์ ๊ฐ๋ง ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํ๋ค.
๊ณ์ฐ๊ธฐ ๊ตฌํ์ ํตํด์ ๋ญ ๊ฒฝํํ๊ฒ ๋๋๊ฐ?
- ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์ ๊ฐ์ ์ ๋ ฅ๋ฐ๋ ๋ฐฉ๋ฒ(input)
- ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ HTML์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ(output)
- ๋ณ์, ๋ฐ์ดํฐ ํ์ , ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ํจ์, ๋ฐฐ์ด, ๋ฉ์๋, ํด๋์ค๋ฅผ ํ์ฉํด ํ๋ก๊ทธ๋๋ฐํ๋ ๋ฐฉ๋ฒ
๋ผ์ด๋ธ ์ฝ๋ฉ ์์ค ์ ์ฅ์(ํด์ค)
https://github.com/honux77/js-playground ๋ฏธ๋ฆฌ ๋ณด์ง ๋ง๊ณ ๋จผ์ ํ๊ณ ๋์ ๋ณผ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ฌ์น์ฐ์ฐ ๊ณ์ฐ ๋ฐ ์ถ๋ ฅ
ํ์ต ๋ชฉํ
- ๊ฐ๋จํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถ์ ๊ฒฝํํ๋ค.
- ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ๋ธ๋ผ์ฐ์ ธ์์ ๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ๊ฒฝํํ๋ค.
์๊ตฌ์ฌํญ
- calculator.html ์ ๋ง๋ ๋ค.
- main() ํจ์๋ฅผ ๋ง๋ค๊ณ ํธ์ถํ๋ค.
- ์๋ฌด ๊ฐ์ด๋ ์ฌ์น์ฐ์ฐ(๋ง์ , ๋บ์ , ๊ณฑ์ , ๋๋์ )์ ํตํด ๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
- ๊ตฌํํ ํ๋ก์ ํธ๋ฅผ github์ ํธ์ํ๋ค.
ํํธ
- ๋ง์ = +, ๋บ์ = -, ๊ณฑ์ = *, ๋๋์ = / ์ผ๋ก ๊ตฌํํ๋ค.
๋์ ๋ต์ (๋ฌธ์์ด ๊ณ์ฐ๊ธฐ)
- ๋์์ ํ๋ค!
- ์ค๋ฅ ๋ฐ๊ฒฌ : ํ ์๋ฆฌ ์ซ์๋ง ๊ณ์ฐ ๊ฐ๋ฅ..ใ
ใ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var arr = [];
var numArr = [];
var symArr = [];
var result = 0;
var main = function () {
var input = document.getElementById("input").value;
arr = input.split("");
console.log("arr๋ฐฐ์ด : " + arr);
classify();
}
var classify = function(){
for (var i = 0; i < arr.length; i++) {
if (isNaN(Number(arr[i])) === true) {
symArr.push(arr[i]);
} else {
numArr.push(arr[i]);
}
}
calculate();
}
var calculate = function(){
result = numArr[0];
console.log(result);
for (var j = 0; j < numArr.length-1; j++) {
if (symArr[j] === "+"){
result = Number(result) + Number(numArr[j+1]);
};
if (symArr[j] === "-"){
result = Number(result) - Number(numArr[j+1]);
};
if (symArr[j] === "*"){
result = Number(result) * Number(numArr[j+1]);
};
if (symArr[j] === "/"){
result = Number(result) / Number(numArr[j+1]);
};
console.log(j, result);
}
// 5+4-3*2/1 ๊ณ์ฐํ๊ธฐ.
// 5+4 = 9 numArr[0] symArr[0] numArr[1]
// 9-3 = 6 result symArr[1] numArr[2]
// 6*2 = 12 result symArr[2] numArr[3]
// 12/1 = 12 result symArr[3] numArr[4]
// numArr 0๋ฒ์งธ symArr0๋ฒ์งธ numArr1๋ฒ์จฐ
//์์ ๊ฒฐ๊ณผ๊ฐ symArr1๋ฒ์งธ numArr2๋ฒ์งธ
//์์ ๊ฒฐ๊ณผ๊ฐ symArr2๋ฒ์งธ numArr3๋ฒ์งธ
//..
print();
}
var print = function () {
var resultP = document.getElementById("result");
resultP.innerHTML = "๊ณ์ฐ๊ฒฐ๊ณผ : " + result;
}
main();
</script>
</head>
<body>
<h1> ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ 1 </h1>
๊ณ์ฐ์์ ์
๋ ฅํ์ธ์.<br>
- ๋ํ๊ธฐ๋ +, ๋นผ๊ธฐ๋ -, ๊ณฑํ๊ธฐ๋ *, ๋๋๊ธฐ๋ /๋ก ์
๋ ฅ<br>
- ๊ณ์ฐ์์ ์๋ถํฐ ์์๋๋ก ๊ณ์ฐํฉ๋๋ค. <br>
<input type="text" id="input">
<button onclick="main()">๊ณ์ฐํ๊ธฐ</button>
<p id="result"></p>
</body>
</html>
ํด์ค(์ ๋ต ์ฝ๋)
๋๋ฌด ๊ฐ๋จํด์ ๋๋๋ค.. ๊ทธ๋ฅ ์์์ ๊ฐ์ +-*/ ํด์ ์ฝ์์ฐฝ์ ์ฐ์ผ๋ฉด ๋๋ ๊ฑฐ์์!
(๋ด๊ฐ ๋ง๋ ๊ฑด ์ต์ข
๋ฌธ์ ์๋ค)
- ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ฝ๋
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div id="output"></div>
<script>
function main() {
console.log("Calculator1");
var out = document.getElementById("output"); // <div> ๊ฐ์ฒด ๊ฐ์ ธ์ค๊ธฐ
out.innerHTML = "๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ";
console.log(10+3);
console.log(10-3);
console.log(10*3);
console.log(10/3);
}
main();
</script>
</body>
</html>
๊ฐ ์ ๋ ฅ ๋ฐ ์ฌ์น์ฐ์ฐ - ๋ณ์
ํ์ต ๋ชฉํ
- ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ ๋ ฅํ๋ ๊ฒฝํ์ ํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํ์ ํ๋ค.
์๊ตฌ์ฌํญ
- ์ฌ์ฉ์๋ก๋ถํฐ 2๊ฐ์ ์ซ์ ๊ฐ์ ์ ๋ ฅ ๋ฐ์ ํ 2๊ฐ์ ์ซ์ ๊ฐ์ ํ์ฉํด ์ฌ์น์ฐ์ฐ์ ๊ณ์ฐํ๋ค.
- ๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
ํํธ
- ์ฌ์ฉ์์๊ฒ ์ซ์ ๊ฐ์ ์ ๋ ฅ ๋ฐ๋ ๋ฐฉ๋ฒ์ prompt() ๋๋ html input ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ๊ฐ๋ฅํ๋ฉด input ํ๊ทธ๋ฅผ ์ฌ์ฉํด ๋ณด์.
๋ด๊ฐ ์ง ์ฝ๋
- ์ ๋์ํ๋ค! :D
๐ค ์๋จ์ด
- ๋ํ๋ค : add, ๋นผ๋ค : subtract, ๊ณฑํ๋ค : multiply, ๋๋๋ค : divide
- (๋ฐฉ์ ์ ์ฝ์ ๋) + : plus, - : minus, * : time, / : divided by
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ณ์ฐ๊ธฐ-๊ฐ ์
๋ ฅ ๋ฐ ์ฌ์น์ฐ์ฐ(๋ณ์)</h1>
<ul>
<li>์ฌ์ฉ์๋ก๋ถํฐ 2๊ฐ์ ์ซ์ ๊ฐ์ ์
๋ ฅ ๋ฐ์ ํ 2๊ฐ์ ์ซ์ ๊ฐ์ ํ์ฉํด ์ฌ์น์ฐ์ฐ์ ๊ณ์ฐํ๋ค.</li>
<li>๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.</li>
</ul>
- ์์์ ์ซ์ X์ Y๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.<br>
- ์ํ๋ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฌ์น์ฐ์ฐ์ ํด ๋๋ฆฝ๋๋ค.<br>
X = <input type="number" id="inputX"> <br>
Y = <input type="number" id="inputY"> <br>
X๋ฅผ Y๋ก.. <br>
<button onclick="plus()">๋ํ๊ธฐ</button>
<button onclick="minus()">๋นผ๊ธฐ</button>
<button onclick="times()">๊ณฑํ๊ธฐ</button>
<button onclick="divide()">๋๋๊ธฐ</button> <br>
๊ณ์ฐ ๊ฒฐ๊ณผ : <span id="result"></span>
<script>
function plus() {
var X = Number(document.getElementById("inputX").value);
var Y = Number(document.getElementById("inputY").value);
var result = document.getElementById("result");
result.innerHTML = X + Y;
}
function minus() {
var X = Number(document.getElementById("inputX").value);
var Y = Number(document.getElementById("inputY").value);
var result = document.getElementById("result");
result.innerHTML = X - Y;
}
function times() {
var X = Number(document.getElementById("inputX").value);
var Y = Number(document.getElementById("inputY").value);
var result = document.getElementById("result");
result.innerHTML = X * Y;
}
function divide() {
var X = Number(document.getElementById("inputX").value);
var Y = Number(document.getElementById("inputY").value);
var result = document.getElementById("result");
result.innerHTML = X / Y;
}
</script>
</body>
</html>
์ ๋ต ์ฝ๋
<!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="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 n1 = Number(str1);
var n2 = Number(str2);
var out = document.getElementById("output");
var str = "";
str += "๋ํ๊ธฐ : " + (n1 + n2) + "<br>";
str += "๋นผ๊ธฐ : " + (n1 - n2) + "<br>";
str += "๊ณฑํ๊ธฐ : " + (n1 * n2) + "<br>";
str += "๋๋๊ธฐ : " + (n1 / n2) + "<br>";
out.innerHTML = str;
}
</script>
</body>
</html>
document.getElementById("ABC").innerHTML = "๋ฌธ์์ ์ ๊ธฐ";
- document : ํด๋น ์น๋ฌธ์๋ฅผ ๊ฐ๋ฆฌํด
- getElementById("ABC") : id๊ฐ์ด "ABC"์ธ element(์์)๋ฅผ ๊ฐ์ ธ์ค๊ธฐ. (์๋์์ div ๊ฐ์ฒด)
- .innerHTML : ์ด ๊ฐ์ฒด์ ์์ฑ์ ๊ฐ์
- = "๋ฌธ์์ ์ ๊ธฐ" : "๋ฌธ์์ ์ ๊ธฐ"๋ก ๋ฐ๊ฟ๋ผ.