Pascal (programski jezik)

Izvor: Wikipedia

Pascal je strukturirani i proceduralni programski jezik osobito popularan sedamdesetih i osamdesetih godina 20. stoleća. Spada u klasu tzv. viših programskih jezika treće generacije, koje karakterizira neovisnost o procesoru i hardveru na kojem se izvršava, za razliku od Assemblera i strojnoga koda. Pascal je prvi programski jezik sa strukturalnim i modularnim pristupom procesu razvoja softvera, i kao takav je omogućil lakše pisanje i uredjivanje ponovno izkoristivih programa. Strukturalna paradigma pristupa modularnom kôdu kasnije se razvija u objektno-orijentirani koncept, koji su usvojili mnogi programski jezici, medju njima i Pascal, odnosno njegova specifikacija Objektni Pascal.


Povest[uredi - уреди]

Rani razvoj[uredi - уреди]

Programski jezik Pascal razvil je izmedju 1968 i 1970. švicarski računarski znanstvenik Niklaus Wirth, na temeljima tad popularnoga jezika ALGOL-a, radi prevazilaženja poteškoća koje su se javljale programiranjem u višim programskim jezicima sekvencijalnoga karaktera (FORTRAN, COBOL, ALGOL i BASIC), kao i zbog potreba uvodjenja standardnoga programskoga jezika za učenje u školama i na sveučilištima. Wirth je programskom jeziku dal ime Pascal u čast francuzkom filozofu i matematičaru Blaiseu Pascalu, koji je 1641. izumil prvi mehanički računarski stroj.

Prva specifikacija programskoga jezika Pascala objavljena je 1971, sledeća revizija napravljena je 1973. Već od 1972. Pascal se počinje izučavati na sveučilištima kao jezik prikladan za uvod u programiranje.[1] Prvobitna standardizacija jezika dogodila se 1983. (ISO 7185:1983).

Pascal uvodi paradigmu strukturnoga i proceduralnoga programiranja, što znači da se programski kod razlaže na samostalne strukture - podatke i podprograme, koji se ne izvršavaju nužno u istom redosledu kako su i navedeni, niti je potrebno numeriranje redaka kao u sekvencijalnim programskim jezicima (BASIC, ranije specifikacije Fortrana itd), nego se po potrebi pozivaju i izvode. Uvodjenjem podprograma izbegava se nužnost da program sekvencijalno, to jest redosledno izvrši sve blokove koda dok ne dodje do naredbe koja označava kraj programa ili bezuvetni skok (GoTo) do pojedine labele u kodu, što može dovesti do velikih poteškoća pri pisanju ili revidiranju ozbiljnijih programa, jer je koristjenje GoTo funkcije dovodilo do nepregledna i nečitljiva koda s jedne strane (fenomen takozvanoiga Špageti-koda), s druge strane zahtevalo učitavanje čitava programa u memoriju, umesto pozivanja pojedinačnih procedura po potrebi. Za tadašnje doba vrlo skupih memorija i početka ubrzana razvoja softvera u odnosu na hardver, iznalaženje rešenja kao što je Pascal imalo je zbog navedenih razloga veliki značaj.

U isto vreme (1972) Amerikanac Dennis Ritchie razvija programski jezik C zasnovan na jednakim proceduralnim i strukturnim postavkama kao i Pascal, koji za razliku od prvobitnoga Pascala, podržava i osnovne tipove podataka kao što su realni brojevi dvostruke preciznosti (double), dok se subrutinski delovi kôda (funkcije) deklariraju po potrebi umesto u zaglavju kao kod Pascala. Kao što je programski jezik C poslužil Kenu Thompsonu i Dennisu Ritchieju za programiranje UNIX-a sedamdesetih godina, UCSD izvedba Pascala koristjena je na University of California u San Diegu za pisanje p-Systema, prvoga virtualnoga stroja.[2] p-Sistem se mogal portati na veliki broj tadašnjih računala zahvaljujući činjenici da je trebalo samo izprogramirati module koji su prenosili i kompilirali p-sistem na dato računalo. Program preveden na nekom p-stroju pomoću UCSD Pascal prevoditelja može se izvršavati na svakome računalu koji ima p-System.

