공부/오늘 배운것

22.09.26.Mon - 그래서 프로그래머는 시인이다.

Doil98 2022. 9. 26. 17:30

오늘의 요약= 알고리즘은 마술과 같다. 답을 보기 전까지는 안보이니 말이다.

1. data type of 연산자.

  • data type

    • type of() : 자료의 종류 무엇인지 알 수 있는 연산자.
      • type of'doil'; type of ('doil'); 사용.
      • 객체 자료에 대해서는 명확하게 자료의 종류를 알 수 있는 것이 아니다.
      • typeof(NaN) = 'number' : 숫자는 아니지만 type은 number 이다.
        • NaN = Not a Number
        • 어떤 산술연산을 해도 그 결과가 NaN이다.(type of 제외)
        • 논리 연산이나 관계 연산을 하면 결과는 false이다.
        • isNaN 함수를 이용하여. 판단한다.
      • 함수의 반환값은 함수로 나온다.
        • 객체중 함수만 반환함. 이외는 object 로 나온다.
        • 함수는 일급 객체이다.
  • 연산자

    • 제곱

      • Math.pow(,)를 사용하자. ** 대신에.
      • ** ; 5의제곱 5**2;
      • Math.pow(,)
      • Math.pow(5,2);
    • 루트

      • Math.sqrt()대신에 Math.pow()를 사용하자.
      • 루트를 표현할 때에도 사용. 0.5, 1/2.

2. 관계 논리,비트 연산자 (논리적 사고,연산이 제일 중요하다.)

  • 관계 연산자 :결과값은 항상 논리값(true,false)이다.

    • 대소 비교
      • 크다:>,작다:<,크거나 같다: >=, 작거나 같다: <=,
    • 동등 비교
      • 두개의 등호를 사용한 동등비교는 가능하면 같은 타입으로 변환해서 연산을 한다.
        • 자료의 타입이 다르더라도 동등연산 가능. ex) '123' == 123 ,true; '123' => 123,false
      • 같다: => (권장), ==(비권장)
      • 같지않다: !==(권장), !=(비권장,)
      • 초과의 반대는 이하다.
    • 문자열의 관계 연산도 가능하다.
      • 대소 비교의 기준은 문자열의 ASCII 코드 값 에 따라서 대소비교를 한다.
        • A = 65 , a = 97 ; 'blank' = 32 ; '0' = 48
        • 영어문화권에서 사용하는 문자들을 2 진수로 코드화 한 것=> 약속.
  • 논리 연산자 (논리적인 판단이 제일 중요.)

    • Calculator 와 Cumputer를 구별하는 극명한 기준.

    • 우선순위 : not-> and-> or 순서대로 연산. -> 괄호를 사용하자.(순서를 바꿀수 있다.)

    • not

      • 기호: ! ; 참이면 거짓, 거짓이면 참(true).
      • not 은 논리값 을 반환함. 다른건 data 값을 반환하고.
    • and

      • 기호:&& ; 모든 항이 참이여야 참(true).
    • or

      • 기호:|| ; 하나라도 참이면 참(true).
    • 논리 이항 연산자는 자료의 순서에 따라서 성능에 영향을 미친다.

      • or 는 참이면 나머지 연산은 하지 않는다.
    • 논리 연산시 참으로 판단하는 것들

      • 숫자는 0을 제외한 모든 숫자들을 참(true)으로 판단.
      • 문자는 참으로 판단한다.
      • 없는 문자는 false로 판단. 예('') 단 공백은 참(true).
    • 반환을 한다.

      • x = a || b ; a를 반환할 것인가? b를 반환 할 것인가?
      • 그럼 둘다 true 면?
      • 연산 순위
        • 단항,이항 연산 .
        • 산술-> 관계 -> 논리
          ```
          결과 상자 = a 논리연산자 b
        • 返還 : 반환 (돌이킬 반, 돌아올 환) , 왔던 길을 되돌아감.
          <hr>
    • 컴퓨터의 5대 장치

      • 입력
      • 출력
      • 제어
      • 연산
      • 기억 (주 기억)

3.

  • 괄호 묶음의 판단

    • 배열,객체,함수 는 논리적 판단의 값은 True 다.
    • [],{},function() : true
  • type of A/S

    컴퓨터의 장점 인 반복연산을 효율적으로 하기 위해서는  반복의 조건을 논리적으로 짜야한다.
    조건을 잘 만들려면 조건을 규정하는 논리 연산자도 적재적소에 사용해야한다.
    논리적 구조는 현재는 인간만이 할 수 있다. 
    
    설계를 하는 사람이 되어야 한다. 설계된 구조를 프로그래밍만 한다면, 후에 대체된다.
    프로그래밍을 컴퓨터가 대신하면 프로그래밍을 하는 시대는 사라질 것이다.
    설계. 영역만이 쉽게 도달하지 못할 것이다. 컴퓨터가.
    그 시대가 도래하면 둘중 하나일 것이다. 인류의 노동 해방 || 인류의 위치 상실.

4.

  • and (&&) 와 or (||)의 차이
    • data 변환 값이 차이가 난다.
    • or 의 이항이 모두 참 일 경우 : 첫 항의 값을 변한 한다. ( 컴퓨터 연산 순서 )
      • or의 명령: '두 식중 참인게 하나라도 있으면 그값만 데려와. 뒤의 놈은 신경끄고,
        뒤의 값이 참이더라도.'
    • and의 이항이 모두 참 일 경우 : 두번째 항의 값을 변한한다.(연산자 특성과 연산 순서대로.)
      • '모든 값을 확인하고 참인 경우 뒤에있는 값을 데려와.'
  • not 의 특징
    • 논리값을 반환함. (True or False)
  • bit 연산자 (전산 개론)
    • 사용하려면 2진수를 알아야 한다.
    • (모든 연산자 중에서 속도가 가장 빠르다.)
      • 메모리상의 데이터가 2진수 bit 묶음으로 구성이 되어있고, 그bit묶음을 곧바로 bit 연산한다.
    • 기호
      • not : ~
        • 양수를 음수로 바꾸는데 값을 하나 늘려준다.
        • 3 => -4 ,44 => -45, ~110 => -111;
      • and : & => 불필요한 부분을 제거하고자 할 때 사용되는 연산 => 반드시 알아둘것.
        • data 1101 1010 을 1101을 지우고 싶을때. 1101 1010 & 0000 1111 -> 1010 : 2진수와 and의 의미를
          알아야 한다.
        • Network에서 사용함!!
        • 인트라넷 구축, 보안 중요 시설일때 , 사용한다. (내부 접속,외부 접속 구별)
      • or : |
      • left shift : <<
      • right shift : >>

5.

  • 서브넷 마스크

    • 같은 네트워크 상에 존재하는 지 판단.
    • 서버는 접속자의 ip를 알 수 있다.
    • 서버는 자신의 ip 와 서브넷 을 bit &
    • 서버는 자신의 ip 와 접속자의 ip를 bit &
    • 두 값을 비교
  • 삼항 연산자 (알아만 두자.)

    • 식: 조건 ? 조건 참일때 : 조건 거짓일때 ;
    • 삼항 연산 안에 삼항을 넣지마라.
      • if else else else 느낌.
  • 입력 값은 항상 문자 타입이다.

  • 문자열을 숫자로 변환 하려면

    • parseInt()
    • *1
    • -0
  • 복합대입연산자(산술적인 연산식을 줄여서 표현한 것)

    • += : 좌우의 값을 더한후, 값은 좌변에 넣어라.
    • .= : 좌 문자에 우 문자열 더한후 좌변에 넣어라.
  • 증감 연산자(알고만 있자.)

    • ++

6.

  • 비교 판단 문(선택문)
    • 종류
      • if
      • if - else
      • if - else if
      • switch - case [속도가 느리다. if - else if 구문으로 변환되어 실행되기 때문]
        • 가독성이 뛰어나기 때문에 사용.
      • 4가지 에서 if 만 알아도 모든 비교 판단 가능.

        구조

        if(조건){
        조건이 참일 경우를 수행할 문장.
        }
  • 할줄 아는 거 먼저 하고 나머지는 배째라는 마인드로 해야한다.
  • 그래야 실력이 는다.

    7.

  • 마술같다.
  • 알고리즘
    • 재귀호출을 기반으로 해야한다 *****
      // 양쌤 방법
      // 변수 resultData 를 만들어 문자열 누적 시키는 방법으로 간결하게 코드를 만들었다.
      let resultData = '';
      if(inboxData % 3 === 0){
      resultData = resultData + 'good';
      }
      if (inboxData % 4 === 0){
      resultData = resultData + 'job';
      }
      console.log(resultData);
  • 중첩 if 문
  • 중첩 for 문
  • 기본기를 다지자.

8.

  • 순서를 우선 말로 적고 그것을 하나씩 구현하는 방식으로 연습하자.