라라리라

2023.08.19 / Step 10 [함수] - 코딩 31 일차 본문

코딩/2023 JavaScript Console

2023.08.19 / Step 10 [함수] - 코딩 31 일차

헤실 2023. 8. 19. 23:31

함수1_개념01_기본.html

 

<script>
    /*
        [개념] 함수의 기본 형태
            [1] 함수의 정의
                (1) function : 키워드
                (2) test()   : 이름
                (3) {}       : 실행영역
            [2] 함수 실행
                (1) test();  : 함수이름을 적는다.
            [3] 함수의 이점
                (1) 함수를 한번만들어 놓으면 다시 사용할때는 코드량이 줄어든다.
    */

    function test() {
        document.write("test 입니다.<br>");
    }

    // 위의 함수 정의는 설계에 해당하는 것으로 실행되는 것이 아니다.
    test();
    test();

</script>

 

 


함수1_개념02_매개변수와인자.html

 

<script>

    /*
        [개념] 함수의 매개변수와 인자    
            [1] 함수를 정의 할 때 매개변수를 설정할 수 있다.
            [2] 매개변수를 설정한 함수는 함수를 사용할 때 반드시 인자를 넣어줘야한다.
            [2] 매개 변수와 인자는 개수를 맞춰줘야한다.
    */

    function plus(x, y) {  // x와 y를 매개 변수라 한다.
        document.write(x + "," + y + "<br>");
                let rs = x + y;
                document.write("rs = " + rs + "<br>");
                document.write("<br>");
    }

    plus(10 , 3);   // 10과 3을 인자라고 한다.
    plus();         // NaN
    plus(10);       // NaN
    plus(4, 54);    // 58

</script>

 

 


함수1_개념03_계산기.html

 

<script>
   
    /*
        [개념] 함수 응용 계산기    
    */

    function plus(x , y) {  
        let c = x + y
        document.write(c + "<br>");
    }

    function minus(x , y) {  
        let c = x - y
        document.write(c + "<br>");
    }

    function multiply(x , y) {  
        let c = x * y
        document.write(c + "<br>");
    }

    function division(x , y) {  
        let c = x / y
        document.write(c.toFixed(2) + "<br>");
    }

    plus(10, 3);
    minus(10, 3);
    multiply(10, 3);
    division(10, 3);

</script>

 

 


함수1_개념04_짝수홀수.html

 

<script>
   
    /*
        [문제]
            1~100 사이의 숫자를 랜덤으로 저장하고
            그 수가 짝수인지 홀수인지 출력하는 함수를 만드시오.
            위 식을 10번 반복하시오.
        [예시]
            6 : 짝수
            98 : 짝수
            15 : 홀수
            11 : 홀수
            32 : 짝수
            2 : 짝수
            62 : 짝수
            8 : 짝수
            78 : 짝수
            63 : 홀수
    */

    function checkNum(num){
        document.write(num + " : ");
        if(num % 2 == 0){
            document.write("짝수<br>");
        }else{
            document.write("홀수<br>");
        }
    }
   
    for(let i=0; i<10; i++) {
        let ran = parseInt(Math.random() * 100) + 1;
        checkNum(ran);
    }

</script>

 

 


 

함수1_개념05_반복문.html

 

<script>
   
    /*
        [문제]
            1~10 사이의 숫자를 랜덤으로 저장하고,  
            1~ 랜덤 숫자까지의 합을 출력하는 함수를 만드시오.
        [정답]
            1부터 10까지의 합 : 55
    */

    function checkNum(num){
        let total = 0;
        for(let i=1; i<=num; i++){
            total += i;
        }
        document.write("1부터 " + num + "까지의 합 : " + total + "<br>");
    }
   
    let ran = parseInt(Math.random() * 10) + 1;
    checkNum(ran);
   
</script>

 

 


함수1_개념06_배열.html

 

<script>
   
    /*
        [문제]
            arr배열의 값들 중 50보다 큰 수만
            출력해주는 함수를 만드시오.
        [정답]
            98
            77        
    */

    function checkArr(arr){      
        for(let i=0; i<arr.length; i++){
            if(arr[i] > 50){
                document.write(arr[i] + "<br>");
            }
        }
    }

    let arr =[21, 45, 7, 98, 77];
    checkArr(arr);
   
