Object Pascal - Google

Object Pascal

Z Wikipedii

Skocz do: nawigacji, szukaj

Object Pascal – obiektowy język programowania, obiektowe rozszerzenie języka Pascal, użyty jako język programowania w środowisku programistycznym Borland Delphi, Kylix oraz darmowa implementacja Free Pascal wraz ze środowiskiem programistycznym Lazarus. Czasami język ten właściwie jest nazywany Delphi Pascal. Charakteryzuje się głównie prostą składnią i bardzo wysoką efektywnością tworzenia oprogramowania, na co wpływ ma zwłaszcza bardzo szybki kompilator (w porównaniu do innych języków jest kilkakrotnie szybszy). W implementacji obiektowej zachowano większość elementów programowania strukturalnego, przez co osiągnięto narzędzie łączące oba paradygmaty przy zachowaniu zgodności na poziomie kodu (możliwość kompilacji starszego kodu nowymi kompilatorami).

Spis treści

[edytuj] Podstawowe elementy języka

[edytuj] Struktura programu

program nazwa_programu (parametry); //nagłówek
{część definiująca}
begin
  {część operacyjna}
end.

Program może występować w dwóch wariantach:

  • tekstowy - tekstowe okno DOSa, obsÅ‚ugiwane przez bibliotekÄ™ modułów RTL (Runtime Library).
  • graficzny - przeznaczony dla Å›rodowiska Windows i obsÅ‚ugiwany przez bibliotekÄ™ VCL (Visual Component Library).

[edytuj] Komentarze

Komentarz stanowi swobodny tekst w kodzie programu. Ma on znaczenie jedynie dla czytelności kodu źródłowego, gdyż jest ignorowany przez kompilator. W języku Object Pascal występują 3 rodzaje komentarzy:

  • nawiasy klamrowe { .. }, wystÄ™pujÄ…ce w Turbo Pascalu,
  • komentarze typu (* .. *) (nawias-gwiazdka), także wystÄ™pujÄ…ce w Turbo Pascalu,
  • komentarze znane z jÄ™zyka C++, wystÄ™pujÄ…ce w postaci // (ang. double slash).

[edytuj] Składnia

Kompilator obliczając wartość danego wyrażenia oblicza jego poszczególne części zgodnie z poniższą kolejnością:

  • najwyższy priorytet majÄ… wyrażenia "zagnieżdżone" w najwiÄ™kszej liczbie nawiasów, potem:
  • negacja
  • operatory multiplikatywne
  • operatory addytywne
  • relacje

Przy kodowaniu należy zwracać uwagę na fakt, iż relacje mają najniższy priorytet. Niektóre zapisy matematyczne zakodowane do treści programu bez użycia nawiasu będą traciły zupełnie sens. Przy zapisywaniu relacji posługuje się nawiasami.

[edytuj] Procedury i funkcje

[edytuj] Procedury

Procedura to podprogram, nie zwracający żadnej wartości. Szkielet deklaracji procedury w języku Object Pascal jest taki sam, jak w standardowym języku Pascal:

procedure NazwaProcedury([ListaParametrówFormalnych]); [Dyrektywy];
begin
 
end;

Pierwszy wiersz (z nazwą procedury i opcjonalnymi: listą parametrów formalnych oraz dyrektywami) nosi nazwę nagłówka procedury.

Wśród głównych procedur wyróżniamy:

[edytuj] Funkcje

Funkcja to podprogram zwracający wartość. Szkielet deklaracji funkcji w języku Object Pascal jest taki sam, jak w standardowym języku Pascal:

function NazwaFunkcji([ListaParametrówFormalnych]): TypZwracanejWartości; [Dyrektywy];
begin
 
end;

Pierwszy wiersz (z nazwą funkcji, typem zwracanej wartości i opcjonalnymi: listą parametrów formalnych i dyrektywami) nosi nazwę nagłówka funkcji.

[edytuj] Zmienne

