웹개발 교육/JavaScript

[12일] JavaScript (6) - 요일 구하기, Date 객체, 함수

2022. 8. 10. 17:57
목차
  1. [11일] 성적 프로그램 풀이
  2. 요일 구하는 프로그램
  3. 띠 구하기
  4. 로또번호​
  5. Date 객체
  6. Date 객체 날짜 세팅
  7. 함수

[11일] 성적 프로그램 풀이

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>성적프로그램풀이.html</title>
    </head>  
    <body>
        <h3>성적 프로그램</h3>
        <div id="demo"></div>

        <script>
        //문) 5명의 학생을 대상으로 평균, 과락, 평균10점당 * 한개씩, 장학생을 구한후
        //    결과값을 표작성해서 id=demo에 출력하시오
        /*
            출력결과
            --------------------------------------------------------
            이름   국어 영어 수학 평균 등수   결과
            --------------------------------------------------------
            라일락 100  100  100  100  1    합격   ********** 장학생
            진달래  20   50   30   33  5    불합격 ***
            개나리  90   95   90   91  2    합격   *********
            무궁화  70   80   60   70  4    합격   *******
            홍길동  35  100  100   78  3    재시험 *******
            --------------------------------------------------------
        */
            let uname= ["라일락","진달래","개나리","무궁화","홍길동"];
            let kor  = [100, 50, 95, 80, 60];
            let eng  = [100, 55, 95, 85, 40];
            let mat  = [100, 60, 35, 90, 30];
            let size = uname.length;   //5

            //1) 평균 구하기
            let aver=[0, 0, 0, 0, 0];
            for(let i=0; i<size; i++){
                aver[i]=parseInt((kor[i]+eng[i]+mat[i])/3);
            } //for end

            //2) 등수 구하기(평균을 기준으로)
            let rank=[1, 1, 1, 1, 1];
            for (let a=0; a<size; a=a+1){
                for (let b=0; b<size; b=b+1){
                    if (aver[a]<aver[b]){
                        rank[a]=rank[a]+1;
                    } //if end
                } //for end
            } //for end

            //3) 출력
            let result="";   //결과값
            result += "";
            result += "<table border='1'>";
            result += "<tr>";
            result += "     <th>이름</th>";
            result += "     <th>국어</th>";
            result += "     <th>영어</th>";
            result += "     <th>수학</th>";
            result += "     <th>평균</th>";
            result += "     <th>등수</th>";
            result += "     <th>결과</th>";
            result += "</tr>";

            //4) 5명의 성적을 출력하기
            for(let i=0; i<size; i++){
                result += "<tr>";
                result += "     <td>" + uname[i] + "</td>";
                result += "     <td>" + kor[i] + "</td>";
                result += "     <td>" + eng[i] + "</td>";
                result += "     <td>" + mat[i] + "</td>";
                result += "     <td>" + aver[i] + "</td>";
                result += "     <td>" + rank[i] + "</td>";
                result += "     <td>";
                    //5) 과락(합격, 재시험, 불합격)
                    if(aver[i]>=70){
                        if(kor[i]<40 || eng[i]<40 || mat[i]<40){
                            result += "재시험";
                        }else{
                            result += "합 격";
                        } //if end
                    }else{
                        result += "불합격";
                    } //if end

                    //6) 평균 10점당 * 한개씩
                    for(let star=1; star<=parseInt(aver[i]/10); star++){
                        result+="*";
                    } //for end

                    //7) 평균 95점 이상이면 장학생
                    if(aver[i]>=95){
                        result+= "<span style='color:red; font-weight:bold'>장학생</span>";
                    } //if end
                result += "     </td>";
                result += "</tr>";
            } //for end
            result += "</table>";

            document.getElementById("demo").innerHTML=result;
        </script>
    </body>
</html>

 

요일 구하는 프로그램

<script>
    let cYear=2022, cMonth=8, cDate=10;
    /*
        서기 1년 1월 1일 ~ 서기 2022년 8월 10일 => 총날수
        총날수 %7 => 0일 1월 2화 3수 4목 5금 6토
        1)단계 -> 서기 1년 ~ 서기 2021년
            평년 += 365
            윤년 += 366
        
        2)단계 1월 ~ 7월
        1 3 5 7 8 10 12 += 31
        4 6 9 11        += 30
        2               += 29 윤년
        2               += 28 평년
        3)단계
        += 10
    */
    
    let hap=0;
    
    //1)단계
    for(let y=1; y<cYear; y++){
        if(y%4==0 && y%100!=0 || y%400==0){
            hap=hap+366;
        }else{
            hap=hap+365;
        } //if end
    } //for end
    
    //2)단계
    let mon=[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];   //1~7월을 구해야 하니 인덱스를 맞추기 위해 배열 맨 앞에 0 추가
    if(cYear%4==0 && cYear%100!=0 || cYear%400==0){
        mon[2]=29;
    } //if end
    
    for(let m=1; m<cMonth; m++){
        hap=hap+mon[m];
    } //for end
    
    //3)단계
    hap=hap+cDate;
    document.write(cYear+"년" + cMonth +"월" + cDate + "일");
    document.write("<hr>");
    document.write("총날수 : " + hap);
    document.write("<hr>");
    
    switch(hap%7){
        case 0 : document.write("일요일"); break;
        case 1 : document.write("월요일"); break;
        case 2 : document.write("화요일"); break;
        case 3 : document.write("수요일"); break;
        case 4 : document.write("목요일"); break;
        case 5 : document.write("금요일"); break;
        case 6 : document.write("토요일"); break;
    } //switch end
