Schemat Hornera Mgr in Micha Szucki Czym jest

  • Slides: 13
Download presentation
Schemat Hornera Mgr inż. Michał Szucki

Schemat Hornera Mgr inż. Michał Szucki

Czym jest schemat Hornera ? Schemat Hornera – sposób obliczenia wartości wielomianu dla danej

Czym jest schemat Hornera ? Schemat Hornera – sposób obliczenia wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń.

Przykład wyznaczenia wartości wielomianu schematem Hornera 3 x 4+2 x 3+7 x 2+9 x+5

Przykład wyznaczenia wartości wielomianu schematem Hornera 3 x 4+2 x 3+7 x 2+9 x+5 Weźmy pod uwagę pierwsze cztery elementy naszego wielomianu. Możemy dla tych elementów wyłączyć wspólny czynnik przed nawias. Tym czynnikiem jest x: (3 x 3+2 x 2+7 x+9)x+5 Teraz "wyciągamy" przed nawias x z pierwszych trzech elementów w nawiasie: ((3 x 2+2 x+7)x+9)x+5) Następnie wyłączmy przed nawias następne x z dwóch pierwszych elementów w wewnętrznym nawiasie: (((3 x+2)x+7)x+9)x+5

Schemat Hornera a schemat klasyczny Stąd: 3*x*x+2*x*x*x+7*x*x+9*x+5, czyli 10 mnożeń i 4 dodawania (((3*x+2)*x+7)*x+9)*x+5,

Schemat Hornera a schemat klasyczny Stąd: 3*x*x+2*x*x*x+7*x*x+9*x+5, czyli 10 mnożeń i 4 dodawania (((3*x+2)*x+7)*x+9)*x+5, czyli 4 mnożenia i 4 dodawania n*(1+n)/2 –dla wielomianu w zwykłej postaci n – dla wartości wielomianu obliczonej przy pomocy schematu Hornera

Przykład dla wielomianów wyższych stopni Dla wielomianu stopnia 100 (n=100): Schematem klasycznym: n*(1+n)/2=100*(1+100)/2=5050 mnożeń

Przykład dla wielomianów wyższych stopni Dla wielomianu stopnia 100 (n=100): Schematem klasycznym: n*(1+n)/2=100*(1+100)/2=5050 mnożeń Schematem Hornera: 100 mnożeń

Pętle w Delphi (w Pascalu) Pętla pozwala na powtórzenie przez program danej operacji określoną

Pętle w Delphi (w Pascalu) Pętla pozwala na powtórzenie przez program danej operacji określoną ilość razy. Są trzy rodzaje pętli w Delphi (Pascal’u): Pętla „while” Pętla „repeat” Pętla „for”

Pętla „while” while <warunek> do <instrukcje> Dopóki warunek spełniony wykonywane są instrukcję Warunek sprawdzany

Pętla „while” while <warunek> do <instrukcje> Dopóki warunek spełniony wykonywane są instrukcję Warunek sprawdzany jest na początku Przykład: suma: =0; while suma<10 do suma: =suma+1;

Pętla „repeat” repeat <instrukcje> until <waunek> powtarzaj <instrukcję> do momentu , aż zostanie spełniony

Pętla „repeat” repeat <instrukcje> until <waunek> powtarzaj <instrukcję> do momentu , aż zostanie spełniony <warunek> - zawsze wykona się przynajmniej jeden raz; - rozkazy nie muszą być ograniczone przez begin-end, robi to tutaj para repeat-until; Przykład: suma: =0; repeat suma: =suma+1 until suma=4;

Pętla „for”: For <p wartość zmiennej sterującej> to <k wartość zmiennej sterującej> do <instrukcje>

Pętla „for”: For <p wartość zmiennej sterującej> to <k wartość zmiennej sterującej> do <instrukcje> Przykład: For i: =0 to 10 do write (‘liczba’, i); - „i” jest zmienną typu integer, którą należy wcześniej zadeklarować; - wartość i zwiększa się z o 1 z każdym wykonaniem <instrukcji> Pętle for stosujemy wtedy gdy wiemy ile razy <instrukcje> mają być wykonane

Pętla „for” Przykład: For i: =10 downto 0 do write (‘liczba’, i); Odmiana pętli

Pętla „for” Przykład: For i: =10 downto 0 do write (‘liczba’, i); Odmiana pętli for gdzie wartość zmienne sterującej jest w każdym kroku zmniejszana o 1;

Instrukcja warunkowa „if” if <warunek> then <instrukcje gdy spelniony> else <instrukcje gdy nie spełniony>

Instrukcja warunkowa „if” if <warunek> then <instrukcje gdy spelniony> else <instrukcje gdy nie spełniony> Instrukcja „if” sprawdza <warunek> jeżeli jest on spełniony wykonywane są odpowiednie instrukcję jeżeli nie to wykonywana jest instrukcja wpisana po słowie kluczowym „else”. Przykłady: if a>0 then write(‘wieksze’); If a=>0 then write(‘wieksze lub rowne’) else write(‘mniejsze’);

Instrukcja wielokrotnego wyboru „case” case wyrażenie of wybór 1: <instrukcje>; . . . wybór

Instrukcja wielokrotnego wyboru „case” case wyrażenie of wybór 1: <instrukcje>; . . . wybór n: <instrukcje>; else (kod) end; Słowo case wraz z of tworzą instrukcję warunkową (case. . of). Może być używana jako zamiennik instrukcji warunkowych If. . . Then. Stosuje się ją w przypadku mało efektywnego wykorzystania instrukcji if. . . then, tzn. gdy należy sprawdzić większą liczbę możliwych warunków. Instrukcja case ma to do siebie, że działa jedynie na typach wyliczeniowych jak Char, Byte, Integer, Cardinal itp. , nie można jej na przykład użyć aby sprawdzić zawartość zmiennej typu String.

Instrukcja wielokrotnego wyboru „case” Przykład: liczba: byte; case liczba of 1: write(‘wybrales 1’); 2:

Instrukcja wielokrotnego wyboru „case” Przykład: liczba: byte; case liczba of 1: write(‘wybrales 1’); 2: write (‘wybrales 2’); else write (‘wybrales inna liczbe’); end;