

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)
zkus sem hodit trošku větší část programu popřípadě napiš co program dělá, bude se to snáze odvozovat
Č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