</script>

 

 

띠 구하기

// 문) 년도 cYear값의 띠를 출력하시오(12간지)
let animal = ["원숭이", "닭", "개", "돼지", "쥐", "소", "호랑이", "토끼", "용", "뱀", "말", "양"];
document.write("띠 : " + animal[cYear%12]);

 

 

로또번호​

//문) 로또번호 1~45사이의 수를 서로 겹치지 않게 6개 발생시킨후,
//    오름차순으로 정렬해서 id=demo에 출력하시오
/*
    document.write(parseInt(Math.random()*45)+1);
    document.write(parseInt(Math.random()*45)+1);
    document.write(parseInt(Math.random()*45)+1);
    document.write(parseInt(Math.random()*45)+1);
    document.write(parseInt(Math.random()*45)+1);
    document.write(parseInt(Math.random()*45)+1);
*/

let lotto=[]; //로또번호 저장
for(let i=0; i<6; i++){
    lotto[i]=parseInt(Math.random()*45)+1;
    for(let j=0; j<i; j++){
        if(lotto[i]==lotto[j]){ //로또번호가 중복되었는지?
            i--;
            break;
        }//if end
    }//for end
}//for end
lotto.sort(function(a, b){return a - b}); //오름차순 정렬
document.getElementById("demo").innerHTML = lotto;

/*
    i=0  lotto[0]=4
         j=0  0<0
    i=1  lotto[1]=9
         j=0  0<1    if(lotto[1]==lotto[0])  9==4
    i=2  lotto[2]=3
         j=0  0<2    if(lotto[2]==lotto[0])  3==4
         j=1  1<2    if(lotto[2]==lotto[1])  3==9
    i=3  lotto[3]=9
         j=0  0<3    if(lotto[3]==lotto[0])  9==4
         j=1  1<3    if(lotto[3]==lotto[1])  9==9  i=3-1  break
*/

 

Date 객체

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>03_Date객체.html</title>
    </head>  
    <body>

        <h3>Date객체</h3>
        현재날짜 <div id="clock"></div>

        <script>
            // 참조 https://www.w3schools.com/js/js_dates.asp
            // Date 날짜 관련 내장 객체

            const d = new Date(); //시스템의 현재 날짜 정보 가져오기
            /*
            document.write(d.getFullYear());
            document.write("<br>");
            document.write(d.getMonth());
            document.write("<br>");
            document.write(d.getMonth()+1);
            document.write("<br>");
            document.write(d.getDate());
            document.write("<hr>");

            document.write(d.getHours());
            document.write("<br>");
            document.write(d.getMinutes());
            document.write("<br>");
            document.write(d.getSeconds());
            document.write("<hr>");

            const days = ["일", "월", "화", "수", "목", "금", "토"];
            document.write(days[d.getDay()]);
            document.write("<hr>");
            */

            //문) 날짜변수 d값을 이용해서 날짜 정보를 아래와 같이 구성해서 id=clock에 출력하시오
            //    2022.08.10 (수)  PM 3:05:42
            let  today="";
            const days = ["일", "월", "화", "수", "목", "금", "토"];

            today += d.getFullYear() + "."; //2022.
            today += ("0"+(d.getMonth()+1)).slice(-2) + "."; //08
            
            // if(d.getMonth()<9){
            //     today += "0" + (d.getMonth()+1) + ".";
            // } else {
            //     today += d.getMonth() + ".";
            // }

            // if(d.getMonth()+1<10){
            //     today += "0";
            // } //if end
            // today += d.getMonth()+1 + ".";

            today += ("0" + d.getDate()).slice(-2) //10

            // if (d.getDate()<10) {
            //     today += "0" + d.getDate();
            // } else {
            //     today += d.getDate();
            // }

            // if(d.getDate()<10){
            //     today += "0";
            // } //if end
            // today += d.getDate();

            today += " (" + days[d.getDay()] + ")"     // (수)

            // switch(d.getDay()) {
            //     case 0 : today+=" (일) "; break;
            //     case 1 : today+=" (월) "; break;
            //     case 2 : today+=" (화) "; break;
            //     case 3 : today+=" (수) "; break;
            //     case 4 : today+=" (목) "; break;
            //     case 5 : today+=" (금) "; break;
            //     case 6 : today+=" (토) "; break;
            // }

            // if (d.getHours()<12) {
            //     today += " AM " + d.getHours() + ":";
            // } else {
            //     today += " PM " + (d.getHours()-12) + ":"  
            // } 이렇게 하면 안될듯  12시 xx분인 경우 else로 가게 되는데 pm인건 맞지만 12-12가 되어 0시로 표시된다.

            if(d.getHours()<12){
                today += " AM ";
            }else{
                today += " PM ";
            }//if end

            if(d.getHours()<13){
                today += d.getHours() + ":";
            }else{
                today +=d.getHours()-12 + ":";
            }//if end
            
            // if(d.getMinutes()<10) {
            //     today += "0" + d.getMinutes() + ":";
            // } else {
            //     today += d.getMinutes() + ":";
            // }

            today += ("0" + d.getMinutes()).slice(-2) + ":";
            
            // if(d.getSeconds()<10) {
            //     today += "0" + d.getSeconds();
            // } else {
            //     today += d.getSeconds();
            // }
            
            today += ("0" + d.getSeconds()).slice(-2)

            document.getElementById("clock").innerText=today;
        </script>
        
    </body>
