Pętla FOR - przykład działania - silnia

DZIAŁANIE: 10! = 3628800

 

Kod:

Ewentualne Objaśnienia:

Zajmiemy się teraz pierwszą z pętli które mamy w PHP. Jest to pętla FOR . Pętla czyli domyślacie się zapewne, że coś będzie powtarzane.

Konstrukcja pętli FOR to:
- for (ustalenie początku; warunek działanie pętli; zwiększenie lub zmniejszenie licznika)
{
instrukcje powtarzane w pętli
}

Na przykład chcielibyśmy wyświetlić liczby od 1 do 10, więc piszemy taki kod:

for ($i=1; $i<=10; $i++)
{
print ("$i ");
}

Jak to działa ? To bardzo proste !!
- Zmienna $i ma początkowo wartość 1, zostaje wypisana na ekranie liczba 1 przez funkcje print;
- Następnie zmienna $i jest zwiększania o 1 poleceniem postinkrementacji ( $i++) czyli przyjmuje wartość 2;
- Pętla sprawdza czy jest spełniony warunek $i<=10. Jest spełniony ponieważ 2 jest mniejsze od 10;
- Pętla znowu się wykonuje, zostaje wypisana liczba 2, potem jest zwiększone i z 2 do 3 , znowu sprawdzane czy zmienna $i jest mniejsza lub równa 10 itd.;
- trwa to aż do momentu kiedy zmienna $i przyjmie wartość 10;

Zastanówcie co by się działo gdyby zmienna $i od razu przyjęła wartość 10 lub większą od 10 ?!

A teraz kilka słów na temat działania przykładu z silnią:
- mam nadzieję, że każdy z Was wie jak działa silnia matematyczna. Choć w sumie być może nigdy nie miałeś styczności z tym działaniem wyjaśnię na przykładzie, że np:
- 3! ( trzy silnia ) = 1*2*3=3 albo np 5! = 1*2*3*4*5 = 120 itd. itd. To tak dla przypomnienia!
- Skoro już wiesz jak działa silnia oraz poznałeś działanie pętli for to nie bez problemu zrozumiesz działanie przedstawionego kodu PHP;
- kojarzysz operator += ?? Mówiłem już o nim więc na pewno rozumiesz działanie zawartego w kodzie operatora *=
- zwróć uwagę na operator $i++ czyli postinkrementację, czyli zwiększenie wartości zmiennej $i o 1. Gdyby zapis był $i-- byłaby to postdekrementacja, czyli zmniejszenie wartości zmiennej $i o 1. Istnieje również preinkrementacja czyli zapis ++$i oraz predekrementacja --$i.
Jaka jest różnica ??
Operacja $i++ najpierw używa zmiennej a potem ją zwiększa o 1, natomiast ++$i pierw zwiększa o 1 a dopiero potem dokonuje operacji.
Do tego jeszcze wrócimy !!

Na przyszłość powiem, że silnie można zrealizować "lepiej" przy użyciu PHP używając tzw. rekurencji. Ale o tym później :)