CS50 컴퓨팅 사고

Yunwoo Ji·2021년 6월 1일
0

CS50

목록 보기
1/4
post-thumbnail

모두를 위한 컴퓨터 과학 (CS50 2019) 강의를 듣고, 기억하고 싶은 것을 정리한 내용입니다.
출처 : https://www.edwith.org/cs50

1) 2진법

컴퓨터 과학

컴퓨터 과학은 문제 해결에 대한 학문이다. 문제 해결은 입력을 전달받아 출력을 만들어내는 과정이고, 그 중간에 있는 과정이 컴퓨터 과학이다.

입력과 출력을 표현하기 위해 모두가 동의할 약속(표준)이 필요하다. 따라서 컴퓨터 과학의 가장 첫 번째 개념은 어떻게 표현하는지에 대한 표현 방법이다.

2진법

컴퓨터는 오직 0과 1로만 데이터를 표현하는데, 이를 2진법이라고 한다. 컴퓨터는 오로지 0과 1만으로 숫자 뿐만 아니라 글자, 사진, 영상, 소리 등을 저장할 수 있다. 2진법은 전기를 통해 연산하는, 즉 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법이다. 컴퓨터에는 많은 스위치(트랜지스터)가 있고 on/off 상태를 통해 0과 1을 표현한다.

컴퓨터는 2진법에서 하나의 자릿수를 표현하는 단위를 비트(bit)라고 한다.

비트

정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 쓴다. 비트는 0과 1, 두 가지 값만 가질 수 있는 측정 단위이다. 디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있다. 또한 컴퓨터는 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있다.

비트열

하나의 비트는 0과 1, 이 두 가지의 값만 저장할 수 있다.

하지만 비트 한 개는 많은 양의 데이터를 나타내기에 턱없이 부족하다. 그렇기 때문에 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용한다. 바이트(byte)는 여덟 개의 비트가 모여 만들어진 것이다. 하나의 바이트에 여덟 개의 비트가 있고, 비트 하나는 0과 1로 표현될 수 있기 때문에 2^8 = 256 개의 서로 다른 바이트가 존재할 수 있다.

2) 정보의 표현

문자의 표현

컴퓨터는 스위치를 ON/OFF하면서 숫자를 표현한다. 문자를 숫자로 표현 할 수 있도록 정해진 약속(표준)이 있기 때문에 문자도 표현이 가능하다.

그 중 하나는 ASCII(아스키코드) 이다.

이 외에도 Unicode라는 표준에서는 더 많은 비트를 사용하여 더 다양한 다른 문자들도 표현가능 하도록 지원하고 있다. ASCII로는 문자들을 표현하기에 충분하지 않았기 때문이다.

그림, 영상, 음악의 표현

문자와 같이 그림도 역시 숫자로 표현할 수 있다.

각각의 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 특정한 색을 갖게 된다. 이 숫자들을 표현하는 방식을 RGB(Red, Green, Blue)라고 한다.

영상 또한 수많은 그림을 빠르게 연속적으로 이어 붙여놓은 것이기 때문에 숫자로 표현이 가능하다.

음악도 마찬가지로 각 음표를 숫자로 표현할 수 있다.

3) 알고리즘

알고리즘

숫자, 글자, 색깔 등을 컴퓨터가 이해할 수 있는 2진법으로 표현하는 것을 배웠다. 이것은 입력(input)에 해당하는 것이다.

그럼 어떻게 입력(input)에서 출력(output)을 얻을 수 있을까? 컴퓨팅은 입력을 받아 그 입력을 처리한 후 출력하는 과정이다. 알고리즘은 입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정을 뜻한다.

즉, 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.

이러한 일련의 순서적 규칙들을 어떻게 나열하는지에 따라 알고리즘의 종류가 달라진다. 같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있다.

정확하고 효율적인 알고리즘

알고리즘의 평가할 때는 정확성도 중요하지만, 효율성도 중요하다. 효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에 대한 것이다.

의사코드

알고리즘은 아래와 같은 의사코드라는 방식으로 보다 명료하게 정리할 수 있다. 의사코드는 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와준다.

profile
Front-End !

0개의 댓글