</html>

 

 

Date 객체 날짜 세팅

<script>

    // 참조 https://www.w3schools.com/js/js_date_methods_set.asp
    
    const someday = new Date();
    someday.setFullYear(1989, 5, 8); //1989년 6월 8일
    document.write(someday.getFullYear());
    document.write("<br>");
    document.write(someday.getMonth());
    document.write("<br>");
    document.write(someday.getDate());
    document.write("<br>");
    
    const days = ["일", "월", "화", "수", "목", "금", "토"];
    document.write(days[someday.getDay()]);
    document.write("<hr>");
    const d = new Date();
    d.setDate(someday.getDate()+10); //someday값에서 10일 더하기 (1989년 6월 18일)
    document.write(d.getDate());     //18
</script>

 

함수

  • fuction, method
  • 일정한 기능을 가지고 있다
  • 함수 작정(정의), 함수 호출
  • 형식 : function 함수명
  • 함수는 작성(정의)하고, 그 함수를 호출함으로써 실행한다
  • 예) document.write() : () 값을 웹브라우저 본문 영역(<body>)에 출력하는 함수

함수 작성시 고려사항

  • 매개변수(parameter)가 있는지?
  • 리턴 값(return)이 있는지?

 

function test1() {
    document.write("KOREA");
} //test1() end

function test2() {
    document.write("SEOUL");
} //test2() end

function test3(a){  //a는 매개변수(parameter)
                    //매개변수는 자료형이 없다
                    //let, var, const 사용 불가
    document.write(a);
}//test3 end
//////////////////////////////////////////////

//1. 전달값이 없는 경우 (argument value)
test1();  //함수 호출
test1();
test2();
test1();

//2. 전달값이 있는 경우
test3(10);
test3(20);
test3(30);

 

 

function test4(a, b, c){
    document.write(a+b+c);
} //test4 end
function test5(a, b){
    for (i=0; i<b; i++) {
        document.write(a);
    }
} //test5 end

//전달값은 1개 이상 가능하다
test4(50, 60, 70);
test4(-3, -2, -1);

//문) #기호를 100번 출력하기
test5("#", 100);

'웹개발 교육 > JavaScript' 카테고리의 다른 글

[14일] JavaScript (8) - 이벤트, String 함수  (0) 2022.08.12
[13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기  (0) 2022.08.11
[11일] JavaScript (5) - 배열, 연습문제  (0) 2022.08.09
[10일] JavaScript (4) - 이중 반복문, for 연습  (0) 2022.08.08
[9일] JavaScript (3) - switch ~ case문, for문, break, continue, while, do ~ while  (0) 2022.08.05
  1. [11일] 성적 프로그램 풀이
  2. 요일 구하는 프로그램
  3. 띠 구하기
  4. 로또번호​
  5. Date 객체
  6. Date 객체 날짜 세팅
  7. 함수
'웹개발 교육/JavaScript' 카테고리의 다른 글
  • [14일] JavaScript (8) - 이벤트, String 함수
  • [13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기
  • [11일] JavaScript (5) - 배열, 연습문제
  • [10일] JavaScript (4) - 이중 반복문, for 연습
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 노랭이
  • GIT
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • 버전 관리
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • git bash
  • SQLD
  • 브랜치
  • merge commit
  • sqld 자격증
  • base
  • 생성자
  • branch
  • sqld 합격
  • this

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[12일] JavaScript (6) - 요일 구하기, Date 객체, 함수
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.