[CS50] 컴퓨팅 사고

희진·2021년 9월 5일
0

CS50

목록 보기
1/3
post-thumbnail

본 포스트는 네이버 boostcourse 의 '모두를 위한 컴퓨터 과학 (CS50 2019)'을 바탕으로 작성되었습니다.

컴퓨터는 오직 0과 1의 숫자만 이해할 수 있다. 그럼에도 숫자 외에 다양한 데이터들을 표현한다.

이는 컴퓨터가 입력받은 것을 출력하는 과정 사이에 컴퓨터 과학이라는 문제 해결 과정이 존재하기 때문이다.

2진법

우리는 일상에서 10진법을 사용하지만, 컴퓨터는 오직 0과 1만 사용한다. 이렇게 0과 1만으로 데이터를 표현하는 방법을 2진법이라고 한다.

비트

2진법으로 나타낸 값을 측정하는 단위를 비트(bit)라고 한다. 컴퓨터는 0과 1 두 가지 값을 가지고도 많은 양의 데이터를 표현할 수 있다.

바이트

8개의 비트가 모여서 만들어진 단위를 바이트(byte)라고 한다. 하나의 바이트에는 8개의 비트가 있고, 비트 하나는 0과 1로 표현될 수 있기 때문에 2^8 = 256개의 서로 다른 바이트가 존재할 수 있다.

트랜지스터

transistor-img

컴퓨터가 0과 1 두 가지 값을 저장할 때, 컴퓨터는 이를 물리적으로 표현하기 위해 일종의 스위치를 켜고 끄는 작업을 하게 되는데, 이 스위치를 트랜지스터라고 한다.

컴퓨터 내부에는 수많은 트랜지스터들이 있으며, 트랜지스터의 on/off 상태를 통해 0과 1을 표현한다.

정보의 표현

컴퓨터가 오직 0과 1만을 이해할 수 있다면 이 두 숫자로 어떻게 다양한 정보들을 표현하는 것일까?

ASCII

ascii-code-img

'ASCII 코드'는 숫자로 문자를 표현할 수 있도록 표준으로 정한 128개의 부호이다.

예를 들어 우리가 알파벳 대문자 'A'라는 문자를 표현하려면 65라는 10진수 숫자로 나타낼 수 있다. 이를 2진법으로 바꾸면 1000001 이라는 수가 나온다.

유니코드

유니코드 참고 사이트

ASCII 코드는 영어 외의 다른 언어를 표현하기에는 충분하지 않다는 한계가 존재했다. 그래서 영어를 포함한 다양한 언어들, 심지어는 이모티콘까지도 표현할 수 있는 유니코드(Unicode)라는 표준을 만들게 된다.

유니코드는 ASCII의 상위집합으로, ASCII는 7비트까지만 사용해 문자를 표현했지만 유니코드는 32비트까지 사용할 수 있기 때문에 더 많은 종류의 문자들을 표현하는 것이 가능하다.

RGB

사진이나 영상을 표현하는 방법 또한 비슷한 원리가 적용된다.

우리가 보는 사진을 가까이 다가가서 보면, 그 사진이 수많은 빨간색, 초록색, 파란색 점들이 모여 나타내고 있음을 알 수 있다. 세 가지 색을 서로 다른 비율의 숫자로 조합하면 특정한 색을 갖게 되고, 이렇게 만들어진 점들이 모여서 하나의 사진을 만들어 내는 것이다.

이렇게 세가지 색의 숫자들로 색을 표현하는 방식을 RGB라고 한다. 가령 😊 라는 이모티콘 얼굴의 노란색 한 점은 빨간색 72, 초록색 72, 파란색 33을 조합해서 만들 수 있다.

영상 또한 사진 한장 한장을 빠르게 넘겨 만든 것이기 때문에 사진과 같은 RGB 코드로 표현이 가능하다.

알고리즘

algorithm-img

알고리즘은 어떠한 문제를 해결하는 방법을 기계가 이해할 수 있는 방식으로 번역하는 과정이다.

좀 더 컴퓨터의 입장에서 접근하면, 입력된 값(input)을 출력값(output)의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.

하나의 문제 안에 다양한 해결 방법이 존재할 수 있기 때문에, 이러한 규칙들을 어떻게 나열하는 지에 따라 알고리즘의 종류가 달라진다.

의사 코드(Pseudo code)

의사 코드는 컴퓨터가 수행할 작업을 프로그램 언어가 아닌 사람이 사용하는 언어로 논리적인 절차를 작성한 코드이다.

pseudo-code-img

위와 같은 의사코드를 보면 프로그래밍 언어들에서 볼 수 있는 공통점들이 몇 가지 있다.

함수(functions)

functions-img

함수란 컴퓨터에게 무엇을 할 지 알려주는 동사와 같다.

조건(conditions)

conditions-img

조건은 여러 선택지 중 하나를 고르는 일을 말한다.

불리언 표현(Boolean expression)

boolean-img

예나 아니오, 참 또는 거짓으로 나오는 질문을 말한다. 컴퓨터는 true 를 1, false 를 0으로 받아 명령을 수행하게 된다.

루프(loops)

loops-img

무언가를 계속해서 반복하는 절차를 '루프'라 한다.

이들이 바로 알고리즘을 구성하는 요소들이다. 이렇게 함수, 조건, 불리언, 루프 등을 사용해 순차적인 명령을 내리는 것을 절차적 프로그래밍이라 한다.

profile
하루하루는 성실하게 인생 전체는 되는 대로.

0개의 댓글