

Vysvětlení procedury mocnina v TB
Dobrý den
Při programování v TurboPascalu jsem narazil na proceduru mocnina, která má následující kód:
begin
vysledek:=1;
while exponent>0 do begin
while not odd(exponent) do begin
zaklad:=Sqr(zaklad);
exponent:=exponent div 2
end;
vysledek:=vysledek * zaklad;
exponent:=exponent - 1
end
end;
Mohl by mi prosím někdo z vás tento kód vysvětlit, co dělá co. Jsem začátečník a zatím se učím základy programování.
Děkuji za odpovědi
účes nutný.. (touchwood)
Čo Ti nie je jasné ? celý kód, alebo nevieš čo robia matematické operácie ako odd, sqr, div, *, -, respektíve nerozumieš napr.
- znamená, že pokiaľ je premenná exponent väčšie ako nula vykonaj...
Ťažko niečo vysvetľovať, keď nevieme čo nevieš
Základy programovania si nájdi v učebnici alebo na webe...
Program vypočítava mocninu. Keď si odmyslíš vnútorný while cyklus, tak ide o klasické vypočítanie mocniny násobením výsledku základom toľkokrát, aký je vysoký exponent.
Vnútorný while cyklus je optimalizácia, ktorá v prípade párneho exponentu umocní základ a vydelí exponent dvoma. To je možné spraviť preto, že platí: x^y = x^(2*y/2) = (x^2)^(y/2).
Ešte pridám jeden odkaz - možno pomôže: operacie