파스칼
(Pascal)은 1969年에
스위스
ETH 취리히
의
컴퓨터 科學者
니클라우스 비르트
가 開發한
프로그래밍 言語
로, 當代의 가장 人氣있는 敎育用 言語 中 하나였으며, 1980年代와 1990年代 初盤에 걸쳐 널리 使用되었다.
파스칼은 發表 當時에는 아주 基本的인 컴퓨터 言語의 要素만을 가지고 있었으므로 시스템을 直接 다루기에는 不足하였다. 파스칼이라는 이름은
프랑스
의 數學者이자 哲學者
블레즈 파스칼
의 이름을 딴 것이다.
포인터
를 使用한
構造的 프로그래밍
과
데이터 構造化
(data structuring)를 그 特徵으로 한다.
科學 硏究를 目的으로 만들어진
高級言語
人
알골 60
의 影響을 받은 까닭에, 같은 時期에 마찬가지 影響을 받아 製作된
C
와 여러 가지 面에서 類似한 點을 갖는다. 그러나 코드를 簡潔하게 하고 버그를 더 쉽게 잡아내기 위한 目的으로 몇 가지 機能을 制限함으로써 結果的으로 C 言語에 비해 活用度가 떨어지는 言語가 되었다. 그러나 完全히 非實用的인 言語라는 뜻은 아니며, 實際로
TeX
나 初期
매킨토시
運營 體制
製作에 使用됐다. 最近
[
언제
?]
에는 파스칼 컴파일러 自體가 크게 改善되고 소프트웨어 開發 技術의 發展으로 이런 些少한 差異點은 거의 無視할 수 있는 短點이 되었다. 어셈블리를 直接 使用한다.
現在는 初期의 파스칼에 비해 많은 部分이 追加, 改善되고 다른 言語의 長點들을 따와 常用 파스칼 컴파일러人
델파이
는 C++과 거의 機能 差異가 없다.
컴파일러
[
編輯
]
많은 變種들이 存在하며,
客體 志向 프로그래밍
을 위해 機能을 追加한 變種들도 多數 存在한다.
엠바카데로
辭意
델파이
와
카일릭스
는 파스칼의 直系 後孫이라 할 수 있는
오브젝트 파스칼
을 使用한다.
델파이
7 버전부터는 델파이라는 말을 使用하기도 한다.
오픈 소스로 製作된
프리 파스칼
이나
GNU 파스칼
도 있다.
開發道具
[
編輯
]
델파이 言語로 불리는 變種 오브젝트 파스칼은 델파이, 프리 파스칼 IDE,
라자루스
等에서 開發할 수 있다. 볼랜드 파스칼이라 불리는 델파이 以前의 오브젝트 파스칼은
터보 파스칼
,
프리 파스칼
IDE에서 開發할 수 있다.
言語 構成
[
編輯
]
Hello world
[
編輯
]
program
HelloWorld
(
output
)
;
begin
writeln
(
'Hello, World!'
)
end
.
콘솔 入出力
[
編輯
]
program
WriteName
;
VAR
Name
:
string
;
{ This declares the variable Name as a string }
BEGIN
Write
(
'Please give your name: '
)
;
Readln
(
Name
)
;
{ Readln reads the string printed on the screen }
WriteLn
(
'Hello '
,
Name
)
;
END
.
資料 構造
[
編輯
]
var
r
:
Real
;
i
:
Integer
;
c
:
Char
;
b
:
Boolean
;
e
:
(
apple
,
pear
,
banana
,
orange
,
lemon
)
;
一般 類型의 下部 範圍는 다음과 같이 짤 수 있다:
type
fruit
=
(
apple
,
pear
,
banana
,
orange
,
lemon
)
;
var
x
:
1
..
10
;
y
:
'a'
..
'z'
;
z
:
pear
..
orange
;
다른 프로그래밍 言語와 달리, 파스칼은 集合 類型을 支援한다:
var
set1
:
set
of
1
..
10
;
set2
:
set
of
'a'
..
'z'
;
set3
:
set
of
pear
..
orange
;
集合은 現代 數學에 있어 基本的인 槪念이며 수많은 알고리즘이 集合을 使用하여 定義된다. 그러므로 이러한 알고리즘을 追加하는 것은 파스칼에 매우 알맞다고 볼 수 있다. 集合型 연산은 效率的이기도 하다.
많은 파스칼 컴파일러가
if
i
in
[
5
..
10
]
then
...
을
if
(
i
>
4
)
and
(
i
<
11
)
then
...
보다 더 빠르게 遂行한다.
兄(type)은 宣言을 통해 다른 兄으로부터 定義될 수 있다:
type
x
=
Integer
;
y
=
x
;
...
또한, 複雜한 兄은 單純한 兄으로 構成할 수 있다:
type
a
=
Array
[
1
..
10
]
of
Integer
;
b
=
record
x
:
Integer
;
y
:
Char
end
;
c
=
File
of
a
;
포인터
[
編輯
]
파스칼은
포인터
使用을 支援한다:
type
a
=
^
b
;
b
=
record
x
:
Integer
;
y
:
Char
;
z
:
a
end
;
var
pointer_to_b
:
a
;
可變
pointer_to_b
가 資料型
b
레코드의 포인터이다. 포인터들은 宣言 前에 使用할 수 있다. 새로운 레코드를 만들어 값
10
과
A
를 레코드 안의 필드
a
,
b
로 割當하려면, 다음과 같은 命令語를 使用하면 된다:
new
(
pointer_to_b
)
;
pointer_to_b
^.
x
:=
10
;
pointer_to_b
^.
y
:=
'A'
;
pointer_to_b
^.
z
:=
nil
;
...
한정자를 보다 效果的으로 統制하기 위해서는
with
門을 써서 다음과 같은 方式을 使用할 수도 있다.
new
(
pointer_to_b
)
;
with
pointer_to_b
^
do
begin
x
:=
10
;
y
:=
'A'
;
z
:=
nil
end
;
...
制御 救助
[
編輯
]
파스칼은
構造 프로그래밍
言語이며, 制御 흐름을 goto 門 없이 標準化할 수 있다.
while
a
<>
b
do
writeln
(
'Waiting'
)
;
if
a
>
b
then
writeln
(
'Condition met'
)
else
writeln
(
'Condition false'
)
;
for
i
:=
1
to
10
do
writeln
(
'Iteration: '
,
i
:
1
)
;
repeat
a
:=
a
+
1
until
a
=
10
;
節次 및 函數
[
編輯
]
파스칼 救助는 節次와 函數로 짜여진다.
program
mine
(
output
)
;
var
i
:
integer
;
procedure
print
(
var
j
:
integer
)
;
function
next
(
k
:
integer
)
:
integer
;
begin
next
:=
k
+
1
end
;
begin
writeln
(
'The total is: '
,
j
)
;
j
:=
next
(
j
)
end
;
begin
i
:=
1
;
while
i
<=
10
do
print
(
i
)
end
.
節次와 函數는 어느 깊이로든 놓일 수 있으며, 프로그램 構造는 論理 外部 블록이다.
같이 보기
[
編輯
]
外部 링크
[
編輯
]
|
---|
|
1
~
9999
| |
---|
10000
~
19999
| |
---|
20000+
| |
---|
|