일상에서 문제가 발생했을 때 스스로 풀 수 있도록 절차대로 해결방법을 가르쳐 주는 대표적인 것이 제품의 사용설명서이다. 사용설명서에는 제품을 사용하기 전에 알아야 하는 내용과 올바르게 사용하기 위해 해야 할 일들을 순서대로 적어서 제품을 구매한 모든 사람들이 불편함이 없이 사용하도록 하고 있다. 제품에 대해서 전혀 몰라도 사용설명서에 쓰여진 대로 실행한다면 제품을 잘 작동시킬 수 있다. 이런 것들이 우리가 일상생활에서 경험할 수 있는 알고리즘이라고 할 수 있다.

알고리즘은 어떤 문제를 해결하기 위한 동작들의 모임인 절차를 의미하는데 시작을 하면 언젠가는 끝이 있어야 한다. 알고리즘에게 시작을 알리면 정해진 순서대로 작업을 하고 궁극적으로 결과를 만들어 내야 한다는 의미이다. 이 알고리즘을 컴퓨터에서 구현하는 것이 컴퓨터 프로그램 즉 소프트웨어이다. 알고리즘을 컴퓨터 프로그램 관점에서 보면 명령어들의 집합이라고 할 수 있다.

ATM기기에서 현금인출의 사례를 가지고 알고리즘을 표현해 보자. 그런데 만약에 비밀번호가 틀렸거나 통장에 있는 돈이 찾을 돈보다 적을 경우의 알고리즘은 어떻게 될까? 조건을 넣어서 실행할 내용을 추가적으로 정리하면 된다. 비밀번호가 맞는지? 통장 잔액은 충분한지 확인하는 과정을 거쳐서 ATM기기의 알고리즘을 구현할 수 있다. 알고리즘을 만들기 위해서는 문제 해결을 위하여 시작과 끝이 있는 기본적인 순서를 배치하고 반복적 패턴이 있는지 확인하여 반복을 표현함과 동시에 예외 규칙을 찾아서 조건을 표현하면 된다. 이렇게 함으로써 우리가 만든 모형을 논리적으로 동작시킬 수 있는 것이다.

알고리즘에는 흐름을 제어하는 3가지 중요 요소가 있는데 순서, 반복, 조건이 이에 해당된다. 순서는 처음부터 끝까지 순서대로 한 개씩 일을 처리한다는 의미이다. 반복은 동일한 일을 계속 한다는 의미이며, 일반적으로 반복제어는 조건 제어와 같이 쓰여서 일정 조건에 해당될 때까지 반복적으로 일을 수행하도록 한다.

어떤 임의의 수에 대해서 사칙연산을 하는 문제를 해결하기 위하여 사칙연산 문제해결 모델을 만들었다. 수식을 입력하면 사칙 연산을 수행하고 결과를 표시하는 모형이다.

사칙 연산 계산 수식 ‘A + B – C=’ 에서 대부분의 사람은 A, B, C가 아주 큰 숫자가 아니라면 아마도 쉽게 그 답을 맞출 수 있을 것이다. 계산하는 방법은 A와 B를 더한 후 C를 뺀 값을 구하면 된다. 하지만 컴퓨터는 이런 계산 방식은 이해하지 못하기 때문에 컴퓨터가 일할 수 있는 논리적 순서인 알고리즘을 만들어야 한다. 그것을 표현하면 아래의 그림과 같이 될 것이다.

채성수 chaesungsoo@iabacus.co.kr 소프트웨어 개발 전문기업 ㈜ 애버커스 사업총괄 부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 성균관대 및 서강대에서 컴퓨터 관련 연구를 수행했으며 소프트웨어 공학, 컴퓨터적 사고에 대해서 관심을 갖고 다양한 활동을 하고 있다.

(*이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

관련기사

저작권자 © 넥스트데일리 무단전재 및 재배포 금지