Паскал (език за програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Zlatkovtv (беседа | приноси)
Довършена последната част от имплементации!
Zlatkovtv (беседа | приноси)
Добавена голяма част от езикови концепции
Ред 102:
 
IP Pascal е имплементацияна езика за програмиране Pascal, използвайки Micropolis DOS, но е преместен бързо на CP/M, работещ на Z80. Той е преместен в машинните типове 80386 през 1994 г. и днес съществува като Windows/XP и Linux приложения. През 2008 г. системата е доведена до едно ново ниво и в резултат на това езикът, наречен "Паскалин" (калкулаторът на Паскал). Той включва обекти, namespace контроли, динамични масиви, заедно с много други разширения, и като цяло се характеризира със същата функционалност и защита на типовете, като C#. Тя е единствената такава имплементация, която е съвместима и с оригиналната Pascal имплементация, която е стандартизирана като ISO 7185.
 
== Езикови концепти и примери ==
Pascal, в оригиналния си вид, е чисто процедурен език и включва традиционната гама от АЛГОЛ-подобни структури за контрол с ключови думи като '''if''', '''then''', '''else''', '''while''', '''for''', и така нататък. Въпреки това, Pascal също има много съоръжения за структуриране на данни и други абстракции, които не са били включени в първоначалния Algol 60, като определения на типове, записи, показатели, енумерации, както и сетове. Такива конструкции са отчасти наследени или вдъхновени от Simula 67, ALGOL 68 , ALGOL W и предложения от CAR Hoare.
 
=== Hello, world ===
Program HelloWorld(output);
Begin
Write('Hello, world!')
{no ";" is required after the last statement of a block -
adding one adds a "null statement" to the program;}
End.
 
=== Типове данни ===
{| class="wikitable"
 
!Тип данни
!Тип данни, които променливата може да съхрани
 
|-
|integer
|integer (whole) numbers
 
|-
|real
|floating-point numbers
 
|-
|boolean
|the value True or False
 
|-
|char
|a single character from an ordered character set
 
|-
|string
|a group or "string" of characters
 
|}
 
type
byte = 0..255;
signed_byte = -128..127;
string = packed array[1..255] of char;
 
=== Данни в диапазон ===
var
x : 1..10;
y : 'a'..'z';
 
=== Данни от тип set ===
var
Set1 : set of 1..10;
Set2 : set of 'a'..'z';
 
if i in [5..10] then ...
 
if (i > 4) and (i < 11) then ...
 
if i in [0..3, 7, 9, 12..15] then ...
 
=== Декларация на типове данни ===
type
x = integer;
y = x;
...
 
type
a = array[1..10] of integer;
b = record
x : integer;
y : char
end;
c = file of a;
 
=== Указателни типове ===
type
pNode = ^Node;
Node = record
a : integer;
b : char;
c : pNode {extra semicolon not strictly required}
end;
var
NodePtr : pNode;
IntPtr : ^integer;
 
New(NodePtr);
...
NodePtr^.a := 10;
NodePtr^.b := 'A';
NodePtr^.c := NIL;
...
 
New(NodePtr);
...
with NodePtr^ do
begin
a := 10;
b := 'A';
c := NIL
end;
...
 
=== Контролни структури ===
while a <> b do WriteLn('Waiting');
if a > b then WriteLn('Condition met') {no semicolon allowed!}
else WriteLn('Condition not met');
for i := 1 to 10 do {no semicolon for single statements allowed!}
WriteLn('Iteration: ', i);
repeat
a := a + 1
until a = 10;
case i of
0 : Write('zero');
1 : Write('one');
2 : Write('two');
3,4,5,6,7,8,9,10: Write('?')
end;
 
=== Процедури и функции ===
program Mine(output);
var i : integer;
procedure Print(var j : integer);
begin
...
end;
begin
...
Print(i);
end.
 
== Външни препратки ==