본문 바로가기

Operating System Theme/Mac OS (Classic)

Object Pascal 속성 문법 #1 Hello, World!

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

오브젝트 파스칼(Object Pascal)은 클래식 매킨토시(Mac OS X 이전의 매킨토시)의 주력 언어 중 하나이다. 다른 하나는 C/C++, 또 다른 하나는 Java. 이미 C/C++/Java를 알고 있다고 가정하고 파스칼을 속성으로 익히기 위해 약간의 내용들을 정리해 둔다.

소스 코드의 기본 구조

파스칼 소스의 기본 구조는 다음과 같다.

// filename : main.p
program main;

{$APPTYPE CONSOLE}

var
    num : integer;

begin

    num := 10;
    WriteLn('Hello, World!');

end.

한 줄씩 분석해 본다.

// filename : main.p

한 줄 주석은 // Comment 으로 C와 같다. 여러줄 주석은 (* Comment *)으로서 괄호로 열고 닫음에 주의한다.

program [programName];

프로그램의 이름을 명시한다. 이 이름은 소스 파일 이름과 항상 같아야 한다.

{$APPTYPE CONSOLE}

이 프로그램이 콘솔에서 실행됨을 명시한다.

var
    [variableName] : [VariableType]

파스칼은 변수 선언을 이렇게 한다. var로 지정한 영역 내에서만 변수 이름이 먼저 나오고 콜론으로 구분한 뒤에 자료형을 적는다. C에서 코드 수행 도중에 새 변수를 선언하지 못하는 것과 비슷하다.

파스칼에서 제공하는 기본 자료형은 다음과 같다.

논리 자료형

논리 자료형은 변수 크기에 무관하게 참은 1, 거짓은 0이다.

ByteBool
1바이트를 차지하는 논리형이다.
WordBool
2바이트를 차지하는 논리형이다.
LongBool
4바이트를 차지하는 논리형이다.
Boolean
ByteBool에 alias되어 있다.

정수 자료형

ShortInt / Byte
각각 부호 있는 1바이트 정수와 부호 없는 1바이트 정수이다.
SmallInt / Word
각각 부호 있는 2바이트 정수와 부호 없는 2바이트 정수이다.
LongInt / LongWord
각각 부호 있는 4바이트 정수와 부호 없는 4바이트 정수이다.
Int64 / QWord
각각 부호 있는 8바이트 정수와 부호 없는 8바이트 정수이다.
Integer / Cardinal
각각 부호 있는 정수와 부호 없는 정수이다. 아키텍처에 따라 크기가 달라지는데 일반적으로 Integer는 LongInt에, Cardinal은 LongWord에 alias되어 있다.

실수 자료형

Single
4바이트 실수이다.
Real48
6바이트 실수이다.
Double
8바이트 실수이다.
Extended
10바이트 실수이다.
Comp
8바이트 실수이다. 유효숫자 19~20자리를 보장한다.
Currency
8바이트 실수이다. 유효숫자 10~20자리를 보장한다.

문자 자료형

AnsiChar
1바이트 아스키 문자를 표현한다.
WideChar
2바이트 유니코드 문자를 표현한다.
Char
AnsiChar에 alias되어 있다.

문자열 자료형

NULL 문자로 끝나는 C-Style의 문자열과 달리 파스칼에서는 문자의 개수를 나타내는 정수가 먼저 오고 뒤이어 문자들이 따라온다. 이 정수의 크기 및 구성 문자의 형식에 따라 다음의 자료형을 지원한다.

ShortString
정수부가 1바이트인 짧은 문자열이다. 구성 문자는 AnsiChar이다.
AnsiString
정수부가 4바이트인 문자열이다. 구성 문자는 AnsiChar이다.
WideString
정수부가 4바이트인 문자열이다. 구성 문자는 WideChar이다.
PAnsiString
정수부가 없는 C-Style 문자열이다. 구성 문자는 AnsiChar이다.
PWideString
정수부가 없는 C-Style 문자열이다. 구성 문자는 WideChar이다.
begin
    (* TODO: something *)
end.

beginend는 스코프의 시작과 끝을 알리는 지시어이다. C에서 스코프의 시작과 끝을 알리는 중괄호 { }에 해당한다. 다만 구분할 것이 있다면 다음과 같다.

  • begin 뒤에는 세미콜론이 없다.
  • 스코프의 끝을 알리는 end는 세미콜론으로 끝난다.
  • 프로그램의 끝을 알리는 end는 마침표로 끝난다.

이 규칙에 따라 소스 코드 내에서 스코프의 중첩은 begin [ + begin + end; + ] end.의 구조를 갖는다.단, 마침표로 끝나는 end. 이후에 나오는 모든 문자들은 무시된다.

[variableName] := [something];

파스칼에서 대입 연산자는 :=이다. 콜론이 빠진 =는 두 피연산자의 일치 여부를 확인하는 비교연산자이다.

아래는 실행 결과이다.