Wprowadzenie do wzorców w PHP

Co to jest programowanie wzorców w PHP? Sztuka programowania polega na drukowaniu jakiegoś wzoru na ekranie. Może to być ciąg cyfr, liter lub znaków specjalnych tworzących wzór. Najprostszym przykładem wzoru jest seria Fibonacciego (1, 1, 2, 3, 5, 8, 13, 21, 34 itd.). Są też inne wzory, które są projektami na ekranie, na przykład piramida gwiazd. Zasadniczo programowanie wzorów polega po prostu na drukowaniu wzoru na ekranie.

W tym artykule użylibyśmy PHP do kodowania wzorców. Nie martw się jednak. Kiedy już to zrozumiesz, tylko składnia różni się w zależności od języka. Logika jest zawsze taka sama.

Przykłady wzorców w PHP

  • Zanim przejdziemy do programów, zrozummy podstawową logikę wzorców kodowania. Wzory są zawsze programowane przez zagnieżdżone pętle - najczęściej zagnieżdżone dla pętli. Wynika to z tego, że pętle są syntaktycznie łatwiejsze do zrozumienia i zwięzłe.
  • Zewnętrzna pętla zawsze dotyczy liczby linii. Powiedzmy, że jeśli musisz wydrukować wzór obejmujący pięć linii, zewnętrzna pętla zawsze będzie działać pięć razy.
  • Pętla wewnętrzna zawsze dotyczy liczby elementów w każdej linii. Powiedzmy, że jeśli musisz wydrukować 1 gwiazdkę w pierwszej linii, 2 gwiazdki w drugiej linii i tak dalej, wewnętrzna pętla kontrolowałaby tę logikę.
  • W zależności od wzoru czasami występuje więcej niż jedna wewnętrzna pętla lub trzy poziomy zagnieżdżonych pętli. Ponadto w celu uzyskania pożądanego wzoru potrzebne są spacje i tabulatory.

Mając to na uwadze, spróbujmy teraz zakodować wzorce.

1. Gwiezdna pół piramida.

To najprostszy wzór do wydrukowania. Drukuje rosnącą liczbę gwiazd w kolejnych wierszach. 1 gwiazdka w pierwszej linii, 2 gwiazdki w drugiej linii i tak dalej.

Zakodujmy ten wzór dla pięciu linii. Pamiętając o logice, nasza zewnętrzna pętla uruchomi się pięć razy. Ponieważ liczba gwiazd w każdej linii jest bezpośrednio zależna od numeru linii, nasza wewnętrzna pętla będzie funkcją zmiennej kontrolnej w naszej zewnętrznej pętli. Zobaczmy jak.

Our outer control variable is i and inner control variable is j .
Outer loop iteration 1 –> i = 0
Inner loop iteration 1 –> j = 0
Print star
Outer loop iteration 2 –> i = 1
Inner loop iteration 1 –> j = 0
Print Star
Inner loop iteration 2 -> j = 1
Print Star
Outer loop iteration 3 –> i = 2
Inner loop iteration 1 –> j = 0
Print Star
Inner loop iteration 2 -> j = 1
Print Star
Inner loop iteration 3 -> j = 2
Print Star

