Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Co dělá co. Čo Ti nie je jasné ? celý kód, alebo nevieš čo robia matematické operácie ako odd, sqr,… nový
pme 20.10.2009 21:34
pme
Program vypočítava mocninu. Keď si odmyslíš vnútorný while cyklus, tak ide o klasické vypočítanie mo… nový
los 20.10.2009 21:42
los
Ešte pridám jeden odkaz - možno pomôže: operacie poslední
pme 20.10.2009 21:45
pme

Co dělá co.

Čo Ti nie je jasné ? celý kód, alebo nevieš čo robia matematické operácie ako odd, sqr, div, *, -, respektíve nerozumieš napr.

while exponent > 0 do begin

- 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).

Zpět do poradny Odpovědět na původní otázku Nahoru