Java/UI구현

2023.03.28 타입, 연산자, 조건문

amungstudy 2023. 3. 28. 16:00
 

        배열

             []를 이용하여 표현
             변수나, 값의 집합체
             사용예시 : let numbers = [1,2,3,4,5];
             변수는 인덱스값(순서값) 을 갖는다. 인덱스값은 0부터 시작
           

         클래스

            class 키워드로 선언을 해서 생성
            변수선언, 함수선언, 배열선언 등등 을 할수 있다.
            생성자를 갖을수 있다.

        // human클래스
        // class Human{
        //     constructor(){ //생성자.(클래스 객체가 생성될때 자동적으로 실행되는 영역)
        //         let name = "홍길동";
        //         let age = 0;
        //     }
        //     get name(){
        //         return this.name;
        //     }
        //     get age(){
        //         return this.age;
        //     }
        // }        
       
        // let human1 = new Human(); //Human클래스를 이용하여 객체생성
        // console.log(human1.name);
        // console.log(human1.age);

        타입 변환

        JS에서는 타입검사가 엄격하지 않아서, 타입간의 변화도 유연하게 할수있다.
        let num = 20; //변수 num은 타입이 number이고, 값은 20이 저장되어있다.
        num = "20"; //변수 num에 문자열 20을 재할당.

       묵시적 타입변환
            문자열과 숫자를 연산할때 + 는 문자열로 만들어주고,
             * , / , - 는 산술연산을 해준다.(단, 문자열이 숫자로 변환가능한 상태일때.)
            console.log( 10 * "2");

        명시적 타입변환
            특정 타입으로 변환을 하겠다.
            Number() , String() , Boolean() , Object()
 
            let ten = Number("10");
            console.log(typeof ten);

            console.log(Boolean(1));
            // boolean타입을 숫자로 변환하면
            // 1 : true
            // 0 : false

       날짜를 문자열이나 숫자로 변환
            let date = new Date(); //Date클래스를 객체로 생성
            // 클래스를 객체로 생성시 규칙 : let(const) 변수명 = new 클래스명();
            console.log(date.getDate()); // 날짜 를 숫자로 반환
            console.log(date.getFullYear()); //연도를 숫자로 반환
            console.log(date.getMonth()+1); //월을 숫자로 반환(0~11)까지 반환

            //console.log()를 활용하여, Date객체도 활용하여,
            // 2023-3-28 을 출력하도록 작성해봅시다.
            let today = new Date();
            console.log(`${today.getFullYear()}-${today.getMonth()+1}-${today.getDate()}`);
            console.log(today.getFullYear()+"-"+(today.getMonth()+1)+"-"+today.getDate());

         toString() 특정변수나 값을 문자열로 변환시켜주는 함수

            console.log(today.getFullYear().toString());
            let isTrue1 = true;
            console.log(typeof isTrue1.toString());

         Number()외에 문자열을 숫자로 변환 시켜주는 함수

             parseInt() : 문자열을 정수로 변환
             parseFloat() : 문자열을 소수점으로 변환
 
 
            console.log( parseInt("6.5") );
            console.log( parseInt("06") );

            console.log( parseFloat("6.5") );
            console.log( parseFloat("6.0") );

            변수선언시 var와 let(const)의 차이점
            // scope(블록, 영역) - js가 실행이 되는 영역
            // 전역변수 - 전역으로 사용이 가능한 변수
            // 지역변수 - 부분부분 scope에서 사용이 가능한 변수
            let global = "전역변수";
            // var global2 = "전역변수2";
            { // 지역 scope를 표현
             let local = "지역변수"; // 해당하는 지역scope내부에서만 사용가능
             // var local2 = "지역변수2";
             console.log(global);
             console.log(local);
            }
            console.log(global);
            console.log(local); //출력이 안될것

