For faster navigation, this Iframe is preloading the Wikiwand page for Pascal (język programowania).

Pascal (język programowania)

Z Wikipedii, wolnej encyklopedii

Ten artykuł od 2010-05 zawiera treści, przy których brakuje odnośników do źródeł.Należy dodać przypisy do treści niemających odnośników do wiarygodnych źródeł.(Dodanie listy źródeł bibliograficznych lub linków zewnętrznych nie jest wystarczające).Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości należy usunąć szablon ((Dopracować)) z tego artykułu.
Pascal
Pojawienie się

1970

Twórca

Niklaus Wirth

Pascaljęzyk programowania wysokiego poziomu opracowany przez Niklausa Wirtha w 1970 roku.

Historia

Pascal jako język programowania pojawił się stosunkowo późno (Fortran, Cobol i IBM PL/1 pojawiły się już we wczesnych latach sześćdziesiątych). Niklaus Wirth zaczął tworzyć Pascala w 1968 kiedy to powstał podręcznik. Pierwszy kompilator napisany w Pascalu, który miał być ręcznie skompilowany do Fortrana okazał się porażką, druga próba się powiodła, językiem docelowym został język Scallop[1]. Pascal został opublikowany w 1970, kiedy to został użyty w kursach na Politechnice Federalnej w Zurychu[1]. Korzenie języka sięgają linii języków programowania Algol-60 i Algol-W. W przeciwieństwie do języka C, który został stworzony jako język programowania wysokiego poziomu, ale zapewniający ciągle dostęp niskopoziomowy jak języki asemblera, Pascal został stworzony przede wszystkim jako język do tworzenia strukturalnych aplikacji. 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. W 1977 Wirth zarzucił pracę nad Pascalem na rzecz języka Modula. W 1982 pojawił się ISO Pascal. Mniej więcej w tym samym czasie pojawił się Compas Pascal stworzony przez Andersa Hejlsberga. Później produkt ten został przebudowany i przemianowany na PolyPascal przez firmę PolyData A/S (początkowo firma ta należała do Hejlsberga, który sprzedał ją później Borlandowi). W listopadzie 1983 pojawił się Turbo Pascal firmy Borland, który do 1987 osiągnął wersję 4. Turbo Pascal jako środowisko programistyczne wyróżniał się wówczas na tle konkurencji szybkością kompilacji i uruchomienia[2].

Jedną z popularniejszych implementacji kompilatorów tego języka był produkt firmy Borland inc.Turbo Pascal, dzięki któremu Pascal szybko się rozprzestrzenił, szczególnie w szkołach[1]. 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, C++ oraz Javę.

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 środowiska IDE jak Lazarus. Dostępna jest także wersja kompilatora o nazwie mikroPascal, która jest przeznaczona mikrokontrolerów (ARM, AVR, PIC, 8051).

Pascal jako narzędzie programisty

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 znacznie wzrosła z pojawieniem się Delphi – środowiska programistycznego, opartego na obiektowym Pascalu, pozwalającego na błyskawiczne tworzenie atrakcyjnych wizualnie aplikacji pod Windows. Średnik w języku Pascal jest separatorem instrukcji podczas gdy w C++ jest terminatorem. Poprawna jest instrukcja blokowa:

begin x:=1 end

jak również:

begin x:=1; end

Jednak w tym drugim przypadku w bloku są dwie instrukcje: podstawienia i pusta.

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 (true)

Przykładowe programy

Poniżej przedstawione są przykładowe proste programy źródłowe – pełne lub podprogramy – napisane w języku Pascal. W przypadku programów pełnych można poddać je kompilacji/konsolidacji, np. w zainstalowanym ww. samodzielnie środowisku Free Pascal i uruchomić. Należy zwrócić uwagę, że w przykładach teksty wyprowadzane na urządzenie wyjścia zawierają polskie znaki diakrytyczne w standardzie UTF-8 – w przypadku użycia programów w wierszu poleceń systemu Windows należy zamienić kodowanie polskich znaków na standard CP852 – można w tym celu użyć np. edytora Notepad++ (dla standardu CP852 używa on oznaczenia OEM-852).

Uwaga! Przedstawione tu programy pokazują tylko ideę oraz składnię języka Pascal. Mogą zawierać błędy lub w praktyce mogą wymagać dodatkowych zabezpieczeń. Nie powinny być używane w praktycznym zastosowaniu, lecz jedynie w celu edukacyjnym.

Najprostszy program wypisujący tekst

begin
  writeln('Hello World');
end.

Program ustalenia n–tego wyrazu ciągu

Program oblicza n–ty wyraz ciągu Fibonacciego.

program fibonacci;
var
  i, liczba: word;
  a, b, c: longint;
begin
  writeln('Podaj którą liczbę z ciągu Fibonacciego chcesz zobaczyć: ');
  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.

Podprogram obliczający liczbę w ciągu Fibonacciego

Podprogram ustala 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;

Program wyliczenia miejsc zerowych funkcji kwadratowej

program funkcja;
var 
  delta , x1 , x2: real;
  a, b, c: real;
begin
  writeln('Podaj współczynniki a, b, c trójmianu 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 obliczenia silni

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

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 silnię z dowolnej liczby');
  write('Podaj liczbę: ');
  readln(n);
  writeln(n,'! = ',silnia(n));
end.

Program sortujący tablicę liczb

W programie zaimplementowano sortowanie 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 metodą bąbelkową');
  write('Podaj ile liczb należy przesortować: '); 
  read(n);
  for i := 1 to n do 
  begin
    write('Liczba nr ',i,' = '); 
    read(Liczby[i]);
  end;
end;

procedure pisz;
begin
  writeln('Oto liczby posortowane rosnąco:');
  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ścienną kostką chcesz grać?:');
    readln(kost);
    if (kost < 4) then
    begin
      writeln('Kostka musi mieć minimum 4 ściany');
      readln;
    end;
  until (kost >= 4);
  clrscr;
  repeat
    write('Wylosowano : ');
    write(random(kost)+1);
    writeln(' aby zakonczyć wcisnij "q"');
    readln(znak);
  until (znak ='q') or (znak = 'Q');
end.

Zobacz też

Przypisy

  1. a b c Niklaus Wirth: 50 Years of Pascal. 03-2021. [dostęp 2021-07-04].
  2. Neil Moffatt: DelphiBasics – Krótka historia Borland Delphi (ang.). [dostęp 2014-06-17].

Bibliografia

Linki zewnętrzne

Zobacz publikacjęObject Pascal w Wikibooks
{{bottomLinkPreText}} {{bottomLinkText}}
Pascal (język programowania)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.