Úvod do vzorů v PHP

Co je to Programování vzorů v PHP? Je to umění programování tisknout nějaký vzor na obrazovku. Může to být řada čísel, písmen nebo speciálních znaků, které vytvoří vzor. Nejjednodušší příklad vzoru je Fibonacciho řada (1, 1, 2, 3, 5, 8, 13, 21, 34 atd.). Pak jsou na obrazovce další vzory, řekněme pyramida hvězd. V zásadě tedy programování vzorů jednoduše tiskne vzorek na obrazovku.

V tomto článku bychom pomocí kódování PHP používali PHP. Nebojte se. Jakmile to pochopíte, je to jen syntaxe, která se liší od jazyka k jazyku. Logika je vždy stejná.

Příklady vzoru v PHP

  • Než skočíme přímo do programů, porozumíme základní logice kódovacích vzorů. Vzory jsou vždy programovány prostřednictvím vnořených smyček - většinou vnořených pro smyčky. Důvodem je to, že smyčky jsou syntakticky snáze pochopitelné a stručné.
  • Vnější smyčka se vždy týká počtu řádků. Řekněme tedy, že pokud chcete vytisknout vzorek přesahující pět řádků, bude vnější smyčka vždy pětkrát spuštěna.
  • Vnitřní smyčka se vždy týká počtu prvků v každé řádce. Řekněme tedy, že pokud musíte vytisknout 1 hvězdičku v prvním řádku, 2 hvězdičky v druhém řádku a tak dále, tuto logiku bude ovládat vnitřní smyčka.
  • V závislosti na vzoru někdy existuje více než jedna vnitřní smyčka nebo tři úrovně vnořených smyček. Rovněž existuje zapojení mezer a tabulátorů pro vytvoření požadovaného vzoru.

Takže, mějte to na paměti, zkusme kódovat vzorce nyní.

1. Hvězdná polovina pyramidy.

Toto je nejjednodušší vzor pro tisk. Vytiskne rostoucí počet hvězd v následujících řádcích. 1 hvězda v prvním řádku, 2 hvězdy v druhém řádku a tak dále.

Kódujme tento vzorec pro pět řádků. S ohledem na logiku bude naše vnější smyčka spuštěna pětkrát. Protože počet hvězd v každé linii je přímo závislý na čísle linky, bude naše vnitřní smyčka funkcí řídicí proměnné v naší vnější smyčce. Uvidíme 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

A tak dále. Takto ovládáme naši vnitřní smyčku na základě ovládací proměnné vnější smyčky. Podívejme se nyní na program.

Kód

<_?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);
?>

Výstup:

2. Hvězdná polovina pyramidy - zrcadlová.

Toto je podobné hvězdné polovině pyramidy, až na to, že hvězdy jsou zarovnané doprava.

K dosažení správného odsazení bychom použili mezery a poté vytiskli hvězdy. Takže by existovaly dvě vnitřní smyčky - jedna pro ovládání počtu prostorů a další pro ovládání počtu hvězd.

Poznámka: Nezapomeňte na jednu věc, že ​​počet mezer v k-smyčce je dvojnásobný. Je to proto, že spolu s hvězdami také tiskneme jedno místo. To dává nášmu vzoru hotový vzhled, spíše než přetížený tisk. Použijeme to k našemu využití, když tiskneme plné pyramidy.

Kód

<_?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);
?>

Výstup:

3. Hvězdná polovina pyramidy - obrácený.

Pro tento vzor pyramidy počet hvězd neustále klesá s každou novou čarou. První řádek má 5 hvězdiček, druhý řádek má 4 hvězdičky atd.

S ohledem na logiku víme, že vnější smyčka musí vždy řídit počet řádků a vnitřní smyčka musí kontrolovat počet hvězd. Tuto logiku nelze změnit. Co však lze změnit, je to, jak začneme smyčky, zvyšující se nebo klesající pořadí. To znamená, že můžeme buď smyčky od 0 do 5, nebo můžeme smyčky v sestupném pořadí od 5 do 0. Takže pro obrácené vzory, jako je tento, víme, že počet hvězd je více v první řadě. Rozhodli jsme se tedy snížit pořadí smyček.

Kód

<_?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);
?>

Výstup:

4. Hvězdná polovina pyramidy - obrácené zrcadlení.

