JAZYK PASCAL – ÚVOD materiály pro studenty Jiráskova gymnázia v Náchodě (verze 2005-10-28) © RNDr. Jan Preclík, Ph.D.
[email protected]
Jazyk Pascal byl navržen profesorem curyšské univerzity Niklausem Wirthem pro výuky programování, norma pochází z počátku 80.let. Firma Borland vytvořila nejúspěšnější překladač Pascalu pod názvem Turbo Pascal, do jazyka přidala mnoho rozšíření, takže dnes, když se řekne Pascal, se automaticky myslí jeho rozšířená verze Turbo Pascal. Každý programovací jazyk je dán svojí syntaxí (jak se jeho příkazy zapisují) a sémantikou (co jeho příkazy znamenají). Jak vypadá a z čeho se skládá program v Pascalu program SOUCET (input, output); var N, X, SUMA: integer; begin read(N); SUMA:=0; while N>0 do begin read(X); SUMA:=SUMA+X; N:=N-1; end; write('Součet je: ', SUMA); end.
Program se skládá z jednotlivých symbolů („slov“). Typy symbolů v Pascalu: 1. Klíčová slova 2. Identifikátory 3. Zápisy čísel 4. Speciální symboly 5. Znakové řetězce Pascal nerozlišuje velikosti písmen (je case-insensitive). Klíčová slova Klíčová slova (program, var, begin, while, do, end) jsou stanovena definicí jazyka a nelze je měnit. Identifikátory Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy). V příkladě jsou to: SOUCET, integer, N, X, SUMA, read, write
Identifikátorem je libovolná posloupnost písmen anglické abecedy (a podtržítko „_“) a číslic. Musí začínat písmenem. Turbo Pascal rozlišuje jen prvních 32 znaků, zbytek ignoruje. Správné identifikátory: SUMA, X, Suma, PocetPrvku, seznam_zaku, Cislo1 Správné, ale nevhodně zvolené: pocetprvku, zu45e Chybné zápisy identifikátorů: 4pole, Počet, seznam-zaku, begin Zápisy čísel Nesmí obsahovat mezeru. Speciální symboly {
+ }
: :=
/ <>
; >=
, <=
.
<
>
=
(
)
Znakové řetězce Znakový řetězec je posloupnost libovolných znaků mezi apostrofy. Má-li být apostrof součást řetězce, je nutno ho zdvojit.
Základní programové konstrukce Pascalu Jednotlivé příkazy jsou odděleny středníkem (tj. ne ukončeny, takže příkaz nemusí končit středníkem v případě, že za ním další příkaz nenásleduje). Deklarace proměnných Deklarace proměnných má tvar var <seznam proměnných oddělených čárkami>:
;
Přiřazovací příkaz <proměnná> :=
Vstup a výstup read(<seznam proměnných oddělených čárkami>) Př: read(A,B) read(A+1)
{OK} {KO, nesmysl}
write(<seznam výrazů oddělených čárkami>)
Př: write(A,B) {OK} write(A+1) {OK} write('Výsledek je: ', B)
{OK}
Složený příkaz „Posloupnost příkazů, která se chová jako příkaz jeden.“ Tzv. programové závorky. begin ;
; . . .
end
Podmíněný příkaz A) neúplný podmíněný příkaz if <podmínka> then
B) úplný podmíněný příkaz if <podmínka> then
else
Před else NESMÍ být středník!!! if A>0 then write('A je kladné') else write('A je nula nebo záporné'); if A>0 then {CHYBA!!!} write('A je kladné'); else write('A je nula nebo záporné');
if A>0 then begin KLADNA:=KLADNA+1; write('A je kladné'); end else POCET:=POCET-1;
POZOR, při vnořování podmíněných příkazů do sebe se else váže vždy k nejbližšímu if. if <podmínka1> then if <podmínka2> then
else
má význam jako if <podmínka1> then begin if <podmínka2> then
else
end
V takovéto situaci (vnořování příkazů if do sebe) je lepší důsledně používat begin-end. Příkazy cyklu A) cyklus s podmínkou na začátku (while-do) while <podmínka> do
Postup provádění: 1. Vyhodnoť podmínku 2. Pokud podmínka neplatí, opusť cyklus a pokračuj prvním příkazem následujícím za tělem cyklu 3. Jinak (pokud podmínka platí) proveď tělo cyklu 4. Opakuj postup od bodu 1 TEDY: tělo cyklu s podmínkou na začátku se nemusí vůbec provést. B) cyklus s podmínkou na konci (repeat-until) repeat
;
; . .
until <podmínka>
Postup provádění: 1. 2. 3. 4.
Proveď příkazy v těle cyklu Vyhodnoť podmínku Jestliže podmínka neplatí, opakuj postup od bodu 1 Jinak ukonči cyklus a pokračuj v práci prvním příkazem za cyklem
TEDY: tělo cyklu s podmínkou na konci se provede vždy aspoň jednou.