Sedamdesetih godina Pascal stiče veliku popularnost te se u velikoj meri koristi za aplikacijsko kao i sistemsko programiranje. Operacijski sustavi za Apple računala Lisa i Macintosh s kraja sedamdesetih i početka osamdesetih bili su razvijani u Pascalu,[3] zbog čega pisanje programa u C-u za navedene sustave nije imalo puno smisla jer su programi morali biti pisani tako da operiraju s tipovima podataka koje podržava standardni Pascal kao i sam API u Pascalu napisana Apple operativnoga sustava. Do 1980-ih Pascal je izučavan na većini sveučilišta i fakulteta informatičkoga usmerenja u svetu.[4]

Borlandov Pascal[uredi - уреди]

1983. pojavljuje se Turbo Pascal od tvrtke Borland, prvo integrirano razvojno okruženje (IDE) za sustave CP/M i DOS.[5] Turbo Pascal objedinjuje sve funkcije ciklusa razvoja softvera u jedan celovit program (pisanje koda, kompilacija, linkovanje, debugovanje), a istovremeni pristup svakoj od funkcija bez potrebe pokretanja zasebnih programa i gašenja predhodno pokrenutih (zbog jednozadaćnosti tadašnjih sustava kao što su CP/M i DOS) je doprinelo još većoj popularizaciji Pascala u softverskoj industriji, jer su programeri do tad morali pokretati zasebno nekoliko različitih programa (editor, kompilator, linker, debugger) da bi dovršili konačan program. IDE Turbo Pascal je vrlo koristjen, kako zbog mogućnosti velike uštede vremena pri razvoju softvera, tako i zbog svoje niske cene i "knjižne licence" koja je omogućivala kupovinu samo jedne kopije proizvoda bez obzira na kolikome broju računala će softver biti koristjen. Osim Turbo Pascala, Borland je izporučival i skuplju inačicu IDE-a pod nazivom Borland Pascal koja se od Turbo Pascala neznatno razlikovala po mogućnostima i imala uključen izvorni kod standardnih modula. Vremenom se Turbo Pascal razvija kao zasebna inačica programskoga jezika i ostaje u širokoj uporabi sve do početka devedesetih, kada Pascal gubi prvenstvo u odnosu na C++ I Javu. Već 1999. Pascal je zamenjen C-plus-plusom kao standardom na svim američkim sveučilištima.[6]

Od novina koje uvodi Borland u Turbo Pascal dijalekt značajna je mogućnost deljenja koda na odvojene datoteke, takozvane module (englezki: unit). Ovaj koncept preuzet je iz Pascalu slična programskoga jezika Modula, odnosno Modula-2[7] (kasnija revizija jezika), za čije je kreiranje takodjer zaslužan Niklaus Wirth, autor prvobitnoga Pascala. Mogućnost je dodana počev s inačicom 4.00 Turbo Pascal IDE-a, a u programski paket sadržaval je i standardnu zbirku modula prevedenih iz izvornoga koda, spočetka u jednoj datoteci TURBO.TPL (.TPL = Turbo Pascal Library), a kasnije u broju odvojenih binarnih .TPU (Turbo Pascal Unit) datoteka. Sedma inačica TP-a uključivala je sledeće module: APP, COLORSEL, CRT, CURSU, DIALOGS, DRIVERS, EDITORS, GRAPH, GRAPH3, HISTLIST, MEMORY, MENUS, MSGBOX, OBJECTS, OUTLINE, STDDLG, STRINGS, TEXTVIEW, TGKSI, TURBO3, VALIDATE, VIEWS i WINDOS.

Zadnja inačica Turbo Pascala izišla je 1993. pod brojem 7.0. Nakon toga, Borland napušta dalji razvoj ovoga proizvoda[8] i umesto njega 1995. izdaje Delphi za 16-bitni Windows 3x, RAD okružje za Borland Pascal koji se od tad razvija kao poseban programski jezik Delphi. Delphi, kao objektno-orijentirani Pascal osobito pogodan za razvijanje grafičkih Windows aplikacija zadržal se u širokoj upotrebi sve do danas, a stekal je i široku popularnost zbog lakoće koristjenja i vizualnoga sučelja za kreiranje GUI-ja. Od 2006. razvojem Delphija bavi se CodeGear, nekadašnja Borlandova podružnica za razvojne alate Borland Developers Tool Group (DTG).[9] OpenSource alternativa Delphiju su Free Pascal Compiler i Lazarus IDE.


Sintaksa Pascala[uredi - уреди]

Pascal spada u takozvane strukturne programske jezike, čija sintaksa sadrži dva osnovna elementa: strukture i naredbe. Strukture su predefinirani elementi koji se deklariraju u zaglavlju programskoga koda i obuhvaćaju: module (unit), konstante, varijable, labele, procedure i funkcije. Strukture podprograma (procedura i funkcija) takodjer sadrže naredbe koje se redom izvršavaju inicijalizacijom strukture u glavnom programu.

Naredbe se pišu u naredbenom bloku koji dolazi nakon zaglavja i pomoću njih se upravlja strukturama podataka koje su prethodno navedene. U naredbe spadaju osnovne (koje su definirane ISO standardom), izvedene (omogućene dodatnim modulima, podprogramima i makroima) te naredbe kontrole toka koje se dele na naredbe za ponavljanje (petlje) i naredbe izbora.

Deklariranje struktura i njihovo pozivanje, kao i pozivanje osnovnih naredbi ugradjenih u sam programski jezik Pascal teče sledećim redom, kako se navodi u primeru:

{Deklarisanje naziva programa -->}
program primer;
 
{Dodatni moduli koje će program koristiti, npr: crt, dos... -->}
uses crt;
 
{Konstante -->}
const konstanta = 128;
 
{Definisanje korisničkih tipova podataka -->}
type tip_podatka = array [1..24] of integer;
 
{Varijable uz obvezno deklarisanje njihova tipa -->}
var broj : real;
    dan : tip_podatka; 
 
{Procedura -->}
procedure p;
begin
  {...}
end;
 
{Funkcija i njezin tip vrednosti -->}
function f: byte;
begin
  {...}
end;
 
 
{Glavni program -->}
begin
  {...}
end.

Navedeni primer zapravo je minimalan paskalski program prevediv u svim TP-kompatibilnim kompilatorima. U slučaju prevodjenja i linkovanja dobiva se valjan egzekutivni program u binarnoj datoteci koji ne radi ništa, čak ne izpisuje ni famozni "Hello, World" niz. Nakon "izvodjenja" program se odmah gasi i prepušta kontrolu operacijskom sustavu; neka od razvojnih okruženja izpišu upozorenje o nekorištenju struktura, iako program prevedu - npr Dev-Pascal).

Osnovne naredbe[uredi - уреди]

Osnovne komande su naredbe za pridruživanje vrednosti, za unos znakova, izpis i pojedine aritmetičke operacije. Znakovi kojima se dozivaju osnovne naredbe zovu se operatori, a strukture odnosno podatci i identifikatori na koje se one odnose operandi. Operatori se dele, s obzirom na to koliko operanda obradjuju, na unarne i binarne. Primer unarnoga operatora je sin (sinus) - odnosi se na jedan broj, a binarnoga = (relacijski znak jednakosti) - izražava odnos izmedju dveju vrednosti.

Pridruživanja vrednosti vrše se znakom :=, za razliku od drugih programskih jezika, kako što su C i C++ gde se koristi znak jednakosti '='. U Pascalu znak = je relacijski operator u logičkim izrazima (u C-u je to "=="); razlika izmedju deklariranja i pridruživanja omogućuje višestruko ubrzanje vremena prevodjenja programa, jer kompilator ne mora izpitivati kontekst čitava programa da utvrdi je li reč o čitanju sadržaja odredjenih registara, gde se pohranjuju vrednosti varijabli i konstanata te njihovoj usporedbi ili pisanju u njih odnosno promeni vrednosti.

Naredbe za unos su read i readln; read se koristi s navodjenjem varijable u zagradi, i uvek se upotrebljava za očitavanje unosa, dok se readln može koristiti i samostalno, jer ona prenosi kursor u novi red te čeka bilo kakav odgovor za nastavak ili prekid izvršenja programa. Primer:

readln (broj);
writeln ('Uneli ste broj ' ,broj);
readln;

Za izpis koriste se naredbe write i writeln. Razlika izmedju njih je u tome što ova druga izpisuje tekst u novi red (liniju), te se može koristiti samostalno, bez sadržaja izpisa, za sam prelazak u novi red, za razliku od prve koja zahteva dodatni parametar.

