Introduzione ai modelli in PHP

Che cos'è la programmazione dei pattern in PHP? È un'arte della programmazione stampare una sorta di motivo sullo schermo. Può trattarsi di una serie di numeri, lettere o caratteri speciali per formare un motivo. L'esempio più semplice di un modello è la serie di Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, 34 e così via). Poi ci sono altri motivi che sono disegni sullo schermo, diciamo una piramide di stelle. Quindi, in sostanza, la programmazione dei pattern è semplicemente la stampa di un pattern sullo schermo.

Per questo articolo, utilizzeremo PHP per codificare i pattern. Non preoccuparti però. Una volta capito, è solo la sintassi che varia da una lingua all'altra. La logica è sempre la stessa.

Esempi di pattern in PHP

  • Prima di saltare direttamente ai programmi, comprendiamo la logica di base dei modelli di codifica. I pattern sono sempre programmati attraverso loop nidificati, principalmente nidificati per loop. Questo perché i loop sono sintatticamente più facili da capire e concisi.
  • Il loop esterno si occupa sempre del numero di righe. Quindi, supponiamo che se devi stampare un motivo che si estende su cinque righe, il ciclo esterno verrà sempre eseguito cinque volte.
  • Il ciclo interno si occupa sempre del numero di elementi in ciascuna riga. Quindi, diciamo che se devi stampare 1 stella nella prima riga, 2 stelle nella seconda riga e così via, il ciclo interno controllerebbe questa logica.
  • A seconda del modello, a volte ci sono più di un loop interno o tre livelli di loop nidificati. Inoltre, vi è il coinvolgimento di spazi e schede per produrre il modello desiderato.

Quindi, tenendo presente tutto ciò, proviamo ora a codificare gli schemi.

1. Star Half Pyramid.

Questo è il modello più semplice da stampare. Stampa il numero crescente di stelle nelle righe successive. 1 stella nella prima riga, 2 stelle nella seconda riga e così via.

Codifichiamo questo schema per cinque righe. Tenendo presente la logica, il nostro circuito esterno verrà eseguito cinque volte. Poiché il numero di stelle in ciascuna linea dipende direttamente dal numero della linea, il nostro loop interno sarà una funzione della variabile di controllo nel nostro loop esterno. Vediamo come.

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

E così via. Questo è il modo in cui controlliamo il nostro loop interno in base alla variabile di controllo dei loop esterni. Vediamo ora il programma in azione.

Codice

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

Produzione:

2. Star Half Pyramid– Mirrored.

Questo è simile alla Star Half Pyramid, tranne per il fatto che le stelle sono allineate a destra.

Per ottenere il giusto rientro, useremmo gli spazi e quindi stampare le stelle. Quindi, ci sarebbero due anelli interni: uno per controllare il numero di spazi e altri per controllare il numero di stelle.

Nota: tenere presente una cosa che il numero di spazi nel k-loop è doppio spazio. Questo perché stampiamo uno spazio singolo insieme alle stelle. Questo dà un aspetto finito al nostro modello piuttosto che una stampa congestionata. Lo useremo a nostro vantaggio quando stampiamo piramidi complete.

Codice

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

Produzione:

3. Star Half Pyramid– Inverted.

Per questo modello piramidale, il numero di stelle continua a diminuire con ogni nuova linea. La prima riga ha 5 stelle, la seconda riga ha 4 stelle e così via.

Tenendo presente la logica, sappiamo che il loop esterno deve sempre controllare il numero di linee e il loop interno deve controllare il numero di stelle. Questa logica non può essere cambiata. Tuttavia, ciò che può essere cambiato è il modo in cui iniziamo i loop, aumentando o diminuendo l'ordine. Questo significa che possiamo fare un ciclo da 0 a 5 o possiamo fare un giro in ordine decrescente da 5 a 0. Quindi, per schemi invertiti come questo, sappiamo che il numero di stelle è più nella prima riga. Quindi, scegliamo di ridurre i cicli di ordine.

Codice

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

Produzione:

