Razlike između izmjena na stranici "Pascal (programski jezik)"

m
Opismenjavanje hrv. standardom
(očigledno nemate namjeru doprinositi; Poništena izmjena 40929318 korisnika Punk Rollonja (razgovor))
oznaka: poništenje
m (Opismenjavanje hrv. standardom)
Pascal je [[imperativno programiranje|imperativni]] i [[proceduralno programiranje|proceduralni]] programski jezik, smišljen s namjerom da omogući i popularizira [[strukturirano programiranje]], a nastao je po uzoru na stariji jezik [[ALGOL]], nakon pokušaja da se isti izmijeni i poboljša. Veliku popularnost stekao je tokom 70-ih i 80-ih godina 20. stoljeća, zahvaljujući svojoj zastupljenosti kao jezika na kojem se podučavalo [[programiranje]] na sveučilištima.
 
Kasnija izvedba jezika, [[Object Pascal]], proširuje struktuiriranustrukturiranu imperativnu paradigmu, omogućujući pored proceduralnoga i [[objektno-orijentirano programiranje]].
 
== Povijest ==
''Niklaus Wirth'' je sudjelovao u projektu ''ALGOL X'', čija je svrha bila poboljšanje i standardizacija jezika ''ALGOL 60''. Nakon što je njegov prijedlog izmjena pod nazivom ''ALGOL W'' odbijen 1968. godine, Wirth napušta projekt i dizajnira novi programski jezik koji dovršava 1970. Rad na ''Algolu'' i ''Pascalu'' poduzet je radi savladavanja poteškoća koje su se javljale programiranjem u dotadašnjim programskim jezicima ([[FORTRAN]], [[COBOL]], [[ALGOL]] i [[BASIC]]), zbog njihove strogo sekvencijalne i nestrukturirane naravi; postojala je potreba za malim i laganim programskim jezikom za učenje u školama i na sveučilištima koji bi omogućivao ''strukturirano programiranje'', za razliku od ''BASIC-a'' koji je isto tako smišljen kao edukativni programski jezik, jer se ''FORTRAN'' pokazao kao vrlo težak studentima za učenje.
 
Prva specifikacija programskoga jezika Pascala objavljena je 1971, sledećasljedeć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.<ref>http://www.pascal-central.com/ppl/#Origins</ref> Prvobitna standardizacija jezika dogodila se 1983. (ISO 7185:1983).
 
Pascal uvodi paradigmu ''strukturiranoga'' i ''proceduralnoga'' programiranja, što znači da se programski kod razlaže na samostalne strukture - ''podatke'' i ''podprogramepotprograme'', koji se ne izvršavaju nužno u istom redoslijedu 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. Uvođenjem podprogramapotprograma izbjegava se nužnost da program sekvencijalno, to jest redoslijedno izvrši sve blokove koda dok ne dođe do naredbe koja označava kraj programa ili bezuvjetni skok ([[GoTo]]), što može uzrokovati probleme pri pisanju ili revidiranju ozbiljnijih programa, jer je korištenje <code>goto</code> naredbe vodilo do nepregledna i nečitljiva koda s jedne strane (fenomen nazvan [[Špageti-kod]]), s druge strane zahtijevalo učitavanje čitava programa u memoriju, umjesto pozivanja pojedinačnih procedura prema potrebi.
 