Tento vzor je odsazená obrácená polovina pyramidy. Počet hvězd klesá s každou řádkou a hvězdy jsou zarovnány doprava.

Věřím, že už si budeš moci uhodnout logiku pro tuto.

Kód

<_?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);
?>

Výstup:

5. Hvězdná plná pyramida.

Tento vzor vytiskne celou pyramidu. Nebo jinými slovy, vytiskne na obrazovku trojúhelník hvězd.

Tento vzorec je v podstatě kombinací Poloviční pyramidy a jejího zrcadla. I když je kód mírně zvlněný. Opětovná poznámka v Zrcadlové polovině pyramidy. Pamatujete si, jak jsme použili dvojité mezery, abychom nášmu vzoru dodali dokonalý vzhled? Zde bychom použili jednoduché mezery tak, aby hvězdy byly střídavě zarovnány v lichém a sudém počtu řádků, což nám poskytne skutečný trojúhelníkový vzor.

Kód

<_?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);
?>

Výstup:

6. Hvězdný diamant.

Tento vzor vytiskne na obrazovku kompletní diamantový tvar. Počet hvězd se zvyšuje, dokud není definováno maximum, a pak klesá zpět na 1, což nám dává plný kosočtvercový tvar.

Chcete-li tento vzor vytisknout, musíme vzor rozdělit na dvě poloviny. Horní polovina - která tiskne rostoucí počet hvězd. Dolní polovina - která tiskne klesající počet hvězd. K tisku obou polovin bychom použili dvě vnější smyčky a odpovídající vnitřní smyčky.

Kód

<_?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);
?>

Výstup:

7. Vzorec čísel.

U tohoto vzoru čísel vytiskneme čísla ve vztahu k číslu řádku. Proto by číslice 1 byla vytištěna jednou, dvakrát dvakrát, třikrát a tak dále.

Pokud byste postupovali podle tohoto tutoriálu řádek po řádku, musíte nyní dobře rozumět práci vnořených smyček pro tisk vzorů. Tento vzor také sleduje stejnou logiku. Místo hvězd tiskneme čísla. Nyní se ptáte, jak získáme čísla? Odpověď je jednoduše prostřednictvím našich řídicích proměnných i a j.

Kód

<_?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);
?>

Výstup:

8. Znakový vzor.

V tomto vzoru bychom tiskli abecedy ABCDE ve vzoru. Počínaje písmenem A by následující řádky zavedly novou abecedu vloženou mezi předchozí abecedy.

Jediným trikem v tomto vzoru je získat znaky z našich kontrolních proměnných. Děláme to využitím hodnoty ASCII znaků. Hodnota ASCII od A do Z je 6590 . Vypočítáme tedy hodnotu ASCII v každé iteraci a vytiskneme odpovídající znak. Funkce chr () v PHP se používá k tisku znaku z kódu ASCII.

Kód

<_?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);
?>

Výstup:

Tiskněte na plné abecedy a vzor vypadá docela v pohodě.

9. Binární přesýpací hodiny - bonusový vzor.

Tento vzorec je dynamický vzor, ​​který tiskne přesýpací hodiny vzhledem k uplynulému času, nikoli skutečný výpočet. Pokud například uplyne jedna hodina, vytiskne jeden řádek 0 s v horní polovině a jeden řádek 1 s v dolní polovině.

Kód

<_?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);
?>

Výstup: uplynula 1 hodina.

Výstup: Uplynuly 2 hodiny.

Výstup: Uplynuly 3 hodiny.

A tak dále.

Závěr

Se vzory je toho hodně na hraní. Je to všechno o zachování logiky kódu. Jakmile pochopíte kódovou logiku úplně, neexistuje žádný vzor, ​​který byste nemohli vytisknout.

Doporučené články

Toto byl průvodce pro vzory v PHP. Zde jsme diskutovali Přehledy a příklady vzoru v PHP s kódy a výstupy. Další informace naleznete také v našich článcích.

  1. Co je PHP?
  2. Proměnné v PHP
  3. Konstruktor v PHP
  4. Úvod do PHP
  5. Přehled vzorů v JavaScriptu
  6. Příklady rekurzivní funkce PHP
  7. Číselné vzory v Javě Příklady s implementací kódu

Kategorie: