Sissejuhatus PHP mustritesse

Mis on mustri programmeerimine PHP-s? Mingi mustri ekraanile printimine on programmeerimise kunst. See võib olla numbrite, tähtede või erisümbolite seeria mustri moodustamiseks. Mustri lihtsaim näide on Fibonacci seeria (1, 1, 2, 3, 5, 8, 13, 21, 34 ja nii edasi). Siis on ekraanil ka teisi mustreid, näiteks tähtede püramiid. Nii et põhimõtteliselt on mustri programmeerimine lihtsalt mustri printimine ekraanile.

Selle artikli jaoks kasutaksime mustrite kodeerimiseks PHP-d. Ärge siiski muretsege. Kui olete selle üles riputanud, on see lihtsalt süntaks, mis erineb keelest. Loogika on alati sama.

Näited mustrist PHP-s

  • Enne programmidele paremale hüppamist mõelgem kodeerimismustrite põhiloogikast. Mustrid programmeeritakse alati pesastatud silmuste kaudu - enamasti pesastatakse silmuste jaoks. Selle põhjuseks on see, et silmuseid on süntaktiliselt hõlpsamini mõista ja kokku võtta.
  • Väline silmus on alati seotud ridade arvuga. Ütleme nii, et kui peate printima viit rida hõlmavat mustrit, töötab välimine silmus alati viis korda.
  • Sisemine silmus on alati seotud elementide arvuga igas reas. Ütleme nii, et kui teil on vaja printida 1 täht esimesele reale, 2 tähte teisele reale ja nii edasi, siis kontrollib sisemine silmus seda loogikat.
  • Sõltuvalt mustrist on mõnikord rohkem kui üks sisemine silmus või kolm pesastatud silmuse taset. Samuti on soovitud mustri saamiseks tühikute ja vahelehtede kaasamine.

Proovime nüüd seda kõike meeles pidades mustrid kodeerida.

1. Tähepoolne püramiid.

See on kõige lihtsam prinditav muster. See prindib järjest kasvavate tähtede arvu järgmistel ridadel. 1 täht esimesel real, 2 tärni teisel real ja nii edasi.

Kodeerime selle mustri viieks reaks. Loogikat silmas pidades töötab meie välimine silmus viis korda. Kuna igas reas olevate tähtede arv sõltub otseselt rea numbrist, on meie sisemine silmus meie välise silmuse juhtmuutuja funktsioon. Vaatame kuidas.

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

Ja nii edasi. Nii juhime välimiste silmuste juhtmuutujal põhinevat sisemist silmust. Vaatame programmi nüüd tegevuses.

Kood

<_?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äljund:

2. Tähepoolne püramiid - peegelpildis.

See sarnaneb tähtede poole püramiidiga, välja arvatud see, et tähed on joondatud paremale.

Õige taande saavutamiseks kasutaksime tühikuid ja trükiksime siis tähti. Seega oleks kaks sisemist silmust - üks ruumide arvu kontrollimiseks ja teine ​​tähtede arvu kontrollimiseks.

Märkus: pidage meeles ühte asja, et k-silmuse tühikute arv on kahekordne. Selle põhjuseks on see, et trükime ühe tähe koos tähtedega. See annab meie mustrile lõpliku väljanägemise, mitte ülekoormatud trükise. Me kasutame seda oma võimenduseks täispüramiidide printimisel.

Kood

<_?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äljund:

3. Tähepoolne püramiid - ümberpööratud.

Selle püramiidskeemi korral väheneb tähtede arv iga uue joonega. Esimesel real on 5 tähte, teisel real 4 tähte ja nii edasi.

Loogikat silmas pidades teame, et välimine silmus peab alati kontrollima ridade arvu ja sisemine silmus peab kontrollima tähtede arvu. Seda loogikat ei saa muuta. Kuid muuta saab seda, kuidas me silmuseid alustame, järjekorda suurendades või vähendades. See tähendab, et võime silmuseid muuta vahemikus 0 kuni 5 või kahandada kahanevas järjekorras vahemikus 5 kuni 0. Niisiis, selliste ümberpööratud mustrite puhul, nagu see on, teame, et tähtede arv on rohkem esimesel real. Niisiis, valime tellimissilmuste vähendamise.

Kood

