TIL(22.1.29~30.SUN)

기미노·2022년 1월 31일
post-thumbnail

프로그래밍

  • 배경
    • 프로그래머들이 “어떤 도구”를 이용해 컴퓨터가 작동시킬 수 있는 프로그램을 만들었고, 우리는 마우스 클릭이나 키보드 입력과 같은 익숙한 방식으로 사용하는 것
  • 정의
    • 프로그램이 정해진 방식에 따라 일할 수 있도록 작성해 놓은 것
  • 프로그램이 하는 일
    • 데이터의 입력→처리→출력
      • 입력
        • 마우스를 클릭하거나 키보드로 타이핑을 한다는 것은 데이터를 “입력”한다는 것
      • 처리
        • 최종 구매를 하겠다는 버튼을 누르면 그 정보들은 어딘가에 저장이 되어 “처리”가 됨
      • 출력
        • 모든 기록과 실시간 업데이트 상황이 화면에 “출력”되어서 우리가 쉽게 확인 할 수 있음

자바스크립트

  • 프로그래머들이 “어떤 도구”를 이용해 코딩을 한다. 이 때 이용하는 도구가 바로 프로그래밍 언어
  • 우리가 설치한 Node.js
    • 우리가 JS언어의 문법에 맞게 코딩을 했을 때 컴퓨터가 이를 해석해서 처리할 수 있도록 해주는 전용 번역기
    • 원래는 웹브라우저안에 내장되어 있으나 Node.js만 설치해주면 웹브라우저가 아닌 곳에서도 JS코드를 실행하고 그 결과물을 바로 확인할 수 있음

변수

  • deprecated
    • 중요도가 떨어져 더 이상 사용되지 않고 앞으로 사라지게 될.
  • 변수란
    • 값(데이터)을 저장해놓고 사용하기 위해 사용
    • 해당 데이터가 의미하는 바를 변수이름을 통해 정확히 표현
    • 계속해서 재사용할 수 있음
    • let 변수이름 = 값

데이터 타입

  • 데이터 타입
    • 기본 or 원시형(primitive)타입
      • number(숫자)
        • 숫자 데이터
      • string(문자열)
        • 문자열 데이터.
        • 이중 따옴표(””) or 작은 따옴표(’’)로 데이터를 감싸야 함
      • boolean(true/false)
        • 참과 거짓을 나타내는 true/false를 표현하는 데이터
        • 비교 연산자에서 많이 활용됨
      • null&undefined
        • null (값0)
          • 값에 텅텅비어있는 것이 할당 됨
        • undefined(값x)
          • 값이 할당이 안 됨. 즉, 변수만 선언됨
  • 데이터 타입들이 왜 존자하는가?
    • 프로그래밍이란 것은 수많은 데이터를 입력⇒처리⇒출력하는 과정을 컴퓨터가 알아들을 수 있는 언어로 서술하는 것
      - 세상에는 무수히 많은 데이터들이 존재. 따라서 데이터들을 컴퓨터가 보다 빠르고 효율적으로 처리하기 위해 JS라는 프로그래밍 언어가 구분해 놓은 것
      • 데이터를 표현하기 위한 방법으로 기본타입(Primitive)과 객체(Object)타입으로 나뉜다.

