|
Proměnné
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 |
- 10 ^ 39 |
10 ^ 39 |
| 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; A Z bude 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říř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.
Zdroj: http://programar.webpark.cz/
|