Introducción a los patrones en PHP

¿Qué es la programación de patrones en PHP? Es un arte de programación imprimir algún tipo de patrón en la pantalla. Esto puede ser una serie de números, letras o caracteres especiales para formar un patrón. El ejemplo más simple de un patrón es la serie de Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, 34, etc.). Luego hay otros patrones que son diseños en pantalla, digamos una pirámide de estrellas. Entonces, básicamente, la programación de patrones es simplemente imprimir un patrón en la pantalla.

Para este artículo, estaríamos usando PHP para codificar los patrones. Sin embargo, no te preocupes. Una vez que te acostumbras, es solo la sintaxis que varía de un idioma a otro. La lógica es la misma, siempre.

Ejemplos de patrones en PHP

  • Antes de saltar directamente a los programas, comprendamos la lógica básica de los patrones de codificación. Los patrones siempre se programan a través de bucles anidados, principalmente anidados para bucles. Esto se debe a que los bucles son sintácticamente más fáciles de entender y concisos.
  • El bucle externo siempre tiene que ver con el número de líneas. Entonces, digamos que si tiene que imprimir un patrón que abarca cinco líneas, el bucle externo siempre se ejecutará cinco veces.
  • El ciclo interno siempre tiene que ver con el número de elementos en cada línea. Entonces, digamos que si tiene que imprimir 1 estrella en la primera línea, 2 estrellas en la segunda línea y así sucesivamente, el bucle interno controlaría esta lógica.
  • Dependiendo del patrón, a veces hay más de un bucle interno o tres niveles de bucles anidados. Además, existe la participación de espacios y pestañas para producir el patrón deseado.

Entonces, teniendo todo esto en mente, intentemos codificar los patrones ahora.

1. Media Pirámide Estrella.

Este es el patrón más simple para imprimir. Imprime el creciente número de estrellas en líneas posteriores. 1 estrella en la primera línea, 2 estrellas en la segunda línea y así sucesivamente.

Codifiquemos este patrón para cinco líneas. Teniendo en cuenta la lógica, nuestro bucle externo se ejecutará cinco veces. Dado que el número de estrellas en cada línea depende directamente del número de línea, nuestro bucle interno será una función de la variable de control en nuestro bucle externo. A ver cómo.

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

Y así. Así es como controlamos nuestro bucle interno basado en la variable de control de los bucles externos. Veamos el programa en acción ahora.

Código

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

Salida:

2. La mitad de la pirámide de la estrella: reflejada.

Esto es similar a la Media Pirámide de la Estrella, excepto que las estrellas están alineadas a la derecha.

Para lograr la sangría correcta, usaríamos espacios y luego imprimiríamos estrellas. Entonces, habría dos bucles internos: uno para controlar el número de espacios y otros para controlar el número de estrellas.

Nota: Tenga en cuenta que el número de espacios en el bucle k es doble. Esto se debe a que imprimimos un espacio único junto con las estrellas también. Esto le da un aspecto final a nuestro patrón en lugar de una impresión congestionada. Usaremos esto para nuestro apalancamiento cuando imprimamos pirámides completas.

Código

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

Salida:

3. Media Pirámide Estrella - Invertida.

Para este patrón piramidal, el número de estrellas sigue disminuyendo con cada nueva línea. La primera línea tiene 5 estrellas, la segunda línea tiene 4 estrellas y así sucesivamente.

Teniendo en cuenta la lógica, sabemos que el bucle externo siempre debe controlar el número de líneas y el bucle interno debe controlar el número de estrellas. Esta lógica no se puede cambiar. Aunque, lo que se puede cambiar es cómo comenzamos los bucles, aumentando o disminuyendo el orden. Esto significa que podemos hacer un bucle de 0 a 5 o podemos hacerlo en orden decreciente de 5 a 0. Entonces, para patrones invertidos como este, sabemos que el número de estrellas es mayor en la primera línea. Entonces, elegimos disminuir los bucles de orden.

