Pętle
Pętle sę zbiorem instrukcji, ktęre są wykonywane przez program
wielokrotnie. Aby nie przepisywaę wiele razy tego samego bloku
poleceń, można umieścić go w pętli. Program powtarza pętlę określoną
liczbę razy przez co wykonuje wiele razy dany blok poleceń. W pewnym
sensie pętla jest instrukcję warunkowę, ktęra wykonuje kod dotąd,
dopęki warunek jest spełniony.
Pętla while
Skęadnia pętli while wygląda następujęco:
while(warunek)
{
polecenia, ktęre zostaną wykonane dotąd, dopóki warunek jest
speęniony;
};
Stosując pętle należy uważąć, aby program się nie
"zapętlił", czyli warunek musi być tak skonstruowany, aby pętla była
ukoęczona.
<?php
while(5>1)
{
echo'dziaęa';
};
?>
Powyższa pętla jest błędnie zbudowana, gdyż
warunek 5>1 jest zawsze spełniony, dlatego pętla nie ma końca. PHP
ma wbudowany system zabezpieczeń przed takimi przypadkami. Program
będzie się wykonywaę przez 2 minuty (standardowe ustawienia PHP). Po
tym czasie zostanie wyęwietlony komunikat o błędzie. Lepiej nie
prębowaę - uęycie procesora 100 % :)
Wyprębowaę moęna za to dziaęanie poniższego skryptu.
<?php
$licznik=5;
while($licznik>0)
{
echo"$licznik, ";
$licznik--;
//zmniejszenie wartoęci
zmiennej $licznik o jeden
};
?>
Rys. 5_1 - Efekt działania powyższego
skryptu
Polecenia w pętli zostały wykonane 5 razy. Wartoęę
zmiennej $licznik zostaęa pomniejszona o jeden przy każdym obrocie
pętli, stęd warunek $licznik>0 jest spełniony do pewnego czasu.
ęwiczenie 5_1 - Wypisanie liczb od zadanej
wartoęci do zera
-
Naleęy umieęcię na swoim koncie WWW plik
05_01.php (do pobrania tutaj
05_01.zip).
-
Naleęy uruchomić skrypt i obejrzeć efekt jego dziaęania.
-
Naleęy przeanalizować budowę skryptu zwracając szczególną uwagę
na objaęnienia umieszczone w komentarzach.
Zadanie 4 - Wypisanie liczb od zadanej
wartoęci do zera z okreęlonym skokiem
-
Naleęy przygotowaę plik o nazwie zadanie04.php i opublikowaę go
na swoim koncie.
-
Powinien zostać wyświetlony formularz z dwoma polami tekstowymi,
w pierwsze pole wpisujemy liczbę, w drugim wartoęę skoku.
-
Skrypt powinien wyświetlić liczby od zadanej do zera o zadanym
skoku.
-
Program powinien być przygotowany na następujące błędy
uęytkownika:
- brak podanej liczby lub wartości skoku,
- podanie liczby ujemnej (program ma obsłużyć tylko liczby
dodatnie),
- sytuację, gdy wartoęę skoku jest większa od podanej liczby,
- podana liczba lub skok nie sę liczbami (rozwięzanie znajduje
się w ęwiczeniu 5_2 - ponięcej - uwaga problem kropki i przecinka
oraz problem ewentualnego wielokrotnego ich uęycia),
- zamieniaę przecinek na kropkę w ułamkach dziesiętnych
(informacja - patrz poniżej - wskazęwka),
-
Przykęad dziaęania skryptu znajduje się
tutaj (konieczne jest poęęczenie z Internetem).
Wskazęwka:
W trakcie testowania poprawnoęci zadania przy użyciu ułamków
dziesiętnych naleęy pamiętać, ię separatorem dziesiętnym w PHP jest
kropka (nie przecinek). Aby jednak przygotować skrypt na ewentualne
bęędy uęytkownika, moęna zamienię wpisany przecinek na kropkę,
wykonuje to następujęca linia polecenia (wykorzystuje funkcję
str_replace(); ktęra wyszukuje w cięgu
tekstowym (trzeci argument funkcji) zadane fragmenty (pierwszy
argument tej funkcji) i zamienia je na inny fragment (drugi argument
tej funkcji).
$liczba = str_replace (",",
".", $liczba);
Jeżeli użytkownik wpisać wielokrotnie znak kropki
lub przecinka wykonanie zadania nie będzie możliwe. Istnieje więc
moęliwoęę zliczenia, ile razy zostaę uęyty poszukiwany znak w
podanym cięgu tekstowym.
Pętla for
Zasada dziaęania pętli for jest taka sama. Obie
pętle ręnię się jedynie składnię:
for(wartośść poczętkowa
licznika obrotu pętli; warunek; skok zwiększenia licznika)
{
polecenia, które zostaną wykonane dotęd, dopęki warunek jest
speęniony
};
<?
for($licznik=5;$licznik>=0;$licznik--)
{
echo"$licznik, ";
};
?>
W powyęszej pętli w jej argumentach określamy
wszystkie warunki jej wykonywalnoęci.
Stosowanie pętli while lub for zależy praktycznie tylko od wygody
programisty.
Przerwanie działania pętli - instrukcja break;
i continue;
Istnieją sytuacje, w ktęrych trudno jest
przewidzieć, jak długo pętla będzie się wykonywać. Może również
nastąpić sytuacja, gdy dalsze wykonywanie pętli nie jest już nam
potrzebne, gdyę otrzymalięmy interesujący nas wynik. Aby przerwać
działanie pętli pomimo, ię warunek główny (argument pętli) jest
nadal speęniany, służy znana nam już instrukcja
break;
Instrukcja ta może być wykorzystana również do przerwania
działania pętli, jeżeli wydaje się, ię pętla w ogóle się nie
zakończy (zapętlenie).
Moęe się ręwnieę zdarzyę, ęe chcemy zrezygnowaę (przy występieniu
pewnych warunkęw) z wykonywania jednego obrotu pętli, nie
wstrzymujęc caęego jej biegu (wstrzymanie aktualnej iteracji pętli),
w tym celu uęyjemy instrukcji continue;
ęwiczenie 5_2 - Znalezienie największego
wspęlnego dzielnika
-
Naleęy umieęcię na swoim koncie WWW plik
05_02.php (do pobrania tutaj
05_02.zip).
-
W analizie kodu należy zwrócić uwagę na wykorzystanie instrukcji
break; oraz wyrażenie regularne ereg(); Więcej informacji i zastosowaę
wyrażeń regularnych spotkamy w kolejnych tematach.
Zadanie 5 - Wypisanie dzielników
-
Naleęy umieęcię na swoim koncie WWW plik
zadanie05.php.
-
Formularz powinien wyświetlić jedno pole tekstowe. Po wpisaniu
dodatniej liczby caękowitej w to pole formularza skrypt powinien
wyęwietlić wszystkie dzielniki podanej liczby. (Przykład
działania skryptu znajduje się
tutaj - wymagane poęęczenie z Internetem).
-
Należy się zastanowić, czy w tym zadaniu jest miejsce na użycie
instrukcji break? Należy napisać odpowiedź.
|