Introduktion til mønstre i PHP

Hvad er mønsterprogrammering i PHP? Det er en kunst at programmere at udskrive en slags mønster på skærmen. Dette kan være en række tal, bogstaver eller specialtegn til at danne et mønster. Det enkleste eksempel på et mønster er Fibonacci-serien (1, 1, 2, 3, 5, 8, 13, 21, 34 og så videre). Så er der andre mønstre, der er design på skærmen, siger en pyramide af stjerner. Så grundlæggende er mønsterprogrammering blot at udskrive et mønster på skærmen.

I denne artikel bruger vi PHP til at kode mønstre. Men rolig. Når du først har fået fat i det, er det bare den syntaks, der varierer fra sprog til sprog. Logikken er altid den samme.

Eksempler på mønster i PHP

  • Inden du hopper til højre på programmerne, lad os forstå den grundlæggende logik for kodningsmønstre. Mønstre er altid programmeret gennem indlejrede sløjfer - hovedsageligt indlejret til sløjfer. Dette skyldes, at sløjfer er syntaktisk lettere at forstå og kortfattet.
  • Den ydre sløjfe vedrører altid antallet af linjer. Så lad os sige, hvis du skal udskrive et mønster, der spænder over fem linjer, kører den ydre sløjfe altid fem gange.
  • Den indre loop er altid optaget af antallet af elementer i hver linje. Så lad os sige, at hvis du skal udskrive 1 stjerne i den første linje, 2 stjerner i den anden linje og så videre, ville den indvendige sløjfe kontrollere denne logik.
  • Afhængigt af mønsteret er der undertiden mere end én indre løkker eller tre niveauer af indlejrede løkker. Der er også involvering af mellemrum og faner for at fremstille det ønskede mønster.

Så med alt dette i tankerne, lad os prøve at kode mønstrene nu.

1. Star Half Pyramid.

Dette er det enkleste mønster at udskrive. Det udskriver det stigende antal stjerner i efterfølgende linjer. 1 stjerne i den første linje, 2 stjerner i den anden linje og så videre.

Lad os kode dette mønster for fem linjer. Med logikken i tankerne kører vores ydre sløjfe fem gange. Da antallet af stjerner i hver linje er direkte afhængig af linienummeret, vil vores indre sløjfe være en funktion af kontrolvariablen i vores ydre sløjfe. Lad os 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. Det er sådan, vi styrer vores indre sløjfe baseret på kontrolvariablen til de ydre sløjfer. Lad os se programmet i gang nu.

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

Produktion:

2. Star Half Pyramid - Spejlet.

Dette ligner Star Half Pyramid, bortset fra at stjernerne er højreorienterede.

For at opnå den rigtige fordybning ville vi bruge mellemrum og derefter udskrive stjerner. Så der ville være to indre løkker - en til at kontrollere antallet af rum og andre til at kontrollere antallet af stjerner.

Bemærk: Husk en ting, at antallet af mellemrum i k-loop er dobbelt mellemrum. Dette skyldes, at vi også udskriver et enkelt rum sammen med stjernerne. Dette giver et færdigt look til vores mønster snarere end en overbelastet udskrivning. Vi bruger dette til vores gearing, når vi udskriver fulde 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);
?>

Produktion:

3. Star Half Pyramid - Inverteret.

For dette pyramidemønster falder antallet af stjerner fortsat med hver nye linje. Den første linje har 5 stjerner, den anden linje har 4 stjerner og så videre.

Når vi tager logikken i tankerne, ved vi, at den ydre sløjfe altid skal kontrollere antallet af linjer, og den inderste sløjfe skal kontrollere antallet af stjerner. Denne logik kan ikke ændres. Skønt det, der kan ændres, er, hvordan vi starter løkkerne ved at øge eller formindske rækkefølge. Dette betyder, at vi enten kan sløjfe fra 0 til 5, eller vi kan sløjfe i faldende rækkefølge fra 5 til 0. Så for inverterede mønstre som dette ved vi, at antallet af stjerner er mere i den første linje. Så vi vælger at reducere ordreløber.

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

