웹_프론트_백엔드/프론트엔드

2020.08.29

shine94 2020. 8. 29. 22:17

1. 문제
   아래 출력 내용과 같이 학생 성적 프로그램을 작성해보자.
   (단, 입력은 prompt 함수를 사용)

   [입력]
   이름을 입력하세요. 김사과
   국어점수를 입력하세요. 100
   영어점수를 입력하세요. 90
   수학점수를 입력하세요. 80
   
   [출력]
   김사과님의 성적표
   국어점수 : 100점
   영어점수 : 90점
   수학점수 : 80점
   총점 : 270점
   평균 : 90점

 

** 1_학생성적프로그램.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>학생 성적 프로그램</title>
</head>
<body>
    <h2>학생 성적 프로그램</h2>
    <script>
        "use strict";
        const name = prompt('이름을 입력하세요.');
        const kor = Number(prompt('국어점수를 입력하세요.'));
        const eng = Number(prompt('영어점수를 입력하세요.'));
        const math = Number(prompt('수학점수를 입력하세요.'));
        const total = kor + eng + math;
        const avg = total / 3;

        document.write(`${name}님 성적표<br>`);
        //document.write(name + '님 성적표<br>');
        document.write(`국어점수 : ${kor}점<br>`);
        document.write(`영어점수 : ${eng}점<br>`);
        document.write(`수학점수 : ${math}점<br>`);
        document.write(`총점 : ${total}점<br>`);
        document.write(`평균 : ${avg}점<br>`);
    </script>
</body>
</html>

 

** 출력결과



2. 제어문
 : 프로그램의 순차적인 흐름을 제어해야 할 때 사용하는 실행문을 의미

1) 조건문 : 프로그램 내에서 주어진 조건문의 결과에 따라 별도의 명령을 수행하도록 제어하는 실행문

   (1) if문 : 범위에 대한 조건을 줄 때 유리

      ① if문 : 조건식의 결과가 참(true)이면 주어진 실행문을 실행하고, 거짓(false)이면 아무것도 실행하지 않는 문장
      
      if(조건식) {
          조건식의 결과가 참일 때 실행할 문장;
          ...
      }

** 2_if문(1).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>if문 - 1</title>
</head>
<body>
    <h2>if문 - 1</h2>
    <script>
        'use strict';
        const age = Number(prompt('나이를 입력하세요.'));
        //if(age >= 19) {
        //    console.log('성인입니다.');
        //}
        if(age >= 19)
            console.log('성인입니다.');             // if문 영향
            console.log('프로그램을 종료합니다.');   // if 영향 X
    </script>
</body>
</html>

 

** 실행결과

      ② if ~ else 문 : if문과 같이 사용할 수 있는 else문은 if문의 조건식의 결과가 거짓(false)일 때 실행문을 실행
      
      if(조건식) {
          조건식의 결과가 참일 때 실행할 문장;
      } else {
          조건식의 결과가 거짓일 때 실행할 문장;
      }

 

** 3_if문(2).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>if문 - 2</title>
</head>
<body>
    <h2>if문 - 2</h2>
    <script>
        "use strict";
        const age = Number(prompt('나이를 입력하세요.'));
        if(age >= 19) {
            console.log('성인입니다.');
        } else {
            console.log('미성년입니다.');
        }
    </script>
</body>
</html>

 

** 실행결과

      ③ if ~ else if ~ else 문 : else if문은 if문처럼 조건식을 설정할 수 있으므로 중첩된 if문을 좀 더 간결하게 표현 가능,

                                      하나의 조건문 안에서 if문과 else문은 단 한번만 사용할 수 있다,

                                      하지만 else if문은 여러번 사용하여 다양한 조건을 설정 가능(단, else문은 생략 가능)

      if(조건식1) {
          조건식1의 결과가 참일 때 실행할 문장;
      } else if(조건식2) {
          조건식2의 결과가 참일 때 실행할 문장;
      } else if(조건식3) {
          조건식3의 결과가 참일 때 실행할 문장;
      }
      ...
      else {
          모든 조건식의 결과가 거짓일 때 실행할 문장;
      }

 

