본문 바로가기
Programming/1. boostcourse - 'CS50'

Ep 2-2. 컴퓨팅 사고_정보의 표현, 알고리즘

by @sangseophwang 2021. 4. 7.

@Unsplash

그럼 문자는 어떻게 표현할까?

지난 글에서 정리했다시피 컴퓨터는 스위치를 on/off 하며 숫자를 표현한다고 했다 (2진법). 그렇다면 문자는 어떻게 표현을 할까? 

 

ASCII 코드 (American Standard Code for Information Interchange)

 문자를 표현하기 위해 다음과 같이 '이 숫자는 이 글자라고 합시다!' 라는 약속(표준)을 만들었는데, 그 중 하나가 바로 아스키코드이다. 총 128개의 부호로 이루어진 이 코드는 위 예시처럼 각 문자에 번호가 지정돼있고, 저 숫자가 2진법으로 변환되어 컴퓨터에게 전달되면서 문자가 생성된다. 

 

또 다른 예시

 그림 또한 이러한 숫자로 표현할 수 있다. 우리가 스크린을 통해 보는 그림을 자세히 보면 수많은 작은 점들이 빨간색, 초록색, 파란색을 띄고 있는데, 우리는 이 점을 픽셀 이라고 부른다. 픽셀은 이 세 가지 색의 조합으로 만들어지는 특정한 색이고, 이 때 세 가지 색의 숫자를 표현하는 방식이 우리가 잘 알고 있는 RGB 이다. [ (72,74,253)  이런 식으로 표현된다]

 추가로 색을 표현하는 방식 중 #F0A539  요런 단위를 본 적이 있을거다. 이건 16진수로 색을 표현한 코드 방식이며, 영어가 들어가는 이유는 숫자 9 이후로 16까지 표현할 기호가 없어서 10은 A, 11은 B 등의 알파벳으로 대신하기 때문이다.

 

알고리즘

 유튜브를 보며 '알고리즘의 선택을 받은 영상' 을 본 적이 있는가? 내가 딱히 찾은건 아닌데 유튜브가 랜덤으로 추천해준 영상을 발견했을 때 저 '알고리즘' 이라는 단어를 사용한다. 뭔가 자주 쓰는 단어인데, 막상 정확한 뜻은 모르고 있었는데 이번 강의를 들으면서 그 정확한 뜻을 알게 됐다.

 

"알고리즘은 문제를 해결하기 위해 추상화된 핵심 원리를 일련의 절차로 표현하는 과정이다."

"입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정"

 

 즉 문제 해결을 위한 일련의 단계별 지침인 계획이라고 보면 된다. 예를 들어 라면을 끓이기 위해 라면 봉지 뒤에 적혀있는 레시피에 따라 다음과 같이 진행한다.

 

  1. 물 550ml(2컵과 3/4컵)에 건더기스프를 넣고 물을 끓인 후
  2. 액체스프를 넣고 그리고 면을 넣은 후 5분간 더 끓입니다.
  3. 조리 후 유성스프를 넣고 잘 저어서 맛있게 드시면 됩니다.

 이게 알고리즘이다. 이렇듯 우리 일상에서 알고리즘이라는 단어를 사용하지 않았을 뿐 너무나도 많이 사용해왔던 개념인 것이다. 그리고 우리가 앞으로 수많은 코딩을 하며 해야 할 일은 정확하고 효율적인 알고리즘을 만드는 것이다.

 

의사코드(Pseudo code)

  컴퓨터에서 알고리즘을 기술하기 위해서 사용하는 것이 바로 '의사코드'이다. '의사()' 란 '흉내를 낸다' 는 뜻으로 알고리즘을 코드(code)인 특정한 프로그래밍 언어를 흉내 내어 자유롭게 기술한다는 의미이다. 의사코드는 다양한 스타일의 흐름을 이해하기 쉽게 표현하기 위한 방법으로, 다양한 프로그래밍 언어를 간결하게 사용하거나 일반 자연 언어(평상시 쓰는 말)를 사용할 수도 있다. 강의에서는 전화번호부 책에서 Mike Smith 를 찾는 방법에 대한 예시를 들었는데, 그 예시를 다음과 같이 정리했다.

 

노란색으로 강조된 부분은 함수(function) 이라고 부른다. 컴퓨터에서 동사와 같은 역할을 수행한다.
다음 노란 부분은 '조건' 이라고 부른다.
앞서 말한 결정을 내리기 위한 질문이 필요한데 이것을  불리언 (Boolean)이라고 한다. 답이 예, 아니오 혹은 참,거짓 등으로 나오는 질문을 뜻한다.
마지막으로 강조된 부분은 루프(loop) 라고 부른다. 뭔가를 계속해서 반복하는 순환이다.

이 예시를 자연어가 아닌 프로그래밍 언어로 바꿔서 작성하면 '프로그램' 이 되는 것이다. 

 

정리

의사코드 : 생각을 간결하게 정리한 코드와 비슷한 구문
function : 무엇을 할 지 알려주는 것
조건 : 선택지 중 하나를 고르는 것
boolean : true, false로 답이 나오는 것
loop : 무언가를 계속 반복하는 순환

반응형

'Programming > 1. boostcourse - 'CS50'' 카테고리의 다른 글

Ep 3-2. 문자열  (1) 2021.04.07
Ep 3-1. C언어 기초  (0) 2021.04.07
Ep 2-3. 컴퓨팅 사고_Scratch  (0) 2021.04.07
Ep 2-1. 컴퓨팅 사고_2진법  (0) 2021.04.07
Ep 1. boostcourse?  (0) 2021.04.06

댓글