연산자

  • 연산이란?

    • 어떤 데이터와 데이터를 같이 처리하여 그 결과값을 반환해주는 의미
  • 문자열 붙이기

      • 를 사용하여 문자열을 이어 붙인다.(주의, 문자열과 숫자를 이어 붙이면 숫자가 문자로 인식하여 return함)
    • 템플릿 리터럴(Template literals)
      • 백틱(``)을 사용하여 간결하게 문자열 데이터(+ 를 사용하지 않고 문자열 붙이기가 가능)를 표현함

        🔥 const pirce = 1000
        console. log((백틱)삼각김밥은 ${price}원입니다(백틱))
        ===
        console.log(’삼각김밥은’ + ‘price’ + ‘원입니다’)

  • 산술연산자(Numeric operators)

    • 숫자 데이터에 대한 여러 연산들이 가능함
    • 사칙연산
      • 더하기: +
      • 빼기: -
      • 곱하기: *
      • 나누기: /
    • 나머지 연산
      • 나누기 후 나머지: %
    • 거듭제곱
      • **
  • 증감연산자(Increment and Decrement operators)

    • 자기 자신의 값을 증가시키거나 감소시키는 연산자
      • ++ or —
    • 증감연산자를 변수 앞에 위치하나 뒤에 위치하나에 따라 차이
      • let count = 2
        const post = count++ or const post = ++count
        • 변수 뒤에 놓을 경우
          • 먼저 해당 변수에 값을 먼저 할당
          • 이후 1을 더해서 재할당
          • 예시

            const post = count
            count = count + 1
            🔥 consoe.log((백틱)count: ${count}, post: ${post}(백틱)
            // count: 3, post: 2

      • 변수 앞에 놓을 경우
        - 먼저 자기 자신에 1을 더해 재할당
        - 재할당한 값을 해당 변수에 할당
        - 예시
               count = count + 1
              const post = count
                 🔥 console.log((백)count: ${count}, post: ${post}(틱))
                  //count: 3, post: 3
                 
                  
  • 대입연산자 (Assignment operators)

    • 어떤 값을 어떤 변수에 할당한다는 표현

    • = or +=,-=

      🔥 totalPrice += myPrice // totalPrice = totalPrice + myPrice

      🔥 totalPrice -= myPrice // totalPrice = totalPrice - myPrice

  • boolean을 return한다는 공통점 있음

  • 비교연산자(Comparison operators)

    • 숫자값을 비교하는 연산자.
    • 비교연산자를 통해 얻는 return 값은 boolean타입.
    • 조건문에서 많이 활용됨.
    • console.log(1 < 2) // 1이 2보다 작은가? true
      console.log(2 <= 2) // 2가 2보다 작거나 같은가? true
      console.log(1 > 2) // 1이 2보다 큰가? false
      console.log(1 >= 2) // 1이 2보다 크거나 같은가? false
  • 논리연산자(Logical operators)

    • ||(or)

      • || 는 연산 대상 중 하나만 true 여도 true 리턴(둘 중 하나만 true면 return값 true)
    • &&(and)

      • && 는 연산 대상이 모두 true 여야만 true 리턴( 둘 다 true여야 return값 true)
    • !(not)

      • ! 는 true를 false로, flase를 true로 바꿔서 리턴
    • let a = true
      let b = true

      console.log(a && b) // true && true 이므로 결과값:true console.log(a || b) // true || true 이므로 결과값:true

      a= false console.log(a && b) // false && true 이므로 결과값:false console.log(a || b) // false || true 이므로 결과값:true

      b= false console.log(a && b) // false && false 이므로 결과값:false console.log(a || b) // false || false 이므로 결과값:false

      console.log(!a) // !false 이므로 결과값:true

  • 일치연산자

    • ===
      • 두 값이 일치하는지를 비교
      • 엄밀한(strict)일치연산자여셔 비교하는 두 값데이터타입값 자체가 정확히 일치해야한 return값이 true임
    • === 와 == 의 차이
      • ==
        • 비교하는 두 값의 데이터타입이 일치하지 않을 때 해당 값의 데이터타입을 자동으로 변환해주는 JS만의 특성이 있음
        • 자칫 개발자의 실수를 유발할 가능성이 크기에 실무에서 거의 쓰지 않음

조건문

  • 특정 조건을 만족했을 때만 해당 코드를 실행할 수 있도록 하는 구문. 조건을 boolean데이터(비교연산자, 논리연산자, 일치연산자)라 봐주면 좋다.

  • 구조

    • if (조건) {조건을 만족할 때 실행할 코드}
  • else

    • if 구문의 조건을 만족하지 않았을 때 해당 코드를 실행하는 키워드
  • else if

    • 보다 더 많은 조건을 판단하고 세분화하여 코드를 실행
    • 구조
      const age = 18
      if (shoesPrice < 20) { 
      	console.log('청소년입니다.')
      } else if (shoesPrice <= 8) {
      	console.log('어린입니다.')  
      } else {
      	console.log('성인입니다..')
      }

반복문

  • while
    • 특정 코드를 반복해서 실행. 조건을 설정해서 원하는 만큼 반복할 수 있다.
    • 구조
      • while (조건) { 조건을 만족할 때 실행할 코드 }

        let age = 20
        while (age< 25) {
        	console.log(`${age}.은 20대초반입니다.`)
        	age++ // 증감연산자를 활용해서 나이를 변화시킨다.
        }
    • 주의해야할 점은 반복문의 조건에 포함된 변수의 값을 계속 변화시켜줘서 언젠가는 반복문이 끝날 수 있도록 해줘야 한다는 것.
  • for
    • while 보다 좀 더 명시적으로 반복문의 조건을 표현.
    • 구조
      • for (begin; condition; step) { 조건을 만족할 때 실행할 코드 }
        1. temperature라는 변수를 선언하고 값을 할당 (begin)
        2. temperature가 25보다 작은지 연산합니다. 결과값이 true라면 계속 실행. false라면 for 문 종료 (condition)
        3. 중괄호 안의 코드가 실행.
        4. temperature에 1을 더해서 재할당하고 2번 과정부터 다시 반복 (step)
      • 예시
        for (let age = 26; age < 30; age++) {
        	console.log(`${age}도 정도면 적당한 나이입니다.`)
        }

반복문과 조건문 활용

  • 반복문과 조건문 활용
    • 우리가 짜는 프로그램은 반복문과 조건문의 무수한 집합이라고 해도 과언이 아니다.
    • 입력된 데이터에 대해 조건문을 활용해 수많은 조건으로 분기하고, 반복문을 활용하여 반복해서 처리하는게 프로그램이 주로 하는 일
    • 예시
      • 1부터 10까지의 숫자중 홀수인 경우는 ‘숫자..은 홀수입니다’ 짝수는 ‘숫자..은 짝수입니다’를 출력해보기
        for (let number = 1; number <= 10; number++) {
          if (number % 2 === 0) {
            console.log(`숫자${number}는 짝수입니다`);
          } else {
            console.log(`숫자${number}는 홀수입니다`);
          }
        }

함수

  • 함수의 정의
    • 특정 작업을 수행하는 코드의 집합
    • 반복되는 특정 작업을 수행하기 위해 고안됨. 마치 변수에 데이터를 할당해놓고 계속 사용하는 것처럼 함수도 비슷한 맥락임.
    • 함수의 장점
      • 긴 코드를 축약
      • 파라미터(매개변수,구멍뉘앙스)
        • 함수 하나로 다양한 기능을 만들 수 있음
          // 예시1
          function 알림창열기( ){
          	doucument.getElementById('alert').style.display = 'block';
          }
          
          알림창열기();
          
          function 알림창열기(구멍=변수느낌){
          	doucument.getElementById('alert').style.display = 구멍;
          }
          
          알림창열기('block'); //구멍안에 'block'이 들어감 
          알림창열기('none');  //구멍안에 'none'이 들어감
          //예시 2
          function plus( ){
          	2 + 1
          }
          function plus2( ){
          	2 + 2
          }
          function plus3( ){
          	2 + 3
          }
          
          // 각각
          plus( );
          plus2( );
          plus3( );
          function plus(구멍=매개변수?){
          	2 + 구멍
          }
          plus(1=인수?);
          plus(2);
          plus(3);
          • 결론적으로 함수를 더 만들 필요 없이 하나의 함수로 여러 기능을 할 수 있게 한다.
  • 함수의 선언
    • 변수를 선언하고 해당 변수에 값을 할당 하는 것과 비슷한 맥락 즉, 함수도 선언을 하고 해당 함수가 실행할 코드의 집합을 만들어서 저장. function 함수명(매개변수들...) { 이 함수에서 실행할 코드들 return 반환값 }
      function 함수명( ) {
      	console.log('사랑합니다');
      }
      
      console.log(함수명( )); // 
      or 
      
      function calCulate(a) {
        sum = 1 + a;
        return sum;
      }
      
      • 함수명: 함수가 하는 일들을 대표할 수 있는 이름
        매개변수: 매개변수(parameter) 는 해당 함수의 바디에 있는 코드에서 사용할 수 있는 일종의 변수이고, 함수 호출시 전달 즉,함수를 실행하기 위해서 필요한 일종의 input
        중괄호 안: 이 함수가 해야할 일들을 코드로 쭉 작성하고, 반환해야 할 값을 명시
  • 함수의 호출
    • 함수를 사용하기 위해서는 호출
      • const 변수명 = 선언한 함수명( )
      • let 변수명 = 선언한 함수명( )
      • 구조
        const a = 1000
        
        // 함수의 호출
        const avg1 = calculateAvg(a)
    • 대개 그냥 쓰거나 인수를 넣어서 함수 선언부에 보내줌
  • 함수 호출시 코드의 흐름
    • 함수를 호출하면서 변수 priceA와 priceB(인수=변수에 값이 할당된 것?)를 매개변수로 전달
    • 함수의 바디코드가 실행됨. 1번에서 전달한 매개변수의 값(인수)이 함수 선언시 썼던 매개변수명인 price1, price2에 할당됐다고 치면 됨.
    • 함수의 바디 코드가 최종적으로 변수 avg를 리턴하고, 이것이 변수 avg1에 할당
  • 예시
    function calculateAvg(price1, price2, price3) {
    	const avg = (price1 + price2 + price3) / 3
    	return avg
    }
    
    const priceA = 1000
    const priceB = 2000
    const priceC = 3000
    const avg = calculateAvg(priceA, priceB, priceC)
    console.log(`평균가격: ${avg}`)
    1. 함수 calculateAvg를 호출하면서 변수 price A,B,C를 매개변수로 전달
    2. 함수 calculateAvg의 바디 코드가 실행됨 이 때 1번에서 전달한 매개변수의 값이 함수를 선언시 썼던 매개변수명인 price1, 2, 3에 할당 됨
    3. 함수의 바디 코드가 최종적으로 변수 avg를 리턴하고 이것이 calculateAvg에 할당됨.

클래스와 객체

  • 객체(Object)타입

    • 정의
      • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것중에서 자신만의 속성을 갖고 있고 다른 것과 식별 가능한 것.
      • 데이터의 기본 타입들중에서도 관련 있는 데이터들을 묶어서 특정 데이터 타입으로 표현
    • 구조
      • 하위 정보(기본 타입)를 다 담을 수 있는 좀 더 큰 범위의 데이터 타입
        const notebook1Name = 'Macbook'
        const notebook1Price = 2000000
        const notebook1Company = 'Apple'
        이 아니라
        let Notebook = { 
        name: 'Macbook', 
        price: 2000000, 
        company: 'Apple' 
        } 
  • 클래스란

    • 객체를 정의하는 틀 또는 설계도와 같은 의미 즉, object을 찍는 기계느낌
    • 클래스도 미리 정의해놓으면 필요할 때마다 그 클래스를 사용해서 동일한 모양을 가진 객체를 만들 수 있다.
    • 객체를 만들때 마치 설계도처럼 사용하는 것. 즉, 흔히들 클래스는 템플릿(샘플?)이고 객체는 이를 구체화한 것이라고도 함.
    • 특징
      • 데이터(값)를 나타내는 속성 정의(constructor 함수 활용) = field라 불림
      • 함수와 같이 특정 코드를 실행하게 해주는 메소드 정의 (함수=메소드?)(메소드 함수 활용) =method라 불림
  • 클래스(Class)선언

    • 구조
      class Notebook {
      	constructor(name, price, company) {
      		this.name = name
      		this.price = price
      		this.company = company
      	}
      }
    • 설명
      1. class 키워드와 클래스명

        class는 클래스를 선언하는 문구. 그 뒤에 바로 클래스 명이 나온다. 클래스명도 마치 변수명처럼 내가 표현하고자 하는 데이터를 잘 나타낼 수 있는 이름으로 하는 것이 좋다.

      2. 생성자 (constructor)

        중괄호 안에는 생성자를 적음. 생성자가 함수와 비슷한 듯? 이 생성자는 말 그대로 나중에 객체가 '생성'이 될 때 자바스크립트 내부에서 호출이 되는 함수라고 생각. 생성자를 좀 더 살펴보면(생성자의 역할은?) 3개의 매개변수를 정의했고 각각의 이름은 name, price, company.

      3. this(자기자신이라는데 클래스명??)와 속성(property)

        생성자의 바디를 보면 this 라는 키워드가 등장. 이 this는 클래스를 사용해 만들어질 객체 자기 자신을 의미하고 this 뒤에 붙는 name, price, company는 객체의 속성입니다.
        생성자의 바디에서는 함수 호출시 전달할 매개변수 name, price, compay(인자=값을 가진 변수)를 객체의 속성 name, price, company에 각각 할당하고 있는 것입니다.

  • 객체 생성

    • 구조
      const notebook1 = new Notebook('MacBook', 2000000, 'Apple')
    • 설명
      • 클래스를 활용해 객체를 만들 때new 라는 키워드를 먼저 써주고 클래스명을 마치 함수처럼 호출하면서 매개변수값을 전달함 ⇒ 그러면 해당 클래스의 생성자가 호출되면서 객체가 생성되고 객체의 속성들에 매개변수값들이 할당.
      • 만들어진 객체는 변수에 할당. 객체도 변수에 할당하고 나면 해당 변수를 활용해 객체에 접근할 수 있다.
      • 객체의 속성 하나하나에 접근해 데이터를 갖고와야 할 때 this.속성명 사용
  • 클래스에 대한 설명(클래스자체에 대한 이해를 도와줌) by youtube 코딩애플님

    • 객체(Object)의 형식이 비슷하여서 미리 만들어 놓고 쓰는 맥락, object뽑는 기계. 즉, 함수와 같은 맥락(클래스 = 함수)
    • 비교
      • 옛날 문법으로 비교
        // 이 object 형식을 비슷하게 많이 만들 경우 일일이 쓰기엔 시간낭비.
        // 함수처럼 만들기로 했음 그것이 Class
        var nunu = {
        	q : 'consume';
        	w : 'snowball':
        } 
        var garen = {
        	q : 'strike';
        	w : 'courage';
        }
        
        function 기계() {
        	this.q = 'consume';
        	this.w = 'snowball';
        }
        
        var nunu = new 기계()    
        var garen = new 기계()   =  첫 번째 코드 식 // 무려 코드 줄이 3줄 단축!
      • ES6기준 비교
        let nunu = {
        	q : 'consume';
        	w : 'snowball':
        } 
        let garen = {
        	q : 'strike';
        	w : 'courage';
        }
        
        class 기계=Hero {
        	constructor(name, price, company) {
        		this.q = 'consume';
        		this.w = 'snowball';
        	}
        }
        
        const nunu = new Hero()
        const garen = new Hero()
  • 클래스에 대한 설명(constructor에 대한 이해를 도와줌) by 생활코딩님

    • 어떤 객체를 생성할 때 그 객체의 초기상태를 세팅하는? constructor 함수의 본문과 같은 역할(this.속성들의 집합)을 어떻게 할 것인가에 대해
    • 메소드란?(Method)
      • 객체에 속하는 함수
      • 만들때
        • 흔히 함수를 만들 때 쓰는 function을 쓰지 않음. 그냥 함수명(){}로 함수를 정의. function이 굳이 필요할까라는 생각을 했나 봄
        • 어떤 객체가 생성될 때 그 객체의 초기상태(객체의 형태?)를 지정하기 위해 객체가 만들어 지기 직전에 실행되도록 약속되어 있는 함수가 있다. 따라서 그 함수를 정의하면 목적( 객체가 생성될 때 그 객체의 초기상태를 지정)을 달성할 수 있지 않을까?
          // 객체의 초기상태? 
          {
          		this.name = name
          		this.price = price
          		this.company = company
          	}
          • 그 함수의 이름은 constructor!!
            constructor(name, price, company) {
            		this.name = name
            		this.price = price
            		this.company = company
            	}
  • 메소드(method)

    • 정의
      • 특정 코드를 반복할 때 함수로 특정 코드를 정의하여 재사용하는 것처럼 메소드도 같은 맥락
      • 어떠한 특정 작업을 수행하기 위한 명령문의 집합
    • 메소드선언
      • 메소드명( ) {호출시 실행할 코드}
      • 클래스class안에서 함수선언과 같은 역할
        // 클래스 선언
        class Product {
        	constructor(name, price) {
        		this.name = name
        		this.price = price
        	}
        // 메소드 선언
        	printInfo() {
        		console.log(`상품명: ${this.name}, 가격: ${this.price}`)
        	}
        }
    • 메소드 호출
      • class명.메소드명( )
  • 객체 리터럴(object Literal)

    • js에서는 객체리터럴을 활용해서 바로 객체를 만들 수 있다. 클래스와 같은 템플릿 없이 빠르게 객체를 만들 수 있는 방법
    • 2개 이상의 속성과 메소드가 있을 때는 쉼표로 구별한다. 또한 가독성을 위해 줄바꿈도 해준다.
    • 구조 const 변수명 = { 속성명: 데이터, 메소드명: function () { 메소드 호출시 실행할 코드들 } } 변수명.메소드명( ) ⇒ 메소드 호출
      const computer = {
      	name: 'Apple Macbook',
      	price: 20000,
      	printInfo: function () {
      		console.log(`상품명: ${this.name}, 가격: ${this.price}`)
      	}
      }
      
      computer.printInfo()

배열

  • 배열
    • 데이터를 표현하기 위한 방법 중 하나로 같은 형식의 많은 데이터를 순서대로 저장하고자 할 때는 데이터의 수만큼 변수들을 선언해주기에는 귀찮음
      • 같은 타입의 데이터들을 하나의 변수에 할당하여 관리하기 위해 사용하는 데이터 타입
    • 같은 형식의 데이터를 순서대로 저장하는 것
  • 배열의 선언
    1. Array라는 클래스를 활용해서 순서를 나타내는 객체를 만들었다고 생각

    2. 배열을 바로 만드는 방법

      // 1번째 방법
      const arr1 = new Array(1, 2, 3, 4, 5)
      
      // 2번째 방법
      const arr2 = [1, 2, 3, 4, 5]
  • 배열 안의 데이터
    • 배열에 있는 데이터 각각을 요소(element)라고 부름.
    • 객체도 속성명을 통해 해당 데이터에 쉽게 접근하듯이 배열에서는 인덱스(index)그 역할을 함
      • 여기서 인덱스(index)는 배열 안의 데이터들이 자리잡은 순서. 특이한 점은 인덱스가 1이 아닌 0부터 시작한다는 것.

        const fruits = ['딸기', '당근', '수박', '참외', '메론']
        
        console.log(fruits[0]) // o번 인덱스를 통해서 데이터에 접근. 딸기
        console.log(fruits[1]) // 1번 인덱스를 통해서 데이터에 접근. 당근
        console.log(fruits[2]) // 2번 인덱스를 통해서 데이터에 접근. 수박
        console.log(fruits[3]) // 3번 인덱스를 통해서 데이터에 접근. 참외
        console.log(fruits[4]) // 4번 인덱스를 통해서 데이터에 접근. 메론
  • 배열의 길이
    • 배열이 얼마나 많은 데이터를 갖고 있는지, 그 길이를 알 필요성이 부각되어짐.
    • length라는 속성을 사용
      const fruits = ['딸기', '당근', '수박', '참외', '메론']
      
      console.log(fruits.length) // 5을 출력
  • 요소 추가와 삭제
    • 배열을 선언하고 난 후에 새로운 요소를 더하거나 뺄 때
      • push와 pop 메소드를 이용
        const fruits = ['딸기', '당근', '수박', '참외', '메론']
        
        fruits.push('배') // 배열의 마지막에 배 추가
        console.log(fruits) // ultraviolet이 추가된 rainbowColors 출력
        
        fruits.pop() // 배열의 마지막 요소 배를 제거
        console.log(fruits) // 배가 제거된 fruits 출력
  • 배열과 반복문
    • 배열의 요소들을 하나씩 꺼내서 출력해야 하는 코드를 작성할 경우
      • 반복문 활용
        const fruits = ['딸기', '당근', '수박', '참외', '메론']
        
        for (let i = 0; i < fruits.length; i++) {
        	console.log(fruits[i])
        }
      • 더 자주 쓰이는 for문
        const fruits = ['딸기', '당근', '수박', '참외', '메론']
        
        for (const fruit of fruits) {
        	console.log(fruit)
        }
        배열에서 요소들을 차례대로 하나씩 찾아 fruit 변수에 할당. 자동으로 배열의 끝까지 반복문이 실행됨. 그래서 쓰기 편함.
        • 응용( 총 합계와 평균 구하기)
          const priceList = [1000, 2000, 4000, 8000, 16000]
          let sum = 0
          
          for (const price of priceList) {
          	sum += price
          }
          
          const avg = sum / priceList.length
          console.log(`합계: ${sum}, 평균: ${avg}`)
          • 반복문을 활용해 배열 안 요소에 접근하고, 그 값들을 변수 sum에 누적시키는 것.

피드백

  • 문제상황
    • 강의를 들으면서 주제별로 끝나면 필기를 했어야 하는데 그러지를 못하고, 필기를 실시간으로 병행하며 했음. 그러다 보니 또 모르는게 나오면 꼬리에 꼬리를 무는 방식으로 강의를 듣다 보니 온전한 집중을 못했다.
  • 해결방안
    • 일단 강의를 듣고 강의 내용을 요약한다. ⇒ 그런 다음 모르는 내용을 더 찾아서 공부 후에 추가적으로 필기한다.
  • 돌아보며
    • 아직 모르는 것이 많아 계속 꼬리에 꼬리를 무는 것 같다. 해결방안을 토대로 적용해본 후 더 나은 학습을 향해 나아가보려 한다.
profile
인풋보다는 아웃풋을 중점적으로

0개의 댓글