Bibi's DevLog ๐ค๐
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๊ณ์ฐ๊ธฐ - ๊ฐ์ฒด ํ์ฉ ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋ฐ/Javascript ์๋ฐ์คํฌ๋ฆฝํธ
[์ธํ๋ฐ]Javascript์ ๋ฌธ - ๊ณ์ฐ๊ธฐ - ๊ฐ์ฒด ํ์ฉ
๋น๋น bibi 2020. 10. 28. 13:07* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
ํ์ต ๋ชฉํ
- ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฒด๋ฅผ ๊ฒฝํํ๋ค.
์๊ตฌ์ฌํญ
- ์ฌ์ฉ์์ ๊ฐ์ ์ ๋ ฅํ๋ ๊ฐ์ฒด, ์ฌ์น์ฐ์ฐ์ ๊ตฌํํ๋ ๊ฐ์ฒด, ์ถ๋ ฅํ๋ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
- main ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- ์ ์ญ๋ณ์๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๊ฐ์ฒด ์์ผ๋ก ๋ฃ๊ธฐ.
ํํธ
input = {}
input.getFirstValue = function();
input.getSecondValue= function();
intput.getOperator = function();
output = {}
output.print = function();
calculator = {}
calculator.calculate = function();
๋ด๊ฐ ์ง ์ฝ๋
- ๊ณ์ฐ์ ์ ๋๋๋ฐ, "n๋ฒ์งธ ์๋ฅผ ์
๋ ฅํ์ธ์" ์์ n++ ๋ฅผ ํด๋ ์นด์ดํ
์ด ์ ๋๋ค. (๊ณ์ 2๋ฒ์งธ ์๋ฅผ ์
๋ ฅํ๋ผ๊ณ ๋์ด)
ํผ์ ๋๋ฒ๊น
ํด๋ณด๋ ค๋ค ๋๋ฌด ์ค๋ ๊ฑธ๋ ค์ ๊ทธ๋ฅ ํด์ค์ ๋ณด๊ธฐ๋ก..
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div id="exit">์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๋๋ค.</div>
<script>
input = {} // getFirstValue, getSecondValue, getOperator
output = {} // print
calculator = {} // calculate
input.getFirstValue = function() {
var n1 = Number(prompt("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
return n1;
}
input.getSecondValue = function (n) {
var n2 = Number(prompt(n + "๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
n++;
return n2;
}
input.getOperator = function () {
while (true) {
var op = prompt("์ฐ์ฐ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.(q๋ฅผ ์
๋ ฅํ๋ฉด ์ข
๋ฃ)");
if (op === "+" || op === "-" || op === "*" || op === "/"
|| op === "q") {
break;
} else { // ์ฌ์น์ฐ์ฐ ์ธ์ ๊ฐ์ ๋ฃ์ผ๋ฉด..
alert("์ฌ๋ฐ๋ฅธ ์ฐ์ฐ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.")
}
}
return op;
}
calculator.calculate = function (first, second, op) {
var ret;
switch (op) {
case "+":
ret = first + second;
break;
case "-":
ret = first - second;
break;
case "*":
ret = first * second;
break;
case "/":
ret = first / second;
break;
}
console.log("return : " + ret);
return ret;
}
output.print = function (value) {
return "์ต์ข
๊ฒฐ๊ณผ๊ฐ์ " + value + "์
๋๋ค.";
}
function main() {
var num1 = input.getFirstValue(); // ์ฒซ ๋ฒ์งธ ๊ฐ
console.log("num1 : " + num1);
var result = num1;
var n = 2;
while(true) {
var op = input.getOperator(); // ์ฐ์ฐ์
console.log("operator : " + op);
if (op === "q") {
break;
}
var num2 = input.getSecondValue(n); // ๋ ๋ฒ์งธ ๊ฐ
console.log("num2 : " + num2)
result = calculator.calculate(result, num2, op);
}
var exit = document.getElementById("exit");
exit.innerHTML = output.print(result);
}
main();
</script>
</body>
</html>
ํด์ค
this ์ฌ์ฉ.
-> ๋ฉ์๋(๊ฐ์ฒด ์์ ํจ์) ๋ด์์ ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผํ ๋ this๋ฅผ ์ฌ์ฉํ๋ค.
โป ์์ฑ(๊ฐ์ฒด์ ๋ณ์) = ๋ฉค๋ฒ๋ณ์
var n = 2; ๋ ์๋ฏธ๋ฅผ ์ด๋ ค count๋ก ๋ณ์๋ช ์ ๋ฐ๊พธ๊ณ , ๊ฐ์ฒด input์ ์์ฑ์ผ๋ก ๋ฃ์ด ์ค๋ค.
function foo() {
} // ์ด ๋๋ ;๊ฐ ํ์์์ง๋ง,
var foo = function() {
}; // ์ด๋ ๊ฒ ํจ์ ์ ์ธ ํ ๋์
๊ฐ์ฒด.๋ฉ์๋์ด๋ฆ = function() {
}; // ๋ฉ์๋ ์ ์ธ ํ ๋๋ ;๊ฐ ํ์ํ๋ค (์ผ๋จ ์ธ์ฐ๊ธฐ)
๊ฐ์ฒด = ๋ฌธ์ฅ์ ์ฃผ์ด
๋ฉ์๋ = ๋ฌธ์ฅ์ ๋์ฌ
ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์) = ๋ฌธ์ฅ์ ๋ชฉ์ ์ด/๋ณด์ด
๋๋์ผ๋ก ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด..
input.getFirstValue(); -> input์, ์ฒซ ๋ฒ์งธ ๊ฐ์ ๊ฐ์ ธ์ ์ค.
calculator.calculate(result,num,op) -> calculator์ผ, (result, num, op)๋ฅผ ๊ฐ์ง๊ณ calculateํด ์ค.
โ ์ถ๋ ฅํ๋ ๋ถ๋ถ var output = document.getElementById("output")
-> ๊ฐ์ฒด output์ ์์ฑ output.out์ผ๋ก ์ ํ.
๋์ output.print ๋ถ๋ถ์ this.out.innerHTML ๋ก ํ์ฉ.
์ด๋ ๊ฒ ํ๋ฉด main()์ ๋ง์ง๋ง ๋ถ๋ถ์ output.print(result);๋ก ๊ฐ๋จํ ์ฝ๋ฉ ๊ฐ๋ฅ.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๋ฌธ์์ด ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ</h1>
<div id="output">์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๋๋ค.</div>
<script>
var input = {count : 2};// var n = 2; -> ์๋ฏธ๋ฅผ ์ด๋ ค count๋ก ์ด๋ฆ์ ๋ฐ๊พผ ํ, input์ ์์ฑ์ผ๋ก ๋ฃ๋๋ค.
input.getFirstValue = function() {
var n = Number(prompt("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
return n;
};
input.getSecondValue = function() {// input์ด๋ผ๋ ๊ฐ์ฒด์ ์์ฑ count์ด๋ฏ๋ก, this.count๋ก ์ฌ์ฉ.
var n2 = Number(prompt(this.count + "๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์."));
this.count++;
return n2;
};
input.getOperator = function() {
while (true) {
var op = prompt("์ฐ์ฐ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.");
if (op === "+" || op === "-" || op === "*" || op === "/"
|| op === "q") {
break;
} else { // ์ฌ์น์ฐ์ฐ ์ธ์ ๊ฐ์ ๋ฃ์ผ๋ฉด..
alert("์ฌ๋ฐ๋ฅธ ์ฐ์ฐ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.")
}
}
return op;
};
var calculator = {};
calculator.calculate = function(first, second, op) {
var ret;
switch (op) {
case "+":
ret = first + second;
break;
case "-":
ret = first - second;
break;
case "*":
ret = first * second;
break;
case "/":
ret = first / second;
break;
}
return ret;
};
var output = {};
output.out = document.getElementById("output"); // div๊ฐ์ฒด
output.print = function(value) {
this.out.innerHTML = "์ต์ข
๊ฒฐ๊ณผ๊ฐ์ " + value + "์
๋๋ค.";
};
function main() {
var result = input.getFirstValue();
while(true) {
var op = input.getOperator();
if (op === "q") {
break;
}
var num = input.getSecondValue();
result = calculator.calculate(result,num,op);
}
output.print(result);
}
main();
</script>
</body>
</html>