|  |  |
| --- | --- |
|  |  *See artikkel on programmeerimiskeelest; prantsuse teadlase ja filosoofi kohta vaata artiklit Blaise Pascal; rõhuühiku kohta vaata artiklit Paskal; teiste tähenduste kohta Pascal (täpsustus).* |

---

**Pascal** on kõrgtaseme programmeerimiskeel, mille looja on Niklaus Wirth. Keel töötati välja aastatel 1968–1969 ja avaldati aastal 1970. Pascal oli mõeldud eelkõige programmeerimise õpetamiseks ning kavandatud kui lihtsustatud versioon programmeerimiskeelest ALGOL.

Vaatamata suurele akadeemilisele edule pole Pascal ärimaastikul kuigi laialdaselt kasutusel. Põhjuseks tema jäikus ning suurte rakenduste loomiseks vajalike funktsioonide puudumine. Vastuseks kriitikale kavandas Wirth uue programmeerimiskeele Modula-2, mis sarnaneb väga Pascaliga, kuid sisaldab lisafunktsioone.

TeX ja originaalne Macintoshi operatsioonisüsteem on kirjutatud suurelt osalt just Pascali programmeerimiskeeles.

Pascalil põhinev Object Pascal, mis on mõeldud eelkõige objektorienteeritud programmeerimise jaoks, töötati välja aastal 1985.

Lühiülevaade
------------

Pascalile pandi nimi 17. sajandi prantsuse matemaatiku, füüsiku ja filosoofi Blaise Pascali auks, kellel oli tähtis roll arvuti arengu ajaloos.

Pascali looja Niklaus Wirth loengut pidamas Enne Pascali loomist oli Niklaus Wirth loonud ka programmeerimiskeeled Euler ja ALGOL W. Lisaks Pascalile on Wirth ka keelte Modula, Modula-2, Oberon ja Oberon-2 peamine väljatöötaja.

Wirthi eesmärgiks oli luua struktureeritud programmeerimisel põhinev programmeerimiskeel, mis oleks eelkõige kiire ja efektiivne, võimaldaks luua hästi struktureeritud ja organiseeritud programme ning sobiks programmeerimise põhimõtete õpetamiseks.
Pascali otseseks eelkäijaks on Algol-60, kuid lisatud on veel mitmeid vahendeid, mis võimaldavad programmeerijatel defineerida oma enda (struktureeritud) andmetüüpe. Lisaks muutus lihtsamaks ka dünaamiliste ja rekursiivsete andmestruktuuride, näiteks loendite, puude ja graafide kasutamine.

Pascal oli peamine kõrgtaseme keel Apple Lisa arendamisel ning oli kasutusel ka Macintoshi algusaastatel. Donald E. Knuthi loodud tekstilaosüsteem TeX on kirjutatud keeles WEB, mis põhineb Pascalil. Programmides nagu Skype, FL Studio ja Total Commander on kasutatud Delphit (Object Pascal). Delphi on ka tänapäeval kasutusel Windowsi rakenduste loomisel (võimaldab kompileerida sama koodi ka Maci ja IOS-i platvormi jaoks).

Tänapäeval leiavad kasutust veel Borland Pascal (Turbo Pascal), Delphi, Compaq Pascal, THINK Pascal ja CodeWarrior Pascal. Turbo Pascalit ja THINK Pascalit pole juba mõnda aega uuendatud, kuid Delphi ja Compac Pascal on mõlemad kaubanduslikult elujõulised tooted koos iga-aastaste uuenduste ning täieliku tehnilise toega. 

Kuni 1990ndate alguseni oli Pascal suurimates kolledžites ja ülikoolides peamine keel programmeerimise õpetamisel.

Võrdlus C-keelega
-----------------

Keeltel on sarnasusi, aga ka palju erinevusi. Programmeerija seisukohast erinevad Pascal ja C vägagi nii süntaksi, struktuuri kui ka mõtteviisi poolest. Mõlemad keeled toetavad tugevat tüüpimist, kuid Pascal kõrgema taseme keelena üritab rohkem vältida vigaseid tüübiteisendusi.

C-keeles on võimalik koodi kirjutada väga tihedalt (ühele reale järjest väga palju teksti), mis võib halvendada koodi loetavust ja arusaadavust. Pascali süntaks teeb koodi üldiselt kergemini loetavaks.

Võimekus ja jõudlus
-------------------

Pascali standardi esialgne täiendamata versioon (Unextended Pascal) ei toetanud objektorienteeritud stiili. Hilisemad versioonid Extended Pascal ja Object Pascal lisasid uusi võimalusi ja objektorienteerituse. Objektorienteeritust toetavad ka Think Pascal, CodeWarrior Pascal, Borland Pascal ning nii mõnigi avatud lähtekoodiga Pascali versioon. Pascali kompilaatorid, mis uusi versioone toetasid, suurendasid sealjuures oluliselt ka kompileeritud programmide jõudlust.

Pascali kood on kompilaatori poolt kergesti optimeeritav ning võimaldab luua võimekaid programme. Ingemar Ragnemalm, programmeerija ja raamatu "Tricks of the Mac Game Programming Gurus" kaasautor, on öelnud: "Ma saan Pascalis teha kõike, mida on võimalik teha C-keeles, kuid ma saan seda teha elegantsemalt."

