Další celočíselné typy Současné implementace Pascalu obsahují kromě typu integer ještě další celočíselné typy. Při náročnějším počítání v Turbo Pascalu oceníme typ longint; do proměnných tohoto typu můžeme uložit hodnoty v rozsahu od -2 147 483 648 do 2 147 483 647 (má tedy stejný rozsah jako typ integer v Lazarusu a v Delphi). Pro některé speciální výpočty se může hodit typ word, který „nemá znaménko“ – nemůže obsahovat záporná čísla. Rozsah jeho hodnot je od 0 do 65 535. V Lazarusu a v Delphi je k dispozici také bezznaménkový typ longword, který může obsahovat čísla v rozsahu od 0 do 4 294 967 295. S hodnotami těchto typů lze provádět všechny operace, o nichž jsme hovořili v souvislosti s typem integer. Jejich použití je však spíše ojedinělé, a proto se jimi v této knížce nebudeme zabývat.
Příklad 7.1 Napíšeme funkci IntNaRetezec, která dostane celé číslo typu integer a vrátí znakový řetězec obsahující zápis tohoto čísla v desítkové soustavě; umístíme ji do jednotky retezce, s níž jsme se setkali v několika předchozích kapitolách. Její hlavička bude mít tento tvar: function IntNaRetezec(daneCislo: integer): string; Nejprve si ujasníme postup. Vytvořit řetězec obsahující zápis zadaného čísla znamená získat postupně jeho jednotlivé znaky – číslice a případné znaménko. Jak uvidíme, je výhodné postupovat od konce, tedy jako první získat číslici vyjadřující jednotky, pak získat číslici vyjadřující desítky atd. Předpokládejme nejprve, že zadané číslo, uložené v parametru daneCislo, je kladné. Snadno zjistíme, že vydělíme-li daneCislo deseti, bude zbytek po dělení právě hodnota odpovídající poslední číslici. Nyní potřebujeme „odtrhnout od zadané hodnoty poslední číslici“, tedy získat číslo, jehož zápis bude končit předposlední číslicí daného čísla. I to je jednoduché: tento požadavek splňuje podíl získaný celočíselným dělením daného čísla deseti, tedy daneCislo div 10. Předposlední číslice daného čísla je poslední číslicí tohoto podílu, a poslední číslici už získat umíme. Podobně získáme třetí číslici od konce atd. Ukažme si to na příkladu: předpokládejme, že daneCislo = 123. Výsledkem operace daneCislo mod 10 je 3, což odpovídá skutečnosti, že poslední číslice je 3. Výsledkem operace daneCislo div 10 je číslo 12; jeho poslední číslice je předposlední číslicí zkoumaného čísla, takže ji získáme jako zbytek po dělení číslem 10 atd. Bude-li dané číslo záporné, získáme uvedeným postupem znakovou reprezentaci jeho absolutní hodnoty a k ní pak připojíme znaménko minus. Bude-li dané číslo rovno 0, vrátíme jako výsledek řetězec obsahující jediný znak '0'. Zbývá vyřešit poslední problém: zatím jsme si ukázali, jak získat celočíselnou hodnotu odpovídající hledané číslici. My ale potřebujeme znak vyjadřující tuto hodnotu. Jak ho získáme? (Výsledkem operace daneCislo mod 10 je hodnota typu integer – např. 3; my ale potřebujeme znak '3'. ) Můžeme postupovat takto: vezmeme-li znakový řetězec const cislice = '0123456789'; platí, že cislice[1] je '0', cislice[2] je '1' atd. Chceme-li tedy číslici vyjadřující hodnotu i, kde 0 ≤ i ≤ 10, vezmeme z řetězce cislice znak s indexem i + 1. Když už umíme najít potřebné znaky, musíme z nich složit řetězec. To uděláme např. tak, že vezmeme prázdný řetězec vyjádřený zápisem '', a budeme k němu získané znaky postupně připojovat.
98 Pascal – programování pro začátečníky
Ukázka elektronické knihy, UID: KOS182821