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)

Předmět Autor Datum
zkus sem hodit trošku větší část programu popřípadě napiš co program dělá, bude se to snáze odvozova…
Nigfire 20.10.2009 21:28
Nigfire
Co dělá co. Čo Ti nie je jasné ? celý kód, alebo nevieš čo robia matematické operácie ako odd, sqr,…
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…
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