W języku Pascal (również w Object Pascal) deklaracje zmiennych są umieszczone przed blokiem kodu danego podprogramu lub programu głównego (w przeciwieństwie do C/C++ i Javy). Np. fragment kodu wyglądający w C++ następująco:

void example(void)
{
  int x = 1;
  x++;
  float y = 1.5;
  y+=7;
  int z;
}

w języku Object Pascal powinien wyglądać następująco:

procedure Example;
var
  X, Z: Integer;
  Y: Double;
begin
  X := 1;
  Inc(X);
  Y := 1.5;
  Y := Y + 7;
end;

W języku Object Pascal dopuszczalne jest łączenie deklaracji zmiennych, np. deklaracje

var
  X: Integer;
  Y: Integer;

mogą być skrócone do zapisu postaci

var
  X, Y: Integer;

Istnieje również możliwość nadawania wartościom zmiennym podczas ich deklaracji (inicjalizacja), np.:

var
  I: Integer = 13;
  S: string = 'Ciekawy artykuł w Wikipedii';
  D: Double = 3.14159;
  P: Pointer = nil;

Jest to dopuszczalne tylko dla zmiennych globalnych.

Nie jest natomiast konieczne nadawanie zmiennym wartości początkowej 0 (0, 0.0, nil w przypadku wskaźników lub łańcuch pusty w przypadku zmiennych typu string), gdyż kompilator dokonuje automatycznej inicjalizacji wszystkich zmiennych globalnych poprzez wyzerowanie zajmowanej przez nie pamięci.

[edytuj] Typy zmiennych

Każda zmienna oraz stała musi być określonego typu zmiennych, tj. przyjmuje wartości z określonego, dopuszczonego zbioru wartości. Mogą one być zarówno proste jak i złożone. Dostęp do wartości pewnej danej może być pośredni lub bezpośredni. Rozróżnia się trzy zasadnicze rodzaje typów wartości:

  • Proste (dostÄ™p bezpoÅ›redni)
  • Strukturalne (dane zÅ‚ożone, dostÄ™p bezpoÅ›redni)
  • Referencyjne (dostÄ™p poÅ›redni)

[edytuj] Instrukcje

[edytuj] Instrukcje proste

  • przypisania
  • skoku (goto)
  • pusta
  • wywoÅ‚ania procedury lub funkcji

[edytuj] Instrukcje strukturalne

  • zÅ‚ożona
  • warunkowa
    • instrukcja "jeÅ›li" (if)
    • instrukcja wyboru (case)
  • iteracyjna
    • instrukcja for
    • instrukcja while
    • instrukcja repeat
  • wiążąca
  • obsÅ‚ugi warunków i stanów wyjÄ…tkowych
    • wywoÅ‚ania stanów wyjÄ…tkowych
    • Try except
    • Try finally

[edytuj] Bibliografia

  • A. Marciniak, Borland Pascal 7.0, Nakom 1995
  • A. GrażyÅ„ski, Z. Zarzycki, Delphi 7, Helion 2003
  • J. Zahorski, Turbo Pascal 7.0

[edytuj] Różnice obiektowego Pascala w porównaniu z C++

