🏫 Open API_JAVA

[12일차] for 응용 / function 응용 / Debugger

Dorothy_YANG 2022. 8. 5. 11:25
728x90

20220804(목)

  • 목차
    - 시험 리뷰
    - for 응용
    - function 응용
    - Debugger

< for 와 res.push 사용해서 배열 합계, 평균 구하기 >

 

1. for 사용해서 국어 성적 합계 및 평균 구하기

// [국어, 영어, 수학] * 6 구조로 배열을 만든다.
        const score = [[80, 90, 74],
                       [84, 94, 80],
                       [80, 90, 88],
                       [82, 86, 90],
                       [92, 80, 80],
                       [70, 80, 88]];
 
 // 국어 성적
        let kor_sum = 0;
        let kor_avg = 0;

        for (let i = 0; i < score.length; i++)
        {
            kor_sum = kor_sum + score[i][0]; // 영어, 수학은 score[i][1], score[i][2]로 구하면 된다.
        }

        kor_avg = kor_sum / score.length;

 

2. outStr 사용해서 list 출력하기

       let outStr = '';

        outStr += '<ul>';
        outStr += '<li> 국어 총점 : ' + kor_sum + '점, 평균 : ' + kor_avg.toFixed(2) + '점</li>';
        outStr += '<li> 영어 총점 : ' + eng_sum + '점, 평균 : ' + eng_avg.toFixed(2) + '점</li>';
        outStr += '<li> 수학 총점 : ' + mth_sum + '점, 평균 : ' + mth_avg.toFixed(2) + '점</li>';
        outStr += `</ul>`;

 

3. 학기별 성적 총합과 평균 구하기

.push : 뒤에 넣어버린다.

let res = [] // result 배열 넣을거야~ 알리기

// 학기별 성적
        let sum = 0;
        let avg = 0;
        let res = []; // result 배열

// 1학년 1학기 성적
        sum = score[0][0] + score[0][1] + score[0][2]; // 1학년 2학기 = score[1]의 [0, 1, 2], ...
        avg = sum / 3;
        res.push(sum);
        res.push(avg.toFixed(2));

 

4. outStr 사용해서 list 출력하기

        outStr += '<ul>';
        outStr += `<li> 1학년 1학기 총점 : ${res[0]} 점, 평균 : ${res[1]} 점</li>`;
        outStr += `<li> 1학년 2학기 총점 : ${res[2]} 점, 평균 : ${res[3]} 점</li>`;
        outStr += `<li> 2학년 1학기 총점 : ${res[4]} 점, 평균 : ${res[5]} 점</li>`;
        outStr += `<li> 2학년 2학기 총점 : ${res[6]} 점, 평균 : ${res[7]} 점</li>`;
        outStr += `<li> 3학년 1학기 총점 : ${res[8]} 점, 평균 : ${res[9]} 점</li>`;
        outStr += `<li> 3학년 2학기 총점 : ${res[10]} 점, 평균 : ${res[11]} 점</li>`;
        outStr += `</ul>`;

        document.body.innerHTML += outStr;

 


< function 으로 배열 합계와 평균 구하기 >

// [심화] 함수로 더 해볼까? 배열을 집어넣어서 합계와 평균을 던져줘!
 
        const calcScore = function(ar)
        {
            let total = 0;
            let resAr =[]; // 합, 평균이 들어갈 배열

            for (let i = 0; i < ar.length; i++)
            {
                total = total + ar[i];
            }
           
            resAr[0] = total;
            resAr[1] = total / ar.length;
           
            return resAr;
            
        }


        // --------------------------------------------------------------------------
// [국어, 영어, 수학] * 6 구조로 배열을 만든다.
        const score = [[80, 90, 74],
                       [84, 94, 80],
                       [80, 90, 88],
                       [82, 86, 90],
                       [92, 80, 80],
                       [70, 80, 88]];

        let aa = calcScore(score[0]);
        console.log(aa[0]);
        console.log(aa[1]);

 


< JS 메모리 맵 _ Heap Area>

[data]
(1) 기본 데이터 타입이 아닌 data
(2) 실행될 때가 되어야 알 수 있는 data
[운영방식]
(1) 변수명으로 접근하는 것이 아닌 레퍼런스 값을 통해 접근한다.
      레퍼런스 값 : 생성 여부도 불투명하다. 큰 데이터 값은 관리할 수 있겠지만 이중관리 힘들어~
(2) 레퍼런스 값을 스택이나 Global 영역의 변수에 저장하여 간접적으로 접근하는 것

 

http://www.tcpschool.com/c/c_memory_structure

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com


< 디버거 debugger >

  • 의미
    V8엔진에게서 제어권을 내가 뺏어오는 것!
    제어권을 Debugger로 이관
  • 특징
    버그를 잡는 프로그램
    CPU나 V8엔진과 직접 통신한다.
  • 사용 이유
    1. 프로그램의 상태 파악
    2. 문제점을 개선하기 위해서 사용

  • break-point
     - 제어수행 
                      step-over  : 제어권을 나에게 주니 누를 때 마다 f10 하나씩 돌아간다.
                      resume(다음 브레이크 포인터까지 쭉 돌린다.)

       - 상태보기
                       break-point : f10 눌러서 브레이크 포인트를 걸어! v9엔진이 제어권을 나에게 준다.

                       watch : 감시 표현식에 궁금한 것들(식 입력 가능) 입력해서 확인 가능

                       call stack : 어디서 뭘 호출하고 있는지 화살표로 표시됨


[연습문제] 띠 판단 함수 만들기

// 사용자에게 태어난 년도를 입력받는다.
// 무슨 띠인지 판단하는 함수 작성
// 귀하는 xx띠 입니다. 출력 alert 코드 작성

        const getYearSymbol = function(birth)
        {
            let getYearSymbol = '';
            const val = birth % 12;

            switch(val)
            {
                case 0 : yearSymbol = '원숭이' ; break;
                case 1  : yearSymbol = '닭' ; break;
                case 2 : yearSymbol = '개' ; break;
                case 3 : yearSymbol = '돼지' ; break;
                case 4 : yearSymbol = '쥐' ; break;
                case 5 : yearSymbol = '소' ; break;
                case 6 : yearSymbol = '호랑이' ; break;
                case 7 : yearSymbol = '토끼' ; break;
                case 8 : yearSymbol = '용' ; break;
                case 9 : yearSymbol = '뱀' ; break;
                case 10 : yearSymbol = '말' ; break;
                case 11 : yearSymbol = '양' ; break;

                default : yearSymbol = '알수없음' ; break; // else와는 달라! 전혀 내가 생각할 수 없는 상황!
            }

            return yearSymbol;
           
        }
 
        const input = prompt('출생년도를 입력하세요', '1997');
        const birth = Number(input);

        const sym = getYearSymbol(birth);

        alert(`귀하의 띠는 ${sym}띠 입니다`);
728x90