Neke od aritmetičkih operacija u Pascalu su:

+    : zbrajanje;
-    : oduzimanje;
*    : množenje;
/    : deljenje;
abs  : absolutna vrednost broja (bez predznaka);
div  : celobrojno deljenje;
mod  : deljenje s ostatkom;
sqr  : kvadrat; 
sqrt : kvadratni koren;
ln   : prirodni logaritam;
sin  : sinus;
cos  : kosinus;
tan  : tangens;
pred : prethodnik integera;
succ : sledbenik integera;
trunc: celi deo razlomka (integer);
int  : celi deo razlomka (real);
frac : decimalni deo razlomka (real);

Naredbe izbora - grananja[uredi - уреди]

Naredbe izbora i/ili izrazi za izvršavanje izbora (grananja) toka programa su If-Then, If-Then-Else i Case.

  • If-Then

If-Then se koristi kad se želi odlučiti o jednome mogućem izhodu toka programa u slučaju ako je izpunjen odredjeni uslov naveden nakon ključne reči "if". Ako je uslov izpunjen, izvršava se sledeća naredba nakone ključne reči "then", a ako nije, programski tok ne čini ništa, to jest prelazi na izvršavanje sledeće naredbe koja nije u sklopu If-Then izraza, ili se završava ukoliko nema nikakvih naredbi koje se mogu izvršiti nakon izraza.

IF {logički izraz} THEN {naredba};

Ako se želi uslovljeno pokrenuti više naredbi u slučaju izvršenja zadanih uslova, sve se navode u "begin {...} end" bloku, inače će program izvršiti sve što dolazi nakon prvoga točka-zareza (prve naredbe), bez obzira jesu li uslovi izpunjeni ili nisu:

IF {logički izraz} THEN
   begin
     {naredba 1};
     {naredba 2};
     {naredba 3};
     {...}
   end;
  • If-Then-Else

Ako se želi odlučiti izmedju dvaju mogućih tokova programa ili procedure, koristi se If-Then-Else izraz grananje; prvi tok izvršava se u slučaju da je izpunjen uslov napisan izmedju "if" (ako) i "then" (onda), drugi u slučaju da nije, a dolazi nakon ključne reči "else" (inače):

IF {logički izraz} THEN {naredba 1} ELSE {naredba 2};

Ovde vredi isto pravilo o zatvaranju blokova višestrukih naredbi izmedju "begin {...} end;" izraza:

IF {logički izraz} THEN 
   begin
     {naredba 1};
     {naredba 2};
     {naredba 3};
     {...}
   end {ovde ne ide ";"}
 
ELSE
   begin
     {naredba 4};
     {naredba 5};
     {naredba 6};
     {...}
   end;
  • Case

Case grananje koristi se kod postojanja potrebe za determiniranjem više od dvaju mogućih izhoda toka programa, i to svakoga od njih pod različitim uvetima (odnosno pod različitim prideljivanjima vrednosti varijabli do kojih programski izraz može doći pripadnom I/O funkcijom).

CASE Varijabla of
     1: {naredba 1};
     2: {naredba 2};
     3: {naredba 3};
     4: {naredba 4};
        {...etc.}
END; {case}

Za koristjenje strukture Case potrebno je da vrednost kondicionalne varijeble bude već poznata, odnosno izračunata u trenutku evaluacije Case grananja, za razliku od If-Then-Else strukture gde se kondicionalna varijabla može izračunati u okviru samoga izraza, odnosno može se navesti izraz koji računa vrednost varijable umesto njezine konkretne vrednosti. Npr:

IF (abs(broj)>=10) THEN naredba;

...za razliku od:

CASE broj of
      0: {naredba 1};
      5: {naredba 2};
     10: {naredba 3};
     20: {naredba 4};
        {...etc.}
END; {case}

...gde je potrebno navesti konkretne vrednosti koje inicijaliziraju neku proceduru.

Naredbe ponavljanja - petlje[uredi - уреди]

Naredbe ponavljanja su for, while i repeat, a oblici i pravila njihova koristjenja su:

