Pascal (język programowania)
Pascal – język programowania wysokiego poziomu opracowany przez Niklausa Wirtha w 1970 roku.
Pojawienie się |
1970 |
---|---|
Twórca |
Historia
edytujPascal jako język programowania pojawił się stosunkowo późno (Fortran, Cobol i IBM PL/I pojawiły się we wczesnych latach sześćdziesiątych XX wieku). 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 dla mikrokontrolerów (ARM, AVR, PIC, 8051).
Pascal jako narzędzie programisty
edytujPascal 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.
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
edytujPoniż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).
Najprostszy program wypisujący tekst
edytujbegin
writeln('Hello World');
end.
Program ustalenia n–tego wyrazu ciągu
edytujProgram 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
edytujPodprogram 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
edytujprogram 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
edytujProgram 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
edytujW 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
edytujprogram 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ż
edytuj- Turbo Pascal – kompilator języka Pascal
- Pascal 360 – jedna z implementacji języka Pascal
- Free Pascal – darmowy kompilator języka Pascal
- Object Pascal – obiektowy dialekt języka Pascal
Przypisy
edytuj- ↑ a b c Niklaus Wirth: 50 Years of Pascal. 03-2021. [dostęp 2021-07-04].
- ↑ Neil Moffatt: DelphiBasics – Krótka historia Borland Delphi. [dostęp 2014-06-17]. (ang.).
Bibliografia
edytuj- 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,
- Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994. ISBN 83-85060-53-7. ISSN 0867-6011.
Linki zewnętrzne
edytuj- Kurs programowania w języku Pascal dla początkujących – kurs programowania w Pascalu
- książka „Turbo Pascal. Programowanie”. turbopascal.helion.pl. [zarchiwizowane z tego adresu (2005-12-30)]. wydana przez księgarnię Helion, dostępna w internecie
- www.centrumpascal.republika.pl. centrumpascal.republika.pl. [zarchiwizowane z tego adresu (2007-12-18)]. – strona poświęcona Turbo Pascalowi