2일차

연산자와 제어문

단어

  • 연산자(Operator) : 어떠한 기능을 수행하는 기호
  • 피연산자(Operand) : 연산자의 작업 대상

연산자의 종류

  • 단항 연산자: +, ``, (type), ++, -, ~, !
  • 이항 산술 연산자: +, , , /, %, <<, >>, >>>
  • 이항 비교 연산자: >, <, >=, <=, ==, !=
  • 이항 논리 연산자: &&, ||, &, ^, |
  • 삼항 연산자: ? :
  • 대입 연산자: =, operator=

연산자의 우선순위

  • 괄호의 우선순위가 가장 높음
  • 산술 > 비교 > 논리 > 대입
  • 단항 > 이항 > 삼항
  • 연산자의 연산 진행방향은 왼쪽에서 오른쪽
  • 단항, 대입 연산자는 오른쪽에서 왼쪽

단항 연산자 ++, —

  • ++ : 증가 연산자, 피연산자의 값 +1
  • -- : 감소 연산자, 피연산자의 값 -1
var num1 = 10;
var num2 = num1++;

결과값 : num1 = 11, num2 = 10이 됩니다.

이유 : num1++은 앞의 실행 후 증가한다. 반대로 ++num인 경우 증가 후
실행이 됩니다.

Ex) 
var num1 = 10;
var num2 = ++num1;

결과값 : num1 = 11, num2 = 11이 됩니다.

마이너스도 똑같이 적용하여 증가를 감소로 바꾸기만 하면됩니다!

논리 부정 연산자!

불리언 타입의 피연산자를 반대로 바꾼다.

var str1 = true; // str1은 true라는 값을 가지고 있다.
var str2 = !str1 
// !가 붙으면 값을 반대로 만들어준다.
// 참에 느낌표를 붙여 반대값인 거짓을 str2에 대입하게 됨

결과값 : str1 = true, str2 = false값이 된다

비트 시프트 연산자 (<<, >>)

  1. Left Shift Operator
ex1) var num = 2 // 2는 2진수로 0010
num << 2 // left shift를 2만큼 움직이면 1000으로 바뀌고
결과값 : num = 8이 된다.

2진수 참고 사진

설명 : 숫자 2가 0010인데 << 2를 하면 1을 왼쪽으로 2칸만큼 움직이라는 뜻이다. 그러므로 0010 << 2는 1000이 된다.

  1. Right Shift Operator
var num = 9; // 2진수로 1001이 된다.
num >> 2; // 0010이된다. 

결과값 : num = 2가 된다.

결론 : Left Shift는 늘어나지만 Right Shift는 줄어든다.

비트 연산자( |, &, ^)

피연산자를 비트단위로 연산한다. 실수형을 제외한 모든 기본형에 사용이 가능하다.

  • OR연산자(|) : 피연산자 중 어느 한 쪽이 1이면 1이다.
  • AND연산자(&) : 피연산자 양 쪽이 모두 1이면 1이다.
  • XOR(^) : 피연산자가 서로 다를 떄 1이다.

| x | y | x | y | x & y | x ^ y | | --- | --- | --- | --- | --- | | 1 | 1 | 1 | 1 | 0 | | 1 | 0 | 1 | 0 | 1 | | 0 | 1 | 1 | 0 | 1 | | 0 | 0 | 0 | 0 | 0 |

식2진수10진수

3 5 = 7 0000001100000101
  00000111 7
3 & 5 = 1 0000001100000101 35
  00000001 1
3 ^ 5 = 6 0000001100000101 35
  00000110 6