U isto vrijeme (1972.) Amerikanac [[Dennis Ritchie]] razvija [[C (programski jezik)|programski jezik C]] zasnovan na istoj proceduralnoj filozofiji kao i Pascal, koji je za razliku od prvobitnoga Pascala, podržavao i osnovne tipove podataka kao što su realni brojevi dvostruke preciznosti (<code>double</code>). Kao što je programski jezik C poslužio [[Ken Thompson|Kenu Thompsonu]] i [[Dennis Ritchie|Dennisu Ritchieju]] za programiranje [[UNIX]]-a sedamdesetih godina, tako je [[UCSD Pascal|UCSD]] izvedba Pascala korištena na [[University of California]] u [[San Diego|San Diegu]] za pisanje [[p-System|p-Systema]], prvoga [[virtualni stroj|virtualnoga stroja]].<ref>http://pascal.retro8bits.com/UCSDhistory.html</ref> ''p-System'' se moglo prenijeti na veliki broj tadašnjih računala zahvaljujući činjenici da je trebalo samo isprogramirati [[Modul (programiranje)|module]] specifične za hardver računala. Program preveden na nekom [[p-machine|p-stroju]] pomoću UCSD Pascal prevoditelja može se izvršavati na svakom računalu koje ima p-System.
| publisher = "Glas", Banja Luka
| year = 1990
| pages = 88;}}</ref> (kasnija revizija jezika), za čije je kreiranje također zaslužan ''Niklaus Wirth'', autor prvobitnoga Pascala. Mogućnost je dodana počev s verzijom 4.00 Turbo Pascal IDE-a, a u programski paket sadržavao je i standardnu zbirku modula, spočetka u jednoj datoteci <code>TURBO.TPL</code> (.TPL = ''Turbo Pascal Library''), a kasnije u broju odvojenih binarnih .TPU (''Turbo Pascal Unit'') datoteka. Sedma verzija TP-a uključivala je sledećesljedeće module: <code>APP, COLORSEL, CRT, CURSU, DIALOGS, DRIVERS, EDITORS, GRAPH, GRAPH3, HISTLIST, MEMORY, MENUS, MSGBOX, OBJECTS, OUTLINE, STDDLG, STRINGS, TEXTVIEW, TGKSI, TURBO3, VALIDATE, VIEWS, WINDOS.</code>
 
Posljednja verzija Turbo Pascala izišla je 1993. pod brojem 7.0. Nakon toga, Borland napušta dalji razvoj ovoga proizvoda<ref>http://www.experiencefestival.com/a/Turbo_Pascal_-_History/id/4865059</ref> i umjesto njega 1995. izdaje [[Delphi]] za 16-bitni [[Windows]] 3x, [[Rapid Aplication Development|RAD]] okružje za Borland Pascal koji se od tad razvija kao poseban programski jezik Delphi. Delphi, kao [[Object Pascal|objektno-orijentirani]] Pascal osobito pogodan za razvijanje grafičkih Windows aplikacija zadržao se u širokoj upotrebi sve do danas, a stekao je i široku popularnost zbog lakoće korištenja i vizualnoga sučelja za kreiranje [[Grafičko korisničko sučelje|GUI]]-ja. Od 2006. razvojem Delphija bavi se [[CodeGear]], Borlandova podružnica za razvojne programe ranije poznata kao ''Borland Developers Tool Group'' (DTG).<ref>http://delphi.about.com/od/humorandfun/a/codegear.htm</ref> [[Open Source|OpenSource]] alternativa Delphiju su [[Free Pascal Compiler]] i [[Lazarus]] IDE.
U ''direktive'' spadaju ''deklaracije'' (konstanti, varijabli, labela, procedura i funkcija), ''definicije'' (tipova podataka), te tri osnovne vrste naredbi za ''sekvenciju'' (tok), ''iteraciju'' (ponavljanje) i ''selekciju'' (izbor).
 
Po pravilu naredbe moraju završavati znakom ''točka-zarez'' (<code>;</code>), osim ako je naredba posljednja u ''dosegu'' (bloku, proceduri, funkciji ili programu), u kojem slučaju se može izostaviti, ali je dobra praksa ipak staviti <code>;</code> iza svake naredbe, zbog eventualnih kasnijih dodavanja novih naredbi. Izuzetak je također posljednja naredba prije ključne riječi <code>else</code> u [[If-Then-Else]] konstrukciji, ali u ovom se slučaju može smatrati da je ''If-Then-Else'' jedna naredba, posebna vrsta i drugačija od ''If-Then''. Za <code>else</code> naredbu, ako je dio <code>case</code> konstrukcije, ne vrijedi ovaj "izuzetak". Ovo je jedna od karakteristika Pascala koje ga razlikuju od jezika kao što su ''C'' i ''C++'', koji zahtijevaju točka-zarez iza svake ''if-then'' naredbe, što praktično znači da se <code>else</code> u C/C++ prevodiocima smatra posebnom naredbom, umjesto dijelom jedne strukture ''If-Then-Else'', kao u Pascalu, a točka-tarezzarez služi kao ''terminator'' naredbi, umjesto kao ''separator'', što je slučaj u Pascalu.
 
