Pascal (programozási nyelv)

A Pascal az általános célú programozási nyelvek közé tartozik. Sok helyen még mindig ezen tanítják a programozást, hiszen a szintaxisa egyszerű, könnyen érthető, ennek ellenére hatékony eszközt ad használója kezébe. Legelterjedtebb megvalósítása a Borland cég által készített Turbo Pascal, melynek segítségével DOS-os alkalmazásokat készíthetünk, amelyek bármely verziószámú Windowson is képesek futni.

Az eredeti specifikáció szerint minden program egyetlen forrásfájlból áll, melynek kiterjesztése .pas. A konkrét implementációk egyedi bővítésekkel tették lehetővé a moduláris felépítést, például a Turbo Pascal és az Object Pascal unitoknak nevezi azokat a külön fájlokban található modulokat, amik nem önálló programok. Ezek a fejezetek tartalmazzák a programozó által felhasználható kiegészítő eljárásokat és függvényeket, de a programozó is készíthet ilyet.

Később megszületett a Borland Delphi, amely az objektumorientált Pascalt párosította a natív Windows programok készítésének lehetőségével. Ennek egy linuxos változata a mára elhanyagolt Kylix.

Az aktívan fejlesztett Free Pascal számos géptípuson (Intel x86, Amd64/x86-64, PowerPC, PowerPC64, SPARC, ARM) és operációs rendszeren (Linux, FreeBSD, Mac OS X/Darwin, DOS, Win32, Win64, WinCE, OS/2, Netware és MorphOS) érhető el. Az erre épülő Lazarus integrált fejlesztői környezettel a mai igényeknek is megfelelő, grafikus interfésszel rendelkező szoftverek készíthetők.

Rövid történet 

A nyelvet 1970-ben Niklaus Wirth professzor fejlesztette ki, aki emellett a Modula-2 és az Oberon atyja is. A Pascal maga az ALGOL programozási nyelven alapul, és a francia matematikus-filozófus Blaise Pascal tiszteletére nevezték el.
Ez a nyelv az egyik alapja az Ada programozási nyelvnek, ami még ma is az egyik legbiztonságosabb nyelv a világon. Az objektumorientált Object Pascal nyelvet használja a Delphi fejlesztőrendszer.

Szintaxis 

A nyelv azonosítókból és kulcsszavakból, valamint operátorokból és egyéb szimbólumokból épül fel. A kulcsszavakat a fordító fenntartja magának, ezért ezeket nem használhatjuk fel saját célra, tehát ezek használata változónévként nem megengedett. Az azonosítók állhatnak betűkből, számokból és aláhúzásjelből (_), de nem kezdődhetnek számmal, illetve nem tartalmazhatnak speciális karaktereket(Ł, ß, & stb.), és a fordító típustól függően bizonyos hossz fölött az azonosítókat nem különbözteti meg.
A program kulcsszó opcionális, csak arra szolgál, hogy jobban dokumentálhassuk a kódot.
A megjegyzéseket a programban bárhol elhelyezhetjük, kezdetük jelölésére a { és a (*, zárásukra pedig a } illetve a *) jelek szolgálnak. Ezek mellett használhatjuk a // jelet is, mely csak az adott sorban jelöl megjegyzést.
A nyelv sokféle operátort tartalmaz: +, –, *, /, div, mod, and, or, not, xor, in stb.
Használhatunk eljárásokat, függvényeket, az újabb fordítók pedig már az objektumorientált programozási megközelítést is támogatják.
A forráskódot modulokba, ún. unitokba szervezhetjük, amelyekben az adatrejtést is megvalósíthatjuk, az interface és az implementation kulcsszavak segítségével.