Código

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

Salida:

4. La mitad de la pirámide de la estrella: espejo invertido.

Este patrón es una media pirámide invertida con sangría. El número de estrellas disminuye con cada línea y las estrellas están alineadas a la derecha.

Creo que ahora podrás adivinar la lógica de este.

Código

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

Salida:

5. Pirámide llena de estrellas.

Este patrón imprime la pirámide completa. O, en otras palabras, imprime un triángulo de estrellas en la pantalla.

Este patrón es esencialmente una combinación de media pirámide y su espejo. Aunque hay un ligero giro cuando lo codificamos. Vuelve a la nota en la media pirámide reflejada. Recuerde, ¿cómo usamos el doble espacio para darle un aspecto final a nuestro patrón? Aquí usaríamos un espaciado simple para que las estrellas se alineen alternativamente en un número impar y par de filas, lo que nos da un verdadero patrón triangular.

Código

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

Salida:

6. Star Diamond.

Este patrón imprime una forma de diamante completa en la pantalla. El número de estrellas aumenta hasta el máximo definido y luego disminuye de nuevo a 1, dándonos una forma de diamante completa.

Para imprimir este patrón, necesitaríamos dividir el patrón en dos mitades. La mitad superior, que imprime el número creciente de estrellas. La mitad inferior, que imprime el número decreciente de estrellas. Para imprimir ambas mitades, usaríamos dos bucles externos y los bucles internos correspondientes.

Código

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

Salida:

7. Patrón de números.

Para este patrón de números, imprimiremos los números en relación con el número de fila. Por lo tanto, el dígito 1 se imprimirá una vez, 2 dos veces, 3 veces, etc.

Si hubiera seguido este tutorial línea por línea, ahora debe haber entendido muy bien el funcionamiento de los bucles anidados para imprimir patrones. Este patrón también sigue la misma lógica. En lugar de estrellas, imprimimos números. ¿Ahora preguntas cómo obtenemos los números? La respuesta es simplemente a través de nuestras variables de control i y j.

Código

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

Salida:

8. Patrón de personaje.

En este patrón, imprimiríamos los alfabetos ABCDE en un patrón. Comenzando con A, las filas posteriores introducirían un nuevo alfabeto intercalado entre los alfabetos anteriores.

El único truco en este patrón es obtener los caracteres de nuestras variables de control. Hacemos esto aprovechando el valor ASCII de los caracteres. El valor ASCII de A a Z es de 65 a 90 . Entonces, calculamos el valor ASCII en cada iteración e imprimimos el carácter correspondiente. La función chr () en PHP se usa para imprimir un carácter del código ASCII.

Código

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

Salida:

Imprima alfabetos completos y el patrón se ve muy bien.

9. El reloj de arena binario - Patrón de bonificación.

Este patrón es un patrón dinámico que imprime el reloj de arena en relación con el tiempo transcurrido, sin embargo, no es un cálculo real. Por ejemplo, si ha transcurrido una hora, imprimirá una línea de 0 en la mitad superior y una línea de 1 en la mitad inferior.

Código

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

Salida: ha transcurrido 1 hora.

Salida: han transcurrido 2 horas.

Salida: han transcurrido 3 horas.

Y así.

Conclusión

Hay mucho para jugar con los patrones. Se trata de tener en cuenta la lógica del código. Una vez que entienda completamente la lógica del código, no hay ningún patrón que no pueda imprimir.

Artículos recomendados

Esta ha sido una guía de Patrones en PHP. Aquí hemos discutido resúmenes y ejemplos de patrones en PHP con códigos y resultados. También puede consultar nuestros artículos para obtener más información.

  1. ¿Qué es PHP?
  2. Variables en PHP
  3. Constructor en PHP
  4. Introducción a PHP
  5. Descripción general de patrones en JavaScript
  6. Ejemplos de función recursiva PHP
  7. Patrones de números en Java | Ejemplos con implementación de código