Pascal toetab programmeerimise häid tavasid ning võimaldab luua kompleksseid andmestruktuure, kasutades hästi määratletud tüüpe. Pascalit kasutatakse kaubanduslikes rakendustes, tööstuslikes ja teaduslikes keskkondades ning ka õppekeelena.

Mõned näited Macintoshi rakendustest, mis on kirjutatud Pascalis:

* InterArchy – FTP-klientrakendus
* "Ingemar's Skiing Game" – *action*-mäng
* "Klondike" – üks populaarsemaid pasjansitüüpi mänge
* Scripter – arenduskeskkond AppleScripti jaoks
* SuperLock – failiturbeprogramm
* JacqCAD Master – CAD-i programm tekstiilidisaini jaoks
* FlightMath – lennuanalüüsiprogramm
* NIH Image – pildianalüüsiprogramm

Keele eripärad
--------------

### Hello World

Pascali eripärana peab igal programmil olema nimi (näites "Hello") ning programmi lõpetab punkt. Sõned kirjutatakse erinevalt mitmest teisest keelest jutumärkide asemel ülakomade vahele.
Hello world näeb Pascalis välja järgmine:

```
program Hello(output);
begin
    writeln('Hello world!');
end.

```

### Andmetüübid

Pascalis, nagu ka paljudes teistes programmeerimiskeeltes, määrab andmetüüp väärtuste vahemiku, mida ta on võimeline hoiustama. Lisaks on igal andmetüübil määratud toimingud, mis on samast tüübist muutujatega lubatud. Eeldefineeritud tüübid:

| Andmetüüp | Hoiustatavad väärtused |
| --- | --- |
| integer | täisarvud |
| real | ujukomaarvud |
| boolean | tõeväärtused |
| char | üksik täht |
| string | sõne |

Programmeerija saab ka ise defineerida uusi andmetüüpe. Pascali tüübideklaratsioon näeb välja selline:

```
type
  byte        = 0..255;
  signed_byte = -128..127;
  string      = packed array[1..255] of char;

```

### Kommentaarid

Klassikalised Pascali kommentaarid kirjutatakse looksulgudesse: 

```
{See on kommentaar, mis ei mõjuta kuidagi programmi tööd.}

```

Mitmerealiste kommentaaride jaoks tuleks tekstilõik asetada {\* ja \*} vahele: 

```
{* See on samuti kommentaar,
mis ei mõjuta programmi tööd *)

```

### Reserveeritud sõnad

Pascali keele üheks osaks on reserveeritud sõnad, millel on juba konkreetne funktsioon ning mida kasutaja ei saa kasutada muutujate nimedena. Pascal pole tõstutundlik, seega kompilaatoril pole vahet, kas kirjutada suur- või väiketähtedega. 

Reserveeritud sõnad Pascalis| and | array | begin | case | const |
| div | do | downto | else | end |
| file | for | function | goto | if |
| in | label | mod | nil | not |
| of | or | packed | procedure | program |
| record | repeat | set | then | to |
| type | until | var | while | with |

Vaata ka
--------

* Programmeerimiskeel
* Algol-60
* Object Pascal
* Turbo Pascal
* Free Pascal
* GNU Pascal
* Delphi (programmeerimiskeel)

Viited
------

1. ↑  Marco Cantù. "Pascal History" (Inglise keeles). Vaadatud 5. oktoober 2014.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
2. ↑  "Pascal" (Inglise keeles). webopedia. Vaadatud 6. oktoober 2014.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
3. ↑  "Good Quality Applications Built With Delphi" (Inglise keeles). delphi.wikia.com/. Vaadatud 6. oktoober 2014.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
4. ↑  Bill Catambay. "The Pascal Programming Language" (Inglise keeles).. Originaali arhiivikoopia seisuga 29. aprill 2015. Vaadatud 6. oktoober 2014. `{{netiviide}}`: välislink kohas ``|Väljaandja=`` (juhend)CS1 hooldus: tundmatu keel (link)
5. ↑  "The Pascal Language Page" (Inglise keeles). Originaali arhiivikoopia seisuga 15. veebruar 2015. Vaadatud 6. oktoober 2014.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
6. ↑  Bill Catambay. "Myths Uncovered" (Inglise keeles). Originaali arhiivikoopia seisuga 17. september 2015. Vaadatud 6. oktoober 2014.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)

Välislingid
-----------

* FreePascal
* GNU Pascal Compiler (GPC)
* Turbo Pascal
* Lazarus

| * v
* r
ISO standardid |
| --- |
| 1–9999 | 
3 • 216 • 261 • 262 • 269 • 639(-1, -2, -3) • 1538 • 1989 • 2108 • 3166(-1, -2:EE, -2:US) • 3297 • 4217 • 7089 • 7098 • 7498 • 8601 • 8879 • 9000 • 9001 • 9075 • 9293 • 9594 • 9945 |
| 10000–19999 | 
10206 • 13211 • 13616 • 14396 • 14496(-10) • 15445 • 16262 • 18004 • 19501 • 19505 • 19510 |
| 20000+ | 
26300 • 26324 • ISO 27000 • 32000 |