스몰베이직 기초 (문장,주석,연산) | 스몰베이직 강좌 2

스몰베이직 기초(문장,주석,연산)

문장(statement), 주석(comment), 연산 (operation) 은 스몰베이직의 기초입니다.

스몰베이직 기초
스몰베이직 기초

문장 (statement)

간단한 문장을 보겠습니다.

TextWindow.WriteLine("Hello Smoothie Coding!")

TextWindow 는 객체, WriteLine은 메소드 “Hello Smoothie Coding”은 함수 전달 인수입니다. 전달 인수는 쉽게 말하면 데이터(값)입니다. 하나의 문장에 스몰베이직의 3요소인 객체, 메소드, 속성(값)이 모두 들어가 있습니다.

문장은 한 줄을 뜻하는 것입니다. 연산자와 피연산자가 하나의 문장이 되고, 문장이 모여서 메소드가 됩니다. 메소드 호출문도 문이 되고요. 할당문 조건식 표현식 등도 하나의 문(Statement)입니다.

스몰베이직에서는 클래스를 사용하기 때문에 관련된 메소드의 의미를 파악하는게 중요합니다.

주석 (comments)

주석은 프로그램의 기능과는 상관이 없지만 코드를 유지 보수할 사람들을 위해 기술합니다. 타인을 위한 설명이기도 하지만 그 전에 자기 자신을 위한 것입니디ㅏ.

6개월전에 졸린눈으로 작성한 코드의 의미가 기억안나는 일은 흔한 일입니다. 그러므로 필요한 만큼의 주석을 작성하는 것은 언제나 권장사항입니다.

프로그래밍은 혼자하는 일이지만 나만 아는 암호같은 코드를 많이 작성한다면 아무래도 협업하기에 좋지 않을 것입니다.

스몰베이직의 주석은 ‘ 작은따옴표 표시로 기록합니다. 인터프리터가 번역시 무시합니다.

' small basic comments
TextWindow.WriteLine("Hello Smoothie Coding!")
' 주석처리

연산(operation)

연산은 사칙연산을 기본으로 합니다.

'사칙연산

TextWindow.WriteLine("사칙연산입니다!")

a = 7
b = 4

TextWindow.WriteLine(a + b)
TextWindow.WriteLine(a - b)
TextWindow.WriteLine(a * b)
TextWindow.WriteLine(a / b)
[실행창]
사칙연산입니다!
11
3
28
1.75

a와 b에 7과 4를 할당해 사용했습니다. WriteLine 안에서 표현식이 사용 가능하니까 리터럴 상수인 숫자를 사용해도 괜찮습니다.

+ 를 문자열에 적용하면 concatenation 문자열 연산을 합니다. 문자열 연산은 앞쪽의 문자열과 뒷쪽의 문자열을 연결해서 하나의 문자열을 생성합니다.

'사칙연산
myName = "강나래"

TextWindow.WriteLine("나의 이름은 " + myName + " 입니다")
[실행창]
나의 이름은 강나래 입니다

+ 라는 의미가 바뀔 수 있다라는 것을 생각하면 되는데요. 객체지향 프로그래밍에도 연산자 오버라이드라는 기능이 있습니다. + – > < 이런 기호들의 의미를 사용자가 재정의할 수 있다는 뜻입니다.

문자열은 많이 쓰기 때문에 굳이 함수로 만들지 않고 연산자를 만들어 사용합니다. 사실 연산자와 함수의 차이가 무엇이냐? 이런 질문도 많은데요. 성능면의 차이는 없고 사용하는 형식의 차이로 볼 수 있습니다.

함수의 형식으로 사용하는게 아무래도 연산자 보다는 불편하죠. myString.concatenate(newString) 이런 식으로 사용한 다면 문자열 두개를 붙일 때도 yourString.concatenate(myString.concatenate(newString)) 굉장히 복잡해집니다.

인수나 반환값에서 상황이 한정적인 경우 yourString + myString + newString 이라고 사용하면 훨씬 가독성도 좋고 타이핑이 줄어듭니다.

하지만 사용자 정의 연산자를 너무 많이 사용하면 의미를 알수 없게 되므로 가장 자주 사용하는 함수를 연산자로 대체할 수 있을 것 입니다.

어떻게 보면 기본적인 연산자들은 어떤 프로그램을 만들더라도 사용할 수 있다고 판단한 함수들입니다. 사칙연산의 예를 보면 쉽게 알 수 있습니다. 함수로 구성하면 아래와 같습니다.

  • result = add(number1, number2)
  • result = sub(number1, number2)
  • result = mul(number1, number2)
  • result = div(number1, number2)

내부적으로 하는일은 정해져 있습니다. CPU의 레지스터를 더하거나 빼는 동작을 통해서 result 에 저장되겠지요.

  • result = number1 + number2
  • result = number1 – number2
  • result = number1 * number2
  • result = number1 / number2

이렇게 바꾸면 훨씬 쉽습니다. 여기다가 number1 + number2 – number3 * number4 … 이렇게 연결시킨다면 함수는 엄청 복잡해질 것입니다. 연산자를 사용하는 이유는 거기에 있습니다.

실상 컴퓨터에게 _+ – * / 는 모두 의미가 없습니다. 컴파일러가 뜻을 부여할 뿐이죠. 프로그래머가 새로운 연산자를 정의하지 못할 이유가 없습니다.

암튼 연산은 그냥 계산이라고만 생각해도 스몰베이직을 배우는데 문제는 없습니다. 중요한 것은 의미(meaning)기 때문에 이런 주제로 생각해볼 필요도 있습니다.

지금은 스몰베이직을 배우지만 다른 언어에게도 똑같이 해당하는 내용입니다.

문자열과 숫자를 혼합한 연산을 해볼까요?

'리터럴 상수 연산

TextWindow.WriteLine(7 + 7 + 7)
TextWindow.WriteLine("5 더하기 5는? " + (5+5))
TextWindow.WriteLine("5 + 5 = " + "10")
[실행창]
21
5 더하기 5는? 10
5 + 5 = 10

WriteLine 안에 넘어가는 것들은 인수라고 합니다. 인수는 함수에게 전달하는 수 입니다. 또 이 ( ) 안에는 표현식도 들어갑니다. 7+7+7 은 표현식으로 반환값인 21을 출력합니다.

“5 더하기 5는? ” + (5+5)

이것은 5+5라는 작은 표현식을 먼저 계산합니다. 그리고 문자열로 변환되서 + 연산자에 의하여 앞의 문자열과 연결됩니다. 언뜻 자연스러운 결과처럼 보이지만 이 안에는어떤 우선순위와 규칙이 다 들어있습니다.

“5 + 5 = ” + “10”

이는 문자열과 문자열간의 연산입니다. 숫자로 보이지만 숫자가 아니므로 숫자의 연산을 하지 않습니다. 보이는 것과 내부는 다르다는 점에 주의합니다.

요약

스몰베이직 기초가 되는 개념을 학습했습니다. 학습용 언어답게 C# 같이 정돈된 프로그램에 적응할 수 있도록 기본 개념에 충실합니다.

모든 코드는 따라해보고 자신만의 코드를 하나씩 만드시길 바랍니다.

외부참조문서

Small Basic (smallbasic-publicwebsite.azurewebsites.net)

Leave a Comment