Produktion:

4. Star Half Pyramid - Inverteret spejlet.

Dette mønster er en indrykket omvendt halvpyramide. Antallet af stjerner falder med hver linje, og stjerner justeres højre.

Jeg tror nu, at du ville være i stand til at gætte 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);
?>

Produktion:

5. Star Full Pyramid.

Dette mønster udskriver den fulde pyramide. Eller med andre ord, det udskriver en trekant med stjerner på skærmen.

Dette mønster er i det væsentlige en kombination af Halvpyramide og dens spejl. Selvom der er en lille drejning, når vi koder det. Gennemse noten i spejlet halvpyramide. Husk, hvordan vi brugte dobbelt afstand til at give et færdigt udseende til vores mønster? Her ville vi bruge enkelt afstand, så stjernerne skiftevis justeres i ulige og lige antal rækker, hvilket giver os et ægte 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);
?>

Produktion:

6. Star Diamond.

Dette mønster udskriver en komplet diamantform på skærmen. Antallet af stjerner stiger indtil det maksimale definerede og falder derefter tilbage til 1, hvilket giver os en fuld diamantform.

For at udskrive dette mønster er vi nødt til at opdele mønsteret i to halvdele. Den øverste halvdel - som udskriver det stigende antal stjerner. Den nedre halvdel - som udskriver det faldende antal stjerner. For at udskrive begge halvdele bruger vi to udvendige sløjfer 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);
?>

Produktion:

7. Antal mønster.

For dette talemønster udskriver vi numrene i forhold til række nummeret. Således vil ciffer 1 blive udskrevet en gang, 2 to gange, 3 gange og så videre.

Hvis du ville have fulgt denne tutorial linje for linje, skal du nu have forstået meget godt, hvordan indlejrede loops fungerer til at udskrive mønstre. Dette mønster følger også den samme logik. I stedet for stjerner, udskriver vi numre. Nu spørger du, hvordan får vi tallene? Svaret er simpelthen gennem vores kontrolvariabler 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);
?>

Produktion:

8. Karaktermønster.

I dette mønster udskriver vi alfabeterne ABCDE i et mønster. Fra og med A ville de efterfølgende rækker introducere et nyt alfabet klemt mellem de foregående alfabeter.

Det eneste trick i dette mønster er at få karaktererne fra vores kontrolvariabler. Det gør vi ved at udnytte tegnene til ASCII-værdien. ASCII-værdien af A til Z er 65 til 90 . Så vi beregner ASCII-værdien i hver iteration og udskriver det tilsvarende tegn. Funktionen chr () i PHP bruges til at udskrive 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);
?>

Produktion:

Print til fulde alfabeter, og mønsteret ser temmelig sejt ud.

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

Dette mønster er et dynamisk mønster, der udskriver timeglasset i forhold til den forløbne tid, men ikke en faktisk beregning. For eksempel, hvis der er gået en time, udskriver den en linje med 0s i den øverste halvdel og en linje på 1s i den nedre halvdel.

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

Output: 1 time er gået.

Output: 2 timer er gået.

Output: 3 timer er gået.

Og så videre.

Konklusion

Der er meget at lege med mønstre. Det handler om at have kodelogikken i tankerne. Når du først har forstået kodelogikken, er der ikke noget mønster, du ikke kan udskrive.

Anbefalede artikler

Dette har været en guide til mønstre i PHP. Her har vi drøftet oversigter og eksempler på mønster i PHP med koder og output. Du kan også gennemgå vores givne artikler for at lære mere-

  1. Hvad er PHP?
  2. Variabler i PHP
  3. Konstruktør i PHP
  4. Introduktion til PHP
  5. Oversigt over mønstre i JavaScript
  6. Eksempler på PHP rekursiv funktion
  7. Antal mønstre i Java | Eksempler med implementering af kode

Kategori: