Je sice hezké, že náš program už jakž takž umí vypisovat text, ale k tomu se víc hodí tužka a papír. My donutíme program počítat (od čeho je asi slovo počítač, že?!).
Výraz = posloupnost proměnných či čísel spojená operátory (či samotná proměnná)
Data = soubor jakéhokoliv množství jakýchkoliv informací
Proměnná = místo pro data
Napišme si krátký prográmek:
Program Pocitej;
Begin
Write('16 + 7 ='); {Tady jde o text, protože výraz je mezi apostrofy}
Writeln(16 + 7); {To samé bez apostrofů je ale výraz, a ten se vypočte}
Readln; {Program, u kterého nevidíme výsledek, je na nic, zkuste to bez Readln;}
End.
Výrazy se během běhu programu vyhodnocují, a tak se nám zobrazilo 16 + 7
= 23. Je vidět, že jednotlivé části výrazu mohou být například čísla.
Ta se pak spojují pomocí operátorů (+, -, * , /).
Pascal má dva zvláštní operátory div a mod. Div značí
celočíselné dělení a mod je zbytek po tomto dělení. Tedy:
16 div 3 = 5
20 div 13 = 1
16 mod 3 = 1
20 mod 13 = 7.
Doufám, že teď je to už jasné. Pochopitelně platí to, co znáte ze školy.
Násobení a dělení (i celočíselné) má přednost před sčítáním a odčítáním. 16 + 11
div 5 * 3 = 22.
No, ale bylo by také zapotřebí, aby data mohl zadávat i uživatel. Každá data se musí někam uložit, aby mohla být později zpracována. K vytvoření místa pro data slouží slovíčko var.Uvádí se mezi uses a begin. Musíme taky dopředu oznámit, jaký typ dat chceme skladovat (nebudeme přece skladovat hrušky ve skladišti jaderného materiálu)
Samotné místo pro data tedy vytvoříme takto :
var NázevProměnné : TypProměnné;
Pro naše účely postačí, budeme-li rozlišovat proměnné celočíselné,
reálná čísla, znaky (jedno písmeno, číslice, ale např. i ^ či ;) a řetězce
(více znaků).
Typ proměnné | TypProměnné | Minimum | Maximum |
---|---|---|---|
celočíselná | Integer | asi -32 000 | asi 32 000 |
reálná | Real | -1039 | 1039 |
znak | char | #0 (dolní znak ASCII) | horní znak ASCII |
řetězec | string | '' (prázdný řetězec) | 255 různých znaků |
Ještě by to chtělo s daty umět nějak pracovat. Nejjednodušším příkazem pro práci s proměnnými je takzvané přiřazení. To má tvar NázevProměnné := Výraz; (Tedy dvojtečka a rovná se hned za sebou) Proměnná po něm bude mít hodnotu jakou měl výraz před provedením přiřazení. Původní hodnota proměnné se nenávratně ztratí. Raději na příkladu.
Z := 13+17; (Poté bude Z = 30) Z := Z * Z; (Poté bude Z = 900 -- Nejprve se totiž vypočte výraz na pravé straně a jelikož v Z je 30 a 30*30 = 900, toto číslo se uloží do Z) Z :=0; (Poté bude v proměnné Z nula a těch devět stovek už nikdy nezjistíme...)
Chceme-li načíst hodnotu z klávesnice, přiřazení nestačí, musíme použít něco jiného. Slouží k tomu již známý příkaz Readln; Tentokrát ve formě Readln(NázevProměnné); Ten zastaví běh programu a počká, až něco naťukáme. Nikdy nezapomeňte uživateli oznámit, co že to vlastně chcete. Ale nyní již na příkladu:
Program Secti; {Program sečte dvě celá čísla zadaná uživatelem} Uses Crtp2; {Není nutné} Var A,B,Vysledek : Integer; {Je možné zadat i více proměnných najednou} Begin ClrScr; {Nemáte-li Crtp2, můžete vynechat} Writeln('Zadejte dvě celá čísla'); {Oznámíme, co chceme} Readln(A,B); {Načteme čísla - lze i více najednou} Vysledek:=A+B; {Vypočteme výsledek} Writeln(A,' + ',B,' = ', Vysledek); {writeln se dá používat i takto} Readln; {Nesmí chybět, chceme něco vidět} End.
Ještě pár poznámek - znakové proměnné lze přiřadit hodnotu pomocí
:= 'z', kde z je samotný znak, ale i jinými způsoby (#ASCIIČísloZnaku, ^CTRLKód).
I řetězce lze sčítat : 'Aho' + 'jky' = 'Ahojky'
To by bylo pro dnešek vše a teď domácí úkol: Napište program, který
sečte, odečte, znásobí a vydělí dvě čísla zadaná uživatelem. A poté
program, který sečte tři znaky (zadané uživatelem).
Pro méně zvídavé - uvědomte si, že pokud sečteme dva chary je výsledkem řetězec, tedy string.
Dělíme-li dva integery pomocí / je výsledným typem Real (I když vyjde celočíselný výsledek.). Pište
své vlastní programy tak dlouho, až vám bude pojem proměnné zcela jasný.
Pochopte, jak Pascal zachází s výrazy.