Egy egyszerű Pascal program felépítése:
 {programfej}
   program Hello_World;
 {használt unitok megadása}
   uses crt,dos;
 {deklarációs rész: típusok, konstansok, változók}
   const
    Konstans = 42;
   type
    szabadnap = (szombat,vasarnap);
   var
    Valtozo: integer;
    nap: szabadnap;
 {eljárások és függvények}
   procedure Eljaras(Parameter: boolean);
   begin
   end;
 
   function Fuggveny(Parameter: real): integer;
   begin
     Fuggveny := round(Parameter)
   end;
 
 {programtörzs}
   begin
     Eljaras(true);
     Valtozo := Fuggveny(3.14);
     writeln(Valtozo);
   end.

A Hello World! program:
Program HelloWorld;
uses crt;
Begin
  Clrscr; {képernyő törlése}
  Write('Hello Világ!'); {szöveg kiíratása}
  Readln; {várakozás enter ütésére, hogy ne záruljon be azonnal a program}
End.

Az idő kiírása

{{program definíció}}
program hello;
{{használt unitok}}
uses crt,dos;
{{változók}}
var a,b,c,d:word;
begin {{a program feje}}
clrscr;
gettime(a,b,c,d);
writeln('-----------------------------------------');
writeln('A pontos ido: ',a,':',b);
writeln('-----------------------------------------');
writeln('Hello, vilag!');
end.

A nyelv felépítése 

A fenti forráskódban jól elkülöníthetők a parancsok. Egy parancs argumentumait zárójelek közé írjuk. A parancsot pontosvessző zárja le, így tudja a fordító elkülöníteni egymástól azokat.

A forráskód a  program  kulcsszóval kezdődik, mely röviden (1-2 szó) leírhatja, hogy maga a program miről szól. Ez az azonosító opcionális, mivel csak a programozónak információ, nem kötelező minden forráskódot ezzel kezdeni.

A  uses  kulcsszó után következik azoknak a unitoknak (fejezeteknek) a felsorolása, melyből a programozó a parancsokat válogatja programjához. A Pascalban lehetőség nyílik saját fejezetek készítésére. Az alapértelmezett unitok Turbo Pascalban:

 System: Alapvető parancsok
 Dos: DOS eljárások gyűjteménye
 Crt: A szöveges képernyő kezelése
 Strings: C-stílusú karakterlánc (null karakter végű string) kezelő rutinok
 Printer: Nyomtató kezelése
 Graph: Grafikai eljárások
 Overlay: Átlapolásos memóriahasználat
 Turbo3,Graph3: Kompatibilitási okokból (Turbo Pascal 3.0) megmaradt parancsok

A deklarációs részben állandókat, változókat és saját típusokat készíthetünk. Saját típusokat a type, állandókat a const, változókat var kulcsszó után lehet deklarálni. Egy konstansnak a nevét és az értékét egyenlőség jellel választjuk el. A változó nevét és típusát kettősponttal különítjük el. A változók típusai lehetnek:

Egész szám típusok:

 byte: 0 és 255 közötti egész szám
 shortint: -128 és 127 közötti egész szám
 word: 0 és 65535 közötti egész szám
 integer: -32768 és 32767 közötti egész szám
 longint: -2147483648 és 2147483647 közötti egész szám

Valós típusok:

 single: 4 byte méretű lebegőpontos szám (csak 8087)
 real: 6 byte méretű lebegőpontos szám
 double: 8 byte méretű lebegőpontos szám (csak 8087)
 extended: 10 byte méretű lebegőpontos szám (csak 8087)
 comp: 8 byte méretű csak egész számokat ábrázolni képes típus (csak 8087)

Egyéb típusok:

 Char: Karakter
 Boolean: Logikai változók – igaz/hamis (true/false) értéke lehet
 String: Karaktersor (maximum 255 karakter)

Később eljárásokat és függvényeket hozhatunk létre, melyeket a főprogramban használhatunk. A főprogram kezdetét és végét a begin és end. kulcsszó jelöli. Hasonló módon történik az eljárások és függvények behatárolása, azzal a különbséggel, hogy ott a programrész végét end; zárja.

Jegyzetek

További információk 
 FreePascal
 Lazarus
 Delphi
 Pascal.lap.hu – linkgyűjtemény

Imperatív programozási nyelvek