| Ten artykuł od 2010-05 wymaga uzupełnienia źródeł podanych informacji. Informacje nieweryfikowalne mogą zostać zakwestionowane i usunięte. Aby uczynić artykuł weryfikowalnym, należy podać przypisy do materiałów opublikowanych w wiarygodnych źródłach. |
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 International – Turbo 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.
Spis treści |
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:
| Pascal | C++ | |
|---|---|---|
| blok | beginend; | {} |
| 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 dobeginend; | while (W == 5){} |
| pętla nieskończona | while true dobeginend; repeat | while (true){}do { |
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.
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.
| ||||||||||||||||||||||||||||||||||||||||||||||||||