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.
- Vlastnosti
- vznik v 70. letech na technická univerzitě Curychu
- pro výuku programování strukturovaného programování
- přesná deklarace dat, přehledný zápis
- Struktura programu
- příkazy odděleny středníkem na samostatných řádcích
- odsazení (indentace) příkazů podle zanoření v programové struktuře
- Deklarační část
- hlavička, deklarace typů, konstant, proměnných, procedur a funkcí
- Hlavní program
- programové struktury – seskupení příkazů, větvení, cykly …
- Typy dat
- Způsob deklarace
type evidence = record begin jmeno : string[20]; vek : integer; vydelek: real; end; var zamestnanci: array[1..200] of evidence; k,n,i : integer soubor : text;
Programové struktury
- Vstup a výstup dat
- využití systémových procedur pro čtení read() a pro výpis write()
- načtení hodnoty do proměnné cislo
write('Zadej hodnotu cisla : ') ;readln('cislo')
- výpis výsledku součtu čísel v proměnných a,b
writeln('Soucet cisel ',a,' + ',b,' = ',a+b)
- Syntaxe podmínek
if cislo < 0 then write('Chyba!'); |
if cislo < 0 then write('Chyba!') else write(cislo); |
if (a > 5) and (a < 10) then write('Spravne zadani') |
- Syntaxe cyklů
s počítadlem for i:=1 to 100 do begin příkaz_cyklu; příkaz_cyklu; end; |
se vstupní podmínkou while i > 0 do begin příkaz_cyklu; příkaz_cyklu; end; |
s výstupní podmínkou repeat; příkaz_cyklu; příkaz_cyklu; until konec = 'k'; |
Práce se soubory
- Deklarace a připojení
var <Název proměnné> : File of Integer ; {ciselny soubor}
var <Název proměnné> : Text ; {textovy soubor}
assign (<Jméno proměnné> , <Jméno souboru> );
assign (Soubor , 'C:\Text.txt');
- Vytvoření/přepis souboru
rewrite ( <Jméno proměnné> );
- Čtení souboru
reset ( <Jméno proměnné> );
- Připojení na konec souboru
append ( <Jméno proměnné> );
- Uzavření souboru
close ( <Jméno proměnné> );
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
nainteger
).
Ří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ů:
while a < 10 do begin a:= a+1; end; 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ž |
>= | větší nebo rovno |
<= | menší nebo rovno |
+ | součet, spojení řetězců, sjednocení množin |
– | rozdíl, rozdíl množin |
* | násobení, průnik množin |
/ | 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) |
@ | adresa proměnné nebo podprogramu |
^ | dereference ukazatele |