Introduksjon til mønstre i PHP

Hva er mønsterprogrammering i PHP? Det er en kunst å programmere å skrive ut et slags mønster på skjermen. Dette kan være en serie med tall, bokstaver eller spesialtegn for å danne et mønster. Det enkleste eksemplet på et mønster er Fibonacci-serien (1, 1, 2, 3, 5, 8, 13, 21, 34 og så videre). Så er det andre mønstre som er design på skjermen, sier en pyramide av stjerner. Så i utgangspunktet er mønsterprogrammering ganske enkelt å skrive ut et mønster på skjermen.

For denne artikkelen bruker vi PHP for å kode mønstrene. Ikke bekymre deg. Når du har fått tak i det, er det bare syntaks som varierer fra språk til språk. Logikken er alltid den samme.

Eksempler på mønster i PHP

  • Før vi hopper rett på programmene, la oss forstå den grunnleggende logikken i kodingsmønstre. Mønstre er alltid programmert gjennom nestede løkker - hovedsakelig nestet for løkker. Dette er fordi løkker er syntaktisk lettere å forstå og konsis.
  • Den ytre sløyfen er alltid opptatt av antall linjer. Så la oss si at hvis du må skrive ut et mønster som spenner over fem linjer, vil den ytre løkken alltid løpe fem ganger.
  • Den indre sløyfen er alltid opptatt av antall elementer i hver linje. Så la oss si at hvis du må trykke 1 stjerne på den første linjen, 2 stjerner på den andre linjen og så videre, vil den indre sløyfen kontrollere denne logikken.
  • Avhengig av mønster, er det noen ganger mer enn en indre løkker eller tre nivåer av nestede løkker. Det er også involvering av mellomrom og faner for å produsere ønsket mønster.

La oss prøve å kode mønstrene nå, med tanke på alt dette.

1. Star Half Pyramid.

Dette er det enkleste mønsteret å skrive ut. Den skriver ut det økende antall stjerner i påfølgende linjer. 1 stjerne i den første linjen, 2 stjerner i den andre linjen og så videre.

La oss kode dette mønsteret for fem linjer. Når vi holder logikken i bakhodet, vil vår ytre sløyfe løpe fem ganger. Siden antallet stjerner i hver linje er direkte avhengig av linjenummeret, vil vår indre sløyfe være en funksjon av kontrollvariabelen i vår ytre sløyfe. La oss se hvordan.

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

Og så videre. Slik styrer vi vår indre sløyfe basert på den ytre løkkens kontrollvariabel. La oss se programmet i aksjon nå.

Kode

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

Produksjon:

2. Star Half Pyramid– Mirrored.

Dette ligner Star Half Pyramid, bortsett fra at stjernene er rettlinjet.

For å oppnå riktig innrykk, ville vi bruke mellomrom og deretter trykke stjerner. Så det vil være to indre løkker - en for å kontrollere antall mellomrom og andre for å kontrollere antall stjerner.

Merk: Husk en ting på at antallet mellomrom i k-loop er dobbelt mellomrom. Dette fordi vi skriver ut et enkelt mellomrom sammen med stjernene også. Dette gir et ferdig utseende på mønsteret vårt i stedet for et overbelastet trykk. Dette vil vi bruke til å utnytte når vi trykker ut full pyramider.

Kode

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

Produksjon:

3. Star Half Pyramid - Invertert.

For dette pyramidemønsteret synker antall stjerner med hver nye linje. Den første linjen har 5 stjerner, den andre linjen har 4 stjerner og så videre.

Når vi har logikken i tankene, vet vi at den ytre sløyfen alltid må kontrollere antall linjer og den indre sløyfen må kontrollere antall stjerner. Denne logikken kan ikke endres. Selv om det som kan endres er hvordan vi starter løkkene, øker eller reduserer rekkefølgen. Dette betyr at vi enten kan sløyfe fra 0 til 5, eller vi kan sløyfe i synkende rekkefølge fra 5 til 0. Så for inverterte mønstre som dette, vet vi at antall stjerner er mer i den første linjen. Så vi velger å redusere bestillingsløkker.

Kode

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

Produksjon:

4. Star Half Pyramid - Inverted Mirrored.

Dette mønsteret er en innrykket omvendt halvpyramide. Antall stjerner synker med hver linje og stjerner er rettjustert.

Jeg tror nå du vil kunne gjette logikken for denne.

Kode

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

Produksjon:

5. Star Full Pyramid.

Dette mønsteret skriver ut hele pyramiden. Eller med andre ord, det skriver ut en trekant med stjerner på skjermen.

Dette mønsteret er egentlig en kombinasjon av Halvpyramide og speilet. Selv om det er en liten vri når vi koder det. Gå tilbake til notatet i Mirrored Half Pyramid. Husker du hvordan vi brukte dobbeltavstand for å gi et ferdig blikk på mønsteret vårt? Her vil vi bruke enkeltavstand slik at stjernene vekselvis er justert i oddetall og jevnt antall rader, noe som gir oss et sant trekantet mønster.

Kode

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

Produksjon:

6. Star Diamond.

Dette mønsteret skriver ut en komplett diamantform på skjermen. Antall stjerner øker til det maksimale er definert og deretter reduseres tilbake til 1, noe som gir oss en full diamantform.

For å skrive ut dette mønsteret, må vi dele opp mønsteret i to halvdeler. Den øvre halvdelen - som skriver ut det økende antall stjerner. Den nedre halvdelen - som skriver ut det reduserende antallet stjerner. For å trykke begge halvdelene, ville vi bruke to ytre løkker og tilsvarende indre løkker.

Kode

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

Produksjon:

7. Nummermønster.

For dette tallmønsteret vil vi skrive ut tallene i forhold til radnummeret. Dermed vil sifre 1 bli skrevet ut en gang, 2 to ganger, tre ganger og så videre.

Hvis du ville fulgt denne opplæringen linje for linje, må du nå ha forstått veldig godt arbeidet med nestede løkker for å skrive ut mønstre. Dette mønsteret følger også den samme logikken. I stedet for stjerner, skriver vi tall. Nå spør du hvordan får vi tallene? Svaret er ganske enkelt gjennom våre kontrollvariabler i og j.

Kode

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

Produksjon:

8. Karaktermønster.

I dette mønsteret vil vi skrive ut alfabetene ABCDE i et mønster. Fra og med A ville de påfølgende radene introdusere et nytt alfabet som er klemt inn mellom de forrige alfabetene.

Det eneste trikset i dette mønsteret er å få karakterene fra kontrollvariablene våre. Dette gjør vi ved å utnytte ASCII-verdien til karakterene. ASCII-verdien fra A til Å er 65 til 90 . Så vi beregner ASCII-verdien i hver iterasjon og skriver ut det tilsvarende tegnet. Funksjonen chr () i PHP brukes til å skrive ut et tegn fra ASCII-koden.

Kode

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

Produksjon:

Skriv ut for hele alfabeter, og mønsteret ser ganske kult ut.

9. Det binære timeglasset - bonusmønster.

Dette mønsteret er et dynamisk mønster som skriver ut timeglasset i forhold til tiden som er gått, men ikke en faktisk beregning. For eksempel, hvis det har gått en time, vil den skrive ut en linje med 0s i den øvre halvdelen og en linje på 1s i den nedre halvdelen.

Kode

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

Utgang: 1 time er gått.

Utgang: 2 timer har gått.

Utgang: 3 timer har gått.

Og så videre.

Konklusjon

Det er mye å leke med mønstre. Det handler om å ha kodelogikken i tankene. Når du først har forstått kodelogikken, er det ikke noe mønster du ikke kan skrive ut.

Anbefalte artikler

Dette har vært en guide til mønstre i PHP. Her har vi diskutert Oversikter og eksempler på mønster i PHP med koder og utdata. Du kan også gå gjennom artiklene våre for å lære mer-

  1. Hva er PHP?
  2. Variabler i PHP
  3. Konstruktør i PHP
  4. Introduksjon til PHP
  5. Oversikt over mønstre i JavaScript
  6. Eksempler på PHP rekursiv funksjon
  7. Tallmønstre i Java | Eksempler med implementering av kode