FOR brojač = x TO y DO {...};
WHILE {...} DO {...}; {dok je istinit uslov ... -> ponavljaj ...}
REPEAT {...} UNTIL {...}; {ponavljaj ... -> sve dok ne bude ...}.

Vrste podataka[uredi - уреди]

Tipovi podataka u Pascalu dele se na osnovne (skalarne) i strukturirane (izvedene), koji se uglavnom definiraju kao polja i slogovi sastavljeni od osnovnih ili drugih strukturiranih podataka.

Osnovne vrste podataka u Pascalu su:

U strukturirane vrste podataka spadaju:

Posebni tipovi:

Pokazivač je metapodatak koji ukazuje na adresu odredjenoga tipa podatka u memoriji. Ovisno o tome pokazuju li na odredjeni tip podatka ili samo na memorijsku lokaciju, pokazivači se dele na tipizirane i generičke.

Programski primeri[uredi - уреди]

"Dobar dan!"[uredi - уреди]

Najjednostavniji program koji izpisuje pozdrav na zaslonu:

program DobarDan;
 
begin
  writeln ("Dobar dan!");
  readln;
end;

Prestupne godine[uredi - уреди]

Kao dobar primer za demonstraciju ugnezdjenih if-then-else izraza i strukturnoga organiziranja koda kroz odvojene funkcije i procedure može poslužiti sledeći program koji izračunava prestupne godine. Godina je prema gregorijanskom računanju vremena prestupna (to jest ima mesec veljaču/februar s 29 dana umesto standardnih 28), ako je deljiva s 4, ali nije istovremeno deljiva sa 100, osim u slučaju da jest deljiva s 400. Dakle, pseudokod algoritma za izvedbu programa izgledal bi ovako:


Izračunaj je li broj (godina) deljiv s 4 (tj. je li ostatak deljenja s 4 jednak 0):
--> Ako jest deljiv s 4, podeli broj sa 100:
    ----> Ako je broj deljiv sa 100, proveri deljivost s 400:
          ------> Ako je deljiv s 400, godina je prestupna; kraj programa.
          ------> Ako nije deljiv s 400, godina nije prestupna; kraj programa.
    ----> Ako nije deljiv sa 100, godina je prestupna; kraj programa.
--> Ako nije deljiv s 4, godina nije prestupna; konac programa. 


Prevedeno u Pascal, to se može implementirati ovako:

program Prestupna;
 
var
   god : longint;
 
procedure jest;
begin
  writeln ('Godina ', god, '. je prestupna.');
  readln;
end;
 
procedure nije;
begin
  writeln ('Godina ', god, '. nije prestupna.');
  readln;
end;
 
(* Glavni Program *)
begin
   writeln;
   write ('Godina > ');
   readln (god);
   if god mod 4 = 0 then
   begin
      if god mod 100 > 0 then jest
      else
      begin
         if god mod 400 = 0 then jest
         else nije;
      end;
   end
   else nije;
end.

Kalkulator[uredi - уреди]

Program kalkulator u kojemu se koriste neke od aritmetičkih operacija Pascala:

program Kalkulator;
 
{&ifdef VPASCAL} {&Use32+} {&endif}
{$ifdef WIN32} {$R kalk.res} {$endif}
 
uses Crt;
 
type
   tOperandum = (unarni, binarni);
   tOperacije = (sbrajanje, oduzimanje, mnozenje, deljenje, koren);
 
var
   a, b, c : real;
   d : byte;
   izbor : char;
 
procedure izpisujNaslov;
begin
   Crt.TextColor (lightcyan);
   writeln ('±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±');
   writeln ('±                              ±');
   writeln ('±   K A L K U L A T O R  2.0   ±');
   writeln ('±                              ±');
   writeln ('±   Punk Rollonja 12/IX/2007   ±');
   writeln ('±                              ±');
   writeln ('±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±');
end;
 
procedure izpisujIzbornik;
begin
   Crt.TextColor (white);
   writeln ('1 .................. sbrajanje');
   writeln ('2 ................. oduzimanje');
   writeln ('3 ................... mnozenje');
   writeln ('4 ................... deljenje');
   writeln ('5 ............ kvadratni koren');
   writeln ('0 ............... decimale: ', d:2);
   writeln;
   writeln ('Esc .................... Izlaz');
   writeln;
   write   ('> ' );
