지난 장에서 우리는 크라우니가 "몰라"라고 말해도 괜찮다는 걸 배웠어. 모름은 부끄러운 게 아니라 정직한 거라고 말이야. 거기까지 따라온 친구라면, 이제 머릿속이 근질근질할 거야. "그래서, 그 똑똑한 크라우니한테 내가 직접 말을 걸어 볼 순 없는 거야?"
있지. 당연히 있지!
지금까지 우리는 크라우니를 눈으로만 구경했어. 어떻게 태어났는지, 시간을 어떻게 셋으로 나눴는지, 모름이 얼마나 멋진지. 그런데 오늘은 달라. 오늘부터는 네 손가락으로 직접 크라우니한테 명령을 내려 볼 거야.
손가락 준비됐어, 친구들?
생각해 봐. 너희 반에 외국에서 막 전학 온 친구가 있다고 해 봐. "물 좀 줄래?" 하고 말해도 못 알아듣겠지? 그럼 어떡해? 천천히, 또박또박, 손짓까지 보태 가며 말해 줘야 해.
컴퓨터도 똑같아. 컴퓨터는 아주 똑똑하긴 한데, 우리가 원하는 일을 정확하게 또박또박 적어 줘야 알아들어. 그렇게 적은 글을 코드라고 불러. 컴퓨터한테 "나 이거 해 줄래?" 하고 부탁하는 글씨야.
그런데 여기서 좀 억울한 게 있어. 세상 대부분의 컴퓨터는 영어로만 통하거든. "add" 하면 더하고, "multiply" 하면 곱하고. 프로그래머라는 사람들이 미리 그렇게 정해 뒀어. 우리가 외국 친구한테 영어를 써야 하는 것처럼 말이야.
그런데 크라우니는 달라.
크라우니는 우리말을 알아들어. 우리가 "더해!", "빼!", "곱해!", "나눠!" 하고 부탁하면 그대로 알아듣지. 엄마한테 "밥 줘!" 하듯이, 우리말 그대로 명령할 수 있다는 뜻이야. 신기하지 않아?
크라우니와 대화하는 이 방법, 이름이 있어야겠지? 우리가 영어를 배울 때 "영어", 수학을 할 때 "수학"이라고 부르는 것처럼 말이야.
그 이름이 바로 한선씨야.
한선씨는 한국말로 컴퓨터한테 일을 시키는 프로그래밍 언어야. "프로그래밍 언어"라고 해서 겁먹지 마. 그냥 컴퓨터한테 말 거는 약속된 말이라고 생각하면 돼. 수학에도 "+", "−", "×", "÷" 같은 기호가 있어서 계산을 쉽게 하잖아? 한선씨도 컴퓨터한테 부탁할 때 쓰는 우리말 약속일 뿐이야.
그런데 한선씨에는 재미있는 비밀이 하나 숨어 있어.
우리는 보통 어떻게 말할까? "3 더하기 7은?" 이렇게 말하지. 할 일을 가운데 끼워 넣고 말이야.
그런데 한선씨는 좀 거꾸로야.
한선씨에서는 숫자를 먼저 말하고, 명령을 나중에 해. 그래서 "3 더하기 7"이 아니라 "3 7 더해"라고 써. 숫자 둘을 손바닥 위에 먼저 꺼내 놓고, 마지막에 "더해!" 하고 신호를 주는 거야.
〔그림: 아이가 왼손에 "3", 오른손에 "7"을 먼저 올려놓고, 마지막에 "더해!" 하고 손뼉을 마주치는 모습〕
왜 이렇게 거꾸로 했을까? 이게 크라우니의 커다란 비밀이야. 1장에서 배운 크라우니의 단어장, ISA729 기억나? 그 단어장 안에는 489개의 명령이 차곡차곡 들어 있었지. 우리가 쓰는 말과 그 명령들이 딱 하나씩, 정확하게 짝을 맞추려면 이렇게 숫자를 먼저, 명령을 나중에 써야 하거든.
암호문을 풀 때 열쇠와 자물쇠가 착착 맞물려야 열리는 것처럼 말이야. 짝이 빈틈없이 맞으니까, 크라우니가 실수할 일이 거의 없어.
좀 멋지지?
자, 이제 말만 하지 말고 직접 크라우니한테 명령을 내려 보자. 제일 간단한 것부터 시작할게.
컴퓨터한테 제일 먼저 시키고 싶은 게 뭘까? 나는 인사를 시키고 싶어. "안녕!" 하고 말이야.
한선씨로는 이렇게 적으면 돼.
출력값("안녕")
여기서 출력값은 뭘까? "화면에 이걸 보여 줘!" 하는 부탁이야. 수업 시간에 손을 번쩍 들고 "선생님, 이거 봐요!" 하는 것처럼.
〔그림: 까만 화면에 "안녕" 두 글자가 짠 하고 떠 있는 모습〕
출력값 뒤의 괄호 안에 "안녕"이 있지? 큰따옴표로 감싼 글자가 화면에 그대로 나타나. 큰따옴표는 "이건 글자예요!" 하고 알려 주는 표시야. 만약 따옴표를 빼먹으면, 크라우니는 "안녕"이라는 이름표가 붙은 상자를 찾으려고 두리번거릴 거야. 그러니까 보여 줄 글자에는 따옴표를 꼭 씌워 줘.
그리고 딱 하나 더. 출력값은 붙여 써야 해. "출력 값" 하고 띄어 쓰면 크라우니가 못 알아들어.
이 한 줄을 적고 실행하면, 화면에 "안녕"이 짠 하고 떠. 내가 적은 글자가 화면에 나오는 순간, 가슴이 두근두근할 거야. 엄마 아빠한테 달려가서 자랑해. "제가 컴퓨터한테 말 시켰어요!" 그 순간 너는 벌써 프로그래머야. 컴퓨터한테 또박또박 부탁할 줄 아는 사람 말이야.
그런데 매번 같은 숫자를 반복해서 적기는 좀 귀찮지 않아? 게임을 하다 보면 "내 점수 100점, 친구 점수 85점" 같은 걸 계속 기억해야 하잖아.
그럴 땐 상자를 만들어. 이름표를 붙인 상자에다 숫자를 한 번 넣어 두고, 필요할 때마다 꺼내 쓰는 거야. 너희가 비밀 보물을 숨겨 두는 상자처럼 말이야.
변수 내나이 = 10
변수 내이름 = "크라우니"
변수는 "자, 상자 하나 만든다!" 하는 신호야. 내나이랑 내이름은 상자에 붙이는 이름표고, 10이랑 "크라우니"는 상자에 담는 내용물이지. "내 장난감 상자", "엄마 반지 상자" 하고 이름 붙이는 거랑 똑같아.
이름표는 한글로 붙여도 되고, 영어로 붙여도 되고, 섞어도 돼. 딱 하나, 한선씨가 미리 정해 둔 특별한 말(변수, 만약, 동안, 함수, 반환 같은 거)만 이름으로 쓰면 안 돼. 그것 말고는 뭐든 괜찮아.
이제 내나이 상자엔 10이, 내이름 상자엔 "크라우니"가 들어 있어. 나중에 꺼내 쓰고 싶으면 이름표만 부르면 돼. 편하지?
길을 가다 갈림길을 만나면 고민하잖아. "오른쪽? 왼쪽?" 컴퓨터도 상황에 따라 다르게 움직여야 할 때가 있어.
우리 반 규칙을 생각해 봐. "70점 넘으면 합격, 아니면 다음에 다시 도전!" 크라우니도 이런 규칙을 따를 수 있어. 만약이라는 말을 쓰면 돼.
변수 점수 = 75
만약 (점수 >= 70) {
출력값("합격!")
} 아니면 {
출력값("다시 도전해.")
}
만약 (점수 >= 70)은 "점수가 70점이거나 그보다 크면"이라는 뜻이야. 이 조건이 맞으면 앞쪽 {...} 안의 "합격!"이 나오고, 안 맞으면 아니면 뒤쪽의 "다시 도전해."가 나와. 엄마가 "숙제 다 했으면 밥, 안 했으면 숙제 먼저!" 하는 거랑 똑같지.
점수를 75라고 넣었으니까, 크라우니는 "합격!"을 보여 줄 거야.
그런데 여기서 잠깐 멈춰 보자. 우리가 바로 앞 장에서 뭘 배웠지? 크라우니는 세 가지로 생각한다고 했어. 참, 거짓, 그리고 모름.
이 만약도 그래. 세상일이 늘 "맞다" 아니면 "틀리다" 둘 중 하나로 딱 떨어지진 않잖아. "이건 도대체 뭘 기준으로 판단해야 하지?" 하고 물음표가 떠오를 때가 있어. 그 물음표가 바로 모름이야. 보통 컴퓨터는 이걸 못 해. 억지로 "맞다!" 아니면 "틀리다!" 둘 중 하나로 우겨 버리지. 그런데 크라우니는 정직하게 "글쎄, 모르겠는데?" 하고 손을 들 줄 알아. 이 모름이 실제로 어떻게 빛나는지는 조금 뒤에서 더 만나게 될 거야. 지금은 "아, 만약 속에도 모름이 숨어 있구나" 정도만 기억하고 가자.
계단을 내려갈 때 "한 칸, 또 한 칸, 또 한 칸..." 하잖아. 컴퓨터도 같은 일을 여러 번 반복해야 할 때가 있어.
생각해 봐. "안녕"을 백 번 보여 주고 싶다고 출력값("안녕")을 백 번 적으면 손가락이 아프겠지? 이럴 때 동안이라는 마법을 써. 로켓 발사 전에 "5, 4, 3, 2, 1, 발사!" 하고 세는 것처럼 말이야.
변수 숫자 = 5
동안 (숫자 > 0) {
출력값(숫자)
숫자 = 숫자 - 1
}
출력값("발사!")
동안은 "이 조건이 맞는 동안 안쪽 일을 계속 반복해"라는 뜻이야.
처음엔 숫자가 5야. "5 > 0"이 맞으니까, 5를 보여 주고 하나 빼서 4로 만들어. 그 다음엔 "4 > 0"이 맞으니까 4를 보여 주고 3으로... 이렇게 계속 내려가. 그러다 숫자가 0이 되면 "0 > 0"은 틀렸으니까 반복을 멈춰. 그리고 "발사!"를 보여 주지.
화면에는 "5 4 3 2 1 발사!"가 차례로 뜰 거야. 진짜 카운트다운을 직접 만든 거야. 이렇게 간단한데도 말이지!
이번엔 좀 특별한 마법이야. 바로 함수.
함수는 자판기랑 똑같아. 동전을 넣으면(입력) 음료수가 나오지(반환). 크라우니한테 자주 시키는 일을 한 덩어리로 묶어서 함수로 만들어 두면, 필요할 때마다 불러서 쓸 수 있어.
함수 제곱(n) {
반환 n * n
}
출력값(제곱(3))
함수 제곱(n)은 "제곱"이라는 이름의 자판기를 만드는 거야. n은 우리가 넣는 동전(숫자)이고, 반환 n * n은 자판기가 계산해서 돌려주는 음료수(n을 두 번 곱한 값)야.
제곱(3)이라고 부르면 3 * 3을 계산해 9를 돌려줘. 제곱(5)라고 부르면 25가 튀어나오지. 한 번 만들어 두면 몇 번이든 다시 불러 쓸 수 있어. 내가 직접 만든 나만의 계산기인 거야.
참, 함수 안에서는 +, −, *, /로 더하기·빼기·곱하기·나누기를 마음대로 할 수 있어. 수학 시간에 쓰던 기호 그대로니까, 출력값(5 + 3)이라고 적으면 8이 짠 하고 나와. 크라우니는 우리 반에서 제일 빠른 계산기거든.
어때? 생각보다 어렵지 않지?
오늘 우리가 배운 다섯 가지 마법을 정리해 볼게.
출력값 — 화면에 글씨를 보여 주는 마법변수 — 숫자나 글을 기억해 두는 상자만약 — 조건에 따라 다르게 고르는 마법동안 — 같은 일을 척척 반복하는 마법함수 — 나만의 자판기를 만드는 마법이 다섯 가지만으로 너는 벌써 크라우니한테 기본적인 일을 시킬 수 있어. 구경만 하던 네가, 드디어 직접 명령을 내리는 사람이 된 거야.
그리고 절대 잊지 마. 한선씨는 우리 말이야. 영어 단어를 외울 필요가 없어. 만약은 if가 아니라 그냥 만약이고, 반환은 return이 아니라 그냥 반환이야. 평소에 우리말로 생각한 그대로, 컴퓨터한테 명령할 수 있다는 거지. 그게 얼마나 대단한 거냐면 — 너는 이제 크라우니를 직접 움직이는 사람, 프로그래머가 된 거야.
자, 이렇게 우리는 크라우니한테 말 거는 법을 손에 익혔어. 그런데 가만, 아까 만약 속에 숨어 있던 그 세 번째 대답 기억나? 그 모름 말이야. 다음 장에서는 크라우니가 시간 속에 숨겨 둔 신기한 약속 — 왜 하필 한 시간이 60분이 아니라 53분인지, 그 집중의 마법을 함께 풀어 볼 거야.
손가락 준비해. 우린 아직 갈 길이 멀어, 친구들.
해볼까?
첫 번째 책은 선물이에요. 가입하면 100맘을 드리니까, 두 번째 책부터 자유롭게 읽을 수 있어요. 친구를 추천하면 50맘도 생겨요.