4. Star Half Pyramid - Inverted Mirrored.

Questo modello è una mezza piramide rovesciata rientrata. Il numero di stelle diminuisce ad ogni linea e le stelle sono allineate a destra.

Credo che ormai saresti in grado di indovinare la logica di questo.

Codice

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

Produzione:

5. Star Full Pyramid.

Questo modello stampa l'intera piramide. O in altre parole, stampa un triangolo di stelle sullo schermo.

Questo modello è essenzialmente una combinazione di mezza piramide e il suo specchio. Anche se c'è una leggera svolta quando lo codifichiamo. Rivisita la nota nella mezza piramide specchiata. Ricorda, come abbiamo usato la doppia spaziatura per dare un aspetto finito al nostro modello? Qui utilizzeremo la spaziatura singola in modo che le stelle siano alternativamente allineate in numero pari e dispari di righe, dandoci un vero modello triangolare.

Codice

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

Produzione:

6. Stella Diamante.

Questo modello stampa una forma di diamante completa sullo schermo. Il numero di stelle aumenta fino al massimo definito e poi diminuisce nuovamente a 1, dandoci una forma di diamante completa.

Per stampare questo motivo, dovremmo dividerlo in due metà. La metà superiore - che stampa il numero crescente di stelle. La metà inferiore - che stampa il numero decrescente di stelle. Per stampare entrambe le metà, utilizzeremmo due anelli esterni e corrispondenti anelli interni.

Codice

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

Produzione:

7. Modello numerico.

Per questo modello numerico, stamperemo i numeri in relazione al numero di riga. Pertanto, la cifra 1 verrebbe stampata una volta, 2 due volte, 3 tre volte e così via.

Se avessi seguito questo tutorial riga per riga, ormai devi aver compreso molto bene il funzionamento dei cicli nidificati per stampare i motivi. Questo modello segue anche la stessa logica. Invece di stelle, stampiamo numeri. Ora chiedi come possiamo ottenere i numeri? La risposta è: semplicemente attraverso le nostre variabili di controllo i e j.

Codice

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

Produzione:

8. Modello di carattere.

In questo modello, stamperemmo gli alfabeti ABCDE in un modello. A partire da A, le righe successive introdurrebbero un nuovo alfabeto inserito tra i precedenti alfabeti.

L'unico trucco in questo modello è quello di ottenere i personaggi dalle nostre variabili di controllo. Lo facciamo sfruttando il valore ASCII dei caratteri. Il valore ASCII da A a Z è compreso tra 65 e 90 . Quindi, calcoliamo il valore ASCII in ogni iterazione e stampiamo il carattere corrispondente. La funzione chr () in PHP viene utilizzata per stampare un carattere dal codice ASCII.

Codice

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

Produzione:

Stampa per alfabeti completi e il motivo sembra piuttosto interessante.

9. Clessidra binaria - Modello bonus.

Questo modello è un modello dinamico che stampa la clessidra rispetto al tempo trascorso, ma non un calcolo effettivo. Ad esempio, se è trascorsa un'ora, verrà stampata una riga di 0 secondi nella metà superiore e una riga di 1 secondi nella metà inferiore.

Codice

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

Uscita: è trascorsa 1 ora.

Uscita: sono trascorse 2 ore.

Uscita: sono trascorse 3 ore.

E così via.

Conclusione

C'è molto da giocare con gli schemi. Si tratta di tenere a mente la logica del codice. Dopo aver compreso completamente la logica del codice, non è possibile stampare alcun motivo.

Articoli consigliati

Questa è stata una guida ai Pattern in PHP. Qui abbiamo discusso di panoramiche ed esempi di pattern in PHP con codici e output. Puoi anche consultare i nostri articoli per saperne di più-

  1. Che cos'è PHP?
  2. Variabili in PHP
  3. Costruttore in PHP
  4. Introduzione a PHP
  5. Panoramica dei pattern in JavaScript
  6. Esempi di funzione ricorsiva PHP
  7. Schemi numerici in Java | Esempi con l'implementazione del codice

Categoria: