QBASIC 기초 튜토리얼
목차
QBASIC(큐베이식)은 통합개발환경(IDE)과 인터프리터로 구성된 BASIC 계열의 프로그램입니다. BASIC 프로그래밍은 교육용 소프트웨어로 오랜 역사를 지니고 있는데 그 중간 버전 정도로 볼 수 있습니다.
GW-BASIC과 QUICKBASIC의 영향을 받았고 후에 SmallBaisic, QB64 등에 영향을 끼쳤습니다. DOS의 내장 프로그램이었다는 것을 감안하면 현재도 많은 사용자를 가진 MS Visual Basic의 문법의 토대가 되었다고도 말하는데요. 세계 TOP 재벌이자 MS의 창업주인 빌게이츠는 젊은 시절 베이식을 중요하게 여겼다고도 합니다.
현재의 관점으로 보면 빌게이츠 같은 천재가 베이식 같은 수준 낮은 프로그래밍 언어나 개발하고 있었다니… 라고 비판할 수도 있겠지만 그는 베이식의 쉽고 직감적인 사용법이 더 많은 사람들에게 컴퓨터의 보급을 가져올 거라는 판단을 했고 한 때 소프트웨어 계에서 독점적인 위치를 확보할 수 있었습니다. 웹이 지배하는 지금은 또 상황이 다르지만 BASIC은 여전히 프로그래밍 입문용으로 괜찮은 언어이며 많은 이들에게 향수를 불러일으키는 언어이기도 합니다.
IT로 성공한 이들 중에는 어렸을 때 애플컴퓨터나 MSX에서 베이식으로 처음 프로그래밍을 배운 사람들이 많다고 합니다. 테슬라 CEO인 일론 머스크가 12살 때(1980년대) 베이식 언어로 컴퓨터 게임 Blastar를 만들어서 소스 코드를 컴퓨터 잡지사에 500달러를 받고 판매한 일화는 유명합니다. 이렇듯 베이식은 광범위한 영향력을 가지고 있습니다.
BASIC에 가장 열성적이던 MS사가 .NET 플랫폼으로 전환하고 VB .NET으로 바뀌면서 BASIC은 우리가 알던 그게 아니게 되었지만 기존의 정신을 계승하려는 오픈소스 프로젝트 중 하나가 QB64.org 입니다. QB64는 QBASIC을 최신 운영체제에서 실행할 수 있는 확장 프로젝트입니다. QBASIC의 기존 문법은 그대로이고 성능 향상과, 배포 기능, 외부 C/C++ 프로그래밍 라이브러리 사용 등을 추가한 확장판입니다. 아래 웹사이트에서 다운로드 받을 수 있습니다.
QB64.org – BASIC for the modern era
윈도우용 압축파일은 약 150메가 정도 되는데 압축을 풀면 500메가가 넘습니다. MS-DOS용 QBASIC 실행파일과 HLP 파일이 약 300K 정도 인 것과 비교하면 큰 차이인데요. 오리지널 버전은 가상머신인 VMware의 MS-DOS나 DOSBOX로도 실행시킬 수 있습니다.
이 포스팅은 QB64를 실행해보겠습니다.
QB64 x64 를 실행하면 아래와 같이 올드한 도스 프로그램을 볼 수 있습니다. 물론 외관만 도스 스타일이고 내부는 전혀 다른 프로그램입니다.
Hello World 출력하기
Hello World 부터 출력해 보겠습니다. 다음 코드를 입력하고 메뉴의 Run -> Start를 실행합니다.
PRINT "Hello World, QB64!"
소스파일은 메뉴의 File -> Save에서 저장합니다. QBASIC 소스파일의 확장자는 bas 입니다. 저장 시 IDE가 자동으로 추가합니다. 컴파일을 하면 output 인 exe 실행파일은 QB64 폴더에 생성됩니다. (Output Exe to Source Folder로 변경할 수 있음)
bas 파일은 메모장이나 다른 텍스트 에디터에서도 편집 할 수 있습니다.
변수 선언과 기본 연산
BASIC의 문법은 워낙 직관적이어서 프로그래밍을 슥슥 써나가면서 익숙해 질 수 있습니다. 한가지 주의 사항은 QBASIC 컴파일러는 키워드에 대소문자 구분을 하지 않습니다. 또 QB64의 경우 문장을 작성하고 다음 라인으로 이동하면 자동완성 기능으로 키워드의 대소문자를 조정합니다. 예를 들어서 pRint “Something” 이라고 작성하면 Print “Something” 이라고 자동으로 변경됩니다.
원래 MS-DOS 의 베이식에서는 PRINT 처럼 키워드를 대문자로 표기하는게 관습이었는데(과거 8비트 PC는 소문자 출력이 안됬다) QB64의 스타일은 Print 처럼 첫글자가 대문자입니다. 알아서 자동완성이니까 별로 신경안써도 될 것 같습니다.
다음 예제에서 BASIC의 기본적인 맛을 보겠습니다.
Cls Print "[Welcome to the QBASIC Tutorial]" Let var1 = 10 Print "1) Variables" Print "var1: "; 10 Print "You can declare and initialize a varialbe with 'Let' keyword" Let num1 = 30 Let num2 = 15 Let result = num1 + num2 Print "<Addition Process>" Print "num1 :"; num1 Print "num2 :"; num2 Print "num1 + num2 ="; result Print "<Basic Math Operation>" Print "Add(+): "; num1 + num2 Print "Sub(-): "; num2 - num1 Print "Mul(*): "; num1 * num2 Print "Div(/): "; num1 / num2 Print "Print", "Format 1 (,) comma" Print "Print"; "Format 2 (;) semicolon"
cls 는 clear screen입니다. 변수는 let 키워드를 사용합니다. let 이 없어도 변수를 선언할 수 있지만 선언은 명시적 인게 좋습니다. print 에서는 num1 + num2 같은 표현식을 사용할 수 있습니다.
포맷팅에서 , 는 탭과 같은 효과입니다. 텍스트를 멀리 떨어뜨립니다. 세미콜론은 텍스트와 변수 출력의 간격 조절을 위해 사용합니다.
문자, 문자열
문자와 문자열은 끝에 $ 접두어를 붙여서 사용합니다. $가 없으면 문자열을 제대로 출력하지 않습니다.
Print "[String Variable, Character]" WelcomeMSG$ = "Hello from QB64" Print WelcomeMSG$ char1$ = "A" Print char1$
QBASIC에서도 문자열 연산이 가능합니다. “Hello” “World” “QB64” 같이 각각의 문자열을 (+)연산자로 이어 붙일 수 있습니다.
키보드 입력 기본
키보드 입력을 받는 함수는 Input 입니다. 문자열 변수에 받을 수 있고 또 숫자형 변수에 받을 수 있습니다. (자동으로 캐스팅 된다)
Let name$ = "" Print "Enter your name: " Input name$ Print "Welcome to the QB64! "; name$ Print "Enter a number: " Input num Print "The number is"; num
함수 기본
QBASIC은 내장 함수를 제공합니다. BASIC이라 종류도 별로 없고 사용법이 어렵지 않으니 온라인 문서들의 예제를 적당히 따라해보면 알 수 있습니다. 하지만 파일이나 타임, 그래픽 관련 함수 등 있어야 할 것들은 꽤 갖추고 있어서 BASIC 레벨에서 충분히 쓸만합니다.
Print "Alsolute Value of -7 :"; Abs(-7) Print "Square root of 25 :"; Sqr(25) Print "Skip 5"; Spc(5); "and text" Print Time$
QBASIC 문서화
QBASIC은 프로그램 내부에 help 파일이 잘 되어 있습니다만, 올드 스타일이라 찾기가 좀 수월하지 않을 수 있습니다. 지금은 온라인 문서(Documentation)가 잘 되어 있으니 참고할 만한 사이트를 링크합니다.
QBasic 1.1 Commands List – Keywords, Functions, Statements
-> 키워드, 함수들에 대한 설명과 예시가 있습니다.
QBasic/Full Book View – Wikibooks, open books for an open world
-> 위키북스의 전자책입니다. 위키북스 답게 정리가 참 잘되어 있습니다. 튜토리얼을 순서대로 따라하기가 좋습니다. 짧은 시간 내에 전체를 리뷰하는 느낌입니다.
Pete’s QBASIC / QuickBasic Site (petesqbsite.com)
-> 피트의 QBASIC 튜토리얼과 각종 프로그램 소스를 제공합니다. 1998년부터 운영중인 QBASIC 레전드
Microsoft QuickBASIC – FreeBASIC Documentation
-> FreeBASIC은 QBASIC 호환되는 프로그래밍 언어입니다. 문서화가 잘 되어 있습니다. API에서 QB와의 호환성에 대해서 나와있습니다. 대체로 __FB 접두어가 붙은 경우 FreeBasic 에 새로 추가된 내용일 경우가 많음.
요약(Summary)
QBASIC 기초 튜토리얼을 통해 QB64를 시작했습니다.
BASIC의 기본인 스크린에 문자열 출력, 변수와 기본적인 수학 연산, 문자열 입력받기, 함수 등을 대략 살펴봤습니다.
BASIC의 문법은 직관적으로 누구나 쉽게 적응할 수 있어서 프로그래밍을 처음 입문하는 사람들에게 권장할 수 있습니다. 또 Visual Basic 계열 프로그래밍이 조금 어렵게 느껴진다면 QB64, FreeBasic 같이 약간 올드해 보이지만 프로그래밍의 기본에 있어서는 파워풀한 베이식으로 시작하는 것도 괜찮은 방법입니다. QB64는 QBASIC과 호환성을 유지하고 외관이 비슷하지만 내부적으로는 전혀 다른 현대적인 프로젝트입니다.
BASIC의 좋은 점은 역시 뭐든 쉽게 할 수 있다는 부분입니다. 하지만 쉽다고 해서 무시할게 아닌게 컴파일러는 파일 입출력 같은 고급언어(high-level language)에 있는 기본을 갖추고 있습니다.
뭐 요즘시대에 얼마나 많은 사람이 QBASIC 같은 과거의 프로그램을 사용할지는 모르겠습니다만. 컴퓨터를 사용하는 이유가 꼭 무언가 돈이 되고 실력을 쌓기 위해서 일 수도 있지만 단순히 레트로에 대한 향수라던가 IT의 역사를 체험하고 싶어서 일 수도 있습니다. 목적을 결정하는 것은 개인의 몫일 뿐입니다. QB64 프로젝트를 진행하는 팀도 이런 BASIC 자체에 매력을 느껴서 시작한 것으로 보입니다. 유튜브 보면 구독자가 1천명도 안되던데, 그래도 가끔씩 영상을 업로드하고 있더군요.
QBASIC은 타이핑을 치고 컴파일을 하면서 빠르게 실력을 늘릴 수 있으니까 이 튜토리얼 시리즈도 최대한 빠르게 작성해보려고 합니다. 많은 최신 언어를 사용해봤다면 어쩌면 오래된 언어인 QBASIC에서 새로운 영감을 얻을 수 있지 않을까 – 하는 기대입니다.