TP 03: LES STRUCTURES REPETITIVES
Objectifs
• Savoir répéter des instructions
• Utiliser la fonction « substr »
Exercices
Exercice 1 : for
En utilisant la syntaxe « for », afficher les 100 premiers nombres entiers avec un saut de ligne entre chaque nombre.
Exercice 2 : while
En utilisant la syntaxe « while », afficher les 10000 premiers nombres entiers.
Exercice 3 : Bonjour
Afficher 150 fois le mot « Bonjour » !
Exercice 4 : Bonne nuit
a) Écrivez un programme qui demande à l'utilisateur un entier n (le nombre de moutons qu'il doit compter pour s'endormir) et pour chaque entier i entre 1 et n, affiche le message « Et i moutons ! ».
A la fin, il doit afficher le message « Bonne nuit... ».
b) Faites en sorte que la première phrase soit « Et 1 mouton ! » (sans le s à la fin de mouton).
c) Affichez un message d'erreur si on entre un entier négatif et recommencez la saisie
Exercice 5 : Moyenne de notes
a) En utilisant la syntaxe « while », faire saisir des notes à l’utilisateur…
La fin de la saisie se fera en saisissant une note négative.
b) Améliorez votre programme pour signaler à l’utilisateur une erreur de saisie s’il la note n’est pas comprise entre 0 et 20.
Exercice 6 : Moyenne, Min et Max
A l’aide d’une structure répétitive, permettre la saisie de notes et afficher la moyenne, la note la plus petite et le note la plus grande
Exercice 7 : Comptage
Ecrivez un programme qui demande à l'utilisateur d’entrer un chiffre. Cette action devra être répétée tant que l’utilisateur répondra « oui » à la question voulez-vous recommencer ?
Le programme devra indiquer :
• le nombre de valeurs saisies
• le nombre valeurs paires
• le nombre valeurs impaires
• Le nombre d’erreurs de saisie
Exercice 8: Nombre magique
L’ordinateur va générer un nombre aléatoire compris entre 0 et 1000. Vous avez 7 tentatives pour le découvrir. A chaque tentative, l’ordinateur vous indique « Trop petit » ou « Trop grand »…
Pour générer un nombre aléatoire entre 0 et 100, vous utiliserez la fonction rand(). Consultez la
documentation de cette fonction si nécessaire.
Exercice 9 : Voyelles et consonnes
Saisir une phrase dans un formulaire et écrire un programme PHP qui compte le nombre de consonnes et le nombre de voyelles de cette phrase.
Pour extraire un caractère d’une chaîne, on utilisera la fonction « substr » (Cf ; documentation php).
Si on souhaite connaître la longueur d’une chaîne, on utilisera la fonction « strlen » (Cf ; documentation php).
Exercice 10: factorielle
Calculer une factorielle est le processus qui consiste à multiplier un nombre entier par tous les nombres entiers positifs inférieurs à celui-ci.
Exemples :
factorielle de 2 (noté 2 !) = 1*2 = 2 factorielle de 3 (noté 3 !) = 1*2*3 = 6
factorielle de 7 (noté 7 !) = 1*2*3*4*5*6*7 = 5040
a) Ecrire un programme qui permet de saisir un nombre et d’afficher la factorielle de ce nombre.
b) Si vous n’êtes pas en retard, améliorez votre programme pour afficher toutes les factorielles des nombres inférieurs au nombre saisi.
Exercice 11 : Pyramide
a) Ecrire un programme qui affiche un triangle d’étoiles en fonction d’une hauteur donnée.
b) Ecrire un programme qui affiche une ligne oblique en fonction d’une hauteur donnée.
c) Ecrire un programme qui affiche une pyramide en fonction d’une hauteur donnée.
*
**
***
****
*****
******
*******
* * * * * *
*
* ***
*****
*******
*********
***********
*************
Exercice 12: Enigme
Nous allons essayer de faire résoudre cette énigme par l’ordinateur en utilisant sa capacité à calculer rapidement !
La méthode consiste à lui faire essayer toutes les possibilités et pour chacune d’elle, calculer le résultat.
1) Dans un premier temps, ne tenez pas compte de la contrainte de n’avoir que des chiffres différents. Vous devriez alors trouver beaucoup de bons résultats (Cf.exemple ci-dessous)
Que constatez vous au niveau du temps de traitement ?
2) Ajoutez les tests afin de s’assurer de ne pas faire le calcul lorsque 2 nombres sont identiques.
Comptez le nombre de solutions trouvées !
CORRECTION DU TP 03 while.php
enTeteTP3.inc.html
piedTP3.inc.php
<?php
include("enteteTP3.inc.html");
echo "\n";
echo '<table border="1">';
echo "\n";
$i=1;
while ($i<=100){
echo "<tr><td>$i</td></tr>\n";
$i++;
}
echo "</table>\n";
include("piedTP3.inc.php");
?>
<p><a href="http://www.univ-mlv.fr">
<img src="logoUMLV.jpg" alt="logo de l'université" border="0"/>
</a>
</p>
<h2 align="center">CMW: TP n° 3</h2>
<?php
echo "<hr/>\n".'<div style="float:right;">';
echo date("d/m/y");
echo "</div>";
echo "Philippe Chochois";
?>
Exercice 6: Nombre magique
factorielle.php
<?PHP
include("read.php");
$nbATrouver=rand(0,1000);
echo "\n\nJeu du nombre magique";
echo "\n*********************\n\n";
$trouve=false;
$coupRestants=7;
while(!$trouve && $coupRestants !=0){
echo "il vous reste $coupRestants tentatives.\n";
echo 'Saisissez un nombre:';
$nbSaisi=read();
$coupRestants--;
if ($nbSaisi == $nbATrouver)
$trouve=true;
else{
if ($nbSaisi > $nbATrouver) echo "\nTrop grand !";
else
echo "\nTrop petit !";
} }
if ($trouve)
echo "\n\nBravo, vous avez trouve apres ".(7-$coupsRestants)." tentatives
!";
else
echo "\n\nVous avez perdu. Le nombre magique etait ".$nbATrouver;
?>
<?php
include("enteteTP3.inc.html");
echo "\n";
$n=$_GET['nombre'];
for($j=1;$j<=$n;$j++){
$resultat=1;
for($i=1;$i<=$j;$i++){
$resultat=$resultat*$i;
}
echo "<p>Factorielle de $j = $resultat</p>\n";
}
include("piedTP3.inc.php");
?>
voyellesConsonnes.php
<?php
include("enteteTP3.inc.html");
echo "\n";
$phrase=$_GET['texte'];
for($i=0;$i<strlen($phrase);$i++){
$lettre=substr($phrase,$i,1);
if ($lettre=='a' ||$lettre=='e' ||$lettre=='i'
||$lettre=='o'||$lettre=='u' ||$lettre=='y' ||$lettre=='A' ||$lettre=='O'
||$lettre=='E' ||$lettre=='U' ||$lettre=='I' ||$lettre=='Y')
$voyelles++;
elseif (($lettre<='z' && $lettre>='a')||
($lettre<='Z' && $lettre>='A')){
$consonnes++;
} }
echo "<p>Dans ce texte \"$phrase\", il y a:</p>\n";
echo "<p>\n\tNombre de caractères:".strlen($phrase);
echo "<br/>\n\tNombre de voyelles:$voyelles<br/>\n";
echo "\tNombre de consonnes:$consonnes\n</p>\n";
include("piedTP3.inc.php");
?>
pyramide.php
<?PHP
include('read.php');
$date= date("d-m-Y");
$heure = date("H:i");
$nbSolutions=0;
echo "Nous sommes le $date et il est $heure\n";
echo "\nResolution de l'enigme\n";
for($nb1=1; $nb1<=9;$nb1++)
for($nb2=1; $nb2<=9;$nb2++) if ($nb1!=$nb2)
for($nb3=1; $nb3<=9;$nb3++) if ($nb1!=$nb3 && $nb2!=$nb3)
for($nb4=1; $nb4<=9;$nb4++) if ($nb1!=$nb4 && $nb2!=$nb4 && $nb3!=$nb4)
for($nb5=1; $nb5<=9;$nb5++) if ($nb1!=$nb5 && $nb2!=$nb5 && $nb3!=$nb5 && $nb4!=$nb5)
for($nb6=1; $nb6<=9;$nb6++) if ($nb1!=$nb6 && $nb2!=$nb6 && $nb3!=$nb6 && $nb4!=$nb6 && $nb5!=$nb6) for($nb7=1; $nb7<=9;$nb7++) if ($nb1!=$nb7 && $nb2!=$nb7 && $nb3!=$nb7 && $nb4!=$nb7 && $nb5!=$nb7
&& $nb6!=$nb7)
for($nb8=1; $nb8<=9;$nb8++) if ($nb1!=$nb8 && $nb2!=$nb8 && $nb3!=$nb8 && $nb4!=$nb8 && $nb5!=$nb8
&& $nb6!=$nb8 && $nb7!=$nb8) for($nb9=1; $nb9<=9;$nb9++){
if ($nb1!=$nb9 && $nb2!=$nb9 && $nb3!=$nb9 && $nb4!=$nb9 && $nb5!=$nb9 && $nb6!=$nb9 &&
$nb7!=$nb9 && $nb8!=$nb9){
$resultat=$nb1+13*$nb2/$nb3+$nb4+12*$nb5-$nb6-11+$nb7*$nb8/$nb9-10;
if ($resultat==66){
$nbSolutions++;
echo "\nBravo, vous avez gagne !\n";
echo "Les chiffres a trouver sont $nb1 - $nb2 - $nb3 - $nb4 - $nb5 - $nb6 -
$nb7 - $nb8 - $nb9";
} }
}
echo "\n\nLe nombre de solutions que l'ordinateur a trouve est $nbSolutions !\n\n\n";
?>
<?php
include("enteteTP3.inc.html");
echo "\n";
$hauteur=$_GET['hauteur'];
echo '<p style="font-family:Courier New;">';
for($i=1;$i<=$hauteur;$i++){
for($k=($hauteur-$i);$k>=0;$k--){
echo ' ';
}
for($j=1;$j<=(2*$i-1);$j++){
echo '*';
}
echo "<br/>\n";
}
echo "</p>";
include("piedTP3.inc.php");
?>