I tak dalej. W ten sposób kontrolujemy naszą wewnętrzną pętlę w oparciu o zmienną kontrolną zewnętrznych pętli. Zobaczmy teraz program w akcji.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = 0; $i < $num; $i++)
(
// inner loop handles number of columns
for($j = 0; $j <= $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

2. Gwiezdna pół piramida - odbicie lustrzane.

Jest to podobne do Gwiezdnej pół piramidy, z tym wyjątkiem, że gwiazdy są wyrównane do prawej.

Aby uzyskać właściwe wcięcie, używamy spacji, a następnie drukujemy gwiazdy. Byłyby więc dwie wewnętrzne pętle - jedna kontrolująca liczbę przestrzeni, a druga kontrolująca liczbę gwiazd.

Uwaga: Należy pamiętać, że liczba spacji w pętli K to podwójna spacja. Jest tak, ponieważ drukujemy również pojedynczą spację wraz z gwiazdami. Daje to gotowy wygląd naszego wzoru, a nie zatłoczony wydruk. Wykorzystamy to, aby wydrukować pełne piramidy.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = 0; $i < $num; $i++)
(
// inner loop handles indentation
for($k = $num; $k > $i+1; $k-- )
(
// Print stars
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j <= $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

3. Star Half Pyramid - Odwrócony.

W przypadku tego wzoru piramidy liczba gwiazd maleje z każdą nową linią. Pierwsza linia ma 5 gwiazdek, druga linia ma 4 gwiazdki i tak dalej.

Pamiętając o logice, wiemy, że zewnętrzna pętla zawsze musi kontrolować liczbę linii, a wewnętrzna pętla musi kontrolować liczbę gwiazd. Tej logiki nie można zmienić. Chociaż to, co można zmienić, to sposób uruchamiania pętli, zwiększania lub zmniejszania kolejności. Oznacza to, że możemy zapętlać od 0 do 5 lub możemy zapętlać w malejącej kolejności od 5 do 0. Tak więc dla odwróconych wzorów takich jak ten wiemy, że liczba gwiazd jest większa w pierwszej linii. Dlatego decydujemy się zmniejszyć pętle zamówień.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = $num; $i > 0; $i--)(
// inner loop handles number of stars
for($j = 0; $j < $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

4. Gwiezdna pół piramida - odwrócone odbicie lustrzane.

Ten wzór to wcięta odwrócona pół piramida. Liczba gwiazd maleje z każdą linią, a gwiazdy są wyrównane do prawej.

Wierzę, że do tej pory byłbyś w stanie odgadnąć logikę tego.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = $num; $i > 0; $i--)
(
// inner loop handles indentation
for($k = $i; $k < $num; $k++ )
(
// Print stars
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j < $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

5. Star Full Pyramid.

Ten wzór drukuje pełną piramidę. Innymi słowy, drukuje trójkąt gwiazd na ekranie.

Ten wzór jest zasadniczo połączeniem pół piramidy i jej lustra. Chociaż kodujemy go w niewielkim stopniu. Przejrzyj notatkę w lustrzanej pół piramidzie. Pamiętasz, jak zastosowaliśmy podwójne odstępy, aby nadać naszemu wzorowi gotowy wygląd? W tym przypadku użylibyśmy pojedynczych odstępów, aby gwiazdy były naprzemiennie wyrównane w nieparzystej i parzystej liczbie rzędów, dając nam prawdziwy trójkątny wzór.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = 0; $i < $num; $i++)
(
// inner loop handles indentation
for($k = $num; $k > $i+1; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j <= $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

6. Gwiazdkowy diament.

Ten wzór drukuje na ekranie pełny kształt rombu. Liczba gwiazd wzrasta do zdefiniowanego maksimum, a następnie zmniejsza się z powrotem do 1, dając nam pełny kształt rombu.

Aby wydrukować ten wzór, musielibyśmy podzielić go na dwie połowy. Górna połowa - która drukuje rosnącą liczbę gwiazd. Dolna połowa - która drukuje malejącą liczbę gwiazd. Aby wydrukować obie połówki, użylibyśmy dwóch zewnętrznych pętli i odpowiadających im wewnętrznych pętli.

Kod

<_?php
function print_pattern($num)
(
// The Upper Half Pattern
// Outer loop handles number of rows
for ($i = 0; $i < $num; $i++)
(
// inner loop handles indentation
for($k = $num; $k > $i+1; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j <= $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
// The Lower Half Pattern
// Outer loop handles number of rows
for ($i = $num-1; $i > 0; $i--)
(
// inner loop handles indentation
for($k = $num-1; $k >= $i; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j < $i; $j++ )
(
// Print stars
echo "* ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

7. Wzór numeru.

Dla tego wzoru liczbowego wydrukujemy liczby w stosunku do numeru wiersza. Tak więc cyfra 1 zostanie wydrukowana jeden raz, dwa razy dwa, trzykrotnie i tak dalej.

Gdybyś postępował zgodnie z tym samouczkiem linia po linii, do tej pory musiałeś bardzo dobrze rozumieć działanie zagnieżdżonych pętli do drukowania wzorów. Ten wzorzec również podlega tej samej logice. Zamiast gwiazd drukujemy liczby. Teraz pytasz, skąd mamy liczby? Odpowiedź brzmi - po prostu przez nasze zmienne kontrolne i i j.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = 1; $i <= $num; $i++)
(
// inner loop handles indentation
for($k = $num; $k > $i; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 1; $j <= $i; $j++ )
(
// Print numbers
echo $i." ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

8. Wzór znaków.

W tym wzorze drukowalibyśmy alfabety ABCDE we wzorze. Zaczynając od A, kolejne wiersze wprowadziłyby nowy alfabet umieszczony pomiędzy poprzednimi alfabetami.

Jedyną sztuczką w tym wzorze jest uzyskanie znaków z naszych zmiennych kontrolnych. Robimy to, wykorzystując wartość znaków ASCII. Wartość ASCII od A do Z wynosi od 65 do 90 . Tak więc obliczamy wartość ASCII w każdej iteracji i wypisujemy odpowiedni znak. Funkcja chr () w PHP służy do drukowania znaku z kodu ASCII.

Kod

<_?php
function print_pattern($num)
(
// Outer loop handles number of rows
for ($i = 1; $i <= $num; $i++)
(
// inner loop handles indentation
for($k = $num; $k > $i; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 1; $j <= $i; $j++ )
(
// Print characters
echo chr(64+$j)." ";
)
for($j = $i-1; $j >= 1; $j-- )
(
// Print characters
echo chr(64+$j)." ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 5;
print_pattern($num);
?>

Wynik:

Wydrukuj pełne alfabety, a wzór wygląda całkiem fajnie.

9. Binarna klepsydra - wzór premiowy.

Ten wzór jest dynamicznym wzorem, który drukuje klepsydrę względem upływu czasu, ale nie jest to rzeczywiste obliczenie. Na przykład, jeśli upłynęła godzina, wydrukuje jedną linię zer w górnej połowie i jedną linię 1 w dolnej połowie.

Kod

<_?php
function print_pattern($num, $hour)
(
// Outer loop handles number of rows
for ($i = $num; $i > 0; $i--)
(
// inner loop handles indentation
for($k = $num; $k > $i; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j < $i; $j++ )
(
// Print characters
if($num-$i < $hour)
echo "0 ";
else
echo "1 ";
)
// go to new line after each row pattern is printed
echo "\n";
)
for ($i = 1; $i < $num; $i++)
(
// inner loop handles indentation
for($k = $num-1; $k > $i; $k-- )
(
// Print spaces
echo " ";
)
// inner loop handles number of stars
for($j = 0; $j <= $i; $j++ )
(
// Print characters
if($num-$i <= $hour)
echo "1 ";else
echo "0 ";
)
// go to new line after each row pattern is printed
echo "\n";
)
)
//Call function and send number of lines as parameter
$num = 8;
$hour = 3;
print_pattern($num, $hour);
?>

Wyjście: upłynęła 1 godzina.

Wyjście: upłynęły 2 godziny.

Wyjście: upłynęły 3 godziny.

I tak dalej.

Wniosek

Wiele wzorów do zabawy. Chodzi przede wszystkim o zachowanie logiki kodu. Po zrozumieniu logiki kodu nie ma wzoru, którego nie można wydrukować.

Polecane artykuły

To był przewodnik po wzorcach w PHP. Tutaj omówiliśmy omówienia i przykłady wzorców w PHP z kodami i danymi wyjściowymi. Możesz również przejrzeć nasze podane artykuły, aby dowiedzieć się więcej-

  1. Co to jest PHP?
  2. Zmienne w PHP
  3. Konstruktor w PHP
  4. Wprowadzenie do PHP
  5. Przegląd wzorców w JavaScript
  6. Przykłady funkcji rekurencyjnej PHP
  7. Wzory liczbowe w Javie | Przykłady z implementacją kodu