** 4_if문(3).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>if문 - 3</title>
</head>
<body>
    <h2>if문 - 3</h2>
    <script>
        'use strict';
        const age = Number(prompt('나이를 입력하세요.'));
        if(age >= 19) {
            console.log('성인입니다.');
        } else if(age >= 14) {
            console.log('청소년입니다.');
        } else if(age >= 7) {
            console.log('어린이입니다.');
        } else {
            console.log('유아입니다.');
        }
    </script>
</body>
</html>

 

** 실행결과

[문제] 아래 출력 내용과 같이 학생성적 프로그램을 작성해보자.
         조건 1. 입력은 prompt 함수를 사용
         조건 2. 학점은 평균을 기준으로

                   90점 이상이면 A학점, 80점 이상이면 B학점, 70점 이상이면 C학점, 60점 이상이면 D학점,

                   나머지는 F학점으로 함

         
         [입력]
         이름을 입력하세요. 김사과
         국어점수를 입력하세요. 100
         영어점수를 입력하세요. 90
         수학점수를 입력하세요. 80
         
         [출력]
         김사과님의 성적표
         국어점수 : 100점
         영어점수 : 90점
         수학점수 : 80점
         총점 : 270점
         평균 : 90점
         학점 : A학점

 

[내 코드]
** 5_학생성적프로그램2_me.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>학생성적 프로그램2</title>
</head>
<body>
    <h2>학생성적 프로그램2</h2>
    <script>
        "use strict";

        // 입력
        let name = prompt('이름을 입력하세요.');
        let kor = Number(prompt('국어점수를 입력하세요.'));
        let eng = Number(prompt('영어점수를 입력하세요.'));
        let math = Number(prompt('수학점수를 입력하세요.'));

        let total = kor + eng + math;
        let avg = parseFloat(total) / 3;

        // 출력
        document.write(`${name}님의 성적<br>`);
        document.write(`국어점수 : ${kor}<br>`);
        document.write(`영어점수 : ${eng}<br>`);
        document.write(`수학점수 : ${math}<br>`);

        document.write(`총점 : ${total}<br>`);
        document.write(`평균 : ${avg.toFixed(2)}<br>`);

        if(avg >= 90) {
            document.write("학점 : A학점");
        } else if(avg >= 80) {
            document.write("학점 : B학점");
        } else if(avg >= 70) {
            document.write("학점 : C학점");
        } else if(avg >= 60) {
            document.write("학점 : D학점");
        } else {
            document.write("학점 : F학점");
        }

    </script>
</body>
</html>

 

[강사님 코드]
** 5_학생성적프로그램2_teacher.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>학생성적 프로그램2</title>
</head>
<body>
    <h2>학생성적 프로그램2</h2>
    <script>
        "use strict";
        const name = prompt("이름을 입력하세요.");
        const kor = Number(prompt("국어점수를 입력하세요."));
        const eng = Number(prompt("영어점수를 입력하세요."));
        const math = Number(prompt("수학점수를 입력하세요."));
        const total = kor + eng + math;
        const avg = total / 3;
        let hak = "";

        if(avg >= 90){
            hak = "A학점";
        }else if(avg >= 80){
            hak = "B학점";
        }else if(avg >= 70){
            hak = "C학점";
        }else if(avg >= 60){
            hak = "D학점";
        }else{
            hak = "F학점";
        }

        document.write(`${name}님 성적표<br>`);
        // document.write(name + '님 성적표<br>');
        document.write(`국어점수 : ${kor}점<br>`);
        document.write(`영어점수 : ${eng}점<br>`);
        document.write(`수학점수 : ${math}점<br>`);
        document.write(`총점 : ${total}점<br>`);
        document.write(`평균 : ${avg}점<br>`);
        document.write(`학점 : ${hak}`);
    </script>
</body>
</html>

 

   (2) switch문 : 특정 값과 일치하는 것을 찾을 때 유리,

                     if ~ else문과 마찬가지로 주어진 조건 값에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문,

                     if ~ else문보다 가독성 및 속도 측면에서 더 유리하다.
   
   switch(비교값) {
       case 값1:
           비교값이 값1과 일치할 경우 실행할 문장;
           break;
       case 값2:
           비교값이 값2와 일치할 경우 실행할 문장;
           break;
       ...
       default:
           비교값이 모두 일치하지 않을 경우 실행할 문장;
   }

 

** 6_switch문.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>switch문</title>
</head>
<body>
    <h2>switch문</h2>
    <script>
        "use strict";
        let input = prompt('아동, 청소년 성인 중 선택하세요.');
        switch(input) {
            case "아동":
                input += " : 입장료 무료";
                // input = input + " : 입장료 무료";
                break;
            case "청소년":
                input += " : 입장료 2000원";
                // input = input + " : 입장료 2000원";
                break;
            case "성인":
                input += " : 입장료 5000원";
                // input = input + " : 입장료 5000원";
                break;
            default:
                alert('입력 값을 확인하세요.');
                input = '입력값을 확인하세요'
        }
        console.log(input);
    </script>
</body>
</html>

 

** 실행결과

[문제] 기존에 만든 학생 성적 프로그램을 switch문을 이용하여 다시 작성해보자.

** 7_학생성적프로그램3.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>학생성적 프로그램3</title>
</head>
<body>
    <h2>학생성적 프로그램3</h2>
    <script>
        "use stric";
        const name = prompt("이름을 입력하세요.");
        const kor = Number(prompt("국어점수를 입력하세요."));
        const eng = Number(prompt("영어점수를 입력하세요."));
        const math = Number(prompt("수학점수를 입력하세요."));
        const total = kor + eng + math;
        const avg = total / 3;
        let hak = "";
        
        switch(parseInt(avg/10)){
            case 10:
            case 9:
                hak = "A학점";
                break;
            case 8:
                hak = "B학점";
                break;
            case 7:
                hak = "C학점";
                break;
            case 6:
                hak = "D학점";
                break;
            default:
                hak = "F학점";
        }

        document.write(`${name}님 성적표<br>`);
        // document.write(name + '님 성적표<br>');
        document.write(`국어점수 : ${kor}점<br>`);
        document.write(`영어점수 : ${eng}점<br>`);
        document.write(`수학점수 : ${math}점<br>`);
        document.write(`총점 : ${total}점<br>`);
        document.write(`평균 : ${avg}점<br>`);
        document.write(`학점 : ${hak}<br>`);
    </script>
</body>
</html>

 

2) 반복문
 : 프로그램 내에서 같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 실행문

   (1) while문

      ① while문 : 특정 조건식을 만족하는 동안 계속해서 주어진 실행문을 반복
      
      while(조건식) {
          조건식의 결과가 참인 동안 반복될 실행문;
      }

 

** 8_while문(1).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while문 - 1</title>
</head>
<body>
    <h2>while문 - 1</h2>
    <script>
        'use strict';
        let i = 1;
        while(i <= 5) {
            console.log('안녕하세요. JavaScript!');
            document.write('안녕하세요. JavaScript!<br>');
            i++;
        }
    </script>
</body>
</html>

 

** 실행결과

