CS 기초강의_01컴퓨팅 사고

Eugenius1st·2022년 6월 3일
0

CS기초강의

목록 보기
1/16
post-thumbnail

01. 컴퓨터 과학

컴퓨터 과학은 문제 해결에 대한 학문입니다.

문제 해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정입니다.

그 중간에 있는 과정이 바로 컴퓨터 과학입니다.

이러한 입력과 출력을 표현하기 위해선 우선 모두가 동의할 약속(표준)이 필요합니다.

따라서 컴퓨터 과학의 가장 첫 번째 개념은 어떻게 표현하는지에 대한 표현 방법입니다.

2진법

우리가 일상에서 사용하는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 총 10개의 기호로 표현하는 것이 10진법입니다.

하지만 컴퓨터에는 이렇게 많은 숫자가 없습니다. 오직 0과 1로만 데이터를 표현합니다.

이처럼 0과 1로만 표현하는 것을 2진법이라고 합니다.

컴퓨터는 신기하게도 오로지 0과 1만으로 숫자 뿐만 아니라 글자, 사진, 영상, 소리 등을 저장할 수 있습니다.

어떻게 이 것이 가능한 것일까요?

우선 123을 보겠습니다. 여러분들도 저와 마찬가지로 '백이십삼'으로 읽을 것입니다.

우리가 '백이십삼'으로 읽는 이유는 1을 백의자리, 2를 십의자리, 3을 일의자리로 보기 때문이죠.

이것을 표현하면 '1x100 + 2x10 + 3x1 = 123'이 됩니다.

우리 모두는 이런 과정을 아주 당연하게 여깁니다.

왜냐하면 우리 모두 이러한 표현에 대한 약속이 있기 때문입니다.

우리는 이 약속에서 자리수를 10의 거듭제곱으로 표현했습니다.

비슷하게 2진법에서는 두 개의 숫자만 있으므로 각 자리수가 2의 거듭제곱을 의미합니다.

그럼 이 방법으로 10진법의 3을 2진법으로 표현하면 어떻게 될까요?

바로 11입니다. 표를 보시면 2진법에서는 두 번째 자리는 2¹로 2입니다.

따라서 2진법에서 11은 2¹x1 + 1x1 = 3입니다.

마찬가지로 2진법에서 100은 2²x1 + 2¹x0 + 1x0 = 4입니다.

이와 같은 2진법은 전기를 통해 연산하는, 즉 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법입니다.

컴퓨터에는 굉장히 많은 스위치(트렌지스터)가 있고 on/off 상태를 통해 0과 1을 표현합니다.

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

비트

정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 씁니다. 비트는 이진 숫자라는 뜻을 가진 “binary digit”의 줄임말이며, 0과 1, 두 가지 값만 가질 수 있는 측정 단위입니다. 디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있습니다. 또한 컴퓨터는 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있습니다.

비트열

하나의 비트는 0과 1, 이 두 가지의 값만 저장할 수 있습니다. 컴퓨터 내부에서 물리적 표현될 때는, 켜고 끌 수 있는 스위치라고 생각할 수 있겠습니다. (켜기=1, 끄기=0)

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

바이트가 모이면 더 큰 단위가 될 수 있습니다. 킬로바이트는 1,000 바이트, 메가바이트는 1,000 킬로바이트(100만 바이트), 기가바이트는 1,000 메가바이트(10억 바이트)입니다. 테라바이트는 1,000 기가바이트(1조 바이트)이며, 심지어 페타바이트와 엑사바이트와 같은 더 큰 단위도 존재합니다.

다양한 데이터 표현하기

하나의 비트로는 어떠한 값이 참인지 거짓인지, 예를 들면, 노트북이나 휴대전화가 충전 중인지 아닌지에 대한 정보만 컴퓨터에 저장할 수 있습니다. 하나의 바이트(8 bit)로 알파벳 하나를 표시할 수 있습니다.

더 큰 데이터 단위는 좀 더 복잡한 유형의 데이터를 저장할 수 있습니다. 오른쪽 표의 일부 예제를 보면 알 수 있듯이, 1 KB는 몇 문단의 문자를 나타낼 수 있고, 1 MB는 1분가량의 노래 파일의 크기와 같고, 1 GB는 약 30분 길이의 HD 영화 정도의 크기입니다.

02. 정보의 표현

숫자가 아닌 문자는 어떻게 표현할까?

ASCII 코드를 통해 !


유니코드를 통해 더 많은 0과 1의 조합으로 많은 것을 표현할 수 있다.

128,514 만큼의 이모티콘을 표현 가능하게 되었다.

색깔은 어떻게 표현할까?

RGB를 통해 표현 가능하다.
이 패턴을 숫자로 인식하여 숫자 만큼의 빨강, 초록, 파랑을 인식한다.
픽셀 단위의 작은 점에 이 색깔 정보가 저장되어 있는 것이다.

+) 피아노와 같은 음악 소리도 가능하다 !
어떤 것이든 0,1 로 나타낼 수 있다.

03. 알고리즘

이 네모 박스가 컴퓨팅 동작이 일어나는 것이다.
문제를 해결하는 단계적인 방법이다.

즉, 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열입니다. (어려운 용어가 나오지만 억지로 이해하기 보다 우선 넘어가시고, 아래의 예시를 통해 이해를 해주세요.)

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

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

이와 같이 나타낼 수 있고 이것이 프로그래밍 언어이다.

04. 스크래치 기초

05. 스크래치 심화

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글