Uvod v vzorce v PHP

Kaj je programiranje vzorcev v PHP? Umetnost programiranja je tiskanje nekakšnega vzorca na zaslon. To so lahko številke, črke ali posebni znaki, ki tvorijo vzorec. Najenostavnejši primer vzorca je serija Fibonaccije (1, 1, 2, 3, 5, 8, 13, 21, 34 in tako naprej). Potem so tu še drugi vzorci, ki so zasloni na zaslonu, recimo piramida zvezd. Torej, v osnovi je programiranje vzorcev preprosto tiskanje vzorca na zaslon.

V tem članku bi uporabili PHP za kodiranje vzorcev. Vseeno ne skrbite. Ko se odkrijete, se od besede do jezika razlikuje samo sintaksa. Logika je vedno ista.

Primeri vzorca v PHP

  • Preden skoknemo desno na programe, nam predstavimo osnovno logiko kodiranja vzorcev. Vzorci so vedno programirani skozi ugnezdene zanke - večinoma so ugnezdene za zanke. To je zato, ker so zanke sintaktično lažje razumeti in jedrnate.
  • Zunanja zanka se vedno ukvarja s številom vrstic. Recimo, če morate natisniti vzorec, ki obsega pet vrstic, bo zunanja zanka vedno potekala petkrat.
  • Notranja zanka se vedno ukvarja s številom elementov v vsaki vrstici. Recimo, če morate tiskati 1 zvezdo v prvi vrstici, 2 zvezdice v drugi vrstici in tako naprej, bi notranja zanka nadzirala to logiko.
  • Odvisno od vzorca je včasih več notranjih zank ali tri stopnje ugnezdenih zank. Obstaja tudi vključitev presledkov in zavihkov za izdelavo želenega vzorca.

Torej, upoštevajoč vse to, poskušajmo zdaj kodirati vzorce.

1. Polovna piramida zvezd.

To je najpreprostejši vzorec za tiskanje. V naslednjih vrsticah natisne vse večje število zvezd. 1 zvezda v prvi vrstici, 2 zvezda v drugi vrstici in tako naprej.

Kodeksirajmo ta vzorec za pet vrstic. Upoštevajoč logiko bo naša zunanja zanka delovala petkrat. Ker je število zvezd v vsaki vrstici neposredno odvisno od številke vrstice, bo naša notranja zanka funkcija krmilne spremenljivke v naši zunanji zanki. Poglejmo, kako.

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

In tako naprej. Tako upravljamo svojo notranjo zanko na podlagi spremenljivke za nadzor zunanjih zank. Program si oglejmo v akciji.

Koda

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

Izhod:

2. Zvezdna polovična piramida - zrcalna.

To je podobno piramidi Star Half, le da so zvezde desno poravnane.

Za dosego pravega vdolbine bi uporabili presledke in nato natisnili zvezde. Torej, obstajata dve notranji zanki - ena za nadzor števila presledkov in druga za nadzor števila zvezd.

Opomba: Ne pozabite, da je število presledkov v k-zanki dvojni presledek. To je zato, ker tiskamo tudi en sam prostor z zvezdami. Tako dobimo dokončen videz našega vzorca, ne pa prenatrpanega tiska. To bomo uporabili v svojem vzvodu, ko bomo natisnili polne piramide.

Koda

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

Izhod:

3. Zvezdna polovična piramida - obrnjena.

V tem piramidnem vzorcu se število zvezd z vsako novo vrstico zmanjšuje. Prva vrstica ima 5 zvezdic, druga vrstica 4 zvezdice in tako naprej.

Upoštevajoč logiko vemo, da mora zunanja zanka vedno nadzorovati število črt, notranja zanka pa mora nadzorovati število zvezd. Te logike ni mogoče spremeniti. Čeprav lahko spremenimo, kako začnemo zanke, povečujemo ali zmanjšujemo vrstni red. To pomeni, da lahko zanke od 0 do 5 ali zanke v padajočem vrstnem redu od 5 do 0. Torej, za obrnjene vzorce, kot je ta, vemo, da je v prvi vrstici več zvezd. Torej, se odločimo za zmanjšanje zank naročil.

Koda

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

