댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
이 글은 독일우주운영센터(GSOC)의 과학자인 Oliver Montenbruck와 Thomas Pfleger가 공동 출판한 Astronomy with your Personal Computer를 의역 후, 작성된 것임을 알리며, 원저의 베이직 코드를 웹 환경에서 쉽게 실행해 볼 수 있도록 자바스크립트 코드로 변경하여 작성하였음을 밝힙니다. 자바스크립트 코드와 이 글의 내용은 글쓴이의 2차 저작물 이므로 배포나 내용의 임의 변경에 대해 글쓴이의 동의가 있어야 합니다. |
이번엔 마지막으로 지난 앞에 작성된 모듈 2가지를 조합하여 결과를 출력해 보겠습니다.
먼저 기본적인 흐름은 다음과 같습니다.
1. "숫자값 그리고 분과 초의 변환을 수행하시겠습니까?" 라는 질문에 Y / N 형태로 입력한다.
2. Y라면 "숫자형태의 각/시간 값을 입력하세요" 라는 질문을 던진다.
3. 2번 질문에 대한 답변으로 Y가 입력되면 질문옆에 표시된 예시와 같은 형태의 값을 입력한다.
4. 결과 값을 확인한다.
5. 이번에는 각/시간, 분, 초의 값을 입력하라는 질문에 대해 Y/N 형태로 답변하고, 각/시간 값을 입력한다.
6. 그리고 이것에 대한 결과값을 확인한다.
입력값과 결과값은 아래의 그림처럼 팝업창이 닫히면 웹 브라우저 화면에 표시하게 됩니다.
이제 이 프로그램에 대한 전체 코드에 대한 설명입니다.
/************************************************** /* 이 함수는 입력이 Y인지 N인지에 따라 E라는 변수에 1을 설정합니다. 이 변수값은 어떤 형태로 변환을 시도할 것인지를 결정하는 값입니다. */ YESNO = function(q)
//p 변수에 저장된 값이 소문자 또는 대문자 일수 있기 때문에 대문자로 변환하여 값을 비교한다. if ( (p.toUpperCase() == "Y") ) { //값이 Y면 변수 E는 1 아니면 0을 할당한다. else if ( (p.toUpperCase() == "N") ) { //Y나 N값이 아니면 적절한 문구를 표시하여 값 입력을 유도한다. else { Sgn = function (x) { /* 이 함수는 입력된 값의 형태를 인지하여 적절한 값으로 변환을 시도합니다. */ //전달된 값의 길이가 0이면 시간값이고 0이 아니면 각/시간, 분, 초의 형태로 입력된 값이다. //0이면 SW에 1을 할당하여 해당 조건을 실행하고, 0이 아니면 SW에 -1을 할당하여 해당 조건을 실행합니다. if (getX.length -1 == 0) { //SW 가 -1인 조건은 입력값의 형태가 12,3,4와 같은 각/시간, 분, 초의 형태이므로 값을 숫자값 형태로 변환을 //하게 됩니다. 하지만 입력된 3개의 값이 마이너스의 형태를 띌수도 있기 때문에 마이너스인지의 여부를 확인하여 //적절한 기호를 붙여 줍니다. if(SW == -1) { //분리함수에 의해 저장된 값이 0보다 작을 경우 음수 기호를 붙여준다. //배열에 저장된 값을 숫자로 변환하여 초, 분, 시 함수에 저장 //공식을 이용하여 X 숫자값으로 변환 //숫자값 형태가 입력되었다면 각/시간, 분, 초의 형태로 변환을 시도 합니다. XD = parseInt(XP); //시간 if(SN == -1) {
//시 또는 분 또는 초의 값이 음수라면 해당값 앞에 음수 기호를 붙여준다. //사용자가 입력하는 값을 각각의 함수에 전달하는 Start 함수 입니다. //숫자값을 입력하겠냐는 질문이고 값이 입력되면 변수 q(Question)에 저장된다. // YESNO 함수에 입력값을 전달하고 1 또는 0의 값을 반환 받는다.
//반환값이 1이라면 //이어서 시, 분, 초를 입력받아 MINSEC 함수에 전달
//YESNO 함수에서 전달된 값이 0이라면 다시 입력을 요구. //질문에 답한 값과 결과값을 문서의 본문에 표현하기 위한 값 |
조금 복잡하지만 첨부한 파일(Normal1.html)을 다운로드 받아서 실행해 보면 감이 좀 잡힐 것으로 생각됩니다.
여기까지 해서 천문학 프로그래밍에 필요한 가장 기본적인 함수를 작성해 보았습니다.
실행할 파일은 Noname1.html 이며, 클릭 후 스크립트 오류가 발생한다면 이것은 브라우저의 보안 기능이 작동하여 스크립트의 실행을 차단하기 때문입니다. 이 예제는 바이러스를 퍼트리거나 개인정보를 취득하기 위한 스크립트가 없습니다.
(스크립트 실행 경고창은 가끔 바보 스럽습니다.)
따라서 결과가 보이지 않는 분들은 도구 > 인터넷옵션 으로 이동 후 보안 탭에서 실행할 보안 수준을 보통으로 낮춘 후 실행하시면 됩니다.