[edytuj] (+)

  • (+) skÅ‚adnia Å‚atwiejsza do zrozumienia dla nie–programisty (sÅ‚owa–polecenia zamiast klamer i nawiasów; co pociÄ…ga za sobÄ… wiÄ™kszÄ… objÄ™tość kodu źródÅ‚owego)
  • (+) mechanizm modułów wraz z kontrolÄ… widocznoÅ›ci nazw i sekcjami inicjalizacyjnymi / finalizacyjnymi)
  • (+) bÅ‚yskawiczne tworzenie [DLL]-ów
  • (+) opcjonalna kontrola zakresów i przepeÅ‚nieÅ„
  • (+) wbudowane zbiory i liczne operacje na nich, co znacznie przyspiesza i upraszcza np. porównania
  • (+) tablice dynamiczne
  • (+) wbudowane typ zmiennych plikowych - także uproszczone tworzenie plików skÅ‚adajÄ…cych siÄ™ tylko z jednego typu danych
  • (+) uproszczony mechanizm mapowania skÅ‚adowych rekordu (intuicyjna instrukcja wyboru Case zamiast unii)
  • (+) dyrektywa mapujÄ…ca (absolute)
  • (+) mechanizm zgodnoÅ›ci typów
  • (+) możliwość tworzenia lokalnych procedur w procedurach
  • (+) obiekty posiadajÄ… wÅ‚aÅ›ciwoÅ›ci (Properties), także tablicowe i domyÅ›lne, zwiÄ™ksza to znacznie czytelność kodu.
  • (+) istnienie metaklas - ich obiekty zawierajÄ… referencje do klas
  • (+) wirtualne konstruktory
  • (+) oddzielenie części deklaracji od instrukcji zwiÄ™ksza czytelność kodu i zmusza do porzÄ…dku


[edytuj] (-)

  • (-) brak zmiennych referencyjnych (jest tylko przekazanie parametru przez referencje)
  • (-) możliwość kompilacji kodu zawierajÄ…cego instancje klas abstrakcyjnych
  • (-) brak programowania generycznego (brak wzorców) (z wyjÄ…tkiem [FPC])


[edytuj] (?)

  • (+-) odmienne symbole operatorów, nie ma uproszczonych operatorow przypisan, jak np. += czy <<= (z wyjÄ…tkiem [FPC])
  • (+-) uboższa ale Å‚atwiejsza Implementacja obiektów (brak dziedziczenia od dwóch przodków) ale za to sÄ… wirtualne konstruktory i nie trzeba ich pokrywać w każdej klasie
  • (+) wszystkie klasy maja wspólnego przodka (TObject) - upraszcza to np. implementacje polimorficznych klas kontenerów
  • (+-) mniejsza kontrola wykonywania pÄ™tli for – zmienna iteracyjna w pÄ™tli for zmienia siÄ™ o 1 automatycznie a w wielu implementacjach jest "chroniona" przed zmianami, umożliwia to tworzenie wydajniejszego kodu wykonalnego(od wersji 17 Delphi pÄ™tla for umożliwia enumeracjÄ™ po każdym elemencie zbioru w postaci "for each Zmienna in Zbiór do")
  • (+-) brak preprocesora kodu, przez co kompilacja jest znacznie szybsza ale brak korzystania z makr
  • (+-) funkcje nie zwracajÄ…ce wartoÅ›ci nazwane sÄ… procedurami
Wikibooks
Zobacz podręcznik na Wikibooks:
Object Pascal

W głębinach odnaleziono Miasto Wężowideł
Unikatową kolonię wężowideł (typ szkarłupnia i krewny rozgwiazdy) odkryto w głębi Oceanu Spokojnego w rejonie subantarktycznym na Grzbiecie Macquarie. Dziesiątki milionów tych kruchych bezkręgowców zamieszkuje podwodne wzgórze - informuje serwis niwa.co.nz.
125-calowy wyświetlacz plazmowy
Prototypowy wyświetlacz plazmowy o przekątnej 125 cali i grubości ekranu wynoszącej zaledwie 1 mm został zaprezentowany przez japoński koncern Shinoda Plasma Corp.
Chińczycy chcą w Polsce kształcić pilotów
Do końca maja Ministerstwo Infrastruktury udzieli odpowiedzi stronie chińskiej na propozycję skierowania na Politechnikę Rzeszowską studentów z Chin i wykształcenia ich na cywilnych pilotów.
Wkrótce na Marsie wyląduje Phoenix
Za kilka dni do pojazdów od dawna eksplorujących powierzchnię Marsa dołączy kolejny. Będzie to amerykański lądownik Mars Phoenix Lander.
Chińska inwazja zagraża europejskim truflom
Sławnym czarnym truflom z Perigord zagraża wyginięcie z powodu inwazji chińskiej odmiany grzyba.
Linki: Strona g³ówna