Pascal

**Pascal** arba **Paskalis** – procedūrinė programavimo kalba, sukurta ALGOL programavimo kalbos pagrindu, vartojama mokymosi tikslais, mokant moksleivius ir studentus struktūrinio programavimo pagrindų.

Kalbą sukūrė Niklausas Virtas (Niklaus Wirth) 1970 metais kaip priemonę, skatinančią studentus programuoti struktūriškai. Kalba sukurta Algol kalbos pagrindu ir pavadinta matematiko bei filosofo Blezo Paskalio (Blaise Pascal) garbei.

## Sintaksė
Pagrindinės taisyklės:
* kiekviena programa prasideda `<span style="color:blue;">program</span>` baziniu žodžiu (nebūtinai) ir baigiasi tašku (.)
* sakinių blokai apgaubiami baziniais žodžiais `<span style="color:blue;">begin</span>` ir `<span style="color:blue;">end</span>`
* didžiosios ir mažosios raidės Paskalyje neskiriamos, taigi 'Program', 'PROGRAM' ar 'program' reiškia tą patį.
* sakiniai skiriami kabliataškiais (;)
* visi kintamieji turi būti iš anksto apibrėžti nurodant tipą.

Paprasčiausių Paskalio kalba parašytų programų pavyzdžiai:

```pascal
program Labas_pasauli;
begin
  WriteLn('Labas, pasauli!');
end.
```



```pascal
program Sudėtis;
var a, b, c : integer;
begin
  WriteLn('Įveskite pirmą dėmenį');
  ReadLn (a);
  WriteLn('Įveskite antrą dėmenį');
  ReadLn (b);
  c := a + b;
  WriteLn('Skaičių ', a, ' ir ', b, ' suma yra lygi ', c);
  ReadLn;
end.
```



```pascal
program lygtis;
var a, b, c : integer;
begin
  WriteLn('Lygtis x+a=b');  {kokią lygtį spręs programa}
  ReadLn;
  WriteLn('a:');  {1-as skaičius}
  ReadLn (a);
  WriteLn('b:');  {2-as skaičius}
  ReadLn (b);

  c := b - a;
  WriteLn('x = ', c);   {nežinomojo x reikšmė}
  ReadLn;
end.
```



```pascal
Program DosInfo;
uses Dos;
var
  OS      : string[32];
  Version : word;
begin
WriteLn('Dos Informacija: ');
{$IFDEF WINDOWS}
  OS:='WINDOWS';
{$ENDIF}
{$IFDEF DOS}
  OS:='Dos';
{$ENDIF}
  Version:=DosVersion;
  WriteLn('Dos ',OS,'Versija:',Lo(Version),'.',Hi(Version));
  WriteLn('Kietojo Disko Informacija: ');
  WriteLn('Disko Skirsnio Dydis (C:\) : ',DiskSize(0),' Baitai');
  WriteLn('Laisva vieta: ',DiskFree(0),' Baitai');
  Readln;
end.
```


## Kompiliatoriai
* FreePascal
* Turbo Pascal
* GNU Pascal kompiliatorius
* Delphi

## Istorinės žinios
Kuriant *Pascal*, buvo remtasi naujausiomis (struktūrinio) programavimo idėjomis, bandant jas apibendrinti, tad *Pascal* tapo ne tik mokomąja, bet ir konceptualia kalba, padariusia labai stiprią įtaką daugumai vėliau sukurtų kalbų, pvz., C. Bandant patobulinti *Pascal*, buvo sukurtos tokios kalbos, kaip Ada, Modula-2 ir Oberon. *Pascal* padarė beveik nesulyginamą įtaką kompiliatorių kūrėjams: *Pascal* sintaksė buvo kuriama taip, kad būtų galima kompiliuoti vienu praėjimu (kintamųjų, procedūrų etc. deklaravimas), todėl atsirado galimybė vykdyti atitikimo tarp programų tekstų ir generuoto kodo analizę. Analizuojant *Pascal* kompiliavimo metodus, buvo sukurtas *USCD Pascal* kompiliatorius bei virtuali mašina, skirta *Pascal* pseudokodo vykdymui, davusi pradžią vėliau kurtoms virtualioms mašinoms, ypač – Java.

## Parsisiųsti
Windows: GUI redaktorius + FPC kompiliatorius  Plačiau 
Linux: GUI redaktorius + FPC kompiliatorius

## Šaltiniai

## Nuorodos
* Lietuviškos Turbo pascal pamokos 
* Knyga „Programavimas paskaliu“ (Windows cp1257 koduotė, jei kartais kam nerodytų) 
* J. Blonskis ir V. Dagienė. Programavimo pradmenys. Vadovėlis XI–XII klasėms (projektas) 
* Programavimas pascal. Teorija, pavyzdžiai ir pratimai.