Úvod do vzorov v PHP

Čo je programovanie vzorov v PHP? Umením programovania je tlačiť na obrazovku nejaký vzor. Môže to byť séria čísiel, písmen alebo špeciálnych znakov na vytvorenie vzoru. Najjednoduchším príkladom vzoru je Fibonacciho séria (1, 1, 2, 3, 5, 8, 13, 21, 34 atď.). Potom sú na obrazovke ďalšie vzory, napríklad pyramída hviezd. V podstate teda programovanie vzorov jednoducho tlačí vzor na obrazovku.

V tomto článku by sme na kódovanie vzorov používali PHP. Nerobte si starosti. Akonáhle sa dostanete na kĺb, je to len syntax, ktorá sa líši od jazyka k jazyku. Logika je vždy rovnaká.

Príklady vzoru v PHP

  • Predtým, ako skočíme priamo na programy, pochopme základnú logiku kódovacích vzorov. Vzory sú vždy programované prostredníctvom vnorených slučiek - väčšinou vnorených pre slučky. Dôvodom je to, že slučky sú syntakticky ľahšie pochopiteľné a stručné.
  • Vonkajšia slučka sa vždy týka počtu riadkov. Povedzme teda, že ak chcete vytlačiť vzor s rozmiestnením piatich riadkov, vonkajšia slučka bude vždy päťkrát spustená.
  • Vnútorná slučka sa vždy týka počtu prvkov v každom riadku. Povedzme, že ak musíte tlačiť 1 hviezdičku v prvom riadku, 2 hviezdičky v druhom riadku a tak ďalej, túto logiku bude riadiť vnútorná slučka.
  • V závislosti od vzoru niekedy existuje viac ako jedna vnútorná slučka alebo tri úrovne vnorených slučiek. K dispozícii je tiež zapojenie medzier a plôch na vytvorenie požadovaného vzoru.

Majte na pamäti toto a skúste kódovať vzorce teraz.

1. Hviezda Half Pyramid.

Toto je najjednoduchší vzor na tlač. Vytlačí rastúci počet hviezd v nasledujúcich riadkoch. 1 hviezdička v prvom riadku, 2 hviezdičky v druhom riadku atď.

Kódujme tento vzorec pre päť riadkov. Vzhľadom na logiku bude naša vonkajšia slučka bežať päťkrát. Pretože počet hviezd v každom riadku je priamo závislý od čísla riadku, naša vnútorná slučka bude funkciou riadiacej premennej v našej vonkajšej slučke. Pozrime sa ako.

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 ďalej. Takto riadime našu vnútornú slučku na základe riadiacej premennej vonkajších slučiek. Pozrime sa na program teraz.

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ýkon:

2. Star Half Pyramid - Mirrored.

Je to podobné hviezdnej pyramíde s tým rozdielom, že hviezdy sú zarovnané doprava.

Na dosiahnutie správneho odsadenia by sme použili medzery a potom vytlačili hviezdy. Takže by existovali dve vnútorné slučky - jedna na kontrolu počtu priestorov a druhá na kontrolu počtu hviezd.

Poznámka: Nezabudnite, že počet medzier v k-slučke je dvojnásobok. Je to preto, že spolu s hviezdami tlačíme aj jedno miesto. Toto dáva nášmu vzoru hotový vzhľad a nie preťaženú tlač. Použijeme to na náš vplyv, keď tlačíme celé pyramídy.

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ýkon:

3. Hviezdová polovica pyramídy - obrátená.

Pre tento vzor pyramídy počet hviezd klesá s každou novou čiarou. Prvý riadok má 5 hviezdičiek, druhý riadok má 4 hviezdičky atď.

Pri zachovaní logiky vieme, že vonkajšia slučka musí vždy kontrolovať počet riadkov a vnútorná slučka musí kontrolovať počet hviezd. Túto logiku nie je možné zmeniť. Čo však možno zmeniť, je to, ako spustíme slučky, zvyšujúce sa alebo klesajúce poradie. To znamená, že môžeme slučky od 0 do 5 alebo slučky v klesajúcom poradí od 5 do 0. Takže pre obrátené vzory, ako je tento, vieme, že počet hviezd je viac v prvom riadku. Preto sme sa rozhodli znížiť poradie slučiek.

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ýkon:

