Pascal (język programowania)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Pascal – dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego poziomu, ogólnego zastosowania, oparty na języku Algol. Został opracowany przez Niklausa Wirtha w 1970 roku. Nazwa języka pochodzi od nazwiska francuskiego fizyka, matematyka i filozofa Blaise Pascala.[potrzebne źródło]

Pierwszy opis języka Wirth zawarł w The programming language Pascal, Acta Informatica 1/1971, a kolejny, poprawiony w The programming language Pascal (Revised Report), Bericht der Fachrgruppe Computer – Wissenschaften 5/1972. Pierwszym podręcznikiem języka Pascal była pozycja Jensen, Wirth, Pascal, User Manual and Report 1974.

Pierwotnie służył celom edukacyjnym do nauki programowania strukturalnego[potrzebne źródło]. Popularność Pascala w Polsce była większa niż w innych krajach ze względu na dostępność kompilatorów w pirackich wersjach (zanim pojawiło się prawo ochrony własności intelektualnej), prostotę języka oraz jego popularyzację przez wyższe uczelnie. Szczyt popularności tego języka przypadł na lata 80. i początek 90 XX wieku. Wraz ze zniesieniem ograniczeń COCOM, upowszechnieniem się sieci oraz systemu Unix (następnie Linuksa) stopniowo został wyparty przez C i C++.

Jedną z popularniejszych implementacji kompilatorów tego języka był produkt firmy Borland InternationalTurbo Pascal. W chwili obecnej dość mocno rozpowszechnionym obiektowym dialektem języka Pascal jest Object Pascal, który stanowi podstawę dla takich języków jak Delphi, Delphi.NET, Oxygene

Istnieją wolne kompilatory Pascala, na przykład Free Pascal, a także bazujące na nim, wolne środowisko IDE jak Lazarus.

Pascal jako narzędzie programisty[edytuj | edytuj kod]

Dla niektórych programistów niektóre cechy Pascala wykluczają jego zastosowanie w poważnych projektach i są powodem krytyki tego języka. Według nich powinien zostać jedynie narzędziem do nauki programowania. Jednak w latach 80. i 90. w języku tym powstawało tysiące aplikacji (również komercyjnych).

Zalety Pascala – czytelność kodu, rygorystyczna kontrola typów danych, wraz z pojawieniem się C zostały uznane za mało istotne. Wypromowanym przez C standardem stała się zwięzłość kodu:

Porównanie wybranych elementów składni języków Pascal i C++
Pascal C++
blok
begin


end;
{


}
działania arytmetyczne
Inc (a,5);
Inc (a);
Dec (a);
c := 5; b := 5; a := 5;
a += 5;
a++;
a--;
a = b = c = 5;
pętla z licznikiem
for i:=1 to 10 do 
begin             

 
end;               
for (i=1; i<=10; ++i)
{


}
pętla z warunkiem
while W = 5 do
begin


end;
while (W == 5)
{


}
pętla nieskończona
while true do
begin


end;
repeat


until false;
while (true)
{


}
do {


} while (!false)

Pascal bardzo rygorystycznie podchodzi do kontroli typów, tj. sprawdza czy do zmiennej typu A nie próbuje się przypisać wartości typu B. Jest zatem językiem silnie typowanym.

Popularność Pascala wzrosła z pojawieniem się Delphi – środowiska programistycznego, opartego na obiektowym Pascalu, pozwalającego na błyskawiczne tworzenie atrakcyjnych wizualnie aplikacji pod Windows. Wraz z pojawieniem się biblioteki windows dla C++ oraz narzędzi do automatycznego tworzenia GUI, Pascal znów stracił na znaczeniu.

Przykładowy program[edytuj | edytuj kod]

Najprostszy formalnie poprawny program (wypisujący tekst):

begin
  writeln('Hello World');
end.

Obliczanie n–tego wyrazu ciągu Fibonacciego:

program fibonacci;
var
  i, liczba: word;
  a, b, c: longint;
