Введение в паттерны в PHP

Что такое паттерн-программирование в PHP? Это искусство программирования печатать какие-то узоры на экране. Это может быть серия цифр, букв или специальных символов для формирования шаблона. Простейшим примером паттерна является ряд Фибоначчи (1, 1, 2, 3, 5, 8, 13, 21, 34 и т. Д.). Тогда есть другие образцы, которые являются проектами на экране, скажем, пирамида звезд. Итак, в основном, программирование шаблонов - это просто печать шаблона на экране.

В этой статье мы будем использовать PHP для кодирования шаблонов. Не беспокойся, хотя. Как только вы это освоите, это просто синтаксис, который варьируется от языка к языку. Логика одна и та же, всегда.

Примеры паттернов в PHP

  • Прежде чем перейти непосредственно к программам, давайте разберемся с основной логикой шаблонов кодирования. Шаблоны всегда программируются через вложенные циклы - в основном вложенные для циклов. Это потому, что циклы синтаксически легче понять и лаконичны.
  • Внешний цикл всегда связан с количеством строк. Итак, скажем, если вам нужно напечатать шаблон, охватывающий пять строк, внешний цикл всегда будет выполняться пять раз.
  • Внутренний цикл всегда связан с количеством элементов в каждой строке. Итак, скажем, если вам нужно напечатать 1 звезду в первой строке, 2 звезды во второй строке и т. Д., Внутренний цикл будет управлять этой логикой.
  • В зависимости от шаблона иногда существует более одного внутреннего цикла или три уровня вложенных циклов. Также здесь задействованы пробелы и табуляции для получения желаемого шаблона.

Итак, имея в виду все это, давайте сейчас попробуем закодировать шаблоны.

1. Звездная Половина Пирамиды.

Это самый простой шаблон для печати. Он печатает все большее количество звезд в последующих строках. 1 звезда в первой строке, 2 звезды во второй строке и так далее.

Давайте закодируем этот шаблон для пяти строк. Учитывая логику, наш внешний цикл будет работать пять раз. Поскольку количество звезд в каждой строке напрямую зависит от номера строки, наш внутренний цикл будет функцией управляющей переменной в нашем внешнем цикле. Посмотрим как.

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

И так далее. Вот как мы контролируем наш внутренний цикл на основе переменной управления внешними циклами. Давайте посмотрим на программу в действии сейчас.

Код

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

Выход:

2. Звездная Половина Пирамиды - Зеркальная.

Это похоже на Звездную Полупирамиду, за исключением того, что звезды выровнены по правому краю.

Чтобы добиться правильного отступа, мы будем использовать пробелы, а затем печатать звезды. Таким образом, было бы две внутренние петли - одна для контроля количества мест и другие для контроля количества звезд.

Примечание: имейте в виду, что число пробелов в k-цикле является двойным пробелом. Это потому, что мы печатаем единичное пространство вместе со звездами. Это дает законченный взгляд нашему образцу, а не перегруженному отпечатку. Мы будем использовать это для наших рычагов, когда будем печатать полные пирамиды.

Код

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

Выход:

3. Звездная Половина Пирамиды - Перевернутая.

Для этой пирамиды число звезд продолжает уменьшаться с каждой новой линией. Первая строка имеет 5 звезд, вторая строка имеет 4 звезды и так далее.

Помня логику, мы знаем, что внешний цикл всегда должен контролировать количество линий, а внутренний цикл должен контролировать количество звезд. Эту логику нельзя изменить. Хотя, что можно изменить, так это как мы запускаем циклы, увеличивая или уменьшая порядок. Это означает, что мы можем либо зацикливаться от 0 до 5, либо зацикливаться в порядке убывания от 5 до 0. Таким образом, для таких перевернутых шаблонов мы знаем, что число звезд больше в первой строке. Итак, мы решили уменьшить количество циклов заказа.

Код

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

Выход:

4. Звездная половина пирамиды - перевернутая зеркальная.

Этот рисунок представляет собой перевернутую перевернутую полупирамиду. Количество звезд уменьшается с каждой линией, и звезды располагаются по правому краю.

Я верю, что теперь вы сможете угадать логику для этого.

Код

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

Выход:

5. Звезда Полной Пирамиды.

Этот шаблон печатает полную пирамиду. Или, другими словами, он печатает треугольник звезд на экране.

Эта модель, по сути, является комбинацией Полупирамиды и ее зеркала. Хотя есть небольшой поворот, когда мы его кодируем. Пересмотрите Ноту в Зеркальной Полупирамиде. Помните, как мы использовали двойной интервал, чтобы придать законченный вид нашему шаблону? Здесь мы будем использовать одинарный интервал, чтобы звезды чередовались нечетным и четным числом строк, что дает нам истинный треугольный узор.

Код

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

Выход:

6. Звезда Бриллиант.

Этот рисунок печатает полную ромбовидную форму на экране. Количество звезд увеличивается до определенного максимума, а затем уменьшается до 1, что дает нам полную форму ромба.

Чтобы напечатать этот шаблон, нам нужно разделить шаблон на две половины. Верхняя половина - которая печатает все большее количество звездочек. Нижняя половина - которая печатает уменьшающееся количество звезд. Чтобы напечатать обе половинки, мы бы использовали две внешние петли и соответствующие внутренние петли.

Код

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

Выход:

7. Шаблон номера.

Для этого числового шаблона мы будем печатать числа по отношению к номеру строки. Таким образом, цифра 1 будет напечатана один раз, два раза два, трижды три и так далее.

Если бы вы следовали этому руководству построчно, к настоящему времени вы, должно быть, очень хорошо поняли работу вложенных циклов для печати рисунков. Эта модель также следует той же логике. Вместо звезд мы печатаем цифры. Теперь вы спросите, как мы можем получить цифры? Ответ - просто через наши управляющие переменные i и j.

Код

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

Выход:

8. Образец персонажа.

В этом шаблоне мы будем печатать алфавиты ABCDE в шаблоне. Начиная с A, последующие строки будут вводить новый алфавит, расположенный между предыдущими алфавитами.

Единственная хитрость в этом шаблоне - получить символы из наших управляющих переменных. Мы делаем это, используя значение символов ASCII. Значение ASCII от A до Z составляет от 65 до 90 . Итак, мы вычисляем значение ASCII в каждой итерации и печатаем соответствующий символ. Функция chr () в PHP используется для печати символа из кода ASCII.

Код

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

Выход:

Печать для полного алфавита и шаблон выглядит довольно круто.

9. Бинарные песочные часы - бонусный паттерн.

Этот шаблон является динамическим шаблоном, который печатает песочные часы относительно прошедшего времени, но не фактическим расчетом. Например, если прошел один час, он напечатает одну строку 0 в верхней половине и одну строку 1 в нижней половине.

Код

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

Выход: 1 час прошел.

Выход: 2 часа прошло.

Выход: прошло 3 часа.

И так далее.

Вывод

Есть много, чтобы играть с узорами. Все дело в том, чтобы помнить логику кода. Как только вы полностью поймете логику кода, не будет шаблона, который вы не сможете распечатать.

Рекомендуемые статьи

Это было руководство по шаблонам в PHP. Здесь мы обсудили обзоры и примеры шаблонов в PHP с кодами и выводом. Вы также можете просмотреть наши статьи, чтобы узнать больше

  1. Что такое PHP?
  2. Переменные в PHP
  3. Конструктор в PHP
  4. Введение в PHP
  5. Обзор шаблонов в JavaScript
  6. Примеры рекурсивной функции PHP
  7. Числовые Шаблоны в Java | Примеры с реализацией кода