Maison  >  Article  >  développement back-end  >  Modèles en PHP

Modèles en PHP

王林
王林original
2024-08-29 13:11:271277parcourir

Qu'est-ce que la programmation de modèles en PHP ? C'est un art de la programmation que 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 de motif est la série de Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, 34, etc.). Ensuite, il y a d'autres motifs qui sont des dessins à l'écran, par exemple une pyramide d'étoiles. Donc, fondamentalement, la programmation de motifs consiste simplement à imprimer un motif sur l'écran.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Pour cet article, nous utiliserions PHP pour coder les modèles. Ne vous inquiétez pas cependant. 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 modèle en PHP

  • Avant de passer directement aux programmes, comprenons la logique de base des modèles de codage. Les modèles sont toujours programmés via des boucles imbriquées – principalement des boucles for imbriquées. 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 s'étendant sur cinq lignes, la boucle extérieure sera toujours exécutée cinq fois.
  • La boucle interne est toujours concernée par le nombre d'éléments dans chaque ligne. Donc, disons que si vous devez imprimer 1 étoile dans la première ligne, 2 étoiles dans la deuxième ligne et ainsi de suite, la boucle interne contrôlerait cette logique.
  • Selon le motif, il y a parfois plus d'une boucle intérieure ou trois niveaux de boucles imbriquées. De plus, il y a l'implication d'espaces et de tabulations pour produire le motif souhaité.

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

1. Demi-Pyramide Étoile

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

Modèles en PHP

Codons ce modèle pour cinq lignes. En gardant la logique à l’esprit, notre boucle externe s’exécutera 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 –> <em>j </em>=<em> 0</em>
Print star
Outer loop iteration 2  –> i<em> = 1</em>
Inner loop iteration 1 –> <em>j</em><em> =</em><em> 0</em>
Print Star
Inner loop iteration 2 -> <em>j</em> =<em> 1
</em>Print Star
Outer loop iteration 3  –> <em>i</em> =<em> 2
</em>Inner loop iteration 1 –> <em>j =</em> 0
Print Star
Inner loop iteration 2 -> <em>j = 1
</em>Print Star
Inner loop iteration 3 -> <em>j = 2
</em>Print Star

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

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

Sortie :

Modèles en PHP

2. Demi-Pyramide Étoile – Miroir

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

Modèles en PHP

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

Remarque : Gardez une chose à l'esprit : le nombre d'espaces dans la boucle K est le double de l'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 utiliserons cela comme notre levier 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);
?>

Sortie :

Modèles en PHP

3. Demi-Pyramide Étoile – Inversée

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

Modèles en PHP

En 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 modifié, c'est la façon dont nous démarrons les boucles, par ordre croissant ou décroissant. Cela signifie que nous pouvons soit boucler de 0 à 5, soit boucler par ordre décroissant de 5 à 0. Ainsi, pour les modèles inversés comme celui-ci, nous savons que le nombre d'étoiles est plus élevé dans la première ligne. Nous choisissons donc de diminuer les boucles de commandes.

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

Sortie :

Modèles en PHP

4. Star Half Pyramid– Inverted Mirrored

This pattern is an indented inverted half pyramid. The number of stars decreases with each line and stars are right-aligned.

Modèles en PHP

I believe by now you would be able to guess the logic for this one.

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

Output:

Modèles en PHP

5. Star Full Pyramid

This pattern prints the full pyramid. Or in other words, it prints a triangle of stars on the screen.

Modèles en PHP

This pattern is essentially a combination of Half pyramid and its mirror. Although there is a slight twist when we code it. Revisit the Note in Mirrored Half Pyramid. Remember, how we used double spacing to give a finished look to our pattern? Here we would use single spacing so that the stars are alternately aligned in odd and even number of rows, giving us a true triangular pattern.

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

Output:

Modèles en PHP

6. Star Diamond

This pattern prints a complete diamond shape on the screen. The number of stars increases until the maximum defined and then decrease back to 1, giving us a full diamond shape.

Modèles en PHP

To print this pattern, we would need to divide the pattern into two halves. The upper half – which prints the increasing number of stars. The lower half– which prints the decreasing number of stars. To print both the halves, we would use two outer loops and corresponding inner loops.

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

Output:

Modèles en PHP

7. Number Pattern

For this number pattern, we will print the numbers in relation to the row number. Thus, digit 1 would be printed once, 2 twice, 3 thrice and so on.

Modèles en PHP

If you would have followed this tutorial line by line, by now you must have understood very well the working of nested loops to print patterns. This pattern also follows the same logic. Instead of stars, we print numbers. Now you ask how do we get the numbers? The answer is- simply through our control variables i and 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);
?>

Output:

Modèles en PHP

8. Character Pattern

In this pattern, we would print the alphabets ABCDE in a pattern. Starting with A, the subsequent rows would introduce a new alphabet sandwiched between the previous alphabets.

Modèles en PHP

The only trick in this pattern is to get the characters from our control variables. We do this by leveraging the ASCII value of the characters. The ASCII value of A to Z is 65 to 90. So, we calculate the ASCII value in each iteration and print the corresponding character. The chr() function in PHP is used to print a character from the ASCII code.

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

Output:

Modèles en PHP

Print for full alphabets and the pattern looks pretty cool.

Modèles en PHP

9. The Binary Hourglass– Bonus Pattern

This pattern is a dynamic pattern that prints the hourglass relative to the time elapsed, not an actual calculation though. For e.g., if one hour has elapsed, it will print one line of 0s in the upper half and one line of 1s in the lower half.

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

Output: 1 hour has elapsed.

Modèles en PHP

Output: 2 hours have elapsed.

Modèles en PHP

Output: 3 hours have elapsed.

Modèles en PHP

And so on.

Conclusion

There is a lot to play with patterns. It’s all about keeping the code logic in mind. Once you get the code logic completely understood, there is no pattern you can’t print.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Horodatage à ce jour en PHPArticle suivant:Horodatage à ce jour en PHP