begin
  writeln('Podaj, ktora liczbe z ciagu Fibonacciego chcesz zobaczyc: ');
  readln(liczba);
  a := 1;
  b := 1;
  if liczba <= 2 then 
    writeln('Wynik: ', a)
  else 
  begin
    for i := 3 to liczba do 
    begin
      c := a+b;
      a := b;
      b := c;
    end;
    writeln('Wynik: ', c);
  end;
end.

Funkcja obliczająca liczbę w ciągu Fibonacciego metodą rekurencyjną.

function fibonacci(nr: integer): integer;
begin
  if (nr = 1) or (nr = 2) then 
    fibonacci := 1
  else 
    fibonacci := fibonacci(nr-1) + fibonacci(nr-2);
end;

Oto przykład innego programu napisanego w Pascalu. Wylicza on miejsca zerowe funkcji kwadratowej.

program funkcja;
var 
  delta , x1 , x2: real;
  a, b, c: real;
begin
  writeln('Podaj wspolczynniki a, b, c trojmianu kwadratowego: ');
  readln(a, b, c);
  if a = 0 then 
    writeln('TO NIE JEST FUNKCJA KWADRATOWA')
  else 
  begin
    delta := (b * b) - (4 * a * c);
    writeln('Delta = ', delta);
    if delta < 0 then
      writeln('BRAK MIEJSC ZEROWYCH FUNKCJI ! (w zbiorze liczb rzeczywistych)')
    else 
    if delta > 0 then 
    begin
      x1 := ((- b) - sqrt(delta)) / (2 * a);
      x2 := ((- b) + sqrt(delta)) / (2 * a);
      writeln('X1 = ' , x1);
      writeln('X2 = ' , x2);
    end 
    else 
    begin
      x1 := (- b) / (2 * a);
      writeln('X1 = ' , x1);
    end;
  end;
end.

Program oblicza silnię dowolnej liczby naturalnej n (w praktyce dowolność ta ograniczona jest zakresem danych typu integer).

program silnia_liczby;
var 
  n: integer;
 
function silnia(n: integer): integer;
begin
  if n = 0 then 
    silnia := 1
  else 
    silnia := n * silnia(n-1);
end;
 
begin
  writeln('Program oblicza silnie z dowolnej liczby');
  write('Podaj liczbe: ');
  readln(n);
  writeln(n,'! = ',silnia(n));
end.

Program sortujący tablicę liczb metodą bąbelkową.

program sortowanie;
const 
  zakres = 99;
var
  Liczby: array [1..zakres] of integer;
  i, j, k, n: integer;
 
procedure czytaj;
begin
  writeln('Program sortuje dane metoda babelkowa');
  write('Podaj ilosc liczb: '); 
  read(n);
  for i := 1 to n do 
  begin
    write('Liczba ',i,' = '); 
    read(Liczby[i]);
  end;
end;
 
procedure pisz;
begin
  writeln('Oto posegregowane elementy:');
  for i := 1 to n do 
    write(liczby[i],' ');
  readln;
end;
 
begin
  czytaj;
  for i := 2 to n do 
  begin
    for j := n downto i do 
    begin
      if Liczby[j-1] > Liczby[j] then 
      begin
        k := liczby[j-1];
        Liczby[j-1]:=Liczby[j];
        Liczby[j]:=k;
      end;
    end;
  end;
  pisz;
  readln;
end.

Program symulujący kostkę do gry:

program kostka;
uses 
  crt;
var
  kost: integer;
  znak: string;
begin
  randomize;
  repeat
    clrscr;
    write ('Ilu scienna kostka chcesz grac ?:');
    readln(kost);
    if (kost < 4) then
    begin
      writeln('Kostka musi miec min 4 sciany');
      readln;
    end;
  until (kost >= 4);
  clrscr;
  repeat
    write('Wylosowano : ');
    write(random(kost)+1);
    writeln(' aby zakonczyc wcisnij "q"');
    readln(znak);
  until (znak =' q') or (znak = 'Q');
end.

Bibliografia[edytuj | edytuj kod]

  1. Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0597-1,
  2. Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., ISBN 83-85060-53-7, ISSN 0867-6011,

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]

Wikibooks-logo.svg
Zobacz publikację na Wikibooks:
Object Pascal