4. Star Half Pyramid - Inverted Mirrored.

Tento obrazec je odsadená obrátená pol pyramída. Počet hviezd klesá s každou čiarou a hviezdy sú zarovnané doprava.

Verím, že by ste teraz dokázali uhádnuť logiku tejto logiky.

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ýkon:

5. Hviezda plná pyramída.

Tento vzor tlačí celú pyramídu. Inými slovami, na obrazovku sa vytlačí trojuholník hviezd.

Tento vzorec je v podstate kombináciou pol pyramídy a jej zrkadla. Aj keď existuje mierne zvrat, keď sme kód. Opätovné použitie poznámky v zrkadlovej polovičnej pyramíde. Pamätáte si, ako sme použili dvojité riadkovanie, aby sme nášmu vzoru dodali dokonalý vzhľad? Tu by sme použili jednoduché medzery, aby boli hviezdy striedavo zarovnané v nepárnych a párnych radoch, čo nám poskytne pravouhlý trojuholní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ýkon:

6. Hviezda Diamond.

Tento vzor tlačí na obrazovku kompletný kosoštvorcový tvar. Počet hviezd sa zvyšuje, až kým nie je definované maximum, a potom klesá späť na 1, čo nám dáva plný kosoštvorcový tvar.

Na vytlačenie tohto vzoru by sme mali vzor rozdeliť na dve polovice. Horná polovica - ktorá tlačí rastúci počet hviezd. Spodná polovica - ktorá tlačí klesajúci počet hviezd. Na tlač oboch polovíc by sme použili dve vonkajšie slučky a zodpovedajúce vnútorné sluč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ýkon:

7. Vzorec čísel.

Pre tento vzorec čísel vytlačíme vo vzťahu k číslu riadku. Takto by sa číslica 1 tlačila raz, dvakrát, trikrát a tak ďalej.

Ak by ste sa riadili touto inštruktážou riadok po riadku, musíte teraz dobre rozumieť fungovaniu vnorených slučiek na tlačenie vzorov. Táto schéma tiež sleduje rovnakú logiku. Namiesto hviezd tlačíme čísla. Teraz sa pýtate, ako získame čísla? Odpoveď je jednoducho prostredníctvom našich ovládacích premenný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ýkon:

8. Znakový vzor.

V tomto vzore by sme tlačili abecedy ABCDE vo vzore. Počnúc písmenom A by nasledujúce riadky zaviedli novú abecedu vloženú medzi predchádzajúce abecedy.

Jediným trikom v tomto vzore je získať postavy z našich kontrolných premenných. Robíme to využívaním hodnoty ASCII znakov. Hodnota ASCII od A do Z je 6590 . Vypočítame teda hodnotu ASCII v každej iterácii a vytlačíme zodpovedajúci znak. Funkcia chr () v PHP sa používa na tlač znakov 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ýkon:

Tlačte pre plné abecedy a vzor vyzerá celkom dobre.

9. Binárne hodiny - bonusový vzor.

Tento vzor je dynamický vzor, ​​ktorý tlačí presýpacie hodiny vzhľadom na uplynutý čas, nie je to však skutočný výpočet. Napríklad, ak uplynula jedna hodina, vytlačí sa jeden riadok 0 s v hornej polovici a jeden riadok 1 s v dolnej polovici.

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: Uplynuli 2 hodiny.

Výstup: Uplynuli 3 hodiny.

A tak ďalej.

záver

So vzormi je veľa vecí na hranie. Je to všetko o zachovaní logiky kódu. Po úplnom pochopení kódovej logiky neexistuje vzor, ​​ktorý nemôžete tlačiť.

Odporúčané články

Toto bola príručka pre vzory v PHP. Tu sme diskutovali o prehľadoch a príkladoch vzoru v PHP s kódmi a výstupmi. Ak sa chcete dozvedieť viac, môžete si tiež prečítať naše dané články.

  1. Čo je to PHP?
  2. Premenné v PHP
  3. Konštruktor v PHP
  4. Úvod do PHP
  5. Prehľad vzorov v JavaScripte
  6. Príklady rekurzívnej funkcie PHP
  7. Číselné vzory v Jave Príklady implementácie kódu

Kategórie: