[CS50] 컴퓨팅 사고

업데이트:




컴퓨터 과학이란?

컴퓨터 과학은 문제 해결에 대한 학문이다. 문제 해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정이다. 그 중간, 입력과 출력의 중간에 있는 과정이 바로 컴퓨터 과학이다. 이러한 입력과 출력을 표현하기 위해서는 약속(표준)이 필요하다.




2진법

  • 우리가 일상 생활에서 사용하는 0~9 총 10개의 숫자로 표현하는 건 10진법이다.
  • 컴퓨터는 0과 1 두 개의 숫자로만 모든 데이터를 표현한다. 즉, 2진법이다.
  • 2진법은 두 개의 숫자로만 가지고 있으므로 각 자리수가 2의 거듭제곱을 의미한다.
    이진법1
  • 2진법은 전기를 통해 연산하는 컴퓨터에게 적합한 방법이다. 컴퓨터에는 많은 스위치(트렌지스터)가 있고 on/off 상태를 통해 0과 1을 표현한다.
  • 비트(bit)
    • 컴퓨터에서 2진법 하나의 자릿수를 표현하는 단위
    • 0과 1, 두 가지 값만 가질 수 있는 측정 단위
  • 비트열
    • 하나의 비트는 0(OFF), 1(ON)을 나타낸다.
    • 이 비트들을 모아 많은 양의 데이터를 나타내기 위해 비트열을 사용한다.
    • 1byte = 8bit, 1byte로 표현할 수 있는 범위는 2^8 = 256
      이진법2




정보의 표현

문자의 표현

  • 아스키코드(ASCII)
    • 총 128개의 부호로 정의되어 있다.
    • ‘A’의 경우는 10진수 기준으로 65
      • A를 2진법으로 표현하면 ? -> 1000001
  • ASCII로는 표현할 수 없는 문자들이 많아 유니코드(Unicode) 표준도 있다.
  • 유니코드로는 이모티콘까지 표현할 수 있다.


그림, 영상, 음악의 표현

  • 픽셀은 빨간색, 초록색, 파란색을 띄고있는 작은 점을 말한다.
  • 이 각각의 픽셀들이 세 가지 색을 서로 다른 비율로 조합해 특정한 색을 갖게 된다.
  • 예를 들면 빨 72, 초 72, 파 33을 섞으면 노란색이 된다.
  • 이 숫자들을 표현하는 방식을 RGB(Red, Green, Blue)라고 한다.
  • 영상 또한 수많은 그림을 빠르게 연속적으로 이어 붙여놓은 것이라 숫자로 표현 가능하다.
  • 음악도 각 음표를 숫자로 표현할 수 있다.




알고리즘

  • 알고리즘은 입력(input)에서 받은 자료를 출력(output) 형태로 만드는 처리 과정이다.
  • 즉, 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.
  • 알고리즘을 평가할 때는 정확성도 중요하지만, 효율성도 중요하다.
  • 전화번호부 책에서 ‘Mike smith’를 찾으려면 두 가지의 방법이 있다.
    • 첫 장부터 한 장씩 넘겨서 찾는 법
    • 정렬된 이름을 참고하여 책 페이지의 절반씩을 넘기면서 찾는 법
    • 이 두 알고리즘에서 더 효율적인 건 두 번째 방법이다.

의사코드

  • 의사코드는 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 해준다.
  • 위의 효율적인 두 번째 알고리즘을 의사코드로 표현하면 다음과 같다.
    1.  Pick up phone book
    2.  Open to middle of phone book
    3.  Look at page
    4.  If Smith is on page
    5.     Call Mike
    6.  Else if Smith is earlier in book
    7.     Open to middle of left half of book
    8.     Go back to line 3
    9.  Else if Smith is later in book
    10.     Open to middle of right half of book
    11.     Go back to line 3
    12. Else
    13.     Quit 
    


  • 위의 의사코드에는 C언어나 파이썬과 같은 언어에서도 볼 수 있는 공통점이 있다.
    아래 작은따옴표로 감싸진 부분들은 앞으로 함수(functions)로 불리게 된다. 함수는 컴퓨터에게 이 경우에는 사람에게 무엇을 할지 알려주는 동사와 같다.
    1.  'Pick up' phone book
    2.  'Open to' middle of phone book
    3.  'Look at' page
    4.  If Smith is on page
    5.     'Call' Mike
    6.  Else if Smith is earlier in book
    7.     'Open to' middle of left half of book
    8.     Go back to line 3
    9.  Else if Smith is later in book
    10.     'Open to' middle of right half of book
    11.     Go back to line 3
    12. Else
    13.     'Quit'
    


  • 아래 작은따옴표로 감싸진 부분은 조건이다. 조건은 여러 선택지 중 하나를 고르는 것이다.
    1.  Pick up phone book
    2.  Open to middle of phone book
    3.  Look at page
    4.  'If' Smith is on page
    5.     Call Mike
    6.  'Else if' Smith is earlier in book
    7.     Open to middle of left half of book
    8.     Go back to line 3
    9.  'Else if' Smith is later in book
    10.     Open to middle of right half of book
    11.     Go back to line 3
    12. 'Else'
    13.     Quit 
    


  • 아래 작은따옴표로 감싸진 부분은 불리언(Boolean)이다. 답이 Yes 또는 No 혹은 True(참) 또는 False(거짓), 아니면 2진법에서 0 또는 1로 나오는 질문을 뜻한다.
    1.  Pick up phone book
    2.  Open to middle of phone book
    3.  Look at page
    4.  If `Smith is on page`
    5.     Call Mike
    6.  Else if `Smith is earlier in book`
    7.     Open to middle of left half of book
    8.     Go back to line 3
    9.  Else if `Smith is later in book`
    10.     Open to middle of right half of book
    11.     Go back to line 3
    12. Else
    13.     Quit 
    


  • 마지막으로 아래 작은따옴표로 감싸진 부분은 루프(Loop)라고 한다. 루프는 계속해서 반복하는 순환이다.
    1.  Pick up phone book
    2.  Open to middle of phone book
    3.  Look at page
    4.  If Smith is on page
    5.     Call Mike
    6.  Else if Smith is earlier in book
    7.     Open to middle of left half of book
    8.     `Go back to line 3`
    9.  Else if Smith is later in book
    10.     Open to middle of right half of book
    11.     `Go back to line 3`
    12. Else
    13.     Quit 
    




스크래치 - 기초

  • 스크래치
  • 왼쪽에는 함수나 변수 등을 나타내는 여러 가지 색깔의 퍼즐 조각이 있다.
  • 화면 중간에는 하얀 캔버스가 있으며, 퍼즐 조각을 끌어서 프로그램을 만들 수 있다.
  • 오른쪽에는 알고리즘 결과를 보여준다.
    스크래치




스크래치 - 심화

변수와 루프

  • 프로그래밍에서는 여러 작업을 동시에 수행할 수 있다.
  • 동시에 병렬로 돌아가거나 반복한다.
  • 변수를 사용하면 정보를 저장하고 다시 재사용할 수 있다.


변수와 조건문

  • 조건문을 활용하면 더 복잡한 프로그램도 가능하다.
  • 참(True) 또는 거짓(False)값을 가지는 불리언 변수를 사용한다.




퀴즈
퀴즈

태그:

카테고리:

업데이트:

댓글남기기