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
<_?phpfunction 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
<_?phpfunction 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
<_?phpfunction 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
<_?phpfunction 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
<_?phpfunction 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
<_?phpfunction 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
<_?phpfunction 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 A – Z 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
<_?phpfunction 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
<_?phpfunction 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-
- Mi a PHP?
- Változók a PHP-ben
- Konstruktor a PHP-ben
- Bevezetés a PHP-be
- A minták áttekintése a JavaScript-ben
- Példák a PHP rekurzív funkcióra
- Számminták Java-ban Példák a kód megvalósítására