Pascal (programski jezik) – razlika između verzija
Uklonjeni sadržaj Dodani sadržaj
m Poništena izmjena 40929250 korisnika Obsuser (razgovor) oznaka: poništenje |
očigledno nemate namjeru doprinositi; Poništena izmjena 40929318 korisnika Punk Rollonja (razgovor) oznaka: poništenje |
||
Red 1:
'''Pascal''' je [[programski jezik]] nastao na [[ETH Zürich]] institutu 1970. godine. Dizajnirao ga je [[Niklaus Wirth]], švicarski računalni znanstvenik, i imenovao prema francuskom filozofu, fizičaru i matematičaru, [[Blaise Pascal|Blaiseu Pascalu]], koji je 1641. izumio [[Pascalina|mehanički kalkulator]].
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 struktuiriranu imperativnu paradigmu, omogućujući pored proceduralnoga i [[objektno-orijentirano programiranje]].
== Povijest ==
=== Rani razvoj ===
''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ć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 ''podprograme'', 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.
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
Sedamdesetih godina Pascal stiče veliku popularnost jer se puno koristi za aplikacijsko i sistemsko programiranje. Operacijski sistemi za [[Apple]] računala [[Apple Lisa|Lisa]] i [[Macintosh]] s kraja sedamdesetih i početka osamdesetih bili su programirani u Pascalu,<ref>http://www.taoyue.com/tutorials/pascal/history.html</ref> zbog čega pisanje programa u C-u za navedene sisteme nije imalo puno smisla, jer su programi morali
Do 1980-ih Pascal je izučavan na većini sveučilišta i fakulteta informatičkoga usmjerenja u svijetu.<ref>http://www.pascal-central.com/ppl/#Origins</ref>
===
Godine 1983. pojavljuje se [[Turbo Pascal]] tvrtke [[Borland]], prvo integrirano razvojno okruženje ([[Integrirano razvojno okruženje|IDE]]) za sisteme [[CP/M]] i [[DOS]].<ref>http://www.experiencefestival.com/a/Turbo_Pascal_-_History/id/4865059</ref> ''Turbo Pascal'' objedinjuje sve funkcije ciklusa razvoja softvera u jedan cjelovit program (pisanje koda, kompilacija, linkovanje, ispravljanje grešaka). To je doprinijelo još većoj popularizaciji Pascala u softverskoj industriji, jer su programeri do tad morali pokretati zasebno nekoliko različitih programa ([[editor]], [[kompilator]], [[linker]]) da bi dovršili konačan program. IDE Turbo Pascal je mnogo korišten, kako zbog mogućnosti velike uštede vremena pri razvoju softvera, tako i zbog svoje povoljne cijene i "knjižne licence" koja je omogućivala kupovinu samo jedne kopije proizvoda bez obzira na broj instalacija. Osim Turbo Pascala, Borland je prodavao i skuplju varijantu 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 varijanta programskoga jezika i ostaje u širokoj uporabi sve do početka devedesetih, kada Pascal gubi prvenstvo u odnosu na [[C++]] i [[Java (programski jezik)|Javu]]. Već 1999. Pascal je zamijenjen C-plus-plusom kao standardom na svim američkim sveučilištima.<ref>http://www.taoyue.com/tutorials/pascal/history.html</ref>
Od novosti koje uvodi Borland u Turbo Pascal dijalekt značajna je mogućnost dijeljenja koda na odvojene datoteke, takozvane [[Modul (programiranje)|module]] (<code>unit</code>). Ovaj koncept preuzet je iz Pascalu slična programskoga jezika [[Modula]], odnosno [[Modula-2]]<ref>{{cite book
Linija 32 ⟶ 27:
| publisher = "Glas", Banja Luka
| year = 1990
| pages = 88;}}</ref> (
== Sintaksa Pascala ==
Osnovni elementi Pascal programa su ''naredbe'' ili ''direktive'' (engl. ''statement''), koje se mogu sastojati od ''izraza'' (''ekspresija'') i drugih direktiva. Izrazi se sastoje od ''operatora'' i ''operanada''. Operandi mogu biti ''literalne'' (''doslovne'') vrijednosti, ili ''identifikatori''. Identifikatori su imena deklariranih ''varijabli'' i ''potprograma'' (''procedura'' i ''funkcija'').
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
Blokovi naredbi se zatvaraju
=== Deklaracije podataka ===
''Konstante'' i ''varijable'' se deklariraju ključnim riječima <code>const</code> i <code>var</code>.
<source lang="pascal">
Linija 77 ⟶ 70:
=== Naredbe izbora - grananja ===
Naredbe za izvršavanje izbora (grananja) toka programa su [[If-Then]], [[If-Then-Else]] i [[Case]].
==== If-Then ====
''If-Then'' se koristi za odlučivanje o jednom od mogućih izhoda toka programa na osnovi uslova navedena u ''izrazu'' iza ključne riječi <code>if</code>. Ako je uslov ispunjen, izvršava se sledeć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će naredbe koja nije u sklopu ''If-Then'' strukture, ukoliko postoji.
<source lang="pascal">
Linija 101 ⟶ 92:
==== 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 uslov 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">
Linija 108 ⟶ 98:
</source>
Ovdje vrijedi isto pravilo o zatvaranju blokova višestrukih naredbi
<source lang="pascal">
Linija 128 ⟶ 118:
==== Case ====
''Case'' grananje koristi se kao preglednija alternativa za izbor višestrukih izhoda toka programa.
<source lang="pascal">
Linija 142 ⟶ 131:
=== Naredbe ponavljanja - petlje ===
Naredbe ponavljanja su <code>for</code>, <code>while</code> i <code>repeat</code>, a njihova upotreba izgleda ovako:
Linija 151 ⟶ 139:
</source>
Petlja <code>for</code> izvršava neku naredbu ili blok naredbi točno
=== Operatori ===
Operatori se dijele, s obzirom na to koliko operanda obrađuju, na ''unarne'' (jedan operand) i ''binarne'' (dva operanda).
Pascal koristi operator <code>:=</code> za pridruživanje vrijednosti, nasuprot jezicima kao što su ''C'' ili ''C++'', gdje za to služi obični znak jednakosti (<code>=</code>). U Pascalu je znak <code>=</code> relacijski operator za logičke izraze - ''ekspresije'' (''C/C++'' za to upotrebljava ''dvostruki znak jednakosti'', <code>==</code>). Ova razlika može dovesti do konfuzije i grešaka u programiranju, naročito kod programera s iskustvom u Pascalu koji tek počinju programirati u jezicima C/C++, jer se izraz <code>if (i = 0)</code> (umjesto <code>if (i == 0)</code>) prevodi u C/C++ kompilatorima kao valjan ''statement''.
Slijedi popis operatora u Pascalu.<ref>https://www.pilotlogic.com/sitejoom/index.php/104-wiki/pascal-basics/chapter-1/118-pascal-operators</ref>
==== Aritmetički operatori ====
+ : sabiranje;
- : oduzimanje;
Linija 171 ⟶ 157:
==== Relacijski operatori ====
= : jednako;
<> : nejednako;
Linija 180 ⟶ 165:
==== Logički operatori ====
not : logička negacija;
and : logičko
or : logičko
xor : logičko
==== Operatori bitova ====
shl : lijevo pomjeranje;
shr : desno pomjeranje;
==== Ostali operatori ====
with : selekcija sloga (record);
in : pripadnost skupu (set);
Linija 198 ⟶ 180:
=== Vrste podataka ===
Tipovi podataka u Pascalu dijele se na osnovne (skalarne) i strukturirane (izvedene), koji se uglavnom definiraju kao polja i slogovi sastavljeni od osnovnih ili drugih strukturiranih podataka.
==== Osnovni tipovi ====
Skalarne vrste podataka u Pascalu su:
*
*
*
*
Nadalje, pojedini tipovi podataka se klasificiraju kao
==== Strukturirani tipovi ====
U strukturirane vrste podataka spadaju:
*
*
*
*
==== Posebni tipovi ====
* ''[[pokazivač]]'' (Pointer);
''Pokazivač'' je metapodatak koji ukazuje na adresu nekoga podatka u memoriji. Ovisno o tome pokazuju li na specifični tip podatka ili samo na memorijsku lokaciju, pokazivači se dijele na ''tipizirane'' i ''generičke''.
==== Enumeracije ====
''Enumeracije'' ili ''pobrojani tip'' su izvedeni ordinarni tip podataka. Npr:<ref>https://wiki.freepascal.org/Enumerated_types</ref>
<source lang="pascal">
Linija 238 ⟶ 215:
==== Tipovi dosega ====
Pascal podržava varijable u određenom dosegu (području, podobsegu) nekoga drugoga ordinarnoga tipa podataka:
<source lang="pascal">
Linija 247 ⟶ 223:
</source>
Moguće je
<source lang="pascal">
Linija 262 ⟶ 238:
==== Setovi ====
Jedna od distinktivnih karakteristika Pascala u odnosu na druge programske jezike jest podrška za operacije sa [[Teorija skupova|skupovima]], odnosno tip podataka <code>set</code>.
<source lang="pascal">
Linija 299 ⟶ 274:
</source>
===
Pascal razlikuje dvije vrste potprograma, ''procedure'' i ''funkcije''. Funkcije za razliku od procedura vraćaju neku vrijednost, pa se prema tipu podataka koji vraćaju razlikuju i tipovi funkcija, što se navodi u deklaraciji. Drugi programski jezici uglavnom sve potprograme nazivaju isto, ''funkcije'', ''subrutine'' itd. Naprimjer, u programskom jeziku ''C'', procedura je obična funkcija koja vraća vrijednost <code>void</code> (ništa). Primjeri deklaracija procedure i funkcije, bez ''definicija'':
<source lang="pascal">
Linija 309 ⟶ 283:
==== Parametri ====
Parametri neke funkcije ili procedure su deklarirane unosne vrijednosti, a deklariraju se u u malim zagradama iza imena funkcije ili procedure, na isti način kao i varijable u <code>var</code> sekcijama programa.
Parametri mogu biti ''
<source lang="pascal">
Linija 319 ⟶ 292:
</source>
Za razliku od
=== Standardne procedure i funkcije ===
==== I/O ====
Standardne procedure za unos su <code>Read</code> i <code>ReadLn</code>; <code>Read</code> zahtijeva najmanje jedan parametar, naziv varijable čija se vrijednost učitava, dok <code>ReadLn</code> pravi novi redak za svaku učitanu varijablu. Primjer:
Linija 339 ⟶ 310:
</source>
Za
==== Aritmetičke operacije ====
Neke od standardno ugrađenih aritmetičkih funkcija u Pascalu su:
abs : absolutna vrijednost broja (broj bez predznaka);
Linija 361 ⟶ 331:
== Programski primjeri ==
=== "Dobar dan!" ===
Najjednostavniji program koji ispisuje pozdrav na zaslonu:
<source lang="pascal">
program DobarDan;
begin
WriteLn("Dobar dan!");
ReadLn;
end;
</source>
=== Fibonaccijevi brojevi ===
<source lang="pascal">
Linija 389 ⟶ 370:
=== Faktorijel ===
Naredni program računa [[Faktorijel]] zadanih brojeva:<ref>http://progopedia.com/language/pascal/</ref>
<source lang="pascal">
Linija 413 ⟶ 393:
== Varijante i dijalekti Pascala ==
* ''ISO Pascal'' - standardni Pascal, prema specifikacijama [http://www.moorecad.com/standardpascal/iso7185.pdf ISO 7185 :1990]. Sve druge implementacije manje ili više proširuju ISO izvedbu.
* ''Turbo Pascal'' - uvodi mnoge nove mogućnosti kojih nema u ISO izvedbi, između ostalih podršku za [[objektno-orijentirano programiranje]] u jeziku ''Object Pascal'' (počev od verzije ''Turbo Pascal 5.5'').<ref>http://dn.codegear.com/article/20693</ref>
* ''Object Pascal'' - Objektno orijentirani Pascal, danas zastupljen u dvama dijalektima: ''Delphi'' i ''Free Pascal''. Object Pascal prvi put je implementiran na Apple računalima 1985.<ref>http://www.experiencefestival.com/object_pascal_-_early_history_at_apple</ref>
== Razvojna okruženja za programiranje u Pascalu ==
===
* ''[[Free Pascal]]'' - Multiplatformski Pascal i Object Pascal kompilator, u podpunosti 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ć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 podpunosti 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 podpunosti 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]].
* ''[[PascalABC.NET]]'' - Razvojno okruženje za [[.NET Framework]]. [http://pascalabc.net/ [link]]
=== Komercijalna ===
* [[CodeGear]] ''[[Delphi]]'' - [http://www.codegear.com/products/delphi [link]]
== Navodi ==
{{reflist}}
==
{{Commonscat|Pascal (programming language)}}
=== Povijesni dokumenti ===
* [https://inf.ethz.ch/personal/wirth/Miscellaneous/ComputersAndComputing.pdf Computers and Computing: A Personal Perspective, by Niklaus Wirth]
=== Standardi ===
* [http://www.moorecad.com/standardpascal/iso7185.pdf ISO/IEC 7185:1990 Pascal]
* [http://www.moorecad.com/standardpascal/iso10206.pdf ISO/IEC 10206:1990 Extended Pascal]
===
* [http://oscavnik.weebly.com/uploads/4/1/2/6/4126619/pascal1.pdf Pascal: Skripta sa zadatcima i rješenjima (PDF)]<!--
* [http://dzs.ffzg.hr/text/Pascal/index.htm Pascal i programiranje - Zdravko Dovedan] -->
* [http://www.dejanristanovic.com/refer/bas2pas.zip Sa bejzika na pascal - Novinski prilog časopisa "Računari" iz 1987]
* [http://web.archive.org/20090905012947/www.geocities.com/siliconvalley/park/3230/pas/pasles00.html Roby's Pascal Tutorial]
[[Kategorija:Programski jezici]]
|