Перейти до вмісту

Object Pascal

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 10:12, 22 березня 2013, створена RLutsBot (обговорення | внесок) (Перенесено 24 інтервікі-посилань до Вікіданих (Q633894))
Object Pascal
Delphi's-like logo
Парадигмаімперативна, структурна, об'єктно-орієнтована
Дата появи1986 Редагувати інформацію у Вікіданих
ТворціНіклаус Вірт, Андерс Гейлсберг
РозробникLarry Teslerd і Ніклаус Вірт Редагувати інформацію у Вікіданих
Система типізаціїстатична і динамічна , строга, безпечна
Основні реалізаціїDelphi (x86 та CLI), Oxygene (CLI), Free Pascal (x86, x86-64, PowerPC, ppc64, Sparc та ARM), Virtual Pascal (x86), TMT Pascal (x86), Turbo51 (Intel 8051)
ДіалектиApple, Turbo Pascal, objfpc, Delphi, Delphi.NET, Oxygene
Під впливом відPascal, Smalltalk
Вплинула наC#, Java
Звичайні розширення файлів.p, .pp або .pas Редагувати інформацію у Вікіданих

Object Pascalоб'єктно-орієнтований нащадок мови програмування Pascal, відоміший як основна мова програмування середовища Delphi.

Компанія Borland використовувала назву «Object Pascal» для мови програмування у перших версіях RAD Delphi, проте пізніше назвала її «мовою програмування Delphi». Однак, компілятори, що заявлені як Object Pascal-сумісні, дуже часто намагаються бути сумісними із вихідними кодами Delphi.

Компілятори

Є багато компіляторів, які в основному сумісні з Object Pascal, який використовувався в Delphi. Вони дозволяють будувати програми на Object Pascal під різноманітними платформи та підпадають під різні ліцензії.

Приклади програми «Hello, world!»

Object Pascal (Apple)

program ObjectPascalExample;
 
   type
      THelloWorld = object
         procedure Put;
      end;
 
   var
      HelloWorld: THelloWorld;

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;
 
begin
   New(HelloWorld);
   HelloWorld.Put;
   Dispose(HelloWorld);
end.

Object Pascal (Turbo Pascal)

program ObjectPascalExample;
 
   type
      PHelloWorld = ^THelloWorld;
      THelloWorld = object
         procedure Put;
      end;

   var
      HelloWorld: PHelloWorld; { це вказівник на THelloWorld }

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;

begin
   New(HelloWorld);
   HelloWorld^.Put;
   Dispose(HelloWorld);
end.

Object Pascal (Delphi та Free Pascal)

program ObjectPascalExample;

type
  THelloWorld = class
    procedure Put;
  end;

procedure THelloWorld.Put;
begin
  Writeln('Hello, World!');
end;

var
  HelloWorld: THelloWorld;               { це неявний вказівник }

begin
  HelloWorld := THelloWorld.Create;      { конструктор повертає вказівник }
  HelloWorld.Put;                        { розіменування вказівника}
  HelloWorld.Free;
end.

Object Pascal (Oxygene)

namespace ObjectPascalExample;

   interface

   type
      ConsoleApp = class
         class method Main
      end;

      THelloWorld = class
         method Put;
      end;

   implementation

   method THelloWorld.Put;
   begin
      Console.WriteLine('Hello, World!');
   end;

   class method ConsoleApp.Main;
   begin
      var HelloWorld := new THelloWorld;
      HelloWorld.Put;
   end;

end.


Службові слова

Службові слова призначені для написання команд.

and - i
array - масив
begin - початок
case - вибір
const - сталі
div - ділення без остачі
do - виконати
downto - униз до
else - інакше
end - кінець
file - файл
for - для
function - функція
goto - перейти до
if - якщо
label - позначка
mod - остача
not - не
of - з
or - або
procedure - процедура
program - програма
record - запис
repeat - повторювати
then - то
while - доки


Типи змінних


Дані цілого типу:
byte — цілі дуже короткі (1 байт)
integer — цілі короткі (2 байти)
longint — цілі довгі (4 байти)


Дані дійсних типів
single — дійсні короткі (4 байти)
real — дійсні (6 байтів)
double — дійсні довгі (8 байтів)
extended — дійсні дуже довгі (12 байтів)


Текстові дані
string


Приклади циклів


Цикл for

 var
  i: Integer;
 begin
  for i:=1 to 5 do
   begin
    ShowMessage('Номер ' + IntToStr(i));
   end;
 end;


Цикл while

 var
  i:Integer;
 begin
  i:=1;
  while i < 6 do
   begin
    ShowMessage('Номер ' + IntToStr(i));
    inc(i);
   end;
 end;


Цикл з постумовою

 var
  s, n:Integer;
 begin
  s:=0; n:=1;
  repeat
   s:=s + n;
   n:=n + 1;
  until i > 10;
  ShowMessage(IntToStr(s));
 end;

Приклад функції


Напишемо просту функцію, якій дають довжину та перетин алюмінієвого дроту, і функція поверне нам опір цього дроту
де: R — опір дроту; p — питомий опір алюмінієвого дроту; l — довжина дроту; s — перетин дроту;

function R(l:Real; S:Real) : Real;
var
p:Real;
begin
p:=0.03; //питомий опір алюмінію
R:=(p * l) / S;   //Присвоюємо функції значення опору за формулою
end;

Виклик функції:
ShowMessage('Опір алюмінієвого дроту довжиною 100м і перетином 2мм квадратних буде ' + FloatToStr(R(100, 2)));

Дивіться також

Посилання

  • Embarcadero Delphi. (англ.)
  • FAQ по Delphi. (рос.)

Джерела

Я. М. Глинський. Інформатика — алгоритмізація і програмування, Львів — 2005.