Blokovi naredbi se zatvaraju između ključnih riječi <code>begin</code> i <code>end</code>, što je još jedna od karakterističnih razlika Pascala u odnosu na jezike [[C (programski jezik)|C]], [[C++]], [[C Sharp|C#]], [[Java (programski jezik)|Java]] itd, koji koriste vitičaste zagrade <code>{ }</code>. Ponekad se u programerskom žargonu ovi jezici nazivaju ''jezici vitičastih zagrada'' (engl. ''curly-brace languages'').
 
==== If-Then ====
''If-Then'' se koristi za odlučivanje o jednom od mogućih izhodaishoda toka programa na osnovi uslovauvjeta navedena u ''izrazu'' iza ključne riječi <code>if</code>. Ako je uslovuvjet ispunjen, izvršava se sledećasljedeća naredba ili blok nakon ključne riječi <code>then</code>, a ako nije, programski tok preskače naredbu ili blok iza <code>then</code> direktive, to jest nastavlja s izvršavanjem sledećesljedeće naredbe koja nije u sklopu ''If-Then'' strukture, ukoliko postoji.
 
<source lang="pascal">
 
==== If-Then-Else ====
Za izbor između dvaju mogućih tokova programa koristi se ''If-Then-Else'' struktura; prvi tok izvršava se u slučaju da je ispunjen uslovuvjet napisan između <code>if</code> (''ako'') i <code>then</code> (''onda''), drugi u slučaju da nije, a stoji nakon ključne riječi <code>else</code> (''inače''):
 
<source lang="pascal">
 
==== Case ====
''Case'' grananje koristi se kao preglednija alternativa za izbor višestrukih izhodaishoda toka programa.
 
<source lang="pascal">
</source>
 
Petlja <code>for</code> izvršava neku naredbu ili blok naredbi točno određen broj puta, a varijabla brojača se navodi kao područje između dviju cjelobrojnih vrijednosti, oddvojenihodvojenih ključnom riječju <code>to</code>. Petlja <code>while</code> provjerava neki uvjet naveden u ''izrazu'' prije izvršavanja ''naredbe'' (engl. ''statement'') ili bloka naredbi, za razliku od <code>repeat</code> petlje, koja najprije izvršava naredbu ili blok najmanje jedanput, a zatim provjerava uvjet u izrazu.
 
=== Operatori ===
* ''[[Booleova algebra|logičke vrijednosti]]'' (<code>Boolean</code>).
 
Nadalje, pojedini tipovi podataka se klasificiraju kao ''ordinarni'', što znači da se mogu sortirati prema veličini i manipulirati standardnim funkcijama <code>Pred</code>, <code>Succ</code>, <code>Ord</code>. Od osnovnih tipova podataka, u ordinarne spadaju svi osim <code>Real</code>,<ref>https://freepascal.org/docs-html/ref/refsu4.html</ref> jer decimalni broj ne može imati predhodnikaprethodnika ili sljedbenika po veličini.
 
==== Strukturirani tipovi ====
 
==== Enumeracije ====
''Enumeracije'' ili ''pobrojani tip'' su izvedeni ordinarni tip podataka. NprPrimjer:<ref>https://wiki.freepascal.org/Enumerated_types</ref>
 
<source lang="pascal">
 
==== Tipovi dosega ====
Pascal podržava varijable u određenom dosegu (području, podobsegupodopsegu) nekoga drugoga ordinarnoga tipa podataka:
 
<source lang="pascal">
</source>
 
Moguće je također deklarirati varijablu u dosegu enumeriranoga tipa kojega smo predhodnoprethodno definirali, pa s obzirom na gornji primjer definicije tipa možemo imati:
 
<source lang="pascal">
</source>
 
Ova vrsta ''sintaksnogasintaksnog sladorašećera'' (engl. ''sytactic sugar'') omogućuje pisanje elegantnijega i konciznijega koda. Provjera pripadnosti elementa (vrijednosti varijable) nekom skupu vrši se pomoću operatora <code>in</code>. Dakle, možemo napisati ovo:
 
<source lang="pascal">
cos : kosinus;
tan : tangens;
pred : predhodnikprethodnik cijeloga broja;
succ : sljedbenik cijeloga broja;
round: zaokruživanje (vraća Integer);
 
=== Besplatna ===
* ''[[Free Pascal]]'' - Multiplatformski Pascal i Object Pascal kompilator, u podpunostipotpunosti kompatibilan s ''Turbo Pascal'' dijalektom i s djelomičnom podrškom za ''Delphi''. Programski paket sadrži ''Free Pascal Compiler (FPC)'' i ''FP IDE'', editor koji izgledom i funkcionalnošću imitira ''Turbo Pascal IDE''. Postoje verzije FP paketa za sledećesljedeće [[PC]] [[Operacijski sustav|OS]]-ove: [[DOS]], [[OS/2]], [[Windows]], [[Linux]], [[BSD]], [[MacOS]], [[Netware]] i [[MorphOS]], te druge platforme: [[Windows CE]], [[Game Boy Advance]], [[Nintendo DS]], zatim za različite procesorske arhitekture: [[x86]] (i386), [[x86-64]] (amd64), [[PowerPC|PPC]], PPC64, [[SPARC]] i [[arm]]. [http://www.freepascal.org/ [link]]
 
* ''[[Lazarus]]'' IDE - Grafičko sučelje za ''Free Pascal Compiler (FPC)'' i vizualno Pascal/Delphi programiranje. Podržava ''Windows'', ''Linux'' i ''MacOS''. Lazarus je skoro u podpunostipotpunosti o [[API]]-ju neovisna platforma, tako da se jedanput napisan izvorni kôd može prevoditi na svim sistemima s [[Free Pascal|FPC]]-om (''"Napiši jedanput, kompiliraj svugdje"''<ref>http://www.lazarus.freepascal.org/index.php?page=about</ref>) [http://www.lazarus.freepascal.org/ [link]]
 
* ''[[MSEide]]'' - još jedan ''Free Pascal'' IDE, za ''Linux'' i ''Windows'', no puno jednostavniji i manji od ''Lazarusa''. [http://homepage.bluewin.ch/msegui/ [link]]
* ''[[Borland]] [[Turbo Pascal]]'' - Linkovi za preuzimanje: [http://www.uv.tietgen.dk/staff/mlha/download/dos/borland/tp55.zip TP 5.5] i [http://debian.udsu.ru/pub/soft/win/turbo-pascal/TP70.EXE TP 7.0];
 
* ''[[Virtual Pascal]]'' - Samostalan projekt autora ''Allana Mertnera'' i ''Vitalyja Miryanova'' od 1995 do 2005. Virtual Pascal je razvojno okruženje za ''Windows'' i ''OS/2'' s eksperimentalnom podrškom za ''Linux''. ''Virtual Pascal Compiler (VPC)'' može linkovati 32-bitne egzekutivne datoteke za ''Windows'' ([[Portable Executable|PE]]) i ''OS/2''; u podpunostipotpunosti je kompatibilan s ''Turbo Pascalom'', dok ''VP IDE'' editor izgledom imitira ''Turbo Pascal IDE'', pa je zbog svega toga VP svojevrsna prilagodba TP-a s 16-bitnoga DOS-a na 32-bitni Windows. [http://web.archive.org/web/20051229123611/www.vpascal.com/news.php[link]] na arhiviranu web stranicu; [http://www.softpedia.com/get/Programming/Coding-languages-Compilers/Virtual-Pascal.shtml Softpedia link] za preuzimanje posljednje verzije 2.1.279 iz 2004.
 
* ''[[Pascal Gladiator IDE]]'' - IDE za [[Free Pascal|FPC]] na MacOS platformi; autor Gladiatora ''Ryan Joseph'' tvrdi da ga programira za osobnu uporabu i nudi besplatno za download i korištenje kao jednostavniju alternativu [[XCode]] editoru na MacOS-u. [http://www.web-scripter.com/pascal/ [link]].