Multimediaexpo.cz je již 18 let na českém internetu !!
Pascal (programovací jazyk)
Z Multimediaexpo.cz
Pascal je název programovacího jazyka, původně určeného hlavně k výuce programování. Jeho různé varianty a odvozeniny se však používají i k programování reálných aplikací. Jeho název byl zvolen na počest francouzského filosofa, matematika a fyzika Blaise Pascala.
Návrh programovacího jazyka Pascal pochází ze začátku 70. let od profesora Niklause Wirtha z Vysoké školy technické v Curychu. Autor sledoval návrhem jazyka tyto cíle:
- vytvořit jazyk vhodný pro výuku programování, který by byl založen na omezeném počtu srozumitelných konstrukcí,
- navrhnout strukturu jazyka tak, aby bylo snadné implementovat Pascal na většině tehdejších počítačů.
První verze Pascalu byla publikována r. 1971, o 3 roky později (1974) byla uveřejněna opravená definice jazyka. V roce 1981 byla vydána norma ISO. Vedle toho vznikla řada komerčních implementací Pascalu, které se od Pascalu dle normy ISO více či méně odchylovaly, zejména zavedením dalších konstrukcí zjednodušujících praktické programování. V oblasti PC dosáhla patrně největšího úspěchu implementace Turbo Pascal firmy Borland. Objektové rozšíření Pascalu se pak stalo i základem systému Delphi téže firmy.
Obsah |
Historie
První kompilátor Pascalu byl navržen v Curychu pro počítače řady CDC 6000 a do provozu byl uveden v roce 1970.
První kompilátor Pascalu napsaný v Severní Americe vznikl na Illinoiské univerzitě pod vedením Donalda B. Gilliese pro počítač PDP-11 a generoval nativní strojový kód.
Za účelem rychlého rozšíření jazyka vznikl v Curychu tzv. compiler porting kit, zahrnující kompilátor do „virtuálního“ strojového kódu (nebo přesněji mezikódu) a simulátor toho kódu. Z této sady vznikl P-systém. Ačkoli byl tento systém navržen, aby umožnil vznik kompilátorů do pravých strojových kódů, minimálně jeden systém, pozoruhodná implementace USCD, jej využila k vytvoření interpretačního systému USCD p-System.
IP Pascal byl implementací používající Micropolis DOS, rychle se však přesunul na CP/M běžící na Z80.
Začátkem 80. let byl UCSD Pascal portován pro počítače Apple II a AppleIII, aby tak poskytl strukturovanou alternativu k interpretům BASICu, dodávaným spolu s počítačem.
V 80. letech také napsal Anders Hejlsberg kompilátor Blue Label Pascal pro počítač Nascom-2. Později začal pracovat pro Borland a svůj kompilátor přepsal na Turbo Pascal pro IBM PC. Nový kompilátor prodával za $49.95, což byla mnohem nižší cena než za jakou prodával původní Blue Label Pascal.
Laciný kompilátor společnosti Borland měl velký vliv na komunitu okolo Pascalu, která se koncem 80. let zaměřila především na IBM PC. Mnoho počítačových nadšenců ve svém hledání strukturované alternativy k BASICu tento produkt používalo. Turbo Pascal, dostupný pouze na této architektuře, překládal přímo do strojového kódu Intel 8088, čímž docílil mnohem větší rychlosti než interpretované návrhy.
S verzí Turbo Pascal 5.5 přidal Borland podporu pro objektově orientované programování. Později se Borland rozhodl, že je potřeba komplikovanějších vlastností a začal pracovat na Delphi, přičemž vycházel z návrhu jazyka Object Pascal společnosti Apple. V raných verzích nazýval tento jazyk rovněž Object Pascal, později jméno změnil na programovací jazyk Delphi.
Jazykové konstrukce
Pascal je ve své původní formě čistým procedurálním jazykem, obsahující skupinu řídicích konstrukcí jako je for, while, if, then, else, převzaté z ALGOLu. Obsahuje však také mnoho konstrukcí pro strukturování dat, jako jsou definice datových typů, záznamy (také struktury, record
), ukazatele (pointer
), výčty a množiny (set
).
Programy v Pascalu začínají klíčovým slovem program, v původních variantách se seznamem standardních vstupů a výstupů ve formě parametrů. Následuje hlavní blok příkazů, uvozený klíčovými slovy begin a end. Jednotlivé příkazy jsou odděleny středníkem, tečka ukončuje program nebo jeho jednotku (unit
). Jazyk nerozlišuje velká a malá písmena.
Hello world
Standardní program Hello world vypadá v jazyce Pascal takto:
program HelloWorld(output); begin WriteLn('Hello, World!'); end.
Datové typy
Datový typ definuje strukturu proměnné a způsob nakládání s ní. Jazyk obsahuje několik předdefinovaných typů, přičemž programátor může odvozením tvořit typy další. Mezi předdefinované typy patří:
Datový typ | Typ hodnot, které lze do typu uložit |
---|---|
integer | Celé číslo |
real | Číslo s plovoucí řádovou čárkou |
boolean | Hodnota true nebo false
|
char | Jeden znak znakové sady |
string | Řetězec znaků, indexovaný od 1 |
Rozsah povolených hodnot, které je možno uložit do proměnných těchto typů, je dán implementací. Mezi některými typy existují konverzní funkce, například Round
(zaokrouhlení real
na integer
).
Deklarace typu
Programátor může vytvořit vlastní datový typ odvozením ze základních typů pomocí konstrukce type:
type MyInteger = integer; MyInteger2 = MyInteger;
Výčet
Datový typ výčet umožňuje vytvořit proměnnou, která může nabývat určitý počet pojmenovaných nebo nejpojmenovaných číselných hodnot.
type FruitEnum = (apple, banana, pear, lemon, orange);
I typ boolean je ve své podstatě výčtem: type boolean = (true, false)
.
Intervalové typy
Z libovolného ordinálního typu (všechny dříve jmenované kromě real
) můžeme pomocí intervalu vybrat část, která se pak použije jako nový typ:
type OneToTen = 1..10; SomeFruits = apple..pear;
Množinové typy
Na rozdíl od ostatních programovacích jazyků své doby Pascal podporuje množinové typy. Množina je vždy určena na ordinálním typu:
type FruitSet = set of FruitEnum; NumberSet = set of OneToTen;
Ke zjištění přítomnosti prvku k množině slouží operátor in.
Struktury
Struktura je komplexní datový typ, sestávající z prvků různých typů:
type MyStruct = record a: integer; c: char; r: real; end;
Pole
Pole je lineární sekvence prvků, definovaná klíčovým slovem array. Ve standardním Pascalu mají pole pevnou délku, určenou při deklaraci. Indexování pole je určeno taktéž při deklaraci. Příklad definice typu pole:
type IntArray = array[1..5] of integer; CharArray = array[1..20] of char; StructArray = array[0..5] of MyStruct;
Typ soubor
Soubor je v Pascalu chápán jako sekvence identických komponent. Pro práci se soubory je určen typ file a funkce Read a Write:
var f: file of char; c: char; begin ... Read(f, c); ... Write(f, c); ... end.
Ukazatele
Ukazatel je zvláštní typ proměnné, ukazující na skutečnou hodnotu v paměti. Ukazatele lze tvořit z téměř každého typu konstrukcí ^Typ, reference proměnné se provádí znakem @ a dereference ukazatele znakem ^ za názvem ukazatele:
type p: ^integer; i, j: integer; ... p := @i; j := p^; ...
Ukazatele se často používají ve spojitosti se strukturami, například při vytváření spojových seznamů. Pro vytvoření nové proměnné na haldě slouží funkce New
, pro její uvolnění funkce Dispose
. Nulová hodnota ukazatele je určena konstantou nil.
type PRec = ^TRec; TRec = record Next: PRec; end; var p: TRec; ... New(p); ... Dispose(p); p := nil; ...
Řídicí struktury
Pascal je strukturovaný jazyk, to znamená, že běh programu je strukturován ve standardních konstrukcích, a to ideálně bez použití příkazu goto:
Základní řídicí strukturou je struktura if..then..else, která řídí průběh programu v závislosti na určené podmínce:
if a > b then writeln('Condition met') else writeln('Condition not met');
Cykly
Cykly slouží pro opakované provádění příkazu nebo bloku příkazů:
for i := 1 to 10 do writeln('Iteration: ', i:1); repeat a := a + 1 until a = 10; case i of 0: write('zero'); 1: write('one'); 2: write('two') end;
Cykly lze okamžitě ukončit příkazem break; příkaz continue znamená přechod na začátek další iterace cyklu.
Procedury a funkce
Pascal umožňuje členit programy na procedury a funkce, které lze navíc libovolně zanořovat. Konstrukce program je vždy logicky nejzazší blok. Funkce se od procedury liší tím, že umožňuje vrátit volajícímu příkazu návratovou hodnotu příslušného typu. Nastavení návratové hodnoty se provádí přiřazením do názvu funkce nebo u novějších variant do pseudoproměnné result.
program muj(output); procedure vypis(var i: integer); function dalsi(i: integer): integer; begin dalsi := i + 1; end; begin WriteLn('Celkem: ', i); i := dalsi(i); end; begin i := 1; while i <= 10 do vypis(i); end.
Pro okamžité opuštění procedury nebo funkce slouží příkaz exit.
Operátory
Pascal podporuje tyto operátory:
Operátor | Význam |
---|---|
:= | přiřazení |
= | rovnost |
<> | nerovnost |
> | větší než |
< | menší než |
+ | součet, spojení řetězců |
- | rozdíl |
* | násobení |
/ | dělení, výsledkem je reálné číslo |
div | celočíselné dělení |
mod | zbytek po celočíselném dělení, modulo |
and | logické AND |
or | logické OR |
not | logická negace |
in | přítomnost prvku v množině (set) |
@ | reference proměnné |
^ | dereference ukazatele |
Související odkazy
Externí odkazy
- www.danciwo.net – programy v Pascalu
- Pascal Central – zdroje ohledně jazyka Pascal
- Pascal tools – upravovač zdrojových kódů programů vytvořených v Pascalu
- Real Programmers Don't Use Pascal – vtip proč „skuteční programátoři“ nepoužívají Pascal
- Standard Pascal – Zdroje a historie původního, standardního Pascalu
- Pascal and its Successors – článek Niklause Wirtha o vývoji jazyků Pascal, Modula-2 a Oberon
- www.trsek.com - Množství zdrojových kódu v Pascalu. Od her až po algoritmizaci výpočtu PI.
- překladače:
- Free Pascal
- GNU Pascal
- Projekt Lazarus
- Dev-Pascal
- Turbo-Pascal.com
Náklady na energie a provoz naší encyklopedie prudce vzrostly. Potřebujeme vaši podporu... Kolik ?? To je na Vás. Náš FIO účet — 2500575897 / 2010 |
---|
Informace o článku.
Článek je převzat z Wikipedie, otevřené encyklopedie, do které přispívají dobrovolníci z celého světa. |