주어진 사각형의 대각선 길이를 구하는 프로그램을 작성하려고 합니다.
수학시간에 배웠었던 피타고라스 정리를 적용하여 프로그램 구조를 짤 것입니다.
pythagorean theorem
: c^2 = a^2 + b^2 <=> c = sqrt(a^2 + b^2)
사각형을 대각선으로 자르게 되면 두개의 일치하는 삼각형이 만들어집니다. 그래서 사각형의 대각선은 바로 피타고라스 정리를 이용한 가장 긴 변이라는 것을 알수 있죠.
Program psuedoCode :
사각형의 두 변의 길이를 각 a 와 b 라고 부른다.
위의 공식처럼 대각선길이는 각 변의 제곱의 합에 루트를 씌운 것이기에 그것을 출력해낸다.
이번 프로그램에서는 생산자로 불리는 컨스트럭터 (constructor) 함수를 이용할 것이다.
JavaScript Functional Code
function Pythagorean(a, b) { this.a = a; this.b = b; this.length = () => Math.sqrt((this.a)*(this.a) + (this.b)*(this.b)); } // now test let rectangle1 = new Pythagorean(1,2) // 변의 길이가 각 1과 2인 사각형 let rectangle2 = new Pythagorean(1,1) // 변의 길이가 1일 정사각형 console.log(rectangle1.length().toFixed(2)) // 대각선 길이를 2.24 로 반올림해서 출력 console.log(reactnalge2.length().toFixed(2)) // 대각선 길이를 1.41 로 반올림해서 출력
이제는 이 함수를 이용하여서 무작위로 사각형을 만들고 그것의 따른 대각선 길이를 구하여서 오브젝트로 데이터를 저장시키는 프로그램을 만들어보겠습니다.
Application Code
function pythagorean(a, b) { this.a = a; this.b = b; this.length = () => Math.sqrt(this.a * this.a + this.b * this.b); } function reactangle(a, b) { return { width: a, height: b }; } let randomWidth = [1, 5, 8, 12]; let randomHeight = [2, 5, 11, 12]; let w_index = Math.floor(Math.random()* randomWidth.length); let h_index = Math.floor(Math.random()* randomHeight.length); let REC = reactangle(randomWidth[w_index], randomHeight[h_index]); console.log(REC); const REC1 = new pythagorean(REC.width, REC.height); console.log(`A rectangle has width : ${REC.width} and height : ${REC.height}.\n The diagonal length is ${REC1.length().toFixed(2)}`);
written by @han-choi
date written 5/20/2021
Personal website
Github
Linkedin