Izhod:

4. Star Half Pyramid - obrnjeno zrcalo.

Ta vzorec je razčlenjena obrnjena pol piramida. Število zvezd se zmanjšuje z vsako črto in zvezde so poravnane v desno.

Verjamem, da bi doslej že lahko ugibali logiko tega.

Koda

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

Izhod:

5. Zvezdna polna piramida.

Ta vzorec natisne polno piramido. Ali z drugimi besedami, na zaslon natisne trikotnik zvezd.

Ta vzorec je v bistvu kombinacija napol piramide in njenega ogledala. Čeprav se pri kodiranju rahlo zasuka. Ponovno obiščite opombo v zrcaljeni polovici piramide. Se spomnite, kako smo uporabili dvojni razmik, da smo svojemu vzorcu dodelili dokončen videz? Tu bi uporabili enojne razmike, tako da so zvezde izmenično poravnane v liho in sodo število vrstic, kar nam daje pravi trikotni vzorec.

Koda

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

Izhod:

6. Star Diamond.

Ta vzorec natisne popolno obliko diamanta na zaslonu. Število zvezd narašča, dokler se maksimalno ne definira, nato pa se zmanjša na 1, kar nam da popolno obliko diamanta.

Za tisk tega vzorca bi morali vzorec razdeliti na dve polovici. Zgornja polovica - ki natisne vse večje število zvezd. Spodnja polovica - ki natisne padajoče število zvezd. Za tiskanje obeh polovic bi uporabili dve zunanji zanki in ustrezni notranji zanki.

Koda

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

Izhod:

7. Številčni vzorec.

Za ta vzorec števil bomo natisnili številke glede na številko vrstice. Tako bi bila številka 1 natisnjena enkrat, 2 dvakrat, trikrat in tako naprej.

Če bi sledili tej vadbi po vrstici, bi morali do zdaj že zelo dobro razumeti delovanje ugnezdenih zank za tiskanje vzorcev. Tudi ta vzorec sledi isti logiki. Namesto zvezd tiskamo številke. Zdaj vprašate, kako dobimo številke? Odgovor je - preprosto s pomočjo naših krmilnih spremenljivk i in j.

Koda

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

Izhod:

8. Vzorec likov.

V tem vzorcu bi v vzorcu natisnili abecede ABCDE. Začenši z A, bi naslednje vrstice uvedle novo abecedo, zaseženo med prejšnjimi abecedami.

Edini trik v tem vzorcu je pridobivanje znakov iz naših nadzornih spremenljivk. To storimo tako, da uporabimo vrednost ASCII znakov. Vrednost ASCII od A do Z je 65 do 90 . Torej, v vsaki ponovitvi izračunamo vrednost ASCII in natisnemo ustrezen znak. Funkcija chr () v PHP se uporablja za tiskanje znaka iz ASCII kode.

Koda

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

Izhod:

Natisnite za polne abecede in vzorec je videti precej kul.

9. Vzorec binarnega peščenjaka - bonus.

Ta vzorec je dinamičen vzorec, ki natisne peščene ure glede na pretečeni čas, vendar ne dejanski izračun. Na primer, če preteče ena ura, bo natisnila eno vrstico 0 v zgornji polovici in eno vrstico 1s v spodnji polovici.

Koda

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

Rezultat: potekla je 1 ura.

Rezultat: pretekla sta 2 uri.

Izhod: 3 ure so minile.

In tako naprej.

Zaključek

Z vzorci se je veliko igrati. Vse v tem, da upoštevate logiko kode. Ko popolnoma razumete logiko kode, ni nobenega vzorca, ki ga ne morete natisniti.

Priporočeni članki

To je vodnik za vzorce v PHP. Tu smo razpravljali o pregledih in primerih vzorca v PHP s kodami in izhodom. Obiščite lahko tudi naše članke, če želite izvedeti več -

  1. Kaj je PHP?
  2. Spremenljivke v PHP
  3. Konstruktor v PHP
  4. Uvod v PHP
  5. Pregled vzorcev v JavaScript
  6. Primeri rekurzivne funkcije PHP
  7. Številčni vzorci na Javi | Primeri izvajanja kode