</script>

 

 


함수1_개념07_omr.html

 

<script>
   
    /*
        [문제]
            omr배열은 정답이다.
            me배열에 랜덤숫자(1~4)를 5개 저장 후,
            omr과 비교하여 아래와 같이 출력하는 함수를 만드시오.
        [예시]
            omr = 1,4,3,2,1
            me = 1,2,3,3,2
            ox = o,x,o,x,x
    */

    function omrCheck(omr){
        let me = [];
        let ox = [];

        for(let i = 0; i < omr.length; i++){
            let ran = parseInt(Math.random() * 4) + 1;
            me[i] = ran;
            if(omr[i] == me[i]){
                ox[i] = "o";
            }else{
                ox[i] = "x";
            }
        }

        document.write("omr = " + omr + "<br>");
        document.write("me = " + me + "<br>");
        document.write("ox = " + ox);
       
    }

    let omr = [1, 4, 3, 2, 1];  
    omrCheck(omr);

</script>

 

 


함수1_문제01_누적.html

 

<script>
   
    /*
        [문제]
            1~10 사이의 숫자를 랜덤으로 2개 저장하고,
            작은 숫자부터 큰 숫자까지의 합을 출력하는 함수를 만드시오.
        [예시]
            5, 3 ==> 3 + 4 + 5
            2, 6 ==> 2 + 3 + 4 + 5 + 6
    */
   
    let r1 = Math.floor(Math.random() * 10) + 1;
    let r2 = Math.floor(Math.random() * 10) + 1;
   
    function sum (r1, r2){
        let total = 0;
        document.write(`${r1}, ${r2} ==> `);
        if(r2 < r1){
            let temp = r1;
            r1 = r2;
            r2 = temp;
        }
        for(let i = r1; i <= r2; i++){
            document.write(i + " ");
            if(i < r2) document.write(" + ");
            total += i;
        }
        document.write(" = " + total + "<br>");
    }
    sum(r1, r2);

   



</script>

 

 


함수1_문제02_짝수의개수.html

 

<script>
   
    /*
        [문제]
            arr배열 안의 값들을 체크하여
            짝수의 개수를 출력하는 함수를 만드시오.
        [정답]
            2
    */
    function check (arr){
        let count = 0;
        for(let i = 0; i < arr.length; i++){
            if(arr[i] % 2 == 0) count++;
        }
        document.write(count + "<br>");
    }

    let arr = [2, 45, 1, 12];
    check(arr);
   
</script>

 

 


함수1_문제03_복권당첨.html

 

<script>
   
    /*
        [문제]
            lotto배열이 당첨인지 꽝인지 체크하는 함수를 만드시오.
            단, 7이 연속으로 3개이면 당첨이다.
        [정답]
            당첨
    */

    function lottocheck (arr){
        let count = 0;
        let check = false;
        for(let i = 0; i < arr.length; i++){
            if(arr[i] == 7) count++
            else count = 0;
            if(count == 3){
                check = true;
                break;
            }
        }
        if(check) document.write("당첨!<br>");
        else document.write("꽝<br>");
    }

    let lotto = [1, 7, 7, 1, 7, 7, 7];  
    lottocheck(lotto);
</script>

 

 


함수1_문제04_일등.html

 

<script>
   
    /*
        [문제]
            아래 배열은 시험점수와 학생이름이다.
            일등의 학생이름을 출력해주는 함수를 만드시오.
        [정답]
            박민지
    */

    function checkfirst (arr1, arr2){
        let max = 0;
        for(let i = 0 ; i < arr2.length; i++){
        if(arr2[i] > max) max = arr2[i];
        }
        document.write(arr1[arr2.indexOf(max)]);
    }
   

    let name = ["이만수", "김철수", "박민지"];  
    let score = [54, 32, 92];  

    checkfirst(name, score);
   
</script>

 

 


함수1_문제05_전부짝수.html

 

<script>
    /*
        [문제]
            배열의 랜덤값이 모두 짝수면 true를 출력하고,
            하나라도 짝수가 아니면 false를 출력하는 함수를 만드시오.
            단, 0은 짝수이다.
        [정답]
            true
    */
    function check (arr){
        let info = true;
        for(let i = 0; i < arr.length; i++){
            if(arr[i] % 2 == 1){
                info = false;
                break;
            }
        }
        return info;
    }

    let arr = [10, 0, 2, 6];
    document.write(check(arr));

</script>

 

 


함수1_문제06_배열가위바위보.html

 

<script>

    /*
        [문제]
            철수와 민수는 가위바위보를 6회 하였다.
            가위(0) , 바위(1) , 보(2) 를 뜻한다.
            아래 배열은 각각 가위바위보를 낸 기록을 저장한것이다.
            철수와 민수는 계단 50번째 부터 게임을 시작하였다.
            철수와 민수는 게임을 모두 끝마치고 어느 위치에 있는지
            출력해주는 함수를 만드시오.
        [규칙]
            이기면 5칸 올라간다.
            비기면 1칸 올라간다.
            지면 3칸 내려간다.
        [정답]
            철수 위치 = 64
            민수 위치 = 48          
    */
    function Game (a, b, c, d){
    for(let i = 0 ; i < a.length; i++){
        if(a[i] == b[i]){
            c += 1;
            d += 1;
        }
        else if(a[i] == 0 && b[i] == 2){
            c += 5;
            d -= 3;
        }
        else if(a[i] == 1 && b[i] == 0){
            c += 5;
            d -= 3;
        }
        else if(a[i] == 2 && b[i] == 1){
            c += 5;
            d -= 3;
        }
        else {
            c -= 3;
            d += 5;
        }
    }
    document.write("철수위치 = " + c + "<br>민수위치 = " + d + "<br>");
    }

    let 철수 = [0, 1, 2, 2, 1, 0];
    let 민수 = [2, 1, 1, 2, 0, 1];

    let 철수위치 = 50;
    let 민수위치 = 50;

    Game(철수, 민수, 철수위치, 민수위치);

</script>

 

 


함수1_문제07_물건채우기.html

 

<script>

    /*
        [문제]
            철수는 편의점에서 아르바이트를 하고있다.
            장사가 잘되서 라면이 많이 팔렸다.
            진열장은 최대 10개를 채울수있다.
            재고는 4칸의 상자에 5개씩 담겨져있다.
            진열장을 앞에서부터 순차적으로 채워넣고
            결과를 출력해주는 함수를 만드시오.
        [정답]
            진열장 = 10,10,10,6,1
    */

    function count (x, y){
        for(let i = 0; i < x.length; i++){
            for(let j = 0; j < y.length; j++){
                if(x[i] < 10 && y[j] > 0){
                    while(true){
                        if(x[i] == 10) break;
                        if(y[j] == 0) break;
                        x[i] ++;
                        y[j] --;
                    }
                }
            }
        }
        document.write(`진열장 = [${x}]`)
    }

    let 진열장 = [4, 0, 9, 3, 1];
    let 재고 = [5, 5, 5, 5];

    count(진열장, 재고);

</script>

 

 


함수1_문제08_배열택시.html

 

<script>

    /*
        [문제]
            현재 택시는 5, 5 위치에 있다.
            dir 배열은 뱡향을 뜻하고 0, 1, 2, 3은
            북, 동, 남, 서를 뜻한다.
            speed 배열은 속도를 뜻한다.
            dir과 speed 배열은 택시가 매번 이동한 내용을 기록한것이다.
        [예시]
            처음에 dir이 0이니 북쪽을 뜻한다.
            speed는 4이므로, y가 4증가해  x : 5 , y : 9 가 된다.  
            두 번째는 dir이 2이니 남을 뜻하고, speed는 2이므로
            y가 2감소해  x : 5 , y : 7 이된다.
            6번 모두 이동한 후 택시의 위치를 출력하시오.
        [정답]
            y = 0, x = 8
    */
   
    function taxi (a, b, c, d){
        for(let i = 0; i < b.length; i++){
            if(b[i] == 0) d += a[i];
            else if(b[i] == 1) c += a[i];
            else if(b[i] == 2) d -= a[i];
            else if(b[i] == 3) c -= a[i];
        }
        document.write(`y = ${d}, x = ${c}`);
    }

    let speed = [4, 2, 1, 5, 4, 2];
    let dir = [0, 1, 3, 2, 2, 1];

    let x = 5;
    let y = 5;
   
    taxi(speed, dir, x, y);

</script>