Pascal je programski jezik kojeg je stvorio švicarski znanstvenik Niklaus Wirth 1970. godine. Isprva se Pascal koristilo kao nastavno pomagalo za strukturalnu metodu programiranja računala na fakultetima. Tokom 80ih i ranih 90ih godina 20. stoljeća Pascal se proširio van akademskih krugova u industriju, no ubrzo nakon pojave i masivnijom upotrebom objektno orijentiranih jezika kao C++ ili Java tijekom sredine 90ih godina 20. stoljeća, Pascal počinje gubiti primat u školama kao i u industriji. Pokušaj proširivanja Pascala s objektno orijentiranim konceptima kroz Object Pascal i kasnije kroz programski jezik Delphi uspjele su prilagoditi Pascal novim izazovima, no njegova popularnost sve više opada.
Povijest razvoja
Pascal je programski jezik razvijen 1970. godine od strane Niklausa Wirtha kao jezik posebno pogodan za strukturalno programiranje (za razliku od danas opće prihvaćene OOP metode). Baziran na temeljima programskog jezika Algol dobio je ime u čast matematičara i filozofa Blaisea Pascala.
Iako je inicijalno bio zamišljen kao jezik namijenjen učenju programiranja u školama i univerzitetima širom svijeta danas se koristi u industriji razvoja softwarea u svojoj najpoznatijoj inkarnaciji - Object Pascal, Delphi. Delphi je razvijen od strane korporacije Borland za svestrani razvoj aplikacija od sistemskih alata i igara do desktop, database i višeslojnih kompleksnih aplikacija za (CP/M, MS-DOS i MS Windows 3.xx u prošlosti...) i MS Windows, .NET i Linux platforme.
Prvu implementaciju Pascala napravio je Niklaus Wirth za računalo CDC 6000 1970. u Zürichu, dok je prvi program prevodilac za Pascal napisan u SAD-u bio stvoren na University of Illinois u nadležnosti Donalsa B. Gilliesa za porodicu računala DEC PDP-11 u assembleru. Niklaus Wirth je olakšao presađivanje Pascala na druga računala tako što je stvorio kit za portiranje, što je imalo za cilj da smanji količinu posla potrebnog za stvaranje programa prevodioca s jedne porodice računala na druga. Misao je bila da program prevodilac za Pascal pretvori sve naredbe u jedan virtualni assembler, i tako da je programer samo trebao stvoriti program koji bi preveo taj virtualni assembler za ciljani računski stroj ili stvori simulator za virtualnu mašinu za ciljani stroj. Ovaj međustupanj postaje P-sistem.
Usporedba Object Pascala i ostalih objektno orijetiranih jezika
Object Pascal/Delphi danas predstavlja vrh u razvoju softwarea. Programski jezik slijedi OOP principe i dodaje mnoštvo ekstenzija koje se mogu naći u najpoznatijim "C" jezicima (C, C++, C#), kao što su operator overloading, method overloading, inline methods, "rich" records (record s method-ima), itd...
Delphijev kompajler slovi kao najbrži kompajler među programskim jezicima u industriji softwarea (kompajliranje u izvršni program stotina tisuća linija koda traje samo nekoliko sekundi za razliku od tipičnih C/C++ kompajlera) proizvodeći pritom optimiziran kod brzine usporedive s najboljim C/C++ kompajlerima.
Danas (Object) Pascal koristi preko milijun profesionalnih programera širom svijeta, a najnovije izdanje (Borland) Delphi 2006 unosi cijeli niz noviteta u razvojno okruženje (IDE). Tu se mogu naći UML modeliranje softwarea, integracija s alatima za configuration management (npr. Borland StarTeam), integracija s alatima za requirements management (npr. Borland Caliber), alatima za optimizaciju itd...
Programski primjeri
Prvo jedan jednostavan programski primjer:
program DobarDan(input, output);
begin
writeln("Dobar dan!");
end;
Složeniji programski primjer:
program kalkulator;
Uses Crt;
Label 1;
Var Sto : String;
p, d, z : Real;
p2,d2,z2,z3 : Integer;
Begin
1:Clrscr;
z := 0;
TextMode (2);
TextColor (green);
GotoXy(31,1);
Write('KALKULAT 1.3');
GotoXy(24,4);
Writeln('1.Zbrajanje');
GotoXy(25,5);
Writeln('2.Oduzimanje');
GotoXy(26,6);
Writeln('3.Mnozenje');
Gotoxy(27,7);
WriteLn('4.Djeljenje');
GotoXy(28,8);
WriteLn('5.Djeljenje s ostatkom');
GotoXy(29,9);
WriteLn('Za izlaz pritisni tipku Q');
Gotoxy(25,11);
WriteLn('Odaberi i pritisni broj...');
WriteLn;
WriteLn;
WriteLn('Napomena:');
WriteLn('Program radi s najvise tri znamenke iza decimalne tocke!');
WriteLn('Program ce se automatski ugasiti ako pri upisivanju broja upisete slovo!');
WriteLn;
WriteLn('CPYRIGHT (C) Lobel Strmečki');
Sto:= Readkey;
If Sto ='1' then
Begin
ClrScr;
Write('Upisi 1. broj:');
Readln(p);
Write('Upisi 2. broj:');
Readln(d);
z := p + d;
Writeln(p:2:3,'+',d:2:3,'=',z:2:3);
WriteLn;
Write('Pritisni tipku ENTER za povratak...');
Readln;
Goto 1;
End;
If Sto = '2' then
Begin
ClrScr;
Write('Upisi 1. broj:');
Readln(p);
Write('Upisi 2. broj:');
Readln(d);
z := p - d;
WriteLn(p:2:3,' - ',d:2:3,' = ',z:2:3);
WriteLn;
Write('Pritisni tipku ENTER za povratak...');
Readln;
Goto 1;
End;
If Sto='3' then
Begin
ClrScr;
Write('Upisi 1. broj:');
Readln(p);
Write('Upisi 2. broj:');
ReadLn(d);
z := p*d;
WriteLn(p:2:3,'*',d:2:3,'=',z:2:3);
WriteLn;
Write('Pritisni tipku ENTER za povratak...');
Readln;
Goto 1;
End;
If Sto='4' then
Begin;
ClrScr;
Write('Upisi 1. broj:');
ReadLn(p);
Write('Upisi 2. broj:');
ReadLn(d);
z :=p/d;
WriteLn(p:2:3,'/',d:2:3,'=',z:2:3);
WriteLn;
WriteLn ('Pritisni tipku ENTER za povratak...');
ReadLn;
Goto 1;
End;
If Sto = '5' then
Begin;
ClrScr;
Write ('Upisi 1. broj:');
ReadLn (p2);
Write ('Upisi 2. broj:');
ReadLn (d2);
z2 := p2 div d2;
z3 := p2 mod d2;
Write ( p2,' / ',d2,' = ',z2);
WriteLn (' i ostatak ',z3);
WriteLn;
TextColor(white+2);
WriteLn ('Pritisni tipku ENTER za povratak...');
ReadLn;
Goto 1;
End;
If (Sto = 'q') or (Sto = 'Q') then
Begin
Halt;
End;
If not (Sto='1') then
begin;
Goto 1;
End;
End.
Prethodni program napisan na drugačiji način prilagođeniji novijim Pascal compilerima:
program calculator;
uses crt;
var i,answer :integer;
a,b,c :real;
procedure menu;
begin
writeln('M E N U');
for i:=1 to 7 do write('=');
writeln;
writeln('Press 1 for adding');
writeln('Press 2 for subtracting');
writeln('Press 3 for multiplying');
writeln('Press 4 for dividing');
writeln('Press 5 to end the program');
end;
procedure adding;
begin
clrscr;
writeln('Type the two numbers you wish to add together. ');readln(a,b);
writeln('The operation: ',a:0:3,' + ',b:0:3,' = ',(a+b):0:3);
writeln('Press enter to return to the menu.');
readln
end;
procedure subtracting;
begin
clrscr;
writeln('Type the two numbers you wish to subtract. ');readln(a,b);
writeln('The operation: ',a:0:3,' - ',b:0:3,' = ',(a-b):0:3);
writeln('Press enter to return to the menu.');
readln
end;
procedure multiplying;
begin
clrscr;
writeln('Type the two numbers you wish to multiply. ');readln(a,b);
writeln('The operation: ',a:0:3,' x ',b:0:3,' = ',(a*b):0:3);
writeln('Press enter to return to the menu.');
readln
end;
procedure dividing;
begin
clrscr;
writeln('Type the two numbers you wish to divide. ');readln(a,b);
writeln('The operation: ',a:0:3,' / ',b:0:3,' = ',(a/b):0:3);
writeln('Press enter to return to the menu.');
readln
end;
begin
clrscr;
writeln('<The calculator for basic four operations>');
writeln('My first ever program with a purpose!');
writeln('Programmed by me, Kristijan Bambir');
writeln('Not meant for further copying or selling!');
writeln('The rezults will have a maximum of 3 numbers after the decimal point.');
writeln('If you type a letter instead of a number the program will end.');
writeln;
writeln('Press enter to continue...');
readln;
repeat
clrscr;
menu;
writeln;
write('Choose your desired operation. '); readln(answer);
case answer of
1: adding;
2: subtracting;
3: multiplying;
4: dividing;
5: writeln('End of program');
end;
until answer=5;
writeln;
writeln('Thank you for at least trying my program.');
writeln('Have a nice day!');
writeln('P.S. Press enter to exit');
readln
end.
Standardi
Poznate inačice Pascala
- UCSD Pascal
- Borland Turbo Pascal
Javno dostupni prevodioci
Na Internetu su dostupni mnogi besplatni programi prevodioci:
- Prevodilac P4, zasnovan na UCSD Pascalu
- Free Pascal, dostupan za Windows, MS-DOS, Linux (ARM, Intel, PowerPC, SPARC, AMD64/x86), MacOS, OS X, FreeBSD (Intel)
- Turbo Pascal, stare inačice Turbo Pascala do inačice 5.5 dostupne su besplatno od korporacije Borland
Iscrpni popisi Pascal programa prevodilaca dostupni su sa PascaLand i Pascal Central.