** 9_while문(2).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while문 - 2</title>
</head>
<body>
    <h2>while문 - 2</h2>
    <script>
        'use strict';

        let i = 1, sum = 0;
        while(i <= 10) {
            sum += i;
            /*
                sum = sum + i;
                1번째 : sum = 0 + 1; -> sum = 1;
                2번째 : sum = 1 + 2; -> sum = 3;
                3번째 : sum = 3 + 3; -> sum = 6;
                4번째 : sum = 6 + 4; -> sum = 10;
                5번째 : sum = 10 + 5; -> sum = 15;
                6번째 : sum = 15 + 6; -> sum = 21;
                7번째 : sum = 21 + 7; -> sum = 28;
                8번째 : sum = 28 + 8; -> sum = 36;
                9번째 : sum = 36 + 9; -> sum = 45;
                10번째 : sum = 45 + 10; -> sum = 55;
            */
            i++;
        }
        console.log(`1부터 10까지의 총합 : ${sum}`);
    </script>
</body>
</html>

 

** 실행결과

[문제] 1 ~ 100까지 짝수의 총합을 구하는 프로그램을 만들어보자.

** 10_짝수총합프로그램.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>짝수총합 프로그램</title>
</head>
<body>
    <h2>짝수총합 프로그램</h2>
    <script>
        "use strict";
        let i = 0, sum = 0;
        while(i<100) {
            i++;
            if(i % 2 == 0) {
                sum += i;
                //console.log("i : " + i);
            }
        }
        console.log(`1~100까지의 짝수 총합은 ${sum}`);
    </script>
</body>
</html>

 

[문제] 원하는 단을 입력받아 구구단을 출력하시오.

** 11_구구단프로그램.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>구구단 프로그램</title>
</head>
<body>
    <h2>구구단 프로그램</h2>
    <script>
        'use strict';
        const dan = Number(prompt('원하는 단을 입력하세요.'));
        document.write(`${dan}단<br>`);
        /*
            입력
                7단

            출력
                7 * 1 = 7
                7 * 2 = 14
                7 * 3 = 21
                ...
                7 * 9 = 63
        */
        let i = 1;
        while(i <= 9) {
            document.write(`${dan} X ${i} = ${dan * i}<br>`);
            i++;
        }
    </script>
</body>
</html>

 

      ② do ~ while문 : while문은 루트에 진입하기 전에 먼저 조건식부터 검사하지만

                              do ~ while문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
      
      do {
          조건식의 결과가 참인 동안 반복될 실행문;
      } while(조건식);

 

** 12_do-while문.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>do-while문</title>
</head>
<body>
    <h2>do-while문</h2>
    <script>
        'use strict';
        let i = 1, j = 1;
        while(i > 3) {
            console.log(`i : ${i++}`);
        }
        do {
            console.log(`j : ${j++}`);
        } while(j > 3);
    </script>
</body>
</html>

 

** 실행결과

 

   (2) for문 : for문은 while문과 달리 자체적으로 초기값, 조건식, 증감식을 모두 포함하고 있는 반복문이다,

                 while문 보다는 간결하게 반복을 표현할 수 있다.
   
   for(초기값; 조건식; 증감식) {
       조건식의 결과가 참인 동안 반복할 실행문;
   }

** 13_for문(1).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for문 - 1</title>
</head>
<body>
    <h2>for문 - 1</h2>
    <script>
        'use strict';
        //for(let i = 1; i <= 5; i++) {
        //    console.log(`${i}번째 반복`);
        //}
        //console.log(i); // Uncaught ReferenceError: i is not defined
                        // 왜? 변수 i는 for문에서만 유효한 지역변수이기 때문에
                        // 만약 여기서도 값을 출력하고 싶다면 for문 밖에서 선언해줘야 함

        let i;
        for(i = 1; i <= 5; i++) {
            console.log(`${i}번째 반복`);
        }
        console.log(`현재 i의 값은 : ${i}`);
    </script>
</body>
</html>

 

** 실행결과

** 14_for문(2).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for문 - 2</title>
</head>
<body>
    <h2>for문 - 2</h2>
    <script>
        'use strict';
        let sum = 0;
        for(let i = 1; i < 10; i++) {
            sum += i;
        }
        console.log(`1 ~ 10까지의 총합 : ${sum}`);
    </script>
</body>
</html>

 

** 실행결과

[문제] while문으로 작성된 구구단 프로그램을 for문을 이용하여 재작성해보자.

** 15_구구단프로그램2.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>구구단 프로그램</title>
</head>
<body>
    <h2>구구단 프로그램</h2>
    <script>
        'use strict';
        const dan = Number(prompt('원하는 단을 입력하세요.'));
        document.write(`${dan}단<br>`);
        /*
            입력
                7단

            출력
                7 * 1 = 7
                7 * 2 = 14
                7 * 3 = 21
                ...
                7 * 9 = 63
        */
        for(let i = 1; i <= 9; i++) {
            document.write(`${dan} X ${i} = ${dan * i}<br>`);
        }
    </script>
</body>
</html>

 

 

3. [강사님 경험담] 일할 때 후임이 만든 대략 8000줄 되는 코드를 반복문을 잘 사용함으로써 3000줄로 줄였다고 한다.

   따라서 반복문을 잘 쓰는 것이 매우 중요하다고 한다.

 


4. 코드를 좀 더 간결하고 효율성있게 만들고 싶다 > 알고리즘의 메커니즘

 


5. continue문
 : 반복중인 루트 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 다음 조건식의 판단으로 넘어가게 한다,

   보통 반복문 내에서 특정 조건에 대한 처리를 제외하고자 할 때 사용한다.

 

** 16_continue문.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>continue문</title>
</head>
<body>
    <h2>continue문</h2>
    <script>
        let num = 3;
        for(let i=1; i<=100; i++){
            if(i % num == 0){
                document.write('짝! ');
                continue;
            }
            document.write(`${i} `);
        }
    </script>
</body>
</html>

 

** 실행결과

 


6. break문
 : 반복중인 루프 내에서 사용하여 해당 반복문을 완전히 종료시키고

   반복문 바로 다음에 위치한 실행문으로 프로그램의 흐름을 이동시킨다,

   루프 내에서 조건식의 판단 결과에 상관없이 반복문을 빠져나가고 싶을 때 사용한다.

 

** 17_break문(1).html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>break문 - 1</title>
</head>
<body>
    <h2>break문 - 1</h2>
    <script>
        'use strict';
        while(true) {
            let sel = Number(prompt('원하는 메뉴를 선택하세요. 1.회원등록 2.회원목록 3.회원수정 4.종료'));

            if(sel == 1) {alert('회원등록 페이지로 이동합니다.');}
            if(sel == 2) {alert('회원목록 페이지로 이동합니다.');}
            if(sel == 3) {alert('회원수정 페이지로 이동합니다.');}
            if(sel == 4) {
                alert('프로그램을 종료합니다.');
                break;
            }
        }
    </script>
</body>
</html>

 

** 실행결과

** 18_break문(2).html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>break문 - 2</title>
</head>
<body>
    <h2>break문 - 2</h2>
    <script>
        'use strict';
        for(;;) {
            //console.log('안녕하세요. JavaScrpt!')
            
            let sel = Number(prompt('원하는 메뉴를 선택하세요. 1.회원등록 2.회원목록 3.회원수정 4.종료'));

            if(sel == 1) {alert('회원등록 페이지로 이동합니다.');}
            if(sel == 2) {alert('회원목록 페이지로 이동합니다.');}
            if(sel == 3) {alert('회원수정 페이지로 이동합니다.');}
            if(sel == 4) {
                alert('프로그램을 종료합니다.');
                break;
            }
        }
    </script>
</body>
</html>

 

** 실행결과

'웹_프론트_백엔드 > 프론트엔드' 카테고리의 다른 글

보강(2020.09.12, 2020.09.13)  (0) 2020.09.12
2020.08.30  (0) 2020.08.30
과제-자료를 받아 출력하는 프로그램  (0) 2020.08.14
2020.08.09  (0) 2020.08.12
2020.08.08  (0) 2020.08.10