JS의 다양한 연산자

    <script>
        //산술연산자 : 두개의 향으로 숫자연산을 할 때 사용
        // +, -, *, /, %, **
        console.log( 5 / 2); //일반적인 몫을 구하는 / 연산
        console.log( 5 % 2); //나머지값을 구하는 %연산
        console.log( 2** 3); // 2의 3승
        let one = 1;
        let five = 5;
        let seven = 7;
        let result = seven * five;
        console.log("산술연산의 결과 : ",result);
        //연산하는 순위도 우리가 알고있는 산술연산의 우선순위와 같다.
        console.log((one+five)*seven);
        // ++, -- 후위(전위)연산 - 총칭 [증감연산자]
        let count = 0;
        // let preCount = ++count; // preCount = (coundt = count + 1);
        // console.log(preCount); //1을 출력
        // console.log(count);

        let postCount = count++;
        // postCount = count; // 결과적으로 0이 저장됨
        // count = count + 1; // 1이 저장됨
        console.log(postCount);
        console.log(count);

        // 대입 연산자
        // =, += , -=, *=, /=, %=, **=
        // = : 오른쪽에 있는 값을 왼쪽에 저장을 시키겠다.
        let operator1 = 1;
        // +=~**= : 왼쪽(변수)과 오른쪽(값)에 있는 값을 연산하고, 왼쪽에 저장시키겠다.
        let count1 = 0;
        count1 += 1; // count1 = count1 + 1;와 같은 의미
        console.log(count1);

        //논리연산
        // && , || , !
        // && (논리곱) : 두개(이상의) 항의 논리곱이 true일때만 true를 반환
        // 항 전체가 참이어야 참(true)을 반환한다. 그 외는 전부 거짓(false)
        console.log("----------&&(논리곱)---------");
        console.log( true && false);
        const value1 = false;
        const value2 = 4 < 2; //false
        console.log(value1 && value2);
       
        console.log("----------||(논리합)---------");
        // || (논리합) : 두개(이상의) 항중에 하나라도 true이면 true를 반환한다.
        console.log(true || false);
        const value3 = true;
        const value4 = 4 < 2; // false;
        console.log(value3 || value4);
       
        console.log("----------!(논리부정)---------");
        // 하나의 항만으로 연산이 가능하다.
        // !(부정) : 값이 true -> false; false -> true;
        console.log( !value3 );

        //비교연산자
        // 두가지항을 비교할때 사용하는 연산자
        // ==, ===, !=, !==, >, >=, <, <=
        // == : 두항의 값이 같은지 비교해주는 연산자
        console.log("----------비교연산자---------");
        console.log( 6 == "6"); //묵시적타입변환의 특성때문에 true
        console.log( 6 === "6"); // 실제타입까지 비교를 하니까 false
        console.log(6 !== "6" ); //두개의 값이 같지 않다 자체를 비교하니까 true
        console.log(5 != 6); // true값이 반환이 된다.

        //삼항연산자
        console.log("----------삼항연산자---------");
        let user = "관리자";
        console.log(user == "회원" ? "당신은 회원입니다.":"당신은 관리자입니다.");
        // 삼항연산자의 형태
        // (조건) ? (참일경우 수행): (거짓일경우 수행);
        let isAdmin = user == "회원" ? "회원님이 로그인 하였습니다." : "관리자님이 로그인 하였습니다.";
        console.log(isAdmin);
        console.log( 3>1 ? true : false);


        ///연습문제
        // 각자리의 숫자들의 합
        // 123 -> 6, 745 -> 16
        let num = 12345;
        let num1 = num % 10; // 12345 / 10 의 나머지값을 반환 -> 5를 반환
        num = parseInt(num/10); // 1234.5 -> 1234
        let num2 = num % 10;
        num = parseInt(num/10); // 123.4 -> 123
        let num3 = num % 10;
        num = parseInt(num/10);
        let num4 = num % 10;
        num = parseInt(num/10);
        let num5 = num % 10;
        console.log('각자리의 수를 출력');
        console.log(num1);
        console.log(num2);
        console.log(num3);
        console.log(num4);
        console.log(num5);
        console.log(); //여기서 1+2+3+4+5의 결과값인 15가 출력이 되도록 소스코드를 작성 해봅시다.

       

   조건에 따라 실행의 흐름을 제어할수있는 조건문

    <script>
        //조건문의 종류
        // 1. if 문 {if, if else, else if, else}
        // if문의 기본형태 : if(조건(표현)식){ 조건이 참인 경우 수행되는 수행문 }
        let a=3, b=5;
        if( a == b){ //a와 b가 같으면 중괄호 안에 수행문을 실행한다.
            console.log("a와 b는 같습니다."); //조건이 부합하지 않으니, 실행x
        }
        if (a==3) console.log("a는 3입니다."); //if문의 수행문이 한줄이면 {}를 생략가능.

        //if else문 의 기본형태 : if(조건(표현)식){참인경우 수행} else{거짓인경우 수행}
        let user = "관리자";
        if(user == "회원"){ //user변수의 값과 문자열"회원"이 같을경우에
            //조건이 참이 될때 실행문
            console.log("회원님이 로그인 하셨습니다.")
        } else{ //위의 if문의 조건이 거짓일경우 중괄호 아래의 수행문을 실행
            console.log("관리자님이 로그인 하셨습니다.")
        }

        // else if문 의 기본 형태
        // if문 이외의 조건을 추가해야하는 상황에서 else if문을 사용하면 된다.
        /*
            if(조건(표현)식){
                조건(표현)식이 참인경우의 수행문
            }else if(조건(표현)식2){
                조건(표현)식2 이 참일경우의 수행문
            }else{
                조건1, 조건2이 모두 거짓일 경우의 수행문
            }

        // */
        //     let score = 94;
        //     if(score >= 70 && score < 80){//점수가 70점이상이고, 80점미만일때
        //         console.log("당신의 점수는 C입니다.");
        //     }else if(score >= 80 && score < 90){
        //         console.log("당신의 점수는 B입니다.");
        //     }else if(score >= 90){
        //         //if문을 추가하여 95점 이상이면 A+
        //         // 90~94점이면 A출력이 되도록.
        //         console.log("당신의 점수는 A입니다.");
        //     }else{
        //         //위의 조건 세가지가 전부 거짓일경우 수행됨.
        //         console.log("당신의 점수는 D입니다.")
        //     }

            //if문안에 if문이 중첩되어 사용가능하다.
            //제어문안에 제어문을 중첩하여 사용도 가능하다.
            // let score = 95;
            // if(score >= 70 && score < 80){//점수가 70점이상이고, 80점미만일때
            //     console.log("당신의 점수는 C입니다.");
            // }else if(score >= 80 && score < 90){
            //     console.log("당신의 점수는 B입니다.");
            // }else if(score >= 90){
            //     //if문을 추가하여 95점 이상이면 A+
            //     // 90~94점이면 A출력이 되도록.
            //     if(score >= 95){
            //         console.log("당신의 점수는 A+입니다.");
            //     }else{
            //         console.log("당신의 점수는 A입니다.");
            //     }
            // }else{
            //     //위의 조건 세가지가 전부 거짓일경우 수행됨.
            //     console.log("당신의 점수는 D입니다.")
            // }

        // 2. switch 문
            // switch문의 형태
            /*
                switch(변수(조건)){
                    case 값1:
                        조건(변수)의 값이 값1일경우 수행문;
                        break;
                    case 값2:
                        조건(변수)의 값이 값2일경우 수행문;
                        break;
                    default:
                        조건(변수)의 값이 case절에 해당하지 않을 경우 수행문;
                        break;
                }
                         
            */
                let browser = "IE";
                switch(browser){
                    case "IE":
                        console.log("IE 브라우저 입니다.");
                        break; //브레이크문이 없으면 조건에 부합하는 case절 아래의 수행문을 전부 실행시킨다.
                    case "FireFox":
                        console.log("파이어폭스 브라우저 입니다.");
                        break;
                    case "Safari":
                        console.log("사파리 브라우저 입니다.");
                        break;
                    default:
                        console.log("크롬입니다.");
                        break;
                }

                // 사용자에게 특정값을 입력을 받아서
                // 조건문을 실습해보도록 하겠습니다.
                // let inputText = prompt("이름을 입력해 주세요.","한글로 입력할것.");
                // alert("당신의 이름은 : "+inputText+"입니다.");

                //위의 prompt함수를 응용해서 성적처리 프로그램을 만들어봅시다.
                // ex) 89 -> 당신의 성적은 B+입니다. 출력하도록 합시다.
                // 성적의 기준은 다음과 같다.
                // 95~100 : A+
                // 90~94 : A
                // 85~89 : B+
                // 80~84 : B
                // 75~79 : C+
                // 70~74 : C
                // 65~69 : D+
                // 60~64 : D
                // 60점 미만 : F

                //입력한 값이 숫자일때만 작동하도록(1~100)
                //입력한 값이 숫자가 아닌경우에는 숫자가 아니라는 메세지를 전달하도록
                //소스코드를 수정 및 추가해봅시다.
                let score = prompt("점수를 입력하시오.","숫자로 입력할 것.");
                if(score>=95){
                   if(score>100){
                    alert("100이하의 숫자만 입력하시오.");
                   }else{alert("당신의 성적은 A+입니다.");}
                }else if(score>=90){
                    alert("당신의 성적은 A입니다.");
                }else if(score>=85){
                    alert("당신의 성적은 B+입니다.");
                }else if(score>=80){
                    alert("당신의 성적은 B입니다.");
                }else if(score>=75){
                    alert("당신의 성적은 C+입니다.");
                }else if(score>=70){
                    alert("당신의 성적은 C입니다.");
                }else if(score>=65){
                    alert("당신의 성적은 D+입니다.");
                }else if(score>=60){
                    alert("당신의 성적은 D입니다.");
                }else if(score>=1){
                    alert("당신의 성적은 F입니다.");
                }else{
                    alert("입력한 값이 숫자가 아닙니다.");
                }