Introduction aux modèles en PHP

Qu'est-ce que la programmation de motifs en PHP? C'est un art de programmer d'imprimer une sorte de motif sur l'écran. Il peut s'agir d'une série de chiffres, de lettres ou de caractères spéciaux pour former un motif. L'exemple le plus simple d'un modèle est la série de Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, 34 et ainsi de suite). Ensuite, il y a d'autres motifs qui sont des dessins à l'écran, disons une pyramide d'étoiles. Donc, fondamentalement, la programmation de motifs imprime simplement un motif à l'écran.

Pour cet article, nous utiliserions PHP pour coder les modèles. Mais ne vous inquiétez pas. Une fois que vous avez compris, c'est juste la syntaxe qui varie d'une langue à l'autre. La logique est toujours la même.

Exemples de Pattern en PHP

  • Avant de passer directement aux programmes, comprenons la logique de base des modèles de codage. Les motifs sont toujours programmés via des boucles imbriquées - principalement imbriquées pour les boucles. En effet, les boucles sont syntaxiquement plus faciles à comprendre et concises.
  • La boucle externe est toujours concernée par le nombre de lignes. Donc, disons que si vous devez imprimer un motif sur cinq lignes, la boucle externe sera toujours exécutée cinq fois.
  • La boucle intérieure est toujours concernée par le nombre d'éléments dans chaque ligne. Donc, disons que si vous devez imprimer 1 étoile sur la première ligne, 2 étoiles sur la deuxième ligne et ainsi de suite, la boucle intérieure contrôlera cette logique.
  • Selon le modèle, il existe parfois plusieurs boucles internes ou trois niveaux de boucles imbriquées. En outre, il y a l'implication d'espaces et d'onglets pour produire le motif souhaité.

Donc, en gardant tout cela à l'esprit, essayons de coder les modèles maintenant.

1. Star Half Pyramid.

Il s'agit du motif le plus simple à imprimer. Il imprime le nombre croissant d'étoiles dans les lignes suivantes. 1 étoile dans la première ligne, 2 étoiles dans la deuxième ligne et ainsi de suite.

Codons ce modèle pour cinq lignes. Gardant la logique à l'esprit, notre boucle externe fonctionnera cinq fois. Puisque le nombre d'étoiles dans chaque ligne dépend directement du numéro de ligne, notre boucle interne sera fonction de la variable de contrôle dans notre boucle externe. Voyons comment.

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

Etc. C'est ainsi que nous contrôlons notre boucle interne en fonction de la variable de contrôle des boucles externes. Voyons maintenant le programme en action.

Code

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

Production:

2. Demi-pyramide étoilée - en miroir.

Ceci est similaire à la demi-pyramide étoilée, sauf que les étoiles sont alignées à droite.

Pour obtenir la bonne indentation, nous utiliserions des espaces puis imprimerions des étoiles. Ainsi, il y aurait deux boucles internes - une pour contrôler le nombre d'espaces et d'autres pour contrôler le nombre d'étoiles.

Remarque: Gardez une chose à l'esprit que le nombre d'espaces dans la boucle k est un double espace. En effet, nous imprimons également un espace unique avec les étoiles. Cela donne un aspect fini à notre motif plutôt qu'une impression encombrée. Nous l'utiliserons à notre avantage lorsque nous imprimerons des pyramides complètes.

Code

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

Production:

3. Demi-pyramide étoilée - inversée.

Pour ce motif pyramidal, le nombre d'étoiles continue de diminuer à chaque nouvelle ligne. La première ligne a 5 étoiles, la deuxième ligne a 4 étoiles et ainsi de suite.

Gardant la logique à l'esprit, nous savons que la boucle externe doit toujours contrôler le nombre de lignes et la boucle interne doit contrôler le nombre d'étoiles. Cette logique ne peut pas être modifiée. Cependant, ce qui peut être changé, c'est la façon dont nous commençons les boucles, en augmentant ou en diminuant l'ordre. Cela signifie que nous pouvons soit boucler de 0 à 5, soit boucler dans l'ordre décroissant de 5 à 0. Ainsi, pour des motifs inversés comme celui-ci, nous savons que le nombre d'étoiles est plus dans la première ligne. Nous choisissons donc de diminuer les boucles de commande.