<_?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äljund:

4. Tähepoolne püramiid - tagurpidi pööratud.

See muster on sissepööratud ümberpööratud poolpüramiid. Tähtede arv väheneb iga reaga ja tähed on joondatud paremale.

Usun, et praeguseks suudaksite selle loogika ära arvata.

Kood

<_?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äljund:

5. Tähe täielik püramiid.

See muster prindib terve püramiidi. Teisisõnu, see prindib ekraanile tähtede kolmnurga.

See muster on sisuliselt Half-püramiidi ja selle peegli kombinatsioon. Kuigi me seda kodeerime, on kerge keerdus. Vaadake uuesti Peegeldatud poolpüramiidi märkust. Pidage meeles, kuidas me kasutasime topeltvahega mustrit lõpliku ilme saamiseks? Siin kasutaksime üksikute vahedega, nii et tähed oleksid vaheldumisi paaritu ja paarisarvuga read, mis annaksid meile tõelise kolmnurkse mustri.

Kood

<_?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äljund:

6. Tähtteemant.

See muster prindib ekraanile täieliku rombikuju. Tähtede arv suureneb kuni maksimaalse piirini ja väheneb seejärel tagasi 1-ni, andes meile täieliku rombikuju.

Selle mustri printimiseks peaksime mustri jagama kaheks pooleks. Ülemine pool - mis prindib kasvavat tähtede arvu. Alumine pool - mis tähistab vähenevat tähtede arvu. Mõlema poole printimiseks kasutaksime kahte välimist silmust ja vastavaid sisemisi silmuseid.

Kood

<_?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äljund:

7. Numbrimuster.

Selle numbrimustri jaoks prindime numbrid rea numbri suhtes. Seega trükitakse number 1 üks kord, kaks korda kaks korda, kolm korda kolm korda ja nii edasi.

Kui oleksite järginud seda õpetust ridahaaval, peate nüüdseks olema juba väga hästi aru saanud pesasilmuste toimimisest mustrite printimisel. Ka see muster järgib sama loogikat. Tärnide asemel trükime numbreid. Nüüd küsite, kuidas me numbreid saame? Vastus on lihtsalt meie juhtmuutujate i ja j kaudu.

Kood

<_?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äljund:

8. Tegelaskuju.

Selle mustri järgi trükiksime tähestiku ABCDE mustriks. Alustades tähega A, tutvustavad järgmised read uut tähestikku, mis on asetatud eelmiste tähestike vahele.

Ainus trikk selles mustris on märkide saamine meie juhtmuutujatelt. Selleks kasutame tähemärkide ASCII väärtust. ASCII väärtus vahemikus A kuni Z on 65 kuni 90 . Niisiis, arvutame igas iteratsioonis ASCII väärtuse ja prindime vastava märgi. Funktsiooni chr () PHP-s kasutatakse märkide printimiseks ASCII-koodist.

Kood

<_?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äljund:

Printige täielike tähestike järgi ja muster näeb välja üsna lahe.

9. Binaarne liivaklass - boonusmuster.

See muster on dünaamiline muster, mis prindib liivakella kulunud aja suhtes, kuid pole tegelik arvutus. Näiteks kui tund on möödunud, prindib see ühe 0-rea rea ​​ülemises pooles ja ühe 1-rea rea ​​alumises osas.

Kood

<_?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äljund: 1 tund on möödunud.

Väljund: 2 tundi on möödunud.

Väljund: 3 tundi on möödunud.

Ja nii edasi.

Järeldus

Mustritega on palju mängida. See kõik seisneb koodiloogika meeles pidamises. Kui olete koodiloogikast täielikult aru saanud, pole ühtegi mustrit, mida te ei saaks printida.

Soovitatavad artiklid

See on PHP-s mustrite juhend. Siin on arutatud PHP koodide ja väljundite ülevaateid ja näiteid. Lisateavet leiate ka meie antud artiklitest -

  1. Mis on PHP?
  2. Muutujad PHP-s
  3. Konstruktor PHP-s
  4. Sissejuhatus PHP-sse
  5. Ülevaade mustritest JavaScriptis
  6. Näited PHP rekursiivsest funktsioonist
  7. Numbrimustrid Java | Näited koodi rakendamisest

Kategooria: