Bevezetés a mintákba a PHP-ben

Mi a mintaprogramozás a PHP-ben? A programozás művészete valamilyen minta nyomtatása a képernyőre. Ez lehet számok, betűk vagy speciális karakterek sorozata a mintázat kialakításához. A minták legegyszerűbb példája a Fibonacci sorozat (1, 1, 2, 3, 5, 8, 13, 21, 34 és így tovább). Akkor vannak más minták, amelyek a képernyőn megjelenő minták, mondjuk a csillagok piramisa. Tehát alapvetően a mintaprogramozás egyszerűen egy minta kinyomtatása a képernyőn.

A cikkhez PHP-t használunk a minták kódolására. De ne aggódj. Amint megkaptad, csak a szintaxis változik nyelvenként. A logika mindig ugyanaz.

Példák a mintára a PHP-ben

  • Mielőtt jobbra ugrnánk a programokra, tisztázzuk meg a kódolási minták alapvető logikáját. A mintákat mindig beágyazott hurkokon programozzák - többnyire a hurkokat beágyazzák. Ennek oka az, hogy a hurkok szintaktikailag könnyebben érthetők és tömörek.
  • A külső hurok mindig a sorok számát veszi figyelembe. Tegyük fel, hogy ha öt sort átfogó mintát kell kinyomtatnia, akkor a külső hurok mindig ötször fut.
  • A belső hurok mindig az egyes sorok elemszámát veszi figyelembe. Tegyük fel, hogy ha az első sorban 1 csillagot, a második sorban 2 csillagot kell nyomtatnia és így tovább, akkor a belső hurok irányítja ezt a logikát.
  • A mintától függően néha több belső hurok vagy három egymásba ágyazott hurok létezik. Szintén szóközök és fülek szerepelnek a kívánt minta előállításához.

Tehát, mindezt szem előtt tartva, próbáljuk meg most a mintákat kódolni.

1. Csillagos fél piramis.

Ez a legegyszerűbb minta a nyomtatáshoz. Kiírja a növekvő csillagszámot a következő sorokban. 1 csillag az első sorban, 2 csillag a második sorban és így tovább.

Kódoljuk ezt a mintát öt sorra. A logikát szem előtt tartva a külső hurok ötször fog futni. Mivel az egyes sorok csillagszáma közvetlenül függ a sorszámtól, belső hurokunk a külső hurok vezérlőváltozójának függvénye lesz. Lássuk, hogyan.

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

Stb. Így irányíthatjuk belső hurkot a külső hurok vezérlő változója alapján. Most nézzük meg a program működését.

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

Kimenet:

2. Csillagos fél piramis - tükrözve.

Ez hasonló a Csillagok fél piramisához, azzal a különbséggel, hogy a csillagok jobbra vannak igazítva.

A helyes behúzás eléréséhez szóközöket használunk, majd csillagokat nyomtatunk. Tehát két belső hurok lenne - az egyik a terek számának ellenőrzésére, a másik a csillagok számának ellenőrzésére.

Megjegyzés: Ne feledje, egy dolog, hogy a k-hurokban a szóközök kettős helyet foglalnak el. Ennek oka az, hogy egy-egy teret nyomtatunk a csillagokkal együtt. Ezzel a mintázatunk kifogástalan megjelenést ad, nem pedig túlterhelt nyomtatás. Ezt a tőkeáttételre fogjuk használni, amikor teljes piramisokat nyomtatunk.

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

Kimenet:

3. Csillagos fél piramis - fordított.

Ennél a piramismintázatnál a csillagok száma folyamatosan csökken minden új sorral. Az első sorban 5 csillag, a második sorban 4 csillag és így tovább.

A logikát szem előtt tartva tudjuk, hogy a külső huroknak mindig a sorok számát kell ellenőriznie, a belső huroknak pedig a csillagok számát. Ezt a logikát nem lehet megváltoztatni. Megváltoztathatjuk azonban azt, hogy hogyan kezdjük el a hurkokat, növekvő vagy csökkenő sorrendet. Ez azt jelenti, hogy 0-tól 5-ig hurkolhatunk, vagy pedig csökkenő sorrendben 5-től 0-ig hurkolhatunk. Tehát az ilyen inverz minták esetében tudjuk, hogy a csillagok száma nagyobb az első sorban. Tehát úgy döntünk, hogy csökkentjük a rendelési hurkokat.

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

Kimenet:

4. Csillagos fél piramis - fordított tükrözés.

Ez a minta egy behúzott fordított félpiramis. A csillagok száma minden sorral csökken, és a csillagok jobbra vannak igazítva.

Úgy gondolom, hogy mostanra képes lesz kitalálni ennek logikáját.

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

Kimenet:

5. Csillag teljes piramis.

Ez a minta kinyomtatja a teljes piramisot. Vagy más szavakkal: csillagok háromszöget nyomtat a képernyőn.

Ez a minta lényegében a Half piramis és a tükör kombinációja. Habár van kissé csavarodás, amikor kódoljuk. Vizsgálja meg újra a Jegyzet a tükrözött fél piramisban című részt. Ne feledje, hogy hogyan használtuk a kettős távolságot, hogy készen álljon a megjelenésünk a mintánkon? Egyetlen távolságot használunk, hogy a csillagok váltakozva legyenek páratlan és páros sorban, igaz valós háromszög alakúak.

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

Kimenet:

6. Csillag gyémánt.

Ez a minta egy teljes gyémánt alakot nyomtat a képernyőn. A csillagok száma meghaladja a meghatározott maximális értéket, majd vissza 1-re csökken, így teljes gyémánt alakúvá válik.

Ennek a mintának a kinyomtatásához a mintát két részre kell osztanunk. A felső rész - amely növekvő számú csillagot nyomtat. Alsó fele - amely a csökkenő csillagok számát nyomtatja ki. Mindkét fél nyomtatásához két külső hurkot és a megfelelő belső hurkot használunk.

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

Kimenet:

7. Számmintázat.

Ehhez a számmintához kinyomtatjuk a számokat a sor számához viszonyítva. Így az 1. számjegyet egyszer, 2-szer kétszer, háromszor háromszor és így tovább nyomtatják.

Ha soronként követte volna ezt az oktatóprogramot, akkor már nagyon jól meg kellett értenie a beágyazott hurkok minták nyomtatására való működését. Ez a minta ugyanazt a logikát követi. Csillagok helyett számokat nyomtatunk. Most azt kérdezed, hogyan szerezzük meg a számokat? A válasz egyszerűen az i és a j kontrollváltozón keresztül történik.

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

Kimenet:

8. Karaktermintázat.

Ebben a mintában az ABCDE ábécéket mintával nyomtatnánk. Az A-tól kezdve a következő sorok bevezetnének egy új ábécét, amely az előző ábécé között helyezkedik el.

Az egyetlen trükk ebben a mintában az, hogy a karaktereket beszerezzük a kontrollváltozóinkból. Ezt úgy végezzük, hogy kihasználjuk a karakterek ASCII értékét. Az AZ ASCII értéke 65–90 . Tehát kiszámoljuk az ASCII értéket minden iterációban és kinyomtatjuk a megfelelő karaktert. A PHP-ben a chr () függvény karakter kinyomtatására szolgál az ASCII kódból.

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

Kimenet:

Nyomtasson teljes ábécét, és a minta nagyon hűvösnek tűnik.

9. A bináris homokóra - bónuszminta.

Ez a minta egy dinamikus minta, amely a homokóra kinyomtatja az eltelt idő függvényében, nem pedig tényleges számítás. Például, ha egy óra telt el, akkor egy 0-soros sort nyomtat a felső felében és egy 1-es sort az alsó felében.

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

Teljesítés: 1 óra telt el.

Teljesítés: 2 óra telt el.

Teljesítés: 3 óra telt el.

Stb.

Következtetés

Sokat kell játszani a mintákkal. Arról szól, hogy szem előtt tartsák a kódlogikát. Miután teljesen megértette a kódlogikát, nincs olyan minta, amelyet nem tudna kinyomtatni.

Ajánlott cikkek

Ez a PHP mintáinak útmutatója. Itt tárgyaltuk a PHP áttekintéseit és példáit a kódokkal és a kimenetekkel. Megnézheti az adott cikkeket is, hogy többet megtudjon-

  1. Mi a PHP?
  2. Változók a PHP-ben
  3. Konstruktor a PHP-ben
  4. Bevezetés a PHP-be
  5. A minták áttekintése a JavaScript-ben
  6. Példák a PHP rekurzív funkcióra
  7. Számminták Java-ban Példák a kód megvalósítására

Kategória: