개념쏙쏙! 수학

게임 같은 수학 원리, 전기밥솥에 숨어있답니다

입력 : 2015.02.05 03:05 | 수정 : 2015.02.05 09:10

단추 하나로 작동하는 전기밥솥… 다양한 기능을 적절한 순서로 실행
순서대로 기능 조합하는 '알고리즘', 알고리즘을 짜는 '코딩' 작업으로
여러 가지 소프트웨어 만들어져요

"자동문이 있으니 짐을 내려놓지 않고도 문을 열 수 있어서 정말 편하네요."

아빠와 함께 시장에 다녀온 세환이는 자동으로 열리고 닫히는 아파트 현관문이 새삼 고맙게 느껴졌어요.

"그래. 자동문은 몸이 불편하거나 약한 사람들이 편리하게 쓸 수 있지. 겨울에는 실수로 문을 열어두는 걸 막아주기도 해"

"맞아요. 생각해보면 정말 신기해요. 자동문에는 대체 어떤 과학 원리가 숨어 있나요?"

"음. 과학 원리보다는 수학 원리를 이해하는 편이 좋을 것 같은데?"

"예? 수학요? 자동문 같은 기계장치라면 당연히 과학과 관련 있는 거 아닌가요?"

"하하. 잘 생각해 보렴. 기계장치를 만들 때 가장 기본이 되는 건 설계도겠지?"

"그렇죠. 우선 설계도가 있어야 그것을 보고 정확히 만들 수 있을 테니까요. 아! 그러고 보니 설계도를 그리는 데는 수학이 필요하네요?"

기사 관련 일러스트
그림=이창우

"맞아. 정교한 움직임을 하는 기계장치일수록 길이와 무게, 각도 등을 정확하게 계산해 만들어야 하니까. 그런데 수학은 기계장치의 외형보다는 작동 방식에 더 큰 영향을 미쳐. 전기밥솥을 예로 들어보자. '취사' 단추를 누르면 전기밥솥은 서서히 온도가 높아지지? 그리고 일정한 시간이 지나면 스팀 밸브를 열어 압력을 낮추고 내부 온도를 유지하지. 그리고 소리로 밥이 다 됐음을 알려주잖아? 이렇게 단추 하나로 복잡한 동작을 할 수 있는 것은 전기밥솥에 수학적 프로그램이 숨어 있기 때문이야. 그 프로그램을 간단히 도식으로 나타내면 다음과 같아."

"아빠 말씀을 듣고 보니 정말 숫자가 보이네요?"

"숫자가 나온다고 해서 수학이라 하는 게 아니야. 도식을 잘 보면 순서도 매우 중요하다는 걸 알 수 있어. 압력 밸브가 15분이 지나기도 전에 열리거나 버저가 미리 울린다면 밥이 설익거나 높은 압력으로 안전사고가 일어날 수도 있지. 그래서 그 기계가 할 수 있는 다양한 기능을 적절히 조합해야 하는데, 그 조합을 '알고리즘', 그 과정을 '코딩'이라고 해."

"수학 문제를 풀 때도 계산 순서가 바뀌면 제대로 된 답을 낼 수 없는 것처럼 말이지요?"

"그래. 그럼 세환이가 직접 자동문 프로그램을 코딩해 볼래? 아빠가 몇 가지 명령문을 제시해줄 테니, 순서를 잘 정리해서 자동문이 올바르게 작동하게 하여보렴."

"물체가 감지되면 문을 열어야 하니까 [만약에 물체가 감지되면 시작]―[문 여는 신호 보내기]―[문 여는 신호를 받을 때마다]―[문 열기]―[문 닫기] 이렇게 하면 될 거 같아요."

기사 관련 일러스트

"하하. 정말 그럴까? 우선 네 알고리즘의 문제는 단 한 번만 작동한다는 점이야. [문 닫기]를 한 후에 더는 다른 명령이 내려지지 않기 때문이지. 또한 [문 열기]와 [문 닫기]가 붙어 있기 때문에 문은 열리자마자 닫히게 돼. 그러면 어떻게 될까?"

"아, 조금이라도 늦으면 문이 닫혀 사고가 날 수 있겠네요. 그래서 [5초 기다리기]가 있는 거군요? 아. 그러고 보니 [무한 반복하기 명령 시작]이란 명령어도 있네요? "

"무한 반복하기 명령은 시작과 종료 사이에 있는 명령을 무한 반복하여 실행하게 해주지. 그리고 힌트를 더 주자면 센서의 알고리즘과 문의 알고리즘은 따로 만들어야 한단다."

"우선, 센서는 끊임없이 계속 작동해야 하니까 [시작하기]―[무한 반복하기 명령 시작]―[만약에 물체가 감지되면 시작]―[문 여는 신호 보내기]―[만약에 명령 종료]―[무한 반복하기 명령 종료] 이렇게 만들고, 문은 문 여는 신호에 맞춰 열리고, 안전을 위해 일정 시간 후에 닫히면 되니까 [문 여는 신호를 받을 때마다]―[문 열기]―[5초 기다리기]―[문 닫기] 이렇게 만들면 되지요?"

"세환이는 논리적 사고가 뛰어나구나."

"로봇 청소기, 자판기 등 주변의 기계장치 원리도 알고리즘으로 나타내보고 싶네요. 마치 제가 게임을 만드는 것 같은 기분이 든다고 할까요?"

"맞아. 코딩은 컴퓨터 프로그래밍의 다른 말이기도 하니까. 세상의 모든 소프트웨어는 이러한 코딩을 통해 만들어지는 거야."

[함께 생각해봐요]

아래 명령문을 이용해서 스스로 청소하는 로봇 청소기의 알고리즘을 만들어보세요.

[시작하기] [앞으로 10㎝ 이동] [180˚만큼 회전] [45˚만큼 회전] [만약에 벽에 부딪히면 시작] [만약에 명령 종료] [무한 반복하기 명령 시작] [무한 반복하기 명령 종료]

답: [시작하기]―[무한 반복하기 시작]―[앞으로 10㎝ 이동]―[만약에 벽에 부딪히면 시작]―[180˚만큼 회전]―[45˚만큼 회전]―[만약에 명령 종료]―[무한 반복하기 명령 종료]


[관련 교과] 4학년 1학기 '혼합 계산', 4학년 2학기 '규칙 찾기와 문제 해결'

김은숙·어린이 수학 전문 저술가 |