FestivAlgo/exemples.php

156 lines
5.9 KiB
PHP

<?php
$page_title = 'Exemples d\'algorithmes';
require_once('includes/header.php');
$db_examples = [
[
'titre' => 'Algorithme d\'Euclide',
'auteur' => 'Nitrosax',
'description' => '<p>Calcule le Plus Grand Commun Diviseur entre deux nombres entiers.</p>',
'programme' => '<div>Lire A</div>
<div>Lire B</div>
<div>Tant_que B ≠ 0</div>
<div>R Prend_la_valeur B * Partie_d&eacute;cimale(A/B)</div>
<div>A Prend_la_valeur B</div>
<div>B prend_la_valeur R</div>
<div>Fin_Tant_que</div>
<div>Afficher "PGCD :"</div>
<div>Afficher A</div>'
],
[
'titre' => 'Plus ou moins',
'auteur' => 'Paul',
'description' => '<p>Petit jeu où il faut deviner un nombre.</p>',
'programme' => '<div>Afficher "Nombre maximal ?"</div>
<div>Lire A</div>
<div>A Prend_la_valeur Partie_entière (Hasard (a))</div>
<div>B Prend_la_valeur -1</div>
<div>Tant_que B ≠ A</div>
<div>Lire B</div>
<div>Si B = A</div>
<div>Alors Afficher "Well done"</div>
<div>Sinon Si B ≤ A</div>
<div>Alors Afficher " +"</div>
<div>Sinon Afficher "-"</div>
<div>Fin_si</div>
<div>Fin_si</div>
<div>Fin_Tant_que</div>',
],
[
'titre' => 'Suite de Syracuse',
'auteur' => 'Nitrosax',
'description' => '<p>Affiche les termes de la suite de Syracuse en fonction du nombre de départ choisi par l\'utilisateur.</p>',
'programme' => '<div>Lire A</div>
<div>Tant_que A &gt; 1</div>
<div>Si Partie_d&eacute;cimale (A/2) = 0</div>
<div>Alors A Prend_la_valeur A/2</div>
<div>Sinon A Prend_la_valeur 3*A+1</div>
<div>Fin_si</div>
<div>Afficher A</div>
<div>Fin_Tant_que</div>
<div>Afficher A</div>',
],
[
'titre' => 'Suite de Fibonacci',
'auteur' => 'Dark-Storm',
'description' => '<p>Cet algorithme calcule les N premiers termes de la suite de Fibonacci. N est rentré par l\'utilisateur.
La suite de Fibonacci sert à déterminer une approximation du nombre d\'Or en divisant un terme par le terme précédent.</p>',
'programme' => '<div>A Prend_la_valeur 0</div>
<div>B Prend_la_valeur 1</div>
<div>C Prend_la_valeur 0</div>
<div>Lire N</div>
<div>Pour D Allant_de 1 à N</div>
<div>C Prend_la_valeur A+B</div>
<div>A Prend_la_valeur B</div>
<div>B Prend_la_valeur C</div>
<div>Afficher C</div>
<div>Fin_Pour</div>',
],
[
'titre' => 'Suite géométrique',
'auteur' => 'domPayeur',
'description' => '<p>Une toute petite contribution pour essayer Festiv\'Algo.</p>
<p>Le programme génère les termes u_1, u_2 ... u_n d\'une suite géométrique avec un rappel de cours.</p>',
'programme' => '<div>Afficher " Programme suite géométrique"</div>
<div>Afficher " Un+1=q* Un"</div>
<div>Afficher " Un=Uo*q^n"</div>
<div>Afficher " ce programme calcule Un quand Uo et q sont connus "</div>
<div>Afficher "Saisir N"</div>
<div>Lire N</div>
<div>Afficher "Saisir Uo"</div>
<div>Lire U</div>
<div>Afficher "Saisir Q"</div>
<div>Lire Q</div>
<div>Pour I Allant_de 1 à n</div>
<div>U Prend_la_valeur u*q</div>
<div>Afficher "U="</div>
<div>Afficher U</div>
<div>Fin_Pour</div>',
], [
'titre' => 'Méthode de Monte Carlo ',
'auteur' => 'domPayeur',
'description' => '
<p>Le hasard et la loi des grands nombres (ou stabilisation de la fréquence) pour déterminer une valeur approchée de PI.</p>
<p><strong>Le principe:</strong></p>
<ul>
<li>Un point est généré de manière aléatoire dans un carré de côté 1.</li>
<li>On calcule la distance séparant ce point de l\'un des sommets du carré.</li>
<li>Si cette distance est inférieure à 1, le point est alors à l\'intérieur du quart de disque de rayon 1 ayant pour centre ce sommet.</li>
<li>L\'aire du quart de disque est Pi/4 et la fréquence d\'apparition du point dans ce quart de disque se stabilise pour un grand nombre de lancers autour de la valeur théorique qui est la probabilité de cet événement: ici le rapport aire du quart de disque / aire du carré soit ( Pi/4)/1 donc Pi/4; il ne reste plus qu\'à multiplier par 4 pour obtenir une valeur approchée de Pi.</li>
</ul>',
'programme' => '<div>Afficher "Méthode de Monte-Carlo"</div>
<div>Afficher "Valeur approchée de pi"</div>
<div>Afficher "Grâce au rand !"</div>
<div>D Prend_la_valeur 0</div>
<div>Pour I Allant_de 1 à 10000</div>
<div>X Prend_la_valeur Hasard (1)</div>
<div>Y Prend_la_valeur Hasard (1)</div>
<div>L Prend_la_valeur X*X+Y*Y</div>
<div>Si (L < 1)</div>
<div>Alors D Prend_la_valeur D+1</div>
<div>Fin_si</div>
<div>V Prend_la_valeur 4*D/I</div>
<div>Afficher V</div>
<div>Fin_Pour</div>
<div>Fin_programme</div>',
],
[
'titre' => 'R.O.C. du Bac S',
'auteur' => 'Nitrosax',
'description' => '<p>Une restitution organisée de connaissance que les candidats du Bac S doivent connaître par coeur. Elle permet de montrer que pour tout nombre A rentré par l\'utilisateur, il existe un rang N tel que Un > A. L\'exemple utilise la suite : Un = 3^N.</p>',
'programme' => '<div>Lire A</div>
<div>N Prend_la_valeur 0</div>
<div>Tant_que 3^n ≤ A</div>
<div>N Prend_la_valeur N+1</div>
<div>Fin_Tant_que</div>
<div>Afficher N</div>'
]
];
?>
<?php
foreach ($db_examples as $key => $dnn)
{
?>
<article class="text_block example">
<h2 class="titre"><?php echo htmlentities($dnn['titre'], ENT_QUOTES, 'UTF-8'); ?></h2>
<h3>Auteur :</h3>
<p>
<?php echo $dnn['auteur']; ?>
</p>
<h3>Description :</h3>
<?php echo $dnn['description']; ?>
<div class="try_it">
<button><img src="assets/img/examples/tester.png" /></button>
<textarea style="display:none;" name="programme"><?= $dnn['programme'] ?></textarea>
</div>
</article>
<?php
}
?>
<?php
require_once('includes/footer.php');
?>