이 수업의 마지막에는 이미 만들어진 코드를 수정하기만 하는 것이 아니라, 간단한 코드를 직접 작성해 볼 것입니다!
그에 앞서 간단한 정보를 알아보겠습니다.
좋은 프로그래머들이 (암기 대신) 하는 일
숙련된 프로그래머는 코드 안에 실제 프로그램의 일부가 아닌 코멘트 를 남겨 무슨 작업을 했고 왜 그 작업을 했는지를 기록합니다. 코드 코멘트 또는 코멘트라고 불리는 프로그래머의 노트는 프로그램이 실행될 때 무시되지만 코드 안에 그대로 남습니다.
코드 코멘트
코드 코멘트를 작성하는 것은 일반적으로 좋은 습관이며, 이제 막 프로그램을 작성하기 시작하여 이것저것 알아 가는 단계에 특히 유용합니다. 코멘트를 보면 자신이나 다른 사람이 어떤 작업을 왜 했는지를 이해하는 데 큰 도움이 됩니다.
코드 코멘트를 작성하는 가장 간단한 방법은 코멘트 앞에 #
를 붙이는 것이지만, 다른 방법으로 코멘트를 작성할 수도 있습니다.
|
한 줄 코멘트: # 과 줄 끝 사이에 포함된 내용은 모두 코드 코멘트의 일부가 됩니다. |
|
인라인 블록 코멘트: <# 과 #> 사이에 포함된 내용은 모두 코드 코멘트의 일부가 됩니다. 인라인 블록 코멘트는 표현식 사이에 한 줄로 작성할 수 있으며 해당 표현식 자체는 변경하지 않습니다. |
|
여러 줄 블록 코멘트: <# 과 #> 사이에 포함된 내용은 모두 코드 코멘트의 일부가 됩니다. 여러 줄의 블록 코멘트는 여러 줄에 걸쳐 작성할 수 있습니다. |
|
중첩 블록 코멘트: <# 과 #> 사이에 포함된 내용은 모두 코드 코멘트의 일부가 되며, 중첩할 수 있습니다. 테스트 및 디버깅할 때 기존 코드 코멘트를 변경하지 않으면서 한 줄에 있는 일부 표현식을 코멘트 처리하는 경우 유용할 수 있습니다. |
|
들여쓰기 코멘트: <#> 뒤의 새 줄에 작성된 모든 내용과 공백 4칸을 들여 쓴 내용은 모두 코드 코멘트의 일부가 됩니다. 4칸 이상 들여 쓰지 않은 첫 줄은 코드 코멘트의 일부가 되지 않으며 코드 코멘트를 끝냅니다. |
조건식을 사용하여 코드에서 결정 내리기
2강에서 보셨던 if .. else
표현식을 기억하시나요? 이를 조건부 표현식(conditional expressions) 이라고 합니다.
조건부 표현식, 줄여서 조건식(conditionals) 을 활용하면 프로그램에 결정을 내리는 방법을 설명할 수 있습니다.
if
표현식은 무언가가 성공(succeed) 인지 실패(fail) 인지 테스트합니다. 성공하는 경우 특정 코드를 실행할 수도 있습니다. 실패하는 경우 다른 코드가 대신 실행됩니다.

프로그램에 예 또는 아니요 로 답하는 질문을 하는 것이라고 생각하면 됩니다.
현실에서 우리는 수시로 이지선다형 질문에 답합니다. 예를 들어 보겠습니다. 피곤하신가요? 답이 '예'라면 자러 갑니다. 답이 '아니요'(그 외)라면, 자러 가지 않고 만화를 봅니다.
이 행동을 프로그래밍하면 다음과 같습니다.
var Tired: logic = false
var WhatToWatch: string = "nothing"
if (Tired?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
Print("You should watch {WhatToWatch}")
# 만화를 봐야 합니다

if
표현식에 ?
표시가 있는 것을 보셨나요? Verse 프로그램은 이를 통해 logic
타입이 true
인지 false
인지 체크합니다.
중첩
코드가 중첩(nested) 되면 if
또는 else
등 키워드 표현식 아래에 들여쓰기됩니다. 이러한 표현식은 새 스코프를 생성합니다.
스코프는 특정 이름 및 이름과 관련된 값이 사용될 수 있는 코드 청크를 가리킵니다. 스코프는 들여쓰기된 코드 블록 내에 포함되어 있습니다.
예를 들면
if (Tired?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
set WhatToWatch = "your eyelids"
줄은 if (Tired?):
줄 아래에 들여쓰기되어 있습니다. 같은 패턴이 else:
줄에서도 반복됩니다.
코드의 한 줄 을 중첩할 수도 있고, 코드 블록 (여러 줄)을 중첩할 수도 있습니다.
코드가 실행되면 중첩된 코드는 자신이 중첩되어 있는 코드의 컨텍스트 내에서만 실행됩니다.
다수의 조건 사용하기
때로는 결정을 내리기 전에 질문을 두 개 이상 해야 할 때도 있습니다. Verse에서는 이를 위해 연산자(operator) and
와 or
를 사용합니다. 이를 결정 연산자(decision operator) 라고 합니다.
and
를 사용할 때는 연산자 양측의 조건이 모두 true이거나 성공해야 전체 표현식이 성공합니다.
or
를 사용할 때는 연산자 양측의 조건이 하나만 true이거나 성공해도 전체 표현식이 성공합니다.
첫 번째 조건 | 연산자 | 두 번째 조건 | 전체 표현식 |
---|---|---|---|
성공 | and | 성공 | 성공 |
성공 | and | 실패 | 실패 |
실패 | and | 실패 | 실패 |
성공 | or | 성공 | 성공 |
성공 | or | 실패 | 성공 |
실패 | or | 실패 | 실패 |
이러한 연산자가 작동하는 방식을 확인하기 위해 코드를 수정해 보겠습니다.
피곤하지 않더라도 내일 학교에 가야 한다면 잠을 자는 게 좋을 것입니다. SchoolTomorrow
변수를 생성하고 or
를 사용하여 두 logic
변수를 체크하겠습니다.
var Tired: logic = false
var SchoolTomorrow: logic = true
var WhatToWatch: string = "nothing"
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
Print("You should watch {WhatToWatch}")
# 눈꺼풀을 봐야 합니다
Tired
는 여전히 false
지만 SchoolTomorrow
가 true
이므로 전체 표현식이 성공하고 WhatToWatch
가 "your eyelids"
로 설정됩니다.
다수의 조건을 체크하는 방법이 하나 더 있습니다.
if
... else if
... else
를 사용하면 체크할 사항의 다음 순서를 넣을 수 있습니다. 즉 첫 번째 조건을 체크한 다음, 이 조건이 실패했을 때만 다음 조건을 체크하는 것입니다.
내일 학교에 가지도 않고 피곤하지도 않다면 어떻게 할까요? 친구와 영화를 보러 가고 싶을 수도 있습니다. 이를 알아보기 위해 다시 한번 코드를 수정해 보겠습니다.
SchoolTomorrow
변수의 값을 업데이트하고 새 변수 FriendsAvailable
을 선언합니다.
var FriendsAvailable : logic = true
set SchoolTomorrow = false
다음 코드를 업데이트하여 같이 놀 친구가 있는지 체크합니다. 피곤하지 않거나 내일 학교를 가지 않을 때만 체크하게 됩니다.
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "your eyelids"
else if (FriendsAvailable?):
set WhatToWatch = "a movie with your friends"
else:
set WhatToWatch = "cartoons"

완벽합니다! 이제 피곤하거나 학교 가기 전날 밤일 때만 잠을 잡니다. 두 질문 중 어느 하나라도 대답이 '아니요'라면 친구와 영화를 보고, 친구가 없는 경우 만화를 봅니다.
Verse 덕분에 저녁 계획을 세우기가 훨씬 쉬워졌습니다.
문제 해결
1강에서 배운 컴파일러 오류 를 기억하시나요?
코드를 작성하며 접할 수 있는 또 다른 오류로 버그 가 있습니다.
버그
버그는 컴퓨터 프로그램이 부정확하거나 예상되지 않은 결과를 도출하도록 만드는 오류입니다. 버그는 메시지의 텍스트 색이 변하는 것 같은 사소한 현상에서부터 엉뚱한 타이밍에 텍스트 메시지가 표시되거나 심하게는 프로그램이 강제 종료되는 것 같은 심각한 현상까지 유발할 수 있습니다.
버그(bug)라는 용어는 컴퓨터 공학의 선구자인 그레이스 호퍼(Grace Hopper)가 컴퓨터 내부에서 발견한 나방을 자필 문제 해결 로그에 테이프로 붙이고 '실제 버그 발견의 첫 사례'라는 코멘트를 남기면서 유명해졌습니다.

컴파일러 오류가 있으면 프로그램이 컴파일되지 않지만, 버그는 프로그램이 실행되기 전에는 발견할 수 없습니다.
버그를 찾아내고 제거하는 프로세스를 디버깅(debugging) 이라고 하고, 버그 발견을 돕는 툴을 디버거(debugger) 라고 합니다.
요약
- 코드 코멘트 를 남기면 왜 코드를 이렇게 작성했는지 기록하여 다른 프로그래머가 여러분이 한 작업과 그 이유를 이해하도록 도울 수 있습니다.
- 프로그램 내에서 변경되지 않아야 하는 값에는 상수 를 사용합니다.
- 입력에 기반하여 변경되어야 하는 값에는 변수 를 사용합니다.
- 버그 와 컴파일러 오류 는 코드 내 오류로 인해 발생합니다.