Вступ до шаблонів у 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 буде надрукована один раз, 2 двічі, 3 рази і так далі.

Якби ви дотримувались цього підручника по рядку, ви, мабуть, дуже добре зрозуміли роботу вкладених циклів для друку шаблонів. Ця закономірність також слідує тій же логіці. Замість зірок друкуємо цифри. Тепер ви запитуєте, як ми отримуємо цифри? Відповідь - просто через наші контрольні змінні 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 у верхній половині та один рядок 1s у нижній половині.

Код

<_?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 | Приклади з реалізацією коду