end;
 
procedure prijaviGresku (var niz: string; var pozicija: integer);
const
   STR_RTE = 'Greska na poziciji ';
begin
   Crt.TextColor (yellow);
   writeln;
   write (#7);
   if niz[pozicija] in [#48..#57] then
   begin
      writeln (STR_RTE, pozicija, ': ');
      writeln ('Prevelik broj. ');
   end
   else
   begin
      writeln (STR_RTE, pozicija, ': ');
      writeln ('Pogresan znak. ');
   end;
   Crt.TextColor (white);
end;
 
procedure validiraj (var niz: string; var broj: real; var greska: integer);
begin
   val (niz, broj, greska);
   if greska <> 0 then
   begin
      prijaviGresku (niz, greska);
      exit;
   end;
end;
 
procedure unesiPodatke (operand: tOperandum);
var
   unos : string;
   pozicijaGreske : integer;
begin
   if operand = unarni then
   begin
      write ('Unesi broj << ');
      repeat
         readln (unos);
      until (unos <> '');
      validiraj (unos, a, pozicijaGreske);
   end
   else if operand = binarni then
   begin
      write ('Unesi 1. broj << ');
      repeat
         readln (unos);
      until (unos <> '');
      validiraj (unos, a, pozicijaGreske);
      if (pozicijaGreske <> 0) then
         exit;
      write ('Unesi 2. broj << ');
      repeat
         readln (unos);
      until (unos <> '');
      validiraj (unos, b, pozicijaGreske);
   end;
end;
 
procedure podesiDecimale (var brojDecimala: byte);
var
   unos : string;
   tempByte : byte;
   pozicijaGreske : integer;
begin
   write ('Broj decimala (0 - 10) = ');
   readln (unos);
   val (unos, tempByte, pozicijaGreske);
   if tempByte <= 10 then
      brojDecimala := tempByte;
end;
 
procedure izracunaj (radnja: tOperacije);
begin
   case radnja of
      sbrajanje:
         begin
            unesiPodatke (binarni);
            c := a + b;
            writeln;
            writeln (a:2:d, ' + ', b:2:d, ' = ', c:2:d);
         end;
      oduzimanje:
         begin
            unesiPodatke (binarni);
            c := a - b;
            writeln;
            writeln (a:2:d, ' - ', b:2:d, ' = ', c:2:d);
         end;
      mnozenje:
         begin
            unesiPodatke (binarni);
            c := a * b;
            writeln;
            writeln (a:2:d, ' * ', b:2:d, ' = ', c:2:d);
         end;
      deljenje:
         begin
            unesiPodatke (binarni);
            if b = 0 then
            begin
               writeln;
               writeln ('! DIVIZIJA NULOM !');
               izbor := Crt.ReadKey;
               exit
            end;
            c := a / b;
            writeln;
            writeln (a:2:d, ' / ', b:2:d, ' = ', c:2:d);
         end;
      koren:
         begin
            unesiPodatke (unarni);
            c := sqrt (a);
            writeln;
            writeln ('sqrt ', a:2:d, ' = ', c:2:d);
         end;
   end; {case}
   izbor := Crt.ReadKey;
end;
 
(**********************************************************************)
var
   tAttr, tMode, wMin, wMax : word;
 
begin
   tAttr := Crt.TextAttr;
   tMode := Crt.LastMode;
   wMin := Crt.WindMin;
   wMax := Crt.WindMax;
   Crt.HighVideo;
   Crt.TextMode (co80);
   Crt.TextBackground (blue);
   Crt.TextColor (white);
   Crt.ClrScr;
   Crt.Window (23,2,56,23);
   Crt.ClrScr;
   izpisujNaslov;
   Crt.Window (23,9,55,23);
   Crt.ClrScr;
   Crt.Window (24,10,54,22);
   Crt.ClrScr;
   d := 4;
   repeat
      Crt.ClrScr;
      izpisujIzbornik;
      izbor := Crt.ReadKey;
      Crt.ClrScr;
      case izbor of
         #48 : podesiDecimale (d);
         #49 : izracunaj (sbrajanje);
         #50 : izracunaj (oduzimanje);
         #51 : izracunaj (mnozenje);
         #52 : izracunaj (deljenje);
         #53 : izracunaj (koren);
      end; {case}
   until izbor = #27;
   Crt.Window (lo(wMin), hi(wMin), lo(wMax), hi(wMax));
   Crt.TextAttr := tAttr;
   Crt.TextMode (tMode);
   Crt.ClrScr;
   halt;
end.

Inačice i dijalekti Pascala[uredi - уреди]

  • ISO Pascal - standardni Pascal, prema specifikacijama ISO 7185 :1990, predvidjen za učenje koncepta strukturnoga programiranja i neprikladan za ozbiljniju uporabu te pisanje složenijih programa. Sve druge implementacije Pascala manje ili više proširuju ISO izvedbu.
  • Turbo Pascal - uvodi mnoge nove funkcije i naredbe kojih nema u ISO izvedbi (Uses, TextMode, KeyPressed, ReadKey, GotoXY...), asemblerske blokove, zatim mogućnost deljenja koda na odvojene datoteke, radi bolje preglednosti programa, kao i zbog ograničenja veličine pojedinačne objektne datoteke na 64 KB.[10]
  • Object Pascal - Objektno orijentirani Pascal, danas zastupljen u dvama dijalektima: Delphi i Free Pascal Objektni Pascal prvi put je implementiran na Apple računalima 1985. kao prošireni standardni Pascal jezik pod nazivom Object Pascal.[11]
  • GNU Pascal - Inačica Pascala za GNU/Linux sustave.


Razvojna okruženja za različite inačice Pascala[uredi - уреди]

Slobodna (nevlasnička)[uredi - уреди]

  • Lazarus RAD - Grafičko sučelje za Free Pascal kompilator i vizualno Pascal/Delphi programiranje. Podržava Windows, Linux i Mas OS X platformu. Lazarus je skoro u podpunosti o API-ju neovisna platforma, tako da se jedanput napisan kod može prevoditi na svim sistemima s FPC-om ("Napiši jednoč, kompiliraj svugde"[12]) [link]
  • MSEide - još jedan Free Pascal IDE, za Linux i Windows, no puno jednostavniji i manji od Lazarusa. [link]
  • Bloodshed Dev-Pascal - Integrirano razvojno okruženje (IDE) za Windows, uključuje GNU Pascal (GPC) i Free Pascal (FPC) prevoditelje; najjednostavniji je za početnike. [link]

Proprietarna (vlasnička)[uredi - уреди]

Bezplatna:

  • Virtual Pascal - Samostalan projekt autora Allana Mertnera i Vitalyja Miryanova od 1995 do 2005; Razvoj je prekinut 2005. bez namere autora da nastavi razvoj ili ustupi izvorni kod javnosti. Virtual Pascal je razvojno okruženje za Windows i OS/2 s eksperimentalnom podrškom za Linux. Virtual Pascal može linkovati 32-bitne egzekutivne datoteke za Windows (PE) i OS/2; u podpunosti je kompatibilan s Turbo Pascalom, i samo tekstualno sučelje izgledom podseća na plavi zaslon od TP IDE-a, pa je zbog svega toga svojevrstna prilagodba TP-a s 16-bitnoga DOS-a na 32-bitni Windows (sam autor na web-stranici projekta tvrdi da je vlasnik delova izvornoga koda Borland i da je to jedan od razloga zbog kojih ne može javno ustupiti kod). [link] na arhiviranu web stranicu; Softpedia link za preuzimanje zadnje inačice 2.1.279 iz 2004.
  • Pascal Gladiator IDE - Besplatan IDE za FPC na Mac OS X platformi; autor Gladiatora Ryan Joseph tvrdi da ga razvija za osobnu uporabu i nudi bezplatno za download i koristjenje kao jednostavniju i pregledniju alternativu takodjer bezplatnom XCode razvojnom okruženjenju za programiranje u Object C-u, Pascalu i drugim programskim jezicima na Mac OS X-u. [link].

Komercijalna:


Vanjske poveznice[uredi - уреди]

Skripta s primerima i zadatcima za programski jezik Pascal - Elena Krelja Kurelović

Pascal i programiranje - Zdravko Dovedan

GNU Pascal priručnik

Sa bejzika na pascal - spis Dejana Ristanovića iz 1987

Roby's Pascal Tutorial

Navodi[uredi - уреди]