Aritmetika Spausdinti
( 10 Votes )

Parašė Vidmantas Šarkys   

Kurdami programas labai dažnai susidursime su poreikiu ką nors apskaičiuoti, tad šiame skyriuje apžvelgsime kokius matematinius veiksmus su FPS galima atlikti.

1. Realieji skaičiai

Patarimas: jeigu nėra būtina elgtis kitaip - skaičiuodami naudokitės realiojo tipo kintamaisiais. Tai daryti patartina dėl to, jog labai lengva ir patogu užrašyti skaičiavimo sąlygą, nereikia galvoti apie atsakymo reikšmę ir galima atlikti visus aritmetinius veiksmus. Tarkime, reikia apskaičiuoti dviejų skaičių dalmenį:

program dalyba;
var x, y, dalmuo : real;
Begin
WriteLn('Įveskite pirmąjį skaičių: '); ReadLn(x);
WriteLn('Įveskite antrąjį skaičių: '); ReadLn(y);
dalmuo := x / y;
WriteLn('Šių skaičių dalmuo yra ', dalmuo:5:2);
ReadLn;
end.

Esminis programos sakinys - 6 eilutė. Joje padalinam pirmąjį iš nuskaitytų skaičių iš antrojo. Kintamajam "dalmuo" priskiriame reikšmę - dviejų skaičių dalmenį. Žinodami atsakymą, galime jį parašyti ekrane (nepamirškime nurodyti vietos simboliais, kadangi rašome realųjį skaičių).

Analogiškai galima atlikti ir kitus veiksmus : sudėti, atimti, padauginti. Tuomet vietoj dalybos reiktų rašyti atitinkamą ženklą. Skaičiuoti naudojantis FPS yra išties greita ir patogu.

Dar du naudingi ir dažnai naudojami veiksmai : kėlimas kvadratu ir šaknies traukimas. Pakelti skaičių ar kintamąjį kvadratu galima naudojant sakinį sqr(..), skliaustuose - norimas skaičius ar kintamojo pavadinimas. Šaknies ištraukimui iš skaičiaus naudojame sakinį sqrt(..).

2. Sveikieji skaičiai

Naudotis sveikaisiais skaičiais yra taip pat nesunku. Tačiau vertėtų prisiminti keletą svarbių aspektų.

Jeigu mūsų rezultato kintamasis - sveikasis, jis negali tapti realiuoju. Žinoma, jog sveikasis kintamasis gali įgyti reikšmes +-32767, tad jei po aritmetinio veiksmo reikšmė viršiją šį limitą - programa vykti negali. Jeigu ištraukiame šaknį iš skaičiaus ir tą rezultatą priskiriame sveikojo tipo kintamajam - programa neveiks, net jeigu šaknį ištrauksime be liekanos.

Esminis skirtumas tarp sveikųjų ir realiųjų skaičių žiūrint iš aritmetinės pusės - dalyba. Išnagrinėjome pavyzdį, kuomet dalyba vyksta tarp realiųjų skaičių. Tuomet pakako tarp dalinio ir daliklio padėti dalybos simbolį. Analogiškai atlikti dalybos su sveikaisiais skaičiais negalima. Tam reikalui yra naudojami div ir mod veiksmai. Suvokti, kaip jie veikia labai lengva prisiminus dalybą "kampu", kurios mokėmės pradinėse klasėse.

Turime štai tokį sakinį:

ats := 50 div 10;

Div apskaičiuos, kiek kartų skaičiuje 50 "telpa" skaičius 10. Taigi kintamajam "ats" bus priskiriama reikšmė 5. Jei dalintume mažesnį skaičių iš didesnio, tarkime, 2 iš 20, rezultatas, kurį gautume, būtų lygus 0. Taip yra todėl, kad skaičiuje 2 nė karto negalima "sutalpinti" skaičiaus 20. Veiksmą div galime naudoti ne tik su konkrečiais skaičiais, bet ir su kintamaisiais.

Kiek sunkiau yra suprasti, kaip veikia mod. Turime sakinį:

ats := 25 mod 10;

Trumpai tariant, mod - tai liekana. Mūsų tikslas yra apskaičiuoti, kokio dydžio liekana liks po dalybos veiksmo, minėto anksčiau. Grįžkime prie pavyzdžio. Skaičius 25 yra dalinamas iš 10. Atlikę įprastinį dalybos veiksmą gautume rezultatą 2.5 , tačiau tai - ne sveikasis skaičius. Pirmiausia apskaičiuojama, kiek kartų pirmasis skaičius būtų didesnis už antrąjį, jeigu neturėtume liekanos, t.y. atliekamas div veiksmas. Gautume reikšmę 2, tačiau mod esmė yra apskaičiuoti skaičių, kuris liks atlikus minėtą veiksmą. Iš dalinio (25) atimame tariamąją reikšmę (2 * 10 = 20) ir gauname skaičių 5, kuris ir yra mūsų ieškomas rezultatas. Jeigu naudodamiesi mod dalinsime mažesnį skaičių iš didesnio, mūsų gautas rezultatas bus tas pats dalinys: 5 mod 10 = 5. Taip yra todėl,kad skaičius 5 nėra nė karto didesnis už 10, tad dalybos veiksmas tiesiog nevyksta, o liekanai prisikiramas pirmasis skaičius.

Toks sveikųjų skaičių dalybos būdas gali pasirodyti pernelyg painus ir nereikalingas, tačiau kai kuriose programose be jo išsiversti tiesiog neįmanoma. Kituose skyriuose nagrinėsime keletą tokių programų pavyzdžių.