제어문

  • if(조건식)문
    var num = 2; // num에 2를 대입
    
    if(num === 2){ 
    // 조건문에 num이 2랑 같은지 비교 true면 실행 false면 밖에 return이 실행
    	return document.write("num은 2이다.");
    }
    
    return document.write("num은 2가 아니다.");
    
    결과 : num은 2이다.
    
  • 정의 : 만약 조건식이 참이면 실행해라. 거짓이면 밖에 걸 실행한다.
  • if(조건문) ~else문
    var num = 2; // num에 2를 대입
    
    if(num === 2){ 
    // 조건문에 num이 2랑 같은지 비교 true면 실행 false면 else의 return이 실행
    	return document.write("num은 2이다.");
    }else {
    	return document.write("num은 2가 아니다.");
    }
    
    결과 : num은 2이다.
    
  • 정의 : 만약 조건식이 참이면 실행해라. 거짓이면 else를 실행한다.
  • switch(조건변수) ~case 값 : 실행문
    예제1)
    
    var num = 2;
    
    switch(num){
    	case 1 : return document.write("num은 1이다.");
    		break;
    	case 2 : return document.write("num은 2이다.");
    		break;
    	default : return document.write("모르겠다");
    }
    
    결과값 : num은 2이다.
    
    설명 : 조건변수가 num이고 num의 값은 2이다. 그래서 case중 같은 값을 가지고 있는 
    			case의 값이 2를 가지는 case 2가 실행된다.
    추가설명 : break문이 없으면 멈추지 않아서 실행이 되고 default는 위의 case가 다
    				넘어가면 실행이 된다.
    
  • 정의 : 조건변수가 case의 값과 같으면 실행문이 실행된다!
  • for(초기화 변수; 조건식; 증감식)문
    for( 초기화 변수; 조건식; 증감식 ){
    	실행문
    }
    
    예제1) *****를 만들기
    
    var str = "*";
    var str2 = "";
    
    for(var i = 1; i < 6; i++){
    // i는 1이고 i가 6보다 작으면 1씩 커지면서 반복해라
    	str2 += str; 
    // str2 += str 은 str2 = str2 + str과 같은 뜻을 의미한다.  
    }
    
    결과값 : '*****'
    
    설명 : i가 1일때 한번 실행되고 i = i +1(=> i++)한뒤 i는 2인데 i가 6보다 작기때문에
    			실행문이 실행된다. 이 것을 6보다 같거나 클때까지 반복한다.
    
    예제2) *****
    			*****
    			***** 를 만들기
    
    var str = "*";
    
    for( var j = 1; j < 4; j++ ) {
    	var str2 = "";
    	for( var i = 1; i < 6; i++ ){ 
    
    		str2 += str; 
    
    	}
    	document.write(str2 + "<br>");
    }
    
    결과값 : 
    				'*****'
    			  '*****'
    				'*****' 이 된다.
    설명 : 첫번째 반복문이 실행이 된다.
    			=> str2는 빈문자열을 준다.  // 1번 루트
    			=> 두번째 반복문이 실행이 된다.
          => str2 = str2 + str이 실행
    			=> document.write문이 실행이된다.
    			=> j = j+1을 한 후 j값이 4보다 작은지 확인하고 작으면 다시 1번 루트로 돌아가
    				 반복한다.
    
  • 정의 : for는 반복문입니다. 특정 조건만큼 변수를 증감하고 실행문을 반복합니다.
  • while(조건식){ 실행문 }
    ex) 
    var num = 2;
    
    while(num < 4){
    	document.write(num + " ");
    	num++;
    }
    
    결과문 : 2 3
    
    설명 
     
    num은 2이다.
    => num이 4보다 작냐 true
    => document.write문 실행 화면에 2출력
    => num = num + 1 
    => 다시 조건문으로 돌아간다. 이 조건문이 false일 때 까지 반복한다.
    => ... num이 증가하여 4가되니 false가 되고 반복문은 종료
    => 화면에 나온 결과 : 2 3
    
  • while문 정의 : 조건식이 참이면 실행문이 실행되고 거짓이면 실행문이 실행이 안된다.
  • do ~while문
    ex1) 
    var num = 2;
    
    do{
    	document.write(num + " ");
    	num++;
    } while(num < 4);
    
    결과문 : 2 3
    
    설명 
     
    num은 2이다.
    => document.write문 실행 화면에 2출력
    => num = num + 1 
    => num이 4보다 작냐 true
    => 이 조건문이 false일 때 까지 반복한다.
    => ... num이 증가하여 4가되니 false가 되고 반복문은 종료
    => 화면에 나온 결과 : 2 3
    
    ex2)
    
    var num = 1;
    
    do{
    	document.write(num + " ");
    	num++;
    } while(num < 1);
    
    결과물 : 1
    
    이유 : 최초 1회는 무조건 실행
    
  • 정의 : while문과 같지만 do ~while은 무조건 최초 1회는 실행한다.

출처

https://noritersand.github.io/java/java-연산자-operator/

https://cofs.tistory.com/136

+ Recent posts