Introdução aos padrões em PHP

O que é programação padrão em PHP? É uma arte de programar imprimir algum tipo de padrão na tela. Pode ser uma série de números, letras ou caracteres especiais para formar um padrão. O exemplo mais simples de um padrão é a série Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, 34 e assim por diante). Existem outros padrões que são desenhos na tela, como uma pirâmide de estrelas. Então, basicamente, a programação de padrões é simplesmente imprimir um padrão na tela.

Para este artigo, estaríamos usando o PHP para codificar os padrões. Não se preocupe. Depois de pegar o jeito, é apenas a sintaxe que varia de idioma para idioma. A lógica é a mesma, sempre.

Exemplos de padrão em PHP

  • Antes de pular direto para os programas, vamos entender a lógica básica dos padrões de codificação. Os padrões são sempre programados através de loops aninhados - principalmente aninhados para loops. Isso ocorre porque os loops são sintaticamente mais fáceis de entender e concisos.
  • O loop externo sempre se preocupa com o número de linhas. Então, digamos que se você tiver que imprimir um padrão com cinco linhas, o loop externo sempre será executado cinco vezes.
  • O loop interno sempre se preocupa com o número de elementos em cada linha. Então, digamos que se você tiver que imprimir 1 estrela na primeira linha, 2 estrelas na segunda linha e assim por diante, o loop interno controlará essa lógica.
  • Dependendo do padrão, às vezes há mais de um loop interno ou três níveis de loops aninhados. Além disso, há o envolvimento de espaços e guias para produzir o padrão desejado.

Portanto, mantendo tudo isso em mente, vamos tentar codificar os padrões agora.

1. Meia pirâmide estrela.

Esse é o padrão mais simples de imprimir. Imprime o número crescente de estrelas nas linhas subseqüentes. 1 estrela na primeira linha, 2 estrelas na segunda linha e assim por diante.

Vamos codificar esse padrão para cinco linhas. Mantendo a lógica em mente, nosso loop externo será executado cinco vezes. Como o número de estrelas em cada linha depende diretamente do número da linha, nosso loop interno será uma função da variável de controle em nosso loop externo. Vamos ver como.

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 assim por diante. É assim que controlamos nosso loop interno com base na variável de controle de loops externos. Vamos ver o programa em ação agora.

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

Resultado:

2. Meia Pirâmide Estrela - Espelhada.

Isso é semelhante à meia pirâmide de estrelas, exceto que as estrelas estão alinhadas à direita.

Para obter o recuo correto, usaríamos espaços e depois imprimiríamos estrelas. Portanto, haveria dois circuitos internos - um para controlar o número de espaços e outros para controlar o número de estrelas.

Nota: Lembre-se de que o número de espaços no loop k é espaço duplo. Isso ocorre porque imprimimos um espaço único junto com as estrelas. Isso dá uma aparência final ao nosso padrão, em vez de uma impressão congestionada. Usaremos isso como alavanca quando imprimirmos 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);
?>

Resultado:

3. Meia Pirâmide Estrela - Invertida.

Para esse padrão de pirâmide, o número de estrelas continua diminuindo a cada nova linha. A primeira linha tem 5 estrelas, a segunda linha tem 4 estrelas e assim por diante.

Mantendo a lógica em mente, sabemos que o loop externo sempre tem que controlar o número de linhas e o loop interno tem que controlar o número de estrelas. Esta lógica não pode ser alterada. Embora, o que pode ser alterado é como iniciamos os loops, aumentando ou diminuindo a ordem. Isso significa que podemos fazer um loop de 0 a 5 ou fazer um loop em ordem decrescente de 5 a 0. Portanto, para padrões invertidos como esse, sabemos que o número de estrelas é maior na primeira linha. Então, escolhemos diminuir os loops de pedidos.

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

Resultado:

4. Meia Pirâmide Estrela - Espelhada Invertida.

Esse padrão é uma meia pirâmide invertida recuada. O número de estrelas diminui a cada linha e as estrelas estão alinhadas à direita.

Eu acredito que agora você seria capaz de adivinhar a lógica para 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);
?>

Resultado:

5. Pirâmide Cheia de Estrelas.

Esse padrão imprime a pirâmide completa. Ou, em outras palavras, imprime um triângulo de estrelas na tela.

Esse padrão é essencialmente uma combinação da meia pirâmide e seu espelho. Embora haja uma ligeira torção quando o codificamos. Revise a nota na meia pirâmide espelhada. Lembre-se, como usamos espaçamento duplo para dar uma aparência final ao nosso padrão? Aqui, usaríamos espaçamento simples para que as estrelas sejam alinhadas alternadamente em número ímpar e par de linhas, fornecendo um verdadeiro padrão 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);
?>

Resultado:

6. Star Diamond.

Esse padrão imprime uma forma completa de diamante na tela. O número de estrelas aumenta até o máximo definido e depois diminui de volta para 1, dando-nos uma forma de diamante completa.

Para imprimir esse padrão, precisaríamos dividir o padrão em duas metades. A metade superior - que imprime o número crescente de estrelas. A metade inferior - que imprime o número decrescente de estrelas. Para imprimir as duas metades, usaríamos dois loops externos e os correspondentes loops internos.

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

Resultado:

7. Padrão numérico.

Para esse padrão numérico, imprimiremos os números em relação ao número da linha. Assim, o dígito 1 seria impresso uma vez, 2 duas vezes, três vezes e assim por diante.

Se você seguisse este tutorial linha por linha, agora já deve ter entendido muito bem o funcionamento de loops aninhados para imprimir padrões. Esse padrão também segue a mesma lógica. Em vez de estrelas, imprimimos números. Agora você pergunta como obtemos os números? A resposta é simplesmente através de nossas variáveis ​​de controle iej.

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

Resultado:

8. Padrão de Caractere.

Nesse padrão, imprimiríamos os alfabetos ABCDE em um padrão. Começando com A, as linhas subseqüentes introduziriam um novo alfabeto imprensado entre os alfabetos anteriores.

O único truque nesse padrão é obter os caracteres de nossas variáveis ​​de controle. Fazemos isso aproveitando o valor ASCII dos caracteres. O valor ASCII de A a Z é 65 a 90 . Portanto, calculamos o valor ASCII em cada iteração e imprimimos o caractere correspondente. A função chr () no PHP é usada para imprimir um caractere a partir do 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);
?>

Resultado:

Imprima para alfabetos completos e o padrão parece bem legal.

9. A Ampulheta Binária - Padrão de Bônus.

Esse padrão é um padrão dinâmico que imprime a ampulheta em relação ao tempo decorrido, embora não seja um cálculo real. Por exemplo, se uma hora tiver decorrido, imprimirá uma linha de 0s na metade superior e uma linha de 1s na metade 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);
?>

Saída: 1 hora decorrida.

Saída: 2 horas se passaram.

Saída: 3 horas se passaram.

E assim por diante.

Conclusão

Há muito o que brincar com padrões. É tudo sobre manter a lógica do código em mente. Depois de entender completamente a lógica do código, não há um padrão que você não possa imprimir.

Artigos recomendados

Este foi um guia para padrões em PHP. Aqui discutimos visões gerais e exemplos de padrão no PHP com códigos e saída. Você também pode ler nossos artigos para saber mais.

  1. O que é PHP?
  2. Variáveis ​​em PHP
  3. Construtor em PHP
  4. Introdução ao PHP
  5. Visão geral dos padrões em JavaScript
  6. Exemplos de função recursiva do PHP
  7. Padrões numéricos em Java | Exemplos com implementação de código