Inleiding tot patronen in PHP

Wat is patroonprogrammering in PHP? Het is een kunst om te programmeren om een ​​soort patroon op het scherm af te drukken. Dit kan een reeks cijfers, letters of speciale tekens zijn om een ​​patroon te vormen. Het eenvoudigste voorbeeld van een patroon is de Fibonacci-serie (1, 1, 2, 3, 5, 8, 13, 21, 34 enzovoort). Dan zijn er andere patronen die ontwerpen op het scherm zijn, bijvoorbeeld een piramide van sterren. Patroonprogrammering is dus eigenlijk gewoon een patroon op het scherm afdrukken.

Voor dit artikel zouden we PHP gebruiken om de patronen te coderen. Maak je echter geen zorgen. Als je het eenmaal onder de knie hebt, is het gewoon de syntax die varieert van taal tot taal. De logica is altijd hetzelfde.

Voorbeelden van patronen in PHP

  • Voordat we direct op de programma's springen, moeten we de basislogica van coderingspatronen begrijpen. Patronen worden altijd geprogrammeerd via geneste lussen - meestal genest voor lussen. Dit komt omdat lussen syntactisch gemakkelijker te begrijpen en beknopt zijn.
  • De buitenste lus heeft altijd betrekking op het aantal lijnen. Laten we zeggen dat als u een patroon moet afdrukken dat vijf lijnen beslaat, de buitenste lus altijd vijf keer loopt.
  • De binnenste lus heeft altijd betrekking op het aantal elementen in elke lijn. Dus laten we zeggen dat als je 1 ster op de eerste regel moet afdrukken, 2 sterren op de tweede regel enzovoort, de binnenste lus deze logica zou besturen.
  • Afhankelijk van het patroon zijn er soms meer dan één binnenlussen of drie niveaus van geneste lussen. Ook is er de betrokkenheid van spaties en tabbladen om het gewenste patroon te produceren.

Laten we dit allemaal in gedachten houden en nu proberen de patronen te coderen.

1. Star Half Pyramid.

Dit is het eenvoudigste patroon om af te drukken. Het drukt het toenemende aantal sterren in opeenvolgende lijnen af. 1 ster op de eerste regel, 2 sterren op de tweede regel enzovoort.

Laten we dit patroon coderen voor vijf regels. Met de logica in gedachten, loopt onze buitenlus vijf keer. Omdat het aantal sterren in elke regel direct afhankelijk is van het regelnummer, is onze binnenlus een functie van de besturingsvariabele in onze buitenlus. Laten we eens kijken hoe.

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

Enzovoorts. Dit is hoe we onze binnenste lus besturen op basis van de regelvariabele van de buitenste lussen. Laten we het programma nu in actie zien.

Code

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

Output:

2. Star Half Pyramid - gespiegeld.

Dit is vergelijkbaar met de Star Half Pyramid, behalve dat de sterren rechts zijn uitgelijnd.

Om de juiste inspringing te bereiken, zouden we spaties gebruiken en vervolgens sterren afdrukken. Er zouden dus twee binnenlussen zijn - een om het aantal spaties te regelen en andere om het aantal sterren te regelen.

Opmerking: Houd één ding in gedachten dat het aantal spaties in de k-lus een dubbele spatie is. Dit komt omdat we samen met de sterren ook een spatie afdrukken. Dit geeft een afgewerkt uiterlijk aan ons patroon in plaats van een verstopte afdruk. We zullen dit gebruiken om onze invloed uit te oefenen wanneer we volledige piramides afdrukken.

Code

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

Output:

3. Star Half Pyramid - Omgekeerd.

Voor dit piramide-patroon blijft het aantal sterren met elke nieuwe lijn afnemen. De eerste lijn heeft 5 sterren, de tweede lijn heeft 4 sterren enzovoort.

Met de logica in gedachten, weten we dat de buitenste lus altijd het aantal lijnen moet regelen en de binnenste lus het aantal sterren moet regelen. Deze logica kan niet worden gewijzigd. Hoewel, wat kan worden gewijzigd, is hoe we de lussen starten, de volgorde verhogen of verlagen. Dit betekent dat we kunnen lussen van 0 tot 5 of we kunnen lussen in afnemende volgorde van 5 tot 0. Dus, voor omgekeerde patronen zoals deze, weten we dat het aantal sterren meer op de eerste regel staat. Dus kiezen we ervoor om orderlussen te verminderen.

Code

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

Output:

4. Star Half Pyramid - Omgekeerd gespiegeld.

Dit patroon is een ingesprongen halve piramide. Het aantal sterren neemt af met elke lijn en sterren zijn rechts uitgelijnd.

Ik geloof dat je nu de logica voor deze zou kunnen raden.

Code

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

Output:

5. Sterren volle piramide.

Dit patroon drukt de volledige piramide af. Of met andere woorden, het drukt een driehoek van sterren op het scherm af.

Dit patroon is in wezen een combinatie van Halve piramide en zijn spiegel. Hoewel er een kleine wending is wanneer we het coderen. Bekijk de notitie in Mirrored Half Pyramid opnieuw. Weet je nog, hoe we dubbele spatiëring hebben gebruikt om ons patroon een afgewerkt uiterlijk te geven? Hier zouden we enkele afstand gebruiken, zodat de sterren afwisselend in oneven en even aantal rijen worden uitgelijnd, waardoor we een echt driehoekig patroon krijgen.

Code

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

Output:

6. Star Diamond.

Dit patroon drukt een complete ruitvorm af op het scherm. Het aantal sterren neemt toe tot het gedefinieerde maximum en neemt vervolgens terug tot 1, waardoor we een volledige ruitvorm krijgen.

Om dit patroon af te drukken, moeten we het patroon in twee helften verdelen. De bovenste helft - die het toenemende aantal sterren afdrukt. De onderste helft - die het afnemende aantal sterren afdrukt. Om beide helften af ​​te drukken, zouden we twee buitenste lussen en bijbehorende binnenste lussen gebruiken.

Code

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

Output:

7. Nummerpatroon.

Voor dit nummerpatroon zullen we de nummers afdrukken in relatie tot het rijnummer. Zo zou cijfer 1 één keer worden afgedrukt, twee keer twee, drie keer drie enzovoort.

Als u deze zelfstudie regel voor regel had gevolgd, moet u inmiddels de werking van geneste lussen voor het afdrukken van patronen goed hebben begrepen. Dit patroon volgt ook dezelfde logica. In plaats van sterren drukken we nummers af. Nu vraag je hoe krijgen we de cijfers? Het antwoord is eenvoudig via onze besturingsvariabelen i en j.

Code

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

Output:

8. Karakterpatroon.

In dit patroon zouden we de alfabetten ABCDE in een patroon afdrukken. Beginnend met A, zouden de volgende rijen een nieuw alfabet introduceren dat is ingeklemd tussen de vorige alfabetten.

De enige truc in dit patroon is om de tekens uit onze controlevariabelen te halen. We doen dit door gebruik te maken van de ASCII-waarde van de tekens. De ASCII-waarde van A tot Z is 65 tot 90 . Dus berekenen we de ASCII-waarde in elke iteratie en drukken het bijbehorende teken af. De functie chr () in PHP wordt gebruikt om een ​​teken uit de ASCII-code af te drukken.

Code

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

Output:

Druk af voor volledige alfabetten en het patroon ziet er vrij cool uit.

9. Het binaire zandloper - bonuspatroon.

Dit patroon is een dynamisch patroon dat de zandloper afdrukt in verhouding tot de verstreken tijd, maar geen echte berekening. Als bijvoorbeeld een uur is verstreken, wordt er één regel 0s in de bovenste helft en één regel 1s in de onderste helft afgedrukt.

Code

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

Uitgang: 1 uur is verstreken.

Uitgang: 2 uur zijn verstreken.

Uitgang: 3 uur zijn verstreken.

Enzovoorts.

Conclusie

Er is veel te spelen met patronen. Het draait allemaal om de codelogica in gedachten te houden. Zodra u de codelogica volledig begrijpt, is er geen patroon dat u niet meer kunt afdrukken.

Aanbevolen artikelen

Dit is een gids voor patronen in PHP geweest. Hier hebben we overzichten en voorbeelden van patronen in PHP met codes en uitvoer besproken. U kunt ook door onze gegeven artikelen gaan voor meer informatie-

  1. Wat is PHP?
  2. Variabelen in PHP
  3. Constructor in PHP
  4. Introductie tot PHP
  5. Overzicht van patronen in JavaScript
  6. Voorbeelden van PHP recursieve functie
  7. Nummerpatronen in Java | Voorbeelden met code-implementatie