Pascal (programski jezik)

Izvor: Wikipedija
Skoči na: orijentacija, traži

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 tjekom 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[uredi VE | uredi]

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[uredi VE | uredi]

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/C++/C Sharp|C#]] jezicima, 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[uredi VE | uredi]

Prvo jedan jednostavan programski primjer:

program DobarDan ;
begin
  writeln ('Dobar dan!');
  readln ;
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 najviše tri znamenke iza decimalne točke!');
WriteLn('Program ce se automatski ugasiti ako pri upisivanju broja upisete slovo!');
WriteLn;
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 Halt;
 
If not (Sto='1') then Goto 1;
 
End.

Prethodni program napisan na drugačiji način prilagođeniji novijim Pascal prevodiocima:

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[uredi VE | uredi]

Poznate inačice Pascala[uredi VE | uredi]

Javno dostupni prevodioci[uredi VE | uredi]

Na Internetu su dostupni mnogi besplatni programi prevodioci, od kojih su navedeni sljedeći:


Iscrpni popis Pascal programa prevodilaca dostupni su sa Pascaland i Pascal Central.

Vanjske poveznice[uredi VE | uredi]