Code

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

Production:

4. Demi-pyramide étoilée - miroir inversé.

Ce motif est une demi-pyramide inversée en retrait. Le nombre d'étoiles diminue avec chaque ligne et les étoiles sont alignées à droite.

Je crois que maintenant vous seriez en mesure de deviner la logique de celui-ci.

Code

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

Production:

5. Pyramide pleine étoile.

Ce motif imprime la pyramide complète. Ou en d'autres termes, il imprime un triangle d'étoiles sur l'écran.

Ce motif est essentiellement une combinaison de demi-pyramide et de son miroir. Bien qu'il y ait une légère torsion lorsque nous le codons. Revisitez la note dans la demi-pyramide en miroir. Rappelez-vous, comment nous avons utilisé le double espacement pour donner un aspect fini à notre motif? Ici, nous utiliserions un seul espacement pour que les étoiles soient alternativement alignées en nombre pair et impair de rangées, ce qui nous donne un vrai motif triangulaire.

Code

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

Production:

6. Star Diamond.

Ce motif imprime une forme de diamant complète sur l'écran. Le nombre d'étoiles augmente jusqu'au maximum défini, puis redescend à 1, nous donnant une forme de diamant complet.

Pour imprimer ce motif, nous aurions besoin de diviser le motif en deux moitiés. La moitié supérieure - qui imprime le nombre croissant d'étoiles. La moitié inférieure - qui imprime le nombre décroissant d'étoiles. Pour imprimer les deux moitiés, nous utiliserions deux boucles externes et des boucles internes correspondantes.

Code

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

Production:

7. Modèle de nombre.

Pour ce modèle de nombre, nous imprimerons les nombres par rapport au numéro de ligne. Ainsi, le chiffre 1 serait imprimé une fois, deux fois, trois fois et ainsi de suite.

Si vous aviez suivi ce didacticiel ligne par ligne, vous devez maintenant avoir très bien compris le fonctionnement des boucles imbriquées pour imprimer des motifs. Ce modèle suit également la même logique. Au lieu d'étoiles, nous imprimons des nombres. Vous demandez maintenant comment obtenir les chiffres? La réponse est simplement par le biais de nos variables de contrôle i et j.

Code

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

Production:

8. Motif de caractère.

Dans ce modèle, nous imprimerions les alphabets ABCDE dans un modèle. En commençant par A, les lignes suivantes introduiraient un nouvel alphabet pris en sandwich entre les alphabets précédents.

La seule astuce dans ce modèle est d'obtenir les caractères de nos variables de contrôle. Pour ce faire, nous utilisons la valeur ASCII des caractères. La valeur ASCII de A à Z est de 65 à 90 . Ainsi, nous calculons la valeur ASCII à chaque itération et imprimons le caractère correspondant. La fonction chr () en PHP est utilisée pour imprimer un caractère à partir du code ASCII.

Code

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

Production:

Imprimez pour les alphabets complets et le motif est plutôt cool.

9. Le sablier binaire - Modèle bonus.

Ce modèle est un modèle dynamique qui imprime le sablier par rapport au temps écoulé, mais pas un calcul réel. Par exemple, si une heure s'est écoulée, il imprimera une ligne de 0 dans la moitié supérieure et une ligne de 1 dans la moitié inférieure.

Code

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

Sortie: 1 heure s'est écoulée.

Sortie: 2 heures se sont écoulées.

Sortie: 3 heures se sont écoulées.

Etc.

Conclusion

Il y a beaucoup à jouer avec les motifs. Il s'agit de garder à l'esprit la logique du code. Une fois que vous comprenez parfaitement la logique du code, vous ne pouvez plus imprimer de modèle.

Articles recommandés

Cela a été un guide pour les modèles en PHP. Ici, nous avons discuté des aperçus et des exemples de modèle en PHP avec des codes et une sortie. Vous pouvez également parcourir nos articles pour en savoir plus-

  1. Qu'est-ce que PHP?
  2. Variables en PHP
  3. Constructeur en PHP
  4. Introduction à PHP
  5. Présentation des modèles en JavaScript
  6. Exemples de fonction récursive PHP
  7. Modèles de nombres en Java | Exemples avec implémentation de code