본문 바로가기

NOTES/CS50

[CS50] Chapter 1. 컴퓨팅 사고

 

최초작성일: 2023-01-24

부스트코스 <모두를 위한 컴퓨터 과학 (CS50 2019)> 강의 수강

1. 컴퓨팅 사고 (Computational Thinking, Scratch)

1. 2진법

  • 컴퓨터 과학이 무엇인지 정의하고, 컴퓨터가 정보를 표현하는 방법에 대해 설명할 수 있다.
  • 컴퓨터 과학, 2진법, 비트, 바이트

컴퓨터 과학

문제를 해결하는 과정

  • 어떤 입력이 있을 때 어떠한 출력을 찾는, 문제에 대한 답을 찾는 중간 과정
  • 입력과 출력을 표현하기 위해서는 모두가 동의할 약속(표준)이 필요 -> 표현 방법

2진법

  • 0과 1로만 표현
  • 컴퓨터는 2진법으로 글자, 사진, 영상, 소리 등을 저장
  • 전기가 있고 없고가 컴퓨터에 대한 우리의 입력 방식
  • 전기를 통해 연산하는, 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 2진법이 적합
  • 컴퓨터에는 트랜지스터라는 많은 스위치가 있고 on / off 상태로 1과 0을 표현

비트(bit)

컴퓨터가 2진법에서 하나의 자릿수를 표현하는 단위

  • binary digit(이진 숫자)의 줄임말
  • 0과 1, 두 가지 값만 가질 수 있는 측정 단위
  • 디지털 데이터를 여러 비트들로 나타내어 많은 양의 정보를 저장할 수 있음
  • 컴퓨터는 저장된 데이터를 수정하기 위해 수학적 연산을 수행할 수 있음

비트열

  • 비트 한 개는 많은 양의 데이터를 나타내기엔 부족
  • 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용
  • 바이트(byte): 8개의 비트가 모여 만들어짐. 2^8 = 256 개의 서로 다른 바이트 존재
  • KB = 1000 B, MB = 1000 KB, ...

 

2. 정보의 표현

  • 컴퓨터가 문자, 사진, 영상, 음악 등 다양한 정보를 처리하는 방식을 설명할 수 있다.
  • ASCII, 유니코드, RGB

문자의 표현

ASCII

American Standard Code for Information Interchange 미국정보교환표준부호

  • 총 128개의 부호(기본 아스키코드)
  • 문자, 기호 등을 10진수로 약속, 컴퓨터가 그 수를 2진법으로 표현하여 다룸

유니코드(Unicode)

  • 아스키코드는 8비트(확장 아스키 코드)만을 사용해 문자들을 표현하기에 충분하지 않았음
  • 유니코드는 8, 16, 24, 32비트까지도 사용
  • 이모티콘도 표현 가능

그림, 영상, 음악의 표현

RGB

  • 숫자를 통해 색깔을 나타내는 체계
  • 모든 색들은 빨강, 초록, 파랑으로 이루어져있고 이를 조합하면 어떤 색이든 만들 수 있다.
  • 그림은 수많은 점(픽셀)으로 이루어져 있고 각각의 픽셀은 세 가지 색을 조합하여 특정 색을 갖게 됨
  • 색이 있는 여러 점들이 모여 사진이 되고, 사진들이 모여 영상이 됨

음악

  • 음, 음의 길이, 음량 등을 숫자로 양자화

정리

어떤 방법을 사용해서 정보를 나타내든 0과 1로 표현된다.

 

3. 알고리즘

  • 일상 생활에서 하는 일들을 컴퓨터가 이해할 수 있는 알고리즘으로 표현할 수 있다.
  • 효율적인 알고리즘에 대해 설명할 수 있다.
  • 알고리즘, 의사코드

알고리즘

문제를 해결하는 단계적 방법

  • 입력에서 받은 자료를 출력 형태로 만드는 처리 과정
  • 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열

 

  • 대부분의 경우 문제 해결은 이미 갖고 있는 직관이나 생각을 기계나 다른 사람들이 이해할 수 있는 방식으로 번역하는 것
  • 어떤 알고리즘이 효율적인 알고리즘인가?

의사코드(pseudo code)

컴퓨터가 수행할 작업을 프로그램 언어가 아니라 사람이 사용하는 언어로 알고리즘의 논리적 절차를 작성한 코드

전화번호부에서 Mike Smith 찾기

  1. 전화번호부를 든다.
  2. 전화번호부의 중간을 편다.
  3. 페이지를 살펴본다.
  4. Smith가 그 페이지에 있으면
    1. Mike에게 전화
  5. Smith가 그보다 앞에 있으면
    1. 책의 앞부분의 중간을 편다.
    2. 3번으로 가서 반복
  6. Smith가 그보다 뒤에 있으면
    1. 책의 뒷부분의 중간을 편다.
    2. 3번으로 가서 반복
  7. 끝까지 반복해도 Smith가 없으면 탐색을 그만 둔다.
  • '든다', '편다' 등 동사들은 함수에 해당
  • '~면' 은 조건에 해당. 여러 선택지(branch) 중 하나를 고르는 것.
  • 결정을 내리기 위한 질문, 예/아니오, 참/거짓으로 나오는 질문들은 불리언(Boolean)
  • 반복하는 부분은 루프(loop)

 

4. 스크래치: 기초

  • 스크래치를 이용하여 간단한 알고리즘을 구현할 수 있다.
  • 스크래치, 블록

스크래치

  • 블록형 프로그래밍 언어

스크래치 블록

  • 하나의 블록이 블랙 박스의 역할

 

5. 스크래치: 심화

  • 스크래치를 이용하여 보다 복잡한 알고리즘을 구현할 수 있다.
  • 스크래치, 블록

추상화

  • 기능을 어떻게 구현했는지보다 기능에 신경을 씀
  • 기능 단위로 새로운 블록을 만들면 코드를 덜 복잡하고 더 짧게 만들 수 있음

'NOTES > CS50' 카테고리의 다른 글

[CS50] Chapter 6. 자료구조  (0) 2023.03.04
[CS50] Chapter 5. 메모리  (0) 2023.02.25
[CS50] Chapter 4. 알고리즘  (0) 2023.02.13
[CS50] Chapter 3. 배열  (2) 2023.02.04
[CS50] Chapter 2. C언어  (1) 2023.01.30